@wordpress/block-editor 9.5.0 → 9.7.1-next.d6164808d3.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 (548) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/block-alignment-control/use-available-alignments.js +1 -1
  3. package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
  4. package/build/components/block-edit-visually-button/index.js +46 -0
  5. package/build/components/block-edit-visually-button/index.js.map +1 -0
  6. package/build/components/block-list/block.js +12 -2
  7. package/build/components/block-list/block.js.map +1 -1
  8. package/build/components/block-list/index.native.js +1 -1
  9. package/build/components/block-list/index.native.js.map +1 -1
  10. package/build/components/block-lock/modal.js +2 -2
  11. package/build/components/block-lock/modal.js.map +1 -1
  12. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +1 -1
  13. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  14. package/build/components/block-mover/mover-description.js +95 -32
  15. package/build/components/block-mover/mover-description.js.map +1 -1
  16. package/build/components/block-popover/inbetween.js +5 -3
  17. package/build/components/block-popover/inbetween.js.map +1 -1
  18. package/build/components/block-settings-menu/index.js +2 -6
  19. package/build/components/block-settings-menu/index.js.map +1 -1
  20. package/build/components/block-settings-menu-controls/index.js +1 -1
  21. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  22. package/build/components/block-styles/index.js +3 -6
  23. package/build/components/block-styles/index.js.map +1 -1
  24. package/build/components/block-styles/preview.native.js +1 -3
  25. package/build/components/block-styles/preview.native.js.map +1 -1
  26. package/build/components/block-switcher/index.js +10 -16
  27. package/build/components/block-switcher/index.js.map +1 -1
  28. package/build/components/block-toolbar/index.js +5 -1
  29. package/build/components/block-toolbar/index.js.map +1 -1
  30. package/build/components/block-tools/block-selection-button.js +1 -7
  31. package/build/components/block-tools/block-selection-button.js.map +1 -1
  32. package/build/components/block-tools/index.js +4 -1
  33. package/build/components/block-tools/index.js.map +1 -1
  34. package/build/components/block-types-list/index.js +1 -1
  35. package/build/components/block-types-list/index.js.map +1 -1
  36. package/build/components/block-types-list/index.native.js +65 -23
  37. package/build/components/block-types-list/index.native.js.map +1 -1
  38. package/build/components/border-radius-control/all-input-control.js +31 -3
  39. package/build/components/border-radius-control/all-input-control.js.map +1 -1
  40. package/build/components/border-radius-control/index.js +23 -7
  41. package/build/components/border-radius-control/index.js.map +1 -1
  42. package/build/components/border-radius-control/input-controls.js +21 -6
  43. package/build/components/border-radius-control/input-controls.js.map +1 -1
  44. package/build/components/border-radius-control/utils.js +13 -16
  45. package/build/components/border-radius-control/utils.js.map +1 -1
  46. package/build/components/colors/utils.js +6 -2
  47. package/build/components/colors/utils.js.map +1 -1
  48. package/build/components/colors/with-colors.js +17 -4
  49. package/build/components/colors/with-colors.js.map +1 -1
  50. package/build/components/colors-gradients/control.js +8 -4
  51. package/build/components/colors-gradients/control.js.map +1 -1
  52. package/build/components/colors-gradients/dropdown.js +9 -3
  53. package/build/components/colors-gradients/dropdown.js.map +1 -1
  54. package/build/components/copy-handler/index.js +6 -0
  55. package/build/components/copy-handler/index.js.map +1 -1
  56. package/build/components/date-format-picker/index.js +2 -7
  57. package/build/components/date-format-picker/index.js.map +1 -1
  58. package/build/components/duotone/components.js +5 -5
  59. package/build/components/duotone/components.js.map +1 -1
  60. package/build/components/font-appearance-control/index.js +10 -4
  61. package/build/components/font-appearance-control/index.js.map +1 -1
  62. package/build/components/font-family/index.js +1 -1
  63. package/build/components/font-family/index.js.map +1 -1
  64. package/build/components/font-sizes/with-font-sizes.js +17 -4
  65. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  66. package/build/components/image-editor/cropper.js +4 -3
  67. package/build/components/image-editor/cropper.js.map +1 -1
  68. package/build/components/image-editor/index.js +3 -1
  69. package/build/components/image-editor/index.js.map +1 -1
  70. package/build/components/image-size-control/index.js +3 -1
  71. package/build/components/image-size-control/index.js.map +1 -1
  72. package/build/components/index.js +22 -6
  73. package/build/components/index.js.map +1 -1
  74. package/build/components/index.native.js +11 -4
  75. package/build/components/index.native.js.map +1 -1
  76. package/build/components/inserter/block-types-tab.native.js +30 -16
  77. package/build/components/inserter/block-types-tab.native.js.map +1 -1
  78. package/build/components/inserter/index.native.js +8 -3
  79. package/build/components/inserter/index.native.js.map +1 -1
  80. package/build/components/inserter/preview-panel.js +8 -8
  81. package/build/components/inserter/preview-panel.js.map +1 -1
  82. package/build/components/inserter/reusable-blocks-tab.native.js +5 -1
  83. package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  84. package/build/components/inserter/search-items.js +22 -4
  85. package/build/components/inserter/search-items.js.map +1 -1
  86. package/build/components/inserter/search-results.native.js +5 -2
  87. package/build/components/inserter/search-results.native.js.map +1 -1
  88. package/build/components/inserter/utils.native.js +21 -0
  89. package/build/components/inserter/utils.native.js.map +1 -1
  90. package/build/components/inserter-list-item/index.js +7 -20
  91. package/build/components/inserter-list-item/index.js.map +1 -1
  92. package/build/components/letter-spacing-control/index.js +6 -3
  93. package/build/components/letter-spacing-control/index.js.map +1 -1
  94. package/build/components/line-height-control/index.js +6 -3
  95. package/build/components/line-height-control/index.js.map +1 -1
  96. package/build/components/link-control/is-url-like.js +1 -7
  97. package/build/components/link-control/is-url-like.js.map +1 -1
  98. package/build/components/link-control/link-preview.js +0 -1
  99. package/build/components/link-control/link-preview.js.map +1 -1
  100. package/build/components/link-control/use-search-handler.js +1 -7
  101. package/build/components/link-control/use-search-handler.js.map +1 -1
  102. package/build/components/list-view/block-select-button.js +5 -2
  103. package/build/components/list-view/block-select-button.js.map +1 -1
  104. package/build/components/list-view/branch.js +1 -7
  105. package/build/components/list-view/branch.js.map +1 -1
  106. package/build/components/list-view/expander.js +3 -1
  107. package/build/components/list-view/expander.js.map +1 -1
  108. package/build/components/list-view/use-block-selection.js +1 -7
  109. package/build/components/list-view/use-block-selection.js.map +1 -1
  110. package/build/components/media-upload/index.native.js +8 -3
  111. package/build/components/media-upload/index.native.js.map +1 -1
  112. package/build/components/observe-typing/index.js +22 -8
  113. package/build/components/observe-typing/index.js.map +1 -1
  114. package/build/components/preview-options/index.js +2 -2
  115. package/build/components/preview-options/index.js.map +1 -1
  116. package/build/components/{use-no-recursive-renders → recursion-provider}/index.js +40 -18
  117. package/build/components/recursion-provider/index.js.map +1 -0
  118. package/build/components/rich-text/format-toolbar-container.js +61 -12
  119. package/build/components/rich-text/format-toolbar-container.js.map +1 -1
  120. package/build/components/rich-text/index.js +8 -2
  121. package/build/components/rich-text/index.js.map +1 -1
  122. package/build/components/rich-text/index.native.js +3 -1
  123. package/build/components/rich-text/index.native.js.map +1 -1
  124. package/build/components/rich-text/use-before-input-rules.js +110 -0
  125. package/build/components/rich-text/use-before-input-rules.js.map +1 -0
  126. package/build/components/rich-text/use-enter.js +0 -4
  127. package/build/components/rich-text/use-enter.js.map +1 -1
  128. package/build/components/rich-text/use-format-types.js +39 -22
  129. package/build/components/rich-text/use-format-types.js.map +1 -1
  130. package/build/components/spacing-sizes-control/all-input-control.js +53 -0
  131. package/build/components/spacing-sizes-control/all-input-control.js.map +1 -0
  132. package/build/components/spacing-sizes-control/axial-input-controls.js +69 -0
  133. package/build/components/spacing-sizes-control/axial-input-controls.js.map +1 -0
  134. package/build/components/spacing-sizes-control/index.js +100 -0
  135. package/build/components/spacing-sizes-control/index.js.map +1 -0
  136. package/build/components/spacing-sizes-control/input-controls.js +52 -0
  137. package/build/components/spacing-sizes-control/input-controls.js.map +1 -0
  138. package/build/components/spacing-sizes-control/linked-button.js +38 -0
  139. package/build/components/spacing-sizes-control/linked-button.js.map +1 -0
  140. package/build/components/spacing-sizes-control/spacing-input-control.js +208 -0
  141. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -0
  142. package/build/components/spacing-sizes-control/utils.js +202 -0
  143. package/build/components/spacing-sizes-control/utils.js.map +1 -0
  144. package/build/components/text-decoration-control/index.js +3 -1
  145. package/build/components/text-decoration-control/index.js.map +1 -1
  146. package/build/components/text-transform-control/index.js +3 -1
  147. package/build/components/text-transform-control/index.js.map +1 -1
  148. package/build/components/url-input/index.js +1 -1
  149. package/build/components/url-input/index.js.map +1 -1
  150. package/build/components/url-popover/image-url-input-ui.js +4 -1
  151. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  152. package/build/components/writing-flow/use-arrow-nav.js +4 -25
  153. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  154. package/build/components/writing-flow/use-drag-selection.js +9 -2
  155. package/build/components/writing-flow/use-drag-selection.js.map +1 -1
  156. package/build/components/writing-flow/use-multi-selection.js +4 -2
  157. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  158. package/build/components/writing-flow/use-select-all.js +3 -1
  159. package/build/components/writing-flow/use-select-all.js.map +1 -1
  160. package/build/components/writing-flow/use-selection-observer.js +10 -2
  161. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  162. package/build/components/writing-flow/use-tab-nav.js +1 -1
  163. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  164. package/build/hooks/border-radius.js +2 -7
  165. package/build/hooks/border-radius.js.map +1 -1
  166. package/build/hooks/border.js +2 -2
  167. package/build/hooks/border.js.map +1 -1
  168. package/build/hooks/color.js +4 -1
  169. package/build/hooks/color.js.map +1 -1
  170. package/build/hooks/dimensions.js +15 -0
  171. package/build/hooks/dimensions.js.map +1 -1
  172. package/build/hooks/duotone.js +4 -4
  173. package/build/hooks/duotone.js.map +1 -1
  174. package/build/hooks/gap.js +6 -4
  175. package/build/hooks/gap.js.map +1 -1
  176. package/build/hooks/generated-class-name.js +1 -7
  177. package/build/hooks/generated-class-name.js.map +1 -1
  178. package/build/hooks/layout.js +42 -15
  179. package/build/hooks/layout.js.map +1 -1
  180. package/build/hooks/margin.js +28 -12
  181. package/build/hooks/margin.js.map +1 -1
  182. package/build/hooks/padding.js +19 -8
  183. package/build/hooks/padding.js.map +1 -1
  184. package/build/hooks/style.js +40 -76
  185. package/build/hooks/style.js.map +1 -1
  186. package/build/layouts/constrained.js +215 -0
  187. package/build/layouts/constrained.js.map +1 -0
  188. package/build/layouts/flex.js +1 -1
  189. package/build/layouts/flex.js.map +1 -1
  190. package/build/layouts/flow.js +6 -145
  191. package/build/layouts/flow.js.map +1 -1
  192. package/build/layouts/index.js +3 -1
  193. package/build/layouts/index.js.map +1 -1
  194. package/build/layouts/utils.js +43 -0
  195. package/build/layouts/utils.js.map +1 -1
  196. package/build/store/actions.js +25 -3
  197. package/build/store/actions.js.map +1 -1
  198. package/build/store/selectors.js +4 -6
  199. package/build/store/selectors.js.map +1 -1
  200. package/build/utils/block-variation-transforms.js +15 -9
  201. package/build/utils/block-variation-transforms.js.map +1 -1
  202. package/build/utils/pasting.js +9 -1
  203. package/build/utils/pasting.js.map +1 -1
  204. package/build-module/components/block-alignment-control/use-available-alignments.js +1 -1
  205. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  206. package/build-module/components/block-edit-visually-button/index.js +35 -0
  207. package/build-module/components/block-edit-visually-button/index.js.map +1 -0
  208. package/build-module/components/block-list/block.js +13 -3
  209. package/build-module/components/block-list/block.js.map +1 -1
  210. package/build-module/components/block-list/index.native.js +1 -1
  211. package/build-module/components/block-list/index.native.js.map +1 -1
  212. package/build-module/components/block-lock/modal.js +2 -2
  213. package/build-module/components/block-lock/modal.js.map +1 -1
  214. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +2 -2
  215. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  216. package/build-module/components/block-mover/mover-description.js +97 -33
  217. package/build-module/components/block-mover/mover-description.js.map +1 -1
  218. package/build-module/components/block-popover/inbetween.js +5 -3
  219. package/build-module/components/block-popover/inbetween.js.map +1 -1
  220. package/build-module/components/block-settings-menu/index.js +3 -6
  221. package/build-module/components/block-settings-menu/index.js.map +1 -1
  222. package/build-module/components/block-settings-menu-controls/index.js +2 -2
  223. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  224. package/build-module/components/block-styles/index.js +4 -7
  225. package/build-module/components/block-styles/index.js.map +1 -1
  226. package/build-module/components/block-styles/preview.native.js +2 -3
  227. package/build-module/components/block-styles/preview.native.js.map +1 -1
  228. package/build-module/components/block-switcher/index.js +10 -16
  229. package/build-module/components/block-switcher/index.js.map +1 -1
  230. package/build-module/components/block-toolbar/index.js +4 -1
  231. package/build-module/components/block-toolbar/index.js.map +1 -1
  232. package/build-module/components/block-tools/block-selection-button.js +1 -7
  233. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  234. package/build-module/components/block-tools/index.js +4 -1
  235. package/build-module/components/block-tools/index.js.map +1 -1
  236. package/build-module/components/block-types-list/index.js +1 -1
  237. package/build-module/components/block-types-list/index.js.map +1 -1
  238. package/build-module/components/block-types-list/index.native.js +67 -25
  239. package/build-module/components/block-types-list/index.native.js.map +1 -1
  240. package/build-module/components/border-radius-control/all-input-control.js +32 -4
  241. package/build-module/components/border-radius-control/all-input-control.js.map +1 -1
  242. package/build-module/components/border-radius-control/index.js +24 -8
  243. package/build-module/components/border-radius-control/index.js.map +1 -1
  244. package/build-module/components/border-radius-control/input-controls.js +22 -7
  245. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  246. package/build-module/components/border-radius-control/utils.js +13 -16
  247. package/build-module/components/border-radius-control/utils.js.map +1 -1
  248. package/build-module/components/colors/utils.js +7 -3
  249. package/build-module/components/colors/utils.js.map +1 -1
  250. package/build-module/components/colors/with-colors.js +16 -3
  251. package/build-module/components/colors/with-colors.js.map +1 -1
  252. package/build-module/components/colors-gradients/control.js +8 -4
  253. package/build-module/components/colors-gradients/control.js.map +1 -1
  254. package/build-module/components/colors-gradients/dropdown.js +10 -4
  255. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  256. package/build-module/components/copy-handler/index.js +7 -1
  257. package/build-module/components/copy-handler/index.js.map +1 -1
  258. package/build-module/components/date-format-picker/index.js +2 -6
  259. package/build-module/components/date-format-picker/index.js.map +1 -1
  260. package/build-module/components/duotone/components.js +5 -5
  261. package/build-module/components/duotone/components.js.map +1 -1
  262. package/build-module/components/font-appearance-control/index.js +7 -4
  263. package/build-module/components/font-appearance-control/index.js.map +1 -1
  264. package/build-module/components/font-family/index.js +1 -1
  265. package/build-module/components/font-family/index.js.map +1 -1
  266. package/build-module/components/font-sizes/with-font-sizes.js +16 -3
  267. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  268. package/build-module/components/image-editor/cropper.js +4 -3
  269. package/build-module/components/image-editor/cropper.js.map +1 -1
  270. package/build-module/components/image-editor/index.js +3 -1
  271. package/build-module/components/image-editor/index.js.map +1 -1
  272. package/build-module/components/image-size-control/index.js +3 -1
  273. package/build-module/components/image-size-control/index.js.map +1 -1
  274. package/build-module/components/index.js +2 -1
  275. package/build-module/components/index.js.map +1 -1
  276. package/build-module/components/index.native.js +1 -1
  277. package/build-module/components/index.native.js.map +1 -1
  278. package/build-module/components/inserter/block-types-tab.native.js +31 -15
  279. package/build-module/components/inserter/block-types-tab.native.js.map +1 -1
  280. package/build-module/components/inserter/index.native.js +9 -2
  281. package/build-module/components/inserter/index.native.js.map +1 -1
  282. package/build-module/components/inserter/preview-panel.js +9 -9
  283. package/build-module/components/inserter/preview-panel.js.map +1 -1
  284. package/build-module/components/inserter/reusable-blocks-tab.native.js +6 -2
  285. package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  286. package/build-module/components/inserter/search-items.js +19 -5
  287. package/build-module/components/inserter/search-items.js.map +1 -1
  288. package/build-module/components/inserter/search-results.native.js +6 -3
  289. package/build-module/components/inserter/search-results.native.js.map +1 -1
  290. package/build-module/components/inserter/utils.native.js +19 -0
  291. package/build-module/components/inserter/utils.native.js.map +1 -1
  292. package/build-module/components/inserter-list-item/index.js +5 -18
  293. package/build-module/components/inserter-list-item/index.js.map +1 -1
  294. package/build-module/components/letter-spacing-control/index.js +5 -3
  295. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  296. package/build-module/components/line-height-control/index.js +5 -3
  297. package/build-module/components/line-height-control/index.js.map +1 -1
  298. package/build-module/components/link-control/is-url-like.js +1 -6
  299. package/build-module/components/link-control/is-url-like.js.map +1 -1
  300. package/build-module/components/link-control/link-preview.js +0 -1
  301. package/build-module/components/link-control/link-preview.js.map +1 -1
  302. package/build-module/components/link-control/use-search-handler.js +1 -6
  303. package/build-module/components/link-control/use-search-handler.js.map +1 -1
  304. package/build-module/components/list-view/block-select-button.js +5 -2
  305. package/build-module/components/list-view/block-select-button.js.map +1 -1
  306. package/build-module/components/list-view/branch.js +1 -6
  307. package/build-module/components/list-view/branch.js.map +1 -1
  308. package/build-module/components/list-view/expander.js +3 -2
  309. package/build-module/components/list-view/expander.js.map +1 -1
  310. package/build-module/components/list-view/use-block-selection.js +1 -6
  311. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  312. package/build-module/components/media-upload/index.native.js +9 -2
  313. package/build-module/components/media-upload/index.native.js.map +1 -1
  314. package/build-module/components/observe-typing/index.js +22 -8
  315. package/build-module/components/observe-typing/index.js.map +1 -1
  316. package/build-module/components/preview-options/index.js +2 -2
  317. package/build-module/components/preview-options/index.js.map +1 -1
  318. package/build-module/components/{use-no-recursive-renders → recursion-provider}/index.js +39 -19
  319. package/build-module/components/recursion-provider/index.js.map +1 -0
  320. package/build-module/components/rich-text/format-toolbar-container.js +58 -12
  321. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  322. package/build-module/components/rich-text/index.js +7 -2
  323. package/build-module/components/rich-text/index.js.map +1 -1
  324. package/build-module/components/rich-text/index.native.js +3 -1
  325. package/build-module/components/rich-text/index.native.js.map +1 -1
  326. package/build-module/components/rich-text/use-before-input-rules.js +96 -0
  327. package/build-module/components/rich-text/use-before-input-rules.js.map +1 -0
  328. package/build-module/components/rich-text/use-enter.js +0 -4
  329. package/build-module/components/rich-text/use-enter.js.map +1 -1
  330. package/build-module/components/rich-text/use-format-types.js +39 -22
  331. package/build-module/components/rich-text/use-format-types.js.map +1 -1
  332. package/build-module/components/spacing-sizes-control/all-input-control.js +41 -0
  333. package/build-module/components/spacing-sizes-control/all-input-control.js.map +1 -0
  334. package/build-module/components/spacing-sizes-control/axial-input-controls.js +57 -0
  335. package/build-module/components/spacing-sizes-control/axial-input-controls.js.map +1 -0
  336. package/build-module/components/spacing-sizes-control/index.js +83 -0
  337. package/build-module/components/spacing-sizes-control/index.js.map +1 -0
  338. package/build-module/components/spacing-sizes-control/input-controls.js +41 -0
  339. package/build-module/components/spacing-sizes-control/input-controls.js.map +1 -0
  340. package/build-module/components/spacing-sizes-control/linked-button.js +28 -0
  341. package/build-module/components/spacing-sizes-control/linked-button.js.map +1 -0
  342. package/build-module/components/spacing-sizes-control/spacing-input-control.js +192 -0
  343. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -0
  344. package/build-module/components/spacing-sizes-control/utils.js +174 -0
  345. package/build-module/components/spacing-sizes-control/utils.js.map +1 -0
  346. package/build-module/components/text-decoration-control/index.js +4 -2
  347. package/build-module/components/text-decoration-control/index.js.map +1 -1
  348. package/build-module/components/text-transform-control/index.js +4 -2
  349. package/build-module/components/text-transform-control/index.js.map +1 -1
  350. package/build-module/components/url-input/index.js +1 -1
  351. package/build-module/components/url-input/index.js.map +1 -1
  352. package/build-module/components/url-popover/image-url-input-ui.js +4 -1
  353. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  354. package/build-module/components/writing-flow/use-arrow-nav.js +5 -26
  355. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  356. package/build-module/components/writing-flow/use-drag-selection.js +9 -2
  357. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
  358. package/build-module/components/writing-flow/use-multi-selection.js +4 -2
  359. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  360. package/build-module/components/writing-flow/use-select-all.js +3 -1
  361. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  362. package/build-module/components/writing-flow/use-selection-observer.js +10 -2
  363. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  364. package/build-module/components/writing-flow/use-tab-nav.js +1 -1
  365. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  366. package/build-module/hooks/border-radius.js +2 -7
  367. package/build-module/hooks/border-radius.js.map +1 -1
  368. package/build-module/hooks/border.js +2 -2
  369. package/build-module/hooks/border.js.map +1 -1
  370. package/build-module/hooks/color.js +4 -1
  371. package/build-module/hooks/color.js.map +1 -1
  372. package/build-module/hooks/dimensions.js +13 -0
  373. package/build-module/hooks/dimensions.js.map +1 -1
  374. package/build-module/hooks/duotone.js +4 -4
  375. package/build-module/hooks/duotone.js.map +1 -1
  376. package/build-module/hooks/gap.js +3 -2
  377. package/build-module/hooks/gap.js.map +1 -1
  378. package/build-module/hooks/generated-class-name.js +1 -6
  379. package/build-module/hooks/generated-class-name.js.map +1 -1
  380. package/build-module/hooks/layout.js +42 -15
  381. package/build-module/hooks/layout.js.map +1 -1
  382. package/build-module/hooks/margin.js +26 -12
  383. package/build-module/hooks/margin.js.map +1 -1
  384. package/build-module/hooks/padding.js +17 -8
  385. package/build-module/hooks/padding.js.map +1 -1
  386. package/build-module/hooks/style.js +44 -81
  387. package/build-module/hooks/style.js.map +1 -1
  388. package/build-module/layouts/constrained.js +197 -0
  389. package/build-module/layouts/constrained.js.map +1 -0
  390. package/build-module/layouts/flex.js +1 -1
  391. package/build-module/layouts/flex.js.map +1 -1
  392. package/build-module/layouts/flow.js +7 -140
  393. package/build-module/layouts/flow.js.map +1 -1
  394. package/build-module/layouts/index.js +2 -1
  395. package/build-module/layouts/index.js.map +1 -1
  396. package/build-module/layouts/utils.js +40 -0
  397. package/build-module/layouts/utils.js.map +1 -1
  398. package/build-module/store/actions.js +25 -3
  399. package/build-module/store/actions.js.map +1 -1
  400. package/build-module/store/selectors.js +5 -7
  401. package/build-module/store/selectors.js.map +1 -1
  402. package/build-module/utils/block-variation-transforms.js +14 -7
  403. package/build-module/utils/block-variation-transforms.js.map +1 -1
  404. package/build-module/utils/pasting.js +9 -1
  405. package/build-module/utils/pasting.js.map +1 -1
  406. package/build-style/style-rtl.css +154 -27
  407. package/build-style/style.css +154 -27
  408. package/package.json +30 -28
  409. package/src/components/block-alignment-control/use-available-alignments.js +1 -1
  410. package/src/components/block-edit-visually-button/index.js +39 -0
  411. package/src/components/block-list/block.js +13 -2
  412. package/src/components/block-list/index.native.js +1 -1
  413. package/src/components/block-lock/modal.js +5 -5
  414. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
  415. package/src/components/block-mover/mover-description.js +131 -48
  416. package/src/components/block-mover/test/mover-description.js +55 -3
  417. package/src/components/block-popover/inbetween.js +5 -1
  418. package/src/components/block-popover/style.scss +25 -2
  419. package/src/components/block-settings-menu/index.js +11 -15
  420. package/src/components/block-settings-menu-controls/index.js +2 -2
  421. package/src/components/block-styles/index.js +4 -7
  422. package/src/components/block-styles/preview.native.js +2 -2
  423. package/src/components/block-styles/style.scss +10 -0
  424. package/src/components/block-switcher/index.js +9 -13
  425. package/src/components/block-switcher/test/index.js +1 -0
  426. package/src/components/block-toolbar/index.js +2 -0
  427. package/src/components/block-tools/block-selection-button.js +0 -5
  428. package/src/components/block-tools/index.js +4 -1
  429. package/src/components/block-types-list/index.js +1 -1
  430. package/src/components/block-types-list/index.native.js +76 -24
  431. package/src/components/block-types-list/style.native.scss +18 -0
  432. package/src/components/border-radius-control/all-input-control.js +41 -4
  433. package/src/components/border-radius-control/index.js +29 -6
  434. package/src/components/border-radius-control/input-controls.js +40 -13
  435. package/src/components/border-radius-control/test/utils.js +22 -60
  436. package/src/components/border-radius-control/utils.js +12 -16
  437. package/src/components/color-palette/test/__snapshots__/control.js.snap +91 -79
  438. package/src/components/colors/test/__snapshots__/with-colors.js.snap +1 -1
  439. package/src/components/colors/test/with-colors.js +1 -1
  440. package/src/components/colors/utils.js +5 -2
  441. package/src/components/colors/with-colors.js +11 -1
  442. package/src/components/colors-gradients/control.js +13 -8
  443. package/src/components/colors-gradients/dropdown.js +14 -3
  444. package/src/components/colors-gradients/style.scss +33 -12
  445. package/src/components/colors-gradients/test/control.js +3 -3
  446. package/src/components/copy-handler/index.js +18 -0
  447. package/src/components/date-format-picker/index.js +12 -14
  448. package/src/components/date-format-picker/style.scss +0 -4
  449. package/src/components/duotone/components.js +5 -5
  450. package/src/components/duotone-control/style.scss +0 -4
  451. package/src/components/font-appearance-control/index.js +3 -0
  452. package/src/components/font-appearance-control/style.scss +0 -2
  453. package/src/components/font-family/index.js +1 -1
  454. package/src/components/font-sizes/with-font-sizes.js +11 -1
  455. package/src/components/image-editor/cropper.js +9 -3
  456. package/src/components/image-editor/index.js +2 -0
  457. package/src/components/image-size-control/README.md +7 -0
  458. package/src/components/image-size-control/index.js +2 -0
  459. package/src/components/index.js +5 -1
  460. package/src/components/index.native.js +4 -1
  461. package/src/components/inserter/block-types-tab.native.js +42 -21
  462. package/src/components/inserter/index.native.js +7 -2
  463. package/src/components/inserter/preview-panel.js +6 -14
  464. package/src/components/inserter/reusable-blocks-tab.native.js +4 -2
  465. package/src/components/inserter/search-items.js +17 -5
  466. package/src/components/inserter/search-results.native.js +4 -2
  467. package/src/components/inserter/test/block-types-tab.native.js +2 -0
  468. package/src/components/inserter/test/utils.native.js +37 -0
  469. package/src/components/inserter/utils.native.js +11 -0
  470. package/src/components/inserter-list-item/index.js +5 -18
  471. package/src/components/letter-spacing-control/index.js +2 -0
  472. package/src/components/line-height-control/index.js +2 -0
  473. package/src/components/link-control/is-url-like.js +1 -6
  474. package/src/components/link-control/link-preview.js +0 -1
  475. package/src/components/link-control/test/index.js +540 -893
  476. package/src/components/link-control/use-search-handler.js +1 -6
  477. package/src/components/list-view/block-select-button.js +7 -2
  478. package/src/components/list-view/branch.js +1 -6
  479. package/src/components/list-view/expander.js +4 -2
  480. package/src/components/list-view/style.scss +11 -4
  481. package/src/components/list-view/use-block-selection.js +2 -8
  482. package/src/components/media-replace-flow/style.scss +1 -0
  483. package/src/components/media-upload/index.native.js +7 -3
  484. package/src/components/observe-typing/index.js +17 -14
  485. package/src/components/preview-options/index.js +2 -2
  486. package/src/components/{use-no-recursive-renders → recursion-provider}/index.js +39 -28
  487. package/src/components/{use-no-recursive-renders/test/use-no-recursive-renders.js → recursion-provider/test/index.js} +5 -6
  488. package/src/components/rich-text/README.md +13 -1
  489. package/src/components/rich-text/format-toolbar-container.js +63 -14
  490. package/src/components/rich-text/index.js +3 -0
  491. package/src/components/rich-text/index.native.js +2 -0
  492. package/src/components/rich-text/use-before-input-rules.js +91 -0
  493. package/src/components/rich-text/use-enter.js +0 -3
  494. package/src/components/rich-text/use-format-types.js +38 -17
  495. package/src/components/spacing-sizes-control/all-input-control.js +40 -0
  496. package/src/components/spacing-sizes-control/axial-input-controls.js +62 -0
  497. package/src/components/spacing-sizes-control/index.js +91 -0
  498. package/src/components/spacing-sizes-control/input-controls.js +46 -0
  499. package/src/components/spacing-sizes-control/linked-button.js +25 -0
  500. package/src/components/spacing-sizes-control/spacing-input-control.js +280 -0
  501. package/src/components/spacing-sizes-control/style.scss +122 -0
  502. package/src/components/spacing-sizes-control/test/utils.js +156 -0
  503. package/src/components/spacing-sizes-control/utils.js +195 -0
  504. package/src/components/text-decoration-control/index.js +4 -2
  505. package/src/components/text-transform-control/index.js +4 -2
  506. package/src/components/url-input/index.js +1 -1
  507. package/src/components/url-input/style.scss +2 -2
  508. package/src/components/url-popover/image-url-input-ui.js +3 -0
  509. package/src/components/url-popover/style.scss +0 -3
  510. package/src/components/writing-flow/use-arrow-nav.js +4 -33
  511. package/src/components/writing-flow/use-drag-selection.js +7 -1
  512. package/src/components/writing-flow/use-multi-selection.js +4 -1
  513. package/src/components/writing-flow/use-select-all.js +2 -1
  514. package/src/components/writing-flow/use-selection-observer.js +10 -2
  515. package/src/components/writing-flow/use-tab-nav.js +1 -1
  516. package/src/hooks/border-radius.js +2 -6
  517. package/src/hooks/border.js +2 -2
  518. package/src/hooks/color.js +13 -3
  519. package/src/hooks/dimensions.js +15 -0
  520. package/src/hooks/duotone.js +4 -4
  521. package/src/hooks/gap.js +7 -2
  522. package/src/hooks/generated-class-name.js +6 -9
  523. package/src/hooks/layout.js +66 -18
  524. package/src/hooks/margin.js +49 -17
  525. package/src/hooks/padding.js +41 -14
  526. package/src/hooks/style.js +42 -86
  527. package/src/hooks/test/gap.js +22 -0
  528. package/src/hooks/typography.scss +0 -1
  529. package/src/layouts/constrained.js +217 -0
  530. package/src/layouts/flex.js +1 -1
  531. package/src/layouts/flow.js +6 -151
  532. package/src/layouts/index.js +2 -1
  533. package/src/layouts/test/constrained.js +21 -0
  534. package/src/layouts/utils.js +34 -0
  535. package/src/store/actions.js +32 -4
  536. package/src/store/selectors.js +5 -4
  537. package/src/style.scss +1 -0
  538. package/src/utils/block-variation-transforms.js +13 -6
  539. package/src/utils/pasting.js +10 -1
  540. package/src/utils/test/block-variation-transforms.js +24 -0
  541. package/src/utils/test/pasting.js +10 -0
  542. package/build/components/block-settings-menu/block-edit-visually-button.js +0 -70
  543. package/build/components/block-settings-menu/block-edit-visually-button.js.map +0 -1
  544. package/build/components/use-no-recursive-renders/index.js.map +0 -1
  545. package/build-module/components/block-settings-menu/block-edit-visually-button.js +0 -56
  546. package/build-module/components/block-settings-menu/block-edit-visually-button.js.map +0 -1
  547. package/build-module/components/use-no-recursive-renders/index.js.map +0 -1
  548. package/src/components/block-settings-menu/block-edit-visually-button.js +0 -52
@@ -25,7 +25,11 @@ function extractSelectionStartNode( selection ) {
25
25
  return anchorNode;
26
26
  }
27
27
 
28
- return anchorNode.childNodes[ anchorOffset ];
28
+ if ( anchorOffset === 0 ) {
29
+ return anchorNode;
30
+ }
31
+
32
+ return anchorNode.childNodes[ anchorOffset - 1 ];
29
33
  }
30
34
 
31
35
  /**
@@ -44,7 +48,11 @@ function extractSelectionEndNode( selection ) {
44
48
  return focusNode;
45
49
  }
46
50
 
47
- return focusNode.childNodes[ focusOffset - 1 ];
51
+ if ( focusOffset === focusNode.childNodes.length ) {
52
+ return focusNode;
53
+ }
54
+
55
+ return focusNode.childNodes[ focusOffset ];
48
56
  }
49
57
 
50
58
  function findDepth( a, b ) {
@@ -75,7 +75,7 @@ export default function useTabNav() {
75
75
  return;
76
76
  }
77
77
 
78
- if ( event.keyCode === ESCAPE && ! hasMultiSelection() ) {
78
+ if ( event.keyCode === ESCAPE ) {
79
79
  event.preventDefault();
80
80
  setNavigationMode( true );
81
81
  return;
@@ -19,17 +19,13 @@ export function BorderRadiusEdit( props ) {
19
19
  } = props;
20
20
 
21
21
  const onChange = ( newRadius ) => {
22
- let newStyle = {
22
+ const newStyle = cleanEmptyObject( {
23
23
  ...style,
24
24
  border: {
25
25
  ...style?.border,
26
26
  radius: newRadius,
27
27
  },
28
- };
29
-
30
- if ( newRadius === undefined || newRadius === '' ) {
31
- newStyle = cleanEmptyObject( newStyle );
32
- }
28
+ } );
33
29
 
34
30
  setAttributes( { style: newStyle } );
35
31
  };
@@ -268,10 +268,10 @@ export function BorderPanel( props ) {
268
268
  <BorderBoxControl
269
269
  colors={ colors }
270
270
  enableAlpha={ true }
271
+ enableStyle={ isStyleSupported }
271
272
  onChange={ onBorderChange }
272
- popoverPlacement="left-start"
273
273
  popoverOffset={ 40 }
274
- showStyle={ isStyleSupported }
274
+ popoverPlacement="left-start"
275
275
  value={ hydratedBorder }
276
276
  __experimentalHasMultipleOrigins={ true }
277
277
  __experimentalIsRenderedInSidebar={ true }
@@ -450,14 +450,24 @@ export function ColorEdit( props ) {
450
450
  };
451
451
  };
452
452
 
453
- const enableContrastChecking =
454
- Platform.OS === 'web' && ! gradient && ! style?.color?.gradient;
455
-
456
453
  const defaultColorControls = getBlockSupport( props.name, [
457
454
  COLOR_SUPPORT_KEY,
458
455
  '__experimentalDefaultControls',
459
456
  ] );
460
457
 
458
+ const enableContrastChecking =
459
+ Platform.OS === 'web' &&
460
+ ! gradient &&
461
+ ! style?.color?.gradient &&
462
+ // Contrast checking is enabled by default.
463
+ // Deactivating it requires `enableContrastChecker` to have
464
+ // an explicit value of `false`.
465
+ false !==
466
+ getBlockSupport( props.name, [
467
+ COLOR_SUPPORT_KEY,
468
+ 'enableContrastChecker',
469
+ ] );
470
+
461
471
  return (
462
472
  <ColorPanel
463
473
  enableContrastChecking={ enableContrastChecking }
@@ -1,3 +1,8 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
@@ -33,6 +38,7 @@ import {
33
38
  resetPadding,
34
39
  useIsPaddingDisabled,
35
40
  } from './padding';
41
+ import useSetting from '../components/use-setting';
36
42
 
37
43
  export const SPACING_SUPPORT_KEY = 'spacing';
38
44
  export const ALL_SIDES = [ 'top', 'right', 'bottom', 'left' ];
@@ -51,6 +57,7 @@ export function DimensionsPanel( props ) {
51
57
  const isMarginDisabled = useIsMarginDisabled( props );
52
58
  const isDisabled = useIsDimensionsDisabled( props );
53
59
  const isSupported = hasDimensionsSupport( props.name );
60
+ const spacingSizes = useSetting( 'spacing.spacingSizes' );
54
61
 
55
62
  if ( isDisabled || ! isSupported ) {
56
63
  return null;
@@ -77,6 +84,10 @@ export function DimensionsPanel( props ) {
77
84
  <InspectorControls __experimentalGroup="dimensions">
78
85
  { ! isPaddingDisabled && (
79
86
  <ToolsPanelItem
87
+ className={ classnames( {
88
+ 'tools-panel-item-spacing':
89
+ spacingSizes && spacingSizes.length > 0,
90
+ } ) }
80
91
  hasValue={ () => hasPaddingValue( props ) }
81
92
  label={ __( 'Padding' ) }
82
93
  onDeselect={ () => resetPadding( props ) }
@@ -89,6 +100,10 @@ export function DimensionsPanel( props ) {
89
100
  ) }
90
101
  { ! isMarginDisabled && (
91
102
  <ToolsPanelItem
103
+ className={ classnames( {
104
+ 'tools-panel-item-spacing':
105
+ spacingSizes && spacingSizes.length > 0,
106
+ } ) }
92
107
  hasValue={ () => hasMarginValue( props ) }
93
108
  label={ __( 'Margin' ) }
94
109
  onDeselect={ () => resetMargin( props ) }
@@ -35,10 +35,10 @@ extend( [ namesPlugin ] );
35
35
  /**
36
36
  * SVG and stylesheet needed for rendering the duotone filter.
37
37
  *
38
- * @param {Object} props Duotone props.
39
- * @param {string} props.selector Selector to apply the filter to.
40
- * @param {string} props.id Unique id for this duotone filter.
41
- * @param {string[]|"unset"} props.colors Array of RGB color strings ordered from dark to light.
38
+ * @param {Object} props Duotone props.
39
+ * @param {string} props.selector Selector to apply the filter to.
40
+ * @param {string} props.id Unique id for this duotone filter.
41
+ * @param {string[]|"unset"} props.colors Array of RGB color strings ordered from dark to light.
42
42
  *
43
43
  * @return {WPElement} Duotone element.
44
44
  */
package/src/hooks/gap.js CHANGED
@@ -14,6 +14,7 @@ import {
14
14
  * Internal dependencies
15
15
  */
16
16
  import { __unstableUseBlockRef as useBlockRef } from '../components/block-list/use-block-props/use-block-refs';
17
+ import { getSpacingPresetCssVar } from '../components/spacing-sizes-control/utils';
17
18
  import useSetting from '../components/use-setting';
18
19
  import { AXIAL_SIDES, SPACING_SUPPORT_KEY, useCustomSides } from './dimensions';
19
20
  import { cleanEmptyObject } from './utils';
@@ -54,8 +55,12 @@ export function getGapBoxControlValueFromStyle( blockGapValue ) {
54
55
 
55
56
  const isValueString = typeof blockGapValue === 'string';
56
57
  return {
57
- top: isValueString ? blockGapValue : blockGapValue?.top,
58
- left: isValueString ? blockGapValue : blockGapValue?.left,
58
+ top: isValueString
59
+ ? getSpacingPresetCssVar( blockGapValue )
60
+ : getSpacingPresetCssVar( blockGapValue?.top ),
61
+ left: isValueString
62
+ ? getSpacingPresetCssVar( blockGapValue )
63
+ : getSpacingPresetCssVar( blockGapValue?.left ),
59
64
  };
60
65
  }
61
66
 
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { uniq } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -26,10 +21,12 @@ export function addGeneratedClassName( extraProps, blockType ) {
26
21
  // We have some extra classes and want to add the default classname
27
22
  // We use uniq to prevent duplicate classnames.
28
23
 
29
- extraProps.className = uniq( [
30
- getBlockDefaultClassName( blockType.name ),
31
- ...extraProps.className.split( ' ' ),
32
- ] )
24
+ extraProps.className = [
25
+ ...new Set( [
26
+ getBlockDefaultClassName( blockType.name ),
27
+ ...extraProps.className.split( ' ' ),
28
+ ] ),
29
+ ]
33
30
  .join( ' ' )
34
31
  .trim();
35
32
  } else {
@@ -49,7 +49,12 @@ const layoutBlockSupportKey = '__experimentalLayout';
49
49
  *
50
50
  * @return { Array } Array of CSS classname strings.
51
51
  */
52
- function getLayoutClasses( layout, layoutDefinitions ) {
52
+ function useLayoutClasses( layout, layoutDefinitions ) {
53
+ const rootPaddingAlignment = useSelect( ( select ) => {
54
+ const { getSettings } = select( blockEditorStore );
55
+ return getSettings().__experimentalFeatures
56
+ ?.useRootPaddingAwareAlignments;
57
+ }, [] );
53
58
  const layoutClassnames = [];
54
59
 
55
60
  if ( layoutDefinitions?.[ layout?.type || 'default' ]?.className ) {
@@ -58,6 +63,10 @@ function getLayoutClasses( layout, layoutDefinitions ) {
58
63
  );
59
64
  }
60
65
 
66
+ if ( ( layout?.inherit || layout?.contentSize ) && rootPaddingAlignment ) {
67
+ layoutClassnames.push( 'has-global-padding' );
68
+ }
69
+
61
70
  if ( layout?.orientation ) {
62
71
  layoutClassnames.push( `is-${ kebabCase( layout.orientation ) }` );
63
72
  }
@@ -101,25 +110,37 @@ function LayoutPanel( { setAttributes, attributes, name: blockName } ) {
101
110
 
102
111
  // Only show the inherit toggle if it's supported,
103
112
  // a default theme layout is set (e.g. one that provides `contentSize` and/or `wideSize` values),
104
- // and that the default / flow layout type is in use, as this is the only one that supports inheritance.
113
+ // and either the default / flow or the constrained layout type is in use, as the toggle switches from one to the other.
105
114
  const showInheritToggle = !! (
106
115
  allowInheriting &&
107
116
  !! defaultThemeLayout &&
108
- ( ! layout?.type || layout?.type === 'default' || layout?.inherit )
117
+ ( ! layout?.type ||
118
+ layout?.type === 'default' ||
119
+ layout?.type === 'constrained' ||
120
+ layout?.inherit )
109
121
  );
110
122
 
111
123
  const usedLayout = layout || defaultBlockLayout || {};
112
- const { inherit = false, type = 'default' } = usedLayout;
124
+ const {
125
+ inherit = false,
126
+ type = 'default',
127
+ contentSize = null,
128
+ } = usedLayout;
113
129
  /**
114
- * `themeSupportsLayout` is only relevant to the `default/flow`
115
- * layout and it should not be taken into account when other
130
+ * `themeSupportsLayout` is only relevant to the `default/flow` or
131
+ * `constrained` layouts and it should not be taken into account when other
116
132
  * `layout` types are used.
117
133
  */
118
- if ( type === 'default' && ! themeSupportsLayout ) {
134
+ if (
135
+ ( type === 'default' || type === 'constrained' ) &&
136
+ ! themeSupportsLayout
137
+ ) {
119
138
  return null;
120
139
  }
121
140
  const layoutType = getLayoutType( type );
122
141
 
142
+ const constrainedType = getLayoutType( 'constrained' );
143
+
123
144
  const onChangeType = ( newType ) =>
124
145
  setAttributes( { layout: { type: newType } } );
125
146
  const onChangeLayout = ( newLayout ) =>
@@ -132,16 +153,29 @@ function LayoutPanel( { setAttributes, attributes, name: blockName } ) {
132
153
  { showInheritToggle && (
133
154
  <>
134
155
  <ToggleControl
135
- label={ __( 'Inner blocks use full width' ) }
136
- checked={ ! inherit }
156
+ label={ __(
157
+ 'Inner blocks respect content width'
158
+ ) }
159
+ checked={
160
+ layoutType?.name === 'constrained' ||
161
+ !! inherit ||
162
+ !! contentSize
163
+ }
137
164
  onChange={ () =>
138
165
  setAttributes( {
139
- layout: { inherit: ! inherit },
166
+ layout: {
167
+ type:
168
+ layoutType?.name ===
169
+ 'constrained'
170
+ ? 'default'
171
+ : 'constrained',
172
+ },
140
173
  } )
141
174
  }
142
175
  />
143
176
  <p className="block-editor-hooks__layout-controls-helptext">
144
- { !! inherit
177
+ { !! inherit ||
178
+ layoutType?.name === 'constrained'
145
179
  ? __(
146
180
  'Nested blocks use theme content width with options for full and wide widths.'
147
181
  )
@@ -159,13 +193,20 @@ function LayoutPanel( { setAttributes, attributes, name: blockName } ) {
159
193
  />
160
194
  ) }
161
195
 
162
- { ! inherit && layoutType && (
196
+ { layoutType && layoutType.name !== 'default' && (
163
197
  <layoutType.inspectorControls
164
198
  layout={ usedLayout }
165
199
  onChange={ onChangeLayout }
166
200
  layoutBlockSupport={ layoutBlockSupport }
167
201
  />
168
202
  ) }
203
+ { constrainedType && !! contentSize && (
204
+ <constrainedType.inspectorControls
205
+ layout={ usedLayout }
206
+ onChange={ onChangeLayout }
207
+ layoutBlockSupport={ layoutBlockSupport }
208
+ />
209
+ ) }
169
210
  </PanelBody>
170
211
  </InspectorControls>
171
212
  { ! inherit && layoutType && (
@@ -253,21 +294,28 @@ export const withInspectorControls = createHigherOrderComponent(
253
294
  export const withLayoutStyles = createHigherOrderComponent(
254
295
  ( BlockListBlock ) => ( props ) => {
255
296
  const { name, attributes } = props;
256
- const shouldRenderLayoutStyles = hasBlockSupport(
297
+ const hasLayoutBlockSupport = hasBlockSupport(
257
298
  name,
258
299
  layoutBlockSupportKey
259
300
  );
301
+ const disableLayoutStyles = useSelect( ( select ) => {
302
+ const { getSettings } = select( blockEditorStore );
303
+ return !! getSettings().disableLayoutStyles;
304
+ } );
305
+ const shouldRenderLayoutStyles =
306
+ hasLayoutBlockSupport && ! disableLayoutStyles;
260
307
  const id = useInstanceId( BlockListBlock );
261
308
  const defaultThemeLayout = useSetting( 'layout' ) || {};
262
309
  const element = useContext( BlockList.__unstableElementContext );
263
310
  const { layout } = attributes;
264
311
  const { default: defaultBlockLayout } =
265
312
  getBlockSupport( name, layoutBlockSupportKey ) || {};
266
- const usedLayout = layout?.inherit
267
- ? defaultThemeLayout
268
- : layout || defaultBlockLayout || {};
269
- const layoutClasses = shouldRenderLayoutStyles
270
- ? getLayoutClasses( usedLayout, defaultThemeLayout?.definitions )
313
+ const usedLayout =
314
+ layout?.inherit || layout?.contentSize || layout?.wideSize
315
+ ? { ...layout, type: 'constrained' }
316
+ : layout || defaultBlockLayout || {};
317
+ const layoutClasses = hasLayoutBlockSupport
318
+ ? useLayoutClasses( usedLayout, defaultThemeLayout?.definitions )
271
319
  : null;
272
320
  const selector = `.${ getBlockDefaultClassName(
273
321
  name
@@ -28,6 +28,8 @@ import {
28
28
  } from './dimensions';
29
29
  import { cleanEmptyObject } from './utils';
30
30
  import BlockPopover from '../components/block-popover';
31
+ import SpacingSizesControl from '../components/spacing-sizes-control';
32
+ import { getCustomValueFromPreset } from '../components/spacing-sizes-control/utils';
31
33
 
32
34
  /**
33
35
  * Determines if there is margin support.
@@ -101,6 +103,8 @@ export function MarginEdit( props ) {
101
103
  setAttributes,
102
104
  } = props;
103
105
 
106
+ const spacingSizes = useSetting( 'spacing.spacingSizes' );
107
+
104
108
  const units = useCustomUnits( {
105
109
  availableUnits: useSetting( 'spacing.units' ) || [
106
110
  '%',
@@ -135,15 +139,28 @@ export function MarginEdit( props ) {
135
139
  return Platform.select( {
136
140
  web: (
137
141
  <>
138
- <BoxControl
139
- values={ style?.spacing?.margin }
140
- onChange={ onChange }
141
- label={ __( 'Margin' ) }
142
- sides={ sides }
143
- units={ units }
144
- allowReset={ false }
145
- splitOnAxis={ splitOnAxis }
146
- />
142
+ { ( ! spacingSizes || spacingSizes?.length === 0 ) && (
143
+ <BoxControl
144
+ values={ style?.spacing?.margin }
145
+ onChange={ onChange }
146
+ label={ __( 'Margin' ) }
147
+ sides={ sides }
148
+ units={ units }
149
+ allowReset={ false }
150
+ splitOnAxis={ splitOnAxis }
151
+ />
152
+ ) }
153
+ { spacingSizes?.length > 0 && (
154
+ <SpacingSizesControl
155
+ values={ style?.spacing?.margin }
156
+ onChange={ onChange }
157
+ label={ __( 'Margin' ) }
158
+ sides={ sides }
159
+ units={ units }
160
+ allowReset={ false }
161
+ splitOnAxis={ false }
162
+ />
163
+ ) }
147
164
  </>
148
165
  ),
149
166
  native: null,
@@ -152,16 +169,31 @@ export function MarginEdit( props ) {
152
169
 
153
170
  export function MarginVisualizer( { clientId, attributes } ) {
154
171
  const margin = attributes?.style?.spacing?.margin;
172
+ const spacingSizes = useSetting( 'spacing.spacingSizes' );
173
+
155
174
  const style = useMemo( () => {
175
+ const marginTop = margin?.top
176
+ ? getCustomValueFromPreset( margin?.top, spacingSizes )
177
+ : 0;
178
+ const marginRight = margin?.right
179
+ ? getCustomValueFromPreset( margin?.right, spacingSizes )
180
+ : 0;
181
+ const marginBottom = margin?.bottom
182
+ ? getCustomValueFromPreset( margin?.bottom, spacingSizes )
183
+ : 0;
184
+ const marginLeft = margin?.left
185
+ ? getCustomValueFromPreset( margin?.left, spacingSizes )
186
+ : 0;
187
+
156
188
  return {
157
- borderTopWidth: margin?.top ?? 0,
158
- borderRightWidth: margin?.right ?? 0,
159
- borderBottomWidth: margin?.bottom ?? 0,
160
- borderLeftWidth: margin?.left ?? 0,
161
- top: margin?.top ? `-${ margin.top }` : 0,
162
- right: margin?.right ? `-${ margin.right }` : 0,
163
- bottom: margin?.bottom ? `-${ margin.bottom }` : 0,
164
- left: margin?.left ? `-${ margin.left }` : 0,
189
+ borderTopWidth: marginTop,
190
+ borderRightWidth: marginRight,
191
+ borderBottomWidth: marginBottom,
192
+ borderLeftWidth: marginLeft,
193
+ top: marginTop !== 0 ? `-${ marginTop }` : 0,
194
+ right: marginRight !== 0 ? `-${ marginRight }` : 0,
195
+ bottom: marginBottom !== 0 ? `-${ marginBottom }` : 0,
196
+ left: marginLeft !== 0 ? `-${ marginLeft }` : 0,
165
197
  };
166
198
  }, [ margin ] );
167
199
 
@@ -28,7 +28,11 @@ import {
28
28
  } from './dimensions';
29
29
  import { cleanEmptyObject } from './utils';
30
30
  import BlockPopover from '../components/block-popover';
31
-
31
+ import SpacingSizesControl from '../components/spacing-sizes-control';
32
+ import {
33
+ getSpacingPresetCssVar,
34
+ isValueSpacingPreset,
35
+ } from '../components/spacing-sizes-control/utils';
32
36
  /**
33
37
  * Determines if there is padding support.
34
38
  *
@@ -101,6 +105,8 @@ export function PaddingEdit( props ) {
101
105
  setAttributes,
102
106
  } = props;
103
107
 
108
+ const spacingSizes = useSetting( 'spacing.spacingSizes' );
109
+
104
110
  const units = useCustomUnits( {
105
111
  availableUnits: useSetting( 'spacing.units' ) || [
106
112
  '%',
@@ -135,15 +141,28 @@ export function PaddingEdit( props ) {
135
141
  return Platform.select( {
136
142
  web: (
137
143
  <>
138
- <BoxControl
139
- values={ style?.spacing?.padding }
140
- onChange={ onChange }
141
- label={ __( 'Padding' ) }
142
- sides={ sides }
143
- units={ units }
144
- allowReset={ false }
145
- splitOnAxis={ splitOnAxis }
146
- />
144
+ { ( ! spacingSizes || spacingSizes?.length === 0 ) && (
145
+ <BoxControl
146
+ values={ style?.spacing?.padding }
147
+ onChange={ onChange }
148
+ label={ __( 'Padding' ) }
149
+ sides={ sides }
150
+ units={ units }
151
+ allowReset={ false }
152
+ splitOnAxis={ splitOnAxis }
153
+ />
154
+ ) }
155
+ { spacingSizes?.length > 0 && (
156
+ <SpacingSizesControl
157
+ values={ style?.spacing?.padding }
158
+ onChange={ onChange }
159
+ label={ __( 'Padding' ) }
160
+ sides={ sides }
161
+ units={ units }
162
+ allowReset={ false }
163
+ splitOnAxis={ splitOnAxis }
164
+ />
165
+ ) }
147
166
  </>
148
167
  ),
149
168
  native: null,
@@ -154,10 +173,18 @@ export function PaddingVisualizer( { clientId, attributes } ) {
154
173
  const padding = attributes?.style?.spacing?.padding;
155
174
  const style = useMemo( () => {
156
175
  return {
157
- borderTopWidth: padding?.top ?? 0,
158
- borderRightWidth: padding?.right ?? 0,
159
- borderBottomWidth: padding?.bottom ?? 0,
160
- borderLeftWidth: padding?.left ?? 0,
176
+ borderTopWidth: isValueSpacingPreset( padding?.top )
177
+ ? getSpacingPresetCssVar( padding?.top )
178
+ : padding?.top,
179
+ borderRightWidth: isValueSpacingPreset( padding?.right )
180
+ ? getSpacingPresetCssVar( padding?.right )
181
+ : padding?.right,
182
+ borderBottomWidth: isValueSpacingPreset( padding?.bottom )
183
+ ? getSpacingPresetCssVar( padding?.bottom )
184
+ : padding?.bottom,
185
+ borderLeftWidth: isValueSpacingPreset( padding?.left )
186
+ ? getSpacingPresetCssVar( padding?.left )
187
+ : padding?.left,
161
188
  };
162
189
  }, [ padding ] );
163
190