@wordpress/block-editor 9.7.0 → 9.8.1-next.957ca95e4c.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 (396) hide show
  1. package/CHANGELOG.md +2 -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-list-compact.native.js +73 -0
  7. package/build/components/block-list/block-list-compact.native.js.map +1 -0
  8. package/build/components/block-list/use-block-props/use-focus-first-element.js +1 -1
  9. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  10. package/build/components/block-popover/inbetween.js +4 -2
  11. package/build/components/block-popover/inbetween.js.map +1 -1
  12. package/build/components/block-popover/index.js +11 -7
  13. package/build/components/block-popover/index.js.map +1 -1
  14. package/build/components/block-settings-menu/index.js +2 -6
  15. package/build/components/block-settings-menu/index.js.map +1 -1
  16. package/build/components/block-switcher/index.js +10 -16
  17. package/build/components/block-switcher/index.js.map +1 -1
  18. package/build/components/block-toolbar/index.js +5 -1
  19. package/build/components/block-toolbar/index.js.map +1 -1
  20. package/build/components/block-tools/selected-block-popover.js +10 -2
  21. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  22. package/build/components/block-tools/use-block-toolbar-popover-props.js +126 -0
  23. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -0
  24. package/build/components/border-radius-control/all-input-control.js +31 -3
  25. package/build/components/border-radius-control/all-input-control.js.map +1 -1
  26. package/build/components/border-radius-control/index.js +20 -6
  27. package/build/components/border-radius-control/index.js.map +1 -1
  28. package/build/components/border-radius-control/input-controls.js +21 -6
  29. package/build/components/border-radius-control/input-controls.js.map +1 -1
  30. package/build/components/border-radius-control/utils.js +13 -16
  31. package/build/components/border-radius-control/utils.js.map +1 -1
  32. package/build/components/colors/with-colors.js +17 -4
  33. package/build/components/colors/with-colors.js.map +1 -1
  34. package/build/components/colors-gradients/control.js +1 -0
  35. package/build/components/colors-gradients/control.js.map +1 -1
  36. package/build/components/copy-handler/index.js +6 -0
  37. package/build/components/copy-handler/index.js.map +1 -1
  38. package/build/components/date-format-picker/index.js +2 -7
  39. package/build/components/date-format-picker/index.js.map +1 -1
  40. package/build/components/duotone/components.js +5 -5
  41. package/build/components/duotone/components.js.map +1 -1
  42. package/build/components/font-family/index.js +1 -1
  43. package/build/components/font-family/index.js.map +1 -1
  44. package/build/components/font-sizes/with-font-sizes.js +17 -4
  45. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  46. package/build/components/index.js +9 -0
  47. package/build/components/index.js.map +1 -1
  48. package/build/components/inner-blocks/index.native.js +6 -2
  49. package/build/components/inner-blocks/index.native.js.map +1 -1
  50. package/build/components/inserter/search-items.js +22 -4
  51. package/build/components/inserter/search-items.js.map +1 -1
  52. package/build/components/link-control/link-preview.js +0 -1
  53. package/build/components/link-control/link-preview.js.map +1 -1
  54. package/build/components/list-view/block-select-button.js +5 -2
  55. package/build/components/list-view/block-select-button.js.map +1 -1
  56. package/build/components/list-view/use-block-selection.js +1 -7
  57. package/build/components/list-view/use-block-selection.js.map +1 -1
  58. package/build/components/rich-text/index.js +10 -0
  59. package/build/components/rich-text/index.js.map +1 -1
  60. package/build/components/rich-text/use-enter.js +0 -4
  61. package/build/components/rich-text/use-enter.js.map +1 -1
  62. package/build/components/rich-text/use-format-types.js +8 -11
  63. package/build/components/rich-text/use-format-types.js.map +1 -1
  64. package/build/components/spacing-sizes-control/all-input-control.js +53 -0
  65. package/build/components/spacing-sizes-control/all-input-control.js.map +1 -0
  66. package/build/components/spacing-sizes-control/axial-input-controls.js +69 -0
  67. package/build/components/spacing-sizes-control/axial-input-controls.js.map +1 -0
  68. package/build/components/spacing-sizes-control/index.js +100 -0
  69. package/build/components/spacing-sizes-control/index.js.map +1 -0
  70. package/build/components/spacing-sizes-control/input-controls.js +52 -0
  71. package/build/components/spacing-sizes-control/input-controls.js.map +1 -0
  72. package/build/components/spacing-sizes-control/linked-button.js +38 -0
  73. package/build/components/spacing-sizes-control/linked-button.js.map +1 -0
  74. package/build/components/spacing-sizes-control/spacing-input-control.js +213 -0
  75. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -0
  76. package/build/components/spacing-sizes-control/utils.js +233 -0
  77. package/build/components/spacing-sizes-control/utils.js.map +1 -0
  78. package/build/components/text-decoration-control/index.js +28 -17
  79. package/build/components/text-decoration-control/index.js.map +1 -1
  80. package/build/components/text-transform-control/index.js +21 -14
  81. package/build/components/text-transform-control/index.js.map +1 -1
  82. package/build/components/url-input/index.js +1 -1
  83. package/build/components/url-input/index.js.map +1 -1
  84. package/build/components/writing-flow/index.js +2 -0
  85. package/build/components/writing-flow/index.js.map +1 -1
  86. package/build/components/writing-flow/use-multi-selection.js +4 -2
  87. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  88. package/build/components/writing-flow/use-select-all.js +7 -10
  89. package/build/components/writing-flow/use-select-all.js.map +1 -1
  90. package/build/components/writing-flow/use-selection-observer.js +10 -2
  91. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  92. package/build/hooks/align.js +3 -1
  93. package/build/hooks/align.js.map +1 -1
  94. package/build/hooks/anchor.js +3 -7
  95. package/build/hooks/anchor.js.map +1 -1
  96. package/build/hooks/border-radius.js +2 -7
  97. package/build/hooks/border-radius.js.map +1 -1
  98. package/build/hooks/border.js +2 -2
  99. package/build/hooks/border.js.map +1 -1
  100. package/build/hooks/color.js +4 -1
  101. package/build/hooks/color.js.map +1 -1
  102. package/build/hooks/dimensions.js +15 -0
  103. package/build/hooks/dimensions.js.map +1 -1
  104. package/build/hooks/duotone.js +4 -4
  105. package/build/hooks/duotone.js.map +1 -1
  106. package/build/hooks/font-appearance.js +2 -1
  107. package/build/hooks/font-appearance.js.map +1 -1
  108. package/build/hooks/font-family.js +3 -1
  109. package/build/hooks/font-family.js.map +1 -1
  110. package/build/hooks/font-size.js +3 -1
  111. package/build/hooks/font-size.js.map +1 -1
  112. package/build/hooks/gap.js +25 -6
  113. package/build/hooks/gap.js.map +1 -1
  114. package/build/hooks/generated-class-name.js +1 -7
  115. package/build/hooks/generated-class-name.js.map +1 -1
  116. package/build/hooks/layout.js +23 -13
  117. package/build/hooks/layout.js.map +1 -1
  118. package/build/hooks/letter-spacing.js +2 -1
  119. package/build/hooks/letter-spacing.js.map +1 -1
  120. package/build/hooks/line-height.js +2 -1
  121. package/build/hooks/line-height.js.map +1 -1
  122. package/build/hooks/lock.js +3 -7
  123. package/build/hooks/lock.js.map +1 -1
  124. package/build/hooks/margin.js +28 -12
  125. package/build/hooks/margin.js.map +1 -1
  126. package/build/hooks/padding.js +19 -8
  127. package/build/hooks/padding.js.map +1 -1
  128. package/build/hooks/style.js +4 -50
  129. package/build/hooks/style.js.map +1 -1
  130. package/build/hooks/text-decoration.js +2 -1
  131. package/build/hooks/text-decoration.js.map +1 -1
  132. package/build/hooks/text-transform.js +2 -1
  133. package/build/hooks/text-transform.js.map +1 -1
  134. package/build/layouts/constrained.js +225 -0
  135. package/build/layouts/constrained.js.map +1 -0
  136. package/build/layouts/flex.js +1 -1
  137. package/build/layouts/flex.js.map +1 -1
  138. package/build/layouts/flow.js +18 -152
  139. package/build/layouts/flow.js.map +1 -1
  140. package/build/layouts/index.js +3 -1
  141. package/build/layouts/index.js.map +1 -1
  142. package/build/layouts/utils.js +43 -0
  143. package/build/layouts/utils.js.map +1 -1
  144. package/build/store/actions.js +25 -3
  145. package/build/store/actions.js.map +1 -1
  146. package/build/store/selectors.js +4 -6
  147. package/build/store/selectors.js.map +1 -1
  148. package/build-module/components/block-alignment-control/use-available-alignments.js +1 -1
  149. package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
  150. package/build-module/components/block-edit-visually-button/index.js +35 -0
  151. package/build-module/components/block-edit-visually-button/index.js.map +1 -0
  152. package/build-module/components/block-list/block-list-compact.native.js +58 -0
  153. package/build-module/components/block-list/block-list-compact.native.js.map +1 -0
  154. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +1 -1
  155. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  156. package/build-module/components/block-popover/inbetween.js +4 -2
  157. package/build-module/components/block-popover/inbetween.js.map +1 -1
  158. package/build-module/components/block-popover/index.js +9 -7
  159. package/build-module/components/block-popover/index.js.map +1 -1
  160. package/build-module/components/block-settings-menu/index.js +3 -6
  161. package/build-module/components/block-settings-menu/index.js.map +1 -1
  162. package/build-module/components/block-switcher/index.js +10 -16
  163. package/build-module/components/block-switcher/index.js.map +1 -1
  164. package/build-module/components/block-toolbar/index.js +4 -1
  165. package/build-module/components/block-toolbar/index.js.map +1 -1
  166. package/build-module/components/block-tools/selected-block-popover.js +8 -2
  167. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  168. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +114 -0
  169. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -0
  170. package/build-module/components/border-radius-control/all-input-control.js +32 -4
  171. package/build-module/components/border-radius-control/all-input-control.js.map +1 -1
  172. package/build-module/components/border-radius-control/index.js +20 -6
  173. package/build-module/components/border-radius-control/index.js.map +1 -1
  174. package/build-module/components/border-radius-control/input-controls.js +22 -7
  175. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  176. package/build-module/components/border-radius-control/utils.js +13 -16
  177. package/build-module/components/border-radius-control/utils.js.map +1 -1
  178. package/build-module/components/colors/with-colors.js +16 -3
  179. package/build-module/components/colors/with-colors.js.map +1 -1
  180. package/build-module/components/colors-gradients/control.js +1 -0
  181. package/build-module/components/colors-gradients/control.js.map +1 -1
  182. package/build-module/components/copy-handler/index.js +7 -1
  183. package/build-module/components/copy-handler/index.js.map +1 -1
  184. package/build-module/components/date-format-picker/index.js +2 -6
  185. package/build-module/components/date-format-picker/index.js.map +1 -1
  186. package/build-module/components/duotone/components.js +5 -5
  187. package/build-module/components/duotone/components.js.map +1 -1
  188. package/build-module/components/font-family/index.js +1 -1
  189. package/build-module/components/font-family/index.js.map +1 -1
  190. package/build-module/components/font-sizes/with-font-sizes.js +16 -3
  191. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  192. package/build-module/components/index.js +1 -0
  193. package/build-module/components/index.js.map +1 -1
  194. package/build-module/components/inner-blocks/index.native.js +5 -2
  195. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  196. package/build-module/components/inserter/search-items.js +19 -5
  197. package/build-module/components/inserter/search-items.js.map +1 -1
  198. package/build-module/components/link-control/link-preview.js +0 -1
  199. package/build-module/components/link-control/link-preview.js.map +1 -1
  200. package/build-module/components/list-view/block-select-button.js +5 -2
  201. package/build-module/components/list-view/block-select-button.js.map +1 -1
  202. package/build-module/components/list-view/use-block-selection.js +1 -6
  203. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  204. package/build-module/components/rich-text/index.js +10 -0
  205. package/build-module/components/rich-text/index.js.map +1 -1
  206. package/build-module/components/rich-text/use-enter.js +0 -4
  207. package/build-module/components/rich-text/use-enter.js.map +1 -1
  208. package/build-module/components/rich-text/use-format-types.js +8 -10
  209. package/build-module/components/rich-text/use-format-types.js.map +1 -1
  210. package/build-module/components/spacing-sizes-control/all-input-control.js +41 -0
  211. package/build-module/components/spacing-sizes-control/all-input-control.js.map +1 -0
  212. package/build-module/components/spacing-sizes-control/axial-input-controls.js +57 -0
  213. package/build-module/components/spacing-sizes-control/axial-input-controls.js.map +1 -0
  214. package/build-module/components/spacing-sizes-control/index.js +83 -0
  215. package/build-module/components/spacing-sizes-control/index.js.map +1 -0
  216. package/build-module/components/spacing-sizes-control/input-controls.js +41 -0
  217. package/build-module/components/spacing-sizes-control/input-controls.js.map +1 -0
  218. package/build-module/components/spacing-sizes-control/linked-button.js +28 -0
  219. package/build-module/components/spacing-sizes-control/linked-button.js.map +1 -0
  220. package/build-module/components/spacing-sizes-control/spacing-input-control.js +197 -0
  221. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -0
  222. package/build-module/components/spacing-sizes-control/utils.js +203 -0
  223. package/build-module/components/spacing-sizes-control/utils.js.map +1 -0
  224. package/build-module/components/text-decoration-control/index.js +25 -18
  225. package/build-module/components/text-decoration-control/index.js.map +1 -1
  226. package/build-module/components/text-transform-control/index.js +19 -15
  227. package/build-module/components/text-transform-control/index.js.map +1 -1
  228. package/build-module/components/url-input/index.js +1 -1
  229. package/build-module/components/url-input/index.js.map +1 -1
  230. package/build-module/components/writing-flow/index.js +2 -0
  231. package/build-module/components/writing-flow/index.js.map +1 -1
  232. package/build-module/components/writing-flow/use-multi-selection.js +4 -2
  233. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  234. package/build-module/components/writing-flow/use-select-all.js +7 -10
  235. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  236. package/build-module/components/writing-flow/use-selection-observer.js +10 -2
  237. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  238. package/build-module/hooks/align.js +4 -2
  239. package/build-module/hooks/align.js.map +1 -1
  240. package/build-module/hooks/anchor.js +3 -6
  241. package/build-module/hooks/anchor.js.map +1 -1
  242. package/build-module/hooks/border-radius.js +2 -7
  243. package/build-module/hooks/border-radius.js.map +1 -1
  244. package/build-module/hooks/border.js +2 -2
  245. package/build-module/hooks/border.js.map +1 -1
  246. package/build-module/hooks/color.js +4 -1
  247. package/build-module/hooks/color.js.map +1 -1
  248. package/build-module/hooks/dimensions.js +13 -0
  249. package/build-module/hooks/dimensions.js.map +1 -1
  250. package/build-module/hooks/duotone.js +4 -4
  251. package/build-module/hooks/duotone.js.map +1 -1
  252. package/build-module/hooks/font-appearance.js +2 -1
  253. package/build-module/hooks/font-appearance.js.map +1 -1
  254. package/build-module/hooks/font-family.js +3 -1
  255. package/build-module/hooks/font-family.js.map +1 -1
  256. package/build-module/hooks/font-size.js +3 -1
  257. package/build-module/hooks/font-size.js.map +1 -1
  258. package/build-module/hooks/gap.js +21 -4
  259. package/build-module/hooks/gap.js.map +1 -1
  260. package/build-module/hooks/generated-class-name.js +1 -6
  261. package/build-module/hooks/generated-class-name.js.map +1 -1
  262. package/build-module/hooks/layout.js +24 -14
  263. package/build-module/hooks/layout.js.map +1 -1
  264. package/build-module/hooks/letter-spacing.js +2 -1
  265. package/build-module/hooks/letter-spacing.js.map +1 -1
  266. package/build-module/hooks/line-height.js +2 -1
  267. package/build-module/hooks/line-height.js.map +1 -1
  268. package/build-module/hooks/lock.js +3 -6
  269. package/build-module/hooks/lock.js.map +1 -1
  270. package/build-module/hooks/margin.js +26 -12
  271. package/build-module/hooks/margin.js.map +1 -1
  272. package/build-module/hooks/padding.js +17 -8
  273. package/build-module/hooks/padding.js.map +1 -1
  274. package/build-module/hooks/style.js +7 -53
  275. package/build-module/hooks/style.js.map +1 -1
  276. package/build-module/hooks/text-decoration.js +2 -1
  277. package/build-module/hooks/text-decoration.js.map +1 -1
  278. package/build-module/hooks/text-transform.js +2 -1
  279. package/build-module/hooks/text-transform.js.map +1 -1
  280. package/build-module/layouts/constrained.js +207 -0
  281. package/build-module/layouts/constrained.js.map +1 -0
  282. package/build-module/layouts/flex.js +1 -1
  283. package/build-module/layouts/flex.js.map +1 -1
  284. package/build-module/layouts/flow.js +20 -147
  285. package/build-module/layouts/flow.js.map +1 -1
  286. package/build-module/layouts/index.js +2 -1
  287. package/build-module/layouts/index.js.map +1 -1
  288. package/build-module/layouts/utils.js +40 -0
  289. package/build-module/layouts/utils.js.map +1 -1
  290. package/build-module/store/actions.js +25 -3
  291. package/build-module/store/actions.js.map +1 -1
  292. package/build-module/store/selectors.js +5 -7
  293. package/build-module/store/selectors.js.map +1 -1
  294. package/build-style/style-rtl.css +157 -61
  295. package/build-style/style.css +157 -61
  296. package/package.json +30 -28
  297. package/src/components/block-alignment-control/use-available-alignments.js +1 -1
  298. package/src/components/block-edit-visually-button/index.js +39 -0
  299. package/src/components/block-list/block-list-compact.native.js +62 -0
  300. package/src/components/block-list/style.scss +29 -6
  301. package/src/components/block-list/use-block-props/use-focus-first-element.js +1 -1
  302. package/src/components/block-popover/inbetween.js +4 -1
  303. package/src/components/block-popover/index.js +22 -15
  304. package/src/components/block-settings-menu/index.js +11 -15
  305. package/src/components/block-switcher/index.js +9 -13
  306. package/src/components/block-switcher/test/index.js +2 -2
  307. package/src/components/block-toolbar/index.js +2 -0
  308. package/src/components/block-tools/selected-block-popover.js +7 -0
  309. package/src/components/block-tools/use-block-toolbar-popover-props.js +123 -0
  310. package/src/components/border-radius-control/all-input-control.js +41 -4
  311. package/src/components/border-radius-control/index.js +25 -5
  312. package/src/components/border-radius-control/input-controls.js +40 -13
  313. package/src/components/border-radius-control/test/utils.js +22 -60
  314. package/src/components/border-radius-control/utils.js +12 -16
  315. package/src/components/button-block-appender/style.scss +23 -0
  316. package/src/components/colors/with-colors.js +11 -1
  317. package/src/components/colors-gradients/control.js +1 -0
  318. package/src/components/copy-handler/index.js +18 -0
  319. package/src/components/date-format-picker/index.js +12 -14
  320. package/src/components/date-format-picker/style.scss +0 -4
  321. package/src/components/duotone/components.js +5 -5
  322. package/src/components/duotone-control/style.scss +0 -4
  323. package/src/components/font-appearance-control/style.scss +0 -2
  324. package/src/components/font-family/index.js +1 -1
  325. package/src/components/font-sizes/with-font-sizes.js +11 -1
  326. package/src/components/index.js +1 -0
  327. package/src/components/inner-blocks/index.native.js +5 -1
  328. package/src/components/inserter/search-items.js +17 -5
  329. package/src/components/link-control/link-preview.js +0 -1
  330. package/src/components/link-control/test/index.js +540 -893
  331. package/src/components/list-view/block-select-button.js +7 -2
  332. package/src/components/list-view/style.scss +11 -4
  333. package/src/components/list-view/use-block-selection.js +2 -8
  334. package/src/components/media-replace-flow/style.scss +1 -0
  335. package/src/components/rich-text/index.js +9 -0
  336. package/src/components/rich-text/use-enter.js +0 -3
  337. package/src/components/rich-text/use-format-types.js +6 -6
  338. package/src/components/spacing-sizes-control/all-input-control.js +40 -0
  339. package/src/components/spacing-sizes-control/axial-input-controls.js +62 -0
  340. package/src/components/spacing-sizes-control/index.js +91 -0
  341. package/src/components/spacing-sizes-control/input-controls.js +46 -0
  342. package/src/components/spacing-sizes-control/linked-button.js +25 -0
  343. package/src/components/spacing-sizes-control/spacing-input-control.js +285 -0
  344. package/src/components/spacing-sizes-control/style.scss +122 -0
  345. package/src/components/spacing-sizes-control/test/utils.js +182 -0
  346. package/src/components/spacing-sizes-control/utils.js +222 -0
  347. package/src/components/text-decoration-control/index.js +41 -30
  348. package/src/components/text-decoration-control/stories/index.js +37 -0
  349. package/src/components/text-transform-control/index.js +27 -27
  350. package/src/components/text-transform-control/stories/index.js +37 -0
  351. package/src/components/url-input/index.js +1 -1
  352. package/src/components/url-input/style.scss +2 -2
  353. package/src/components/url-popover/style.scss +0 -3
  354. package/src/components/writing-flow/index.js +2 -0
  355. package/src/components/writing-flow/use-multi-selection.js +4 -1
  356. package/src/components/writing-flow/use-select-all.js +10 -13
  357. package/src/components/writing-flow/use-selection-observer.js +10 -2
  358. package/src/hooks/align.js +2 -2
  359. package/src/hooks/anchor.js +1 -6
  360. package/src/hooks/border-radius.js +2 -6
  361. package/src/hooks/border.js +2 -2
  362. package/src/hooks/color.js +13 -3
  363. package/src/hooks/dimensions.js +14 -0
  364. package/src/hooks/duotone.js +4 -4
  365. package/src/hooks/font-appearance.js +1 -0
  366. package/src/hooks/font-family.js +2 -0
  367. package/src/hooks/font-size.js +2 -0
  368. package/src/hooks/gap.js +42 -19
  369. package/src/hooks/generated-class-name.js +6 -9
  370. package/src/hooks/layout.js +47 -16
  371. package/src/hooks/letter-spacing.js +1 -0
  372. package/src/hooks/line-height.js +1 -0
  373. package/src/hooks/lock.js +1 -6
  374. package/src/hooks/margin.js +49 -17
  375. package/src/hooks/padding.js +41 -14
  376. package/src/hooks/style.js +5 -56
  377. package/src/hooks/test/gap.js +16 -0
  378. package/src/hooks/text-decoration.js +1 -0
  379. package/src/hooks/text-transform.js +1 -0
  380. package/src/hooks/typography.scss +0 -7
  381. package/src/layouts/constrained.js +220 -0
  382. package/src/layouts/flex.js +1 -1
  383. package/src/layouts/flow.js +17 -173
  384. package/src/layouts/index.js +2 -1
  385. package/src/layouts/test/constrained.js +21 -0
  386. package/src/layouts/utils.js +34 -0
  387. package/src/store/actions.js +32 -4
  388. package/src/store/selectors.js +5 -4
  389. package/src/style.scss +1 -2
  390. package/build/components/block-settings-menu/block-edit-visually-button.js +0 -70
  391. package/build/components/block-settings-menu/block-edit-visually-button.js.map +0 -1
  392. package/build-module/components/block-settings-menu/block-edit-visually-button.js +0 -56
  393. package/build-module/components/block-settings-menu/block-edit-visually-button.js.map +0 -1
  394. package/src/components/block-settings-menu/block-edit-visually-button.js +0 -52
  395. package/src/components/text-decoration-control/style.scss +0 -18
  396. package/src/components/text-transform-control/style.scss +0 -18
@@ -2,7 +2,7 @@
2
2
  * External dependencies
3
3
  */
4
4
  import classnames from 'classnames';
5
- import { has, kebabCase } from 'lodash';
5
+ import { kebabCase } from 'lodash';
6
6
 
7
7
  /**
8
8
  * WordPress dependencies
@@ -110,25 +110,37 @@ function LayoutPanel( { setAttributes, attributes, name: blockName } ) {
110
110
 
111
111
  // Only show the inherit toggle if it's supported,
112
112
  // a default theme layout is set (e.g. one that provides `contentSize` and/or `wideSize` values),
113
- // 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.
114
114
  const showInheritToggle = !! (
115
115
  allowInheriting &&
116
116
  !! defaultThemeLayout &&
117
- ( ! layout?.type || layout?.type === 'default' || layout?.inherit )
117
+ ( ! layout?.type ||
118
+ layout?.type === 'default' ||
119
+ layout?.type === 'constrained' ||
120
+ layout?.inherit )
118
121
  );
119
122
 
120
123
  const usedLayout = layout || defaultBlockLayout || {};
121
- const { inherit = false, type = 'default' } = usedLayout;
124
+ const {
125
+ inherit = false,
126
+ type = 'default',
127
+ contentSize = null,
128
+ } = usedLayout;
122
129
  /**
123
- * `themeSupportsLayout` is only relevant to the `default/flow`
124
- * 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
125
132
  * `layout` types are used.
126
133
  */
127
- if ( type === 'default' && ! themeSupportsLayout ) {
134
+ if (
135
+ ( type === 'default' || type === 'constrained' ) &&
136
+ ! themeSupportsLayout
137
+ ) {
128
138
  return null;
129
139
  }
130
140
  const layoutType = getLayoutType( type );
131
141
 
142
+ const constrainedType = getLayoutType( 'constrained' );
143
+
132
144
  const onChangeType = ( newType ) =>
133
145
  setAttributes( { layout: { type: newType } } );
134
146
  const onChangeLayout = ( newLayout ) =>
@@ -141,18 +153,29 @@ function LayoutPanel( { setAttributes, attributes, name: blockName } ) {
141
153
  { showInheritToggle && (
142
154
  <>
143
155
  <ToggleControl
144
- label={ __( 'Inner blocks use full width' ) }
145
- checked={ ! inherit }
156
+ label={ __(
157
+ 'Inner blocks respect content width'
158
+ ) }
159
+ checked={
160
+ layoutType?.name === 'constrained' ||
161
+ !! inherit ||
162
+ !! contentSize
163
+ }
146
164
  onChange={ () =>
147
165
  setAttributes( {
148
166
  layout: {
149
- inherit: ! inherit,
167
+ type:
168
+ layoutType?.name ===
169
+ 'constrained'
170
+ ? 'default'
171
+ : 'constrained',
150
172
  },
151
173
  } )
152
174
  }
153
175
  />
154
176
  <p className="block-editor-hooks__layout-controls-helptext">
155
- { !! inherit
177
+ { !! inherit ||
178
+ layoutType?.name === 'constrained'
156
179
  ? __(
157
180
  'Nested blocks use theme content width with options for full and wide widths.'
158
181
  )
@@ -170,13 +193,20 @@ function LayoutPanel( { setAttributes, attributes, name: blockName } ) {
170
193
  />
171
194
  ) }
172
195
 
173
- { ! inherit && layoutType && (
196
+ { layoutType && layoutType.name !== 'default' && (
174
197
  <layoutType.inspectorControls
175
198
  layout={ usedLayout }
176
199
  onChange={ onChangeLayout }
177
200
  layoutBlockSupport={ layoutBlockSupport }
178
201
  />
179
202
  ) }
203
+ { constrainedType && !! contentSize && (
204
+ <constrainedType.inspectorControls
205
+ layout={ usedLayout }
206
+ onChange={ onChangeLayout }
207
+ layoutBlockSupport={ layoutBlockSupport }
208
+ />
209
+ ) }
180
210
  </PanelBody>
181
211
  </InspectorControls>
182
212
  { ! inherit && layoutType && (
@@ -216,7 +246,7 @@ function LayoutTypeSwitcher( { type, onChange } ) {
216
246
  * @return {Object} Filtered block settings.
217
247
  */
218
248
  export function addAttribute( settings ) {
219
- if ( has( settings.attributes, [ 'layout', 'type' ] ) ) {
249
+ if ( 'type' in ( settings.attributes?.layout ?? {} ) ) {
220
250
  return settings;
221
251
  }
222
252
  if ( hasBlockSupport( settings, layoutBlockSupportKey ) ) {
@@ -280,9 +310,10 @@ export const withLayoutStyles = createHigherOrderComponent(
280
310
  const { layout } = attributes;
281
311
  const { default: defaultBlockLayout } =
282
312
  getBlockSupport( name, layoutBlockSupportKey ) || {};
283
- const usedLayout = layout?.inherit
284
- ? defaultThemeLayout
285
- : layout || defaultBlockLayout || {};
313
+ const usedLayout =
314
+ layout?.inherit || layout?.contentSize || layout?.wideSize
315
+ ? { ...layout, type: 'constrained' }
316
+ : layout || defaultBlockLayout || {};
286
317
  const layoutClasses = hasLayoutBlockSupport
287
318
  ? useLayoutClasses( usedLayout, defaultThemeLayout?.definitions )
288
319
  : null;
@@ -46,6 +46,7 @@ export function LetterSpacingEdit( props ) {
46
46
  value={ style?.typography?.letterSpacing }
47
47
  onChange={ onChange }
48
48
  __unstableInputWidth={ '100%' }
49
+ size="__unstable-large"
49
50
  />
50
51
  );
51
52
  }
@@ -42,6 +42,7 @@ export function LineHeightEdit( props ) {
42
42
  __nextHasNoMarginBottom={ true }
43
43
  value={ style?.typography?.lineHeight }
44
44
  onChange={ onChange }
45
+ size="__unstable-large"
45
46
  />
46
47
  );
47
48
  }
package/src/hooks/lock.js CHANGED
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { has } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -17,7 +12,7 @@ import { addFilter } from '@wordpress/hooks';
17
12
  */
18
13
  export function addAttribute( settings ) {
19
14
  // Allow blocks to specify their own attribute definition with default values if needed.
20
- if ( has( settings.attributes, [ 'lock', 'type' ] ) ) {
15
+ if ( 'type' in ( settings.attributes?.lock ?? {} ) ) {
21
16
  return settings;
22
17
  }
23
18
  // Gracefully handle if settings.attributes is undefined.
@@ -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
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { get, has, omit } from 'lodash';
4
+ import { omit } from 'lodash';
5
5
  import classnames from 'classnames';
6
6
 
7
7
  /**
@@ -12,14 +12,10 @@ import { addFilter } from '@wordpress/hooks';
12
12
  import {
13
13
  getBlockSupport,
14
14
  hasBlockSupport,
15
- __EXPERIMENTAL_STYLE_PROPERTY as STYLE_PROPERTY,
16
15
  __EXPERIMENTAL_ELEMENTS as ELEMENTS,
17
16
  } from '@wordpress/blocks';
18
17
  import { createHigherOrderComponent, useInstanceId } from '@wordpress/compose';
19
- import {
20
- getCSSRules,
21
- generate as generateStyles,
22
- } from '@wordpress/style-engine';
18
+ import { getCSSRules, compileCSS } from '@wordpress/style-engine';
23
19
 
24
20
  /**
25
21
  * Internal dependencies
@@ -46,20 +42,6 @@ const styleSupportKeys = [
46
42
  const hasStyleSupport = ( blockType ) =>
47
43
  styleSupportKeys.some( ( key ) => hasBlockSupport( blockType, key ) );
48
44
 
49
- const VARIABLE_REFERENCE_PREFIX = 'var:';
50
- const VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE = '|';
51
- const VARIABLE_PATH_SEPARATOR_TOKEN_STYLE = '--';
52
- function compileStyleValue( uncompiledValue ) {
53
- if ( uncompiledValue?.startsWith?.( VARIABLE_REFERENCE_PREFIX ) ) {
54
- const variable = uncompiledValue
55
- .slice( VARIABLE_REFERENCE_PREFIX.length )
56
- .split( VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE )
57
- .join( VARIABLE_PATH_SEPARATOR_TOKEN_STYLE );
58
- return `var(--wp--${ variable })`;
59
- }
60
- return uncompiledValue;
61
- }
62
-
63
45
  /**
64
46
  * Returns the inline styles to add depending on the style object
65
47
  *
@@ -68,43 +50,10 @@ function compileStyleValue( uncompiledValue ) {
68
50
  * @return {Object} Flattened CSS variables declaration.
69
51
  */
70
52
  export function getInlineStyles( styles = {} ) {
71
- const ignoredStyles = [ 'spacing.blockGap' ];
72
53
  const output = {};
73
- Object.keys( STYLE_PROPERTY ).forEach( ( propKey ) => {
74
- if ( STYLE_PROPERTY[ propKey ].rootOnly ) {
75
- return;
76
- }
77
- const path = STYLE_PROPERTY[ propKey ].value;
78
- const subPaths = STYLE_PROPERTY[ propKey ].properties;
79
- // Ignore styles on elements because they are handled on the server.
80
- if ( has( styles, path ) && 'elements' !== path?.[ 0 ] ) {
81
- // Checking if style value is a string allows for shorthand css
82
- // option and backwards compatibility for border radius support.
83
- const styleValue = get( styles, path );
84
-
85
- if ( ! STYLE_PROPERTY[ propKey ].useEngine ) {
86
- if ( !! subPaths && typeof styleValue !== 'string' ) {
87
- Object.entries( subPaths ).forEach( ( entry ) => {
88
- const [ name, subPath ] = entry;
89
- const value = get( styleValue, [ subPath ] );
90
-
91
- if ( value ) {
92
- output[ name ] = compileStyleValue( value );
93
- }
94
- } );
95
- } else if ( ! ignoredStyles.includes( path.join( '.' ) ) ) {
96
- output[ propKey ] = compileStyleValue(
97
- get( styles, path )
98
- );
99
- }
100
- }
101
- }
102
- } );
103
-
104
54
  // The goal is to move everything to server side generated engine styles
105
55
  // This is temporary as we absorb more and more styles into the engine.
106
- const extraRules = getCSSRules( styles );
107
- extraRules.forEach( ( rule ) => {
56
+ getCSSRules( styles ).forEach( ( rule ) => {
108
57
  output[ rule.key ] = rule.value;
109
58
  } );
110
59
 
@@ -290,7 +239,7 @@ export const withBlockControls = createHigherOrderComponent(
290
239
  );
291
240
 
292
241
  /**
293
- * Override the default block element to include duotone styles.
242
+ * Override the default block element to include elements styles.
294
243
  *
295
244
  * @param {Function} BlockListBlock Original component
296
245
  * @return {Function} Wrapped component
@@ -328,7 +277,7 @@ const withElementsStyles = createHigherOrderComponent(
328
277
  for ( const [ elementName, elementStyles ] of Object.entries(
329
278
  filteredElementsStyles
330
279
  ) ) {
331
- const cssRule = generateStyles( elementStyles, {
280
+ const cssRule = compileCSS( elementStyles, {
332
281
  // The .editor-styles-wrapper selector is required on elements styles. As it is
333
282
  // added to all other editor styles, not providing it causes reset and global
334
283
  // styles to override element styles because of higher specificity.
@@ -62,5 +62,21 @@ describe( 'gap', () => {
62
62
  '88px 1px'
63
63
  );
64
64
  } );
65
+
66
+ it( 'should unwrap var: values from a string into a CSS var() function', () => {
67
+ expect( getGapCSSValue( 'var:preset|spacing|60' ) ).toEqual(
68
+ 'var(--wp--preset--spacing--60)'
69
+ );
70
+ } );
71
+
72
+ it( 'should unwrap var: values from an object into a CSS var() function and return shorthand values', () => {
73
+ const blockGapValue = {
74
+ top: 'var:preset|spacing|20',
75
+ left: 'var:preset|spacing|60',
76
+ };
77
+ expect( getGapCSSValue( blockGapValue ) ).toEqual(
78
+ 'var(--wp--preset--spacing--20) var(--wp--preset--spacing--60)'
79
+ );
80
+ } );
65
81
  } );
66
82
  } );
@@ -46,6 +46,7 @@ export function TextDecorationEdit( props ) {
46
46
  <TextDecorationControl
47
47
  value={ style?.typography?.textDecoration }
48
48
  onChange={ onChange }
49
+ size="__unstable-large"
49
50
  />
50
51
  );
51
52
  }
@@ -46,6 +46,7 @@ export function TextTransformEdit( props ) {
46
46
  <TextTransformControl
47
47
  value={ style?.typography?.textTransform }
48
48
  onChange={ onChange }
49
+ size="__unstable-large"
49
50
  />
50
51
  );
51
52
  }
@@ -1,11 +1,4 @@
1
1
  .typography-block-support-panel {
2
- .components-font-appearance-control,
3
- .components-font-size-picker__controls,
4
- .block-editor-text-decoration-control__buttons,
5
- .block-editor-text-transform-control__buttons {
6
- margin-bottom: 0;
7
- }
8
-
9
2
  .single-column {
10
3
  grid-column: span 1;
11
4
  }