@wordpress/block-editor 15.22.1 → 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 (379) hide show
  1. package/CHANGELOG.md +27 -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 +18 -36
  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/use-resize-canvas/index.cjs +16 -53
  109. package/build/components/use-resize-canvas/index.cjs.map +3 -3
  110. package/build/components/writing-mode-control/index.cjs +0 -1
  111. package/build/components/writing-mode-control/index.cjs.map +2 -2
  112. package/build/hooks/font-size.cjs +1 -2
  113. package/build/hooks/font-size.cjs.map +2 -2
  114. package/build/hooks/layout.cjs +5 -3
  115. package/build/hooks/layout.cjs.map +2 -2
  116. package/build/hooks/position.cjs +36 -16
  117. package/build/hooks/position.cjs.map +2 -2
  118. package/build/hooks/states.cjs +10 -21
  119. package/build/hooks/states.cjs.map +2 -2
  120. package/build/layouts/constrained.cjs +21 -21
  121. package/build/layouts/constrained.cjs.map +2 -2
  122. package/build/layouts/flex.cjs +0 -3
  123. package/build/layouts/flex.cjs.map +2 -2
  124. package/build/layouts/grid.cjs +51 -9
  125. package/build/layouts/grid.cjs.map +2 -2
  126. package/build/private-apis.cjs +4 -2
  127. package/build/private-apis.cjs.map +3 -3
  128. package/build/store/actions.cjs.map +2 -2
  129. package/build/store/private-actions.cjs +16 -0
  130. package/build/store/private-actions.cjs.map +2 -2
  131. package/build/store/private-keys.cjs +3 -3
  132. package/build/store/private-keys.cjs.map +2 -2
  133. package/build/store/private-selectors.cjs +96 -10
  134. package/build/store/private-selectors.cjs.map +2 -2
  135. package/build/store/reducer.cjs +19 -3
  136. package/build/store/reducer.cjs.map +2 -2
  137. package/build/store/selectors.cjs +13 -0
  138. package/build/store/selectors.cjs.map +2 -2
  139. package/build-module/autocompleters/block.mjs +10 -2
  140. package/build-module/autocompleters/block.mjs.map +2 -2
  141. package/build-module/components/background-image-control/index.mjs +0 -2
  142. package/build-module/components/background-image-control/index.mjs.map +2 -2
  143. package/build-module/components/block-inspector/edit-contents.mjs +4 -1
  144. package/build-module/components/block-inspector/edit-contents.mjs.map +2 -2
  145. package/build-module/components/block-inspector/index.mjs +18 -36
  146. package/build-module/components/block-inspector/index.mjs.map +2 -2
  147. package/build-module/components/block-list/block-invalid-warning.mjs +8 -19
  148. package/build-module/components/block-list/block-invalid-warning.mjs.map +2 -2
  149. package/build-module/components/block-styles/use-styles-for-block.mjs +2 -1
  150. package/build-module/components/block-styles/use-styles-for-block.mjs.map +2 -2
  151. package/build-module/components/block-title/use-block-display-title.mjs +7 -2
  152. package/build-module/components/block-title/use-block-display-title.mjs.map +2 -2
  153. package/build-module/components/block-toolbar/block-toolbar-icon.mjs +10 -14
  154. package/build-module/components/block-toolbar/block-toolbar-icon.mjs.map +2 -2
  155. package/build-module/components/block-variation-transforms/index.mjs +0 -1
  156. package/build-module/components/block-variation-transforms/index.mjs.map +2 -2
  157. package/build-module/components/child-layout-control/index.mjs +0 -2
  158. package/build-module/components/child-layout-control/index.mjs.map +2 -2
  159. package/build-module/components/colors-gradients/control.mjs +5 -5
  160. package/build-module/components/colors-gradients/control.mjs.map +2 -2
  161. package/build-module/components/date-format-picker/index.mjs +0 -1
  162. package/build-module/components/date-format-picker/index.mjs.map +2 -2
  163. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs +1 -2
  164. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs.map +2 -2
  165. package/build-module/components/dimensions-tool/scale-tool.mjs +0 -1
  166. package/build-module/components/dimensions-tool/scale-tool.mjs.map +2 -2
  167. package/build-module/components/dimensions-tool/width-height-tool.mjs +2 -4
  168. package/build-module/components/dimensions-tool/width-height-tool.mjs.map +2 -2
  169. package/build-module/components/font-appearance-control/index.mjs +6 -15
  170. package/build-module/components/font-appearance-control/index.mjs.map +2 -2
  171. package/build-module/components/font-family/index.mjs +6 -15
  172. package/build-module/components/font-family/index.mjs.map +2 -2
  173. package/build-module/components/font-sizes/font-size-picker.mjs +1 -2
  174. package/build-module/components/font-sizes/font-size-picker.mjs.map +2 -2
  175. package/build-module/components/global-styles/border-panel.mjs +0 -1
  176. package/build-module/components/global-styles/border-panel.mjs.map +2 -2
  177. package/build-module/components/global-styles/dimensions-panel.mjs +0 -3
  178. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  179. package/build-module/components/global-styles/typography-panel.mjs +4 -10
  180. package/build-module/components/global-styles/typography-panel.mjs.map +2 -2
  181. package/build-module/components/height-control/index.mjs +0 -2
  182. package/build-module/components/height-control/index.mjs.map +2 -2
  183. package/build-module/components/html-element-control/index.mjs +0 -1
  184. package/build-module/components/html-element-control/index.mjs.map +2 -2
  185. package/build-module/components/image-editor/index.mjs +5 -0
  186. package/build-module/components/image-editor/index.mjs.map +2 -2
  187. package/build-module/components/image-editor/zoom-dropdown.mjs +0 -1
  188. package/build-module/components/image-editor/zoom-dropdown.mjs.map +2 -2
  189. package/build-module/components/image-size-control/index.mjs +1 -3
  190. package/build-module/components/image-size-control/index.mjs.map +2 -2
  191. package/build-module/components/inner-content/index.mjs +82 -0
  192. package/build-module/components/inner-content/index.mjs.map +7 -0
  193. package/build-module/components/inserter/hooks/use-block-types-state.mjs +10 -2
  194. package/build-module/components/inserter/hooks/use-block-types-state.mjs.map +2 -2
  195. package/build-module/components/inserter/media-tab/hooks.mjs +33 -6
  196. package/build-module/components/inserter/media-tab/hooks.mjs.map +2 -2
  197. package/build-module/components/inserter/media-tab/media-list.mjs +3 -1
  198. package/build-module/components/inserter/media-tab/media-list.mjs.map +2 -2
  199. package/build-module/components/inserter/media-tab/media-panel.mjs +227 -30
  200. package/build-module/components/inserter/media-tab/media-panel.mjs.map +2 -2
  201. package/build-module/components/inserter/media-tab/media-preview.mjs +33 -18
  202. package/build-module/components/inserter/media-tab/media-preview.mjs.map +2 -2
  203. package/build-module/components/inserter/media-tab/media-tab.mjs +27 -7
  204. package/build-module/components/inserter/media-tab/media-tab.mjs.map +2 -2
  205. package/build-module/components/inserter/mobile-tab-navigation.mjs +6 -1
  206. package/build-module/components/inserter/mobile-tab-navigation.mjs.map +2 -2
  207. package/build-module/components/inserter/no-results.mjs +2 -2
  208. package/build-module/components/inserter/no-results.mjs.map +2 -2
  209. package/build-module/components/inserter/preview-panel.mjs +2 -1
  210. package/build-module/components/inserter/preview-panel.mjs.map +2 -2
  211. package/build-module/components/inserter-list-item/index.mjs +8 -2
  212. package/build-module/components/inserter-list-item/index.mjs.map +2 -2
  213. package/build-module/components/letter-spacing-control/index.mjs +0 -14
  214. package/build-module/components/letter-spacing-control/index.mjs.map +2 -2
  215. package/build-module/components/line-height-control/index.mjs +7 -12
  216. package/build-module/components/line-height-control/index.mjs.map +2 -2
  217. package/build-module/components/list-view/block-select-button.mjs +90 -84
  218. package/build-module/components/list-view/block-select-button.mjs.map +2 -2
  219. package/build-module/components/list-view/block.mjs +51 -20
  220. package/build-module/components/list-view/block.mjs.map +2 -2
  221. package/build-module/components/list-view/expander.mjs +1 -1
  222. package/build-module/components/list-view/expander.mjs.map +2 -2
  223. package/build-module/components/list-view/use-list-view-client-ids.mjs +2 -2
  224. package/build-module/components/list-view/use-list-view-client-ids.mjs.map +2 -2
  225. package/build-module/components/observe-typing/index.mjs +4 -3
  226. package/build-module/components/observe-typing/index.mjs.map +2 -2
  227. package/build-module/components/preset-input-control/custom-value-controls.mjs +1 -3
  228. package/build-module/components/preset-input-control/custom-value-controls.mjs.map +2 -2
  229. package/build-module/components/preset-input-control/index.mjs +1 -3
  230. package/build-module/components/preset-input-control/index.mjs.map +2 -2
  231. package/build-module/components/resolution-tool/index.mjs +1 -2
  232. package/build-module/components/resolution-tool/index.mjs.map +2 -2
  233. package/build-module/components/text-alignment-control/index.mjs +0 -1
  234. package/build-module/components/text-alignment-control/index.mjs.map +2 -2
  235. package/build-module/components/text-decoration-control/index.mjs +0 -1
  236. package/build-module/components/text-decoration-control/index.mjs.map +2 -2
  237. package/build-module/components/text-indent-control/index.mjs +0 -8
  238. package/build-module/components/text-indent-control/index.mjs.map +2 -2
  239. package/build-module/components/text-transform-control/index.mjs +0 -1
  240. package/build-module/components/text-transform-control/index.mjs.map +2 -2
  241. package/build-module/components/use-block-display-information/index.mjs +10 -8
  242. package/build-module/components/use-block-display-information/index.mjs.map +2 -2
  243. package/build-module/components/use-on-block-drop/index.mjs +4 -7
  244. package/build-module/components/use-on-block-drop/index.mjs.map +2 -2
  245. package/build-module/components/use-resize-canvas/index.mjs +6 -53
  246. package/build-module/components/use-resize-canvas/index.mjs.map +2 -2
  247. package/build-module/components/writing-mode-control/index.mjs +0 -1
  248. package/build-module/components/writing-mode-control/index.mjs.map +2 -2
  249. package/build-module/hooks/font-size.mjs +1 -2
  250. package/build-module/hooks/font-size.mjs.map +2 -2
  251. package/build-module/hooks/layout.mjs +4 -3
  252. package/build-module/hooks/layout.mjs.map +2 -2
  253. package/build-module/hooks/position.mjs +38 -18
  254. package/build-module/hooks/position.mjs.map +2 -2
  255. package/build-module/hooks/states.mjs +10 -21
  256. package/build-module/hooks/states.mjs.map +2 -2
  257. package/build-module/layouts/constrained.mjs +21 -21
  258. package/build-module/layouts/constrained.mjs.map +2 -2
  259. package/build-module/layouts/flex.mjs +0 -3
  260. package/build-module/layouts/flex.mjs.map +2 -2
  261. package/build-module/layouts/grid.mjs +52 -9
  262. package/build-module/layouts/grid.mjs.map +2 -2
  263. package/build-module/private-apis.mjs +5 -3
  264. package/build-module/private-apis.mjs.map +2 -2
  265. package/build-module/store/actions.mjs.map +2 -2
  266. package/build-module/store/private-actions.mjs +14 -0
  267. package/build-module/store/private-actions.mjs.map +2 -2
  268. package/build-module/store/private-keys.mjs +2 -2
  269. package/build-module/store/private-keys.mjs.map +2 -2
  270. package/build-module/store/private-selectors.mjs +93 -10
  271. package/build-module/store/private-selectors.mjs.map +2 -2
  272. package/build-module/store/reducer.mjs +17 -3
  273. package/build-module/store/reducer.mjs.map +2 -2
  274. package/build-module/store/selectors.mjs +13 -0
  275. package/build-module/store/selectors.mjs.map +2 -2
  276. package/build-style/content-rtl.css +11 -5
  277. package/build-style/content.css +11 -5
  278. package/build-style/style-rtl.css +113 -3
  279. package/build-style/style.css +113 -3
  280. package/package.json +43 -41
  281. package/src/autocompleters/block.js +10 -3
  282. package/src/autocompleters/test/block.js +53 -0
  283. package/src/components/background-image-control/index.js +0 -2
  284. package/src/components/block-inspector/edit-contents.js +5 -1
  285. package/src/components/block-inspector/index.js +25 -44
  286. package/src/components/block-list/block-invalid-warning.js +8 -19
  287. package/src/components/block-patterns-list/stories/index.story.jsx +1 -1
  288. package/src/components/block-styles/use-styles-for-block.js +1 -0
  289. package/src/components/block-title/use-block-display-title.js +7 -2
  290. package/src/components/block-toolbar/block-toolbar-icon.js +11 -16
  291. package/src/components/block-toolbar/test/block-toolbar-icon.js +32 -9
  292. package/src/components/block-variation-transforms/index.js +0 -1
  293. package/src/components/child-layout-control/index.js +0 -2
  294. package/src/components/color-palette/test/__snapshots__/control.js.snap +11 -106
  295. package/src/components/colors-gradients/control.js +4 -4
  296. package/src/components/colors-gradients/style.scss +2 -2
  297. package/src/components/date-format-picker/index.js +0 -1
  298. package/src/components/dimensions-tool/aspect-ratio-tool.js +0 -1
  299. package/src/components/dimensions-tool/scale-tool.js +0 -1
  300. package/src/components/dimensions-tool/width-height-tool.js +0 -2
  301. package/src/components/font-appearance-control/index.js +6 -19
  302. package/src/components/font-family/README.md +0 -9
  303. package/src/components/font-family/index.js +6 -19
  304. package/src/components/font-family/stories/index.story.jsx +0 -1
  305. package/src/components/font-sizes/font-size-picker.js +0 -1
  306. package/src/components/global-styles/border-panel.js +0 -1
  307. package/src/components/global-styles/dimensions-panel.js +0 -3
  308. package/src/components/global-styles/typography-panel.js +0 -6
  309. package/src/components/height-control/index.js +0 -2
  310. package/src/components/html-element-control/index.js +0 -1
  311. package/src/components/iframe/content.scss +3 -3
  312. package/src/components/image-editor/index.js +22 -0
  313. package/src/components/image-editor/zoom-dropdown.js +0 -1
  314. package/src/components/image-size-control/index.js +0 -2
  315. package/src/components/inner-content/index.js +119 -0
  316. package/src/components/inner-content/test/index.js +81 -0
  317. package/src/components/inserter/hooks/use-block-types-state.js +10 -2
  318. package/src/components/inserter/media-tab/hooks.js +59 -9
  319. package/src/components/inserter/media-tab/media-list.js +2 -0
  320. package/src/components/inserter/media-tab/media-panel.js +256 -17
  321. package/src/components/inserter/media-tab/media-preview.js +34 -17
  322. package/src/components/inserter/media-tab/media-tab.js +20 -2
  323. package/src/components/inserter/media-tab/test/hooks.js +204 -0
  324. package/src/components/inserter/mobile-tab-navigation.js +6 -1
  325. package/src/components/inserter/no-results.js +2 -2
  326. package/src/components/inserter/preview-panel.js +1 -0
  327. package/src/components/inserter/style.scss +110 -1
  328. package/src/components/inserter-list-item/index.js +8 -2
  329. package/src/components/letter-spacing-control/README.md +0 -8
  330. package/src/components/letter-spacing-control/index.js +5 -23
  331. package/src/components/letter-spacing-control/stories/index.story.jsx +0 -12
  332. package/src/components/line-height-control/README.md +0 -8
  333. package/src/components/line-height-control/index.js +7 -16
  334. package/src/components/line-height-control/stories/index.story.jsx +0 -1
  335. package/src/components/line-height-control/test/index.js +1 -7
  336. package/src/components/link-picker/test/index.js +3 -1
  337. package/src/components/list-view/block-select-button.js +5 -1
  338. package/src/components/list-view/block.js +57 -20
  339. package/src/components/list-view/expander.js +5 -1
  340. package/src/components/list-view/style.scss +19 -0
  341. package/src/components/list-view/use-list-view-client-ids.js +2 -2
  342. package/src/components/observe-typing/index.js +9 -4
  343. package/src/components/preset-input-control/custom-value-controls.js +0 -2
  344. package/src/components/preset-input-control/index.js +0 -2
  345. package/src/components/resolution-tool/index.js +0 -1
  346. package/src/components/responsive-block-control/test/index.js +1 -5
  347. package/src/components/text-alignment-control/index.js +0 -1
  348. package/src/components/text-decoration-control/index.js +0 -1
  349. package/src/components/text-indent-control/index.js +7 -16
  350. package/src/components/text-transform-control/index.js +0 -1
  351. package/src/components/use-block-display-information/index.js +9 -13
  352. package/src/components/use-block-display-information/test/index.js +47 -9
  353. package/src/components/use-on-block-drop/index.js +4 -7
  354. package/src/components/use-resize-canvas/index.js +10 -71
  355. package/src/components/writing-mode-control/index.js +0 -1
  356. package/src/hooks/block-hooks.scss +15 -0
  357. package/src/hooks/font-size.js +0 -1
  358. package/src/hooks/layout.js +5 -4
  359. package/src/hooks/position.js +44 -23
  360. package/src/hooks/states.js +24 -26
  361. package/src/hooks/test/cross-origin-isolation.js +0 -4
  362. package/src/hooks/test/layout.js +75 -1
  363. package/src/layouts/constrained.js +51 -28
  364. package/src/layouts/flex.js +0 -3
  365. package/src/layouts/grid.js +59 -7
  366. package/src/layouts/test/constrained.js +91 -0
  367. package/src/layouts/test/grid.js +71 -0
  368. package/src/private-apis.js +4 -2
  369. package/src/store/actions.js +1 -0
  370. package/src/store/private-actions.js +31 -0
  371. package/src/store/private-keys.js +1 -1
  372. package/src/store/private-selectors.js +184 -11
  373. package/src/store/reducer.js +37 -2
  374. package/src/store/selectors.js +41 -0
  375. package/src/store/test/private-selectors.js +436 -10
  376. package/src/store/test/reducer.js +41 -13
  377. package/src/store/test/selectors.js +133 -0
  378. package/src/style.scss +1 -0
  379. package/src/components/use-resize-canvas/README.md +0 -37
@@ -2312,7 +2312,6 @@ export function selectedBlockStyleState( state = undefined, action ) {
2312
2312
  clientId: action.clientId,
2313
2313
  showStateOnCanvas,
2314
2314
  value: {
2315
- viewport: 'default',
2316
2315
  pseudo: 'default',
2317
2316
  ...previousValue,
2318
2317
  ...action.value,
@@ -2332,7 +2331,6 @@ export function selectedBlockStyleState( state = undefined, action ) {
2332
2331
  clientId: action.clientId,
2333
2332
  showStateOnCanvas: action.value,
2334
2333
  value: {
2335
- viewport: 'default',
2336
2334
  pseudo: 'default',
2337
2335
  ...previousValue,
2338
2336
  },
@@ -2390,6 +2388,41 @@ export function selectedBlockStyleState( state = undefined, action ) {
2390
2388
  return state;
2391
2389
  }
2392
2390
 
2391
+ /**
2392
+ * Reducer holding the globally selected viewport style state. When set to a
2393
+ * value other than 'default', block style edits in the inspector are applied to
2394
+ * that viewport. Driven by the editor's device preview (Responsive editing).
2395
+ *
2396
+ * @param {string} state Current state.
2397
+ * @param {Object} action Dispatched action.
2398
+ *
2399
+ * @return {string} Updated state.
2400
+ */
2401
+ export function styleStateViewport( state = 'default', action ) {
2402
+ if ( action.type === 'SET_STYLE_STATE_VIEWPORT' ) {
2403
+ return action.viewport ?? 'default';
2404
+ }
2405
+
2406
+ return state;
2407
+ }
2408
+
2409
+ /**
2410
+ * Reducer for whether Responsive editing is enabled. When enabled, the device
2411
+ * preview also drives which viewport block style edits are applied to.
2412
+ *
2413
+ * @param {boolean} state Current state.
2414
+ * @param {Object} action Dispatched action.
2415
+ *
2416
+ * @return {boolean} Updated state.
2417
+ */
2418
+ export function isResponsiveEditing( state = false, action ) {
2419
+ if ( action.type === 'SET_RESPONSIVE_EDITING' ) {
2420
+ return action.enabled;
2421
+ }
2422
+
2423
+ return state;
2424
+ }
2425
+
2393
2426
  const combinedReducers = combineReducers( {
2394
2427
  blocks,
2395
2428
  isDragging,
@@ -2426,6 +2459,8 @@ const combinedReducers = combineReducers( {
2426
2459
  listViewContentPanelOpen,
2427
2460
  requestedInspectorTab,
2428
2461
  selectedBlockStyleState,
2462
+ styleStateViewport,
2463
+ isResponsiveEditing,
2429
2464
  } );
2430
2465
 
2431
2466
  /**
@@ -1692,6 +1692,12 @@ const canInsertBlockTypeUnmemoized = (
1692
1692
  return false;
1693
1693
  }
1694
1694
 
1695
+ // No insertion within static inner content: the inner blocks are fixed
1696
+ // at their placeholder positions within the static markup.
1697
+ if ( isInnerContentRoot( state, rootClientId ) ) {
1698
+ return false;
1699
+ }
1700
+
1695
1701
  const blockEditingMode = getBlockEditingMode( state, rootClientId ?? '' );
1696
1702
 
1697
1703
  // Compute section context early so the disabled check below can use it.
@@ -1899,6 +1905,24 @@ export function canInsertBlocks( state, clientIds, rootClientId = null ) {
1899
1905
  );
1900
1906
  }
1901
1907
 
1908
+ /**
1909
+ * Returns whether the given root block keeps its markup as static inner
1910
+ * content (the Custom HTML block). Its inner blocks are fixed at their
1911
+ * positions within the static markup: they can be edited in place, but not
1912
+ * moved or removed, and no blocks can be inserted alongside them. This only
1913
+ * applies to the direct children; deeper descendants are unaffected.
1914
+ *
1915
+ * @param {Object} state Editor state.
1916
+ * @param {?string} rootClientId Root block client ID.
1917
+ *
1918
+ * @return {boolean} Whether the root block uses static inner content.
1919
+ */
1920
+ function isInnerContentRoot( state, rootClientId ) {
1921
+ return (
1922
+ !! rootClientId && getBlockName( state, rootClientId ) === 'core/html'
1923
+ );
1924
+ }
1925
+
1902
1926
  /**
1903
1927
  * Determines if the given block is allowed to be deleted.
1904
1928
  *
@@ -1913,6 +1937,14 @@ export function canRemoveBlock( state, clientId ) {
1913
1937
  return false;
1914
1938
  }
1915
1939
 
1940
+ // Blocks within static inner content are fixed in place; a `lock`
1941
+ // attribute can't override the structural constraint.
1942
+ if (
1943
+ isInnerContentRoot( state, getBlockRootClientId( state, clientId ) )
1944
+ ) {
1945
+ return false;
1946
+ }
1947
+
1916
1948
  const attributes = getBlockAttributes( state, clientId );
1917
1949
  if ( attributes === null ) {
1918
1950
  return true;
@@ -2014,6 +2046,14 @@ export function canMoveBlock( state, clientId ) {
2014
2046
  return false;
2015
2047
  }
2016
2048
 
2049
+ // Blocks within static inner content are fixed in place; a `lock`
2050
+ // attribute can't override the structural constraint.
2051
+ if (
2052
+ isInnerContentRoot( state, getBlockRootClientId( state, clientId ) )
2053
+ ) {
2054
+ return false;
2055
+ }
2056
+
2017
2057
  const attributes = getBlockAttributes( state, clientId );
2018
2058
  if ( attributes === null ) {
2019
2059
  return true;
@@ -2175,6 +2215,7 @@ const getItemFromVariation = ( state, item ) => ( variation ) => {
2175
2215
  ...variation.attributes,
2176
2216
  },
2177
2217
  innerBlocks: variation.innerBlocks,
2218
+ innerContent: variation.innerContent,
2178
2219
  keywords: variation.keywords || item.keywords,
2179
2220
  frecency: calculateFrecency( time, count ),
2180
2221
  // Pass through search-only flag for block-scope variations.
@@ -11,6 +11,7 @@ import {
11
11
  getLastInsertedBlocksClientIds,
12
12
  isBlockSubtreeDisabled,
13
13
  getEnabledClientIdsTree,
14
+ getListViewClientIdsTree,
14
15
  getEnabledBlockParents,
15
16
  getExpandedBlock,
16
17
  isDragging,
@@ -223,11 +224,12 @@ describe( 'private selectors', () => {
223
224
  } );
224
225
  } );
225
226
 
226
- it( 'returns the selected state for the block', () => {
227
+ it( 'returns the per-block pseudo with the global viewport', () => {
227
228
  const state = {
229
+ styleStateViewport: '@mobile',
228
230
  selectedBlockStyleState: {
229
231
  clientId: 'client-1',
230
- value: { viewport: '@mobile', pseudo: ':hover' },
232
+ value: { pseudo: ':hover' },
231
233
  },
232
234
  };
233
235
 
@@ -237,7 +239,7 @@ describe( 'private selectors', () => {
237
239
  } );
238
240
  } );
239
241
 
240
- it( 'returns default when the selected state has no value', () => {
242
+ it( 'returns default pseudo when the selected state has no value', () => {
241
243
  const state = {
242
244
  selectedBlockStyleState: {
243
245
  clientId: 'client-1',
@@ -250,16 +252,17 @@ describe( 'private selectors', () => {
250
252
  } );
251
253
  } );
252
254
 
253
- it( 'returns default when another block has the selected state', () => {
255
+ it( 'returns the global viewport even when another block holds the per-block state', () => {
254
256
  const state = {
257
+ styleStateViewport: '@mobile',
255
258
  selectedBlockStyleState: {
256
259
  clientId: 'client-2',
257
- value: { viewport: 'default', pseudo: ':hover' },
260
+ value: { pseudo: ':hover' },
258
261
  },
259
262
  };
260
263
 
261
264
  expect( getSelectedBlockStyleState( state, 'client-1' ) ).toEqual( {
262
- viewport: 'default',
265
+ viewport: '@mobile',
263
266
  pseudo: 'default',
264
267
  } );
265
268
  } );
@@ -283,11 +286,12 @@ describe( 'private selectors', () => {
283
286
  expect( hasSelectedStyleState( state, 'client-1' ) ).toBe( false );
284
287
  } );
285
288
 
286
- it( 'returns true when a viewport state is selected', () => {
289
+ it( 'returns true when a global viewport state is selected', () => {
287
290
  const state = {
291
+ styleStateViewport: '@mobile',
288
292
  selectedBlockStyleState: {
289
293
  clientId: 'client-1',
290
- value: { viewport: '@mobile', pseudo: 'default' },
294
+ value: { pseudo: 'default' },
291
295
  },
292
296
  };
293
297
 
@@ -305,11 +309,12 @@ describe( 'private selectors', () => {
305
309
  expect( hasSelectedStyleState( state, 'client-1' ) ).toBe( true );
306
310
  } );
307
311
 
308
- it( 'returns true when viewport and pseudo states are selected', () => {
312
+ it( 'returns true when global viewport and per-block pseudo states are selected', () => {
309
313
  const state = {
314
+ styleStateViewport: '@mobile',
310
315
  selectedBlockStyleState: {
311
316
  clientId: 'client-1',
312
- value: { viewport: '@mobile', pseudo: ':hover' },
317
+ value: { pseudo: ':hover' },
313
318
  },
314
319
  };
315
320
 
@@ -757,6 +762,427 @@ describe( 'private selectors', () => {
757
762
  },
758
763
  ] );
759
764
  } );
765
+
766
+ it( 'filters out disabled blocks when a content-only section is being edited', () => {
767
+ const state = {
768
+ ...baseState,
769
+ blocks: {
770
+ ...baseState.blocks,
771
+ blockEditingModes: new Map( [
772
+ [ '', 'disabled' ],
773
+ [
774
+ 'b26fc763-417d-4f01-b81c-2ec61e14a972',
775
+ 'contentOnly',
776
+ ],
777
+ [
778
+ '9b9c5c3f-2e46-4f02-9e14-9fe9515b958f',
779
+ 'contentOnly',
780
+ ],
781
+ ] ),
782
+ },
783
+ // The Group (ef45d5fd) is the section being edited.
784
+ editedContentOnlySection:
785
+ 'ef45d5fd-5234-4fd5-ac4f-c3736c7f9337',
786
+ derivedBlockEditingModes: new Map( [
787
+ [ '6cf70164-9097-4460-bcbf-200560546988', 'disabled' ],
788
+ ] ),
789
+ };
790
+ expect( getEnabledClientIdsTree( state ) ).toEqual( [
791
+ {
792
+ clientId: 'ef45d5fd-5234-4fd5-ac4f-c3736c7f9337',
793
+ innerBlocks: [
794
+ {
795
+ clientId: 'b26fc763-417d-4f01-b81c-2ec61e14a972',
796
+ innerBlocks: [],
797
+ },
798
+ {
799
+ clientId: '9b9c5c3f-2e46-4f02-9e14-9fe9515b958f',
800
+ innerBlocks: [
801
+ {
802
+ clientId:
803
+ 'b3247f75-fd94-4fef-97f9-5bfd162cc416',
804
+ innerBlocks: [],
805
+ },
806
+ {
807
+ clientId:
808
+ 'e178812d-ce5e-48c7-a945-8ae4ffcbbb7c',
809
+ innerBlocks: [],
810
+ },
811
+ ],
812
+ },
813
+ ],
814
+ },
815
+ ] );
816
+ } );
817
+ } );
818
+
819
+ describe( 'getListViewClientIdsTree', () => {
820
+ const TEST_CONTENT_BLOCK = 'core/test-list-view-content-block';
821
+ const TEST_STRUCTURE_BLOCK = 'core/test-list-view-structure-block';
822
+
823
+ const createBaseState = () => ( {
824
+ settings: {},
825
+ blocks: {
826
+ byClientId: new Map( [
827
+ [
828
+ 'header',
829
+ {
830
+ name: TEST_STRUCTURE_BLOCK,
831
+ },
832
+ ],
833
+ [
834
+ 'edited-pattern',
835
+ {
836
+ name: TEST_STRUCTURE_BLOCK,
837
+ },
838
+ ],
839
+ [
840
+ 'edited-content',
841
+ {
842
+ name: TEST_CONTENT_BLOCK,
843
+ },
844
+ ],
845
+ [
846
+ 'other-pattern',
847
+ {
848
+ name: TEST_STRUCTURE_BLOCK,
849
+ },
850
+ ],
851
+ [
852
+ 'other-content',
853
+ {
854
+ name: TEST_CONTENT_BLOCK,
855
+ },
856
+ ],
857
+ [
858
+ 'other-structure',
859
+ {
860
+ name: TEST_STRUCTURE_BLOCK,
861
+ },
862
+ ],
863
+ ] ),
864
+ attributes: new Map( [
865
+ [
866
+ 'edited-pattern',
867
+ {
868
+ metadata: {
869
+ patternName: 'test/edited-pattern',
870
+ },
871
+ },
872
+ ],
873
+ [
874
+ 'other-pattern',
875
+ {
876
+ metadata: {
877
+ patternName: 'test/other-pattern',
878
+ },
879
+ },
880
+ ],
881
+ ] ),
882
+ order: new Map( [
883
+ [ '', [ 'header', 'edited-pattern', 'other-pattern' ] ],
884
+ [ 'header', [] ],
885
+ [ 'edited-pattern', [ 'edited-content' ] ],
886
+ [ 'edited-content', [] ],
887
+ [ 'other-pattern', [ 'other-content', 'other-structure' ] ],
888
+ [ 'other-content', [] ],
889
+ [ 'other-structure', [] ],
890
+ ] ),
891
+ parents: new Map( [
892
+ [ 'header', '' ],
893
+ [ 'edited-pattern', '' ],
894
+ [ 'edited-content', 'edited-pattern' ],
895
+ [ 'other-pattern', '' ],
896
+ [ 'other-content', 'other-pattern' ],
897
+ [ 'other-structure', 'other-pattern' ],
898
+ ] ),
899
+ blockEditingModes: new Map(),
900
+ },
901
+ blockListSettings: new Map(),
902
+ editedContentOnlySection: 'edited-pattern',
903
+ derivedBlockEditingModes: new Map( [
904
+ [ 'header', 'disabled' ],
905
+ [ 'other-pattern', 'disabled' ],
906
+ [ 'other-content', 'disabled' ],
907
+ [ 'other-structure', 'disabled' ],
908
+ ] ),
909
+ } );
910
+
911
+ beforeAll( () => {
912
+ registerBlockType( TEST_CONTENT_BLOCK, {
913
+ apiVersion: 3,
914
+ title: 'Test content block',
915
+ category: 'text',
916
+ attributes: {
917
+ content: {
918
+ type: 'string',
919
+ role: 'content',
920
+ },
921
+ },
922
+ save: () => null,
923
+ } );
924
+ registerBlockType( TEST_STRUCTURE_BLOCK, {
925
+ apiVersion: 3,
926
+ title: 'Test structure block',
927
+ category: 'design',
928
+ save: () => null,
929
+ } );
930
+ } );
931
+
932
+ afterAll( () => {
933
+ unregisterBlockType( TEST_CONTENT_BLOCK );
934
+ unregisterBlockType( TEST_STRUCTURE_BLOCK );
935
+ } );
936
+
937
+ beforeEach( () => {
938
+ getListViewClientIdsTree.registry = {
939
+ select: jest.fn( () => ( {} ) ),
940
+ };
941
+ } );
942
+
943
+ it( 'includes disabled outside-section context while preserving the edited section', () => {
944
+ const state = createBaseState();
945
+
946
+ expect( getListViewClientIdsTree( state ) ).toEqual( [
947
+ {
948
+ clientId: 'header',
949
+ innerBlocks: [],
950
+ },
951
+ {
952
+ clientId: 'edited-pattern',
953
+ innerBlocks: [
954
+ {
955
+ clientId: 'edited-content',
956
+ innerBlocks: [],
957
+ },
958
+ ],
959
+ },
960
+ {
961
+ clientId: 'other-pattern',
962
+ innerBlocks: [
963
+ {
964
+ clientId: 'other-content',
965
+ innerBlocks: [],
966
+ },
967
+ ],
968
+ },
969
+ ] );
970
+ } );
971
+
972
+ it( 'keeps descendants of explicitly disabled blocks hidden', () => {
973
+ const baseState = createBaseState();
974
+ const state = {
975
+ ...baseState,
976
+ blocks: {
977
+ ...baseState.blocks,
978
+ byClientId: new Map( [
979
+ ...baseState.blocks.byClientId,
980
+ [
981
+ 'header-content',
982
+ {
983
+ name: TEST_CONTENT_BLOCK,
984
+ },
985
+ ],
986
+ ] ),
987
+ order: new Map( [
988
+ ...baseState.blocks.order,
989
+ [ 'header', [ 'header-content' ] ],
990
+ [ 'header-content', [] ],
991
+ ] ),
992
+ parents: new Map( [
993
+ ...baseState.blocks.parents,
994
+ [ 'header-content', 'header' ],
995
+ ] ),
996
+ blockEditingModes: new Map( [ [ 'header', 'disabled' ] ] ),
997
+ },
998
+ derivedBlockEditingModes: new Map( [
999
+ ...baseState.derivedBlockEditingModes,
1000
+ [ 'header-content', 'disabled' ],
1001
+ ] ),
1002
+ };
1003
+
1004
+ expect( getListViewClientIdsTree( state ) ).toEqual( [
1005
+ {
1006
+ clientId: 'edited-pattern',
1007
+ innerBlocks: [
1008
+ {
1009
+ clientId: 'edited-content',
1010
+ innerBlocks: [],
1011
+ },
1012
+ ],
1013
+ },
1014
+ {
1015
+ clientId: 'other-pattern',
1016
+ innerBlocks: [
1017
+ {
1018
+ clientId: 'other-content',
1019
+ innerBlocks: [],
1020
+ },
1021
+ ],
1022
+ },
1023
+ ] );
1024
+ } );
1025
+
1026
+ it( 'includes blocks with explicit modes inside explicitly disabled parents', () => {
1027
+ const baseState = createBaseState();
1028
+ const state = {
1029
+ ...baseState,
1030
+ blocks: {
1031
+ ...baseState.blocks,
1032
+ byClientId: new Map( [
1033
+ ...baseState.blocks.byClientId,
1034
+ [
1035
+ 'header-content',
1036
+ {
1037
+ name: TEST_CONTENT_BLOCK,
1038
+ },
1039
+ ],
1040
+ ] ),
1041
+ order: new Map( [
1042
+ ...baseState.blocks.order,
1043
+ [ 'header', [ 'header-content' ] ],
1044
+ [ 'header-content', [] ],
1045
+ ] ),
1046
+ parents: new Map( [
1047
+ ...baseState.blocks.parents,
1048
+ [ 'header-content', 'header' ],
1049
+ ] ),
1050
+ blockEditingModes: new Map( [
1051
+ [ 'header', 'disabled' ],
1052
+ [ 'header-content', 'contentOnly' ],
1053
+ ] ),
1054
+ },
1055
+ derivedBlockEditingModes: new Map( [
1056
+ ...baseState.derivedBlockEditingModes,
1057
+ [ 'header-content', 'disabled' ],
1058
+ ] ),
1059
+ };
1060
+
1061
+ expect( getListViewClientIdsTree( state ) ).toEqual( [
1062
+ {
1063
+ clientId: 'header-content',
1064
+ innerBlocks: [],
1065
+ },
1066
+ {
1067
+ clientId: 'edited-pattern',
1068
+ innerBlocks: [
1069
+ {
1070
+ clientId: 'edited-content',
1071
+ innerBlocks: [],
1072
+ },
1073
+ ],
1074
+ },
1075
+ {
1076
+ clientId: 'other-pattern',
1077
+ innerBlocks: [
1078
+ {
1079
+ clientId: 'other-content',
1080
+ innerBlocks: [],
1081
+ },
1082
+ ],
1083
+ },
1084
+ ] );
1085
+ } );
1086
+
1087
+ it( 'keeps structural blocks hidden inside other content-only sections', () => {
1088
+ const state = createBaseState();
1089
+
1090
+ expect(
1091
+ getListViewClientIdsTree( state )[ 2 ].innerBlocks
1092
+ ).toEqual( [
1093
+ {
1094
+ clientId: 'other-content',
1095
+ innerBlocks: [],
1096
+ },
1097
+ ] );
1098
+ } );
1099
+
1100
+ it( 'uses section-block settings when deciding which disabled blocks were already hidden', () => {
1101
+ const baseState = createBaseState();
1102
+ const state = {
1103
+ ...baseState,
1104
+ settings: {
1105
+ disableContentOnlyForTemplateParts: true,
1106
+ },
1107
+ blocks: {
1108
+ ...baseState.blocks,
1109
+ byClientId: new Map( [
1110
+ [
1111
+ 'edited-pattern',
1112
+ {
1113
+ name: TEST_STRUCTURE_BLOCK,
1114
+ },
1115
+ ],
1116
+ [
1117
+ 'edited-content',
1118
+ {
1119
+ name: TEST_CONTENT_BLOCK,
1120
+ },
1121
+ ],
1122
+ [
1123
+ 'template-part',
1124
+ {
1125
+ name: 'core/template-part',
1126
+ },
1127
+ ],
1128
+ [
1129
+ 'template-part-structure',
1130
+ {
1131
+ name: TEST_STRUCTURE_BLOCK,
1132
+ },
1133
+ ],
1134
+ ] ),
1135
+ attributes: new Map( [
1136
+ [
1137
+ 'edited-pattern',
1138
+ {
1139
+ metadata: {
1140
+ patternName: 'test/edited-pattern',
1141
+ },
1142
+ },
1143
+ ],
1144
+ ] ),
1145
+ order: new Map( [
1146
+ [ '', [ 'edited-pattern', 'template-part' ] ],
1147
+ [ 'edited-pattern', [ 'edited-content' ] ],
1148
+ [ 'edited-content', [] ],
1149
+ [ 'template-part', [ 'template-part-structure' ] ],
1150
+ [ 'template-part-structure', [] ],
1151
+ ] ),
1152
+ parents: new Map( [
1153
+ [ 'edited-pattern', '' ],
1154
+ [ 'edited-content', 'edited-pattern' ],
1155
+ [ 'template-part', '' ],
1156
+ [ 'template-part-structure', 'template-part' ],
1157
+ ] ),
1158
+ },
1159
+ derivedBlockEditingModes: new Map( [
1160
+ [ 'template-part', 'disabled' ],
1161
+ [ 'template-part-structure', 'disabled' ],
1162
+ ] ),
1163
+ };
1164
+
1165
+ expect( getListViewClientIdsTree( state ) ).toEqual( [
1166
+ {
1167
+ clientId: 'edited-pattern',
1168
+ innerBlocks: [
1169
+ {
1170
+ clientId: 'edited-content',
1171
+ innerBlocks: [],
1172
+ },
1173
+ ],
1174
+ },
1175
+ {
1176
+ clientId: 'template-part',
1177
+ innerBlocks: [
1178
+ {
1179
+ clientId: 'template-part-structure',
1180
+ innerBlocks: [],
1181
+ },
1182
+ ],
1183
+ },
1184
+ ] );
1185
+ } );
760
1186
  } );
761
1187
 
762
1188
  describe( 'getEnabledBlockParents', () => {