@wordpress/block-editor 11.2.0 → 11.3.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 (660) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +28 -4
  3. package/build/components/alignment-control/ui.js +1 -1
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/autocomplete/index.js +2 -7
  6. package/build/components/autocomplete/index.js.map +1 -1
  7. package/build/components/block-alignment-matrix-control/index.js +2 -2
  8. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  9. package/build/components/block-card/index.js +2 -4
  10. package/build/components/block-card/index.js.map +1 -1
  11. package/build/components/block-edit/index.js +8 -0
  12. package/build/components/block-edit/index.js.map +1 -1
  13. package/build/components/block-inspector/index.js +15 -14
  14. package/build/components/block-inspector/index.js.map +1 -1
  15. package/build/components/block-list/use-in-between-inserter.js +5 -0
  16. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  17. package/build/components/block-lock/modal.js +0 -1
  18. package/build/components/block-lock/modal.js.map +1 -1
  19. package/build/components/block-mover/mover-description.js +2 -2
  20. package/build/components/block-mover/mover-description.js.map +1 -1
  21. package/build/components/block-navigation/dropdown.js +3 -1
  22. package/build/components/block-navigation/dropdown.js.map +1 -1
  23. package/build/components/block-pattern-setup/index.js +1 -1
  24. package/build/components/block-pattern-setup/index.js.map +1 -1
  25. package/build/components/block-pattern-setup/use-patterns-setup.js +2 -2
  26. package/build/components/block-pattern-setup/use-patterns-setup.js.map +1 -1
  27. package/build/components/block-patterns-list/index.js +31 -3
  28. package/build/components/block-patterns-list/index.js.map +1 -1
  29. package/build/components/block-preview/auto.js +9 -11
  30. package/build/components/block-preview/auto.js.map +1 -1
  31. package/build/components/block-preview/index.js +32 -8
  32. package/build/components/block-preview/index.js.map +1 -1
  33. package/build/components/block-selection-clearer/index.js +1 -1
  34. package/build/components/block-selection-clearer/index.js.map +1 -1
  35. package/build/components/block-settings/container.native.js +7 -33
  36. package/build/components/block-settings/container.native.js.map +1 -1
  37. package/build/components/block-settings-menu/block-settings-dropdown.js +12 -6
  38. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  39. package/build/components/block-settings-menu-controls/index.js +2 -8
  40. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  41. package/build/components/block-switcher/utils.js +1 -1
  42. package/build/components/block-switcher/utils.js.map +1 -1
  43. package/build/components/block-tools/selected-block-popover.js +55 -47
  44. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  45. package/build/components/block-vertical-alignment-control/icons.js +15 -1
  46. package/build/components/block-vertical-alignment-control/icons.js.map +1 -1
  47. package/build/components/block-vertical-alignment-control/ui.js +9 -4
  48. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  49. package/build/components/color-style-selector/index.js +3 -1
  50. package/build/components/color-style-selector/index.js.map +1 -1
  51. package/build/components/date-format-picker/index.js +3 -4
  52. package/build/components/date-format-picker/index.js.map +1 -1
  53. package/build/components/font-family/index.js +1 -7
  54. package/build/components/font-family/index.js.map +1 -1
  55. package/build/components/font-sizes/fluid-utils.js +1 -1
  56. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  57. package/build/components/font-sizes/utils.js +1 -1
  58. package/build/components/font-sizes/utils.js.map +1 -1
  59. package/build/components/global-styles/context.js +22 -0
  60. package/build/components/global-styles/context.js.map +1 -0
  61. package/build/components/global-styles/hooks.js +142 -0
  62. package/build/components/global-styles/hooks.js.map +1 -0
  63. package/build/components/global-styles/index.js +42 -0
  64. package/build/components/global-styles/index.js.map +1 -0
  65. package/build/components/global-styles/typography-utils.js +92 -0
  66. package/build/components/global-styles/typography-utils.js.map +1 -0
  67. package/build/components/global-styles/use-global-styles-output.js +974 -0
  68. package/build/components/global-styles/use-global-styles-output.js.map +1 -0
  69. package/build/components/global-styles/utils.js +340 -0
  70. package/build/components/global-styles/utils.js.map +1 -0
  71. package/build/components/height-control/index.js +13 -1
  72. package/build/components/height-control/index.js.map +1 -1
  73. package/build/components/image-editor/constants.js +1 -1
  74. package/build/components/image-editor/constants.js.map +1 -1
  75. package/build/components/image-editor/context.js +1 -2
  76. package/build/components/image-editor/context.js.map +1 -1
  77. package/build/components/image-editor/cropper.js +3 -1
  78. package/build/components/image-editor/cropper.js.map +1 -1
  79. package/build/components/image-editor/index.js +13 -9
  80. package/build/components/image-editor/index.js.map +1 -1
  81. package/build/components/image-editor/use-transform-image.js +11 -35
  82. package/build/components/image-editor/use-transform-image.js.map +1 -1
  83. package/build/components/image-size-control/index.js +1 -7
  84. package/build/components/image-size-control/index.js.map +1 -1
  85. package/build/components/index.js +8 -24
  86. package/build/components/index.js.map +1 -1
  87. package/build/components/inner-blocks/index.js +22 -32
  88. package/build/components/inner-blocks/index.js.map +1 -1
  89. package/build/components/inner-blocks/index.native.js +8 -23
  90. package/build/components/inner-blocks/index.native.js.map +1 -1
  91. package/build/components/inner-blocks/use-block-context.js +53 -0
  92. package/build/components/inner-blocks/use-block-context.js.map +1 -0
  93. package/build/components/inserter/block-patterns-explorer/explorer.js +0 -1
  94. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  95. package/build/components/inserter/block-patterns-tab.js +7 -1
  96. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  97. package/build/components/inserter/block-types-tab.js +2 -2
  98. package/build/components/inserter/block-types-tab.js.map +1 -1
  99. package/build/components/inserter/hooks/use-patterns-state.js +1 -7
  100. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  101. package/build/components/inserter/index.js +5 -4
  102. package/build/components/inserter/index.js.map +1 -1
  103. package/build/components/inserter/media-tab/hooks.js +142 -56
  104. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  105. package/build/components/inserter/media-tab/media-list.js +74 -21
  106. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  107. package/build/components/inserter/media-tab/media-panel.js +11 -13
  108. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  109. package/build/components/inserter/media-tab/media-tab.js +6 -3
  110. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  111. package/build/components/inserter/media-tab/utils.js +26 -15
  112. package/build/components/inserter/media-tab/utils.js.map +1 -1
  113. package/build/components/inserter/menu.js +1 -0
  114. package/build/components/inserter/menu.js.map +1 -1
  115. package/build/components/inserter/preview-panel.js +5 -3
  116. package/build/components/inserter/preview-panel.js.map +1 -1
  117. package/build/components/inserter/search-results.js +2 -7
  118. package/build/components/inserter/search-results.js.map +1 -1
  119. package/build/components/inserter-list-item/index.js +1 -9
  120. package/build/components/inserter-list-item/index.js.map +1 -1
  121. package/build/components/inspector-controls/fill.js +15 -2
  122. package/build/components/inspector-controls/fill.js.map +1 -1
  123. package/build/components/inspector-controls/fill.native.js +14 -1
  124. package/build/components/inspector-controls/fill.native.js.map +1 -1
  125. package/build/components/inspector-controls/groups.js +4 -0
  126. package/build/components/inspector-controls/groups.js.map +1 -1
  127. package/build/components/inspector-controls/index.js +2 -2
  128. package/build/components/inspector-controls/index.js.map +1 -1
  129. package/build/components/inspector-controls/slot.js +14 -1
  130. package/build/components/inspector-controls/slot.js.map +1 -1
  131. package/build/components/inspector-controls/slot.native.js +14 -1
  132. package/build/components/inspector-controls/slot.native.js.map +1 -1
  133. package/build/components/inspector-controls-tabs/advanced-controls-panel.js +1 -1
  134. package/build/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -1
  135. package/build/components/inspector-controls-tabs/index.js +2 -2
  136. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  137. package/build/components/inspector-controls-tabs/position-controls-panel.js +1 -1
  138. package/build/components/inspector-controls-tabs/position-controls-panel.js.map +1 -1
  139. package/build/components/inspector-controls-tabs/styles-tab.js +6 -4
  140. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  141. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +17 -12
  142. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  143. package/build/components/justify-content-control/ui.js +8 -1
  144. package/build/components/justify-content-control/ui.js.map +1 -1
  145. package/build/components/link-control/index.js +45 -17
  146. package/build/components/link-control/index.js.map +1 -1
  147. package/build/components/list-view/block.js +1 -1
  148. package/build/components/list-view/block.js.map +1 -1
  149. package/build/components/list-view/use-list-view-drop-zone.js +1 -1
  150. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  151. package/build/components/media-upload/index.native.js +4 -1
  152. package/build/components/media-upload/index.native.js.map +1 -1
  153. package/build/components/off-canvas-editor/appender.js +50 -3
  154. package/build/components/off-canvas-editor/appender.js.map +1 -1
  155. package/build/components/off-canvas-editor/block-select-button.js +10 -4
  156. package/build/components/off-canvas-editor/block-select-button.js.map +1 -1
  157. package/build/components/off-canvas-editor/block.js +6 -27
  158. package/build/components/off-canvas-editor/block.js.map +1 -1
  159. package/build/components/off-canvas-editor/branch.js +25 -10
  160. package/build/components/off-canvas-editor/branch.js.map +1 -1
  161. package/build/components/off-canvas-editor/index.js +11 -16
  162. package/build/components/off-canvas-editor/index.js.map +1 -1
  163. package/build/components/off-canvas-editor/link-ui.js +2 -2
  164. package/build/components/off-canvas-editor/link-ui.js.map +1 -1
  165. package/build/components/off-canvas-editor/use-list-view-drop-zone.js +1 -1
  166. package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -1
  167. package/build/components/provider/index.js +21 -9
  168. package/build/components/provider/index.js.map +1 -1
  169. package/build/components/provider/index.native.js +5 -6
  170. package/build/components/provider/index.native.js.map +1 -1
  171. package/build/components/rich-text/use-before-input-rules.js +11 -3
  172. package/build/components/rich-text/use-before-input-rules.js.map +1 -1
  173. package/build/components/rich-text/utils.js +1 -1
  174. package/build/components/rich-text/utils.js.map +1 -1
  175. package/build/components/spacing-sizes-control/utils.js +2 -8
  176. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  177. package/build/components/tool-selector/index.js +3 -1
  178. package/build/components/tool-selector/index.js.map +1 -1
  179. package/build/components/url-popover/image-url-input-ui.js +7 -8
  180. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  181. package/build/components/use-block-display-information/index.js +1 -1
  182. package/build/components/use-block-display-information/index.js.map +1 -1
  183. package/build/experiments.js +45 -0
  184. package/build/experiments.js.map +1 -0
  185. package/build/experiments.native.js +40 -0
  186. package/build/experiments.native.js.map +1 -0
  187. package/build/hooks/anchor.js +2 -1
  188. package/build/hooks/anchor.js.map +1 -1
  189. package/build/hooks/border.js +1 -1
  190. package/build/hooks/border.js.map +1 -1
  191. package/build/hooks/child-layout.js +5 -1
  192. package/build/hooks/child-layout.js.map +1 -1
  193. package/build/hooks/color-panel.js +1 -1
  194. package/build/hooks/color-panel.js.map +1 -1
  195. package/build/hooks/color.js +3 -3
  196. package/build/hooks/color.js.map +1 -1
  197. package/build/hooks/custom-class-name.js +2 -1
  198. package/build/hooks/custom-class-name.js.map +1 -1
  199. package/build/hooks/dimensions.js +7 -5
  200. package/build/hooks/dimensions.js.map +1 -1
  201. package/build/hooks/margin.js +1 -0
  202. package/build/hooks/margin.js.map +1 -1
  203. package/build/hooks/padding.js +1 -0
  204. package/build/hooks/padding.js.map +1 -1
  205. package/build/hooks/position.js +34 -15
  206. package/build/hooks/position.js.map +1 -1
  207. package/build/hooks/typography.js +1 -1
  208. package/build/hooks/typography.js.map +1 -1
  209. package/build/hooks/use-color-props.js +3 -3
  210. package/build/hooks/use-color-props.js.map +1 -1
  211. package/build/hooks/utils.js +69 -3
  212. package/build/hooks/utils.js.map +1 -1
  213. package/build/index.js +10 -1
  214. package/build/index.js.map +1 -1
  215. package/build/layouts/constrained.js +3 -0
  216. package/build/layouts/constrained.js.map +1 -1
  217. package/build/layouts/flex.js +59 -9
  218. package/build/layouts/flex.js.map +1 -1
  219. package/build/layouts/flow.js +0 -18
  220. package/build/layouts/flow.js.map +1 -1
  221. package/build/store/actions.js +3 -30
  222. package/build/store/actions.js.map +1 -1
  223. package/build/store/defaults.js +5 -2
  224. package/build/store/defaults.js.map +1 -1
  225. package/build/store/index.js +11 -2
  226. package/build/store/index.js.map +1 -1
  227. package/build/store/private-actions.js +78 -0
  228. package/build/store/private-actions.js.map +1 -0
  229. package/build/store/private-selectors.js +18 -0
  230. package/build/store/private-selectors.js.map +1 -0
  231. package/build/store/reducer.js +1 -1
  232. package/build/store/reducer.js.map +1 -1
  233. package/build/store/selectors.js +60 -34
  234. package/build/store/selectors.js.map +1 -1
  235. package/build/utils/block-variation-transforms.js +1 -1
  236. package/build/utils/block-variation-transforms.js.map +1 -1
  237. package/build/utils/parse-css-unit-to-px.js +1 -1
  238. package/build/utils/parse-css-unit-to-px.js.map +1 -1
  239. package/build/utils/transform-styles/index.js +1 -7
  240. package/build/utils/transform-styles/index.js.map +1 -1
  241. package/build-module/components/alignment-control/ui.js +1 -1
  242. package/build-module/components/alignment-control/ui.js.map +1 -1
  243. package/build-module/components/autocomplete/index.js +2 -6
  244. package/build-module/components/autocomplete/index.js.map +1 -1
  245. package/build-module/components/block-alignment-matrix-control/index.js +2 -2
  246. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  247. package/build-module/components/block-card/index.js +2 -4
  248. package/build-module/components/block-card/index.js.map +1 -1
  249. package/build-module/components/block-edit/index.js +7 -0
  250. package/build-module/components/block-edit/index.js.map +1 -1
  251. package/build-module/components/block-inspector/index.js +15 -14
  252. package/build-module/components/block-inspector/index.js.map +1 -1
  253. package/build-module/components/block-list/use-in-between-inserter.js +5 -0
  254. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  255. package/build-module/components/block-lock/modal.js +0 -1
  256. package/build-module/components/block-lock/modal.js.map +1 -1
  257. package/build-module/components/block-mover/mover-description.js +2 -2
  258. package/build-module/components/block-mover/mover-description.js.map +1 -1
  259. package/build-module/components/block-navigation/dropdown.js +3 -1
  260. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  261. package/build-module/components/block-pattern-setup/index.js +1 -1
  262. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  263. package/build-module/components/block-pattern-setup/use-patterns-setup.js +2 -2
  264. package/build-module/components/block-pattern-setup/use-patterns-setup.js.map +1 -1
  265. package/build-module/components/block-patterns-list/index.js +32 -3
  266. package/build-module/components/block-patterns-list/index.js.map +1 -1
  267. package/build-module/components/block-preview/auto.js +9 -11
  268. package/build-module/components/block-preview/auto.js.map +1 -1
  269. package/build-module/components/block-preview/index.js +31 -8
  270. package/build-module/components/block-preview/index.js.map +1 -1
  271. package/build-module/components/block-selection-clearer/index.js +1 -1
  272. package/build-module/components/block-selection-clearer/index.js.map +1 -1
  273. package/build-module/components/block-settings/container.native.js +6 -30
  274. package/build-module/components/block-settings/container.native.js.map +1 -1
  275. package/build-module/components/block-settings-menu/block-settings-dropdown.js +12 -6
  276. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  277. package/build-module/components/block-settings-menu-controls/index.js +2 -7
  278. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  279. package/build-module/components/block-switcher/utils.js +1 -1
  280. package/build-module/components/block-switcher/utils.js.map +1 -1
  281. package/build-module/components/block-tools/selected-block-popover.js +55 -48
  282. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  283. package/build-module/components/block-vertical-alignment-control/icons.js +12 -0
  284. package/build-module/components/block-vertical-alignment-control/icons.js.map +1 -1
  285. package/build-module/components/block-vertical-alignment-control/ui.js +10 -5
  286. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  287. package/build-module/components/color-style-selector/index.js +3 -1
  288. package/build-module/components/color-style-selector/index.js.map +1 -1
  289. package/build-module/components/date-format-picker/index.js +4 -5
  290. package/build-module/components/date-format-picker/index.js.map +1 -1
  291. package/build-module/components/font-family/index.js +1 -6
  292. package/build-module/components/font-family/index.js.map +1 -1
  293. package/build-module/components/font-sizes/fluid-utils.js +1 -1
  294. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  295. package/build-module/components/font-sizes/utils.js +1 -1
  296. package/build-module/components/font-sizes/utils.js.map +1 -1
  297. package/build-module/components/global-styles/context.js +12 -0
  298. package/build-module/components/global-styles/context.js.map +1 -0
  299. package/build-module/components/global-styles/hooks.js +121 -0
  300. package/build-module/components/global-styles/hooks.js.map +1 -0
  301. package/build-module/components/global-styles/index.js +4 -0
  302. package/build-module/components/global-styles/index.js.map +1 -0
  303. package/build-module/components/global-styles/typography-utils.js +84 -0
  304. package/build-module/components/global-styles/typography-utils.js.map +1 -0
  305. package/build-module/components/global-styles/use-global-styles-output.js +930 -0
  306. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -0
  307. package/build-module/components/global-styles/utils.js +321 -0
  308. package/build-module/components/global-styles/utils.js.map +1 -0
  309. package/build-module/components/height-control/index.js +14 -1
  310. package/build-module/components/height-control/index.js.map +1 -1
  311. package/build-module/components/image-editor/constants.js +1 -1
  312. package/build-module/components/image-editor/constants.js.map +1 -1
  313. package/build-module/components/image-editor/context.js +1 -2
  314. package/build-module/components/image-editor/context.js.map +1 -1
  315. package/build-module/components/image-editor/cropper.js +3 -1
  316. package/build-module/components/image-editor/cropper.js.map +1 -1
  317. package/build-module/components/image-editor/index.js +13 -3
  318. package/build-module/components/image-editor/index.js.map +1 -1
  319. package/build-module/components/image-editor/use-transform-image.js +12 -37
  320. package/build-module/components/image-editor/use-transform-image.js.map +1 -1
  321. package/build-module/components/image-size-control/index.js +1 -6
  322. package/build-module/components/image-size-control/index.js.map +1 -1
  323. package/build-module/components/index.js +2 -3
  324. package/build-module/components/index.js.map +1 -1
  325. package/build-module/components/inner-blocks/index.js +21 -32
  326. package/build-module/components/inner-blocks/index.js.map +1 -1
  327. package/build-module/components/inner-blocks/index.native.js +9 -22
  328. package/build-module/components/inner-blocks/index.native.js.map +1 -1
  329. package/build-module/components/inner-blocks/use-block-context.js +43 -0
  330. package/build-module/components/inner-blocks/use-block-context.js.map +1 -0
  331. package/build-module/components/inserter/block-patterns-explorer/explorer.js +0 -1
  332. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  333. package/build-module/components/inserter/block-patterns-tab.js +7 -1
  334. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  335. package/build-module/components/inserter/block-types-tab.js +3 -3
  336. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  337. package/build-module/components/inserter/hooks/use-patterns-state.js +1 -6
  338. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  339. package/build-module/components/inserter/index.js +5 -4
  340. package/build-module/components/inserter/index.js.map +1 -1
  341. package/build-module/components/inserter/media-tab/hooks.js +145 -56
  342. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  343. package/build-module/components/inserter/media-tab/media-list.js +74 -24
  344. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  345. package/build-module/components/inserter/media-tab/media-panel.js +14 -14
  346. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  347. package/build-module/components/inserter/media-tab/media-tab.js +7 -4
  348. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  349. package/build-module/components/inserter/media-tab/utils.js +27 -15
  350. package/build-module/components/inserter/media-tab/utils.js.map +1 -1
  351. package/build-module/components/inserter/menu.js +1 -0
  352. package/build-module/components/inserter/menu.js.map +1 -1
  353. package/build-module/components/inserter/preview-panel.js +5 -3
  354. package/build-module/components/inserter/preview-panel.js.map +1 -1
  355. package/build-module/components/inserter/search-results.js +2 -6
  356. package/build-module/components/inserter/search-results.js.map +1 -1
  357. package/build-module/components/inserter-list-item/index.js +1 -9
  358. package/build-module/components/inserter-list-item/index.js.map +1 -1
  359. package/build-module/components/inspector-controls/fill.js +14 -2
  360. package/build-module/components/inspector-controls/fill.js.map +1 -1
  361. package/build-module/components/inspector-controls/fill.native.js +13 -1
  362. package/build-module/components/inspector-controls/fill.native.js.map +1 -1
  363. package/build-module/components/inspector-controls/groups.js +4 -0
  364. package/build-module/components/inspector-controls/groups.js.map +1 -1
  365. package/build-module/components/inspector-controls/index.js +2 -2
  366. package/build-module/components/inspector-controls/index.js.map +1 -1
  367. package/build-module/components/inspector-controls/slot.js +13 -1
  368. package/build-module/components/inspector-controls/slot.js.map +1 -1
  369. package/build-module/components/inspector-controls/slot.native.js +13 -1
  370. package/build-module/components/inspector-controls/slot.native.js.map +1 -1
  371. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js +1 -1
  372. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -1
  373. package/build-module/components/inspector-controls-tabs/index.js +2 -2
  374. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  375. package/build-module/components/inspector-controls-tabs/position-controls-panel.js +1 -1
  376. package/build-module/components/inspector-controls-tabs/position-controls-panel.js.map +1 -1
  377. package/build-module/components/inspector-controls-tabs/styles-tab.js +6 -4
  378. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  379. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +17 -12
  380. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  381. package/build-module/components/justify-content-control/ui.js +9 -2
  382. package/build-module/components/justify-content-control/ui.js.map +1 -1
  383. package/build-module/components/link-control/index.js +45 -16
  384. package/build-module/components/link-control/index.js.map +1 -1
  385. package/build-module/components/list-view/block.js +1 -1
  386. package/build-module/components/list-view/block.js.map +1 -1
  387. package/build-module/components/list-view/use-list-view-drop-zone.js +1 -1
  388. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  389. package/build-module/components/media-upload/index.native.js +4 -1
  390. package/build-module/components/media-upload/index.native.js.map +1 -1
  391. package/build-module/components/off-canvas-editor/appender.js +47 -4
  392. package/build-module/components/off-canvas-editor/appender.js.map +1 -1
  393. package/build-module/components/off-canvas-editor/block-select-button.js +9 -4
  394. package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -1
  395. package/build-module/components/off-canvas-editor/block.js +6 -25
  396. package/build-module/components/off-canvas-editor/block.js.map +1 -1
  397. package/build-module/components/off-canvas-editor/branch.js +23 -11
  398. package/build-module/components/off-canvas-editor/branch.js.map +1 -1
  399. package/build-module/components/off-canvas-editor/index.js +11 -15
  400. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  401. package/build-module/components/off-canvas-editor/link-ui.js +2 -2
  402. package/build-module/components/off-canvas-editor/link-ui.js.map +1 -1
  403. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +1 -1
  404. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -1
  405. package/build-module/components/provider/index.js +16 -9
  406. package/build-module/components/provider/index.js.map +1 -1
  407. package/build-module/components/provider/index.native.js +4 -4
  408. package/build-module/components/provider/index.native.js.map +1 -1
  409. package/build-module/components/rich-text/use-before-input-rules.js +10 -2
  410. package/build-module/components/rich-text/use-before-input-rules.js.map +1 -1
  411. package/build-module/components/rich-text/utils.js +1 -1
  412. package/build-module/components/rich-text/utils.js.map +1 -1
  413. package/build-module/components/spacing-sizes-control/utils.js +2 -7
  414. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  415. package/build-module/components/tool-selector/index.js +3 -1
  416. package/build-module/components/tool-selector/index.js.map +1 -1
  417. package/build-module/components/url-popover/image-url-input-ui.js +8 -8
  418. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  419. package/build-module/components/use-block-display-information/index.js +1 -1
  420. package/build-module/components/use-block-display-information/index.js.map +1 -1
  421. package/build-module/experiments.js +25 -0
  422. package/build-module/experiments.js.map +1 -0
  423. package/build-module/experiments.native.js +23 -0
  424. package/build-module/experiments.native.js.map +1 -0
  425. package/build-module/hooks/anchor.js +2 -1
  426. package/build-module/hooks/anchor.js.map +1 -1
  427. package/build-module/hooks/border.js +1 -1
  428. package/build-module/hooks/border.js.map +1 -1
  429. package/build-module/hooks/child-layout.js +5 -1
  430. package/build-module/hooks/child-layout.js.map +1 -1
  431. package/build-module/hooks/color-panel.js +1 -1
  432. package/build-module/hooks/color-panel.js.map +1 -1
  433. package/build-module/hooks/color.js +3 -3
  434. package/build-module/hooks/color.js.map +1 -1
  435. package/build-module/hooks/custom-class-name.js +2 -1
  436. package/build-module/hooks/custom-class-name.js.map +1 -1
  437. package/build-module/hooks/dimensions.js +6 -5
  438. package/build-module/hooks/dimensions.js.map +1 -1
  439. package/build-module/hooks/margin.js +1 -0
  440. package/build-module/hooks/margin.js.map +1 -1
  441. package/build-module/hooks/padding.js +1 -0
  442. package/build-module/hooks/padding.js.map +1 -1
  443. package/build-module/hooks/position.js +31 -14
  444. package/build-module/hooks/position.js.map +1 -1
  445. package/build-module/hooks/typography.js +1 -1
  446. package/build-module/hooks/typography.js.map +1 -1
  447. package/build-module/hooks/use-color-props.js +3 -3
  448. package/build-module/hooks/use-color-props.js.map +1 -1
  449. package/build-module/hooks/utils.js +70 -4
  450. package/build-module/hooks/utils.js.map +1 -1
  451. package/build-module/index.js +1 -0
  452. package/build-module/index.js.map +1 -1
  453. package/build-module/layouts/constrained.js +3 -0
  454. package/build-module/layouts/constrained.js.map +1 -1
  455. package/build-module/layouts/flex.js +60 -10
  456. package/build-module/layouts/flex.js.map +1 -1
  457. package/build-module/layouts/flow.js +0 -18
  458. package/build-module/layouts/flow.js.map +1 -1
  459. package/build-module/store/actions.js +2 -26
  460. package/build-module/store/actions.js.map +1 -1
  461. package/build-module/store/defaults.js +5 -2
  462. package/build-module/store/defaults.js.map +1 -1
  463. package/build-module/store/index.js +8 -2
  464. package/build-module/store/index.js.map +1 -1
  465. package/build-module/store/private-actions.js +66 -0
  466. package/build-module/store/private-actions.js.map +1 -0
  467. package/build-module/store/private-selectors.js +11 -0
  468. package/build-module/store/private-selectors.js.map +1 -0
  469. package/build-module/store/reducer.js +1 -1
  470. package/build-module/store/reducer.js.map +1 -1
  471. package/build-module/store/selectors.js +48 -25
  472. package/build-module/store/selectors.js.map +1 -1
  473. package/build-module/utils/block-variation-transforms.js +1 -1
  474. package/build-module/utils/block-variation-transforms.js.map +1 -1
  475. package/build-module/utils/parse-css-unit-to-px.js +1 -1
  476. package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
  477. package/build-module/utils/transform-styles/index.js +1 -6
  478. package/build-module/utils/transform-styles/index.js.map +1 -1
  479. package/build-style/content-rtl.css +283 -3
  480. package/build-style/content.css +283 -3
  481. package/build-style/style-rtl.css +105 -221
  482. package/build-style/style.css +105 -221
  483. package/package.json +30 -29
  484. package/src/components/alignment-control/test/__snapshots__/index.js.snap +3 -3
  485. package/src/components/alignment-control/test/index.js +5 -15
  486. package/src/components/alignment-control/ui.js +1 -1
  487. package/src/components/autocomplete/index.js +3 -6
  488. package/src/components/block-alignment-control/test/index.js +3 -11
  489. package/src/components/block-alignment-matrix-control/index.js +1 -2
  490. package/src/components/block-card/index.js +1 -4
  491. package/src/components/block-content-overlay/content.scss +4 -4
  492. package/src/components/block-edit/index.js +15 -1
  493. package/src/components/block-icon/content.scss +31 -0
  494. package/src/components/block-inspector/index.js +13 -17
  495. package/src/components/block-list/use-in-between-inserter.js +5 -0
  496. package/src/components/block-lock/modal.js +0 -1
  497. package/src/components/block-mover/mover-description.js +2 -2
  498. package/src/components/block-mover/stories/index.js +3 -3
  499. package/src/components/block-navigation/dropdown.js +1 -1
  500. package/src/components/block-pattern-setup/index.js +1 -4
  501. package/src/components/block-pattern-setup/use-patterns-setup.js +2 -5
  502. package/src/components/block-patterns-list/index.js +29 -3
  503. package/src/components/block-preview/README.md +9 -9
  504. package/src/components/block-preview/auto.js +9 -11
  505. package/src/components/block-preview/content.scss +23 -0
  506. package/src/components/block-preview/index.js +40 -10
  507. package/src/components/block-preview/style.scss +0 -23
  508. package/src/components/block-selection-clearer/index.js +1 -1
  509. package/src/components/block-selection-clearer/test/index.js +6 -6
  510. package/src/components/block-settings/container.native.js +7 -26
  511. package/src/components/block-settings-menu/block-settings-dropdown.js +13 -5
  512. package/src/components/block-settings-menu-controls/index.js +2 -10
  513. package/src/components/block-switcher/test/index.js +43 -44
  514. package/src/components/block-switcher/utils.js +1 -1
  515. package/src/components/block-tools/selected-block-popover.js +77 -80
  516. package/src/components/block-tools/style.scss +0 -1
  517. package/src/components/block-variation-picker/{style.scss → content.scss} +0 -0
  518. package/src/components/block-vertical-alignment-control/icons.js +12 -0
  519. package/src/components/block-vertical-alignment-control/test/index.js +3 -11
  520. package/src/components/block-vertical-alignment-control/ui.js +16 -6
  521. package/src/components/color-style-selector/index.js +1 -1
  522. package/src/components/colors/test/with-colors.js +2 -8
  523. package/src/components/date-format-picker/index.js +23 -24
  524. package/src/components/date-format-picker/style.scss +0 -6
  525. package/src/components/default-block-appender/content.scss +18 -0
  526. package/src/components/default-block-appender/test/index.js +2 -8
  527. package/src/components/font-family/index.js +1 -6
  528. package/src/components/font-sizes/fluid-utils.js +1 -1
  529. package/src/components/font-sizes/utils.js +1 -1
  530. package/src/components/global-styles/README.md +77 -0
  531. package/src/components/global-styles/context.js +15 -0
  532. package/src/components/global-styles/hooks.js +145 -0
  533. package/src/components/global-styles/index.js +7 -0
  534. package/src/components/global-styles/test/typography-utils.js +393 -0
  535. package/src/components/global-styles/test/use-global-styles-output.js +814 -0
  536. package/src/components/global-styles/test/utils.js +206 -0
  537. package/src/components/global-styles/typography-utils.js +87 -0
  538. package/src/components/global-styles/use-global-styles-output.js +1088 -0
  539. package/src/components/global-styles/utils.js +373 -0
  540. package/src/components/height-control/README.md +55 -0
  541. package/src/components/height-control/index.js +13 -1
  542. package/src/components/image-editor/constants.js +1 -1
  543. package/src/components/image-editor/context.js +5 -9
  544. package/src/components/image-editor/cropper.js +3 -1
  545. package/src/components/image-editor/index.js +13 -4
  546. package/src/components/image-editor/use-transform-image.js +14 -55
  547. package/src/components/image-size-control/index.js +1 -6
  548. package/src/components/index.js +2 -6
  549. package/src/components/inner-blocks/index.js +29 -33
  550. package/src/components/inner-blocks/index.native.js +27 -47
  551. package/src/components/inner-blocks/use-block-context.js +47 -0
  552. package/src/components/inserter/block-patterns-explorer/explorer.js +0 -1
  553. package/src/components/inserter/block-patterns-tab.js +7 -0
  554. package/src/components/inserter/block-types-tab.js +3 -4
  555. package/src/components/inserter/hooks/use-patterns-state.js +1 -6
  556. package/src/components/inserter/index.js +3 -4
  557. package/src/components/inserter/media-tab/hooks.js +167 -65
  558. package/src/components/inserter/media-tab/media-list.js +94 -26
  559. package/src/components/inserter/media-tab/media-panel.js +9 -20
  560. package/src/components/inserter/media-tab/media-tab.js +12 -4
  561. package/src/components/inserter/media-tab/utils.js +20 -10
  562. package/src/components/inserter/menu.js +1 -0
  563. package/src/components/inserter/preview-panel.js +4 -2
  564. package/src/components/inserter/search-results.js +2 -6
  565. package/src/components/inserter/stories/index.js +9 -9
  566. package/src/components/inserter/style.scss +58 -11
  567. package/src/components/inserter-list-item/index.js +0 -7
  568. package/src/components/inspector-controls/README.md +3 -7
  569. package/src/components/inspector-controls/fill.js +15 -1
  570. package/src/components/inspector-controls/fill.native.js +14 -1
  571. package/src/components/inspector-controls/groups.js +3 -0
  572. package/src/components/inspector-controls/index.js +2 -6
  573. package/src/components/inspector-controls/slot.js +14 -1
  574. package/src/components/inspector-controls/slot.native.js +14 -1
  575. package/src/components/inspector-controls-tabs/advanced-controls-panel.js +1 -1
  576. package/src/components/inspector-controls-tabs/index.js +2 -4
  577. package/src/components/inspector-controls-tabs/position-controls-panel.js +1 -1
  578. package/src/components/inspector-controls-tabs/styles-tab.js +5 -7
  579. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +21 -10
  580. package/src/components/justify-content-control/ui.js +9 -0
  581. package/src/components/link-control/index.js +59 -23
  582. package/src/components/link-control/style.scss +7 -24
  583. package/src/components/link-control/test/index.js +134 -5
  584. package/src/components/list-view/block.js +1 -1
  585. package/src/components/list-view/use-list-view-drop-zone.js +1 -1
  586. package/src/components/media-replace-flow/test/index.js +4 -12
  587. package/src/components/media-upload/index.native.js +2 -2
  588. package/src/components/off-canvas-editor/README.md +2 -2
  589. package/src/components/off-canvas-editor/appender.js +93 -37
  590. package/src/components/off-canvas-editor/block-select-button.js +12 -1
  591. package/src/components/off-canvas-editor/block.js +3 -42
  592. package/src/components/off-canvas-editor/branch.js +32 -5
  593. package/src/components/off-canvas-editor/index.js +10 -25
  594. package/src/components/off-canvas-editor/link-ui.js +2 -2
  595. package/src/components/off-canvas-editor/style.scss +5 -1
  596. package/src/components/off-canvas-editor/use-list-view-drop-zone.js +1 -1
  597. package/src/components/provider/index.js +33 -14
  598. package/src/components/provider/index.native.js +4 -3
  599. package/src/components/provider/test/experimental-provider.js +94 -0
  600. package/src/components/provider/test/use-block-sync.js +10 -0
  601. package/src/components/responsive-block-control/test/index.js +1 -5
  602. package/src/components/rich-text/use-before-input-rules.js +10 -2
  603. package/src/components/rich-text/utils.js +1 -1
  604. package/src/components/spacing-sizes-control/utils.js +2 -7
  605. package/src/components/tool-selector/index.js +1 -1
  606. package/src/components/url-input/test/button.js +24 -24
  607. package/src/components/url-popover/image-url-input-ui.js +7 -8
  608. package/src/components/url-popover/style.scss +0 -10
  609. package/src/components/use-block-display-information/index.js +1 -1
  610. package/src/components/warning/{style.scss → content.scss} +0 -0
  611. package/src/components/warning/test/index.js +1 -5
  612. package/src/content.scss +7 -0
  613. package/src/experiments.js +27 -0
  614. package/src/experiments.native.js +25 -0
  615. package/src/hooks/anchor.js +2 -1
  616. package/src/hooks/border.js +1 -1
  617. package/src/hooks/child-layout.js +6 -1
  618. package/src/hooks/color-panel.js +1 -1
  619. package/src/hooks/color.js +3 -3
  620. package/src/hooks/custom-class-name.js +2 -1
  621. package/src/hooks/dimensions.js +6 -6
  622. package/src/hooks/layout.scss +4 -0
  623. package/src/hooks/margin.js +1 -0
  624. package/src/hooks/padding.js +1 -0
  625. package/src/hooks/position.js +52 -36
  626. package/src/hooks/test/align.native.js +1 -1
  627. package/src/hooks/test/utils.js +104 -0
  628. package/src/hooks/typography.js +1 -1
  629. package/src/hooks/use-color-props.js +3 -3
  630. package/src/hooks/utils.js +68 -2
  631. package/src/index.js +1 -0
  632. package/src/layouts/constrained.js +3 -0
  633. package/src/layouts/flex.js +66 -14
  634. package/src/layouts/flow.js +0 -9
  635. package/src/store/actions.js +2 -26
  636. package/src/store/defaults.js +7 -2
  637. package/src/store/index.js +8 -2
  638. package/src/store/private-actions.js +65 -0
  639. package/src/store/private-selectors.js +10 -0
  640. package/src/store/reducer.js +1 -1
  641. package/src/store/selectors.js +103 -52
  642. package/src/store/test/actions.js +0 -18
  643. package/src/store/test/private-actions.js +22 -0
  644. package/src/store/test/private-selectors.js +24 -0
  645. package/src/store/test/selectors.js +52 -30
  646. package/src/style.scss +3 -5
  647. package/src/utils/block-variation-transforms.js +1 -1
  648. package/src/utils/parse-css-unit-to-px.js +3 -1
  649. package/src/utils/test/parse-css-unit-to-px.js +16 -24
  650. package/src/utils/transform-styles/index.js +1 -6
  651. package/build/components/inner-blocks/get-block-context.js +0 -45
  652. package/build/components/inner-blocks/get-block-context.js.map +0 -1
  653. package/build/components/off-canvas-editor/block-edit-button.js +0 -50
  654. package/build/components/off-canvas-editor/block-edit-button.js.map +0 -1
  655. package/build-module/components/inner-blocks/get-block-context.js +0 -37
  656. package/build-module/components/inner-blocks/get-block-context.js.map +0 -1
  657. package/build-module/components/off-canvas-editor/block-edit-button.js +0 -35
  658. package/build-module/components/off-canvas-editor/block-edit-button.js.map +0 -1
  659. package/src/components/inner-blocks/get-block-context.js +0 -39
  660. package/src/components/off-canvas-editor/block-edit-button.js +0 -27
@@ -9,6 +9,7 @@ import { View } from 'react-native';
9
9
  import { Children } from '@wordpress/element';
10
10
  import { BottomSheetConsumer } from '@wordpress/components';
11
11
  import warning from '@wordpress/warning';
12
+ import deprecated from '@wordpress/deprecated';
12
13
 
13
14
  /**
14
15
  * Internal dependencies
@@ -19,9 +20,21 @@ import { BlockSettingsButton } from '../block-settings';
19
20
 
20
21
  export default function InspectorControlsFill( {
21
22
  children,
22
- __experimentalGroup: group = 'default',
23
+ group = 'default',
24
+ __experimentalGroup,
23
25
  ...props
24
26
  } ) {
27
+ if ( __experimentalGroup ) {
28
+ deprecated(
29
+ '`__experimentalGroup` property in `InspectorControlsFill`',
30
+ {
31
+ since: '6.2',
32
+ version: '6.4',
33
+ alternative: '`group`',
34
+ }
35
+ );
36
+ group = __experimentalGroup;
37
+ }
25
38
  const isDisplayed = useDisplayBlockControls();
26
39
 
27
40
  const Fill = groups[ group ]?.Fill;
@@ -15,6 +15,7 @@ const InspectorControlsTypography = createSlotFill(
15
15
  'InspectorControlsTypography'
16
16
  );
17
17
  const InspectorControlsListView = createSlotFill( 'InspectorControlsListView' );
18
+ const InspectorControlsStyles = createSlotFill( 'InspectorControlsStyles' );
18
19
 
19
20
  const groups = {
20
21
  default: InspectorControlsDefault,
@@ -23,6 +24,8 @@ const groups = {
23
24
  color: InspectorControlsColor,
24
25
  dimensions: InspectorControlsDimensions,
25
26
  list: InspectorControlsListView,
27
+ settings: InspectorControlsDefault, // Alias for default.
28
+ styles: InspectorControlsStyles,
26
29
  typography: InspectorControlsTypography,
27
30
  position: InspectorControlsPosition,
28
31
  };
@@ -10,14 +10,10 @@ InspectorControls.Slot = InspectorControlsSlot;
10
10
 
11
11
  // This is just here for backward compatibility.
12
12
  export const InspectorAdvancedControls = ( props ) => {
13
- return (
14
- <InspectorControlsFill { ...props } __experimentalGroup="advanced" />
15
- );
13
+ return <InspectorControlsFill { ...props } group="advanced" />;
16
14
  };
17
15
  InspectorAdvancedControls.Slot = ( props ) => {
18
- return (
19
- <InspectorControlsSlot { ...props } __experimentalGroup="advanced" />
20
- );
16
+ return <InspectorControlsSlot { ...props } group="advanced" />;
21
17
  };
22
18
  InspectorAdvancedControls.slotName = 'InspectorAdvancedControls';
23
19
 
@@ -6,6 +6,7 @@ import {
6
6
  __experimentalUseSlotFills as useSlotFills,
7
7
  } from '@wordpress/components';
8
8
  import warning from '@wordpress/warning';
9
+ import deprecated from '@wordpress/deprecated';
9
10
 
10
11
  /**
11
12
  * Internal dependencies
@@ -15,10 +16,22 @@ import BlockSupportSlotContainer from './block-support-slot-container';
15
16
  import groups from './groups';
16
17
 
17
18
  export default function InspectorControlsSlot( {
18
- __experimentalGroup: group = 'default',
19
+ __experimentalGroup,
20
+ group = 'default',
19
21
  label,
20
22
  ...props
21
23
  } ) {
24
+ if ( __experimentalGroup ) {
25
+ deprecated(
26
+ '`__experimentalGroup` property in `InspectorControlsSlot`',
27
+ {
28
+ since: '6.2',
29
+ version: '6.4',
30
+ alternative: '`group`',
31
+ }
32
+ );
33
+ group = __experimentalGroup;
34
+ }
22
35
  const Slot = groups[ group ]?.Slot;
23
36
  const slot = useSlot( Slot?.__unstableName );
24
37
  const fills = useSlotFills( Slot?.__unstableName );
@@ -2,6 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import warning from '@wordpress/warning';
5
+ import deprecated from '@wordpress/deprecated';
5
6
 
6
7
  /**
7
8
  * Internal dependencies
@@ -9,9 +10,21 @@ import warning from '@wordpress/warning';
9
10
  import groups from './groups';
10
11
 
11
12
  export default function InspectorControlsSlot( {
12
- __experimentalGroup: group = 'default',
13
+ __experimentalGroup,
14
+ group = 'default',
13
15
  ...props
14
16
  } ) {
17
+ if ( __experimentalGroup ) {
18
+ deprecated(
19
+ '`__experimentalGroup` property in `InspectorControlsSlot`',
20
+ {
21
+ since: '6.2',
22
+ version: '6.4',
23
+ alternative: '`group`',
24
+ }
25
+ );
26
+ group = __experimentalGroup;
27
+ }
15
28
  const Slot = groups[ group ]?.Slot;
16
29
  if ( ! Slot ) {
17
30
  warning( `Unknown InspectorControl group "${ group }" provided.` );
@@ -29,7 +29,7 @@ const AdvancedControls = () => {
29
29
  title={ __( 'Advanced' ) }
30
30
  initialOpen={ false }
31
31
  >
32
- <InspectorControls.Slot __experimentalGroup="advanced" />
32
+ <InspectorControls.Slot group="advanced" />
33
33
  </PanelBody>
34
34
  );
35
35
  };
@@ -20,7 +20,7 @@ export default function InspectorControlsTabs( {
20
20
  } ) {
21
21
  // The tabs panel will mount before fills are rendered to the list view
22
22
  // slot. This means the list view tab isn't initially included in the
23
- // available tabs so the panel defaults selection to the styles tab
23
+ // available tabs so the panel defaults selection to the settings tab
24
24
  // which at the time is the first tab. This check allows blocks known to
25
25
  // include the list view tab to set it as the tab selected by default.
26
26
  const initialTabName = ! useIsListViewTabDisabled( blockName )
@@ -52,9 +52,7 @@ export default function InspectorControlsTabs( {
52
52
  }
53
53
 
54
54
  if ( tab.name === TAB_LIST_VIEW.name ) {
55
- return (
56
- <InspectorControls.Slot __experimentalGroup="list" />
57
- );
55
+ return <InspectorControls.Slot group="list" />;
58
56
  }
59
57
  } }
60
58
  </TabPanel>
@@ -29,7 +29,7 @@ const PositionControls = () => {
29
29
  title={ __( 'Position' ) }
30
30
  initialOpen={ false }
31
31
  >
32
- <InspectorControls.Slot __experimentalGroup="position" />
32
+ <InspectorControls.Slot group="position" />
33
33
  </PanelBody>
34
34
  );
35
35
  };
@@ -28,22 +28,20 @@ const StylesTab = ( { blockName, clientId, hasBlockStyles } ) => {
28
28
  </div>
29
29
  ) }
30
30
  <InspectorControls.Slot
31
- __experimentalGroup="color"
31
+ group="color"
32
32
  label={ __( 'Color' ) }
33
33
  className="color-block-support-panel__inner-wrapper"
34
34
  />
35
35
  <InspectorControls.Slot
36
- __experimentalGroup="typography"
36
+ group="typography"
37
37
  label={ __( 'Typography' ) }
38
38
  />
39
39
  <InspectorControls.Slot
40
- __experimentalGroup="dimensions"
40
+ group="dimensions"
41
41
  label={ __( 'Dimensions' ) }
42
42
  />
43
- <InspectorControls.Slot
44
- __experimentalGroup="border"
45
- label={ __( 'Border' ) }
46
- />
43
+ <InspectorControls.Slot group="border" label={ __( 'Border' ) } />
44
+ <InspectorControls.Slot group="styles" />
47
45
  </>
48
46
  );
49
47
  };
@@ -38,16 +38,14 @@ export default function useInspectorControlsTabs( blockName ) {
38
38
  dimensions: dimensionsGroup,
39
39
  list: listGroup,
40
40
  position: positionGroup,
41
+ styles: stylesGroup,
41
42
  typography: typographyGroup,
42
43
  } = InspectorControlsGroups;
43
44
 
44
45
  // List View Tab: If there are any fills for the list group add that tab.
45
46
  const listViewDisabled = useIsListViewTabDisabled( blockName );
46
47
  const listFills = useSlotFills( listGroup.Slot.__unstableName );
47
-
48
- if ( ! listViewDisabled && !! listFills && listFills.length ) {
49
- tabs.push( TAB_LIST_VIEW );
50
- }
48
+ const hasListFills = ! listViewDisabled && !! listFills && listFills.length;
51
49
 
52
50
  // Styles Tab: Add this tab if there are any fills for block supports
53
51
  // e.g. border, color, spacing, typography, etc.
@@ -55,25 +53,38 @@ export default function useInspectorControlsTabs( blockName ) {
55
53
  ...( useSlotFills( borderGroup.Slot.__unstableName ) || [] ),
56
54
  ...( useSlotFills( colorGroup.Slot.__unstableName ) || [] ),
57
55
  ...( useSlotFills( dimensionsGroup.Slot.__unstableName ) || [] ),
56
+ ...( useSlotFills( stylesGroup.Slot.__unstableName ) || [] ),
58
57
  ...( useSlotFills( typographyGroup.Slot.__unstableName ) || [] ),
59
58
  ];
59
+ const hasStyleFills = styleFills.length;
60
60
 
61
- if ( styleFills.length ) {
62
- tabs.push( TAB_STYLES );
63
- }
61
+ // Settings Tab: If we don't have multiple tabs to display
62
+ // (i.e. both list view and styles), check only the default and position
63
+ // InspectorControls slots. If we have multiple tabs, we'll need to check
64
+ // the advanced controls slot as well to ensure they are rendered.
65
+ const advancedFills =
66
+ useSlotFills( InspectorAdvancedControls.slotName ) || [];
64
67
 
65
- // Settings Tab: If there are any fills for the general InspectorControls
66
- // or Advanced Controls slot, then add this tab.
67
68
  const settingsFills = [
68
69
  ...( useSlotFills( defaultGroup.Slot.__unstableName ) || [] ),
69
70
  ...( useSlotFills( positionGroup.Slot.__unstableName ) || [] ),
70
- ...( useSlotFills( InspectorAdvancedControls.slotName ) || [] ),
71
+ ...( hasListFills && hasStyleFills > 1 ? advancedFills : [] ),
71
72
  ];
72
73
 
74
+ // Add the tabs in the order that they will default to if available.
75
+ // List View > Settings > Styles.
76
+ if ( hasListFills ) {
77
+ tabs.push( TAB_LIST_VIEW );
78
+ }
79
+
73
80
  if ( settingsFills.length ) {
74
81
  tabs.push( TAB_SETTINGS );
75
82
  }
76
83
 
84
+ if ( hasStyleFills ) {
85
+ tabs.push( TAB_STYLES );
86
+ }
87
+
77
88
  const tabSettings = useSelect( ( select ) => {
78
89
  return select( blockEditorStore ).getSettings().blockInspectorTabs;
79
90
  }, [] );
@@ -7,6 +7,7 @@ import {
7
7
  justifyCenter,
8
8
  justifyRight,
9
9
  justifySpaceBetween,
10
+ justifyStretch,
10
11
  } from '@wordpress/icons';
11
12
  import { __ } from '@wordpress/i18n';
12
13
 
@@ -15,6 +16,7 @@ const icons = {
15
16
  center: justifyCenter,
16
17
  right: justifyRight,
17
18
  'space-between': justifySpaceBetween,
19
+ stretch: justifyStretch,
18
20
  };
19
21
 
20
22
  function JustifyContentUI( {
@@ -66,6 +68,13 @@ function JustifyContentUI( {
66
68
  isActive: 'space-between' === value,
67
69
  onClick: () => handleClick( 'space-between' ),
68
70
  },
71
+ {
72
+ name: 'stretch',
73
+ icon: justifyStretch,
74
+ title: __( 'Stretch items' ),
75
+ isActive: 'stretch' === value,
76
+ onClick: () => handleClick( 'stretch' ),
77
+ },
69
78
  ];
70
79
 
71
80
  const UIComponent = isToolbar ? ToolbarGroup : ToolbarDropdownMenu;
@@ -7,7 +7,6 @@ import classnames from 'classnames';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { Button, Spinner, Notice, TextControl } from '@wordpress/components';
10
- import { keyboardReturn } from '@wordpress/icons';
11
10
  import { __ } from '@wordpress/i18n';
12
11
  import { useRef, useState, useEffect } from '@wordpress/element';
13
12
  import { focus } from '@wordpress/dom';
@@ -113,6 +112,7 @@ function LinkControl( {
113
112
  settings = DEFAULT_LINK_SETTINGS,
114
113
  onChange = noop,
115
114
  onRemove,
115
+ onCancel,
116
116
  noDirectEntry = false,
117
117
  showSuggestions = true,
118
118
  showInitialSuggestions,
@@ -190,6 +190,8 @@ function LinkControl( {
190
190
  isEndingEditWithFocus.current = false;
191
191
  }, [ isEditingLink, isCreatingPage ] );
192
192
 
193
+ const hasLinkValue = value?.url?.trim()?.length > 0;
194
+
193
195
  /**
194
196
  * Cancels editing state and marks that focus may need to be restored after
195
197
  * the next render, if focus was within the wrapper when editing finished.
@@ -235,6 +237,29 @@ function LinkControl( {
235
237
  }
236
238
  };
237
239
 
240
+ const resetInternalValues = () => {
241
+ setInternalUrlInputValue( value?.url );
242
+ setInternalTextInputValue( value?.title );
243
+ };
244
+
245
+ const handleCancel = ( event ) => {
246
+ event.preventDefault();
247
+ event.stopPropagation();
248
+
249
+ // Ensure that any unsubmitted input changes are reset.
250
+ resetInternalValues();
251
+
252
+ if ( hasLinkValue ) {
253
+ // If there is a link then exist editing mode and show preview.
254
+ stopEditing();
255
+ } else {
256
+ // If there is no link value, then remove the link entirely.
257
+ onRemove?.();
258
+ }
259
+
260
+ onCancel?.();
261
+ };
262
+
238
263
  const currentUrlInputValue = propInputValue || internalUrlInputValue;
239
264
 
240
265
  const currentInputIsEmpty = ! currentUrlInputValue?.trim()?.length;
@@ -247,8 +272,9 @@ function LinkControl( {
247
272
  // Only show text control once a URL value has been committed
248
273
  // and it isn't just empty whitespace.
249
274
  // See https://github.com/WordPress/gutenberg/pull/33849/#issuecomment-932194927.
250
- const showTextControl = value?.url?.trim()?.length > 0 && hasTextControl;
275
+ const showTextControl = hasLinkValue && hasTextControl;
251
276
 
277
+ const isEditing = ( isEditingLink || ! value ) && ! isCreatingPage;
252
278
  return (
253
279
  <div
254
280
  tabIndex={ -1 }
@@ -261,7 +287,7 @@ function LinkControl( {
261
287
  </div>
262
288
  ) }
263
289
 
264
- { ( isEditingLink || ! value ) && ! isCreatingPage && (
290
+ { isEditing && (
265
291
  <>
266
292
  <div
267
293
  className={ classnames( {
@@ -271,6 +297,7 @@ function LinkControl( {
271
297
  >
272
298
  { showTextControl && (
273
299
  <TextControl
300
+ __nextHasNoMarginBottom
274
301
  ref={ textInputRef }
275
302
  className="block-editor-link-control__field block-editor-link-control__text-content"
276
303
  label="Text"
@@ -298,17 +325,7 @@ function LinkControl( {
298
325
  createSuggestionButtonText
299
326
  }
300
327
  useLabel={ showTextControl }
301
- >
302
- <div className="block-editor-link-control__search-actions">
303
- <Button
304
- onClick={ handleSubmit }
305
- label={ __( 'Submit' ) }
306
- icon={ keyboardReturn }
307
- className="block-editor-link-control__search-submit"
308
- disabled={ currentInputIsEmpty } // Disallow submitting empty values.
309
- />
310
- </div>
311
- </LinkControlSearchInput>
328
+ />
312
329
  </div>
313
330
  { errorMessage && (
314
331
  <Notice
@@ -333,15 +350,34 @@ function LinkControl( {
333
350
  />
334
351
  ) }
335
352
 
336
- { showSettingsDrawer && (
337
- <div className="block-editor-link-control__tools">
338
- <LinkControlSettingsDrawer
339
- value={ value }
340
- settings={ settings }
341
- onChange={ onChange }
342
- />
343
- </div>
344
- ) }
353
+ <div className="block-editor-link-control__drawer">
354
+ { showSettingsDrawer && (
355
+ <div className="block-editor-link-control__tools">
356
+ <LinkControlSettingsDrawer
357
+ value={ value }
358
+ settings={ settings }
359
+ onChange={ onChange }
360
+ />
361
+ </div>
362
+ ) }
363
+
364
+ { isEditing && (
365
+ <div className="block-editor-link-control__search-actions">
366
+ <Button
367
+ variant="primary"
368
+ onClick={ handleSubmit }
369
+ className="xblock-editor-link-control__search-submit"
370
+ disabled={ currentInputIsEmpty } // Disallow submitting empty values.
371
+ >
372
+ { __( 'Apply' ) }
373
+ </Button>
374
+ <Button variant="tertiary" onClick={ handleCancel }>
375
+ { __( 'Cancel' ) }
376
+ </Button>
377
+ </div>
378
+ ) }
379
+ </div>
380
+
345
381
  { renderControlBottom && renderControlBottom() }
346
382
  </div>
347
383
  );
@@ -49,7 +49,6 @@ $preview-image-height: 140px;
49
49
  > .components-base-control__field {
50
50
  display: flex;
51
51
  align-items: center;
52
- margin: 0;
53
52
  }
54
53
 
55
54
  .components-base-control__label {
@@ -65,7 +64,6 @@ $preview-image-height: 140px;
65
64
  width: calc(100% - #{$grid-unit-20 * 2});
66
65
  display: block;
67
66
  padding: 11px $grid-unit-20;
68
- padding-right: ( $button-size * $block-editor-link-control-number-of-actions ); // width of reset and submit buttons
69
67
  margin: 0;
70
68
  position: relative;
71
69
  border: 1px solid $gray-300;
@@ -78,20 +76,10 @@ $preview-image-height: 140px;
78
76
  }
79
77
 
80
78
  .block-editor-link-control__search-actions {
81
- position: absolute;
82
- /*
83
- * Actions must be positioned on top of URLInput, since the input will grow
84
- * when suggestions are rendered.
85
- *
86
- * Compensate for:
87
- * - Border (1px)
88
- * - Vertically, for the difference in height between the input (40px) and
89
- * the icon buttons.
90
- * - Horizontally, pad to the minimum of: default input padding, or the
91
- * equivalent of the vertical padding.
92
- */
93
- top: 1px + ( ( 40px - $button-size ) * 0.5 );
94
- right: $grid-unit-20 + 1px + min($grid-unit-10, ( 40px - $button-size ) * 0.5);
79
+ display: flex;
80
+ flex-direction: row-reverse; // put "Cancel" on the left but retain DOM order.
81
+ justify-content: flex-start;
82
+ gap: $grid-unit-10;
95
83
  }
96
84
 
97
85
  .components-button .block-editor-link-control__search-submit .has-icon {
@@ -438,9 +426,10 @@ $preview-image-height: 140px;
438
426
  padding: 10px;
439
427
  }
440
428
 
441
- .block-editor-link-control__tools {
429
+ .block-editor-link-control__drawer {
442
430
  display: flex;
443
431
  align-items: center;
432
+ justify-content: space-between;
444
433
  border-top: $border-width solid $gray-300;
445
434
  margin: 0;
446
435
  padding: $grid-unit-20;
@@ -480,14 +469,8 @@ $preview-image-height: 140px;
480
469
  position: absolute;
481
470
  left: auto;
482
471
  bottom: auto;
483
- /*
484
- * Position spinner to the left of the actions.
485
- *
486
- * Compensate for:
487
- * - Input padding right ($button-size)
488
- */
489
472
  top: calc(50% - #{$spinner-size} / 2);
490
- right: $button-size;
473
+ right: $grid-unit-20;
491
474
  }
492
475
  }
493
476
 
@@ -537,7 +537,7 @@ describe( 'Manual link entry', () => {
537
537
  } );
538
538
 
539
539
  let submitButton = screen.getByRole( 'button', {
540
- name: 'Submit',
540
+ name: 'Apply',
541
541
  } );
542
542
 
543
543
  expect( submitButton ).toBeDisabled();
@@ -555,7 +555,7 @@ describe( 'Manual link entry', () => {
555
555
  await user.keyboard( '[Enter]' );
556
556
 
557
557
  submitButton = screen.getByRole( 'button', {
558
- name: 'Submit',
558
+ name: 'Apply',
559
559
  } );
560
560
 
561
561
  // Verify the UI hasn't allowed submission.
@@ -578,7 +578,7 @@ describe( 'Manual link entry', () => {
578
578
  } );
579
579
 
580
580
  let submitButton = screen.queryByRole( 'button', {
581
- name: 'Submit',
581
+ name: 'Apply',
582
582
  } );
583
583
 
584
584
  expect( submitButton ).toBeDisabled();
@@ -597,7 +597,7 @@ describe( 'Manual link entry', () => {
597
597
  await user.click( submitButton );
598
598
 
599
599
  submitButton = screen.queryByRole( 'button', {
600
- name: 'Submit',
600
+ name: 'Apply',
601
601
  } );
602
602
 
603
603
  // Verify the UI hasn't allowed submission.
@@ -608,6 +608,135 @@ describe( 'Manual link entry', () => {
608
608
  );
609
609
  } );
610
610
 
611
+ describe( 'Handling cancellation', () => {
612
+ it( 'should allow cancellation of the link creation process and reset any entered values', async () => {
613
+ const user = userEvent.setup();
614
+ const mockOnRemove = jest.fn();
615
+ const mockOnCancel = jest.fn();
616
+
617
+ render( <LinkControl onRemove={ mockOnRemove } /> );
618
+
619
+ // Search Input UI.
620
+ const searchInput = screen.getByRole( 'combobox', {
621
+ name: 'URL',
622
+ } );
623
+
624
+ const cancelButton = screen.queryByRole( 'button', {
625
+ name: 'Cancel',
626
+ } );
627
+
628
+ expect( cancelButton ).toBeEnabled();
629
+ expect( cancelButton ).toBeVisible();
630
+
631
+ // Simulate adding a link for a term.
632
+ await user.type( searchInput, 'https://www.wordpress.org' );
633
+
634
+ // Attempt to submit the empty search value in the input.
635
+ await user.click( cancelButton );
636
+
637
+ // Verify the consumer can handle the cancellation.
638
+ expect( mockOnRemove ).toHaveBeenCalled();
639
+
640
+ // Ensure optional callback is not called.
641
+ expect( mockOnCancel ).not.toHaveBeenCalled();
642
+
643
+ expect( searchInput ).toHaveValue( '' );
644
+ } );
645
+
646
+ it( 'should allow cancellation of the link editing process and reset any entered values', async () => {
647
+ const user = userEvent.setup();
648
+ const initialLink = fauxEntitySuggestions[ 0 ];
649
+
650
+ const LinkControlConsumer = () => {
651
+ const [ link, setLink ] = useState( initialLink );
652
+
653
+ return (
654
+ <LinkControl
655
+ value={ link }
656
+ onChange={ ( suggestion ) => {
657
+ setLink( suggestion );
658
+ } }
659
+ hasTextControl
660
+ />
661
+ );
662
+ };
663
+
664
+ render( <LinkControlConsumer /> );
665
+
666
+ let linkPreview = screen.getByLabelText( 'Currently selected' );
667
+
668
+ expect( linkPreview ).toBeInTheDocument();
669
+
670
+ // Click the "Edit" button to trigger into the editing mode.
671
+ let editButton = screen.queryByRole( 'button', {
672
+ name: 'Edit',
673
+ } );
674
+
675
+ await user.click( editButton );
676
+
677
+ let searchInput = screen.getByRole( 'combobox', {
678
+ name: 'URL',
679
+ } );
680
+
681
+ let textInput = screen.getByRole( 'textbox', {
682
+ name: 'Text',
683
+ } );
684
+
685
+ // Make a change to the search input.
686
+ await user.type( searchInput, 'This URL value was changed!' );
687
+
688
+ // Make a change to the text input.
689
+ await user.type( textInput, 'This text value was changed!' );
690
+
691
+ const cancelButton = screen.queryByRole( 'button', {
692
+ name: 'Cancel',
693
+ } );
694
+
695
+ // Cancel the editing process.
696
+ await user.click( cancelButton );
697
+
698
+ linkPreview = screen.getByLabelText( 'Currently selected' );
699
+
700
+ expect( linkPreview ).toBeInTheDocument();
701
+
702
+ // Re-query the edit button as it's been replaced.
703
+ editButton = screen.queryByRole( 'button', {
704
+ name: 'Edit',
705
+ } );
706
+
707
+ await user.click( editButton );
708
+
709
+ // Re-query the inputs as they have been replaced.
710
+ searchInput = screen.getByRole( 'combobox', {
711
+ name: 'URL',
712
+ } );
713
+
714
+ textInput = screen.getByRole( 'textbox', {
715
+ name: 'Text',
716
+ } );
717
+
718
+ // Expect to see the original link values and **not** the changed values.
719
+ expect( searchInput ).toHaveValue( initialLink.url );
720
+ expect( textInput ).toHaveValue( initialLink.text );
721
+ } );
722
+
723
+ it( 'should call onCancel callback when cancelling if provided', async () => {
724
+ const user = userEvent.setup();
725
+ const mockOnCancel = jest.fn();
726
+
727
+ render( <LinkControl onCancel={ mockOnCancel } /> );
728
+
729
+ const cancelButton = screen.queryByRole( 'button', {
730
+ name: 'Cancel',
731
+ } );
732
+
733
+ await user.click( cancelButton );
734
+
735
+ // Verify the consumer can handle the cancellation.
736
+ expect( mockOnCancel ).toHaveBeenCalled();
737
+ } );
738
+ } );
739
+
611
740
  describe( 'Alternative link protocols and formats', () => {
612
741
  it.each( [
613
742
  [ 'mailto:example123456@wordpress.org', 'mailto' ],
@@ -1859,7 +1988,7 @@ describe( 'Controlling link title text', () => {
1859
1988
  expect( textInput ).toHaveValue( textValue );
1860
1989
 
1861
1990
  const submitButton = screen.queryByRole( 'button', {
1862
- name: 'Submit',
1991
+ name: 'Apply',
1863
1992
  } );
1864
1993
 
1865
1994
  await user.click( submitButton );