@wordpress/block-editor 15.23.0 → 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 (684) hide show
  1. package/CHANGELOG.md +33 -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 +2 -3
  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/writing-flow/index.cjs +12 -1
  173. package/build/components/writing-flow/index.cjs.map +3 -3
  174. package/build/components/writing-flow/use-arrow-nav.cjs +18 -5
  175. package/build/components/writing-flow/use-arrow-nav.cjs.map +2 -2
  176. package/build/components/writing-flow/use-click-selection.cjs +2 -2
  177. package/build/components/writing-flow/use-click-selection.cjs.map +2 -2
  178. package/build/components/writing-flow/use-clipboard-handler.cjs +4 -1
  179. package/build/components/writing-flow/use-clipboard-handler.cjs.map +2 -2
  180. package/build/components/writing-flow/use-drag-selection.cjs +3 -8
  181. package/build/components/writing-flow/use-drag-selection.cjs.map +2 -2
  182. package/build/components/writing-flow/use-editable-root.cjs +112 -0
  183. package/build/components/writing-flow/use-editable-root.cjs.map +7 -0
  184. package/build/components/writing-flow/use-home-end.cjs +64 -0
  185. package/build/components/writing-flow/use-home-end.cjs.map +7 -0
  186. package/build/components/writing-flow/use-input.cjs +15 -5
  187. package/build/components/writing-flow/use-input.cjs.map +2 -2
  188. package/build/components/writing-flow/use-multi-selection.cjs +2 -2
  189. package/build/components/writing-flow/use-multi-selection.cjs.map +2 -2
  190. package/build/components/writing-flow/use-select-all.cjs +14 -2
  191. package/build/components/writing-flow/use-select-all.cjs.map +2 -2
  192. package/build/components/writing-flow/use-selection-observer.cjs +126 -20
  193. package/build/components/writing-flow/use-selection-observer.cjs.map +3 -3
  194. package/build/components/writing-flow/utils.cjs +39 -2
  195. package/build/components/writing-flow/utils.cjs.map +2 -2
  196. package/build/components/writing-mode-control/index.cjs +0 -1
  197. package/build/components/writing-mode-control/index.cjs.map +2 -2
  198. package/build/hooks/background.cjs +3 -2
  199. package/build/hooks/background.cjs.map +2 -2
  200. package/build/hooks/block-fields/rich-text/index.cjs +2 -3
  201. package/build/hooks/block-fields/rich-text/index.cjs.map +3 -3
  202. package/build/hooks/elements.cjs +1 -1
  203. package/build/hooks/elements.cjs.map +2 -2
  204. package/build/hooks/font-size.cjs +1 -2
  205. package/build/hooks/font-size.cjs.map +2 -2
  206. package/build/hooks/grid-visualizer.cjs +5 -3
  207. package/build/hooks/grid-visualizer.cjs.map +2 -2
  208. package/build/hooks/layout-child.cjs +22 -12
  209. package/build/hooks/layout-child.cjs.map +3 -3
  210. package/build/hooks/layout.cjs +33 -16
  211. package/build/hooks/layout.cjs.map +3 -3
  212. package/build/hooks/position.cjs +36 -16
  213. package/build/hooks/position.cjs.map +2 -2
  214. package/build/hooks/states.cjs +29 -12
  215. package/build/hooks/states.cjs.map +3 -3
  216. package/build/hooks/style.cjs +31 -9
  217. package/build/hooks/style.cjs.map +3 -3
  218. package/build/hooks/text-align.cjs +36 -6
  219. package/build/hooks/text-align.cjs.map +3 -3
  220. package/build/hooks/typography.cjs +1 -1
  221. package/build/hooks/typography.cjs.map +2 -2
  222. package/build/layouts/constrained.cjs +35 -27
  223. package/build/layouts/constrained.cjs.map +2 -2
  224. package/build/layouts/flex.cjs +27 -22
  225. package/build/layouts/flex.cjs.map +2 -2
  226. package/build/layouts/grid.cjs +51 -11
  227. package/build/layouts/grid.cjs.map +2 -2
  228. package/build/private-apis.cjs +4 -1
  229. package/build/private-apis.cjs.map +3 -3
  230. package/build/store/actions.cjs +2 -2
  231. package/build/store/actions.cjs.map +2 -2
  232. package/build/store/private-keys.cjs +3 -0
  233. package/build/store/private-keys.cjs.map +2 -2
  234. package/build/store/private-selectors.cjs +85 -6
  235. package/build/store/private-selectors.cjs.map +3 -3
  236. package/build/store/selectors.cjs +13 -0
  237. package/build/store/selectors.cjs.map +2 -2
  238. package/build/utils/block-bindings.cjs +29 -0
  239. package/build/utils/block-bindings.cjs.map +2 -2
  240. package/build/utils/dom.cjs +14 -0
  241. package/build/utils/dom.cjs.map +2 -2
  242. package/build-module/autocompleters/block.mjs +10 -2
  243. package/build-module/autocompleters/block.mjs.map +2 -2
  244. package/build-module/components/background-image-control/index.mjs +0 -2
  245. package/build-module/components/background-image-control/index.mjs.map +2 -2
  246. package/build-module/components/block-canvas/index.mjs +7 -2
  247. package/build-module/components/block-canvas/index.mjs.map +2 -2
  248. package/build-module/components/block-controls/groups.mjs +3 -1
  249. package/build-module/components/block-controls/groups.mjs.map +2 -2
  250. package/build-module/components/block-edit/edit.mjs +11 -18
  251. package/build-module/components/block-edit/edit.mjs.map +2 -2
  252. package/build-module/components/block-inspector/edit-contents.mjs +4 -1
  253. package/build-module/components/block-inspector/edit-contents.mjs.map +2 -2
  254. package/build-module/components/block-inspector/index.mjs +2 -3
  255. package/build-module/components/block-inspector/index.mjs.map +2 -2
  256. package/build-module/components/block-list/block-invalid-warning.mjs +8 -19
  257. package/build-module/components/block-list/block-invalid-warning.mjs.map +2 -2
  258. package/build-module/components/block-list/block.mjs +9 -3
  259. package/build-module/components/block-list/block.mjs.map +3 -3
  260. package/build-module/components/block-list/index.mjs +1 -3
  261. package/build-module/components/block-list/index.mjs.map +2 -2
  262. package/build-module/components/block-list/use-block-props/index.mjs +3 -1
  263. package/build-module/components/block-list/use-block-props/index.mjs.map +2 -2
  264. package/build-module/components/block-list/use-block-props/use-focus-first-element.mjs +9 -4
  265. package/build-module/components/block-list/use-block-props/use-focus-first-element.mjs.map +2 -2
  266. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs +12 -4
  267. package/build-module/components/block-list/use-block-props/use-focus-handler.mjs.map +2 -2
  268. package/build-module/components/block-styles/use-styles-for-block.mjs +2 -1
  269. package/build-module/components/block-styles/use-styles-for-block.mjs.map +2 -2
  270. package/build-module/components/block-title/use-block-display-title.mjs +7 -2
  271. package/build-module/components/block-title/use-block-display-title.mjs.map +2 -2
  272. package/build-module/components/block-toolbar/block-toolbar-icon.mjs +10 -14
  273. package/build-module/components/block-toolbar/block-toolbar-icon.mjs.map +2 -2
  274. package/build-module/components/block-toolbar/index.mjs +43 -24
  275. package/build-module/components/block-toolbar/index.mjs.map +2 -2
  276. package/build-module/components/block-tools/index.mjs +7 -2
  277. package/build-module/components/block-tools/index.mjs.map +2 -2
  278. package/build-module/components/block-variation-transforms/index.mjs +0 -1
  279. package/build-module/components/block-variation-transforms/index.mjs.map +2 -2
  280. package/build-module/components/block-visibility/modal.mjs +22 -10
  281. package/build-module/components/block-visibility/modal.mjs.map +2 -2
  282. package/build-module/components/block-visibility/use-block-visibility.mjs +17 -7
  283. package/build-module/components/block-visibility/use-block-visibility.mjs.map +2 -2
  284. package/build-module/components/block-visibility/utils.mjs +18 -3
  285. package/build-module/components/block-visibility/utils.mjs.map +2 -2
  286. package/build-module/components/block-visibility/viewport-menu-item.mjs +7 -1
  287. package/build-module/components/block-visibility/viewport-menu-item.mjs.map +2 -2
  288. package/build-module/components/block-visibility/viewport-toolbar.mjs +5 -0
  289. package/build-module/components/block-visibility/viewport-toolbar.mjs.map +2 -2
  290. package/build-module/components/block-visibility/viewport-visibility-info.mjs +5 -1
  291. package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
  292. package/build-module/components/child-layout-control/index.mjs +0 -6
  293. package/build-module/components/child-layout-control/index.mjs.map +2 -2
  294. package/build-module/components/colors-gradients/control.mjs +5 -5
  295. package/build-module/components/colors-gradients/control.mjs.map +2 -2
  296. package/build-module/components/date-format-picker/index.mjs +0 -1
  297. package/build-module/components/date-format-picker/index.mjs.map +2 -2
  298. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs +1 -2
  299. package/build-module/components/dimensions-tool/aspect-ratio-tool.mjs.map +2 -2
  300. package/build-module/components/dimensions-tool/scale-tool.mjs +0 -1
  301. package/build-module/components/dimensions-tool/scale-tool.mjs.map +2 -2
  302. package/build-module/components/dimensions-tool/width-height-tool.mjs +2 -4
  303. package/build-module/components/dimensions-tool/width-height-tool.mjs.map +2 -2
  304. package/build-module/components/font-appearance-control/index.mjs +6 -15
  305. package/build-module/components/font-appearance-control/index.mjs.map +2 -2
  306. package/build-module/components/font-family/index.mjs +6 -15
  307. package/build-module/components/font-family/index.mjs.map +2 -2
  308. package/build-module/components/font-sizes/font-size-picker.mjs +1 -2
  309. package/build-module/components/font-sizes/font-size-picker.mjs.map +2 -2
  310. package/build-module/components/global-styles/border-panel.mjs +0 -1
  311. package/build-module/components/global-styles/border-panel.mjs.map +2 -2
  312. package/build-module/components/global-styles/dimensions-panel.mjs +0 -3
  313. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  314. package/build-module/components/global-styles/state-control-badges.mjs +41 -5
  315. package/build-module/components/global-styles/state-control-badges.mjs.map +2 -2
  316. package/build-module/components/global-styles/typography-panel.mjs +4 -11
  317. package/build-module/components/global-styles/typography-panel.mjs.map +2 -2
  318. package/build-module/components/height-control/index.mjs +0 -2
  319. package/build-module/components/height-control/index.mjs.map +2 -2
  320. package/build-module/components/html-element-control/index.mjs +0 -1
  321. package/build-module/components/html-element-control/index.mjs.map +2 -2
  322. package/build-module/components/image-editor/index.mjs +5 -0
  323. package/build-module/components/image-editor/index.mjs.map +2 -2
  324. package/build-module/components/image-editor/zoom-dropdown.mjs +0 -1
  325. package/build-module/components/image-editor/zoom-dropdown.mjs.map +2 -2
  326. package/build-module/components/image-size-control/index.mjs +3 -7
  327. package/build-module/components/image-size-control/index.mjs.map +2 -2
  328. package/build-module/components/inner-content/index.mjs +82 -0
  329. package/build-module/components/inner-content/index.mjs.map +7 -0
  330. package/build-module/components/inserter/hooks/use-block-types-state.mjs +10 -2
  331. package/build-module/components/inserter/hooks/use-block-types-state.mjs.map +2 -2
  332. package/build-module/components/inserter/media-tab/hooks.mjs +66 -12
  333. package/build-module/components/inserter/media-tab/hooks.mjs.map +2 -2
  334. package/build-module/components/inserter/media-tab/media-list.mjs +3 -1
  335. package/build-module/components/inserter/media-tab/media-list.mjs.map +2 -2
  336. package/build-module/components/inserter/media-tab/media-panel.mjs +297 -32
  337. package/build-module/components/inserter/media-tab/media-panel.mjs.map +2 -2
  338. package/build-module/components/inserter/media-tab/media-preview.mjs +33 -18
  339. package/build-module/components/inserter/media-tab/media-preview.mjs.map +2 -2
  340. package/build-module/components/inserter/media-tab/media-tab.mjs +27 -7
  341. package/build-module/components/inserter/media-tab/media-tab.mjs.map +2 -2
  342. package/build-module/components/inserter/mobile-tab-navigation.mjs +6 -1
  343. package/build-module/components/inserter/mobile-tab-navigation.mjs.map +2 -2
  344. package/build-module/components/inserter/no-results.mjs +2 -2
  345. package/build-module/components/inserter/no-results.mjs.map +2 -2
  346. package/build-module/components/inserter/preview-panel.mjs +2 -1
  347. package/build-module/components/inserter/preview-panel.mjs.map +2 -2
  348. package/build-module/components/inserter-list-item/index.mjs +8 -2
  349. package/build-module/components/inserter-list-item/index.mjs.map +2 -2
  350. package/build-module/components/keyboard-shortcuts/index.mjs +19 -11
  351. package/build-module/components/keyboard-shortcuts/index.mjs.map +2 -2
  352. package/build-module/components/letter-spacing-control/index.mjs +0 -14
  353. package/build-module/components/letter-spacing-control/index.mjs.map +2 -2
  354. package/build-module/components/line-height-control/index.mjs +6 -12
  355. package/build-module/components/line-height-control/index.mjs.map +2 -2
  356. package/build-module/components/list-view/block-select-button.mjs +90 -84
  357. package/build-module/components/list-view/block-select-button.mjs.map +2 -2
  358. package/build-module/components/list-view/block.mjs +61 -21
  359. package/build-module/components/list-view/block.mjs.map +2 -2
  360. package/build-module/components/list-view/expander.mjs +1 -1
  361. package/build-module/components/list-view/expander.mjs.map +2 -2
  362. package/build-module/components/list-view/use-list-view-client-ids.mjs +2 -2
  363. package/build-module/components/list-view/use-list-view-client-ids.mjs.map +2 -2
  364. package/build-module/components/media-placeholder/index.mjs +0 -1
  365. package/build-module/components/media-placeholder/index.mjs.map +2 -2
  366. package/build-module/components/observe-typing/index.mjs +4 -3
  367. package/build-module/components/observe-typing/index.mjs.map +2 -2
  368. package/build-module/components/preset-input-control/custom-value-controls.mjs +1 -3
  369. package/build-module/components/preset-input-control/custom-value-controls.mjs.map +2 -2
  370. package/build-module/components/preset-input-control/index.mjs +1 -3
  371. package/build-module/components/preset-input-control/index.mjs.map +2 -2
  372. package/build-module/components/resolution-tool/index.mjs +1 -2
  373. package/build-module/components/resolution-tool/index.mjs.map +2 -2
  374. package/build-module/components/rich-text/event-listeners/before-input-rules.mjs +8 -5
  375. package/build-module/components/rich-text/event-listeners/before-input-rules.mjs.map +2 -2
  376. package/build-module/components/rich-text/event-listeners/delete.mjs +7 -4
  377. package/build-module/components/rich-text/event-listeners/delete.mjs.map +2 -2
  378. package/build-module/components/rich-text/event-listeners/enter.mjs +8 -3
  379. package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
  380. package/build-module/components/rich-text/event-listeners/input-events.mjs +3 -3
  381. package/build-module/components/rich-text/event-listeners/input-events.mjs.map +2 -2
  382. package/build-module/components/rich-text/event-listeners/input-rules.mjs +8 -5
  383. package/build-module/components/rich-text/event-listeners/input-rules.mjs.map +2 -2
  384. package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs +3 -3
  385. package/build-module/components/rich-text/event-listeners/insert-replacement-text.mjs.map +2 -2
  386. package/build-module/components/rich-text/event-listeners/paste-handler.mjs +8 -2
  387. package/build-module/components/rich-text/event-listeners/paste-handler.mjs.map +2 -2
  388. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs +3 -3
  389. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.mjs.map +2 -2
  390. package/build-module/components/rich-text/event-listeners/shortcuts.mjs +3 -3
  391. package/build-module/components/rich-text/event-listeners/shortcuts.mjs.map +2 -2
  392. package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs +3 -3
  393. package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs.map +2 -2
  394. package/build-module/components/rich-text/index.mjs +64 -13
  395. package/build-module/components/rich-text/index.mjs.map +2 -2
  396. package/build-module/components/text-alignment-control/index.mjs +0 -1
  397. package/build-module/components/text-alignment-control/index.mjs.map +2 -2
  398. package/build-module/components/text-decoration-control/index.mjs +0 -1
  399. package/build-module/components/text-decoration-control/index.mjs.map +2 -2
  400. package/build-module/components/text-indent-control/index.mjs +0 -8
  401. package/build-module/components/text-indent-control/index.mjs.map +2 -2
  402. package/build-module/components/text-transform-control/index.mjs +0 -1
  403. package/build-module/components/text-transform-control/index.mjs.map +2 -2
  404. package/build-module/components/typewriter/index.mjs +129 -136
  405. package/build-module/components/typewriter/index.mjs.map +2 -2
  406. package/build-module/components/use-block-commands/index.mjs +21 -17
  407. package/build-module/components/use-block-commands/index.mjs.map +2 -2
  408. package/build-module/components/use-block-display-information/index.mjs +10 -8
  409. package/build-module/components/use-block-display-information/index.mjs.map +2 -2
  410. package/build-module/components/use-on-block-drop/index.mjs +4 -7
  411. package/build-module/components/use-on-block-drop/index.mjs.map +2 -2
  412. package/build-module/components/writing-flow/index.mjs +12 -1
  413. package/build-module/components/writing-flow/index.mjs.map +2 -2
  414. package/build-module/components/writing-flow/use-arrow-nav.mjs +19 -6
  415. package/build-module/components/writing-flow/use-arrow-nav.mjs.map +2 -2
  416. package/build-module/components/writing-flow/use-click-selection.mjs +2 -2
  417. package/build-module/components/writing-flow/use-click-selection.mjs.map +2 -2
  418. package/build-module/components/writing-flow/use-clipboard-handler.mjs +5 -2
  419. package/build-module/components/writing-flow/use-clipboard-handler.mjs.map +2 -2
  420. package/build-module/components/writing-flow/use-drag-selection.mjs +1 -6
  421. package/build-module/components/writing-flow/use-drag-selection.mjs.map +2 -2
  422. package/build-module/components/writing-flow/use-editable-root.mjs +86 -0
  423. package/build-module/components/writing-flow/use-editable-root.mjs.map +7 -0
  424. package/build-module/components/writing-flow/use-home-end.mjs +43 -0
  425. package/build-module/components/writing-flow/use-home-end.mjs.map +7 -0
  426. package/build-module/components/writing-flow/use-input.mjs +15 -5
  427. package/build-module/components/writing-flow/use-input.mjs.map +2 -2
  428. package/build-module/components/writing-flow/use-multi-selection.mjs +2 -2
  429. package/build-module/components/writing-flow/use-multi-selection.mjs.map +2 -2
  430. package/build-module/components/writing-flow/use-select-all.mjs +19 -3
  431. package/build-module/components/writing-flow/use-select-all.mjs.map +2 -2
  432. package/build-module/components/writing-flow/use-selection-observer.mjs +128 -19
  433. package/build-module/components/writing-flow/use-selection-observer.mjs.map +2 -2
  434. package/build-module/components/writing-flow/utils.mjs +35 -1
  435. package/build-module/components/writing-flow/utils.mjs.map +2 -2
  436. package/build-module/components/writing-mode-control/index.mjs +0 -1
  437. package/build-module/components/writing-mode-control/index.mjs.map +2 -2
  438. package/build-module/hooks/background.mjs +3 -2
  439. package/build-module/hooks/background.mjs.map +2 -2
  440. package/build-module/hooks/block-fields/rich-text/index.mjs +2 -6
  441. package/build-module/hooks/block-fields/rich-text/index.mjs.map +2 -2
  442. package/build-module/hooks/elements.mjs +1 -1
  443. package/build-module/hooks/elements.mjs.map +2 -2
  444. package/build-module/hooks/font-size.mjs +1 -2
  445. package/build-module/hooks/font-size.mjs.map +2 -2
  446. package/build-module/hooks/grid-visualizer.mjs +5 -3
  447. package/build-module/hooks/grid-visualizer.mjs.map +2 -2
  448. package/build-module/hooks/layout-child.mjs +22 -12
  449. package/build-module/hooks/layout-child.mjs.map +2 -2
  450. package/build-module/hooks/layout.mjs +32 -16
  451. package/build-module/hooks/layout.mjs.map +2 -2
  452. package/build-module/hooks/position.mjs +38 -18
  453. package/build-module/hooks/position.mjs.map +2 -2
  454. package/build-module/hooks/states.mjs +29 -12
  455. package/build-module/hooks/states.mjs.map +2 -2
  456. package/build-module/hooks/style.mjs +40 -11
  457. package/build-module/hooks/style.mjs.map +2 -2
  458. package/build-module/hooks/text-align.mjs +39 -10
  459. package/build-module/hooks/text-align.mjs.map +2 -2
  460. package/build-module/hooks/typography.mjs +1 -1
  461. package/build-module/hooks/typography.mjs.map +2 -2
  462. package/build-module/layouts/constrained.mjs +35 -27
  463. package/build-module/layouts/constrained.mjs.map +2 -2
  464. package/build-module/layouts/flex.mjs +27 -22
  465. package/build-module/layouts/flex.mjs.map +2 -2
  466. package/build-module/layouts/grid.mjs +52 -11
  467. package/build-module/layouts/grid.mjs.map +2 -2
  468. package/build-module/private-apis.mjs +5 -1
  469. package/build-module/private-apis.mjs.map +2 -2
  470. package/build-module/store/actions.mjs +3 -3
  471. package/build-module/store/actions.mjs.map +2 -2
  472. package/build-module/store/private-keys.mjs +2 -0
  473. package/build-module/store/private-keys.mjs.map +2 -2
  474. package/build-module/store/private-selectors.mjs +84 -6
  475. package/build-module/store/private-selectors.mjs.map +2 -2
  476. package/build-module/store/selectors.mjs +13 -0
  477. package/build-module/store/selectors.mjs.map +2 -2
  478. package/build-module/utils/block-bindings.mjs +28 -0
  479. package/build-module/utils/block-bindings.mjs.map +2 -2
  480. package/build-module/utils/dom.mjs +13 -0
  481. package/build-module/utils/dom.mjs.map +2 -2
  482. package/build-style/content-rtl.css +15 -14
  483. package/build-style/content.css +15 -14
  484. package/build-style/default-editor-styles-rtl.css +1 -1
  485. package/build-style/default-editor-styles.css +1 -1
  486. package/build-style/style-rtl.css +144 -47
  487. package/build-style/style.css +144 -47
  488. package/build-types/components/block-context/index.d.ts +7 -0
  489. package/build-types/components/block-context/index.d.ts.map +1 -1
  490. package/build-types/utils/block-bindings.d.ts +19 -0
  491. package/build-types/utils/block-bindings.d.ts.map +1 -1
  492. package/build-types/utils/dom.d.ts +11 -0
  493. package/build-types/utils/dom.d.ts.map +1 -1
  494. package/build-types/utils/get-px-from-css-unit.d.ts +2 -2
  495. package/build-types/utils/get-px-from-css-unit.d.ts.map +1 -1
  496. package/build-types/utils/pasting.d.ts +1 -1
  497. package/build-types/utils/pasting.d.ts.map +1 -1
  498. package/package.json +46 -44
  499. package/src/autocompleters/block.js +10 -3
  500. package/src/autocompleters/test/block.js +53 -0
  501. package/src/components/background-image-control/index.js +0 -2
  502. package/src/components/block-canvas/index.js +9 -2
  503. package/src/components/block-card/style.scss +1 -1
  504. package/src/components/block-controls/groups.js +2 -0
  505. package/src/components/block-edit/edit.js +13 -31
  506. package/src/components/block-inspector/edit-contents.js +5 -1
  507. package/src/components/block-inspector/index.js +3 -2
  508. package/src/components/block-list/block-invalid-warning.js +8 -19
  509. package/src/components/block-list/block.js +6 -0
  510. package/src/components/block-list/index.js +0 -2
  511. package/src/components/block-list/use-block-props/index.js +2 -0
  512. package/src/components/block-list/use-block-props/use-focus-first-element.js +23 -4
  513. package/src/components/block-list/use-block-props/use-focus-handler.js +34 -9
  514. package/src/components/block-lock/style.scss +1 -1
  515. package/src/components/block-manager/style.scss +1 -1
  516. package/src/components/block-navigation/style.scss +1 -1
  517. package/src/components/block-patterns-list/stories/index.story.jsx +1 -1
  518. package/src/components/block-quick-navigation/style.scss +1 -3
  519. package/src/components/block-styles/style.scss +2 -2
  520. package/src/components/block-styles/use-styles-for-block.js +1 -0
  521. package/src/components/block-title/use-block-display-title.js +7 -2
  522. package/src/components/block-toolbar/block-toolbar-icon.js +11 -16
  523. package/src/components/block-toolbar/index.js +41 -18
  524. package/src/components/block-toolbar/test/block-toolbar-icon.js +32 -9
  525. package/src/components/block-tools/index.js +7 -0
  526. package/src/components/block-types-list/style.scss +0 -1
  527. package/src/components/block-variation-transforms/index.js +0 -1
  528. package/src/components/block-visibility/modal.js +24 -10
  529. package/src/components/block-visibility/style.scss +1 -1
  530. package/src/components/block-visibility/test/use-block-visibility.js +128 -35
  531. package/src/components/block-visibility/test/utils.js +11 -0
  532. package/src/components/block-visibility/use-block-visibility.js +33 -11
  533. package/src/components/block-visibility/utils.js +31 -6
  534. package/src/components/block-visibility/viewport-menu-item.js +10 -1
  535. package/src/components/block-visibility/viewport-toolbar.js +6 -0
  536. package/src/components/block-visibility/viewport-visibility-info.js +5 -1
  537. package/src/components/button-block-appender/content.scss +1 -7
  538. package/src/components/child-layout-control/index.js +0 -6
  539. package/src/components/color-palette/test/__snapshots__/control.js.snap +13 -108
  540. package/src/components/colors-gradients/control.js +4 -4
  541. package/src/components/colors-gradients/style.scss +2 -2
  542. package/src/components/date-format-picker/index.js +0 -1
  543. package/src/components/dimensions-tool/aspect-ratio-tool.js +0 -1
  544. package/src/components/dimensions-tool/scale-tool.js +0 -1
  545. package/src/components/dimensions-tool/width-height-tool.js +0 -2
  546. package/src/components/font-appearance-control/index.js +6 -19
  547. package/src/components/font-family/README.md +0 -9
  548. package/src/components/font-family/index.js +6 -19
  549. package/src/components/font-family/stories/index.story.jsx +1 -2
  550. package/src/components/font-sizes/font-size-picker.js +0 -1
  551. package/src/components/global-styles/border-panel.js +0 -1
  552. package/src/components/global-styles/dimensions-panel.js +0 -3
  553. package/src/components/global-styles/state-control-badges.js +45 -6
  554. package/src/components/global-styles/style.scss +5 -0
  555. package/src/components/global-styles/test/state-control-badges.js +65 -0
  556. package/src/components/global-styles/typography-panel.js +0 -7
  557. package/src/components/height-control/index.js +0 -2
  558. package/src/components/html-element-control/index.js +0 -1
  559. package/src/components/iframe/content.scss +3 -3
  560. package/src/components/image-editor/index.js +22 -0
  561. package/src/components/image-editor/zoom-dropdown.js +0 -1
  562. package/src/components/image-size-control/index.js +0 -4
  563. package/src/components/inner-content/index.js +119 -0
  564. package/src/components/inner-content/test/index.js +81 -0
  565. package/src/components/inserter/hooks/use-block-types-state.js +10 -2
  566. package/src/components/inserter/media-tab/hooks.js +114 -16
  567. package/src/components/inserter/media-tab/media-list.js +2 -0
  568. package/src/components/inserter/media-tab/media-panel.js +354 -19
  569. package/src/components/inserter/media-tab/media-preview.js +34 -17
  570. package/src/components/inserter/media-tab/media-tab.js +20 -2
  571. package/src/components/inserter/media-tab/test/hooks.js +267 -0
  572. package/src/components/inserter/media-tab/test/media-panel.js +127 -0
  573. package/src/components/inserter/mobile-tab-navigation.js +6 -1
  574. package/src/components/inserter/no-results.js +2 -2
  575. package/src/components/inserter/preview-panel.js +1 -0
  576. package/src/components/inserter/style.scss +115 -3
  577. package/src/components/inserter-list-item/index.js +8 -2
  578. package/src/components/inserter-list-item/style.scss +0 -15
  579. package/src/components/keyboard-shortcuts/index.js +28 -11
  580. package/src/components/letter-spacing-control/README.md +0 -8
  581. package/src/components/letter-spacing-control/index.js +5 -23
  582. package/src/components/letter-spacing-control/stories/index.story.jsx +0 -12
  583. package/src/components/line-height-control/README.md +0 -8
  584. package/src/components/line-height-control/index.js +6 -16
  585. package/src/components/line-height-control/stories/index.story.jsx +0 -1
  586. package/src/components/line-height-control/test/index.js +1 -7
  587. package/src/components/link-control/style.scss +2 -2
  588. package/src/components/link-control/test/index.js +6 -6
  589. package/src/components/link-picker/style.scss +1 -2
  590. package/src/components/link-picker/test/index.js +3 -1
  591. package/src/components/list-view/block-select-button.js +5 -1
  592. package/src/components/list-view/block.js +69 -23
  593. package/src/components/list-view/expander.js +5 -1
  594. package/src/components/list-view/style.scss +23 -5
  595. package/src/components/list-view/use-list-view-client-ids.js +2 -2
  596. package/src/components/media-placeholder/index.js +0 -1
  597. package/src/components/multi-selection-inspector/style.scss +1 -1
  598. package/src/components/observe-typing/index.js +9 -4
  599. package/src/components/preset-input-control/custom-value-controls.js +0 -2
  600. package/src/components/preset-input-control/index.js +0 -2
  601. package/src/components/resolution-tool/index.js +0 -1
  602. package/src/components/responsive-block-control/style.scss +1 -1
  603. package/src/components/responsive-block-control/test/index.js +1 -5
  604. package/src/components/rich-text/event-listeners/before-input-rules.js +8 -5
  605. package/src/components/rich-text/event-listeners/delete.js +7 -4
  606. package/src/components/rich-text/event-listeners/enter.js +10 -4
  607. package/src/components/rich-text/event-listeners/input-events.js +4 -3
  608. package/src/components/rich-text/event-listeners/input-rules.js +8 -5
  609. package/src/components/rich-text/event-listeners/insert-replacement-text.js +4 -3
  610. package/src/components/rich-text/event-listeners/paste-handler.js +15 -3
  611. package/src/components/rich-text/event-listeners/remove-browser-shortcuts.js +4 -3
  612. package/src/components/rich-text/event-listeners/shortcuts.js +4 -3
  613. package/src/components/rich-text/event-listeners/undo-automatic-change.js +4 -3
  614. package/src/components/rich-text/index.js +94 -25
  615. package/src/components/skip-to-selected-block/style.scss +1 -1
  616. package/src/components/text-alignment-control/index.js +0 -1
  617. package/src/components/text-decoration-control/index.js +0 -1
  618. package/src/components/text-indent-control/index.js +7 -16
  619. package/src/components/text-transform-control/index.js +0 -1
  620. package/src/components/typewriter/index.js +228 -224
  621. package/src/components/use-block-commands/index.js +27 -17
  622. package/src/components/use-block-display-information/index.js +9 -13
  623. package/src/components/use-block-display-information/test/index.js +47 -9
  624. package/src/components/use-on-block-drop/index.js +4 -7
  625. package/src/components/writing-flow/index.js +15 -1
  626. package/src/components/writing-flow/use-arrow-nav.js +39 -12
  627. package/src/components/writing-flow/use-click-selection.js +2 -3
  628. package/src/components/writing-flow/use-clipboard-handler.js +5 -2
  629. package/src/components/writing-flow/use-drag-selection.js +1 -14
  630. package/src/components/writing-flow/use-editable-root.js +182 -0
  631. package/src/components/writing-flow/use-home-end.js +63 -0
  632. package/src/components/writing-flow/use-input.js +25 -8
  633. package/src/components/writing-flow/use-multi-selection.js +2 -3
  634. package/src/components/writing-flow/use-select-all.js +33 -3
  635. package/src/components/writing-flow/use-selection-observer.js +197 -38
  636. package/src/components/writing-flow/utils.js +83 -0
  637. package/src/components/writing-mode-control/index.js +0 -1
  638. package/src/hooks/background.js +7 -9
  639. package/src/hooks/block-fields/link/styles.scss +1 -6
  640. package/src/hooks/block-fields/media/styles.scss +1 -6
  641. package/src/hooks/block-fields/rich-text/index.js +6 -9
  642. package/src/hooks/block-hooks.scss +15 -0
  643. package/src/hooks/elements.js +0 -1
  644. package/src/hooks/font-size.js +0 -1
  645. package/src/hooks/grid-visualizer.js +40 -36
  646. package/src/hooks/layout-child.js +19 -9
  647. package/src/hooks/layout.js +53 -35
  648. package/src/hooks/position.js +44 -23
  649. package/src/hooks/states.js +36 -13
  650. package/src/hooks/style.js +67 -17
  651. package/src/hooks/test/cross-origin-isolation.js +0 -4
  652. package/src/hooks/test/layout.js +75 -1
  653. package/src/hooks/test/style.js +29 -0
  654. package/src/hooks/test/text-align.js +34 -1
  655. package/src/hooks/text-align.js +41 -10
  656. package/src/hooks/typography.js +0 -1
  657. package/src/layouts/constrained.js +56 -29
  658. package/src/layouts/flex.js +5 -4
  659. package/src/layouts/grid.js +59 -9
  660. package/src/layouts/test/constrained.js +91 -0
  661. package/src/layouts/test/grid.js +71 -0
  662. package/src/private-apis.js +4 -0
  663. package/src/store/actions.js +43 -14
  664. package/src/store/private-keys.js +1 -0
  665. package/src/store/private-selectors.js +166 -9
  666. package/src/store/selectors.js +41 -0
  667. package/src/store/test/actions.js +1 -1
  668. package/src/store/test/private-selectors.js +533 -0
  669. package/src/store/test/reducer.js +11 -11
  670. package/src/store/test/selectors.js +133 -0
  671. package/src/style.scss +1 -0
  672. package/src/utils/block-bindings.ts +50 -0
  673. package/src/utils/dom.ts +33 -0
  674. package/src/utils/test/block-bindings.js +181 -0
  675. package/build/components/rich-text/input-event.cjs +0 -50
  676. package/build/components/rich-text/input-event.cjs.map +0 -7
  677. package/build/components/rich-text/shortcut.cjs +0 -51
  678. package/build/components/rich-text/shortcut.cjs.map +0 -7
  679. package/build-module/components/rich-text/input-event.mjs +0 -25
  680. package/build-module/components/rich-text/input-event.mjs.map +0 -7
  681. package/build-module/components/rich-text/shortcut.mjs +0 -26
  682. package/build-module/components/rich-text/shortcut.mjs.map +0 -7
  683. package/src/components/rich-text/input-event.js +0 -31
  684. package/src/components/rich-text/shortcut.js +0 -32
@@ -125,8 +125,14 @@ function createBlockCompleter() {
125
125
  return ! ( /\S/.test( before ) || /\S/.test( after ) );
126
126
  },
127
127
  getOptionCompletion( inserterItem ) {
128
- const { name, initialAttributes, innerBlocks, syncStatus, blocks } =
129
- inserterItem;
128
+ const {
129
+ name,
130
+ initialAttributes,
131
+ innerBlocks,
132
+ innerContent,
133
+ syncStatus,
134
+ blocks,
135
+ } = inserterItem;
130
136
 
131
137
  return {
132
138
  action: 'replace',
@@ -140,7 +146,8 @@ function createBlockCompleter() {
140
146
  initialAttributes,
141
147
  createBlocksFromInnerBlocksTemplate(
142
148
  innerBlocks
143
- )
149
+ ),
150
+ innerContent
144
151
  ),
145
152
  };
146
153
  },
@@ -0,0 +1,53 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { registerBlockType, unregisterBlockType } from '@wordpress/blocks';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import blockCompleter from '../block';
10
+
11
+ describe( 'block autocompleter', () => {
12
+ beforeAll( () => {
13
+ registerBlockType( 'core/html', {
14
+ apiVersion: 3,
15
+ save: () => null,
16
+ category: 'text',
17
+ title: 'Custom HTML',
18
+ } );
19
+ registerBlockType( 'core/paragraph', {
20
+ apiVersion: 3,
21
+ save: ( { attributes } ) => attributes.content || null,
22
+ category: 'text',
23
+ title: 'Paragraph',
24
+ attributes: { content: { type: 'string', source: 'html' } },
25
+ } );
26
+ } );
27
+
28
+ afterAll( () => {
29
+ unregisterBlockType( 'core/html' );
30
+ unregisterBlockType( 'core/paragraph' );
31
+ } );
32
+
33
+ describe( 'getOptionCompletion', () => {
34
+ it( "carries a variation's innerContent onto the inserted block", () => {
35
+ const { action, value } = blockCompleter.getOptionCompletion( {
36
+ name: 'core/html',
37
+ initialAttributes: {},
38
+ innerBlocks: [ [ 'core/paragraph', { content: 'Editable' } ] ],
39
+ innerContent: [ '<div class="card">', null, '</div>' ],
40
+ } );
41
+
42
+ expect( action ).toBe( 'replace' );
43
+ expect( value.name ).toBe( 'core/html' );
44
+ expect( value.innerContent ).toEqual( [
45
+ '<div class="card">',
46
+ null,
47
+ '</div>',
48
+ ] );
49
+ expect( value.innerBlocks ).toHaveLength( 1 );
50
+ expect( value.innerBlocks[ 0 ].name ).toBe( 'core/paragraph' );
51
+ } );
52
+ } );
53
+ } );
@@ -579,7 +579,6 @@ function BackgroundSizeControls( {
579
579
  onChange={ toggleScrollWithPage }
580
580
  />
581
581
  <ToggleGroupControl
582
- size="__unstable-large"
583
582
  label={ __( 'Size' ) }
584
583
  value={ currentValueForToggle }
585
584
  onChange={ updateBackgroundSize }
@@ -618,7 +617,6 @@ function BackgroundSizeControls( {
618
617
  aria-label={ __( 'Background image width' ) }
619
618
  onChange={ updateBackgroundSize }
620
619
  value={ sizeValue }
621
- size="__unstable-large"
622
620
  __unstableInputWidth="100px"
623
621
  min={ 0 }
624
622
  placeholder={ __( 'Auto' ) }
@@ -14,7 +14,7 @@ import BlockTools from '../block-tools';
14
14
  import EditorStyles from '../editor-styles';
15
15
  import Iframe from '../iframe';
16
16
  import WritingFlow from '../writing-flow';
17
- import { useMouseMoveTypingReset } from '../observe-typing';
17
+ import { useMouseMoveTypingReset, useTypingObserver } from '../observe-typing';
18
18
  import { useBlockSelectionClearer } from '../block-selection-clearer';
19
19
  import { useBlockCommands } from '../use-block-commands';
20
20
  import { store as blockEditorStore } from '../../store';
@@ -60,7 +60,14 @@ export function ExperimentalBlockCanvas( {
60
60
  const resetTypingRef = useMouseMoveTypingReset();
61
61
  const clearerRef = useBlockSelectionClearer();
62
62
  const localRef = useRef();
63
- const contentRef = useMergeRefs( [ contentRefProp, clearerRef, localRef ] );
63
+ // Attached to the same node as the writing flow ref: the iframe body,
64
+ // or the WritingFlow element when the canvas is not iframed.
65
+ const contentRef = useMergeRefs( [
66
+ contentRefProp,
67
+ clearerRef,
68
+ localRef,
69
+ useTypingObserver(),
70
+ ] );
64
71
  const zoomLevel = useSelect(
65
72
  ( select ) => unlock( select( blockEditorStore ) ).getZoomLevel(),
66
73
  []
@@ -22,7 +22,7 @@
22
22
  }
23
23
 
24
24
  .block-editor-block-card__title {
25
- font-weight: $font-weight-medium;
25
+ font-weight: var(--wpds-typography-font-weight-emphasis);
26
26
  display: flex;
27
27
  align-items: center;
28
28
  flex-wrap: wrap;
@@ -8,6 +8,7 @@ const BlockControlsBlock = createSlotFill( 'BlockControlsBlock' );
8
8
  const BlockControlsInline = createSlotFill( 'BlockFormatControls' );
9
9
  const BlockControlsOther = createSlotFill( 'BlockControlsOther' );
10
10
  const BlockControlsParent = createSlotFill( 'BlockControlsParent' );
11
+ const BlockControlsStyleState = createSlotFill( 'BlockControlsStyleState' );
11
12
 
12
13
  const groups = {
13
14
  default: BlockControlsDefault,
@@ -15,6 +16,7 @@ const groups = {
15
16
  inline: BlockControlsInline,
16
17
  other: BlockControlsOther,
17
18
  parent: BlockControlsParent,
19
+ 'style-state': BlockControlsStyleState,
18
20
  };
19
21
 
20
22
  export default groups;
@@ -22,22 +22,13 @@ import { useCallback, useContext, useMemo } from '@wordpress/element';
22
22
  import BlockContext from '../block-context';
23
23
  import isURLLike from '../link-control/is-url-like';
24
24
  import {
25
+ getBlockBindingsContext,
25
26
  hasPatternOverridesDefaultBinding,
26
27
  replacePatternOverridesDefaultBinding,
27
28
  } from '../../utils/block-bindings';
28
29
  import { unlock } from '../../lock-unlock';
29
30
  import { PrivateBlockContext } from '../block-list/private-block-context';
30
31
 
31
- /**
32
- * Default value used for blocks which do not define their own context needs,
33
- * used to guarantee that a block's `context` prop will always be an object. It
34
- * is assigned as a constant since it is always expected to be an empty object,
35
- * and in order to avoid unnecessary React reconciliations of a changing object.
36
- *
37
- * @type {{}}
38
- */
39
- const DEFAULT_BLOCK_CONTEXT = {};
40
-
41
32
  const Edit = ( props ) => {
42
33
  const { name } = props;
43
34
  const blockType = getBlockType( name );
@@ -69,32 +60,23 @@ const EditWithGeneratedProps = ( props ) => {
69
60
  const { bindableAttributes } = useContext( PrivateBlockContext );
70
61
 
71
62
  const { blockBindings, context, hasPatternOverrides } = useMemo( () => {
72
- // Assign context values using the block type's declared context needs.
73
- const computedContext = blockType?.usesContext
74
- ? Object.fromEntries(
75
- Object.entries( blockContext ).filter( ( [ key ] ) =>
76
- blockType.usesContext.includes( key )
77
- )
78
- )
79
- : DEFAULT_BLOCK_CONTEXT;
80
- // Add context requested by Block Bindings sources.
81
- if ( attributes?.metadata?.bindings ) {
82
- Object.values( attributes?.metadata?.bindings || {} ).forEach(
83
- ( binding ) => {
84
- registeredSources[ binding?.source ]?.usesContext?.forEach(
85
- ( key ) => {
86
- computedContext[ key ] = blockContext[ key ];
87
- }
88
- );
89
- }
90
- );
91
- }
92
63
  return {
93
64
  blockBindings: replacePatternOverridesDefaultBinding(
94
65
  attributes?.metadata?.bindings,
95
66
  bindableAttributes
96
67
  ),
97
- context: computedContext,
68
+ // Assign context values using the block type's declared context
69
+ // needs, plus the context requested by the block's bindings
70
+ // sources.
71
+ context: getBlockBindingsContext(
72
+ blockContext,
73
+ blockType?.usesContext,
74
+ attributes?.metadata?.bindings
75
+ ? Object.values( attributes.metadata.bindings ).map(
76
+ ( binding ) => registeredSources[ binding?.source ]
77
+ )
78
+ : undefined
79
+ ),
98
80
  hasPatternOverrides: hasPatternOverridesDefaultBinding(
99
81
  attributes?.metadata?.bindings
100
82
  ),
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { Button, __experimentalVStack as VStack } from '@wordpress/components';
5
5
  import { __ } from '@wordpress/i18n';
6
- import { useSelect } from '@wordpress/data';
6
+ import { useSelect, useDispatch } from '@wordpress/data';
7
7
  import { isReusableBlock, isTemplatePart } from '@wordpress/blocks';
8
8
 
9
9
  /**
@@ -59,11 +59,15 @@ function InlineEditButton( {
59
59
  editContentOnlySection,
60
60
  stopEditingContentOnlySection,
61
61
  } ) {
62
+ const { selectBlock } = useDispatch( blockEditorStore );
62
63
  const handleClick = () => {
63
64
  if ( ! editedContentOnlySection ) {
64
65
  editContentOnlySection( clientId );
66
+ selectBlock( clientId );
65
67
  } else {
66
68
  stopEditingContentOnlySection();
69
+ // Keep the selected section pattern or content block selected after exiting.
70
+ selectBlock( clientId );
67
71
  }
68
72
  };
69
73
 
@@ -394,13 +394,14 @@ const BlockInspectorSingleBlock = ( {
394
394
  selectedBlockStyleState,
395
395
  showStateOnCanvas,
396
396
  isResponsiveEditing,
397
- isBlockStyleStateSelected,
398
397
  } ) => {
399
398
  const listViewRef = useRef( null );
400
399
  const hasMultipleTabs = availableTabs?.length > 1;
401
400
  const hasPseudoState = hasPseudoBlockStyleState( selectedBlockStyleState );
402
401
  const isEditingStyleState =
403
- isBlockStyleStateSelected || isResponsiveEditing;
402
+ ( hasViewportBlockStyleState( selectedBlockStyleState ) &&
403
+ isResponsiveEditing ) ||
404
+ hasPseudoBlockStyleState( selectedBlockStyleState );
404
405
  const hasParentChildBlockCards =
405
406
  editedContentOnlySection &&
406
407
  editedContentOnlySection !== renderedBlockClientId;
@@ -20,7 +20,7 @@ const blockToBlocks = ( block ) =>
20
20
  } );
21
21
 
22
22
  export default function BlockInvalidWarning( { clientId } ) {
23
- const { block, canInsertHTMLBlock, canInsertClassicBlock } = useSelect(
23
+ const { block, canInsertHTMLBlock } = useSelect(
24
24
  ( select ) => {
25
25
  const { canInsertBlockType, getBlock, getBlockRootClientId } =
26
26
  select( blockEditorStore );
@@ -33,10 +33,6 @@ export default function BlockInvalidWarning( { clientId } ) {
33
33
  'core/html',
34
34
  rootClientId
35
35
  ),
36
- canInsertClassicBlock: canInsertBlockType(
37
- 'core/freeform',
38
- rootClientId
39
- ),
40
36
  };
41
37
  },
42
38
  [ clientId ]
@@ -48,16 +44,13 @@ export default function BlockInvalidWarning( { clientId } ) {
48
44
 
49
45
  const convert = useMemo(
50
46
  () => ( {
51
- toClassic() {
52
- const classicBlock = createBlock( 'core/freeform', {
53
- content: block.originalContent,
54
- } );
55
- return replaceBlock( block.clientId, classicBlock );
56
- },
57
47
  toHTML() {
58
- const htmlBlock = createBlock( 'core/html', {
59
- content: block.originalContent,
60
- } );
48
+ const htmlBlock = createBlock(
49
+ 'core/html',
50
+ {},
51
+ [],
52
+ [ block.originalContent ]
53
+ );
61
54
  return replaceBlock( block.clientId, htmlBlock );
62
55
  },
63
56
  toBlocks() {
@@ -88,12 +81,8 @@ export default function BlockInvalidWarning( { clientId } ) {
88
81
  title: __( 'Convert to HTML' ),
89
82
  onClick: convert.toHTML,
90
83
  },
91
- canInsertClassicBlock && {
92
- title: __( 'Convert to Classic Block' ),
93
- onClick: convert.toClassic,
94
- },
95
84
  ].filter( Boolean ),
96
- [ canInsertHTMLBlock, canInsertClassicBlock, convert ]
85
+ [ canInsertHTMLBlock, convert ]
97
86
  );
98
87
 
99
88
  return (
@@ -622,6 +622,7 @@ function BlockListBlockProvider( props ) {
622
622
  const blockVisibility = attributes?.metadata?.blockVisibility;
623
623
  const deviceType =
624
624
  settings?.[ deviceTypeKey ]?.toLowerCase() || 'desktop';
625
+ const viewportSettings = settings?.__experimentalFeatures?.viewport;
625
626
 
626
627
  const hasLightBlockWrapper = blockType?.apiVersion > 1;
627
628
  const isMultiSelected = isBlockMultiSelected( clientId );
@@ -645,6 +646,7 @@ function BlockListBlockProvider( props ) {
645
646
  bindableAttributes,
646
647
  blockVisibility,
647
648
  deviceType,
649
+ viewportSettings,
648
650
  isMultiSelected,
649
651
  blockEditingMode,
650
652
  isEditingDisabled: blockEditingMode === 'disabled',
@@ -736,6 +738,7 @@ function BlockListBlockProvider( props ) {
736
738
  : false,
737
739
  blockVisibility,
738
740
  deviceType,
741
+ viewportSettings,
739
742
  };
740
743
  },
741
744
  [ clientId, rootClientId ]
@@ -753,6 +756,7 @@ function BlockListBlockProvider( props ) {
753
756
  const { isBlockCurrentlyHidden } = useBlockVisibility( {
754
757
  blockVisibility: selectedProps?.blockVisibility,
755
758
  deviceType: selectedProps?.deviceType,
759
+ viewportSettings: selectedProps?.viewportSettings,
756
760
  view: defaultViewRef.current,
757
761
  } );
758
762
 
@@ -817,6 +821,7 @@ function BlockListBlockProvider( props ) {
817
821
  bindableAttributes,
818
822
  blockVisibility,
819
823
  deviceType,
824
+ viewportSettings,
820
825
  } = selectedProps;
821
826
 
822
827
  const privateContext = {
@@ -856,6 +861,7 @@ function BlockListBlockProvider( props ) {
856
861
  bindableAttributes,
857
862
  blockVisibility,
858
863
  deviceType,
864
+ viewportSettings,
859
865
  };
860
866
 
861
867
  if (
@@ -35,7 +35,6 @@ import {
35
35
  BlockEditContextProvider,
36
36
  DEFAULT_BLOCK_EDIT_CONTEXT,
37
37
  } from '../block-edit/context';
38
- import { useTypingObserver } from '../observe-typing';
39
38
  import { ZoomOutSeparator } from './zoom-out-separator';
40
39
  import { unlock } from '../../lock-unlock';
41
40
 
@@ -113,7 +112,6 @@ function Root( { className, ...settings } ) {
113
112
  ref: useMergeRefs( [
114
113
  useBlockSelectionClearer(),
115
114
  useInBetweenInserter(),
116
- useTypingObserver(),
117
115
  ] ),
118
116
  className: clsx( 'is-root-container', className, {
119
117
  'is-outline-mode': isOutlineMode,
@@ -105,6 +105,7 @@ export function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {
105
105
  canMove,
106
106
  blockVisibility,
107
107
  deviceType,
108
+ viewportSettings,
108
109
  } = useContext( PrivateBlockContext );
109
110
 
110
111
  const defaultViewRef = useRefEffect( ( element ) => {
@@ -153,6 +154,7 @@ export function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {
153
154
  const { isBlockCurrentlyHidden } = useBlockVisibility( {
154
155
  blockVisibility,
155
156
  deviceType,
157
+ viewportSettings,
156
158
  view: defaultViewRef.current,
157
159
  } );
158
160
 
@@ -29,9 +29,8 @@ import { unlock } from '../../../lock-unlock';
29
29
  */
30
30
  export function useFocusFirstElement( { clientId, initialPosition } ) {
31
31
  const ref = useRef();
32
- const { isBlockSelected, isMultiSelecting, isZoomOut } = unlock(
33
- useSelect( blockEditorStore )
34
- );
32
+ const { isBlockSelected, isMultiSelecting, isZoomOut, getSelectionStart } =
33
+ unlock( useSelect( blockEditorStore ) );
35
34
 
36
35
  useEffect( () => {
37
36
  // Check if the block is still selected at the time this effect runs.
@@ -87,7 +86,27 @@ export function useFocusFirstElement( { clientId, initialPosition } ) {
87
86
  return;
88
87
  }
89
88
  }
90
- placeCaretAtHorizontalEdge( target, isReverse );
89
+ // Do not place a caret when the target already contains one:
90
+ // while a focused editing host contains the target (the block
91
+ // supports `editableRoot`), the caret can be inside it without the
92
+ // target holding focus. Only a caret the rich text synchronized to
93
+ // the store (offsets present) is deliberate; a leftover one yields
94
+ // to an explicitly requested edge position (initialPosition -1).
95
+ const { activeElement } = ownerDocument;
96
+ const selection = ownerDocument.defaultView.getSelection();
97
+ const { clientId: selectionClientId, offset } = getSelectionStart();
98
+ const hasCaret =
99
+ activeElement?.isContentEditable &&
100
+ activeElement.contains( target ) &&
101
+ !! selection.anchorNode &&
102
+ target.contains( selection.anchorNode );
103
+ const isDeliberate =
104
+ initialPosition === 0 ||
105
+ ( offset !== undefined && selectionClientId === clientId );
106
+
107
+ if ( ! ( hasCaret && isDeliberate ) ) {
108
+ placeCaretAtHorizontalEdge( target, isReverse );
109
+ }
91
110
  }, [ initialPosition, clientId ] );
92
111
 
93
112
  return ref;
@@ -12,6 +12,7 @@ import {
12
12
  */
13
13
  import { isInsideRootBlock } from '../../../utils/dom';
14
14
  import { store as blockEditorStore } from '../../../store';
15
+ import { isShiftClickInProgress } from '../../writing-flow/utils';
15
16
  import { unlock } from '../../../lock-unlock';
16
17
 
17
18
  const { subscribeDelegatedListener } = unlock( composePrivateApis );
@@ -22,7 +23,8 @@ const { subscribeDelegatedListener } = unlock( composePrivateApis );
22
23
  * @param {string} clientId Block client ID.
23
24
  */
24
25
  export function useFocusHandler( clientId ) {
25
- const { isBlockSelected } = useSelect( blockEditorStore );
26
+ const { isBlockSelected, isBlockMultiSelected } =
27
+ useSelect( blockEditorStore );
26
28
  const { selectBlock, selectionChange } = useDispatch( blockEditorStore );
27
29
 
28
30
  return useRefEffect(
@@ -36,14 +38,6 @@ export function useFocusHandler( clientId ) {
36
38
  * @param {FocusEvent} event Focus event.
37
39
  */
38
40
  function onFocus( event ) {
39
- // When the whole editor is editable, let writing flow handle
40
- // selection.
41
- if (
42
- node.parentElement.closest( '[contenteditable="true"]' )
43
- ) {
44
- return;
45
- }
46
-
47
41
  // Check synchronously because a non-selected block might be
48
42
  // getting data through `useSelect` asynchronously.
49
43
  if ( isBlockSelected( clientId ) ) {
@@ -54,12 +48,43 @@ export function useFocusHandler( clientId ) {
54
48
  return;
55
49
  }
56
50
 
51
+ // Never select on the focus fired by a shift+click: the
52
+ // browser can focus the common editable ancestor of the
53
+ // range (e.g. a group block), and any selection re-render
54
+ // mid gesture destroys the native selection being made. The
55
+ // selection observer builds the multi-selection on mouseup.
56
+ if ( isShiftClickInProgress() ) {
57
+ return;
58
+ }
59
+
60
+ // A block that is part of the current multi-selection must
61
+ // not collapse it. Focus can land on the clicked block after
62
+ // the multi-selection was built: the focus event of a
63
+ // shift+click is not ordered consistently against its
64
+ // mouseup across browsers.
65
+ if ( isBlockMultiSelected( clientId ) ) {
66
+ return;
67
+ }
68
+
57
69
  // If an inner block is focussed, that block is responsible for
58
70
  // setting the selected block.
59
71
  if ( ! isInsideRootBlock( node, event.target ) ) {
60
72
  return;
61
73
  }
62
74
 
75
+ // For editable targets, select without initial caret
76
+ // placement: the caret is inside the target. Placement would
77
+ // move it, and would collapse a native selection in the
78
+ // making, e.g. a shift+click extending the selection across
79
+ // blocks while the wrapper is the editing host. The observer
80
+ // builds the multi-selection from the anchor it recorded at
81
+ // mousedown, so this dispatch overwriting the store anchor
82
+ // is harmless.
83
+ if ( event.target.isContentEditable ) {
84
+ selectBlock( clientId, null );
85
+ return;
86
+ }
87
+
63
88
  selectBlock( clientId );
64
89
  }
65
90
 
@@ -29,7 +29,7 @@
29
29
  padding: $grid-unit-15 0;
30
30
 
31
31
  .components-checkbox-control__label {
32
- font-weight: 600;
32
+ font-weight: var(--wpds-typography-font-weight-emphasis);
33
33
  }
34
34
  }
35
35
 
@@ -21,7 +21,7 @@
21
21
  z-index: 1;
22
22
 
23
23
  .components-checkbox-control__label {
24
- font-weight: 600;
24
+ font-weight: var(--wpds-typography-font-weight-emphasis);
25
25
  }
26
26
  }
27
27
 
@@ -10,5 +10,5 @@
10
10
  color: $gray-700;
11
11
  text-transform: uppercase;
12
12
  font-size: 11px;
13
- font-weight: $font-weight-medium;
13
+ font-weight: var(--wpds-typography-font-weight-emphasis);
14
14
  }
@@ -11,7 +11,7 @@ import { ExperimentalBlockEditorProvider } from '../../provider';
11
11
  import patterns from './fixtures';
12
12
  // Reason: Styles are contained in ExperimentalBlockEditorProvider iframe.
13
13
  // eslint-disable-next-line @wordpress/no-non-module-stylesheet-imports
14
- import blockLibraryStyles from '../../../../../block-library/build-style/style.css?raw';
14
+ import blockLibraryStyles from '@wordpress/block-library/build-style/style.css?raw';
15
15
 
16
16
  const blockEditorSettings = {
17
17
  styles: [ { css: blockLibraryStyles } ],
@@ -1,5 +1,3 @@
1
- @use "@wordpress/base-styles/variables";
2
-
3
1
  .block-editor-block-quick-navigation__item {
4
- font-weight: variables.$font-weight-regular;
2
+ font-weight: var(--wpds-typography-font-weight-default);
5
3
  }
@@ -30,7 +30,7 @@
30
30
 
31
31
  button.components-button.block-editor-block-styles__item {
32
32
  color: $gray-900;
33
- box-shadow: inset 0 0 0 $border-width $gray-300;
33
+ border-color: $gray-300;
34
34
  display: inline-block;
35
35
  width: calc(50% - #{$grid-unit-05});
36
36
 
@@ -52,7 +52,7 @@
52
52
 
53
53
  &:focus,
54
54
  &.is-active:focus {
55
- @include block-toolbar-button-style__focus();
55
+ @include outset-ring__focus();
56
56
  }
57
57
  }
58
58
 
@@ -31,6 +31,7 @@ function useGenericPreviewBlock( block, type ) {
31
31
  return getBlockFromExample( blockName, {
32
32
  attributes: example.attributes,
33
33
  innerBlocks: example.innerBlocks,
34
+ innerContent: example.innerContent,
34
35
  } );
35
36
  }
36
37
 
@@ -39,7 +39,7 @@ export default function useBlockDisplayTitle( {
39
39
  return null;
40
40
  }
41
41
 
42
- const { getBlockName, getBlockAttributes } =
42
+ const { getBlockName, getBlockAttributes, getBlock } =
43
43
  select( blockEditorStore );
44
44
  const { getBlockType, getActiveBlockVariation } =
45
45
  select( blocksStore );
@@ -57,7 +57,12 @@ export default function useBlockDisplayTitle( {
57
57
  return label;
58
58
  }
59
59
 
60
- const match = getActiveBlockVariation( blockName, attributes );
60
+ const match = getActiveBlockVariation(
61
+ blockName,
62
+ attributes,
63
+ undefined,
64
+ getBlock?.( clientId )?.innerContent
65
+ );
61
66
  // Label will fallback to the title if no label is defined for the current label context.
62
67
  return match?.title || blockType.title;
63
68
  },