@wordpress/block-editor 15.22.1 → 16.0.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 (700) hide show
  1. package/CHANGELOG.md +35 -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-canvas/index.cjs +6 -1
  7. package/build/components/block-canvas/index.cjs.map +2 -2
  8. package/build/components/block-controls/groups.cjs +3 -1
  9. package/build/components/block-controls/groups.cjs.map +2 -2
  10. package/build/components/block-edit/edit.cjs +10 -18
  11. package/build/components/block-edit/edit.cjs.map +2 -2
  12. package/build/components/block-inspector/edit-contents.cjs +3 -0
  13. package/build/components/block-inspector/edit-contents.cjs.map +3 -3
  14. package/build/components/block-inspector/index.cjs +18 -36
  15. package/build/components/block-inspector/index.cjs.map +2 -2
  16. package/build/components/block-list/block-invalid-warning.cjs +8 -19
  17. package/build/components/block-list/block-invalid-warning.cjs.map +2 -2
  18. package/build/components/block-list/block.cjs +9 -3
  19. package/build/components/block-list/block.cjs.map +3 -3
  20. package/build/components/block-list/index.cjs +1 -3
  21. package/build/components/block-list/index.cjs.map +2 -2
  22. package/build/components/block-list/use-block-props/index.cjs +3 -1
  23. package/build/components/block-list/use-block-props/index.cjs.map +2 -2
  24. package/build/components/block-list/use-block-props/use-focus-first-element.cjs +9 -4
  25. package/build/components/block-list/use-block-props/use-focus-first-element.cjs.map +2 -2
  26. package/build/components/block-list/use-block-props/use-focus-handler.cjs +12 -4
  27. package/build/components/block-list/use-block-props/use-focus-handler.cjs.map +2 -2
  28. package/build/components/block-styles/use-styles-for-block.cjs +2 -1
  29. package/build/components/block-styles/use-styles-for-block.cjs.map +2 -2
  30. package/build/components/block-title/use-block-display-title.cjs +7 -2
  31. package/build/components/block-title/use-block-display-title.cjs.map +2 -2
  32. package/build/components/block-toolbar/block-toolbar-icon.cjs +10 -14
  33. package/build/components/block-toolbar/block-toolbar-icon.cjs.map +2 -2
  34. package/build/components/block-toolbar/index.cjs +43 -24
  35. package/build/components/block-toolbar/index.cjs.map +2 -2
  36. package/build/components/block-tools/index.cjs +7 -2
  37. package/build/components/block-tools/index.cjs.map +2 -2
  38. package/build/components/block-variation-transforms/index.cjs +0 -1
  39. package/build/components/block-variation-transforms/index.cjs.map +2 -2
  40. package/build/components/block-visibility/modal.cjs +20 -6
  41. package/build/components/block-visibility/modal.cjs.map +2 -2
  42. package/build/components/block-visibility/use-block-visibility.cjs +16 -6
  43. package/build/components/block-visibility/use-block-visibility.cjs.map +3 -3
  44. package/build/components/block-visibility/utils.cjs +15 -2
  45. package/build/components/block-visibility/utils.cjs.map +3 -3
  46. package/build/components/block-visibility/viewport-menu-item.cjs +7 -1
  47. package/build/components/block-visibility/viewport-menu-item.cjs.map +2 -2
  48. package/build/components/block-visibility/viewport-toolbar.cjs +5 -0
  49. package/build/components/block-visibility/viewport-toolbar.cjs.map +2 -2
  50. package/build/components/block-visibility/viewport-visibility-info.cjs +5 -1
  51. package/build/components/block-visibility/viewport-visibility-info.cjs.map +2 -2
  52. package/build/components/child-layout-control/index.cjs +0 -6
  53. package/build/components/child-layout-control/index.cjs.map +2 -2
  54. package/build/components/colors-gradients/control.cjs +5 -5
  55. package/build/components/colors-gradients/control.cjs.map +2 -2
  56. package/build/components/date-format-picker/index.cjs +0 -1
  57. package/build/components/date-format-picker/index.cjs.map +2 -2
  58. package/build/components/dimensions-tool/aspect-ratio-tool.cjs +1 -2
  59. package/build/components/dimensions-tool/aspect-ratio-tool.cjs.map +2 -2
  60. package/build/components/dimensions-tool/scale-tool.cjs +0 -1
  61. package/build/components/dimensions-tool/scale-tool.cjs.map +2 -2
  62. package/build/components/dimensions-tool/width-height-tool.cjs +2 -4
  63. package/build/components/dimensions-tool/width-height-tool.cjs.map +2 -2
  64. package/build/components/font-appearance-control/index.cjs +6 -25
  65. package/build/components/font-appearance-control/index.cjs.map +3 -3
  66. package/build/components/font-family/index.cjs +6 -15
  67. package/build/components/font-family/index.cjs.map +3 -3
  68. package/build/components/font-sizes/font-size-picker.cjs +1 -2
  69. package/build/components/font-sizes/font-size-picker.cjs.map +2 -2
  70. package/build/components/global-styles/border-panel.cjs +0 -1
  71. package/build/components/global-styles/border-panel.cjs.map +2 -2
  72. package/build/components/global-styles/dimensions-panel.cjs +0 -3
  73. package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
  74. package/build/components/global-styles/state-control-badges.cjs +39 -3
  75. package/build/components/global-styles/state-control-badges.cjs.map +2 -2
  76. package/build/components/global-styles/typography-panel.cjs +4 -11
  77. package/build/components/global-styles/typography-panel.cjs.map +2 -2
  78. package/build/components/height-control/index.cjs +0 -2
  79. package/build/components/height-control/index.cjs.map +2 -2
  80. package/build/components/html-element-control/index.cjs +0 -1
  81. package/build/components/html-element-control/index.cjs.map +2 -2
  82. package/build/components/image-editor/index.cjs +5 -0
  83. package/build/components/image-editor/index.cjs.map +3 -3
  84. package/build/components/image-editor/zoom-dropdown.cjs +0 -1
  85. package/build/components/image-editor/zoom-dropdown.cjs.map +2 -2
  86. package/build/components/image-size-control/index.cjs +3 -7
  87. package/build/components/image-size-control/index.cjs.map +2 -2
  88. package/build/components/inner-content/index.cjs +107 -0
  89. package/build/components/inner-content/index.cjs.map +7 -0
  90. package/build/components/inserter/hooks/use-block-types-state.cjs +10 -2
  91. package/build/components/inserter/hooks/use-block-types-state.cjs.map +2 -2
  92. package/build/components/inserter/media-tab/hooks.cjs +67 -12
  93. package/build/components/inserter/media-tab/hooks.cjs.map +2 -2
  94. package/build/components/inserter/media-tab/media-list.cjs +3 -1
  95. package/build/components/inserter/media-tab/media-list.cjs.map +2 -2
  96. package/build/components/inserter/media-tab/media-panel.cjs +287 -28
  97. package/build/components/inserter/media-tab/media-panel.cjs.map +3 -3
  98. package/build/components/inserter/media-tab/media-preview.cjs +32 -17
  99. package/build/components/inserter/media-tab/media-preview.cjs.map +2 -2
  100. package/build/components/inserter/media-tab/media-tab.cjs +26 -6
  101. package/build/components/inserter/media-tab/media-tab.cjs.map +2 -2
  102. package/build/components/inserter/mobile-tab-navigation.cjs +6 -1
  103. package/build/components/inserter/mobile-tab-navigation.cjs.map +2 -2
  104. package/build/components/inserter/no-results.cjs +2 -2
  105. package/build/components/inserter/no-results.cjs.map +2 -2
  106. package/build/components/inserter/preview-panel.cjs +2 -1
  107. package/build/components/inserter/preview-panel.cjs.map +2 -2
  108. package/build/components/inserter-list-item/index.cjs +8 -2
  109. package/build/components/inserter-list-item/index.cjs.map +2 -2
  110. package/build/components/keyboard-shortcuts/index.cjs +19 -11
  111. package/build/components/keyboard-shortcuts/index.cjs.map +2 -2
  112. package/build/components/letter-spacing-control/index.cjs +0 -24
  113. package/build/components/letter-spacing-control/index.cjs.map +3 -3
  114. package/build/components/line-height-control/index.cjs +6 -22
  115. package/build/components/line-height-control/index.cjs.map +3 -3
  116. package/build/components/list-view/block-select-button.cjs +90 -84
  117. package/build/components/list-view/block-select-button.cjs.map +2 -2
  118. package/build/components/list-view/block.cjs +61 -21
  119. package/build/components/list-view/block.cjs.map +2 -2
  120. package/build/components/list-view/expander.cjs +1 -1
  121. package/build/components/list-view/expander.cjs.map +2 -2
  122. package/build/components/list-view/use-list-view-client-ids.cjs +2 -2
  123. package/build/components/list-view/use-list-view-client-ids.cjs.map +2 -2
  124. package/build/components/media-placeholder/index.cjs +0 -1
  125. package/build/components/media-placeholder/index.cjs.map +2 -2
  126. package/build/components/observe-typing/index.cjs +4 -3
  127. package/build/components/observe-typing/index.cjs.map +2 -2
  128. package/build/components/preset-input-control/custom-value-controls.cjs +1 -3
  129. package/build/components/preset-input-control/custom-value-controls.cjs.map +2 -2
  130. package/build/components/preset-input-control/index.cjs +1 -3
  131. package/build/components/preset-input-control/index.cjs.map +2 -2
  132. package/build/components/resolution-tool/index.cjs +1 -2
  133. package/build/components/resolution-tool/index.cjs.map +2 -2
  134. package/build/components/rich-text/event-listeners/before-input-rules.cjs +3 -4
  135. package/build/components/rich-text/event-listeners/before-input-rules.cjs.map +3 -3
  136. package/build/components/rich-text/event-listeners/delete.cjs +2 -3
  137. package/build/components/rich-text/event-listeners/delete.cjs.map +3 -3
  138. package/build/components/rich-text/event-listeners/enter.cjs +3 -2
  139. package/build/components/rich-text/event-listeners/enter.cjs.map +3 -3
  140. package/build/components/rich-text/event-listeners/input-events.cjs +3 -3
  141. package/build/components/rich-text/event-listeners/input-events.cjs.map +3 -3
  142. package/build/components/rich-text/event-listeners/input-rules.cjs +3 -4
  143. package/build/components/rich-text/event-listeners/input-rules.cjs.map +3 -3
  144. package/build/components/rich-text/event-listeners/insert-replacement-text.cjs +3 -3
  145. package/build/components/rich-text/event-listeners/insert-replacement-text.cjs.map +3 -3
  146. package/build/components/rich-text/event-listeners/paste-handler.cjs +2 -1
  147. package/build/components/rich-text/event-listeners/paste-handler.cjs.map +3 -3
  148. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs +3 -3
  149. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.cjs.map +3 -3
  150. package/build/components/rich-text/event-listeners/shortcuts.cjs +3 -3
  151. package/build/components/rich-text/event-listeners/shortcuts.cjs.map +3 -3
  152. package/build/components/rich-text/event-listeners/undo-automatic-change.cjs +3 -3
  153. package/build/components/rich-text/event-listeners/undo-automatic-change.cjs.map +3 -3
  154. package/build/components/rich-text/index.cjs +66 -17
  155. package/build/components/rich-text/index.cjs.map +2 -2
  156. package/build/components/text-alignment-control/index.cjs +0 -1
  157. package/build/components/text-alignment-control/index.cjs.map +2 -2
  158. package/build/components/text-decoration-control/index.cjs +0 -1
  159. package/build/components/text-decoration-control/index.cjs.map +2 -2
  160. package/build/components/text-indent-control/index.cjs +0 -8
  161. package/build/components/text-indent-control/index.cjs.map +2 -2
  162. package/build/components/text-transform-control/index.cjs +0 -1
  163. package/build/components/text-transform-control/index.cjs.map +2 -2
  164. package/build/components/typewriter/index.cjs +129 -136
  165. package/build/components/typewriter/index.cjs.map +3 -3
  166. package/build/components/use-block-commands/index.cjs +21 -17
  167. package/build/components/use-block-commands/index.cjs.map +2 -2
  168. package/build/components/use-block-display-information/index.cjs +10 -8
  169. package/build/components/use-block-display-information/index.cjs.map +2 -2
  170. package/build/components/use-on-block-drop/index.cjs +3 -7
  171. package/build/components/use-on-block-drop/index.cjs.map +2 -2
  172. package/build/components/use-resize-canvas/index.cjs +16 -53
  173. package/build/components/use-resize-canvas/index.cjs.map +3 -3
  174. package/build/components/writing-flow/index.cjs +12 -1
  175. package/build/components/writing-flow/index.cjs.map +3 -3
  176. package/build/components/writing-flow/use-arrow-nav.cjs +18 -5
  177. package/build/components/writing-flow/use-arrow-nav.cjs.map +2 -2
  178. package/build/components/writing-flow/use-click-selection.cjs +2 -2
  179. package/build/components/writing-flow/use-click-selection.cjs.map +2 -2
  180. package/build/components/writing-flow/use-clipboard-handler.cjs +4 -1
  181. package/build/components/writing-flow/use-clipboard-handler.cjs.map +2 -2
  182. package/build/components/writing-flow/use-drag-selection.cjs +3 -8
  183. package/build/components/writing-flow/use-drag-selection.cjs.map +2 -2
  184. package/build/components/writing-flow/use-editable-root.cjs +112 -0
  185. package/build/components/writing-flow/use-editable-root.cjs.map +7 -0
  186. package/build/components/writing-flow/use-home-end.cjs +64 -0
  187. package/build/components/writing-flow/use-home-end.cjs.map +7 -0
  188. package/build/components/writing-flow/use-input.cjs +15 -5
  189. package/build/components/writing-flow/use-input.cjs.map +2 -2
  190. package/build/components/writing-flow/use-multi-selection.cjs +2 -2
  191. package/build/components/writing-flow/use-multi-selection.cjs.map +2 -2
  192. package/build/components/writing-flow/use-select-all.cjs +14 -2
  193. package/build/components/writing-flow/use-select-all.cjs.map +2 -2
  194. package/build/components/writing-flow/use-selection-observer.cjs +126 -20
  195. package/build/components/writing-flow/use-selection-observer.cjs.map +3 -3
  196. package/build/components/writing-flow/utils.cjs +39 -2
  197. package/build/components/writing-flow/utils.cjs.map +2 -2
  198. package/build/components/writing-mode-control/index.cjs +0 -1
  199. package/build/components/writing-mode-control/index.cjs.map +2 -2
  200. package/build/hooks/background.cjs +3 -2
  201. package/build/hooks/background.cjs.map +2 -2
  202. package/build/hooks/block-fields/rich-text/index.cjs +2 -3
  203. package/build/hooks/block-fields/rich-text/index.cjs.map +3 -3
  204. package/build/hooks/elements.cjs +1 -1
  205. package/build/hooks/elements.cjs.map +2 -2
  206. package/build/hooks/font-size.cjs +1 -2
  207. package/build/hooks/font-size.cjs.map +2 -2
  208. package/build/hooks/grid-visualizer.cjs +5 -3
  209. package/build/hooks/grid-visualizer.cjs.map +2 -2
  210. package/build/hooks/layout-child.cjs +22 -12
  211. package/build/hooks/layout-child.cjs.map +3 -3
  212. package/build/hooks/layout.cjs +33 -16
  213. package/build/hooks/layout.cjs.map +3 -3
  214. package/build/hooks/position.cjs +36 -16
  215. package/build/hooks/position.cjs.map +2 -2
  216. package/build/hooks/states.cjs +32 -23
  217. package/build/hooks/states.cjs.map +3 -3
  218. package/build/hooks/style.cjs +31 -9
  219. package/build/hooks/style.cjs.map +3 -3
  220. package/build/hooks/text-align.cjs +36 -6
  221. package/build/hooks/text-align.cjs.map +3 -3
  222. package/build/hooks/typography.cjs +1 -1
  223. package/build/hooks/typography.cjs.map +2 -2
  224. package/build/layouts/constrained.cjs +35 -27
  225. package/build/layouts/constrained.cjs.map +2 -2
  226. package/build/layouts/flex.cjs +27 -22
  227. package/build/layouts/flex.cjs.map +2 -2
  228. package/build/layouts/grid.cjs +51 -11
  229. package/build/layouts/grid.cjs.map +2 -2
  230. package/build/private-apis.cjs +4 -2
  231. package/build/private-apis.cjs.map +3 -3
  232. package/build/store/actions.cjs +2 -2
  233. package/build/store/actions.cjs.map +2 -2
  234. package/build/store/private-actions.cjs +16 -0
  235. package/build/store/private-actions.cjs.map +2 -2
  236. package/build/store/private-keys.cjs +3 -3
  237. package/build/store/private-keys.cjs.map +2 -2
  238. package/build/store/private-selectors.cjs +109 -12
  239. package/build/store/private-selectors.cjs.map +3 -3
  240. package/build/store/reducer.cjs +19 -3
  241. package/build/store/reducer.cjs.map +2 -2
  242. package/build/store/selectors.cjs +13 -0
  243. package/build/store/selectors.cjs.map +2 -2
  244. package/build/utils/block-bindings.cjs +29 -0
  245. package/build/utils/block-bindings.cjs.map +2 -2
  246. package/build/utils/dom.cjs +14 -0
  247. package/build/utils/dom.cjs.map +2 -2
  248. package/build-module/autocompleters/block.mjs +10 -2
  249. package/build-module/autocompleters/block.mjs.map +2 -2
  250. package/build-module/components/background-image-control/index.mjs +0 -2
  251. package/build-module/components/background-image-control/index.mjs.map +2 -2
  252. package/build-module/components/block-canvas/index.mjs +7 -2
  253. package/build-module/components/block-canvas/index.mjs.map +2 -2
  254. package/build-module/components/block-controls/groups.mjs +3 -1
  255. package/build-module/components/block-controls/groups.mjs.map +2 -2
  256. package/build-module/components/block-edit/edit.mjs +11 -18
  257. package/build-module/components/block-edit/edit.mjs.map +2 -2
  258. package/build-module/components/block-inspector/edit-contents.mjs +4 -1
  259. package/build-module/components/block-inspector/edit-contents.mjs.map +2 -2
  260. package/build-module/components/block-inspector/index.mjs +18 -36
  261. package/build-module/components/block-inspector/index.mjs.map +2 -2
  262. package/build-module/components/block-list/block-invalid-warning.mjs +8 -19
  263. package/build-module/components/block-list/block-invalid-warning.mjs.map +2 -2
  264. package/build-module/components/block-list/block.mjs +9 -3
  265. package/build-module/components/block-list/block.mjs.map +3 -3
  266. package/build-module/components/block-list/index.mjs +1 -3
  267. package/build-module/components/block-list/index.mjs.map +2 -2
  268. package/build-module/components/block-list/use-block-props/index.mjs +3 -1
  269. package/build-module/components/block-list/use-block-props/index.mjs.map +2 -2
  270. package/build-module/components/block-list/use-block-props/use-focus-first-element.mjs +9 -4
  271. package/build-module/components/block-list/use-block-props/use-focus-first-element.mjs.map +2 -2
  272. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs +12 -4
  273. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs.map +2 -2
  274. package/build-module/components/block-styles/use-styles-for-block.mjs +2 -1
  275. package/build-module/components/block-styles/use-styles-for-block.mjs.map +2 -2
  276. package/build-module/components/block-title/use-block-display-title.mjs +7 -2
  277. package/build-module/components/block-title/use-block-display-title.mjs.map +2 -2
  278. package/build-module/components/block-toolbar/block-toolbar-icon.mjs +10 -14
  279. package/build-module/components/block-toolbar/block-toolbar-icon.mjs.map +2 -2
  280. package/build-module/components/block-toolbar/index.mjs +43 -24
  281. package/build-module/components/block-toolbar/index.mjs.map +2 -2
  282. package/build-module/components/block-tools/index.mjs +7 -2
  283. package/build-module/components/block-tools/index.mjs.map +2 -2
  284. package/build-module/components/block-variation-transforms/index.mjs +0 -1
  285. package/build-module/components/block-variation-transforms/index.mjs.map +2 -2
  286. package/build-module/components/block-visibility/modal.mjs +22 -10
  287. package/build-module/components/block-visibility/modal.mjs.map +2 -2
  288. package/build-module/components/block-visibility/use-block-visibility.mjs +17 -7
  289. package/build-module/components/block-visibility/use-block-visibility.mjs.map +2 -2
  290. package/build-module/components/block-visibility/utils.mjs +18 -3
  291. package/build-module/components/block-visibility/utils.mjs.map +2 -2
  292. package/build-module/components/block-visibility/viewport-menu-item.mjs +7 -1
  293. package/build-module/components/block-visibility/viewport-menu-item.mjs.map +2 -2
  294. package/build-module/components/block-visibility/viewport-toolbar.mjs +5 -0
  295. package/build-module/components/block-visibility/viewport-toolbar.mjs.map +2 -2
  296. package/build-module/components/block-visibility/viewport-visibility-info.mjs +5 -1
  297. package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
  298. package/build-module/components/child-layout-control/index.mjs +0 -6
  299. package/build-module/components/child-layout-control/index.mjs.map +2 -2
  300. package/build-module/components/colors-gradients/control.mjs +5 -5
  301. package/build-module/components/colors-gradients/control.mjs.map +2 -2
  302. package/build-module/components/date-format-picker/index.mjs +0 -1
  303. package/build-module/components/date-format-picker/index.mjs.map +2 -2
  304. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs +1 -2
  305. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs.map +2 -2
  306. package/build-module/components/dimensions-tool/scale-tool.mjs +0 -1
  307. package/build-module/components/dimensions-tool/scale-tool.mjs.map +2 -2
  308. package/build-module/components/dimensions-tool/width-height-tool.mjs +2 -4
  309. package/build-module/components/dimensions-tool/width-height-tool.mjs.map +2 -2
  310. package/build-module/components/font-appearance-control/index.mjs +6 -15
  311. package/build-module/components/font-appearance-control/index.mjs.map +2 -2
  312. package/build-module/components/font-family/index.mjs +6 -15
  313. package/build-module/components/font-family/index.mjs.map +2 -2
  314. package/build-module/components/font-sizes/font-size-picker.mjs +1 -2
  315. package/build-module/components/font-sizes/font-size-picker.mjs.map +2 -2
  316. package/build-module/components/global-styles/border-panel.mjs +0 -1
  317. package/build-module/components/global-styles/border-panel.mjs.map +2 -2
  318. package/build-module/components/global-styles/dimensions-panel.mjs +0 -3
  319. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  320. package/build-module/components/global-styles/state-control-badges.mjs +41 -5
  321. package/build-module/components/global-styles/state-control-badges.mjs.map +2 -2
  322. package/build-module/components/global-styles/typography-panel.mjs +4 -11
  323. package/build-module/components/global-styles/typography-panel.mjs.map +2 -2
  324. package/build-module/components/height-control/index.mjs +0 -2
  325. package/build-module/components/height-control/index.mjs.map +2 -2
  326. package/build-module/components/html-element-control/index.mjs +0 -1
  327. package/build-module/components/html-element-control/index.mjs.map +2 -2
  328. package/build-module/components/image-editor/index.mjs +5 -0
  329. package/build-module/components/image-editor/index.mjs.map +2 -2
  330. package/build-module/components/image-editor/zoom-dropdown.mjs +0 -1
  331. package/build-module/components/image-editor/zoom-dropdown.mjs.map +2 -2
  332. package/build-module/components/image-size-control/index.mjs +3 -7
  333. package/build-module/components/image-size-control/index.mjs.map +2 -2
  334. package/build-module/components/inner-content/index.mjs +82 -0
  335. package/build-module/components/inner-content/index.mjs.map +7 -0
  336. package/build-module/components/inserter/hooks/use-block-types-state.mjs +10 -2
  337. package/build-module/components/inserter/hooks/use-block-types-state.mjs.map +2 -2
  338. package/build-module/components/inserter/media-tab/hooks.mjs +66 -12
  339. package/build-module/components/inserter/media-tab/hooks.mjs.map +2 -2
  340. package/build-module/components/inserter/media-tab/media-list.mjs +3 -1
  341. package/build-module/components/inserter/media-tab/media-list.mjs.map +2 -2
  342. package/build-module/components/inserter/media-tab/media-panel.mjs +297 -32
  343. package/build-module/components/inserter/media-tab/media-panel.mjs.map +2 -2
  344. package/build-module/components/inserter/media-tab/media-preview.mjs +33 -18
  345. package/build-module/components/inserter/media-tab/media-preview.mjs.map +2 -2
  346. package/build-module/components/inserter/media-tab/media-tab.mjs +27 -7
  347. package/build-module/components/inserter/media-tab/media-tab.mjs.map +2 -2
  348. package/build-module/components/inserter/mobile-tab-navigation.mjs +6 -1
  349. package/build-module/components/inserter/mobile-tab-navigation.mjs.map +2 -2
  350. package/build-module/components/inserter/no-results.mjs +2 -2
  351. package/build-module/components/inserter/no-results.mjs.map +2 -2
  352. package/build-module/components/inserter/preview-panel.mjs +2 -1
  353. package/build-module/components/inserter/preview-panel.mjs.map +2 -2
  354. package/build-module/components/inserter-list-item/index.mjs +8 -2
  355. package/build-module/components/inserter-list-item/index.mjs.map +2 -2
  356. package/build-module/components/keyboard-shortcuts/index.mjs +19 -11
  357. package/build-module/components/keyboard-shortcuts/index.mjs.map +2 -2
  358. package/build-module/components/letter-spacing-control/index.mjs +0 -14
  359. package/build-module/components/letter-spacing-control/index.mjs.map +2 -2
  360. package/build-module/components/line-height-control/index.mjs +6 -12
  361. package/build-module/components/line-height-control/index.mjs.map +2 -2
  362. package/build-module/components/list-view/block-select-button.mjs +90 -84
  363. package/build-module/components/list-view/block-select-button.mjs.map +2 -2
  364. package/build-module/components/list-view/block.mjs +61 -21
  365. package/build-module/components/list-view/block.mjs.map +2 -2
  366. package/build-module/components/list-view/expander.mjs +1 -1
  367. package/build-module/components/list-view/expander.mjs.map +2 -2
  368. package/build-module/components/list-view/use-list-view-client-ids.mjs +2 -2
  369. package/build-module/components/list-view/use-list-view-client-ids.mjs.map +2 -2
  370. package/build-module/components/media-placeholder/index.mjs +0 -1
  371. package/build-module/components/media-placeholder/index.mjs.map +2 -2
  372. package/build-module/components/observe-typing/index.mjs +4 -3
  373. package/build-module/components/observe-typing/index.mjs.map +2 -2
  374. package/build-module/components/preset-input-control/custom-value-controls.mjs +1 -3
  375. package/build-module/components/preset-input-control/custom-value-controls.mjs.map +2 -2
  376. package/build-module/components/preset-input-control/index.mjs +1 -3
  377. package/build-module/components/preset-input-control/index.mjs.map +2 -2
  378. package/build-module/components/resolution-tool/index.mjs +1 -2
  379. package/build-module/components/resolution-tool/index.mjs.map +2 -2
  380. package/build-module/components/rich-text/event-listeners/before-input-rules.mjs +8 -5
  381. package/build-module/components/rich-text/event-listeners/before-input-rules.mjs.map +2 -2
  382. package/build-module/components/rich-text/event-listeners/delete.mjs +7 -4
  383. package/build-module/components/rich-text/event-listeners/delete.mjs.map +2 -2
  384. package/build-module/components/rich-text/event-listeners/enter.mjs +8 -3
  385. package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
  386. package/build-module/components/rich-text/event-listeners/input-events.mjs +3 -3
  387. package/build-module/components/rich-text/event-listeners/input-events.mjs.map +2 -2
  388. package/build-module/components/rich-text/event-listeners/input-rules.mjs +8 -5
  389. package/build-module/components/rich-text/event-listeners/input-rules.mjs.map +2 -2
  390. package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs +3 -3
  391. package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs.map +2 -2
  392. package/build-module/components/rich-text/event-listeners/paste-handler.mjs +8 -2
  393. package/build-module/components/rich-text/event-listeners/paste-handler.mjs.map +2 -2
  394. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs +3 -3
  395. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs.map +2 -2
  396. package/build-module/components/rich-text/event-listeners/shortcuts.mjs +3 -3
  397. package/build-module/components/rich-text/event-listeners/shortcuts.mjs.map +2 -2
  398. package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs +3 -3
  399. package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs.map +2 -2
  400. package/build-module/components/rich-text/index.mjs +64 -13
  401. package/build-module/components/rich-text/index.mjs.map +2 -2
  402. package/build-module/components/text-alignment-control/index.mjs +0 -1
  403. package/build-module/components/text-alignment-control/index.mjs.map +2 -2
  404. package/build-module/components/text-decoration-control/index.mjs +0 -1
  405. package/build-module/components/text-decoration-control/index.mjs.map +2 -2
  406. package/build-module/components/text-indent-control/index.mjs +0 -8
  407. package/build-module/components/text-indent-control/index.mjs.map +2 -2
  408. package/build-module/components/text-transform-control/index.mjs +0 -1
  409. package/build-module/components/text-transform-control/index.mjs.map +2 -2
  410. package/build-module/components/typewriter/index.mjs +129 -136
  411. package/build-module/components/typewriter/index.mjs.map +2 -2
  412. package/build-module/components/use-block-commands/index.mjs +21 -17
  413. package/build-module/components/use-block-commands/index.mjs.map +2 -2
  414. package/build-module/components/use-block-display-information/index.mjs +10 -8
  415. package/build-module/components/use-block-display-information/index.mjs.map +2 -2
  416. package/build-module/components/use-on-block-drop/index.mjs +4 -7
  417. package/build-module/components/use-on-block-drop/index.mjs.map +2 -2
  418. package/build-module/components/use-resize-canvas/index.mjs +6 -53
  419. package/build-module/components/use-resize-canvas/index.mjs.map +2 -2
  420. package/build-module/components/writing-flow/index.mjs +12 -1
  421. package/build-module/components/writing-flow/index.mjs.map +2 -2
  422. package/build-module/components/writing-flow/use-arrow-nav.mjs +19 -6
  423. package/build-module/components/writing-flow/use-arrow-nav.mjs.map +2 -2
  424. package/build-module/components/writing-flow/use-click-selection.mjs +2 -2
  425. package/build-module/components/writing-flow/use-click-selection.mjs.map +2 -2
  426. package/build-module/components/writing-flow/use-clipboard-handler.mjs +5 -2
  427. package/build-module/components/writing-flow/use-clipboard-handler.mjs.map +2 -2
  428. package/build-module/components/writing-flow/use-drag-selection.mjs +1 -6
  429. package/build-module/components/writing-flow/use-drag-selection.mjs.map +2 -2
  430. package/build-module/components/writing-flow/use-editable-root.mjs +86 -0
  431. package/build-module/components/writing-flow/use-editable-root.mjs.map +7 -0
  432. package/build-module/components/writing-flow/use-home-end.mjs +43 -0
  433. package/build-module/components/writing-flow/use-home-end.mjs.map +7 -0
  434. package/build-module/components/writing-flow/use-input.mjs +15 -5
  435. package/build-module/components/writing-flow/use-input.mjs.map +2 -2
  436. package/build-module/components/writing-flow/use-multi-selection.mjs +2 -2
  437. package/build-module/components/writing-flow/use-multi-selection.mjs.map +2 -2
  438. package/build-module/components/writing-flow/use-select-all.mjs +19 -3
  439. package/build-module/components/writing-flow/use-select-all.mjs.map +2 -2
  440. package/build-module/components/writing-flow/use-selection-observer.mjs +128 -19
  441. package/build-module/components/writing-flow/use-selection-observer.mjs.map +2 -2
  442. package/build-module/components/writing-flow/utils.mjs +35 -1
  443. package/build-module/components/writing-flow/utils.mjs.map +2 -2
  444. package/build-module/components/writing-mode-control/index.mjs +0 -1
  445. package/build-module/components/writing-mode-control/index.mjs.map +2 -2
  446. package/build-module/hooks/background.mjs +3 -2
  447. package/build-module/hooks/background.mjs.map +2 -2
  448. package/build-module/hooks/block-fields/rich-text/index.mjs +2 -6
  449. package/build-module/hooks/block-fields/rich-text/index.mjs.map +2 -2
  450. package/build-module/hooks/elements.mjs +1 -1
  451. package/build-module/hooks/elements.mjs.map +2 -2
  452. package/build-module/hooks/font-size.mjs +1 -2
  453. package/build-module/hooks/font-size.mjs.map +2 -2
  454. package/build-module/hooks/grid-visualizer.mjs +5 -3
  455. package/build-module/hooks/grid-visualizer.mjs.map +2 -2
  456. package/build-module/hooks/layout-child.mjs +22 -12
  457. package/build-module/hooks/layout-child.mjs.map +2 -2
  458. package/build-module/hooks/layout.mjs +32 -16
  459. package/build-module/hooks/layout.mjs.map +2 -2
  460. package/build-module/hooks/position.mjs +38 -18
  461. package/build-module/hooks/position.mjs.map +2 -2
  462. package/build-module/hooks/states.mjs +32 -23
  463. package/build-module/hooks/states.mjs.map +2 -2
  464. package/build-module/hooks/style.mjs +40 -11
  465. package/build-module/hooks/style.mjs.map +2 -2
  466. package/build-module/hooks/text-align.mjs +39 -10
  467. package/build-module/hooks/text-align.mjs.map +2 -2
  468. package/build-module/hooks/typography.mjs +1 -1
  469. package/build-module/hooks/typography.mjs.map +2 -2
  470. package/build-module/layouts/constrained.mjs +35 -27
  471. package/build-module/layouts/constrained.mjs.map +2 -2
  472. package/build-module/layouts/flex.mjs +27 -22
  473. package/build-module/layouts/flex.mjs.map +2 -2
  474. package/build-module/layouts/grid.mjs +52 -11
  475. package/build-module/layouts/grid.mjs.map +2 -2
  476. package/build-module/private-apis.mjs +5 -3
  477. package/build-module/private-apis.mjs.map +2 -2
  478. package/build-module/store/actions.mjs +3 -3
  479. package/build-module/store/actions.mjs.map +2 -2
  480. package/build-module/store/private-actions.mjs +14 -0
  481. package/build-module/store/private-actions.mjs.map +2 -2
  482. package/build-module/store/private-keys.mjs +2 -2
  483. package/build-module/store/private-keys.mjs.map +2 -2
  484. package/build-module/store/private-selectors.mjs +106 -12
  485. package/build-module/store/private-selectors.mjs.map +2 -2
  486. package/build-module/store/reducer.mjs +17 -3
  487. package/build-module/store/reducer.mjs.map +2 -2
  488. package/build-module/store/selectors.mjs +13 -0
  489. package/build-module/store/selectors.mjs.map +2 -2
  490. package/build-module/utils/block-bindings.mjs +28 -0
  491. package/build-module/utils/block-bindings.mjs.map +2 -2
  492. package/build-module/utils/dom.mjs +13 -0
  493. package/build-module/utils/dom.mjs.map +2 -2
  494. package/build-style/content-rtl.css +15 -14
  495. package/build-style/content.css +15 -14
  496. package/build-style/default-editor-styles-rtl.css +1 -1
  497. package/build-style/default-editor-styles.css +1 -1
  498. package/build-style/style-rtl.css +144 -47
  499. package/build-style/style.css +144 -47
  500. package/build-types/components/block-context/index.d.ts +7 -0
  501. package/build-types/components/block-context/index.d.ts.map +1 -1
  502. package/build-types/utils/block-bindings.d.ts +19 -0
  503. package/build-types/utils/block-bindings.d.ts.map +1 -1
  504. package/build-types/utils/dom.d.ts +11 -0
  505. package/build-types/utils/dom.d.ts.map +1 -1
  506. package/build-types/utils/get-px-from-css-unit.d.ts +2 -2
  507. package/build-types/utils/get-px-from-css-unit.d.ts.map +1 -1
  508. package/build-types/utils/pasting.d.ts +1 -1
  509. package/build-types/utils/pasting.d.ts.map +1 -1
  510. package/package.json +46 -44
  511. package/src/autocompleters/block.js +10 -3
  512. package/src/autocompleters/test/block.js +53 -0
  513. package/src/components/background-image-control/index.js +0 -2
  514. package/src/components/block-canvas/index.js +9 -2
  515. package/src/components/block-card/style.scss +1 -1
  516. package/src/components/block-controls/groups.js +2 -0
  517. package/src/components/block-edit/edit.js +13 -31
  518. package/src/components/block-inspector/edit-contents.js +5 -1
  519. package/src/components/block-inspector/index.js +25 -44
  520. package/src/components/block-list/block-invalid-warning.js +8 -19
  521. package/src/components/block-list/block.js +6 -0
  522. package/src/components/block-list/index.js +0 -2
  523. package/src/components/block-list/use-block-props/index.js +2 -0
  524. package/src/components/block-list/use-block-props/use-focus-first-element.js +23 -4
  525. package/src/components/block-list/use-block-props/use-focus-handler.js +34 -9
  526. package/src/components/block-lock/style.scss +1 -1
  527. package/src/components/block-manager/style.scss +1 -1
  528. package/src/components/block-navigation/style.scss +1 -1
  529. package/src/components/block-patterns-list/stories/index.story.jsx +1 -1
  530. package/src/components/block-quick-navigation/style.scss +1 -3
  531. package/src/components/block-styles/style.scss +2 -2
  532. package/src/components/block-styles/use-styles-for-block.js +1 -0
  533. package/src/components/block-title/use-block-display-title.js +7 -2
  534. package/src/components/block-toolbar/block-toolbar-icon.js +11 -16
  535. package/src/components/block-toolbar/index.js +41 -18
  536. package/src/components/block-toolbar/test/block-toolbar-icon.js +32 -9
  537. package/src/components/block-tools/index.js +7 -0
  538. package/src/components/block-types-list/style.scss +0 -1
  539. package/src/components/block-variation-transforms/index.js +0 -1
  540. package/src/components/block-visibility/modal.js +24 -10
  541. package/src/components/block-visibility/style.scss +1 -1
  542. package/src/components/block-visibility/test/use-block-visibility.js +128 -35
  543. package/src/components/block-visibility/test/utils.js +11 -0
  544. package/src/components/block-visibility/use-block-visibility.js +33 -11
  545. package/src/components/block-visibility/utils.js +31 -6
  546. package/src/components/block-visibility/viewport-menu-item.js +10 -1
  547. package/src/components/block-visibility/viewport-toolbar.js +6 -0
  548. package/src/components/block-visibility/viewport-visibility-info.js +5 -1
  549. package/src/components/button-block-appender/content.scss +1 -7
  550. package/src/components/child-layout-control/index.js +0 -6
  551. package/src/components/color-palette/test/__snapshots__/control.js.snap +13 -108
  552. package/src/components/colors-gradients/control.js +4 -4
  553. package/src/components/colors-gradients/style.scss +2 -2
  554. package/src/components/date-format-picker/index.js +0 -1
  555. package/src/components/dimensions-tool/aspect-ratio-tool.js +0 -1
  556. package/src/components/dimensions-tool/scale-tool.js +0 -1
  557. package/src/components/dimensions-tool/width-height-tool.js +0 -2
  558. package/src/components/font-appearance-control/index.js +6 -19
  559. package/src/components/font-family/README.md +0 -9
  560. package/src/components/font-family/index.js +6 -19
  561. package/src/components/font-family/stories/index.story.jsx +1 -2
  562. package/src/components/font-sizes/font-size-picker.js +0 -1
  563. package/src/components/global-styles/border-panel.js +0 -1
  564. package/src/components/global-styles/dimensions-panel.js +0 -3
  565. package/src/components/global-styles/state-control-badges.js +45 -6
  566. package/src/components/global-styles/style.scss +5 -0
  567. package/src/components/global-styles/test/state-control-badges.js +65 -0
  568. package/src/components/global-styles/typography-panel.js +0 -7
  569. package/src/components/height-control/index.js +0 -2
  570. package/src/components/html-element-control/index.js +0 -1
  571. package/src/components/iframe/content.scss +3 -3
  572. package/src/components/image-editor/index.js +22 -0
  573. package/src/components/image-editor/zoom-dropdown.js +0 -1
  574. package/src/components/image-size-control/index.js +0 -4
  575. package/src/components/inner-content/index.js +119 -0
  576. package/src/components/inner-content/test/index.js +81 -0
  577. package/src/components/inserter/hooks/use-block-types-state.js +10 -2
  578. package/src/components/inserter/media-tab/hooks.js +114 -16
  579. package/src/components/inserter/media-tab/media-list.js +2 -0
  580. package/src/components/inserter/media-tab/media-panel.js +354 -19
  581. package/src/components/inserter/media-tab/media-preview.js +34 -17
  582. package/src/components/inserter/media-tab/media-tab.js +20 -2
  583. package/src/components/inserter/media-tab/test/hooks.js +267 -0
  584. package/src/components/inserter/media-tab/test/media-panel.js +127 -0
  585. package/src/components/inserter/mobile-tab-navigation.js +6 -1
  586. package/src/components/inserter/no-results.js +2 -2
  587. package/src/components/inserter/preview-panel.js +1 -0
  588. package/src/components/inserter/style.scss +115 -3
  589. package/src/components/inserter-list-item/index.js +8 -2
  590. package/src/components/inserter-list-item/style.scss +0 -15
  591. package/src/components/keyboard-shortcuts/index.js +28 -11
  592. package/src/components/letter-spacing-control/README.md +0 -8
  593. package/src/components/letter-spacing-control/index.js +5 -23
  594. package/src/components/letter-spacing-control/stories/index.story.jsx +0 -12
  595. package/src/components/line-height-control/README.md +0 -8
  596. package/src/components/line-height-control/index.js +6 -16
  597. package/src/components/line-height-control/stories/index.story.jsx +0 -1
  598. package/src/components/line-height-control/test/index.js +1 -7
  599. package/src/components/link-control/style.scss +2 -2
  600. package/src/components/link-control/test/index.js +6 -6
  601. package/src/components/link-picker/style.scss +1 -2
  602. package/src/components/link-picker/test/index.js +3 -1
  603. package/src/components/list-view/block-select-button.js +5 -1
  604. package/src/components/list-view/block.js +69 -23
  605. package/src/components/list-view/expander.js +5 -1
  606. package/src/components/list-view/style.scss +23 -5
  607. package/src/components/list-view/use-list-view-client-ids.js +2 -2
  608. package/src/components/media-placeholder/index.js +0 -1
  609. package/src/components/multi-selection-inspector/style.scss +1 -1
  610. package/src/components/observe-typing/index.js +9 -4
  611. package/src/components/preset-input-control/custom-value-controls.js +0 -2
  612. package/src/components/preset-input-control/index.js +0 -2
  613. package/src/components/resolution-tool/index.js +0 -1
  614. package/src/components/responsive-block-control/style.scss +1 -1
  615. package/src/components/responsive-block-control/test/index.js +1 -5
  616. package/src/components/rich-text/event-listeners/before-input-rules.js +8 -5
  617. package/src/components/rich-text/event-listeners/delete.js +7 -4
  618. package/src/components/rich-text/event-listeners/enter.js +10 -4
  619. package/src/components/rich-text/event-listeners/input-events.js +4 -3
  620. package/src/components/rich-text/event-listeners/input-rules.js +8 -5
  621. package/src/components/rich-text/event-listeners/insert-replacement-text.js +4 -3
  622. package/src/components/rich-text/event-listeners/paste-handler.js +15 -3
  623. package/src/components/rich-text/event-listeners/remove-browser-shortcuts.js +4 -3
  624. package/src/components/rich-text/event-listeners/shortcuts.js +4 -3
  625. package/src/components/rich-text/event-listeners/undo-automatic-change.js +4 -3
  626. package/src/components/rich-text/index.js +94 -25
  627. package/src/components/skip-to-selected-block/style.scss +1 -1
  628. package/src/components/text-alignment-control/index.js +0 -1
  629. package/src/components/text-decoration-control/index.js +0 -1
  630. package/src/components/text-indent-control/index.js +7 -16
  631. package/src/components/text-transform-control/index.js +0 -1
  632. package/src/components/typewriter/index.js +228 -224
  633. package/src/components/use-block-commands/index.js +27 -17
  634. package/src/components/use-block-display-information/index.js +9 -13
  635. package/src/components/use-block-display-information/test/index.js +47 -9
  636. package/src/components/use-on-block-drop/index.js +4 -7
  637. package/src/components/use-resize-canvas/index.js +10 -71
  638. package/src/components/writing-flow/index.js +15 -1
  639. package/src/components/writing-flow/use-arrow-nav.js +39 -12
  640. package/src/components/writing-flow/use-click-selection.js +2 -3
  641. package/src/components/writing-flow/use-clipboard-handler.js +5 -2
  642. package/src/components/writing-flow/use-drag-selection.js +1 -14
  643. package/src/components/writing-flow/use-editable-root.js +182 -0
  644. package/src/components/writing-flow/use-home-end.js +63 -0
  645. package/src/components/writing-flow/use-input.js +25 -8
  646. package/src/components/writing-flow/use-multi-selection.js +2 -3
  647. package/src/components/writing-flow/use-select-all.js +33 -3
  648. package/src/components/writing-flow/use-selection-observer.js +197 -38
  649. package/src/components/writing-flow/utils.js +83 -0
  650. package/src/components/writing-mode-control/index.js +0 -1
  651. package/src/hooks/background.js +7 -9
  652. package/src/hooks/block-fields/link/styles.scss +1 -6
  653. package/src/hooks/block-fields/media/styles.scss +1 -6
  654. package/src/hooks/block-fields/rich-text/index.js +6 -9
  655. package/src/hooks/block-hooks.scss +15 -0
  656. package/src/hooks/elements.js +0 -1
  657. package/src/hooks/font-size.js +0 -1
  658. package/src/hooks/grid-visualizer.js +40 -36
  659. package/src/hooks/layout-child.js +19 -9
  660. package/src/hooks/layout.js +53 -35
  661. package/src/hooks/position.js +44 -23
  662. package/src/hooks/states.js +55 -28
  663. package/src/hooks/style.js +67 -17
  664. package/src/hooks/test/cross-origin-isolation.js +0 -4
  665. package/src/hooks/test/layout.js +75 -1
  666. package/src/hooks/test/style.js +29 -0
  667. package/src/hooks/test/text-align.js +34 -1
  668. package/src/hooks/text-align.js +41 -10
  669. package/src/hooks/typography.js +0 -1
  670. package/src/layouts/constrained.js +56 -29
  671. package/src/layouts/flex.js +5 -4
  672. package/src/layouts/grid.js +59 -9
  673. package/src/layouts/test/constrained.js +91 -0
  674. package/src/layouts/test/grid.js +71 -0
  675. package/src/private-apis.js +4 -2
  676. package/src/store/actions.js +43 -14
  677. package/src/store/private-actions.js +31 -0
  678. package/src/store/private-keys.js +1 -1
  679. package/src/store/private-selectors.js +209 -16
  680. package/src/store/reducer.js +37 -2
  681. package/src/store/selectors.js +41 -0
  682. package/src/store/test/actions.js +1 -1
  683. package/src/store/test/private-selectors.js +547 -10
  684. package/src/store/test/reducer.js +41 -13
  685. package/src/store/test/selectors.js +133 -0
  686. package/src/style.scss +1 -0
  687. package/src/utils/block-bindings.ts +50 -0
  688. package/src/utils/dom.ts +33 -0
  689. package/src/utils/test/block-bindings.js +181 -0
  690. package/build/components/rich-text/input-event.cjs +0 -50
  691. package/build/components/rich-text/input-event.cjs.map +0 -7
  692. package/build/components/rich-text/shortcut.cjs +0 -51
  693. package/build/components/rich-text/shortcut.cjs.map +0 -7
  694. package/build-module/components/rich-text/input-event.mjs +0 -25
  695. package/build-module/components/rich-text/input-event.mjs.map +0 -7
  696. package/build-module/components/rich-text/shortcut.mjs +0 -26
  697. package/build-module/components/rich-text/shortcut.mjs.map +0 -7
  698. package/src/components/rich-text/input-event.js +0 -31
  699. package/src/components/rich-text/shortcut.js +0 -32
  700. package/src/components/use-resize-canvas/README.md +0 -37
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import {
6
6
  cloneBlock,
7
- __experimentalCloneSanitizedBlock,
7
+ cloneSanitizedBlock,
8
8
  createBlock,
9
9
  doBlocksMatchTemplate,
10
10
  getBlockType,
@@ -1755,7 +1755,7 @@ export const duplicateBlocks =
1755
1755
  clientIdsArray[ clientIdsArray.length - 1 ]
1756
1756
  );
1757
1757
  const clonedBlocks = blocks.map( ( block ) =>
1758
- __experimentalCloneSanitizedBlock( block )
1758
+ cloneSanitizedBlock( block )
1759
1759
  );
1760
1760
  dispatch.insertBlocks(
1761
1761
  clonedBlocks,
@@ -1935,6 +1935,7 @@ export function __unstableSetTemporarilyEditingAsBlocks( clientId ) {
1935
1935
  *
1936
1936
  * @typedef {Object} InserterMediaRequest
1937
1937
  * @property {number} per_page How many items to fetch per page.
1938
+ * @property {number} [page] Which page of results to fetch. Defaults to the first page.
1938
1939
  * @property {string} search The search term to use for filtering the results.
1939
1940
  */
1940
1941
 
@@ -1953,6 +1954,17 @@ export function __unstableSetTemporarilyEditingAsBlocks( clientId ) {
1953
1954
  * @property {string} [caption] The caption of the media item.
1954
1955
  */
1955
1956
 
1957
+ /**
1958
+ * Interface for paginated inserter media responses. A media category's `fetch`
1959
+ * may return this instead of a plain array to opt into pagination, in which case
1960
+ * the media tab renders paging controls for the category.
1961
+ *
1962
+ * @typedef {Object} InserterMediaResponse
1963
+ * @property {InserterMediaItem[]} mediaItems The media items for the requested page.
1964
+ * @property {number} totalItems The total number of items across all pages.
1965
+ * @property {number} totalPages The total number of pages available.
1966
+ */
1967
+
1956
1968
  /**
1957
1969
  * Registers a new inserter media category. Once registered, the media category is
1958
1970
  * available in the inserter's media tab.
@@ -1966,6 +1978,7 @@ export function __unstableSetTemporarilyEditingAsBlocks( clientId ) {
1966
1978
  * _Properties_
1967
1979
  *
1968
1980
  * - _per_page_ `number`: How many items to fetch per page.
1981
+ * - _page_ `[number]`: Which page of results to fetch. Defaults to the first page.
1969
1982
  * - _search_ `string`: The search term to use for filtering the results.
1970
1983
  *
1971
1984
  * _Type Definition_
@@ -1984,7 +1997,19 @@ export function __unstableSetTemporarilyEditingAsBlocks( clientId ) {
1984
1997
  * - _alt_ `[string]`: The alt text of the media item.
1985
1998
  * - _caption_ `[string]`: The caption of the media item.
1986
1999
  *
1987
- * @param {InserterMediaCategory} category The inserter media category to register.
2000
+ * _Type Definition_
2001
+ *
2002
+ * - _InserterMediaResponse_ `Object`: Interface for paginated inserter media responses. A media
2003
+ * category's `fetch` may return this instead of a plain array to opt into pagination, in which
2004
+ * case the media tab renders paging controls for the category.
2005
+ *
2006
+ * _Properties_
2007
+ *
2008
+ * - _mediaItems_ `InserterMediaItem[]`: The media items for the requested page.
2009
+ * - _totalItems_ `number`: The total number of items across all pages.
2010
+ * - _totalPages_ `number`: The total number of pages available.
2011
+ *
2012
+ * @param {InserterMediaCategory} category The inserter media category to register.
1988
2013
  *
1989
2014
  * @example
1990
2015
  * ```js
@@ -2041,16 +2066,20 @@ export function __unstableSetTemporarilyEditingAsBlocks( clientId ) {
2041
2066
  * ```
2042
2067
  *
2043
2068
  * @typedef {Object} InserterMediaCategory Interface for inserter media category.
2044
- * @property {string} name The name of the media category, that should be unique among all media categories.
2045
- * @property {Object} labels Labels for the media category.
2046
- * @property {string} labels.name General name of the media category. It's used in the inserter media items list.
2047
- * @property {string} [labels.search_items='Search'] Label for searching items. Default is ‘Search Posts’ / ‘Search Pages’.
2048
- * @property {('image'|'audio'|'video')} mediaType The media type of the media category.
2049
- * @property {(InserterMediaRequest) => Promise<InserterMediaItem[]>} fetch The function to fetch media items for the category.
2050
- * @property {(InserterMediaItem) => string} [getReportUrl] If the media category supports reporting media items, this function should return
2051
- * the report url for the media item. It accepts the `InserterMediaItem` as an argument.
2052
- * @property {boolean} [isExternalResource] If the media category is an external resource, this should be set to true.
2053
- * This is used to avoid making a request to the external resource when the user
2069
+ * @property {string} name The name of the media category, that should be unique among all media categories.
2070
+ * @property {Object} labels Labels for the media category.
2071
+ * @property {string} labels.name General name of the media category. It's used in the inserter media items list.
2072
+ * @property {string} [labels.search_items='Search'] Label for searching items. Default is ‘Search Posts’ / ‘Search Pages’.
2073
+ * @property {('image'|'audio'|'video')} mediaType The media type of the media category.
2074
+ * @property {(InserterMediaRequest) => Promise<InserterMediaItem[]|InserterMediaResponse>} fetch The function to fetch media items for the category. Returning an
2075
+ * `InserterMediaResponse` instead of a plain array opts the category into
2076
+ * pagination.
2077
+ * @property {(InserterMediaItem) => string} [getReportUrl] If the media category supports reporting media items, this function should return
2078
+ * the report url for the media item. It accepts the `InserterMediaItem` as an argument.
2079
+ * @property {boolean} [isExternalResource] If the media category is an external resource, this should be set to true.
2080
+ * This is used to avoid making a request to the external resource when checking
2081
+ * whether the category has any media items to display in the media tab.
2082
+ * @property {string} [emptyMessage] Optional message shown in place of the generic "No results found." when the source has no items and there is no active search. Providing it also keeps the source in the tab list while empty, so the message stays reachable.
2054
2083
  */
2055
2084
  export const registerInserterMediaCategory =
2056
2085
  ( category ) =>
@@ -2079,7 +2108,7 @@ export const registerInserterMediaCategory =
2079
2108
  }
2080
2109
  if ( ! category.fetch || typeof category.fetch !== 'function' ) {
2081
2110
  console.error(
2082
- 'Category should have a `fetch` function defined with the following signature `(InserterMediaRequest) => Promise<InserterMediaItem[]>`.'
2111
+ 'Category should have a `fetch` function defined with the following signature `(InserterMediaRequest) => Promise<InserterMediaItem[]|InserterMediaResponse>`.'
2083
2112
  );
2084
2113
  return;
2085
2114
  }
@@ -558,3 +558,34 @@ export function setSelectedBlockStyleStateCanvasPreview( clientId, value ) {
558
558
  value,
559
559
  };
560
560
  }
561
+
562
+ /**
563
+ * Sets the globally selected viewport style state. When set to a value other
564
+ * than 'default', block style edits in the inspector apply to that viewport.
565
+ * Driven by the editor's device preview while Responsive editing is enabled.
566
+ *
567
+ * @param {string} viewport The selected viewport state (e.g. 'default', 'tablet', 'mobile').
568
+ *
569
+ * @return {Object} Action object.
570
+ */
571
+ export function setStyleStateViewport( viewport ) {
572
+ return {
573
+ type: 'SET_STYLE_STATE_VIEWPORT',
574
+ viewport,
575
+ };
576
+ }
577
+
578
+ /**
579
+ * Sets whether Responsive editing is enabled. When enabled, the device preview
580
+ * also drives which viewport block style edits are applied to. Session-only.
581
+ *
582
+ * @param {boolean} enabled Whether Responsive editing is enabled.
583
+ *
584
+ * @return {Object} Action object.
585
+ */
586
+ export function setResponsiveEditing( enabled ) {
587
+ return {
588
+ type: 'SET_RESPONSIVE_EDITING',
589
+ enabled,
590
+ };
591
+ }
@@ -10,10 +10,10 @@ export const mediaEditKey = Symbol( 'mediaEditKey' );
10
10
  export const getMediaSelectKey = Symbol( 'getMediaSelect' );
11
11
  export const isIsolatedEditorKey = Symbol( 'isIsolatedEditor' );
12
12
  export const deviceTypeKey = Symbol( 'deviceTypeKey' );
13
- export const onViewportStateChangeKey = Symbol( 'onViewportStateChangeKey' );
14
13
  export const isNavigationOverlayContextKey = Symbol(
15
14
  'isNavigationOverlayContext'
16
15
  );
17
16
  export const isNavigationPostEditorKey = Symbol( 'isNavigationPostEditor' );
18
17
  export const mediaUploadOnSuccessKey = Symbol( 'mediaUploadOnSuccess' );
18
+ export const mediaSideloadFromUrlKey = Symbol( 'mediaSideloadFromUrl' );
19
19
  export const openMediaEditorModalKey = Symbol( 'openMediaEditorModal' );
@@ -6,6 +6,7 @@ import {
6
6
  hasBlockSupport,
7
7
  privateApis as blocksPrivateApis,
8
8
  } from '@wordpress/blocks';
9
+ import { privateApis as globalStylesEnginePrivateApis } from '@wordpress/global-styles-engine';
9
10
 
10
11
  /**
11
12
  * Internal dependencies
@@ -42,9 +43,22 @@ import {
42
43
  import { BLOCK_VISIBILITY_VIEWPORTS } from '../components/block-visibility/constants';
43
44
 
44
45
  const { isContentBlock } = unlock( blocksPrivateApis );
46
+ const { getViewportBreakpoints } = unlock( globalStylesEnginePrivateApis );
45
47
 
46
48
  export { getBlockSettings } from './get-block-settings';
47
49
 
50
+ function isViewportAvailable( state, viewport ) {
51
+ if ( viewport === BLOCK_VISIBILITY_VIEWPORTS.desktop.key ) {
52
+ return true;
53
+ }
54
+
55
+ return (
56
+ getViewportBreakpoints(
57
+ getSettings( state )?.__experimentalFeatures?.viewport
58
+ )[ viewport ] !== undefined
59
+ );
60
+ }
61
+
48
62
  /**
49
63
  * Returns true if the block interface is hidden, or false otherwise.
50
64
  *
@@ -159,16 +173,31 @@ export const getClientIdsTree = createSelector(
159
173
  ( state ) => [ state.blocks.order ]
160
174
  );
161
175
 
162
- function getEnabledClientIdsTreeUnmemoized( state, rootClientId ) {
176
+ /**
177
+ * Returns a tree of block objects filtered by a block inclusion callback.
178
+ * Excluded blocks are replaced by any included descendants.
179
+ *
180
+ * @param {Object} state Global application state.
181
+ * @param {?string} rootClientId Optional root client ID of block list.
182
+ * @param {Function} includesBlock Callback that returns whether to include a block.
183
+ *
184
+ * @return {Object[]} Tree of block objects with only clientID and innerBlocks set.
185
+ */
186
+ function getFilteredClientIdsTreeUnmemoized(
187
+ state,
188
+ rootClientId,
189
+ includesBlock
190
+ ) {
163
191
  const blockOrder = getBlockOrder( state, rootClientId );
164
192
  const result = [];
165
193
 
166
194
  for ( const clientId of blockOrder ) {
167
- const innerBlocks = getEnabledClientIdsTreeUnmemoized(
195
+ const innerBlocks = getFilteredClientIdsTreeUnmemoized(
168
196
  state,
169
- clientId
197
+ clientId,
198
+ includesBlock
170
199
  );
171
- if ( getBlockEditingMode( state, clientId ) !== 'disabled' ) {
200
+ if ( includesBlock( state, clientId ) ) {
172
201
  result.push( { clientId, innerBlocks } );
173
202
  } else {
174
203
  result.push( ...innerBlocks );
@@ -178,6 +207,100 @@ function getEnabledClientIdsTreeUnmemoized( state, rootClientId ) {
178
207
  return result;
179
208
  }
180
209
 
210
+ function getEnabledClientIdsTreeUnmemoized( state, rootClientId ) {
211
+ return getFilteredClientIdsTreeUnmemoized(
212
+ state,
213
+ rootClientId,
214
+ ( _state, clientId ) =>
215
+ getBlockEditingMode( _state, clientId ) !== 'disabled'
216
+ );
217
+ }
218
+
219
+ /**
220
+ * Returns whether the nearest explicit block editing mode in the block's
221
+ * ancestry is disabled.
222
+ *
223
+ * @param {Object} state Global application state.
224
+ * @param {string} clientId The block client ID.
225
+ *
226
+ * @return {boolean} Whether an explicit parent block editing mode disables this
227
+ * block.
228
+ */
229
+ function hasExplicitDisabledParent( state, clientId ) {
230
+ let parent = state.blocks.parents.get( clientId );
231
+
232
+ while ( parent !== undefined ) {
233
+ const parentBlockEditingMode =
234
+ state.blocks.blockEditingModes.get( parent );
235
+
236
+ if ( parentBlockEditingMode ) {
237
+ return parentBlockEditingMode === 'disabled';
238
+ }
239
+
240
+ parent = state.blocks.parents.get( parent );
241
+ }
242
+
243
+ return false;
244
+ }
245
+
246
+ /**
247
+ * Returns the block tree displayed by List View.
248
+ *
249
+ * @param {Object} state Global application state.
250
+ * @param {?string} rootClientId Optional root client ID of block list.
251
+ *
252
+ * @return {Object[]} Tree of block objects with only clientID and innerBlocks set.
253
+ */
254
+ function getListViewClientIdsTreeUnmemoized( state, rootClientId ) {
255
+ return getFilteredClientIdsTreeUnmemoized(
256
+ state,
257
+ rootClientId,
258
+ ( _state, clientId ) => {
259
+ // Non-disabled blocks are always shown in List view.
260
+ if ( getBlockEditingMode( _state, clientId ) !== 'disabled' ) {
261
+ return true;
262
+ }
263
+
264
+ const explicitBlockEditingMode =
265
+ _state.blocks.blockEditingModes.get( clientId );
266
+ if ( explicitBlockEditingMode ) {
267
+ return explicitBlockEditingMode !== 'disabled';
268
+ }
269
+
270
+ if ( hasExplicitDisabledParent( _state, clientId ) ) {
271
+ return false;
272
+ }
273
+
274
+ // When a contentOnly section is being edited, there's some special handling.
275
+ if ( _state.editedContentOnlySection ) {
276
+ // Blocks within the edited content only section generally have their block
277
+ // editing mode flipped from disabled to default for editing, any disabled
278
+ // blocks can still be excluded.
279
+ if ( isWithinEditedContentOnlySection( _state, clientId ) ) {
280
+ return false;
281
+ }
282
+
283
+ // Blocks that are not in another section but are disabled are shown.
284
+ // These are blocks that would usually be visible.
285
+ const parentSectionBlock = getParentSectionBlock(
286
+ _state,
287
+ clientId
288
+ );
289
+ if ( ! parentSectionBlock ) {
290
+ return true;
291
+ }
292
+
293
+ // If a block is in another section, then it is only visible if its a content block.
294
+ if ( isContentBlock( getBlockName( _state, clientId ) ) ) {
295
+ return true;
296
+ }
297
+ }
298
+
299
+ return false;
300
+ }
301
+ );
302
+ }
303
+
181
304
  /**
182
305
  * Returns a tree of block objects with only clientID and innerBlocks set.
183
306
  * Blocks with a 'disabled' editing mode are not included.
@@ -195,6 +318,34 @@ export const getEnabledClientIdsTree = createRegistrySelector( () =>
195
318
  ] )
196
319
  );
197
320
 
321
+ /**
322
+ * Returns the block tree displayed by List View.
323
+ *
324
+ * Blocks with a 'disabled' editing mode are usually not included. When a
325
+ * content-only section is being edited, List View keeps visible outside-section
326
+ * context blocks in the tree so they can be faded. Blocks that were already
327
+ * hidden because they are non-content blocks inside another content-only section
328
+ * remain hidden.
329
+ *
330
+ * @param {Object} state Global application state.
331
+ * @param {?string} rootClientId Optional root client ID of block list.
332
+ *
333
+ * @return {Object[]} Tree of block objects with only clientID and innerBlocks set.
334
+ */
335
+ export const getListViewClientIdsTree = createRegistrySelector( () =>
336
+ createSelector( getListViewClientIdsTreeUnmemoized, ( state ) => [
337
+ state.blocks.order,
338
+ state.derivedBlockEditingModes,
339
+ state.blocks.blockEditingModes,
340
+ state.blocks.parents,
341
+ state.blocks.byClientId,
342
+ state.blocks.attributes,
343
+ state.blockListSettings,
344
+ state.editedContentOnlySection,
345
+ state.settings,
346
+ ] )
347
+ );
348
+
198
349
  /**
199
350
  * Returns a list of a given block's ancestors, from top to bottom. Blocks with
200
351
  * a 'disabled' editing mode are excluded.
@@ -788,12 +939,12 @@ export function getInsertionPoint( state ) {
788
939
  * Returns true if the block is hidden anywhere, or false otherwise.
789
940
  *
790
941
  * This selector checks whether a block has visibility metadata set that would
791
- * hide it at any viewport or everywhere. It's useful for flagging blocks that
792
- * have visibility restrictions.
942
+ * hide it at any available viewport or everywhere. It's useful for flagging
943
+ * blocks that have active visibility restrictions.
793
944
  *
794
945
  * A block is considered hidden anywhere if:
795
946
  * - blockVisibility is false (hidden everywhere)
796
- * - blockVisibility.viewport has any viewport set to false (hidden at specific screen sizes)
947
+ * - blockVisibility.viewport has any available viewport set to false (hidden at specific screen sizes)
797
948
  *
798
949
  * @param {Object} state Global application state.
799
950
  * @param {string} clientId Client ID of the block.
@@ -819,6 +970,7 @@ export const isBlockHiddenAnywhere = ( state, clientId ) => {
819
970
  // Check if the block is hidden at any viewport.
820
971
  return Object.values( BLOCK_VISIBILITY_VIEWPORTS ).some(
821
972
  ( viewport ) =>
973
+ isViewportAvailable( state, viewport.key ) &&
822
974
  blockVisibility?.viewport?.[ viewport.key ] === false
823
975
  );
824
976
  }
@@ -873,7 +1025,7 @@ export const isBlockParentHiddenEverywhere = ( state, clientId ) => {
873
1025
  *
874
1026
  * A block is considered hidden at a viewport if:
875
1027
  * - blockVisibility is false (hidden everywhere)
876
- * - blockVisibility is an object with the specified viewport set to false
1028
+ * - blockVisibility is an object with an available specified viewport set to false
877
1029
  *
878
1030
  * @param {Object} state Global application state.
879
1031
  * @param {string} clientId Client ID of the block.
@@ -894,7 +1046,12 @@ export const isBlockHiddenAtViewport = ( state, clientId, viewport ) => {
894
1046
  blockVisibilityViewport !== null &&
895
1047
  typeof viewport === 'string'
896
1048
  ) {
897
- return blockVisibilityViewport?.[ viewport.toLowerCase() ] === false;
1049
+ const viewportKey = viewport.toLowerCase();
1050
+
1051
+ return (
1052
+ isViewportAvailable( state, viewportKey ) &&
1053
+ blockVisibilityViewport?.[ viewportKey ] === false
1054
+ );
898
1055
  }
899
1056
  return false;
900
1057
  };
@@ -1152,6 +1309,30 @@ const DEFAULT_BLOCK_STYLE_STATE = {
1152
1309
  pseudo: 'default',
1153
1310
  };
1154
1311
 
1312
+ /**
1313
+ * Returns the globally selected viewport style state. When set to a value other
1314
+ * than 'default', block style edits in the inspector apply to that viewport.
1315
+ *
1316
+ * @param {Object} state Global application state.
1317
+ *
1318
+ * @return {string} The selected viewport style state.
1319
+ */
1320
+ export function getStyleStateViewport( state ) {
1321
+ return state.styleStateViewport ?? DEFAULT_BLOCK_STYLE_STATE.viewport;
1322
+ }
1323
+
1324
+ /**
1325
+ * Returns whether Responsive editing is enabled. When enabled, the device
1326
+ * preview also drives which viewport block style edits are applied to.
1327
+ *
1328
+ * @param {Object} state Global application state.
1329
+ *
1330
+ * @return {boolean} Whether Responsive editing is enabled.
1331
+ */
1332
+ export function isResponsiveEditing( state ) {
1333
+ return state.isResponsiveEditing;
1334
+ }
1335
+
1155
1336
  /**
1156
1337
  * Returns the selected style state for a block's style controls.
1157
1338
  *
@@ -1160,13 +1341,25 @@ const DEFAULT_BLOCK_STYLE_STATE = {
1160
1341
  *
1161
1342
  * @return {Object} The selected block style state.
1162
1343
  */
1163
- export function getSelectedBlockStyleState( state, clientId ) {
1164
- if ( state.selectedBlockStyleState?.clientId !== clientId ) {
1165
- return DEFAULT_BLOCK_STYLE_STATE;
1166
- }
1167
-
1168
- return state.selectedBlockStyleState.value ?? DEFAULT_BLOCK_STYLE_STATE;
1169
- }
1344
+ export const getSelectedBlockStyleState = createSelector(
1345
+ ( state, clientId ) => {
1346
+ const perBlockState =
1347
+ state.selectedBlockStyleState?.clientId === clientId
1348
+ ? state.selectedBlockStyleState.value ??
1349
+ DEFAULT_BLOCK_STYLE_STATE
1350
+ : DEFAULT_BLOCK_STYLE_STATE;
1351
+
1352
+ return {
1353
+ ...perBlockState,
1354
+ // The viewport is tracked globally, so inject it here. This way
1355
+ // consumers receive a single combined state object instead of
1356
+ // merging the global viewport themselves, and selectors derived
1357
+ // from this stay consistent.
1358
+ viewport: getStyleStateViewport( state ),
1359
+ };
1360
+ },
1361
+ ( state ) => [ state.styleStateViewport, state.selectedBlockStyleState ]
1362
+ );
1170
1363
 
1171
1364
  /**
1172
1365
  * Returns whether a non-default style state is selected for a block.
@@ -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.
@@ -1379,7 +1379,7 @@ describe( 'actions', () => {
1379
1379
  fetch: 'c',
1380
1380
  } )( {} );
1381
1381
  expect( console ).toHaveErroredWith(
1382
- 'Category should have a `fetch` function defined with the following signature `(InserterMediaRequest) => Promise<InserterMediaItem[]>`.'
1382
+ 'Category should have a `fetch` function defined with the following signature `(InserterMediaRequest) => Promise<InserterMediaItem[]|InserterMediaResponse>`.'
1383
1383
  );
1384
1384
  } );
1385
1385
  it( 'has unique name', () => {