@wordpress/block-editor 17.1.0 → 17.2.1-next.v.202609171837.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 (541) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +214 -214
  3. package/build/autocompleters/block.cjs.map +2 -2
  4. package/build/components/alignment-control/ui.cjs.map +2 -2
  5. package/build/components/background-image-control/index.cjs +1 -1
  6. package/build/components/background-image-control/index.cjs.map +2 -2
  7. package/build/components/block-alignment-control/ui.cjs +21 -7
  8. package/build/components/block-alignment-control/ui.cjs.map +3 -3
  9. package/build/components/block-alignment-control/use-available-alignments.cjs +60 -13
  10. package/build/components/block-alignment-control/use-available-alignments.cjs.map +2 -2
  11. package/build/components/block-allowed-blocks/allowed-blocks-control.cjs.map +2 -2
  12. package/build/components/block-bindings/attribute-control.cjs +30 -30
  13. package/build/components/block-bindings/attribute-control.cjs.map +3 -3
  14. package/build/components/block-bindings/source-fields-list.cjs +27 -32
  15. package/build/components/block-bindings/source-fields-list.cjs.map +3 -3
  16. package/build/components/block-canvas/index.cjs.map +2 -2
  17. package/build/components/block-card/index.cjs +1 -2
  18. package/build/components/block-card/index.cjs.map +3 -3
  19. package/build/components/block-edit/edit.cjs.map +2 -2
  20. package/build/components/block-heading-level-dropdown/index.cjs.map +2 -2
  21. package/build/components/block-icon/index.cjs.map +2 -2
  22. package/build/components/block-inspector/edit-contents.cjs.map +2 -2
  23. package/build/components/block-inspector/index.cjs +27 -8
  24. package/build/components/block-inspector/index.cjs.map +3 -3
  25. package/build/components/block-keyboard-shortcuts/index.cjs.map +2 -2
  26. package/build/components/block-list/block-html.cjs +1 -12
  27. package/build/components/block-list/block-html.cjs.map +3 -3
  28. package/build/components/block-list/block.cjs +2 -4
  29. package/build/components/block-list/block.cjs.map +2 -2
  30. package/build/components/block-list/layout.cjs +1 -1
  31. package/build/components/block-list/layout.cjs.map +2 -2
  32. package/build/components/block-list/use-block-props/index.cjs.map +2 -2
  33. package/build/components/block-lock/modal.cjs +1 -3
  34. package/build/components/block-lock/modal.cjs.map +2 -2
  35. package/build/components/block-parent-selector/index.cjs +8 -5
  36. package/build/components/block-parent-selector/index.cjs.map +2 -2
  37. package/build/components/block-popover/index.cjs.map +2 -2
  38. package/build/components/block-rename/modal.cjs.map +2 -2
  39. package/build/components/block-settings-menu/block-settings-dropdown.cjs.map +2 -2
  40. package/build/components/block-styles/utils.cjs.map +2 -2
  41. package/build/components/block-switcher/index.cjs.map +2 -2
  42. package/build/components/block-toolbar/edit-section-button.cjs.map +2 -2
  43. package/build/components/block-toolbar/index.cjs +6 -4
  44. package/build/components/block-toolbar/index.cjs.map +2 -2
  45. package/build/components/block-toolbar/switch-section-style.cjs.map +2 -2
  46. package/build/components/block-variation-transforms/index.cjs +28 -18
  47. package/build/components/block-variation-transforms/index.cjs.map +3 -3
  48. package/build/components/block-visibility/modal.cjs.map +2 -2
  49. package/build/components/block-visibility/viewport-visibility-info.cjs.map +2 -2
  50. package/build/components/border-radius-control/index.cjs.map +2 -2
  51. package/build/components/color-palette/with-color-context.cjs.map +2 -2
  52. package/build/components/colors/with-colors.cjs.map +2 -2
  53. package/build/components/colors-gradients/control.cjs.map +2 -2
  54. package/build/components/contrast-checker/index.cjs.map +2 -2
  55. package/build/components/date-format-picker/index.cjs.map +2 -2
  56. package/build/components/dimensions-tool/aspect-ratio-tool.cjs.map +3 -3
  57. package/build/components/dimensions-tool/width-height-tool.cjs.map +2 -2
  58. package/build/components/font-sizes/with-font-sizes.cjs.map +2 -2
  59. package/build/components/global-styles/background-panel.cjs +1 -1
  60. package/build/components/global-styles/background-panel.cjs.map +2 -2
  61. package/build/components/global-styles/border-panel.cjs +1 -1
  62. package/build/components/global-styles/border-panel.cjs.map +2 -2
  63. package/build/components/global-styles/color-gradient-dropdown-item.cjs +1 -1
  64. package/build/components/global-styles/color-gradient-dropdown-item.cjs.map +2 -2
  65. package/build/components/global-styles/color-panel.cjs +1 -1
  66. package/build/components/global-styles/color-panel.cjs.map +2 -2
  67. package/build/components/global-styles/dimensions-panel.cjs +1 -1
  68. package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
  69. package/build/components/global-styles/filters-panel.cjs +1 -1
  70. package/build/components/global-styles/filters-panel.cjs.map +2 -2
  71. package/build/components/global-styles/hooks.cjs +1 -0
  72. package/build/components/global-styles/hooks.cjs.map +2 -2
  73. package/build/components/global-styles/inheritance/index.cjs +3 -3
  74. package/build/components/global-styles/inheritance/index.cjs.map +2 -2
  75. package/build/components/global-styles/inherited-value-context.cjs +0 -5
  76. package/build/components/global-styles/inherited-value-context.cjs.map +2 -2
  77. package/build/components/global-styles/state-control-badges.cjs +0 -1
  78. package/build/components/global-styles/state-control-badges.cjs.map +2 -2
  79. package/build/components/global-styles/state-control.cjs +6 -4
  80. package/build/components/global-styles/state-control.cjs.map +2 -2
  81. package/build/components/global-styles/text-shadow-panel.cjs +254 -0
  82. package/build/components/global-styles/text-shadow-panel.cjs.map +7 -0
  83. package/build/components/global-styles/typography-panel.cjs +46 -5
  84. package/build/components/global-styles/typography-panel.cjs.map +2 -2
  85. package/build/components/global-styles/typography-utils.cjs.map +2 -2
  86. package/build/components/global-styles/utils.cjs.map +2 -2
  87. package/build/components/html-element-control/index.cjs.map +3 -3
  88. package/build/components/iframe/index.cjs.map +2 -2
  89. package/build/components/iframe/use-scale-canvas.cjs.map +2 -2
  90. package/build/components/image-size-control/index.cjs.map +3 -3
  91. package/build/components/inner-blocks/index.cjs +6 -1
  92. package/build/components/inner-blocks/index.cjs.map +2 -2
  93. package/build/components/inner-content/index.cjs.map +2 -2
  94. package/build/components/inserter/block-patterns-tab/use-pattern-categories.cjs +4 -23
  95. package/build/components/inserter/block-patterns-tab/use-pattern-categories.cjs.map +2 -2
  96. package/build/components/inserter/block-patterns-tab/utils.cjs +26 -0
  97. package/build/components/inserter/block-patterns-tab/utils.cjs.map +2 -2
  98. package/build/components/inserter/hooks/use-block-types-state.cjs.map +2 -2
  99. package/build/components/inserter/hooks/use-insertion-point.cjs.map +2 -2
  100. package/build/components/inserter/hooks/use-patterns-state.cjs.map +2 -2
  101. package/build/components/inserter/media-tab/media-panel.cjs.map +2 -2
  102. package/build/components/inserter/media-tab/media-preview.cjs.map +2 -2
  103. package/build/components/inserter-list-item/index.cjs.map +2 -2
  104. package/build/components/inspector-controls/list-view-content-popover.cjs.map +2 -2
  105. package/build/components/link-control/search-results.cjs.map +2 -2
  106. package/build/components/link-control/use-search-handler.cjs +3 -0
  107. package/build/components/link-control/use-search-handler.cjs.map +2 -2
  108. package/build/components/list-view/branch.cjs.map +2 -2
  109. package/build/components/list-view/drop-indicator.cjs.map +2 -2
  110. package/build/components/list-view/index.cjs.map +2 -2
  111. package/build/components/list-view/use-list-view-drop-zone.cjs.map +2 -2
  112. package/build/components/list-view/utils.cjs.map +2 -2
  113. package/build/components/media-replace-flow/index.cjs +4 -1
  114. package/build/components/media-replace-flow/index.cjs.map +2 -2
  115. package/build/components/plain-text/index.cjs +1 -2
  116. package/build/components/plain-text/index.cjs.map +3 -3
  117. package/build/components/preset-input-control/index.cjs.map +2 -2
  118. package/build/components/provider/index.cjs +3 -1
  119. package/build/components/provider/index.cjs.map +2 -2
  120. package/build/components/provider/use-block-sync.cjs.map +2 -2
  121. package/build/components/publish-date-time-picker/index.cjs.map +2 -2
  122. package/build/components/resizable-box-popover/index.cjs +1 -1
  123. package/build/components/resizable-box-popover/index.cjs.map +1 -1
  124. package/build/components/resolution-tool/index.cjs.map +3 -3
  125. package/build/components/rich-text/event-listeners/enter.cjs +8 -22
  126. package/build/components/rich-text/event-listeners/enter.cjs.map +2 -2
  127. package/build/components/rich-text/format-edit.cjs.map +2 -2
  128. package/build/components/rich-text/index.cjs +20 -0
  129. package/build/components/rich-text/index.cjs.map +2 -2
  130. package/build/components/rich-text/multiline.cjs +10 -2
  131. package/build/components/rich-text/multiline.cjs.map +2 -2
  132. package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.cjs.map +2 -2
  133. package/build/components/typewriter/index.cjs.map +2 -2
  134. package/build/components/use-block-commands/index.cjs.map +2 -2
  135. package/build/components/writing-flow/index.cjs +3 -0
  136. package/build/components/writing-flow/index.cjs.map +2 -2
  137. package/build/components/writing-flow/use-clipboard-handler.cjs.map +2 -2
  138. package/build/components/writing-flow/use-selection-observer.cjs +5 -3
  139. package/build/components/writing-flow/use-selection-observer.cjs.map +2 -2
  140. package/build/hooks/align.cjs +3 -5
  141. package/build/hooks/align.cjs.map +2 -2
  142. package/build/hooks/background.cjs.map +2 -2
  143. package/build/hooks/block-bindings.cjs.map +2 -2
  144. package/build/hooks/border.cjs.map +2 -2
  145. package/build/hooks/contrast-checker.cjs.map +2 -2
  146. package/build/hooks/dimensions.cjs.map +2 -2
  147. package/build/hooks/duotone.cjs.map +2 -2
  148. package/build/hooks/elements.cjs.map +2 -2
  149. package/build/hooks/fit-text.cjs.map +2 -2
  150. package/build/hooks/gap.cjs +2 -1
  151. package/build/hooks/gap.cjs.map +3 -3
  152. package/build/hooks/index.cjs +4 -2
  153. package/build/hooks/index.cjs.map +3 -3
  154. package/build/hooks/layout-child.cjs.map +2 -2
  155. package/build/hooks/layout.cjs +15 -14
  156. package/build/hooks/layout.cjs.map +3 -3
  157. package/build/hooks/position.cjs +3 -31
  158. package/build/hooks/position.cjs.map +2 -2
  159. package/build/hooks/states.cjs +3 -2
  160. package/build/hooks/states.cjs.map +2 -2
  161. package/build/hooks/text-shadow.cjs +100 -0
  162. package/build/hooks/text-shadow.cjs.map +7 -0
  163. package/build/hooks/typography.cjs +30 -6
  164. package/build/hooks/typography.cjs.map +2 -2
  165. package/build/hooks/utils.cjs +24 -2
  166. package/build/hooks/utils.cjs.map +2 -2
  167. package/build/layouts/grid.cjs.map +2 -2
  168. package/build/layouts/utils.cjs +7 -2
  169. package/build/layouts/utils.cjs.map +2 -2
  170. package/build/private-apis.cjs +9 -6
  171. package/build/private-apis.cjs.map +2 -2
  172. package/build/store/actions.cjs +26 -4
  173. package/build/store/actions.cjs.map +3 -3
  174. package/build/store/private-selectors.cjs.map +2 -2
  175. package/build/store/reducer.cjs.map +2 -2
  176. package/build/store/selectors.cjs.map +2 -2
  177. package/build/utils/get-font-styles-and-weights.cjs.map +2 -2
  178. package/build/utils/transform-styles/index.cjs.map +1 -1
  179. package/build-module/autocompleters/block.mjs.map +2 -2
  180. package/build-module/components/alignment-control/ui.mjs.map +2 -2
  181. package/build-module/components/background-image-control/index.mjs +2 -2
  182. package/build-module/components/background-image-control/index.mjs.map +2 -2
  183. package/build-module/components/block-alignment-control/ui.mjs +21 -7
  184. package/build-module/components/block-alignment-control/ui.mjs.map +2 -2
  185. package/build-module/components/block-alignment-control/use-available-alignments.mjs +56 -13
  186. package/build-module/components/block-alignment-control/use-available-alignments.mjs.map +2 -2
  187. package/build-module/components/block-allowed-blocks/allowed-blocks-control.mjs.map +2 -2
  188. package/build-module/components/block-bindings/attribute-control.mjs +31 -32
  189. package/build-module/components/block-bindings/attribute-control.mjs.map +2 -2
  190. package/build-module/components/block-bindings/source-fields-list.mjs +25 -30
  191. package/build-module/components/block-bindings/source-fields-list.mjs.map +2 -2
  192. package/build-module/components/block-canvas/index.mjs.map +2 -2
  193. package/build-module/components/block-card/index.mjs +3 -8
  194. package/build-module/components/block-card/index.mjs.map +2 -2
  195. package/build-module/components/block-edit/edit.mjs.map +2 -2
  196. package/build-module/components/block-heading-level-dropdown/index.mjs.map +2 -2
  197. package/build-module/components/block-icon/index.mjs.map +2 -2
  198. package/build-module/components/block-inspector/edit-contents.mjs.map +2 -2
  199. package/build-module/components/block-inspector/index.mjs +29 -10
  200. package/build-module/components/block-inspector/index.mjs.map +2 -2
  201. package/build-module/components/block-keyboard-shortcuts/index.mjs.map +2 -2
  202. package/build-module/components/block-list/block-html.mjs +1 -2
  203. package/build-module/components/block-list/block-html.mjs.map +2 -2
  204. package/build-module/components/block-list/block.mjs +2 -4
  205. package/build-module/components/block-list/block.mjs.map +2 -2
  206. package/build-module/components/block-list/layout.mjs +1 -1
  207. package/build-module/components/block-list/layout.mjs.map +2 -2
  208. package/build-module/components/block-list/use-block-props/index.mjs.map +2 -2
  209. package/build-module/components/block-lock/modal.mjs +1 -3
  210. package/build-module/components/block-lock/modal.mjs.map +2 -2
  211. package/build-module/components/block-parent-selector/index.mjs +8 -5
  212. package/build-module/components/block-parent-selector/index.mjs.map +2 -2
  213. package/build-module/components/block-popover/index.mjs.map +2 -2
  214. package/build-module/components/block-rename/modal.mjs.map +2 -2
  215. package/build-module/components/block-settings-menu/block-settings-dropdown.mjs.map +2 -2
  216. package/build-module/components/block-styles/utils.mjs.map +2 -2
  217. package/build-module/components/block-switcher/index.mjs.map +2 -2
  218. package/build-module/components/block-toolbar/edit-section-button.mjs.map +2 -2
  219. package/build-module/components/block-toolbar/index.mjs +6 -4
  220. package/build-module/components/block-toolbar/index.mjs.map +2 -2
  221. package/build-module/components/block-toolbar/switch-section-style.mjs.map +2 -2
  222. package/build-module/components/block-variation-transforms/index.mjs +30 -21
  223. package/build-module/components/block-variation-transforms/index.mjs.map +2 -2
  224. package/build-module/components/block-visibility/modal.mjs.map +2 -2
  225. package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
  226. package/build-module/components/border-radius-control/index.mjs.map +2 -2
  227. package/build-module/components/color-palette/with-color-context.mjs.map +2 -2
  228. package/build-module/components/colors/with-colors.mjs.map +2 -2
  229. package/build-module/components/colors-gradients/control.mjs.map +2 -2
  230. package/build-module/components/contrast-checker/index.mjs.map +2 -2
  231. package/build-module/components/date-format-picker/index.mjs.map +2 -2
  232. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs +2 -2
  233. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs.map +2 -2
  234. package/build-module/components/dimensions-tool/width-height-tool.mjs.map +2 -2
  235. package/build-module/components/font-sizes/with-font-sizes.mjs.map +2 -2
  236. package/build-module/components/global-styles/background-panel.mjs +2 -2
  237. package/build-module/components/global-styles/background-panel.mjs.map +2 -2
  238. package/build-module/components/global-styles/border-panel.mjs +2 -2
  239. package/build-module/components/global-styles/border-panel.mjs.map +2 -2
  240. package/build-module/components/global-styles/color-gradient-dropdown-item.mjs +2 -2
  241. package/build-module/components/global-styles/color-gradient-dropdown-item.mjs.map +2 -2
  242. package/build-module/components/global-styles/color-panel.mjs +2 -2
  243. package/build-module/components/global-styles/color-panel.mjs.map +2 -2
  244. package/build-module/components/global-styles/dimensions-panel.mjs +2 -2
  245. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  246. package/build-module/components/global-styles/filters-panel.mjs +2 -2
  247. package/build-module/components/global-styles/filters-panel.mjs.map +2 -2
  248. package/build-module/components/global-styles/hooks.mjs +1 -0
  249. package/build-module/components/global-styles/hooks.mjs.map +2 -2
  250. package/build-module/components/global-styles/inheritance/index.mjs +2 -2
  251. package/build-module/components/global-styles/inheritance/index.mjs.map +2 -2
  252. package/build-module/components/global-styles/inherited-value-context.mjs +0 -5
  253. package/build-module/components/global-styles/inherited-value-context.mjs.map +2 -2
  254. package/build-module/components/global-styles/state-control-badges.mjs +0 -1
  255. package/build-module/components/global-styles/state-control-badges.mjs.map +2 -2
  256. package/build-module/components/global-styles/state-control.mjs +6 -4
  257. package/build-module/components/global-styles/state-control.mjs.map +2 -2
  258. package/build-module/components/global-styles/text-shadow-panel.mjs +224 -0
  259. package/build-module/components/global-styles/text-shadow-panel.mjs.map +7 -0
  260. package/build-module/components/global-styles/typography-panel.mjs +47 -6
  261. package/build-module/components/global-styles/typography-panel.mjs.map +2 -2
  262. package/build-module/components/global-styles/typography-utils.mjs.map +2 -2
  263. package/build-module/components/global-styles/utils.mjs.map +2 -2
  264. package/build-module/components/html-element-control/index.mjs +2 -2
  265. package/build-module/components/html-element-control/index.mjs.map +2 -2
  266. package/build-module/components/iframe/index.mjs.map +2 -2
  267. package/build-module/components/iframe/use-scale-canvas.mjs.map +2 -2
  268. package/build-module/components/image-size-control/index.mjs +2 -2
  269. package/build-module/components/image-size-control/index.mjs.map +2 -2
  270. package/build-module/components/inner-blocks/index.mjs +6 -1
  271. package/build-module/components/inner-blocks/index.mjs.map +2 -2
  272. package/build-module/components/inner-content/index.mjs.map +2 -2
  273. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.mjs +6 -24
  274. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.mjs.map +2 -2
  275. package/build-module/components/inserter/block-patterns-tab/utils.mjs +25 -0
  276. package/build-module/components/inserter/block-patterns-tab/utils.mjs.map +2 -2
  277. package/build-module/components/inserter/hooks/use-block-types-state.mjs.map +2 -2
  278. package/build-module/components/inserter/hooks/use-insertion-point.mjs.map +2 -2
  279. package/build-module/components/inserter/hooks/use-patterns-state.mjs.map +2 -2
  280. package/build-module/components/inserter/media-tab/media-panel.mjs.map +2 -2
  281. package/build-module/components/inserter/media-tab/media-preview.mjs.map +2 -2
  282. package/build-module/components/inserter-list-item/index.mjs.map +2 -2
  283. package/build-module/components/inspector-controls/list-view-content-popover.mjs.map +2 -2
  284. package/build-module/components/link-control/search-results.mjs.map +2 -2
  285. package/build-module/components/link-control/use-search-handler.mjs +3 -0
  286. package/build-module/components/link-control/use-search-handler.mjs.map +2 -2
  287. package/build-module/components/list-view/branch.mjs.map +2 -2
  288. package/build-module/components/list-view/drop-indicator.mjs.map +2 -2
  289. package/build-module/components/list-view/index.mjs.map +2 -2
  290. package/build-module/components/list-view/use-list-view-drop-zone.mjs.map +2 -2
  291. package/build-module/components/list-view/utils.mjs.map +2 -2
  292. package/build-module/components/media-replace-flow/index.mjs +4 -1
  293. package/build-module/components/media-replace-flow/index.mjs.map +2 -2
  294. package/build-module/components/plain-text/index.mjs +1 -2
  295. package/build-module/components/plain-text/index.mjs.map +2 -2
  296. package/build-module/components/preset-input-control/index.mjs.map +2 -2
  297. package/build-module/components/provider/index.mjs +3 -1
  298. package/build-module/components/provider/index.mjs.map +2 -2
  299. package/build-module/components/provider/use-block-sync.mjs.map +2 -2
  300. package/build-module/components/publish-date-time-picker/index.mjs.map +2 -2
  301. package/build-module/components/resizable-box-popover/index.mjs +1 -1
  302. package/build-module/components/resizable-box-popover/index.mjs.map +1 -1
  303. package/build-module/components/resolution-tool/index.mjs +2 -2
  304. package/build-module/components/resolution-tool/index.mjs.map +2 -2
  305. package/build-module/components/rich-text/event-listeners/enter.mjs +8 -22
  306. package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
  307. package/build-module/components/rich-text/format-edit.mjs.map +2 -2
  308. package/build-module/components/rich-text/index.mjs +21 -0
  309. package/build-module/components/rich-text/index.mjs.map +2 -2
  310. package/build-module/components/rich-text/multiline.mjs +11 -3
  311. package/build-module/components/rich-text/multiline.mjs.map +2 -2
  312. package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.mjs.map +2 -2
  313. package/build-module/components/typewriter/index.mjs.map +2 -2
  314. package/build-module/components/use-block-commands/index.mjs.map +2 -2
  315. package/build-module/components/writing-flow/index.mjs +3 -0
  316. package/build-module/components/writing-flow/index.mjs.map +2 -2
  317. package/build-module/components/writing-flow/use-clipboard-handler.mjs.map +2 -2
  318. package/build-module/components/writing-flow/use-selection-observer.mjs +5 -3
  319. package/build-module/components/writing-flow/use-selection-observer.mjs.map +2 -2
  320. package/build-module/hooks/align.mjs +6 -6
  321. package/build-module/hooks/align.mjs.map +2 -2
  322. package/build-module/hooks/background.mjs.map +2 -2
  323. package/build-module/hooks/block-bindings.mjs.map +2 -2
  324. package/build-module/hooks/border.mjs.map +2 -2
  325. package/build-module/hooks/contrast-checker.mjs.map +2 -2
  326. package/build-module/hooks/dimensions.mjs.map +2 -2
  327. package/build-module/hooks/duotone.mjs.map +2 -2
  328. package/build-module/hooks/elements.mjs.map +2 -2
  329. package/build-module/hooks/fit-text.mjs.map +2 -2
  330. package/build-module/hooks/gap.mjs +2 -1
  331. package/build-module/hooks/gap.mjs.map +2 -2
  332. package/build-module/hooks/index.mjs +4 -2
  333. package/build-module/hooks/index.mjs.map +2 -2
  334. package/build-module/hooks/layout-child.mjs.map +2 -2
  335. package/build-module/hooks/layout.mjs +6 -5
  336. package/build-module/hooks/layout.mjs.map +2 -2
  337. package/build-module/hooks/position.mjs +5 -33
  338. package/build-module/hooks/position.mjs.map +2 -2
  339. package/build-module/hooks/states.mjs +3 -2
  340. package/build-module/hooks/states.mjs.map +2 -2
  341. package/build-module/hooks/text-shadow.mjs +65 -0
  342. package/build-module/hooks/text-shadow.mjs.map +7 -0
  343. package/build-module/hooks/typography.mjs +30 -6
  344. package/build-module/hooks/typography.mjs.map +2 -2
  345. package/build-module/hooks/utils.mjs +24 -2
  346. package/build-module/hooks/utils.mjs.map +2 -2
  347. package/build-module/layouts/grid.mjs.map +2 -2
  348. package/build-module/layouts/utils.mjs +5 -1
  349. package/build-module/layouts/utils.mjs.map +2 -2
  350. package/build-module/private-apis.mjs +6 -2
  351. package/build-module/private-apis.mjs.map +2 -2
  352. package/build-module/store/actions.mjs +28 -5
  353. package/build-module/store/actions.mjs.map +3 -3
  354. package/build-module/store/private-selectors.mjs.map +2 -2
  355. package/build-module/store/reducer.mjs.map +2 -2
  356. package/build-module/store/selectors.mjs.map +2 -2
  357. package/build-module/utils/get-font-styles-and-weights.mjs.map +2 -2
  358. package/build-module/utils/transform-styles/index.mjs.map +1 -1
  359. package/build-style/content-rtl.css +7 -2
  360. package/build-style/content.css +7 -2
  361. package/build-style/style-rtl.css +90 -25
  362. package/build-style/style.css +92 -25
  363. package/package.json +42 -43
  364. package/src/autocompleters/block.jsx +4 -4
  365. package/src/components/alignment-control/ui.jsx +1 -1
  366. package/src/components/background-image-control/index.jsx +3 -3
  367. package/src/components/block-alignment-control/test/index.jsdom.test.jsx +267 -0
  368. package/src/components/block-alignment-control/ui.jsx +47 -9
  369. package/src/components/block-alignment-control/use-available-alignments.js +106 -20
  370. package/src/components/block-allowed-blocks/allowed-blocks-control.jsx +1 -1
  371. package/src/components/block-bindings/attribute-control.jsx +27 -29
  372. package/src/components/block-bindings/source-fields-list.jsx +22 -32
  373. package/src/components/block-bindings/test/attribute-control.jsdom.test.jsx +115 -0
  374. package/src/components/block-canvas/index.jsx +1 -1
  375. package/src/components/block-card/index.jsx +5 -11
  376. package/src/components/block-card/style.scss +1 -0
  377. package/src/components/block-edit/edit.jsx +1 -1
  378. package/src/components/block-heading-level-dropdown/index.jsx +1 -1
  379. package/src/components/block-icon/index.jsx +1 -1
  380. package/src/components/block-icon/test/index.browser.test.jsx +74 -0
  381. package/src/components/block-inspector/edit-contents.jsx +2 -2
  382. package/src/components/block-inspector/index.jsx +46 -15
  383. package/src/components/block-inspector/style.scss +16 -0
  384. package/src/components/block-keyboard-shortcuts/index.jsx +2 -2
  385. package/src/components/block-list/block-html.jsx +2 -3
  386. package/src/components/block-list/block.jsx +7 -5
  387. package/src/components/block-list/content.scss +3 -2
  388. package/src/components/block-list/layout.jsx +4 -1
  389. package/src/components/block-list/test/layout.jsdom.test.js +40 -0
  390. package/src/components/block-list/use-block-props/index.js +1 -1
  391. package/src/components/block-lock/modal.jsx +2 -3
  392. package/src/components/block-lock/style.scss +1 -1
  393. package/src/components/block-mover/style.scss +0 -13
  394. package/src/components/block-parent-selector/index.jsx +12 -6
  395. package/src/components/block-patterns-list/style.scss +1 -1
  396. package/src/components/block-popover/index.jsx +1 -1
  397. package/src/components/block-rename/modal.jsx +3 -3
  398. package/src/components/block-settings-menu/block-settings-dropdown.jsx +1 -1
  399. package/src/components/block-styles/utils.js +1 -1
  400. package/src/components/block-switcher/index.jsx +3 -3
  401. package/src/components/block-toolbar/edit-section-button.jsx +2 -2
  402. package/src/components/block-toolbar/index.jsx +8 -4
  403. package/src/components/block-toolbar/switch-section-style.jsx +1 -1
  404. package/src/components/block-variation-transforms/index.jsx +24 -23
  405. package/src/components/block-variation-transforms/test/index.jsdom.test.jsx +93 -0
  406. package/src/components/block-visibility/modal.jsx +7 -7
  407. package/src/components/block-visibility/style.scss +1 -1
  408. package/src/components/block-visibility/viewport-visibility-info.jsx +5 -7
  409. package/src/components/border-radius-control/index.jsx +2 -2
  410. package/src/components/border-radius-control/test/index.jsdom.test.jsx +0 -22
  411. package/src/components/border-radius-control/test/select.browser.test.js +30 -0
  412. package/src/components/color-palette/with-color-context.jsx +1 -1
  413. package/src/components/colors/with-colors.jsx +1 -1
  414. package/src/components/colors-gradients/control.jsx +2 -2
  415. package/src/components/colors-gradients/test/{control.jsdom.test.jsx → control.browser.test.jsx} +6 -9
  416. package/src/components/contrast-checker/index.jsx +2 -2
  417. package/src/components/date-format-picker/index.jsx +2 -2
  418. package/src/components/dimensions-tool/aspect-ratio-tool.jsx +4 -4
  419. package/src/components/dimensions-tool/test/index.jsdom.test.jsx +17 -11
  420. package/src/components/dimensions-tool/width-height-tool.jsx +2 -2
  421. package/src/components/font-sizes/with-font-sizes.jsx +2 -3
  422. package/src/components/global-styles/background-panel.jsx +2 -2
  423. package/src/components/global-styles/border-panel.jsx +2 -2
  424. package/src/components/global-styles/color-gradient-dropdown-item.jsx +3 -3
  425. package/src/components/global-styles/color-panel.jsx +3 -3
  426. package/src/components/global-styles/dimensions-panel.jsx +6 -6
  427. package/src/components/global-styles/filters-panel.jsx +2 -2
  428. package/src/components/global-styles/hooks.js +1 -0
  429. package/src/components/global-styles/inheritance/index.jsx +9 -6
  430. package/src/components/global-styles/inheritance/test/{index.jsdom.test.jsx → index.browser.test.jsx} +34 -28
  431. package/src/components/global-styles/inherited-value-context.js +1 -9
  432. package/src/components/global-styles/state-control-badges.jsx +0 -1
  433. package/src/components/global-styles/state-control.jsx +12 -3
  434. package/src/components/global-styles/style.scss +68 -0
  435. package/src/components/global-styles/test/{color-panel.jsdom.test.jsx → color-panel.browser.test.jsx} +53 -54
  436. package/src/components/global-styles/test/inherited-value-context-core.jsdom.test.js +17 -26
  437. package/src/components/global-styles/test/{typography-panel-core.jsdom.test.jsx → typography-panel-core.browser.test.jsx} +84 -39
  438. package/src/components/global-styles/test/{typography-panel.jsdom.test.jsx → typography-panel.browser.test.jsx} +80 -122
  439. package/src/components/global-styles/text-shadow-panel.tsx +257 -0
  440. package/src/components/global-styles/typography-panel.jsx +52 -13
  441. package/src/components/global-styles/typography-utils.js +2 -2
  442. package/src/components/global-styles/utils.js +1 -1
  443. package/src/components/html-element-control/index.jsx +2 -2
  444. package/src/components/iframe/index.jsx +1 -1
  445. package/src/components/iframe/use-scale-canvas.js +1 -1
  446. package/src/components/image-size-control/index.jsx +2 -2
  447. package/src/components/inner-blocks/index.jsx +9 -1
  448. package/src/components/inner-content/index.jsx +1 -1
  449. package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +7 -33
  450. package/src/components/inserter/block-patterns-tab/utils.js +44 -0
  451. package/src/components/inserter/hooks/use-block-types-state.js +2 -2
  452. package/src/components/inserter/hooks/use-insertion-point.js +1 -1
  453. package/src/components/inserter/hooks/use-patterns-state.js +1 -1
  454. package/src/components/inserter/media-tab/media-panel.jsx +9 -9
  455. package/src/components/inserter/media-tab/media-preview.jsx +1 -1
  456. package/src/components/inserter-list-item/index.jsx +1 -1
  457. package/src/components/inserter-list-item/style.scss +2 -2
  458. package/src/components/inspector-controls/list-view-content-popover.jsx +1 -1
  459. package/src/components/link-control/search-results.jsx +1 -1
  460. package/src/components/link-control/style.scss +1 -1
  461. package/src/components/link-control/test/index.jsdom.test.jsx +38 -110
  462. package/src/components/link-control/test/keyboard-selection.browser.test.js +110 -0
  463. package/src/components/link-control/use-search-handler.js +8 -3
  464. package/src/components/list-view/branch.jsx +1 -1
  465. package/src/components/list-view/drop-indicator.jsx +3 -3
  466. package/src/components/list-view/index.jsx +1 -1
  467. package/src/components/list-view/style.scss +1 -9
  468. package/src/components/list-view/use-list-view-drop-zone.js +1 -1
  469. package/src/components/list-view/utils.js +1 -1
  470. package/src/components/media-replace-flow/index.jsx +4 -1
  471. package/src/components/navigable-toolbar/test/index.browser.test.js +6 -7
  472. package/src/components/plain-text/README.md +3 -2
  473. package/src/components/plain-text/content.scss +0 -1
  474. package/src/components/plain-text/index.jsx +2 -3
  475. package/src/components/plain-text/style.scss +4 -0
  476. package/src/components/preset-input-control/index.jsx +2 -2
  477. package/src/components/preset-input-control/test/index.jsdom.test.jsx +0 -56
  478. package/src/components/preset-input-control/test/interaction.browser.test.js +63 -0
  479. package/src/components/provider/index.jsx +5 -3
  480. package/src/components/provider/use-block-sync.js +5 -5
  481. package/src/components/publish-date-time-picker/index.jsx +1 -1
  482. package/src/components/resizable-box-popover/index.jsx +1 -1
  483. package/src/components/resolution-tool/index.jsx +2 -2
  484. package/src/components/responsive-block-control/style.scss +1 -2
  485. package/src/components/responsive-block-control/test/index.jsdom.test.jsx +2 -2
  486. package/src/components/rich-text/event-listeners/enter.js +16 -23
  487. package/src/components/rich-text/format-edit.jsx +1 -1
  488. package/src/components/rich-text/index.jsx +39 -2
  489. package/src/components/rich-text/multiline.jsx +11 -3
  490. package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +1 -1
  491. package/src/components/spacing-sizes-control/test/index.jsdom.test.jsx +0 -21
  492. package/src/components/spacing-sizes-control/test/select.browser.test.js +58 -0
  493. package/src/components/typewriter/index.jsx +1 -1
  494. package/src/components/url-input/test/fixtures/validated-input-control-deprecation.js +1 -1
  495. package/src/components/use-block-commands/index.js +1 -1
  496. package/src/components/use-block-drop-zone/test/index.js +2 -2
  497. package/src/components/writing-flow/index.jsx +8 -0
  498. package/src/components/writing-flow/use-clipboard-handler.js +1 -1
  499. package/src/components/writing-flow/use-selection-observer.js +15 -6
  500. package/src/content.scss +1 -0
  501. package/src/hooks/align.jsx +22 -6
  502. package/src/hooks/background.jsx +1 -1
  503. package/src/hooks/block-bindings.jsx +1 -1
  504. package/src/hooks/block-hooks.scss +0 -6
  505. package/src/hooks/border.jsx +2 -2
  506. package/src/hooks/contrast-checker.js +1 -1
  507. package/src/hooks/dimensions.jsx +2 -2
  508. package/src/hooks/duotone.jsx +3 -3
  509. package/src/hooks/elements.jsx +3 -3
  510. package/src/hooks/fit-text.jsx +1 -1
  511. package/src/hooks/gap.js +2 -4
  512. package/src/hooks/index.js +3 -1
  513. package/src/hooks/layout-child.jsx +3 -4
  514. package/src/hooks/layout.jsx +17 -18
  515. package/src/hooks/position.jsx +5 -36
  516. package/src/hooks/states.jsx +6 -2
  517. package/src/hooks/test/layout.jsdom.test.js +44 -1
  518. package/src/hooks/text-shadow.ts +105 -0
  519. package/src/hooks/typography.jsx +58 -30
  520. package/src/hooks/utils.jsx +23 -1
  521. package/src/layouts/grid.jsx +2 -2
  522. package/src/layouts/test/flex.jsdom.test.jsx +4 -3
  523. package/src/layouts/test/utils.js +48 -1
  524. package/src/layouts/utils.js +19 -0
  525. package/src/private-apis.js +4 -0
  526. package/src/store/actions.js +50 -10
  527. package/src/store/private-selectors.js +5 -5
  528. package/src/store/reducer.js +6 -6
  529. package/src/store/selectors.js +3 -3
  530. package/src/store/test/actions.jsdom.test.js +60 -0
  531. package/src/style.scss +1 -0
  532. package/src/utils/get-font-styles-and-weights.ts +1 -1
  533. package/src/utils/transform-styles/index.ts +1 -1
  534. package/build/hooks/cross-origin-isolation.cjs +0 -56
  535. package/build/hooks/cross-origin-isolation.cjs.map +0 -7
  536. package/build-module/hooks/cross-origin-isolation.mjs +0 -54
  537. package/build-module/hooks/cross-origin-isolation.mjs.map +0 -7
  538. package/src/components/block-icon/test/__snapshots__/index.jsdom.test.jsx.snap +0 -27
  539. package/src/components/block-icon/test/index.jsdom.test.jsx +0 -67
  540. package/src/hooks/cross-origin-isolation.js +0 -73
  541. package/src/hooks/test/cross-origin-isolation.jsdom.test.js +0 -173
@@ -5,12 +5,14 @@ import {
5
5
  store as blocksStore,
6
6
  } from '@wordpress/blocks';
7
7
  import {
8
- ToggleControl,
9
- __experimentalSpacer as Spacer,
8
+ MenuGroup,
9
+ MenuItem,
10
10
  __unstableMotion as motion,
11
11
  } from '@wordpress/components';
12
12
  import { useDispatch, useSelect } from '@wordpress/data';
13
13
  import { useRef } from '@wordpress/element';
14
+ import { check } from '@wordpress/icons';
15
+ import { Text } from '@wordpress/ui';
14
16
  import EditContents from './edit-contents';
15
17
  import SkipToSelectedBlock from '../skip-to-selected-block';
16
18
  import BlockCard from '../block-card';
@@ -193,7 +195,7 @@ function BlockInspector() {
193
195
  const _renderedBlockClientId = isWithinEditedSection
194
196
  ? _selectedBlockClientId
195
197
  : getParentSectionBlock( _selectedBlockClientId ) ||
196
- _selectedBlockClientId;
198
+ _selectedBlockClientId;
197
199
  const _renderedBlockName =
198
200
  _renderedBlockClientId && getBlockName( _renderedBlockClientId );
199
201
  const _blockType =
@@ -419,11 +421,13 @@ const BlockInspectorSingleBlock = ( {
419
421
  } ) => {
420
422
  const listViewRef = useRef( null );
421
423
  const hasMultipleTabs = availableTabs?.length > 1;
422
- const hasPseudoState = hasPseudoBlockStyleState( selectedBlockStyleState );
423
424
  const isEditingStyleState =
424
425
  ( hasViewportBlockStyleState( selectedBlockStyleState ) &&
425
426
  isResponsiveEditing ) ||
426
427
  hasPseudoBlockStyleState( selectedBlockStyleState );
428
+ // When a style state is active, the badges replace the block description.
429
+ const showStateBadges =
430
+ blockEditingMode === 'default' && isEditingStyleState;
427
431
  const hasParentChildBlockCards =
428
432
  editedContentOnlySection &&
429
433
  editedContentOnlySection !== renderedBlockClientId;
@@ -458,6 +462,9 @@ const BlockInspectorSingleBlock = ( {
458
462
  ) }
459
463
  <BlockCard
460
464
  { ...blockInformation }
465
+ description={
466
+ showStateBadges ? undefined : blockInformation.description
467
+ }
461
468
  allowParentNavigation
462
469
  className={ isBlockSynced && 'is-synced' }
463
470
  isChild={ hasParentChildBlockCards }
@@ -469,25 +476,49 @@ const BlockInspectorSingleBlock = ( {
469
476
  name={ blockName }
470
477
  value={ selectedBlockStyleState }
471
478
  onChange={ onBlockStyleStateChange }
472
- />
479
+ >
480
+ <MenuGroup>
481
+ <MenuItem
482
+ role="menuitemcheckbox"
483
+ isSelected={ showStateOnCanvas }
484
+ icon={ showStateOnCanvas ? check : null }
485
+ // Previewing is only meaningful while a
486
+ // non-default pseudo state is selected.
487
+ disabled={
488
+ ! hasPseudoBlockStyleState(
489
+ selectedBlockStyleState
490
+ )
491
+ }
492
+ onClick={ () =>
493
+ onShowStateOnCanvasChange(
494
+ ! showStateOnCanvas
495
+ )
496
+ }
497
+ >
498
+ { __( 'Preview on canvas' ) }
499
+ </MenuItem>
500
+ </MenuGroup>
501
+ </BlockStatesControl>
473
502
  )
474
503
  }
475
504
  />
476
- { blockEditingMode === 'default' && isEditingStyleState && (
477
- <Spacer paddingX={ 4 } paddingY={ 2 }>
478
- { hasPseudoState && (
479
- <ToggleControl
480
- label={ __( 'Show state on canvas' ) }
481
- checked={ showStateOnCanvas }
482
- onChange={ onShowStateOnCanvasChange }
483
- />
484
- ) }
505
+ { showStateBadges && (
506
+ <div className="block-editor-block-inspector__state-badges">
507
+ <Text
508
+ variant="body-sm"
509
+ className="block-editor-block-inspector__state-badges-text"
510
+ >
511
+ {
512
+ /* translators: Instructive text shown before the style state badges in the block inspector; the badges indicate the style states the user is currently editing. */
513
+ __( 'Editing:' )
514
+ }
515
+ </Text>
485
516
  <BlockStateBadges
486
517
  name={ blockName }
487
518
  value={ selectedBlockStyleState }
488
519
  isResponsiveEditing={ isResponsiveEditing }
489
520
  />
490
- </Spacer>
521
+ </div>
491
522
  ) }
492
523
  <ViewportVisibilityInfo clientId={ renderedBlockClientId } />
493
524
  <EditContents clientId={ renderedBlockClientId } />
@@ -51,6 +51,22 @@
51
51
  text-align: center;
52
52
  }
53
53
 
54
+ // Styles for the style state badges row, shown when a style state is
55
+ // active. The badges replace the block description, so the row is pulled up
56
+ // against the block card to match the description's spacing.
57
+ .block-editor-block-inspector__state-badges {
58
+ display: flex;
59
+ align-items: center;
60
+ flex-wrap: wrap;
61
+ gap: $grid-unit-10;
62
+ padding: $grid-unit-10 $grid-unit-20;
63
+ margin-top: -$grid-unit-20;
64
+ }
65
+
66
+ .block-editor-block-inspector__state-badges-text {
67
+ white-space: nowrap;
68
+ }
69
+
54
70
  .block-editor-block-inspector__no-block-tools {
55
71
  border-top: $border-width solid $gray-300;
56
72
  }
@@ -67,7 +67,7 @@ function useApplyBlockShortcut() {
67
67
  const variation = variationName
68
68
  ? getBlockVariations( targetBlockName )?.find(
69
69
  ( { name } ) => name === variationName
70
- )
70
+ )
71
71
  : undefined;
72
72
 
73
73
  // The block is already of the target type, so there is nothing to
@@ -111,7 +111,7 @@ function useApplyBlockShortcut() {
111
111
  ...newBlock.attributes,
112
112
  ...variation.attributes,
113
113
  },
114
- }
114
+ }
115
115
  : newBlock
116
116
  );
117
117
  }
@@ -1,4 +1,3 @@
1
- import TextareaAutosize from 'react-autosize-textarea';
2
1
  import { useEffect, useMemo, useState } from '@wordpress/element';
3
2
  import { useSelect, useDispatch } from '@wordpress/data';
4
3
  import {
@@ -49,7 +48,7 @@ function BlockHTML( { clientId } ) {
49
48
  ...block,
50
49
  attributes,
51
50
  originalContent: content,
52
- } )
51
+ } )
53
52
  : [ true ];
54
53
 
55
54
  updateBlock( clientId, {
@@ -69,7 +68,7 @@ function BlockHTML( { clientId } ) {
69
68
  }, [ blockContent ] );
70
69
 
71
70
  return (
72
- <TextareaAutosize
71
+ <textarea
73
72
  className="block-editor-block-list__block-html-textarea"
74
73
  value={ html }
75
74
  onBlur={ onChange }
@@ -391,12 +391,14 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
391
391
  }
392
392
  }
393
393
 
394
+ // The store might have already removed the wrapper if
395
+ // it was unmodified. However, we still want to remove
396
+ // the wrapper unless there is content like a cite.
397
+ const wrapper = getBlock( _clientId );
394
398
  if (
399
+ wrapper &&
395
400
  ! getBlockOrder( _clientId ).length &&
396
- isUnmodifiedBlock(
397
- getBlock( _clientId ),
398
- 'content'
399
- )
401
+ isUnmodifiedBlock( wrapper, 'content' )
400
402
  ) {
401
403
  removeBlock( _clientId, false );
402
404
  }
@@ -575,7 +577,7 @@ function BlockListBlockProvider( props ) {
575
577
  clientId: ghostBlock.clientId,
576
578
  name: ghostBlock.name,
577
579
  isValid: true,
578
- }
580
+ }
579
581
  : undefined,
580
582
  [ ghostBlock ]
581
583
  );
@@ -369,7 +369,8 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection="true"] .b
369
369
  box-sizing: border-box;
370
370
  box-shadow: inset 0 0 0 $border-width $gray-900;
371
371
  resize: none;
372
- overflow: hidden;
372
+ field-sizing: content;
373
+ overflow: auto;
373
374
  font-family: $editor-html-font;
374
375
  font-size: $text-editor-font-size;
375
376
  line-height: 1.5;
@@ -402,7 +403,7 @@ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection="true"] .b
402
403
  font-size: $default-font-size;
403
404
  font-family: $default-font;
404
405
  color: $black;
405
- font-weight: normal;
406
+ font-weight: 400;
406
407
 
407
408
  .is-zoomed-out & {
408
409
  // Maintains an absolute font-size by counter-scaling based on the zoom level.
@@ -22,7 +22,10 @@ export function useLayout() {
22
22
  export function LayoutStyle( { layout = {}, css, ...props } ) {
23
23
  const layoutType = getLayoutType( layout.type );
24
24
  const [ blockGapSupport ] = useSettings( 'spacing.blockGap' );
25
- const hasBlockGapSupport = blockGapSupport !== null;
25
+ // Like the server's `isset()` check, an unset or `null` setting means the
26
+ // theme has not opted into block gap.
27
+ const hasBlockGapSupport =
28
+ blockGapSupport !== null && blockGapSupport !== undefined;
26
29
 
27
30
  if ( layoutType ) {
28
31
  if ( css ) {
@@ -0,0 +1,40 @@
1
+ import { describe, expect, it, vi } from 'vitest';
2
+ import { render } from '@testing-library/react';
3
+ import { createElement } from '@wordpress/element';
4
+ import { LayoutStyle } from '../layout';
5
+ import { useSettings } from '../../use-settings';
6
+
7
+ vi.mock( import( '../../use-settings' ), async ( importOriginal ) => ( {
8
+ ...( await importOriginal() ),
9
+ useSettings: vi.fn(),
10
+ } ) );
11
+
12
+ describe( 'LayoutStyle', () => {
13
+ const props = {
14
+ layout: { type: 'flex' },
15
+ style: { spacing: { blockGap: '10px' } },
16
+ selector: '.my-container',
17
+ blockName: 'test/block',
18
+ };
19
+
20
+ it.each( [ null, undefined ] )(
21
+ 'outputs no layout styles when the block gap setting is %s',
22
+ ( blockGapSetting ) => {
23
+ useSettings.mockReturnValue( [ blockGapSetting ] );
24
+
25
+ const { container } = render( createElement( LayoutStyle, props ) );
26
+
27
+ expect( container ).toBeEmptyDOMElement();
28
+ }
29
+ );
30
+
31
+ it( 'outputs block gap styles when the theme opts into block gap', () => {
32
+ useSettings.mockReturnValue( [ true ] );
33
+
34
+ const { container } = render( createElement( LayoutStyle, props ) );
35
+
36
+ expect( container.innerHTML ).toContain(
37
+ '.my-container { gap: 10px; }'
38
+ );
39
+ } );
40
+ } );
@@ -190,7 +190,7 @@ export function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {
190
190
  '--wp-admin-theme-color': 'var(--wp-block-synced-color)',
191
191
  '--wp-admin-theme-color--rgb':
192
192
  'var(--wp-block-synced-color--rgb)',
193
- }
193
+ }
194
194
  : {};
195
195
 
196
196
  // Use block visibility hook with data from context to avoid extra subscription.
@@ -52,9 +52,8 @@ export default function BlockLockModal( { clientId, onClose } ) {
52
52
  },
53
53
  [ clientId ]
54
54
  );
55
- const [ applyTemplateLock, setApplyTemplateLock ] = useState(
56
- !! templateLock
57
- );
55
+ const [ applyTemplateLock, setApplyTemplateLock ] =
56
+ useState( !! templateLock );
58
57
  const { updateBlockAttributes } = useDispatch( blockEditorStore );
59
58
  const blockInformation = useBlockDisplayInformation( clientId );
60
59
 
@@ -44,7 +44,7 @@
44
44
  .block-editor-block-lock-modal__lock-icon {
45
45
  flex-shrink: 0;
46
46
  margin-right: $grid-unit-15;
47
- fill: $gray-900;
47
+ color: $gray-900;
48
48
  }
49
49
 
50
50
  &:hover {
@@ -96,17 +96,4 @@
96
96
  animation-fill-mode: forwards;
97
97
  }
98
98
  }
99
-
100
- // Don't show the focus inherited by the Button component.
101
- &:focus,
102
- &:focus:enabled,
103
- // Override focus styles from the block toolbar
104
- &:focus::before {
105
- box-shadow: none;
106
- outline: none;
107
- }
108
-
109
- &:focus-visible::before {
110
- @include block-toolbar-button-style__focus();
111
- }
112
99
  }
@@ -25,6 +25,7 @@ export default function BlockParentSelector() {
25
25
  getBlockParents,
26
26
  getSelectedBlockClientIds,
27
27
  getParentSectionBlock,
28
+ getEnabledBlockParents,
28
29
  getBlockName,
29
30
  getNextBlockClientId,
30
31
  } = unlock( select( blockEditorStore ) );
@@ -37,7 +38,12 @@ export default function BlockParentSelector() {
37
38
  );
38
39
  const parents = getBlockParents( selectedBlockClientId );
39
40
  const immediateParentClientId = parents[ parents.length - 1 ];
40
- const _parentClientId = parentSection ?? immediateParentClientId;
41
+ // The parent is the nearest one shown in List View and the
42
+ // breadcrumb, skipping any disabled blocks in between.
43
+ const _parentClientId = getEnabledBlockParents(
44
+ selectedBlockClientId,
45
+ true
46
+ )[ 0 ];
41
47
  const parentBlockType = getBlockType(
42
48
  getBlockName( _parentClientId )
43
49
  );
@@ -53,12 +59,12 @@ export default function BlockParentSelector() {
53
59
  nextSiblingClientId: getNextBlockClientId(
54
60
  selectedBlockClientId
55
61
  ),
56
- // When the shown parent is a section further up the tree
57
- // rather than the direct parent, its content is locked and
58
- // nothing can be inserted, so no button.
62
+ // No button when the parent shown is not the direct parent, nor
63
+ // within a section, where the structure is locked.
59
64
  showInserter:
60
65
  !! _parentClientId &&
61
66
  _parentClientId === immediateParentClientId &&
67
+ ! parentSection &&
62
68
  ! isTextFlowWrapper,
63
69
  };
64
70
  },
@@ -129,11 +135,11 @@ export default function BlockParentSelector() {
129
135
  'directly add the only allowed block'
130
136
  ),
131
137
  blockTitle.toLowerCase()
132
- )
138
+ )
133
139
  : _x(
134
140
  'Add block',
135
141
  'Generic label for block inserter button'
136
- )
142
+ )
137
143
  }
138
144
  showTooltip
139
145
  icon={ plus }
@@ -82,7 +82,7 @@
82
82
  height: 24px;
83
83
 
84
84
  .block-editor-patterns__pattern-icon {
85
- fill: var(--wp-block-synced-color);
85
+ color: var(--wp-block-synced-color);
86
86
  }
87
87
  }
88
88
  }
@@ -91,7 +91,7 @@ function BlockPopover(
91
91
  ? rectUnion(
92
92
  getElementBounds( selectedElement ),
93
93
  getElementBounds( lastSelectedElement )
94
- )
94
+ )
95
95
  : getElementBounds( selectedElement );
96
96
  },
97
97
  contextElement: selectedElement,
@@ -59,12 +59,12 @@ export default function BlockRenameModal( { clientId, onClose } ) {
59
59
  /* translators: %s: new name/label for the block */
60
60
  __( 'Block name reset to: "%s".' ),
61
61
  editedBlockName
62
- )
62
+ )
63
63
  : sprintf(
64
64
  /* translators: %s: new name/label for the block */
65
65
  __( 'Block name changed to: "%s".' ),
66
66
  editedBlockName
67
- );
67
+ );
68
68
 
69
69
  // Must be assertive to immediately announce change.
70
70
  speak( message, 'assertive' );
@@ -106,7 +106,7 @@ export default function BlockRenameModal( { clientId, onClose } ) {
106
106
  hasOverridesWarning
107
107
  ? __(
108
108
  'This block allows overrides. Changing the name can cause problems with content entered into instances of this pattern.'
109
- )
109
+ )
110
110
  : undefined
111
111
  }
112
112
  placeholder={ originalBlockName }
@@ -379,7 +379,7 @@ export function BlockSettingsDropdown( {
379
379
  ? children( { onClose } )
380
380
  : Children.map( ( child ) =>
381
381
  cloneElement( child, { onClose } )
382
- ) }
382
+ ) }
383
383
  { canRemove && (
384
384
  <MenuGroup>
385
385
  <MenuItem
@@ -72,7 +72,7 @@ export function getRenderedStyles( styles ) {
72
72
  isDefault: true,
73
73
  },
74
74
  ...styles,
75
- ];
75
+ ];
76
76
  }
77
77
 
78
78
  /**
@@ -131,11 +131,11 @@ function BlockSwitcherDropdownMenuContents( { onClose, clientIds } ) {
131
131
  ? _x(
132
132
  'This block is connected.',
133
133
  'block toolbar button label and description'
134
- )
134
+ )
135
135
  : _x(
136
136
  'These blocks are connected.',
137
137
  'block toolbar button label and description'
138
- );
138
+ );
139
139
 
140
140
  return (
141
141
  <div className="block-editor-block-switcher__container">
@@ -199,7 +199,7 @@ export const BlockSwitcher = ( { children, clientIds, label, text } ) => {
199
199
  clientIds.length
200
200
  ),
201
201
  clientIds.length
202
- );
202
+ );
203
203
  return (
204
204
  <ToolbarGroup>
205
205
  <ToolbarItem>
@@ -53,9 +53,9 @@ export default function EditSectionButton( { clientId } ) {
53
53
  <ToolbarButton onClick={ handleClick }>
54
54
  { isEditing
55
55
  ? /* translators: Button label to leave pattern editing mode. */
56
- __( 'Exit pattern' )
56
+ __( 'Exit pattern' )
57
57
  : /* translators: Button label to enter pattern editing mode. */
58
- __( 'Edit pattern' ) }
58
+ __( 'Edit pattern' ) }
59
59
  </ToolbarButton>
60
60
  </ToolbarGroup>
61
61
  );
@@ -75,7 +75,6 @@ export function PrivateBlockToolbar( {
75
75
  const {
76
76
  getBlockName,
77
77
  getBlockMode,
78
- getBlockParents,
79
78
  getSelectedBlockClientIds,
80
79
  isBlockValid,
81
80
  getBlockEditingMode,
@@ -83,6 +82,7 @@ export function PrivateBlockToolbar( {
83
82
  getSettings,
84
83
  getTemplateLock,
85
84
  getParentSectionBlock,
85
+ getEnabledBlockParents,
86
86
  isZoomOut,
87
87
  isSectionBlock,
88
88
  isBlockHiddenAtViewport,
@@ -91,9 +91,13 @@ export function PrivateBlockToolbar( {
91
91
  } = unlock( select( blockEditorStore ) );
92
92
  const selectedBlockClientIds = getSelectedBlockClientIds();
93
93
  const selectedBlockClientId = selectedBlockClientIds[ 0 ];
94
- const parents = getBlockParents( selectedBlockClientId );
95
94
  const parentSection = getParentSectionBlock( selectedBlockClientId );
96
- const parentClientId = parentSection ?? parents[ parents.length - 1 ];
95
+ // The parent is the nearest one shown in List View and the breadcrumb,
96
+ // skipping any disabled blocks in between.
97
+ const parentClientId = getEnabledBlockParents(
98
+ selectedBlockClientId,
99
+ true
100
+ )[ 0 ];
97
101
  const parentBlockName = getBlockName( parentClientId );
98
102
  const parentBlockType = getBlockType( parentBlockName );
99
103
  const editingMode = getBlockEditingMode( selectedBlockClientId );
@@ -144,7 +148,7 @@ export function PrivateBlockToolbar( {
144
148
  showParentSelector:
145
149
  ! _isZoomOut &&
146
150
  parentBlockType &&
147
- editingMode !== 'contentOnly' &&
151
+ ( editingMode !== 'contentOnly' || !! parentSection ) &&
148
152
  getBlockEditingMode( parentClientId ) !== 'disabled' &&
149
153
  hasBlockSupport(
150
154
  parentBlockType,
@@ -62,7 +62,7 @@ function SwitchSectionStyle( { clientId } ) {
62
62
  },
63
63
  blockName,
64
64
  activeStyle.name
65
- )?.color?.background
65
+ )?.color?.background
66
66
  : undefined;
67
67
 
68
68
  if ( ! stylesToRender || stylesToRender.length === 0 ) {
@@ -4,17 +4,15 @@ import {
4
4
  Button,
5
5
  __experimentalToggleGroupControl as ToggleGroupControl,
6
6
  __experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,
7
- privateApis as componentsPrivateApis,
8
7
  } from '@wordpress/components';
9
- import { VisuallyHidden } from '@wordpress/ui';
8
+ // eslint-disable-next-line @wordpress/use-recommended-components -- Intentional early adoption of the new Menu, pending WordPress/gutenberg#76135.
9
+ import { Menu, VisuallyHidden } from '@wordpress/ui';
10
10
  import { useSelect, useDispatch } from '@wordpress/data';
11
11
  import { useMemo } from '@wordpress/element';
12
12
  import BlockIcon from '../block-icon';
13
13
  import { store as blockEditorStore } from '../../store';
14
14
  import { unlock } from '../../lock-unlock';
15
15
 
16
- const { Menu } = unlock( componentsPrivateApis );
17
-
18
16
  function VariationsButtons( {
19
17
  className,
20
18
  onSelectVariation,
@@ -40,7 +38,7 @@ function VariationsButtons( {
40
38
  /* translators: %s: Block or block variation name. */
41
39
  __( 'Transform to %s' ),
42
40
  variation.title
43
- )
41
+ )
44
42
  }
45
43
  onClick={ () => onSelectVariation( variation.name ) }
46
44
  aria-label={ variation.title }
@@ -59,42 +57,45 @@ function VariationsDropdown( {
59
57
  } ) {
60
58
  return (
61
59
  <div className={ className }>
62
- <Menu>
63
- <Menu.TriggerButton
60
+ <Menu.Root>
61
+ <Menu.Trigger
64
62
  render={
65
63
  <Button
66
64
  className="block-editor-block-variation-transforms__button"
67
65
  __next40pxDefaultSize
68
66
  variant="secondary"
69
- >
70
- { __( 'Transform to variation' ) }
71
- </Button>
67
+ />
72
68
  }
73
- />
74
- <Menu.Popover position="bottom">
75
- <Menu.Group>
69
+ >
70
+ { __( 'Transform to variation' ) }
71
+ </Menu.Trigger>
72
+ <Menu.Popup
73
+ positioner={
74
+ <Menu.Positioner side="bottom" align="start" />
75
+ }
76
+ >
77
+ <Menu.RadioGroup
78
+ value={ selectedValue ?? null }
79
+ onValueChange={ onSelectVariation }
80
+ >
76
81
  { variations.map( ( variation ) => (
77
82
  <Menu.RadioItem
78
83
  key={ variation.name }
79
84
  value={ variation.name }
80
- checked={ selectedValue === variation.name }
81
- onChange={ () =>
82
- onSelectVariation( variation.name )
83
- }
84
85
  >
85
86
  <Menu.ItemLabel>
86
87
  { variation.title }
87
88
  </Menu.ItemLabel>
88
89
  { variation.description && (
89
- <Menu.ItemHelpText>
90
+ <Menu.ItemDescription>
90
91
  { variation.description }
91
- </Menu.ItemHelpText>
92
+ </Menu.ItemDescription>
92
93
  ) }
93
94
  </Menu.RadioItem>
94
95
  ) ) }
95
- </Menu.Group>
96
- </Menu.Popover>
97
- </Menu>
96
+ </Menu.RadioGroup>
97
+ </Menu.Popup>
98
+ </Menu.Root>
98
99
  </div>
99
100
  );
100
101
  }
@@ -127,7 +128,7 @@ function VariationsToggleGroupControl( {
127
128
  /* translators: %s: Block or block variation name. */
128
129
  __( 'Transform to %s' ),
129
130
  variation.title
130
- )
131
+ )
131
132
  }
132
133
  />
133
134
  ) ) }