@wordpress/block-editor 15.23.0 → 16.0.1-next.v.202607070741.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 (363) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/build/autocompleters/block.cjs +10 -2
  3. package/build/autocompleters/block.cjs.map +2 -2
  4. package/build/components/background-image-control/index.cjs +0 -2
  5. package/build/components/background-image-control/index.cjs.map +2 -2
  6. package/build/components/block-inspector/edit-contents.cjs +3 -0
  7. package/build/components/block-inspector/edit-contents.cjs.map +3 -3
  8. package/build/components/block-inspector/index.cjs +2 -3
  9. package/build/components/block-inspector/index.cjs.map +2 -2
  10. package/build/components/block-list/block-invalid-warning.cjs +8 -19
  11. package/build/components/block-list/block-invalid-warning.cjs.map +2 -2
  12. package/build/components/block-styles/use-styles-for-block.cjs +2 -1
  13. package/build/components/block-styles/use-styles-for-block.cjs.map +2 -2
  14. package/build/components/block-title/use-block-display-title.cjs +7 -2
  15. package/build/components/block-title/use-block-display-title.cjs.map +2 -2
  16. package/build/components/block-toolbar/block-toolbar-icon.cjs +10 -14
  17. package/build/components/block-toolbar/block-toolbar-icon.cjs.map +2 -2
  18. package/build/components/block-variation-transforms/index.cjs +0 -1
  19. package/build/components/block-variation-transforms/index.cjs.map +2 -2
  20. package/build/components/child-layout-control/index.cjs +0 -2
  21. package/build/components/child-layout-control/index.cjs.map +2 -2
  22. package/build/components/colors-gradients/control.cjs +5 -5
  23. package/build/components/colors-gradients/control.cjs.map +2 -2
  24. package/build/components/date-format-picker/index.cjs +0 -1
  25. package/build/components/date-format-picker/index.cjs.map +2 -2
  26. package/build/components/dimensions-tool/aspect-ratio-tool.cjs +1 -2
  27. package/build/components/dimensions-tool/aspect-ratio-tool.cjs.map +2 -2
  28. package/build/components/dimensions-tool/scale-tool.cjs +0 -1
  29. package/build/components/dimensions-tool/scale-tool.cjs.map +2 -2
  30. package/build/components/dimensions-tool/width-height-tool.cjs +2 -4
  31. package/build/components/dimensions-tool/width-height-tool.cjs.map +2 -2
  32. package/build/components/font-appearance-control/index.cjs +6 -25
  33. package/build/components/font-appearance-control/index.cjs.map +3 -3
  34. package/build/components/font-family/index.cjs +6 -15
  35. package/build/components/font-family/index.cjs.map +3 -3
  36. package/build/components/font-sizes/font-size-picker.cjs +1 -2
  37. package/build/components/font-sizes/font-size-picker.cjs.map +2 -2
  38. package/build/components/global-styles/border-panel.cjs +0 -1
  39. package/build/components/global-styles/border-panel.cjs.map +2 -2
  40. package/build/components/global-styles/dimensions-panel.cjs +0 -3
  41. package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
  42. package/build/components/global-styles/typography-panel.cjs +4 -10
  43. package/build/components/global-styles/typography-panel.cjs.map +2 -2
  44. package/build/components/height-control/index.cjs +0 -2
  45. package/build/components/height-control/index.cjs.map +2 -2
  46. package/build/components/html-element-control/index.cjs +0 -1
  47. package/build/components/html-element-control/index.cjs.map +2 -2
  48. package/build/components/image-editor/index.cjs +5 -0
  49. package/build/components/image-editor/index.cjs.map +3 -3
  50. package/build/components/image-editor/zoom-dropdown.cjs +0 -1
  51. package/build/components/image-editor/zoom-dropdown.cjs.map +2 -2
  52. package/build/components/image-size-control/index.cjs +1 -3
  53. package/build/components/image-size-control/index.cjs.map +2 -2
  54. package/build/components/inner-content/index.cjs +107 -0
  55. package/build/components/inner-content/index.cjs.map +7 -0
  56. package/build/components/inserter/hooks/use-block-types-state.cjs +10 -2
  57. package/build/components/inserter/hooks/use-block-types-state.cjs.map +2 -2
  58. package/build/components/inserter/media-tab/hooks.cjs +34 -6
  59. package/build/components/inserter/media-tab/hooks.cjs.map +2 -2
  60. package/build/components/inserter/media-tab/media-list.cjs +3 -1
  61. package/build/components/inserter/media-tab/media-list.cjs.map +2 -2
  62. package/build/components/inserter/media-tab/media-panel.cjs +224 -27
  63. package/build/components/inserter/media-tab/media-panel.cjs.map +3 -3
  64. package/build/components/inserter/media-tab/media-preview.cjs +32 -17
  65. package/build/components/inserter/media-tab/media-preview.cjs.map +2 -2
  66. package/build/components/inserter/media-tab/media-tab.cjs +26 -6
  67. package/build/components/inserter/media-tab/media-tab.cjs.map +2 -2
  68. package/build/components/inserter/mobile-tab-navigation.cjs +6 -1
  69. package/build/components/inserter/mobile-tab-navigation.cjs.map +2 -2
  70. package/build/components/inserter/no-results.cjs +2 -2
  71. package/build/components/inserter/no-results.cjs.map +2 -2
  72. package/build/components/inserter/preview-panel.cjs +2 -1
  73. package/build/components/inserter/preview-panel.cjs.map +2 -2
  74. package/build/components/inserter-list-item/index.cjs +8 -2
  75. package/build/components/inserter-list-item/index.cjs.map +2 -2
  76. package/build/components/letter-spacing-control/index.cjs +0 -24
  77. package/build/components/letter-spacing-control/index.cjs.map +3 -3
  78. package/build/components/line-height-control/index.cjs +7 -22
  79. package/build/components/line-height-control/index.cjs.map +3 -3
  80. package/build/components/list-view/block-select-button.cjs +90 -84
  81. package/build/components/list-view/block-select-button.cjs.map +2 -2
  82. package/build/components/list-view/block.cjs +51 -20
  83. package/build/components/list-view/block.cjs.map +2 -2
  84. package/build/components/list-view/expander.cjs +1 -1
  85. package/build/components/list-view/expander.cjs.map +2 -2
  86. package/build/components/list-view/use-list-view-client-ids.cjs +2 -2
  87. package/build/components/list-view/use-list-view-client-ids.cjs.map +2 -2
  88. package/build/components/observe-typing/index.cjs +4 -3
  89. package/build/components/observe-typing/index.cjs.map +2 -2
  90. package/build/components/preset-input-control/custom-value-controls.cjs +1 -3
  91. package/build/components/preset-input-control/custom-value-controls.cjs.map +2 -2
  92. package/build/components/preset-input-control/index.cjs +1 -3
  93. package/build/components/preset-input-control/index.cjs.map +2 -2
  94. package/build/components/resolution-tool/index.cjs +1 -2
  95. package/build/components/resolution-tool/index.cjs.map +2 -2
  96. package/build/components/text-alignment-control/index.cjs +0 -1
  97. package/build/components/text-alignment-control/index.cjs.map +2 -2
  98. package/build/components/text-decoration-control/index.cjs +0 -1
  99. package/build/components/text-decoration-control/index.cjs.map +2 -2
  100. package/build/components/text-indent-control/index.cjs +0 -8
  101. package/build/components/text-indent-control/index.cjs.map +2 -2
  102. package/build/components/text-transform-control/index.cjs +0 -1
  103. package/build/components/text-transform-control/index.cjs.map +2 -2
  104. package/build/components/use-block-display-information/index.cjs +10 -8
  105. package/build/components/use-block-display-information/index.cjs.map +2 -2
  106. package/build/components/use-on-block-drop/index.cjs +3 -7
  107. package/build/components/use-on-block-drop/index.cjs.map +2 -2
  108. package/build/components/writing-mode-control/index.cjs +0 -1
  109. package/build/components/writing-mode-control/index.cjs.map +2 -2
  110. package/build/hooks/font-size.cjs +1 -2
  111. package/build/hooks/font-size.cjs.map +2 -2
  112. package/build/hooks/layout.cjs +5 -3
  113. package/build/hooks/layout.cjs.map +2 -2
  114. package/build/hooks/position.cjs +36 -16
  115. package/build/hooks/position.cjs.map +2 -2
  116. package/build/hooks/states.cjs +6 -9
  117. package/build/hooks/states.cjs.map +2 -2
  118. package/build/layouts/constrained.cjs +21 -21
  119. package/build/layouts/constrained.cjs.map +2 -2
  120. package/build/layouts/flex.cjs +0 -3
  121. package/build/layouts/flex.cjs.map +2 -2
  122. package/build/layouts/grid.cjs +51 -9
  123. package/build/layouts/grid.cjs.map +2 -2
  124. package/build/private-apis.cjs +4 -1
  125. package/build/private-apis.cjs.map +3 -3
  126. package/build/store/actions.cjs.map +2 -2
  127. package/build/store/private-keys.cjs +3 -0
  128. package/build/store/private-keys.cjs.map +2 -2
  129. package/build/store/private-selectors.cjs +72 -4
  130. package/build/store/private-selectors.cjs.map +2 -2
  131. package/build/store/selectors.cjs +13 -0
  132. package/build/store/selectors.cjs.map +2 -2
  133. package/build-module/autocompleters/block.mjs +10 -2
  134. package/build-module/autocompleters/block.mjs.map +2 -2
  135. package/build-module/components/background-image-control/index.mjs +0 -2
  136. package/build-module/components/background-image-control/index.mjs.map +2 -2
  137. package/build-module/components/block-inspector/edit-contents.mjs +4 -1
  138. package/build-module/components/block-inspector/edit-contents.mjs.map +2 -2
  139. package/build-module/components/block-inspector/index.mjs +2 -3
  140. package/build-module/components/block-inspector/index.mjs.map +2 -2
  141. package/build-module/components/block-list/block-invalid-warning.mjs +8 -19
  142. package/build-module/components/block-list/block-invalid-warning.mjs.map +2 -2
  143. package/build-module/components/block-styles/use-styles-for-block.mjs +2 -1
  144. package/build-module/components/block-styles/use-styles-for-block.mjs.map +2 -2
  145. package/build-module/components/block-title/use-block-display-title.mjs +7 -2
  146. package/build-module/components/block-title/use-block-display-title.mjs.map +2 -2
  147. package/build-module/components/block-toolbar/block-toolbar-icon.mjs +10 -14
  148. package/build-module/components/block-toolbar/block-toolbar-icon.mjs.map +2 -2
  149. package/build-module/components/block-variation-transforms/index.mjs +0 -1
  150. package/build-module/components/block-variation-transforms/index.mjs.map +2 -2
  151. package/build-module/components/child-layout-control/index.mjs +0 -2
  152. package/build-module/components/child-layout-control/index.mjs.map +2 -2
  153. package/build-module/components/colors-gradients/control.mjs +5 -5
  154. package/build-module/components/colors-gradients/control.mjs.map +2 -2
  155. package/build-module/components/date-format-picker/index.mjs +0 -1
  156. package/build-module/components/date-format-picker/index.mjs.map +2 -2
  157. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs +1 -2
  158. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs.map +2 -2
  159. package/build-module/components/dimensions-tool/scale-tool.mjs +0 -1
  160. package/build-module/components/dimensions-tool/scale-tool.mjs.map +2 -2
  161. package/build-module/components/dimensions-tool/width-height-tool.mjs +2 -4
  162. package/build-module/components/dimensions-tool/width-height-tool.mjs.map +2 -2
  163. package/build-module/components/font-appearance-control/index.mjs +6 -15
  164. package/build-module/components/font-appearance-control/index.mjs.map +2 -2
  165. package/build-module/components/font-family/index.mjs +6 -15
  166. package/build-module/components/font-family/index.mjs.map +2 -2
  167. package/build-module/components/font-sizes/font-size-picker.mjs +1 -2
  168. package/build-module/components/font-sizes/font-size-picker.mjs.map +2 -2
  169. package/build-module/components/global-styles/border-panel.mjs +0 -1
  170. package/build-module/components/global-styles/border-panel.mjs.map +2 -2
  171. package/build-module/components/global-styles/dimensions-panel.mjs +0 -3
  172. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  173. package/build-module/components/global-styles/typography-panel.mjs +4 -10
  174. package/build-module/components/global-styles/typography-panel.mjs.map +2 -2
  175. package/build-module/components/height-control/index.mjs +0 -2
  176. package/build-module/components/height-control/index.mjs.map +2 -2
  177. package/build-module/components/html-element-control/index.mjs +0 -1
  178. package/build-module/components/html-element-control/index.mjs.map +2 -2
  179. package/build-module/components/image-editor/index.mjs +5 -0
  180. package/build-module/components/image-editor/index.mjs.map +2 -2
  181. package/build-module/components/image-editor/zoom-dropdown.mjs +0 -1
  182. package/build-module/components/image-editor/zoom-dropdown.mjs.map +2 -2
  183. package/build-module/components/image-size-control/index.mjs +1 -3
  184. package/build-module/components/image-size-control/index.mjs.map +2 -2
  185. package/build-module/components/inner-content/index.mjs +82 -0
  186. package/build-module/components/inner-content/index.mjs.map +7 -0
  187. package/build-module/components/inserter/hooks/use-block-types-state.mjs +10 -2
  188. package/build-module/components/inserter/hooks/use-block-types-state.mjs.map +2 -2
  189. package/build-module/components/inserter/media-tab/hooks.mjs +33 -6
  190. package/build-module/components/inserter/media-tab/hooks.mjs.map +2 -2
  191. package/build-module/components/inserter/media-tab/media-list.mjs +3 -1
  192. package/build-module/components/inserter/media-tab/media-list.mjs.map +2 -2
  193. package/build-module/components/inserter/media-tab/media-panel.mjs +227 -30
  194. package/build-module/components/inserter/media-tab/media-panel.mjs.map +2 -2
  195. package/build-module/components/inserter/media-tab/media-preview.mjs +33 -18
  196. package/build-module/components/inserter/media-tab/media-preview.mjs.map +2 -2
  197. package/build-module/components/inserter/media-tab/media-tab.mjs +27 -7
  198. package/build-module/components/inserter/media-tab/media-tab.mjs.map +2 -2
  199. package/build-module/components/inserter/mobile-tab-navigation.mjs +6 -1
  200. package/build-module/components/inserter/mobile-tab-navigation.mjs.map +2 -2
  201. package/build-module/components/inserter/no-results.mjs +2 -2
  202. package/build-module/components/inserter/no-results.mjs.map +2 -2
  203. package/build-module/components/inserter/preview-panel.mjs +2 -1
  204. package/build-module/components/inserter/preview-panel.mjs.map +2 -2
  205. package/build-module/components/inserter-list-item/index.mjs +8 -2
  206. package/build-module/components/inserter-list-item/index.mjs.map +2 -2
  207. package/build-module/components/letter-spacing-control/index.mjs +0 -14
  208. package/build-module/components/letter-spacing-control/index.mjs.map +2 -2
  209. package/build-module/components/line-height-control/index.mjs +7 -12
  210. package/build-module/components/line-height-control/index.mjs.map +2 -2
  211. package/build-module/components/list-view/block-select-button.mjs +90 -84
  212. package/build-module/components/list-view/block-select-button.mjs.map +2 -2
  213. package/build-module/components/list-view/block.mjs +51 -20
  214. package/build-module/components/list-view/block.mjs.map +2 -2
  215. package/build-module/components/list-view/expander.mjs +1 -1
  216. package/build-module/components/list-view/expander.mjs.map +2 -2
  217. package/build-module/components/list-view/use-list-view-client-ids.mjs +2 -2
  218. package/build-module/components/list-view/use-list-view-client-ids.mjs.map +2 -2
  219. package/build-module/components/observe-typing/index.mjs +4 -3
  220. package/build-module/components/observe-typing/index.mjs.map +2 -2
  221. package/build-module/components/preset-input-control/custom-value-controls.mjs +1 -3
  222. package/build-module/components/preset-input-control/custom-value-controls.mjs.map +2 -2
  223. package/build-module/components/preset-input-control/index.mjs +1 -3
  224. package/build-module/components/preset-input-control/index.mjs.map +2 -2
  225. package/build-module/components/resolution-tool/index.mjs +1 -2
  226. package/build-module/components/resolution-tool/index.mjs.map +2 -2
  227. package/build-module/components/text-alignment-control/index.mjs +0 -1
  228. package/build-module/components/text-alignment-control/index.mjs.map +2 -2
  229. package/build-module/components/text-decoration-control/index.mjs +0 -1
  230. package/build-module/components/text-decoration-control/index.mjs.map +2 -2
  231. package/build-module/components/text-indent-control/index.mjs +0 -8
  232. package/build-module/components/text-indent-control/index.mjs.map +2 -2
  233. package/build-module/components/text-transform-control/index.mjs +0 -1
  234. package/build-module/components/text-transform-control/index.mjs.map +2 -2
  235. package/build-module/components/use-block-display-information/index.mjs +10 -8
  236. package/build-module/components/use-block-display-information/index.mjs.map +2 -2
  237. package/build-module/components/use-on-block-drop/index.mjs +4 -7
  238. package/build-module/components/use-on-block-drop/index.mjs.map +2 -2
  239. package/build-module/components/writing-mode-control/index.mjs +0 -1
  240. package/build-module/components/writing-mode-control/index.mjs.map +2 -2
  241. package/build-module/hooks/font-size.mjs +1 -2
  242. package/build-module/hooks/font-size.mjs.map +2 -2
  243. package/build-module/hooks/layout.mjs +4 -3
  244. package/build-module/hooks/layout.mjs.map +2 -2
  245. package/build-module/hooks/position.mjs +38 -18
  246. package/build-module/hooks/position.mjs.map +2 -2
  247. package/build-module/hooks/states.mjs +6 -9
  248. package/build-module/hooks/states.mjs.map +2 -2
  249. package/build-module/layouts/constrained.mjs +21 -21
  250. package/build-module/layouts/constrained.mjs.map +2 -2
  251. package/build-module/layouts/flex.mjs +0 -3
  252. package/build-module/layouts/flex.mjs.map +2 -2
  253. package/build-module/layouts/grid.mjs +52 -9
  254. package/build-module/layouts/grid.mjs.map +2 -2
  255. package/build-module/private-apis.mjs +5 -1
  256. package/build-module/private-apis.mjs.map +2 -2
  257. package/build-module/store/actions.mjs.map +2 -2
  258. package/build-module/store/private-keys.mjs +2 -0
  259. package/build-module/store/private-keys.mjs.map +2 -2
  260. package/build-module/store/private-selectors.mjs +71 -4
  261. package/build-module/store/private-selectors.mjs.map +2 -2
  262. package/build-module/store/selectors.mjs +13 -0
  263. package/build-module/store/selectors.mjs.map +2 -2
  264. package/build-style/content-rtl.css +11 -5
  265. package/build-style/content.css +11 -5
  266. package/build-style/style-rtl.css +113 -3
  267. package/build-style/style.css +113 -3
  268. package/package.json +43 -41
  269. package/src/autocompleters/block.js +10 -3
  270. package/src/autocompleters/test/block.js +53 -0
  271. package/src/components/background-image-control/index.js +0 -2
  272. package/src/components/block-inspector/edit-contents.js +5 -1
  273. package/src/components/block-inspector/index.js +3 -2
  274. package/src/components/block-list/block-invalid-warning.js +8 -19
  275. package/src/components/block-patterns-list/stories/index.story.jsx +1 -1
  276. package/src/components/block-styles/use-styles-for-block.js +1 -0
  277. package/src/components/block-title/use-block-display-title.js +7 -2
  278. package/src/components/block-toolbar/block-toolbar-icon.js +11 -16
  279. package/src/components/block-toolbar/test/block-toolbar-icon.js +32 -9
  280. package/src/components/block-variation-transforms/index.js +0 -1
  281. package/src/components/child-layout-control/index.js +0 -2
  282. package/src/components/color-palette/test/__snapshots__/control.js.snap +11 -106
  283. package/src/components/colors-gradients/control.js +4 -4
  284. package/src/components/colors-gradients/style.scss +2 -2
  285. package/src/components/date-format-picker/index.js +0 -1
  286. package/src/components/dimensions-tool/aspect-ratio-tool.js +0 -1
  287. package/src/components/dimensions-tool/scale-tool.js +0 -1
  288. package/src/components/dimensions-tool/width-height-tool.js +0 -2
  289. package/src/components/font-appearance-control/index.js +6 -19
  290. package/src/components/font-family/README.md +0 -9
  291. package/src/components/font-family/index.js +6 -19
  292. package/src/components/font-family/stories/index.story.jsx +0 -1
  293. package/src/components/font-sizes/font-size-picker.js +0 -1
  294. package/src/components/global-styles/border-panel.js +0 -1
  295. package/src/components/global-styles/dimensions-panel.js +0 -3
  296. package/src/components/global-styles/typography-panel.js +0 -6
  297. package/src/components/height-control/index.js +0 -2
  298. package/src/components/html-element-control/index.js +0 -1
  299. package/src/components/iframe/content.scss +3 -3
  300. package/src/components/image-editor/index.js +22 -0
  301. package/src/components/image-editor/zoom-dropdown.js +0 -1
  302. package/src/components/image-size-control/index.js +0 -2
  303. package/src/components/inner-content/index.js +119 -0
  304. package/src/components/inner-content/test/index.js +81 -0
  305. package/src/components/inserter/hooks/use-block-types-state.js +10 -2
  306. package/src/components/inserter/media-tab/hooks.js +59 -9
  307. package/src/components/inserter/media-tab/media-list.js +2 -0
  308. package/src/components/inserter/media-tab/media-panel.js +256 -17
  309. package/src/components/inserter/media-tab/media-preview.js +34 -17
  310. package/src/components/inserter/media-tab/media-tab.js +20 -2
  311. package/src/components/inserter/media-tab/test/hooks.js +204 -0
  312. package/src/components/inserter/mobile-tab-navigation.js +6 -1
  313. package/src/components/inserter/no-results.js +2 -2
  314. package/src/components/inserter/preview-panel.js +1 -0
  315. package/src/components/inserter/style.scss +110 -1
  316. package/src/components/inserter-list-item/index.js +8 -2
  317. package/src/components/letter-spacing-control/README.md +0 -8
  318. package/src/components/letter-spacing-control/index.js +5 -23
  319. package/src/components/letter-spacing-control/stories/index.story.jsx +0 -12
  320. package/src/components/line-height-control/README.md +0 -8
  321. package/src/components/line-height-control/index.js +7 -16
  322. package/src/components/line-height-control/stories/index.story.jsx +0 -1
  323. package/src/components/line-height-control/test/index.js +1 -7
  324. package/src/components/link-picker/test/index.js +3 -1
  325. package/src/components/list-view/block-select-button.js +5 -1
  326. package/src/components/list-view/block.js +57 -20
  327. package/src/components/list-view/expander.js +5 -1
  328. package/src/components/list-view/style.scss +19 -0
  329. package/src/components/list-view/use-list-view-client-ids.js +2 -2
  330. package/src/components/observe-typing/index.js +9 -4
  331. package/src/components/preset-input-control/custom-value-controls.js +0 -2
  332. package/src/components/preset-input-control/index.js +0 -2
  333. package/src/components/resolution-tool/index.js +0 -1
  334. package/src/components/responsive-block-control/test/index.js +1 -5
  335. package/src/components/text-alignment-control/index.js +0 -1
  336. package/src/components/text-decoration-control/index.js +0 -1
  337. package/src/components/text-indent-control/index.js +7 -16
  338. package/src/components/text-transform-control/index.js +0 -1
  339. package/src/components/use-block-display-information/index.js +9 -13
  340. package/src/components/use-block-display-information/test/index.js +47 -9
  341. package/src/components/use-on-block-drop/index.js +4 -7
  342. package/src/components/writing-mode-control/index.js +0 -1
  343. package/src/hooks/block-hooks.scss +15 -0
  344. package/src/hooks/font-size.js +0 -1
  345. package/src/hooks/layout.js +5 -4
  346. package/src/hooks/position.js +44 -23
  347. package/src/hooks/states.js +6 -12
  348. package/src/hooks/test/cross-origin-isolation.js +0 -4
  349. package/src/hooks/test/layout.js +75 -1
  350. package/src/layouts/constrained.js +51 -28
  351. package/src/layouts/flex.js +0 -3
  352. package/src/layouts/grid.js +59 -7
  353. package/src/layouts/test/constrained.js +91 -0
  354. package/src/layouts/test/grid.js +71 -0
  355. package/src/private-apis.js +4 -0
  356. package/src/store/actions.js +1 -0
  357. package/src/store/private-keys.js +1 -0
  358. package/src/store/private-selectors.js +141 -4
  359. package/src/store/selectors.js +41 -0
  360. package/src/store/test/private-selectors.js +422 -0
  361. package/src/store/test/reducer.js +11 -11
  362. package/src/store/test/selectors.js +133 -0
  363. package/src/style.scss +1 -0
@@ -267,7 +267,6 @@ export default function PresetInputControl( {
267
267
  step={ 1 }
268
268
  value={ currentValue }
269
269
  withInputField={ false }
270
- __next40pxDefaultSize
271
270
  />
272
271
  ) }
273
272
  { hasPresets && ! showRangeControl && ! showCustomValueControl && (
@@ -295,7 +294,6 @@ export default function PresetInputControl( {
295
294
  onMouseOut={ onMouseOut }
296
295
  onMouseOver={ onMouseOver }
297
296
  options={ options }
298
- size="__unstable-large"
299
297
  value={
300
298
  // passing empty string as a fallback to continue using the
301
299
  // component in controlled mode
@@ -51,7 +51,6 @@ export default function ResolutionTool( {
51
51
  options={ options }
52
52
  onChange={ onChange }
53
53
  help={ __( 'Select the size of the source image.' ) }
54
- size="__unstable-large"
55
54
  />
56
55
  </ToolsPanelItem>
57
56
  );
@@ -39,11 +39,7 @@ const sizeOptions = [
39
39
  const renderTestDefaultControlComponent = ( labelComponent, device ) => {
40
40
  return (
41
41
  <>
42
- <SelectControl
43
- __next40pxDefaultSize
44
- label={ labelComponent }
45
- options={ sizeOptions }
46
- />
42
+ <SelectControl label={ labelComponent } options={ sizeOptions } />
47
43
  <p id={ device.id }>
48
44
  { device.label } is used here for testing purposes to ensure we
49
45
  have access to details about the device.
@@ -76,7 +76,6 @@ export default function TextAlignmentControl( {
76
76
  return (
77
77
  <ToggleGroupControl
78
78
  isDeselectable
79
- __next40pxDefaultSize
80
79
  label={ __( 'Text alignment' ) }
81
80
  className={ clsx(
82
81
  'block-editor-text-alignment-control',
@@ -49,7 +49,6 @@ export default function TextDecorationControl( {
49
49
  return (
50
50
  <ToggleGroupControl
51
51
  isDeselectable
52
- __next40pxDefaultSize
53
52
  label={ __( 'Decoration' ) }
54
53
  className={ clsx(
55
54
  'block-editor-text-decoration-control',
@@ -22,19 +22,17 @@ import { useSettings } from '../../components/use-settings';
22
22
  /**
23
23
  * Control for line text indent.
24
24
  *
25
- * @param {Object} props Component props.
26
- * @param {boolean} props.__next40pxDefaultSize Start opting into the larger default height that will become the default size in a future version.
27
- * @param {string} props.value Currently selected text indent.
28
- * @param {Function} props.onChange Handles change in text indent selection.
29
- * @param {string|number|undefined} props.__unstableInputWidth Input width to pass through to inner UnitControl. Should be a valid CSS value.
30
- * @param {boolean} props.withSlider Whether to show the slider control.
31
- * @param {boolean} props.hasBottomMargin Whether to add bottom margin below the control.
32
- * @param {string} props.help Help text to display below the control.
25
+ * @param {Object} props Component props.
26
+ * @param {string} props.value Currently selected text indent.
27
+ * @param {Function} props.onChange Handles change in text indent selection.
28
+ * @param {string|number|undefined} props.__unstableInputWidth Input width to pass through to inner UnitControl. Should be a valid CSS value.
29
+ * @param {boolean} props.withSlider Whether to show the slider control.
30
+ * @param {boolean} props.hasBottomMargin Whether to add bottom margin below the control.
31
+ * @param {string} props.help Help text to display below the control.
33
32
  *
34
33
  * @return {Element} Text indent control.
35
34
  */
36
35
  export default function TextIndentControl( {
37
- __next40pxDefaultSize = false,
38
36
  value,
39
37
  onChange,
40
38
  __unstableInputWidth = '60px',
@@ -68,8 +66,6 @@ export default function TextIndentControl( {
68
66
  if ( ! withSlider ) {
69
67
  return (
70
68
  <UnitControl
71
- __next40pxDefaultSize={ __next40pxDefaultSize }
72
- __shouldNotWarnDeprecated36pxSize
73
69
  { ...otherProps }
74
70
  label={ __( 'Line indent' ) }
75
71
  value={ value }
@@ -89,14 +85,11 @@ export default function TextIndentControl( {
89
85
  <Flex>
90
86
  <FlexItem isBlock>
91
87
  <UnitControl
92
- __next40pxDefaultSize={ __next40pxDefaultSize }
93
- __shouldNotWarnDeprecated36pxSize
94
88
  label={ __( 'Line indent' ) }
95
89
  labelPosition="top"
96
90
  hideLabelFromVision
97
91
  value={ value }
98
92
  onChange={ onChange }
99
- size={ otherProps.size }
100
93
  units={ units }
101
94
  __unstableInputWidth={ __unstableInputWidth }
102
95
  min={ 0 }
@@ -106,8 +99,6 @@ export default function TextIndentControl( {
106
99
  <FlexItem isBlock>
107
100
  <Spacer marginX={ 2 } marginBottom={ 0 }>
108
101
  <RangeControl
109
- __next40pxDefaultSize={ __next40pxDefaultSize }
110
- __shouldNotWarnDeprecated36pxSize
111
102
  label={ __( 'Line indent' ) }
112
103
  hideLabelFromVision
113
104
  value={ valueQuantity }
@@ -55,7 +55,6 @@ export default function TextTransformControl( { className, value, onChange } ) {
55
55
  return (
56
56
  <ToggleGroupControl
57
57
  isDeselectable
58
- __next40pxDefaultSize
59
58
  label={ __( 'Letter case' ) }
60
59
  className={ clsx(
61
60
  'block-editor-text-transform-control',
@@ -16,7 +16,6 @@ import { symbol } from '@wordpress/icons';
16
16
  */
17
17
  import { store as blockEditorStore } from '../../store';
18
18
  import { unlock } from '../../lock-unlock';
19
- import { isIsolatedEditorKey } from '../../store/private-keys';
20
19
 
21
20
  /** @typedef {import('@wordpress/blocks').WPIcon} WPIcon */
22
21
 
@@ -78,8 +77,8 @@ export default function useBlockDisplayInformation( clientId ) {
78
77
  const {
79
78
  getBlockName,
80
79
  getBlockAttributes,
80
+ getBlock,
81
81
  __experimentalGetParsedPattern,
82
- getSettings,
83
82
  } = blockEditorSelect;
84
83
  const { getBlockType, getActiveBlockVariation } =
85
84
  select( blocksStore );
@@ -89,20 +88,12 @@ export default function useBlockDisplayInformation( clientId ) {
89
88
  return null;
90
89
  }
91
90
  const attributes = getBlockAttributes( clientId );
92
- const { isWithinEditedContentOnlySection } =
93
- unlock( blockEditorSelect );
94
- const isIsolatedEditor = !! getSettings()?.[ isIsolatedEditorKey ];
91
+ const { isSectionBlock } = unlock( blockEditorSelect );
95
92
 
96
93
  // Check if this block is a pattern
97
94
  const patternName = attributes?.metadata?.patternName;
98
- const isEditedContentOnlySection =
99
- isWithinEditedContentOnlySection( clientId );
100
95
 
101
- if (
102
- patternName &&
103
- ! isEditedContentOnlySection &&
104
- ! isIsolatedEditor
105
- ) {
96
+ if ( patternName && isSectionBlock( clientId ) ) {
106
97
  const pattern = __experimentalGetParsedPattern( patternName );
107
98
  const positionLabel = getPositionTypeLabel( attributes );
108
99
  return {
@@ -118,7 +109,12 @@ export default function useBlockDisplayInformation( clientId ) {
118
109
  };
119
110
  }
120
111
 
121
- const match = getActiveBlockVariation( blockName, attributes );
112
+ const match = getActiveBlockVariation(
113
+ blockName,
114
+ attributes,
115
+ undefined,
116
+ getBlock?.( clientId )?.innerContent
117
+ );
122
118
  const isSynced =
123
119
  isReusableBlock( blockType ) || isTemplatePart( blockType );
124
120
  const syncedTitle = isSynced
@@ -14,7 +14,6 @@ import { symbol } from '@wordpress/icons';
14
14
  * Internal dependencies
15
15
  */
16
16
  import useBlockDisplayInformation from '../';
17
- import { isIsolatedEditorKey } from '../../../store/private-keys';
18
17
 
19
18
  jest.mock( '@wordpress/data/src/components/use-select', () => jest.fn() );
20
19
  jest.mock( '../../../lock-unlock', () => ( {
@@ -26,6 +25,7 @@ jest.mock( '../../../lock-unlock', () => ( {
26
25
  } ) );
27
26
 
28
27
  const groupIcon = 'group-icon';
28
+ const templatePartIcon = 'template-part-icon';
29
29
 
30
30
  function TestComponent( { onChange } ) {
31
31
  const blockInformation = useBlockDisplayInformation( 'client-id' );
@@ -56,19 +56,17 @@ function setupUseSelect( {
56
56
  description: 'Gather blocks in a layout container.',
57
57
  },
58
58
  getActiveBlockVariation = () => null,
59
- settings = {},
60
- isWithinEditedSection = false,
59
+ isSectionBlock = true,
61
60
  } = {} ) {
62
61
  useSelect.mockImplementation( ( mapSelect ) =>
63
62
  mapSelect( () => ( {
64
63
  getBlockName: () => blockName,
65
64
  getBlockAttributes: () => attributes,
66
- getSettings: () => settings,
67
65
  __experimentalGetParsedPattern: () => ( {
68
66
  title: 'Hero pattern',
69
67
  description: 'Pattern description.',
70
68
  } ),
71
- isWithinEditedContentOnlySection: () => isWithinEditedSection,
69
+ isSectionBlock: () => isSectionBlock,
72
70
  getBlockType: () => blockType,
73
71
  getActiveBlockVariation,
74
72
  } ) )
@@ -97,7 +95,7 @@ describe( 'useBlockDisplayInformation', () => {
97
95
  } );
98
96
 
99
97
  it( 'displays block information for a pattern section that is being edited', () => {
100
- setupUseSelect( { isWithinEditedSection: true } );
98
+ setupUseSelect( { isSectionBlock: false } );
101
99
  const onChange = jest.fn();
102
100
 
103
101
  render( <TestComponent onChange={ onChange } /> );
@@ -120,9 +118,7 @@ describe( 'useBlockDisplayInformation', () => {
120
118
  patternName: 'theme/header-wrapper',
121
119
  },
122
120
  },
123
- settings: {
124
- [ isIsolatedEditorKey ]: true,
125
- },
121
+ isSectionBlock: false,
126
122
  } );
127
123
  const onChange = jest.fn();
128
124
 
@@ -137,4 +133,46 @@ describe( 'useBlockDisplayInformation', () => {
137
133
  } )
138
134
  );
139
135
  } );
136
+
137
+ it( 'displays block information for a pattern wrapper when content-only editing is disabled', () => {
138
+ setupUseSelect( {
139
+ isSectionBlock: false,
140
+ } );
141
+ const onChange = jest.fn();
142
+
143
+ render( <TestComponent onChange={ onChange } /> );
144
+
145
+ expect( onChange ).toHaveBeenCalledWith(
146
+ expect.objectContaining( {
147
+ title: 'Group',
148
+ icon: groupIcon,
149
+ description: 'Gather blocks in a layout container.',
150
+ name: 'Hero pattern',
151
+ } )
152
+ );
153
+ } );
154
+
155
+ it( 'displays block information for section blocks without pattern metadata', () => {
156
+ setupUseSelect( {
157
+ attributes: {},
158
+ blockName: 'core/template-part',
159
+ blockType: {
160
+ name: 'core/template-part',
161
+ title: 'Template Part',
162
+ icon: templatePartIcon,
163
+ description: 'A template part.',
164
+ },
165
+ } );
166
+ const onChange = jest.fn();
167
+
168
+ render( <TestComponent onChange={ onChange } /> );
169
+
170
+ expect( onChange ).toHaveBeenCalledWith(
171
+ expect.objectContaining( {
172
+ title: 'Template Part',
173
+ icon: templatePartIcon,
174
+ description: 'A template part.',
175
+ } )
176
+ );
177
+ } );
140
178
  } );
@@ -5,6 +5,7 @@ import { useCallback } from '@wordpress/element';
5
5
  import {
6
6
  cloneBlock,
7
7
  createBlock,
8
+ __experimentalCloneSanitizedBlock,
8
9
  findTransform,
9
10
  getBlockTransforms,
10
11
  pasteHandler,
@@ -266,13 +267,9 @@ export default function useOnBlockDrop(
266
267
  blocks.unshift( targetBlock );
267
268
  }
268
269
 
269
- const groupInnerBlocks = blocks.map( ( block ) => {
270
- return createBlock(
271
- block.name,
272
- block.attributes,
273
- block.innerBlocks
274
- );
275
- } );
270
+ const groupInnerBlocks = blocks.map( ( block ) =>
271
+ __experimentalCloneSanitizedBlock( block )
272
+ );
276
273
 
277
274
  const areAllImages = blocks.every( ( block ) => {
278
275
  return block.name === 'core/image';
@@ -40,7 +40,6 @@ export default function WritingModeControl( { className, value, onChange } ) {
40
40
  return (
41
41
  <ToggleGroupControl
42
42
  isDeselectable
43
- __next40pxDefaultSize
44
43
  label={ __( 'Orientation' ) }
45
44
  className={ clsx( 'block-editor-writing-mode-control', className ) }
46
45
  value={ value }
@@ -2,6 +2,7 @@
2
2
  @use "@wordpress/base-styles/colors" as *;
3
3
 
4
4
  .block-editor-hooks__block-hooks {
5
+
5
6
  /**
6
7
  * Un-reverse the flex direction for the toggle's label.
7
8
  */
@@ -15,3 +16,17 @@
15
16
  margin-bottom: $grid-unit-20;
16
17
  }
17
18
  }
19
+
20
+ .block-editor-hooks__position-control-item {
21
+
22
+ /**
23
+ * Try to make items match the width of the anchor, subtract any margin on
24
+ * items to calculate the correct inner width.
25
+ */
26
+ max-inline-size: max(calc(var(--anchor-width) - (2 * var(--wp-ui-popup-padding))), 223px);
27
+ }
28
+
29
+ .block-editor-hooks__position-control-item-hint {
30
+ color: var(--wpds-color-foreground-content-neutral-weak);
31
+ margin-block-start: $grid-unit-05;
32
+ }
@@ -131,7 +131,6 @@ export function FontSizeEdit( props ) {
131
131
  valueMode={ fontSize ? 'slug' : 'literal' }
132
132
  withReset={ false }
133
133
  withSlider
134
- size="__unstable-large"
135
134
  />
136
135
  );
137
136
  }
@@ -85,7 +85,7 @@ export function getResetLayout( layoutBlockSupport = {}, blockVariation ) {
85
85
  } );
86
86
  }
87
87
 
88
- function getLayoutStateOverrides(
88
+ export function getLayoutStateOverrides(
89
89
  layout = {},
90
90
  baseLayout = {},
91
91
  existingLayout = {}
@@ -98,11 +98,13 @@ function getLayoutStateOverrides(
98
98
  );
99
99
 
100
100
  Object.entries( layout || {} ).forEach( ( [ key, value ] ) => {
101
+ const baseHasValue = Object.hasOwn( baseLayout || {}, key );
101
102
  if (
102
103
  ! CHILD_LAYOUT_KEYS.includes( key ) &&
103
104
  value !== baseLayout?.[ key ]
104
105
  ) {
105
- overrides[ key ] = value;
106
+ overrides[ key ] =
107
+ value === undefined && baseHasValue ? null : value;
106
108
  }
107
109
  } );
108
110
 
@@ -466,7 +468,7 @@ function LayoutPanelPure( {
466
468
  const nextStateStyle = cleanEmptyObject( {
467
469
  ...stateStyle,
468
470
  layout: getLayoutStateOverrides(
469
- cleanEmptyObject( newLayout ),
471
+ newLayout,
470
472
  baseLayout,
471
473
  stateStyle?.layout
472
474
  ),
@@ -593,7 +595,6 @@ export default {
593
595
  function LayoutTypeSwitcher( { type, onChange } ) {
594
596
  return (
595
597
  <ToggleGroupControl
596
- __next40pxDefaultSize
597
598
  isBlock
598
599
  label={ __( 'Layout type' ) }
599
600
  hideLabelFromVision
@@ -8,10 +8,11 @@ import clsx from 'clsx';
8
8
  */
9
9
  import { __, _x, sprintf } from '@wordpress/i18n';
10
10
  import { getBlockSupport, hasBlockSupport } from '@wordpress/blocks';
11
- import { BaseControl, CustomSelectControl } from '@wordpress/components';
12
11
  import { useInstanceId } from '@wordpress/compose';
13
12
  import { useSelect } from '@wordpress/data';
14
- import { useMemo } from '@wordpress/element';
13
+ import { useId, useMemo } from '@wordpress/element';
14
+ // eslint-disable-next-line @wordpress/use-recommended-components -- Use the portal-based popup to avoid inspector clipping.
15
+ import { SelectControl } from '@wordpress/ui';
15
16
 
16
17
  /**
17
18
  * Internal dependencies
@@ -27,13 +28,13 @@ const POSITION_SUPPORT_KEY = 'position';
27
28
  const DEFAULT_OPTION = {
28
29
  key: 'default',
29
30
  value: '',
30
- name: __( 'Default' ),
31
+ label: __( 'Default' ),
31
32
  };
32
33
 
33
34
  const STICKY_OPTION = {
34
35
  key: 'sticky',
35
36
  value: 'sticky',
36
- name: _x( 'Sticky', 'Name for the value of the CSS position property' ),
37
+ label: _x( 'Sticky', 'Name for the value of the CSS position property' ),
37
38
  hint: __(
38
39
  'The block will stick to the top of the window instead of scrolling.'
39
40
  ),
@@ -42,7 +43,7 @@ const STICKY_OPTION = {
42
43
  const FIXED_OPTION = {
43
44
  key: 'fixed',
44
45
  value: 'fixed',
45
- name: _x( 'Fixed', 'Name for the value of the CSS position property' ),
46
+ label: _x( 'Fixed', 'Name for the value of the CSS position property' ),
46
47
  hint: __( 'The block will not move when the page is scrolled.' ),
47
48
  };
48
49
 
@@ -262,28 +263,48 @@ export function PositionPanelPure( {
262
263
  const selectedOption = value
263
264
  ? options.find( ( option ) => option.value === value ) || DEFAULT_OPTION
264
265
  : DEFAULT_OPTION;
266
+ const hintIdPrefix = useId();
265
267
 
266
268
  // Only display position controls if there is at least one option to choose from.
267
269
  return options.length > 1 ? (
268
270
  <InspectorControls group="position">
269
- <BaseControl help={ stickyHelpText }>
270
- <CustomSelectControl
271
- __next40pxDefaultSize
272
- label={ __( 'Position' ) }
273
- hideLabelFromVision
274
- describedBy={ sprintf(
275
- // translators: %s: Currently selected position.
276
- __( 'Currently selected position: %s' ),
277
- selectedOption.name
278
- ) }
279
- options={ options }
280
- value={ selectedOption }
281
- onChange={ ( { selectedItem } ) => {
282
- onChangeType( selectedItem.value );
283
- } }
284
- size="__unstable-large"
285
- />
286
- </BaseControl>
271
+ <SelectControl
272
+ label={ __( 'Position' ) }
273
+ hideLabelFromVision
274
+ description={ stickyHelpText }
275
+ items={ options }
276
+ value={ selectedOption }
277
+ onValueChange={ ( selectedItem ) => {
278
+ onChangeType( selectedItem.value );
279
+ } }
280
+ >
281
+ { options.map( ( option ) => {
282
+ const hintId = option.hint
283
+ ? `${ hintIdPrefix }-${ option.key }`
284
+ : undefined;
285
+
286
+ return (
287
+ <SelectControl.Item
288
+ key={ option.key }
289
+ value={ option }
290
+ label={ option.label }
291
+ className="block-editor-hooks__position-control-item"
292
+ aria-describedby={ hintId }
293
+ >
294
+ <div>{ option.label }</div>
295
+ { option.hint && (
296
+ <div
297
+ id={ hintId }
298
+ className="block-editor-hooks__position-control-item-hint"
299
+ aria-hidden="true"
300
+ >
301
+ { option.hint }
302
+ </div>
303
+ ) }
304
+ </SelectControl.Item>
305
+ );
306
+ } ) }
307
+ </SelectControl>
287
308
  </InspectorControls>
288
309
  ) : null;
289
310
  }
@@ -22,18 +22,12 @@ export const RESPONSIVE_STATE_LABELS = {
22
22
  '@mobile': __( 'Mobile' ),
23
23
  };
24
24
 
25
- // Viewport states are selected globally via the editor's device preview
26
- // (Responsive editing). 'default' maps to the Desktop device, the remaining
27
- // options are derived from the shared responsive-state labels.
28
- const DEVICE_STATE_OPTIONS = [
29
- { value: 'default', label: __( 'Desktop' ) },
30
- ...Object.entries( RESPONSIVE_STATE_LABELS ).map(
31
- ( [ value, label ] ) => ( {
32
- value,
33
- label,
34
- } )
35
- ),
36
- ];
25
+ const DEVICE_STATE_OPTIONS = Object.entries( RESPONSIVE_STATE_LABELS ).map(
26
+ ( [ value, label ] ) => ( {
27
+ value,
28
+ label,
29
+ } )
30
+ );
37
31
 
38
32
  // Keep in sync with WP_Theme_JSON_Gutenberg::VALID_BLOCK_PSEUDO_SELECTORS
39
33
  // and packages/global-styles-engine/src/core/render.tsx.
@@ -1,7 +1,3 @@
1
- /**
2
- * @jest-environment jsdom
3
- */
4
-
5
1
  describe( 'cross-origin-isolation', () => {
6
2
  let originalCrossOriginIsolated;
7
3
  let originalBody;
@@ -1,7 +1,11 @@
1
1
  /**
2
2
  * Internal dependencies
3
3
  */
4
- import { getResetLayout, getResponsiveLayoutStyles } from '../layout';
4
+ import {
5
+ getLayoutStateOverrides,
6
+ getResetLayout,
7
+ getResponsiveLayoutStyles,
8
+ } from '../layout';
5
9
 
6
10
  describe( 'layout', () => {
7
11
  describe( 'getResetLayout()', () => {
@@ -46,6 +50,28 @@ describe( 'layout', () => {
46
50
  } );
47
51
  } );
48
52
 
53
+ describe( 'getLayoutStateOverrides()', () => {
54
+ it( 'preserves explicit unsets for layout values inherited from the default state', () => {
55
+ expect(
56
+ getLayoutStateOverrides(
57
+ { type: 'grid', columnCount: undefined },
58
+ { type: 'grid', columnCount: 3 }
59
+ )
60
+ ).toEqual( {
61
+ columnCount: null,
62
+ } );
63
+ } );
64
+
65
+ it( 'removes undefined layout values that are not inherited from the default state', () => {
66
+ expect(
67
+ getLayoutStateOverrides(
68
+ { type: 'grid', columnCount: undefined },
69
+ { type: 'grid' }
70
+ )
71
+ ).toBeUndefined();
72
+ } );
73
+ } );
74
+
49
75
  describe( 'getResponsiveLayoutStyles()', () => {
50
76
  it( 'generates responsive block gap styles for flow layouts', () => {
51
77
  expect(
@@ -135,6 +161,54 @@ describe( 'layout', () => {
135
161
  );
136
162
  } );
137
163
 
164
+ it( 'generates responsive auto grid columns when column count is unset', () => {
165
+ expect(
166
+ getResponsiveLayoutStyles( {
167
+ attributes: {
168
+ style: {
169
+ '@mobile': {
170
+ layout: {
171
+ columnCount: null,
172
+ },
173
+ },
174
+ },
175
+ },
176
+ blockName: 'core/group',
177
+ selector: '.wp-container-test',
178
+ layout: { type: 'grid', columnCount: 3 },
179
+ hasBlockGapSupport: true,
180
+ } )
181
+ ).toBe(
182
+ '@media (width <= 480px){.wp-container-test { grid-template-columns: repeat(auto-fill, minmax(min(12rem, 100%), 1fr)); container-type: inline-size; }}'
183
+ );
184
+ } );
185
+
186
+ it( 'generates responsive constrained size resets when content width is unset', () => {
187
+ const result = getResponsiveLayoutStyles( {
188
+ attributes: {
189
+ style: {
190
+ '@mobile': {
191
+ layout: {
192
+ contentSize: null,
193
+ },
194
+ },
195
+ },
196
+ },
197
+ blockName: 'core/group',
198
+ selector: '.wp-container-test',
199
+ layout: { type: 'constrained', contentSize: '800px' },
200
+ hasBlockGapSupport: true,
201
+ } );
202
+
203
+ expect( result ).toContain( '@media (width <= 480px)' );
204
+ expect( result ).toContain(
205
+ 'max-width: var(--wp--style--global--content-size, none);'
206
+ );
207
+ expect( result ).toContain(
208
+ 'max-width: var(--wp--style--global--wide-size, none);'
209
+ );
210
+ } );
211
+
138
212
  it( 'keeps responsive grid column overrides when block gap is also changed', () => {
139
213
  expect(
140
214
  getResponsiveLayoutStyles( {