@wordpress/block-editor 12.25.0 → 12.26.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 (674) hide show
  1. package/CHANGELOG.md +9 -3
  2. package/README.md +6 -0
  3. package/build/components/block-actions/index.js +4 -2
  4. package/build/components/block-actions/index.js.map +1 -1
  5. package/build/components/block-alignment-control/ui.js +2 -2
  6. package/build/components/block-alignment-control/ui.js.map +1 -1
  7. package/build/components/block-card/index.js +2 -2
  8. package/build/components/block-card/index.js.map +1 -1
  9. package/build/components/block-compare/index.js +2 -2
  10. package/build/components/block-compare/index.js.map +1 -1
  11. package/build/components/block-edit/edit.js +2 -2
  12. package/build/components/block-edit/edit.js.map +1 -1
  13. package/build/components/block-icon/index.js +2 -2
  14. package/build/components/block-icon/index.js.map +1 -1
  15. package/build/components/block-inspector/index.js +1 -1
  16. package/build/components/block-inspector/index.js.map +1 -1
  17. package/build/components/block-list/block.js +4 -4
  18. package/build/components/block-list/block.js.map +1 -1
  19. package/build/components/block-list/block.native.js +2 -2
  20. package/build/components/block-list/block.native.js.map +1 -1
  21. package/build/components/block-list/index.js +2 -2
  22. package/build/components/block-list/index.js.map +1 -1
  23. package/build/components/block-list/use-block-props/index.js +5 -2
  24. package/build/components/block-list/use-block-props/index.js.map +1 -1
  25. package/build/components/block-list/use-block-props/use-scroll-into-view.js +44 -0
  26. package/build/components/block-list/use-block-props/use-scroll-into-view.js.map +1 -0
  27. package/build/components/block-list-appender/index.js +2 -2
  28. package/build/components/block-list-appender/index.js.map +1 -1
  29. package/build/components/block-mover/button.js +2 -2
  30. package/build/components/block-mover/button.js.map +1 -1
  31. package/build/components/block-mover/index.js +2 -2
  32. package/build/components/block-mover/index.js.map +1 -1
  33. package/build/components/block-patterns-list/index.js +26 -5
  34. package/build/components/block-patterns-list/index.js.map +1 -1
  35. package/build/components/block-popover/cover.js +9 -6
  36. package/build/components/block-popover/cover.js.map +1 -1
  37. package/build/components/block-popover/inbetween.js +2 -2
  38. package/build/components/block-popover/inbetween.js.map +1 -1
  39. package/build/components/block-popover/index.js +22 -4
  40. package/build/components/block-popover/index.js.map +1 -1
  41. package/build/components/block-preview/index.js +2 -2
  42. package/build/components/block-preview/index.js.map +1 -1
  43. package/build/components/block-settings-menu/block-settings-dropdown.js +8 -5
  44. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  45. package/build/components/block-settings-menu-controls/index.js +10 -7
  46. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  47. package/build/components/block-styles/index.js +2 -2
  48. package/build/components/block-styles/index.js.map +1 -1
  49. package/build/components/block-toolbar/index.js +3 -3
  50. package/build/components/block-toolbar/index.js.map +1 -1
  51. package/build/components/block-tools/block-selection-button.js +2 -2
  52. package/build/components/block-tools/block-selection-button.js.map +1 -1
  53. package/build/components/block-tools/block-toolbar-breadcrumb.js +4 -4
  54. package/build/components/block-tools/block-toolbar-breadcrumb.js.map +1 -1
  55. package/build/components/block-tools/block-toolbar-popover.js +2 -2
  56. package/build/components/block-tools/block-toolbar-popover.js.map +1 -1
  57. package/build/components/block-tools/empty-block-inserter.js +2 -2
  58. package/build/components/block-tools/empty-block-inserter.js.map +1 -1
  59. package/build/components/block-tools/index.js +20 -1
  60. package/build/components/block-tools/index.js.map +1 -1
  61. package/build/components/block-tools/insertion-point.js +4 -4
  62. package/build/components/block-tools/insertion-point.js.map +1 -1
  63. package/build/components/block-tools/zoom-out-mode-inserters.js +66 -22
  64. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  65. package/build/components/block-variation-picker/index.js +2 -2
  66. package/build/components/block-variation-picker/index.js.map +1 -1
  67. package/build/components/button-block-appender/index.js +2 -2
  68. package/build/components/button-block-appender/index.js.map +1 -1
  69. package/build/components/child-layout-control/index.js +2 -2
  70. package/build/components/child-layout-control/index.js.map +1 -1
  71. package/build/components/colors-gradients/control.js +3 -3
  72. package/build/components/colors-gradients/control.js.map +1 -1
  73. package/build/components/colors-gradients/dropdown.js +2 -2
  74. package/build/components/colors-gradients/dropdown.js.map +1 -1
  75. package/build/components/colors-gradients/panel-color-gradient-settings.js +2 -2
  76. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  77. package/build/components/convert-to-group-buttons/index.js +6 -0
  78. package/build/components/convert-to-group-buttons/index.js.map +1 -1
  79. package/build/components/default-block-appender/index.js +2 -2
  80. package/build/components/default-block-appender/index.js.map +1 -1
  81. package/build/components/dimensions-tool/aspect-ratio-tool.js +30 -36
  82. package/build/components/dimensions-tool/aspect-ratio-tool.js.map +1 -1
  83. package/build/components/global-styles/background-panel.js +3 -3
  84. package/build/components/global-styles/background-panel.js.map +1 -1
  85. package/build/components/global-styles/color-panel.js +3 -3
  86. package/build/components/global-styles/color-panel.js.map +1 -1
  87. package/build/components/global-styles/dimensions-panel.js +4 -4
  88. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  89. package/build/components/global-styles/filters-panel.js +2 -2
  90. package/build/components/global-styles/filters-panel.js.map +1 -1
  91. package/build/components/global-styles/shadow-panel-components.js +4 -4
  92. package/build/components/global-styles/shadow-panel-components.js.map +1 -1
  93. package/build/components/global-styles/use-global-styles-output.js +1 -1
  94. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  95. package/build/components/grid-visualizer/grid-item-resizer.js +141 -24
  96. package/build/components/grid-visualizer/grid-item-resizer.js.map +1 -1
  97. package/build/components/grid-visualizer/grid-visualizer.js +11 -5
  98. package/build/components/grid-visualizer/grid-visualizer.js.map +1 -1
  99. package/build/components/iframe/index.js +69 -30
  100. package/build/components/iframe/index.js.map +1 -1
  101. package/build/components/image-editor/aspect-ratio-dropdown.js +53 -36
  102. package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  103. package/build/components/image-editor/cropper.js +2 -2
  104. package/build/components/image-editor/cropper.js.map +1 -1
  105. package/build/components/image-editor/index.js +1 -1
  106. package/build/components/image-editor/index.js.map +1 -1
  107. package/build/components/index.js +8 -0
  108. package/build/components/index.js.map +1 -1
  109. package/build/components/inner-blocks/button-block-appender.js +2 -2
  110. package/build/components/inner-blocks/button-block-appender.js.map +1 -1
  111. package/build/components/inner-blocks/index.js +22 -21
  112. package/build/components/inner-blocks/index.js.map +1 -1
  113. package/build/components/inserter/block-patterns-explorer/pattern-list.js +1 -1
  114. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  115. package/build/components/inserter/block-patterns-tab/index.js +9 -0
  116. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  117. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +1 -1
  118. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  119. package/build/components/inserter/block-types-tab.js +5 -3
  120. package/build/components/inserter/block-types-tab.js.map +1 -1
  121. package/build/components/inserter/hooks/use-insertion-point.js +11 -2
  122. package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
  123. package/build/components/inserter/hooks/use-patterns-state.js +12 -5
  124. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  125. package/build/components/inserter/index.js +2 -2
  126. package/build/components/inserter/index.js.map +1 -1
  127. package/build/components/inserter/library.js +8 -2
  128. package/build/components/inserter/library.js.map +1 -1
  129. package/build/components/inserter/media-tab/media-preview.js +2 -2
  130. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  131. package/build/components/inserter/menu.js +72 -56
  132. package/build/components/inserter/menu.js.map +1 -1
  133. package/build/components/inserter/quick-inserter.js +2 -2
  134. package/build/components/inserter/quick-inserter.js.map +1 -1
  135. package/build/components/inserter/tabs.js +17 -5
  136. package/build/components/inserter/tabs.js.map +1 -1
  137. package/build/components/inserter-list-item/index.js +3 -3
  138. package/build/components/inserter-list-item/index.js.map +1 -1
  139. package/build/components/keyboard-shortcuts/index.js +9 -0
  140. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  141. package/build/components/link-control/index.js +2 -2
  142. package/build/components/link-control/index.js.map +1 -1
  143. package/build/components/link-control/link-preview.js +3 -3
  144. package/build/components/link-control/link-preview.js.map +1 -1
  145. package/build/components/link-control/search-results.js +2 -2
  146. package/build/components/link-control/search-results.js.map +1 -1
  147. package/build/components/list-view/block-contents.js +2 -2
  148. package/build/components/list-view/block-contents.js.map +1 -1
  149. package/build/components/list-view/block-select-button.js +11 -3
  150. package/build/components/list-view/block-select-button.js.map +1 -1
  151. package/build/components/list-view/block.js +35 -12
  152. package/build/components/list-view/block.js.map +1 -1
  153. package/build/components/list-view/drop-indicator.js +3 -3
  154. package/build/components/list-view/drop-indicator.js.map +1 -1
  155. package/build/components/list-view/index.js +2 -2
  156. package/build/components/list-view/index.js.map +1 -1
  157. package/build/components/list-view/leaf.js +2 -2
  158. package/build/components/list-view/leaf.js.map +1 -1
  159. package/build/components/media-placeholder/index.js +4 -4
  160. package/build/components/media-placeholder/index.js.map +1 -1
  161. package/build/components/media-replace-flow/index.js +2 -2
  162. package/build/components/media-replace-flow/index.js.map +1 -1
  163. package/build/components/plain-text/index.js +2 -2
  164. package/build/components/plain-text/index.js.map +1 -1
  165. package/build/components/provider/use-block-sync.js +18 -0
  166. package/build/components/provider/use-block-sync.js.map +1 -1
  167. package/build/components/responsive-block-control/index.js +2 -2
  168. package/build/components/responsive-block-control/index.js.map +1 -1
  169. package/build/components/rich-text/event-listeners/enter.js +33 -42
  170. package/build/components/rich-text/event-listeners/enter.js.map +1 -1
  171. package/build/components/rich-text/event-listeners/paste-handler.js +22 -42
  172. package/build/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  173. package/build/components/rich-text/format-toolbar/index.js +2 -2
  174. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  175. package/build/components/rich-text/index.js +9 -2
  176. package/build/components/rich-text/index.js.map +1 -1
  177. package/build/components/rich-text/index.native.js +2 -2
  178. package/build/components/rich-text/index.native.js.map +1 -1
  179. package/build/components/rich-text/multiline.js +30 -2
  180. package/build/components/rich-text/multiline.js.map +1 -1
  181. package/build/components/segmented-text-control/index.js +2 -2
  182. package/build/components/segmented-text-control/index.js.map +1 -1
  183. package/build/components/text-alignment-control/index.js +2 -2
  184. package/build/components/text-alignment-control/index.js.map +1 -1
  185. package/build/components/text-decoration-control/index.js +2 -2
  186. package/build/components/text-decoration-control/index.js.map +1 -1
  187. package/build/components/text-transform-control/index.js +2 -2
  188. package/build/components/text-transform-control/index.js.map +1 -1
  189. package/build/components/url-input/index.js +4 -4
  190. package/build/components/url-input/index.js.map +1 -1
  191. package/build/components/url-popover/link-editor.js +2 -2
  192. package/build/components/url-popover/link-editor.js.map +1 -1
  193. package/build/components/url-popover/link-viewer-url.js +2 -2
  194. package/build/components/url-popover/link-viewer-url.js.map +1 -1
  195. package/build/components/url-popover/link-viewer.js +2 -2
  196. package/build/components/url-popover/link-viewer.js.map +1 -1
  197. package/build/components/warning/index.js +2 -2
  198. package/build/components/warning/index.js.map +1 -1
  199. package/build/components/writing-flow/index.js +2 -2
  200. package/build/components/writing-flow/index.js.map +1 -1
  201. package/build/components/writing-flow/use-clipboard-handler.js +77 -30
  202. package/build/components/writing-flow/use-clipboard-handler.js.map +1 -1
  203. package/build/components/writing-flow/use-input.js +44 -2
  204. package/build/components/writing-flow/use-input.js.map +1 -1
  205. package/build/components/writing-flow/use-tab-nav.js +6 -1
  206. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  207. package/build/components/writing-mode-control/index.js +2 -2
  208. package/build/components/writing-mode-control/index.js.map +1 -1
  209. package/build/hooks/align.js +2 -2
  210. package/build/hooks/align.js.map +1 -1
  211. package/build/hooks/background.js +1 -1
  212. package/build/hooks/background.js.map +1 -1
  213. package/build/hooks/border.js +3 -3
  214. package/build/hooks/border.js.map +1 -1
  215. package/build/hooks/color.js +3 -3
  216. package/build/hooks/color.js.map +1 -1
  217. package/build/hooks/content-lock-ui.js +5 -28
  218. package/build/hooks/content-lock-ui.js.map +1 -1
  219. package/build/hooks/custom-class-name.js +2 -2
  220. package/build/hooks/custom-class-name.js.map +1 -1
  221. package/build/hooks/custom-class-name.native.js +2 -2
  222. package/build/hooks/custom-class-name.native.js.map +1 -1
  223. package/build/hooks/dimensions.js +2 -2
  224. package/build/hooks/dimensions.js.map +1 -1
  225. package/build/hooks/layout-child.js +16 -8
  226. package/build/hooks/layout-child.js.map +1 -1
  227. package/build/hooks/layout.js +2 -2
  228. package/build/hooks/layout.js.map +1 -1
  229. package/build/hooks/position.js +2 -2
  230. package/build/hooks/position.js.map +1 -1
  231. package/build/hooks/text-align.js +3 -3
  232. package/build/hooks/text-align.js.map +1 -1
  233. package/build/hooks/use-bindings-attributes.js +39 -13
  234. package/build/hooks/use-bindings-attributes.js.map +1 -1
  235. package/build/hooks/use-color-props.js +2 -2
  236. package/build/hooks/use-color-props.js.map +1 -1
  237. package/build/hooks/use-typography-props.js +2 -2
  238. package/build/hooks/use-typography-props.js.map +1 -1
  239. package/build/hooks/utils.js +2 -2
  240. package/build/hooks/utils.js.map +1 -1
  241. package/build/layouts/grid.js +7 -6
  242. package/build/layouts/grid.js.map +1 -1
  243. package/build/private-apis.js +4 -1
  244. package/build/private-apis.js.map +1 -1
  245. package/build/store/actions.js +134 -40
  246. package/build/store/actions.js.map +1 -1
  247. package/build/store/private-actions.js +26 -1
  248. package/build/store/private-actions.js.map +1 -1
  249. package/build/store/private-keys.js +2 -1
  250. package/build/store/private-keys.js.map +1 -1
  251. package/build/store/private-selectors.js +6 -0
  252. package/build/store/private-selectors.js.map +1 -1
  253. package/build/store/selectors.js +4 -1
  254. package/build/store/selectors.js.map +1 -1
  255. package/build/utils/selection.js +8 -0
  256. package/build/utils/selection.js.map +1 -1
  257. package/build/utils/transform-styles/index.js +12 -7
  258. package/build/utils/transform-styles/index.js.map +1 -1
  259. package/build-module/components/block-actions/index.js +4 -2
  260. package/build-module/components/block-actions/index.js.map +1 -1
  261. package/build-module/components/block-alignment-control/ui.js +2 -2
  262. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  263. package/build-module/components/block-card/index.js +2 -2
  264. package/build-module/components/block-card/index.js.map +1 -1
  265. package/build-module/components/block-compare/index.js +2 -2
  266. package/build-module/components/block-compare/index.js.map +1 -1
  267. package/build-module/components/block-edit/edit.js +2 -2
  268. package/build-module/components/block-edit/edit.js.map +1 -1
  269. package/build-module/components/block-icon/index.js +2 -2
  270. package/build-module/components/block-icon/index.js.map +1 -1
  271. package/build-module/components/block-inspector/index.js +1 -1
  272. package/build-module/components/block-inspector/index.js.map +1 -1
  273. package/build-module/components/block-list/block.js +4 -4
  274. package/build-module/components/block-list/block.js.map +1 -1
  275. package/build-module/components/block-list/block.native.js +2 -2
  276. package/build-module/components/block-list/block.native.js.map +1 -1
  277. package/build-module/components/block-list/index.js +2 -2
  278. package/build-module/components/block-list/index.js.map +1 -1
  279. package/build-module/components/block-list/use-block-props/index.js +5 -2
  280. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  281. package/build-module/components/block-list/use-block-props/use-scroll-into-view.js +37 -0
  282. package/build-module/components/block-list/use-block-props/use-scroll-into-view.js.map +1 -0
  283. package/build-module/components/block-list-appender/index.js +2 -2
  284. package/build-module/components/block-list-appender/index.js.map +1 -1
  285. package/build-module/components/block-mover/button.js +2 -2
  286. package/build-module/components/block-mover/button.js.map +1 -1
  287. package/build-module/components/block-mover/index.js +2 -2
  288. package/build-module/components/block-mover/index.js.map +1 -1
  289. package/build-module/components/block-patterns-list/index.js +27 -6
  290. package/build-module/components/block-patterns-list/index.js.map +1 -1
  291. package/build-module/components/block-popover/cover.js +9 -5
  292. package/build-module/components/block-popover/cover.js.map +1 -1
  293. package/build-module/components/block-popover/inbetween.js +2 -2
  294. package/build-module/components/block-popover/inbetween.js.map +1 -1
  295. package/build-module/components/block-popover/index.js +21 -3
  296. package/build-module/components/block-popover/index.js.map +1 -1
  297. package/build-module/components/block-preview/index.js +2 -2
  298. package/build-module/components/block-preview/index.js.map +1 -1
  299. package/build-module/components/block-settings-menu/block-settings-dropdown.js +8 -5
  300. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  301. package/build-module/components/block-settings-menu-controls/index.js +10 -7
  302. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  303. package/build-module/components/block-styles/index.js +2 -2
  304. package/build-module/components/block-styles/index.js.map +1 -1
  305. package/build-module/components/block-toolbar/index.js +3 -3
  306. package/build-module/components/block-toolbar/index.js.map +1 -1
  307. package/build-module/components/block-tools/block-selection-button.js +2 -2
  308. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  309. package/build-module/components/block-tools/block-toolbar-breadcrumb.js +4 -4
  310. package/build-module/components/block-tools/block-toolbar-breadcrumb.js.map +1 -1
  311. package/build-module/components/block-tools/block-toolbar-popover.js +2 -2
  312. package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -1
  313. package/build-module/components/block-tools/empty-block-inserter.js +2 -2
  314. package/build-module/components/block-tools/empty-block-inserter.js.map +1 -1
  315. package/build-module/components/block-tools/index.js +20 -1
  316. package/build-module/components/block-tools/index.js.map +1 -1
  317. package/build-module/components/block-tools/insertion-point.js +4 -4
  318. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  319. package/build-module/components/block-tools/zoom-out-mode-inserters.js +67 -23
  320. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  321. package/build-module/components/block-variation-picker/index.js +2 -2
  322. package/build-module/components/block-variation-picker/index.js.map +1 -1
  323. package/build-module/components/button-block-appender/index.js +2 -2
  324. package/build-module/components/button-block-appender/index.js.map +1 -1
  325. package/build-module/components/child-layout-control/index.js +2 -2
  326. package/build-module/components/child-layout-control/index.js.map +1 -1
  327. package/build-module/components/colors-gradients/control.js +3 -3
  328. package/build-module/components/colors-gradients/control.js.map +1 -1
  329. package/build-module/components/colors-gradients/dropdown.js +2 -2
  330. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  331. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +2 -2
  332. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  333. package/build-module/components/convert-to-group-buttons/index.js +7 -1
  334. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  335. package/build-module/components/default-block-appender/index.js +2 -2
  336. package/build-module/components/default-block-appender/index.js.map +1 -1
  337. package/build-module/components/dimensions-tool/aspect-ratio-tool.js +30 -36
  338. package/build-module/components/dimensions-tool/aspect-ratio-tool.js.map +1 -1
  339. package/build-module/components/global-styles/background-panel.js +3 -3
  340. package/build-module/components/global-styles/background-panel.js.map +1 -1
  341. package/build-module/components/global-styles/color-panel.js +3 -3
  342. package/build-module/components/global-styles/color-panel.js.map +1 -1
  343. package/build-module/components/global-styles/dimensions-panel.js +4 -4
  344. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  345. package/build-module/components/global-styles/filters-panel.js +2 -2
  346. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  347. package/build-module/components/global-styles/shadow-panel-components.js +4 -4
  348. package/build-module/components/global-styles/shadow-panel-components.js.map +1 -1
  349. package/build-module/components/global-styles/use-global-styles-output.js +1 -1
  350. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  351. package/build-module/components/grid-visualizer/grid-item-resizer.js +141 -24
  352. package/build-module/components/grid-visualizer/grid-item-resizer.js.map +1 -1
  353. package/build-module/components/grid-visualizer/grid-visualizer.js +12 -6
  354. package/build-module/components/grid-visualizer/grid-visualizer.js.map +1 -1
  355. package/build-module/components/iframe/index.js +70 -31
  356. package/build-module/components/iframe/index.js.map +1 -1
  357. package/build-module/components/image-editor/aspect-ratio-dropdown.js +52 -36
  358. package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
  359. package/build-module/components/image-editor/cropper.js +2 -2
  360. package/build-module/components/image-editor/cropper.js.map +1 -1
  361. package/build-module/components/image-editor/index.js +1 -1
  362. package/build-module/components/image-editor/index.js.map +1 -1
  363. package/build-module/components/index.js +1 -0
  364. package/build-module/components/index.js.map +1 -1
  365. package/build-module/components/inner-blocks/button-block-appender.js +2 -2
  366. package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
  367. package/build-module/components/inner-blocks/index.js +22 -21
  368. package/build-module/components/inner-blocks/index.js.map +1 -1
  369. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +1 -1
  370. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  371. package/build-module/components/inserter/block-patterns-tab/index.js +10 -1
  372. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  373. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +1 -1
  374. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  375. package/build-module/components/inserter/block-types-tab.js +6 -4
  376. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  377. package/build-module/components/inserter/hooks/use-insertion-point.js +11 -2
  378. package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
  379. package/build-module/components/inserter/hooks/use-patterns-state.js +12 -5
  380. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  381. package/build-module/components/inserter/index.js +2 -2
  382. package/build-module/components/inserter/index.js.map +1 -1
  383. package/build-module/components/inserter/library.js +8 -2
  384. package/build-module/components/inserter/library.js.map +1 -1
  385. package/build-module/components/inserter/media-tab/media-preview.js +2 -2
  386. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  387. package/build-module/components/inserter/menu.js +72 -56
  388. package/build-module/components/inserter/menu.js.map +1 -1
  389. package/build-module/components/inserter/quick-inserter.js +2 -2
  390. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  391. package/build-module/components/inserter/tabs.js +18 -6
  392. package/build-module/components/inserter/tabs.js.map +1 -1
  393. package/build-module/components/inserter-list-item/index.js +3 -3
  394. package/build-module/components/inserter-list-item/index.js.map +1 -1
  395. package/build-module/components/keyboard-shortcuts/index.js +9 -0
  396. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  397. package/build-module/components/link-control/index.js +2 -2
  398. package/build-module/components/link-control/index.js.map +1 -1
  399. package/build-module/components/link-control/link-preview.js +3 -3
  400. package/build-module/components/link-control/link-preview.js.map +1 -1
  401. package/build-module/components/link-control/search-results.js +2 -2
  402. package/build-module/components/link-control/search-results.js.map +1 -1
  403. package/build-module/components/list-view/block-contents.js +2 -2
  404. package/build-module/components/list-view/block-contents.js.map +1 -1
  405. package/build-module/components/list-view/block-select-button.js +11 -3
  406. package/build-module/components/list-view/block-select-button.js.map +1 -1
  407. package/build-module/components/list-view/block.js +36 -13
  408. package/build-module/components/list-view/block.js.map +1 -1
  409. package/build-module/components/list-view/drop-indicator.js +3 -3
  410. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  411. package/build-module/components/list-view/index.js +2 -2
  412. package/build-module/components/list-view/index.js.map +1 -1
  413. package/build-module/components/list-view/leaf.js +2 -2
  414. package/build-module/components/list-view/leaf.js.map +1 -1
  415. package/build-module/components/media-placeholder/index.js +4 -4
  416. package/build-module/components/media-placeholder/index.js.map +1 -1
  417. package/build-module/components/media-replace-flow/index.js +2 -2
  418. package/build-module/components/media-replace-flow/index.js.map +1 -1
  419. package/build-module/components/plain-text/index.js +2 -2
  420. package/build-module/components/plain-text/index.js.map +1 -1
  421. package/build-module/components/provider/use-block-sync.js +19 -1
  422. package/build-module/components/provider/use-block-sync.js.map +1 -1
  423. package/build-module/components/responsive-block-control/index.js +2 -2
  424. package/build-module/components/responsive-block-control/index.js.map +1 -1
  425. package/build-module/components/rich-text/event-listeners/enter.js +33 -43
  426. package/build-module/components/rich-text/event-listeners/enter.js.map +1 -1
  427. package/build-module/components/rich-text/event-listeners/paste-handler.js +23 -43
  428. package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  429. package/build-module/components/rich-text/format-toolbar/index.js +2 -2
  430. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  431. package/build-module/components/rich-text/index.js +9 -2
  432. package/build-module/components/rich-text/index.js.map +1 -1
  433. package/build-module/components/rich-text/index.native.js +2 -2
  434. package/build-module/components/rich-text/index.native.js.map +1 -1
  435. package/build-module/components/rich-text/multiline.js +31 -3
  436. package/build-module/components/rich-text/multiline.js.map +1 -1
  437. package/build-module/components/segmented-text-control/index.js +2 -2
  438. package/build-module/components/segmented-text-control/index.js.map +1 -1
  439. package/build-module/components/text-alignment-control/index.js +2 -2
  440. package/build-module/components/text-alignment-control/index.js.map +1 -1
  441. package/build-module/components/text-decoration-control/index.js +2 -2
  442. package/build-module/components/text-decoration-control/index.js.map +1 -1
  443. package/build-module/components/text-transform-control/index.js +2 -2
  444. package/build-module/components/text-transform-control/index.js.map +1 -1
  445. package/build-module/components/url-input/index.js +4 -4
  446. package/build-module/components/url-input/index.js.map +1 -1
  447. package/build-module/components/url-popover/link-editor.js +2 -2
  448. package/build-module/components/url-popover/link-editor.js.map +1 -1
  449. package/build-module/components/url-popover/link-viewer-url.js +2 -2
  450. package/build-module/components/url-popover/link-viewer-url.js.map +1 -1
  451. package/build-module/components/url-popover/link-viewer.js +2 -2
  452. package/build-module/components/url-popover/link-viewer.js.map +1 -1
  453. package/build-module/components/warning/index.js +2 -2
  454. package/build-module/components/warning/index.js.map +1 -1
  455. package/build-module/components/writing-flow/index.js +2 -2
  456. package/build-module/components/writing-flow/index.js.map +1 -1
  457. package/build-module/components/writing-flow/use-clipboard-handler.js +78 -31
  458. package/build-module/components/writing-flow/use-clipboard-handler.js.map +1 -1
  459. package/build-module/components/writing-flow/use-input.js +45 -3
  460. package/build-module/components/writing-flow/use-input.js.map +1 -1
  461. package/build-module/components/writing-flow/use-tab-nav.js +6 -1
  462. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  463. package/build-module/components/writing-mode-control/index.js +2 -2
  464. package/build-module/components/writing-mode-control/index.js.map +1 -1
  465. package/build-module/hooks/align.js +2 -2
  466. package/build-module/hooks/align.js.map +1 -1
  467. package/build-module/hooks/background.js +1 -1
  468. package/build-module/hooks/background.js.map +1 -1
  469. package/build-module/hooks/border.js +3 -3
  470. package/build-module/hooks/border.js.map +1 -1
  471. package/build-module/hooks/color.js +3 -3
  472. package/build-module/hooks/color.js.map +1 -1
  473. package/build-module/hooks/content-lock-ui.js +5 -28
  474. package/build-module/hooks/content-lock-ui.js.map +1 -1
  475. package/build-module/hooks/custom-class-name.js +2 -2
  476. package/build-module/hooks/custom-class-name.js.map +1 -1
  477. package/build-module/hooks/custom-class-name.native.js +2 -2
  478. package/build-module/hooks/custom-class-name.native.js.map +1 -1
  479. package/build-module/hooks/dimensions.js +2 -2
  480. package/build-module/hooks/dimensions.js.map +1 -1
  481. package/build-module/hooks/layout-child.js +16 -8
  482. package/build-module/hooks/layout-child.js.map +1 -1
  483. package/build-module/hooks/layout.js +2 -2
  484. package/build-module/hooks/layout.js.map +1 -1
  485. package/build-module/hooks/position.js +2 -2
  486. package/build-module/hooks/position.js.map +1 -1
  487. package/build-module/hooks/text-align.js +3 -3
  488. package/build-module/hooks/text-align.js.map +1 -1
  489. package/build-module/hooks/use-bindings-attributes.js +39 -13
  490. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  491. package/build-module/hooks/use-color-props.js +2 -2
  492. package/build-module/hooks/use-color-props.js.map +1 -1
  493. package/build-module/hooks/use-typography-props.js +2 -2
  494. package/build-module/hooks/use-typography-props.js.map +1 -1
  495. package/build-module/hooks/utils.js +2 -2
  496. package/build-module/hooks/utils.js.map +1 -1
  497. package/build-module/layouts/grid.js +7 -6
  498. package/build-module/layouts/grid.js.map +1 -1
  499. package/build-module/private-apis.js +5 -2
  500. package/build-module/private-apis.js.map +1 -1
  501. package/build-module/store/actions.js +136 -42
  502. package/build-module/store/actions.js.map +1 -1
  503. package/build-module/store/private-actions.js +24 -0
  504. package/build-module/store/private-actions.js.map +1 -1
  505. package/build-module/store/private-keys.js +1 -0
  506. package/build-module/store/private-keys.js.map +1 -1
  507. package/build-module/store/private-selectors.js +5 -0
  508. package/build-module/store/private-selectors.js.map +1 -1
  509. package/build-module/store/selectors.js +4 -1
  510. package/build-module/store/selectors.js.map +1 -1
  511. package/build-module/utils/selection.js +7 -0
  512. package/build-module/utils/selection.js.map +1 -1
  513. package/build-module/utils/transform-styles/index.js +12 -7
  514. package/build-module/utils/transform-styles/index.js.map +1 -1
  515. package/build-style/content-rtl.css +89 -96
  516. package/build-style/content.css +89 -96
  517. package/build-style/style-rtl.css +14 -4
  518. package/build-style/style.css +14 -4
  519. package/build-types/components/block-context/index.d.ts +1 -1
  520. package/build-types/components/block-context/index.d.ts.map +1 -1
  521. package/package.json +32 -32
  522. package/src/components/block-actions/index.js +5 -1
  523. package/src/components/block-alignment-control/ui.js +2 -2
  524. package/src/components/block-card/index.js +2 -2
  525. package/src/components/block-compare/index.js +2 -2
  526. package/src/components/block-content-overlay/content.scss +4 -37
  527. package/src/components/block-draggable/test/helpers.native.js +8 -8
  528. package/src/components/block-edit/edit.js +2 -2
  529. package/src/components/block-icon/index.js +2 -2
  530. package/src/components/block-inspector/index.js +2 -1
  531. package/src/components/block-list/block.js +4 -4
  532. package/src/components/block-list/block.native.js +2 -2
  533. package/src/components/block-list/content.scss +46 -73
  534. package/src/components/block-list/index.js +2 -2
  535. package/src/components/block-list/use-block-props/index.js +4 -2
  536. package/src/components/block-list/use-block-props/use-scroll-into-view.js +38 -0
  537. package/src/components/block-list-appender/index.js +2 -2
  538. package/src/components/block-mover/button.js +2 -2
  539. package/src/components/block-mover/index.js +2 -2
  540. package/src/components/block-patterns-list/index.js +29 -4
  541. package/src/components/block-popover/README.md +1 -1
  542. package/src/components/block-popover/cover.js +22 -7
  543. package/src/components/block-popover/inbetween.js +2 -2
  544. package/src/components/block-popover/index.js +24 -6
  545. package/src/components/block-preview/index.js +2 -2
  546. package/src/components/block-settings-menu/block-settings-dropdown.js +14 -6
  547. package/src/components/block-settings-menu-controls/index.js +25 -16
  548. package/src/components/block-styles/index.js +2 -2
  549. package/src/components/block-toolbar/index.js +3 -3
  550. package/src/components/block-tools/block-selection-button.js +2 -2
  551. package/src/components/block-tools/block-toolbar-breadcrumb.js +5 -5
  552. package/src/components/block-tools/block-toolbar-popover.js +4 -7
  553. package/src/components/block-tools/empty-block-inserter.js +2 -2
  554. package/src/components/block-tools/index.js +24 -3
  555. package/src/components/block-tools/insertion-point.js +4 -4
  556. package/src/components/block-tools/style.scss +8 -0
  557. package/src/components/block-tools/zoom-out-mode-inserters.js +73 -21
  558. package/src/components/block-variation-picker/index.js +2 -2
  559. package/src/components/button-block-appender/index.js +2 -2
  560. package/src/components/child-layout-control/index.js +14 -2
  561. package/src/components/colors-gradients/control.js +3 -3
  562. package/src/components/colors-gradients/dropdown.js +2 -2
  563. package/src/components/colors-gradients/panel-color-gradient-settings.js +2 -2
  564. package/src/components/colors-gradients/test/control.js +3 -3
  565. package/src/components/convert-to-group-buttons/index.js +10 -1
  566. package/src/components/default-block-appender/index.js +2 -2
  567. package/src/components/dimensions-tool/aspect-ratio-tool.js +40 -67
  568. package/src/components/dimensions-tool/test/index.js +10 -0
  569. package/src/components/editable-text/README.md +0 -4
  570. package/src/components/global-styles/background-panel.js +3 -3
  571. package/src/components/global-styles/color-panel.js +3 -3
  572. package/src/components/global-styles/dimensions-panel.js +4 -4
  573. package/src/components/global-styles/filters-panel.js +2 -2
  574. package/src/components/global-styles/shadow-panel-components.js +6 -9
  575. package/src/components/global-styles/test/get-global-styles-changes.js +0 -2
  576. package/src/components/global-styles/test/use-global-styles-output.js +5 -5
  577. package/src/components/global-styles/use-global-styles-output.js +1 -1
  578. package/src/components/grid-visualizer/grid-item-resizer.js +169 -40
  579. package/src/components/grid-visualizer/grid-visualizer.js +19 -6
  580. package/src/components/iframe/content.scss +63 -0
  581. package/src/components/iframe/index.js +119 -39
  582. package/src/components/image-editor/aspect-ratio-dropdown.js +91 -59
  583. package/src/components/image-editor/cropper.js +2 -2
  584. package/src/components/image-editor/index.js +1 -1
  585. package/src/components/image-editor/test/index.js +22 -0
  586. package/src/components/index.js +1 -0
  587. package/src/components/inner-blocks/button-block-appender.js +2 -2
  588. package/src/components/inner-blocks/index.js +19 -17
  589. package/src/components/inserter/block-patterns-explorer/pattern-list.js +2 -1
  590. package/src/components/inserter/block-patterns-tab/index.js +17 -1
  591. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +2 -1
  592. package/src/components/inserter/block-types-tab.js +7 -9
  593. package/src/components/inserter/hooks/use-insertion-point.js +15 -1
  594. package/src/components/inserter/hooks/use-patterns-state.js +18 -5
  595. package/src/components/inserter/index.js +4 -5
  596. package/src/components/inserter/library.js +6 -0
  597. package/src/components/inserter/media-tab/media-preview.js +2 -2
  598. package/src/components/inserter/menu.js +113 -107
  599. package/src/components/inserter/quick-inserter.js +2 -2
  600. package/src/components/inserter/style.scss +6 -8
  601. package/src/components/inserter/tabs.js +29 -15
  602. package/src/components/inserter-list-item/index.js +3 -3
  603. package/src/components/keyboard-shortcuts/index.js +12 -0
  604. package/src/components/line-height-control/test/index.js +16 -14
  605. package/src/components/link-control/index.js +2 -2
  606. package/src/components/link-control/link-preview.js +3 -3
  607. package/src/components/link-control/search-results.js +2 -2
  608. package/src/components/list-view/block-contents.js +2 -2
  609. package/src/components/list-view/block-select-button.js +14 -3
  610. package/src/components/list-view/block.js +54 -30
  611. package/src/components/list-view/drop-indicator.js +3 -3
  612. package/src/components/list-view/index.js +2 -2
  613. package/src/components/list-view/leaf.js +2 -5
  614. package/src/components/media-placeholder/index.js +4 -4
  615. package/src/components/media-replace-flow/index.js +2 -2
  616. package/src/components/plain-text/index.js +2 -2
  617. package/src/components/provider/use-block-sync.js +27 -1
  618. package/src/components/responsive-block-control/index.js +2 -2
  619. package/src/components/rich-text/README.md +0 -8
  620. package/src/components/rich-text/event-listeners/enter.js +28 -48
  621. package/src/components/rich-text/event-listeners/paste-handler.js +21 -58
  622. package/src/components/rich-text/format-toolbar/index.js +2 -2
  623. package/src/components/rich-text/index.js +10 -3
  624. package/src/components/rich-text/index.native.js +2 -2
  625. package/src/components/rich-text/multiline.js +31 -3
  626. package/src/components/segmented-text-control/index.js +2 -2
  627. package/src/components/text-alignment-control/index.js +2 -2
  628. package/src/components/text-decoration-control/index.js +2 -2
  629. package/src/components/text-transform-control/index.js +2 -2
  630. package/src/components/url-input/index.js +4 -4
  631. package/src/components/url-popover/link-editor.js +2 -2
  632. package/src/components/url-popover/link-viewer-url.js +2 -2
  633. package/src/components/url-popover/link-viewer.js +2 -2
  634. package/src/components/warning/index.js +2 -2
  635. package/src/components/writing-flow/index.js +2 -2
  636. package/src/components/writing-flow/use-clipboard-handler.js +107 -47
  637. package/src/components/writing-flow/use-input.js +75 -1
  638. package/src/components/writing-flow/use-tab-nav.js +10 -1
  639. package/src/components/writing-mode-control/index.js +2 -5
  640. package/src/content.scss +1 -0
  641. package/src/hooks/align.js +2 -2
  642. package/src/hooks/background.js +1 -1
  643. package/src/hooks/border.js +3 -3
  644. package/src/hooks/color.js +12 -19
  645. package/src/hooks/color.scss +1 -0
  646. package/src/hooks/content-lock-ui.js +16 -33
  647. package/src/hooks/custom-class-name.js +2 -2
  648. package/src/hooks/custom-class-name.native.js +2 -2
  649. package/src/hooks/dimensions.js +2 -2
  650. package/src/hooks/layout-child.js +34 -20
  651. package/src/hooks/layout.js +2 -2
  652. package/src/hooks/position.js +2 -2
  653. package/src/hooks/text-align.js +3 -3
  654. package/src/hooks/use-bindings-attributes.js +48 -16
  655. package/src/hooks/use-color-props.js +2 -2
  656. package/src/hooks/use-typography-props.js +2 -2
  657. package/src/hooks/utils.js +2 -2
  658. package/src/layouts/grid.js +3 -7
  659. package/src/private-apis.js +4 -0
  660. package/src/store/actions.js +225 -70
  661. package/src/store/private-actions.js +24 -0
  662. package/src/store/private-keys.js +1 -0
  663. package/src/store/private-selectors.js +15 -0
  664. package/src/store/selectors.js +4 -2
  665. package/src/utils/selection.js +8 -0
  666. package/src/utils/test/__snapshots__/transform-styles.js.snap +6 -0
  667. package/src/utils/test/transform-styles.js +14 -0
  668. package/src/utils/transform-styles/index.js +12 -9
  669. package/tsconfig.tsbuildinfo +1 -1
  670. package/build/components/rich-text/split-value.js +0 -81
  671. package/build/components/rich-text/split-value.js.map +0 -1
  672. package/build-module/components/rich-text/split-value.js +0 -75
  673. package/build-module/components/rich-text/split-value.js.map +0 -1
  674. package/src/components/rich-text/split-value.js +0 -64
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import classnames from 'classnames';
4
+ import clsx from 'clsx';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -16,6 +16,7 @@ import { forwardRef } from '@wordpress/element';
16
16
  import { Icon, lockSmall as lock, pinSmall } from '@wordpress/icons';
17
17
  import { SPACE, ENTER } from '@wordpress/keycodes';
18
18
  import { __, sprintf } from '@wordpress/i18n';
19
+ import { useSelect } from '@wordpress/data';
19
20
 
20
21
  /**
21
22
  * Internal dependencies
@@ -26,6 +27,7 @@ import useBlockDisplayTitle from '../block-title/use-block-display-title';
26
27
  import ListViewExpander from './expander';
27
28
  import { useBlockLock } from '../block-lock';
28
29
  import useListViewImages from './use-list-view-images';
30
+ import { store as blockEditorStore } from '../../store';
29
31
 
30
32
  function ListViewBlockSelectButton(
31
33
  {
@@ -51,6 +53,15 @@ function ListViewBlockSelectButton(
51
53
  context: 'list-view',
52
54
  } );
53
55
  const { isLocked } = useBlockLock( clientId );
56
+ const { isContentOnly } = useSelect(
57
+ ( select ) => ( {
58
+ isContentOnly:
59
+ select( blockEditorStore ).getBlockEditingMode( clientId ) ===
60
+ 'contentOnly',
61
+ } ),
62
+ [ clientId ]
63
+ );
64
+ const shouldShowLockIcon = isLocked && ! isContentOnly;
54
65
  const isSticky = blockInformation?.positionType === 'sticky';
55
66
  const images = useListViewImages( { clientId, isExpanded } );
56
67
 
@@ -82,7 +93,7 @@ function ListViewBlockSelectButton(
82
93
 
83
94
  return (
84
95
  <Button
85
- className={ classnames(
96
+ className={ clsx(
86
97
  'block-editor-list-view-block-select-button',
87
98
  className
88
99
  ) }
@@ -147,7 +158,7 @@ function ListViewBlockSelectButton(
147
158
  ) ) }
148
159
  </span>
149
160
  ) : null }
150
- { isLocked && (
161
+ { shouldShowLockIcon && (
151
162
  <span className="block-editor-list-view-block-select-button__lock">
152
163
  <Icon icon={ lock } />
153
164
  </span>
@@ -1,12 +1,16 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import classnames from 'classnames';
4
+ import clsx from 'clsx';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { hasBlockSupport } from '@wordpress/blocks';
9
+ import {
10
+ hasBlockSupport,
11
+ switchToBlockType,
12
+ store as blocksStore,
13
+ } from '@wordpress/blocks';
10
14
  import {
11
15
  __experimentalTreeGridCell as TreeGridCell,
12
16
  __experimentalTreeGridItem as TreeGridItem,
@@ -25,6 +29,7 @@ import { __ } from '@wordpress/i18n';
25
29
  import { BACKSPACE, DELETE } from '@wordpress/keycodes';
26
30
  import isShallowEqual from '@wordpress/is-shallow-equal';
27
31
  import { __unstableUseShortcutEventMatch as useShortcutEventMatch } from '@wordpress/keyboard-shortcuts';
32
+ import { speak } from '@wordpress/a11y';
28
33
 
29
34
  /**
30
35
  * Internal dependencies
@@ -85,6 +90,7 @@ function ListViewBlock( {
85
90
  toggleBlockHighlight,
86
91
  duplicateBlocks,
87
92
  multiSelect,
93
+ replaceBlocks,
88
94
  removeBlocks,
89
95
  insertAfterBlock,
90
96
  insertBeforeBlock,
@@ -100,38 +106,32 @@ function ListViewBlock( {
100
106
  getBlockParents,
101
107
  getBlocksByClientId,
102
108
  canRemoveBlocks,
109
+ isGroupable,
103
110
  } = useSelect( blockEditorStore );
111
+ const { getGroupingBlockName } = useSelect( blocksStore );
104
112
 
105
113
  const blockInformation = useBlockDisplayInformation( clientId );
106
114
 
107
- const { block, blockName, blockEditingMode, allowRightClickOverrides } =
108
- useSelect(
109
- ( select ) => {
110
- const {
111
- getBlock,
112
- getBlockName,
113
- getBlockEditingMode,
114
- getSettings,
115
- } = select( blockEditorStore );
116
-
117
- return {
118
- block: getBlock( clientId ),
119
- blockName: getBlockName( clientId ),
120
- blockEditingMode: getBlockEditingMode( clientId ),
121
- allowRightClickOverrides:
122
- getSettings().allowRightClickOverrides,
123
- };
124
- },
125
- [ clientId ]
126
- );
115
+ const { block, blockName, allowRightClickOverrides } = useSelect(
116
+ ( select ) => {
117
+ const { getBlock, getBlockName, getSettings } =
118
+ select( blockEditorStore );
119
+
120
+ return {
121
+ block: getBlock( clientId ),
122
+ blockName: getBlockName( clientId ),
123
+ allowRightClickOverrides:
124
+ getSettings().allowRightClickOverrides,
125
+ };
126
+ },
127
+ [ clientId ]
128
+ );
127
129
 
128
130
  const showBlockActions =
129
131
  // When a block hides its toolbar it also hides the block settings menu,
130
132
  // since that menu is part of the toolbar in the editor canvas.
131
133
  // List View respects this by also hiding the block settings menu.
132
- hasBlockSupport( blockName, '__experimentalToolbar', true ) &&
133
- // Don't show the settings menu if block is disabled or content only.
134
- blockEditingMode === 'default';
134
+ hasBlockSupport( blockName, '__experimentalToolbar', true );
135
135
  const instanceId = useInstanceId( ListViewBlock );
136
136
  const descriptionId = `list-view-block-select-button__description-${ instanceId }`;
137
137
 
@@ -181,6 +181,8 @@ function ListViewBlock( {
181
181
  return;
182
182
  }
183
183
 
184
+ const isDeleteKey = [ BACKSPACE, DELETE ].includes( event.keyCode );
185
+
184
186
  // If multiple blocks are selected, deselect all blocks when the user
185
187
  // presses the escape key.
186
188
  if (
@@ -191,10 +193,15 @@ function ListViewBlock( {
191
193
  event.preventDefault();
192
194
  selectBlock( event, undefined );
193
195
  } else if (
194
- event.keyCode === BACKSPACE ||
195
- event.keyCode === DELETE ||
196
+ isDeleteKey ||
196
197
  isMatch( 'core/block-editor/remove', event )
197
198
  ) {
199
+ // Do not handle single-key block deletion shortcuts when events come from modals;
200
+ // retain the default behavior for these keys.
201
+ if ( isDeleteKey && event.target.closest( '[role=dialog]' ) ) {
202
+ return;
203
+ }
204
+
198
205
  const {
199
206
  blocksToUpdate: blocksToDelete,
200
207
  firstBlockClientId,
@@ -324,6 +331,23 @@ function ListViewBlock( {
324
331
  collapseAll();
325
332
  // Expand all parents of the current block.
326
333
  expand( blockParents );
334
+ } else if ( isMatch( 'core/block-editor/group', event ) ) {
335
+ const { blocksToUpdate } = getBlocksToUpdate();
336
+ if ( blocksToUpdate.length > 1 && isGroupable( blocksToUpdate ) ) {
337
+ event.preventDefault();
338
+ const blocks = getBlocksByClientId( blocksToUpdate );
339
+ const groupingBlockName = getGroupingBlockName();
340
+ const newBlocks = switchToBlockType(
341
+ blocks,
342
+ groupingBlockName
343
+ );
344
+ replaceBlocks( blocksToUpdate, newBlocks );
345
+ speak( __( 'Selected blocks are grouped.' ) );
346
+ const newlySelectedBlocks = getSelectedBlockClientIds();
347
+ // Focus the first block of the newly inserted blocks, to keep focus within the list view.
348
+ setOpenedBlockSettingsMenu( undefined );
349
+ updateFocusAndSelection( newlySelectedBlocks[ 0 ], false );
350
+ }
327
351
  }
328
352
  }
329
353
 
@@ -446,12 +470,12 @@ function ListViewBlock( {
446
470
 
447
471
  const hasSiblings = siblingBlockCount > 0;
448
472
  const hasRenderedMovers = showBlockMovers && hasSiblings;
449
- const moverCellClassName = classnames(
473
+ const moverCellClassName = clsx(
450
474
  'block-editor-list-view-block__mover-cell',
451
475
  { 'is-visible': isHovered || isSelected }
452
476
  );
453
477
 
454
- const listViewBlockSettingsClassName = classnames(
478
+ const listViewBlockSettingsClassName = clsx(
455
479
  'block-editor-list-view-block__menu-cell',
456
480
  { 'is-visible': isHovered || isFirstSelectedBlock }
457
481
  );
@@ -463,7 +487,7 @@ function ListViewBlock( {
463
487
  colSpan = 3;
464
488
  }
465
489
 
466
- const classes = classnames( {
490
+ const classes = clsx( {
467
491
  'is-selected': isSelected,
468
492
  'is-first-selected': isFirstSelectedBlock,
469
493
  'is-last-selected': isLastSelectedBlock,
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import classnames from 'classnames';
4
+ import clsx from 'clsx';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -302,7 +302,7 @@ export default function ListViewDropIndicatorPreview( {
302
302
  >
303
303
  <div
304
304
  style={ style }
305
- className={ classnames(
305
+ className={ clsx(
306
306
  'block-editor-list-view-drop-indicator__line',
307
307
  {
308
308
  'block-editor-list-view-drop-indicator__line--darker':
@@ -315,7 +315,7 @@ export default function ListViewDropIndicatorPreview( {
315
315
  aria-level={ ariaLevel }
316
316
  >
317
317
  <div
318
- className={ classnames(
318
+ className={ clsx(
319
319
  'block-editor-list-view-block-select-button',
320
320
  'block-editor-list-view-block-contents'
321
321
  ) }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import classnames from 'classnames';
4
+ import clsx from 'clsx';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -366,7 +366,7 @@ function ListViewComponent(
366
366
  ) }
367
367
  <TreeGrid
368
368
  id={ id }
369
- className={ classnames( 'block-editor-list-view-tree', {
369
+ className={ clsx( 'block-editor-list-view-tree', {
370
370
  'is-dragging':
371
371
  draggedClientIds?.length > 0 &&
372
372
  blockDropTargetIndex !== undefined,
@@ -2,7 +2,7 @@
2
2
  * External dependencies
3
3
  */
4
4
  import { animated } from '@react-spring/web';
5
- import classnames from 'classnames';
5
+ import clsx from 'clsx';
6
6
 
7
7
  /**
8
8
  * WordPress dependencies
@@ -44,10 +44,7 @@ const ListViewLeaf = forwardRef(
44
44
  return (
45
45
  <AnimatedTreeGridRow
46
46
  ref={ mergedRef }
47
- className={ classnames(
48
- 'block-editor-list-view-leaf',
49
- className
50
- ) }
47
+ className={ clsx( 'block-editor-list-view-leaf', className ) }
51
48
  level={ level }
52
49
  positionInSet={ position }
53
50
  setSize={ rowCount }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import classnames from 'classnames';
4
+ import clsx from 'clsx';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -349,7 +349,7 @@ export function MediaPlaceholder( {
349
349
  }
350
350
  }
351
351
 
352
- const placeholderClassName = classnames(
352
+ const placeholderClassName = clsx(
353
353
  'block-editor-media-placeholder',
354
354
  className,
355
355
  {
@@ -475,7 +475,7 @@ export function MediaPlaceholder( {
475
475
  <>
476
476
  <Button
477
477
  variant="primary"
478
- className={ classnames(
478
+ className={ clsx(
479
479
  'block-editor-media-placeholder__button',
480
480
  'block-editor-media-placeholder__upload-button'
481
481
  ) }
@@ -502,7 +502,7 @@ export function MediaPlaceholder( {
502
502
  { renderDropZone() }
503
503
  <FormFileUpload
504
504
  variant="primary"
505
- className={ classnames(
505
+ className={ clsx(
506
506
  'block-editor-media-placeholder__button',
507
507
  'block-editor-media-placeholder__upload-button'
508
508
  ) }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import classnames from 'classnames';
4
+ import clsx from 'clsx';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -207,7 +207,7 @@ const MediaReplaceFlow = ( {
207
207
  { onSelectURL && (
208
208
  // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
209
209
  <form
210
- className={ classnames(
210
+ className={ clsx(
211
211
  'block-editor-media-flow__url-input',
212
212
  {
213
213
  'has-siblings':
@@ -2,7 +2,7 @@
2
2
  * External dependencies
3
3
  */
4
4
  import TextareaAutosize from 'react-autosize-textarea';
5
- import classnames from 'classnames';
5
+ import clsx from 'clsx';
6
6
 
7
7
  /**
8
8
  * WordPress dependencies
@@ -27,7 +27,7 @@ const PlainText = forwardRef( ( { __experimentalVersion, ...props }, ref ) => {
27
27
  return (
28
28
  <TextareaAutosize
29
29
  ref={ ref }
30
- className={ classnames( 'block-editor-plain-text', className ) }
30
+ className={ clsx( 'block-editor-plain-text', className ) }
31
31
  onChange={ ( event ) => onChange( event.target.value ) }
32
32
  { ...remainingProps }
33
33
  />
@@ -2,7 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { useEffect, useRef } from '@wordpress/element';
5
- import { useRegistry } from '@wordpress/data';
5
+ import { useRegistry, useSelect } from '@wordpress/data';
6
6
  import { cloneBlock } from '@wordpress/blocks';
7
7
 
8
8
  /**
@@ -82,6 +82,15 @@ export default function useBlockSync( {
82
82
  } = registry.dispatch( blockEditorStore );
83
83
  const { getBlockName, getBlocks, getSelectionStart, getSelectionEnd } =
84
84
  registry.select( blockEditorStore );
85
+ const isControlled = useSelect(
86
+ ( select ) => {
87
+ return (
88
+ ! clientId ||
89
+ select( blockEditorStore ).areInnerBlocksControlled( clientId )
90
+ );
91
+ },
92
+ [ clientId ]
93
+ );
85
94
 
86
95
  const pendingChanges = useRef( { incoming: null, outgoing: [] } );
87
96
  const subscribed = useRef( false );
@@ -177,6 +186,23 @@ export default function useBlockSync( {
177
186
  }
178
187
  }, [ controlledBlocks, clientId ] );
179
188
 
189
+ const isMounted = useRef( false );
190
+
191
+ useEffect( () => {
192
+ // On mount, controlled blocks are already set in the effect above.
193
+ if ( ! isMounted.current ) {
194
+ isMounted.current = true;
195
+ return;
196
+ }
197
+
198
+ // When the block becomes uncontrolled, it means its inner state has been reset
199
+ // we need to take the blocks again from the external value property.
200
+ if ( ! isControlled ) {
201
+ pendingChanges.current.outgoing = [];
202
+ setControlledBlocks();
203
+ }
204
+ }, [ isControlled ] );
205
+
180
206
  useEffect( () => {
181
207
  const {
182
208
  getSelectedBlocksInitialCaretPosition,
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import classnames from 'classnames';
4
+ import clsx from 'clsx';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -98,7 +98,7 @@ function ResponsiveBlockControl( props ) {
98
98
  help={ toggleHelpText }
99
99
  />
100
100
  <div
101
- className={ classnames(
101
+ className={ clsx(
102
102
  'block-editor-responsive-block-control__group',
103
103
  {
104
104
  'is-responsive': isResponsive,
@@ -29,14 +29,6 @@ _Optional._ Placeholder text to show when the field is empty, similar to the
29
29
 
30
30
  _Optional._ Disables inserting line breaks on `Enter` when it is set to `true`
31
31
 
32
- ### `multiline: Boolean | String`
33
-
34
- _Optional._ By default, a line break will be inserted on <kbd>Enter</kbd>. If the editable field can contain multiple paragraphs, this property can be set to create new paragraphs on <kbd>Enter</kbd>.
35
-
36
- ### `onSplit( value: String ): Function`
37
-
38
- _Optional._ Called when the content can be split, where `value` is a piece of content being split off. Here you should create a new block with that content and return it. Note that you also need to provide `onReplace` in order for this to take any effect.
39
-
40
32
  ### `onReplace( blocks: Array ): Function`
41
33
 
42
34
  _Optional._ Called when the `RichText` instance can be replaced with the given blocks.
@@ -3,33 +3,37 @@
3
3
  */
4
4
  import { ENTER } from '@wordpress/keycodes';
5
5
  import { insert, remove } from '@wordpress/rich-text';
6
- import { getBlockTransforms, findTransform } from '@wordpress/blocks';
7
-
8
- /**
9
- * Internal dependencies
10
- */
11
- import { store as blockEditorStore } from '../../../store';
12
- import { splitValue } from '../split-value';
13
6
 
14
7
  export default ( props ) => ( element ) => {
15
- function onKeyDown( event ) {
16
- if ( event.target.contentEditable !== 'true' ) {
8
+ function onKeyDownDeprecated( event ) {
9
+ if ( event.keyCode !== ENTER ) {
17
10
  return;
18
11
  }
19
12
 
13
+ const { onReplace, onSplit } = props.current;
14
+
15
+ if ( onReplace && onSplit ) {
16
+ event.__deprecatedOnSplit = true;
17
+ }
18
+ }
19
+
20
+ function onKeyDown( event ) {
20
21
  if ( event.defaultPrevented ) {
21
22
  return;
22
23
  }
23
24
 
25
+ // The event listener is attached to the window, so we need to check if
26
+ // the target is the element.
27
+ if ( event.target !== element ) {
28
+ return;
29
+ }
30
+
24
31
  if ( event.keyCode !== ENTER ) {
25
32
  return;
26
33
  }
27
34
 
28
35
  const {
29
- removeEditorOnlyFormats,
30
36
  value,
31
- onReplace,
32
- onSplit,
33
37
  onChange,
34
38
  disableLineBreaks,
35
39
  onSplitAtEnd,
@@ -39,43 +43,12 @@ export default ( props ) => ( element ) => {
39
43
 
40
44
  event.preventDefault();
41
45
 
42
- const _value = { ...value };
43
- _value.formats = removeEditorOnlyFormats( value );
44
- const canSplit = onReplace && onSplit;
45
-
46
- if ( onReplace ) {
47
- const transforms = getBlockTransforms( 'from' ).filter(
48
- ( { type } ) => type === 'enter'
49
- );
50
- const transformation = findTransform( transforms, ( item ) => {
51
- return item.regExp.test( _value.text );
52
- } );
53
-
54
- if ( transformation ) {
55
- onReplace( [
56
- transformation.transform( {
57
- content: _value.text,
58
- } ),
59
- ] );
60
- registry
61
- .dispatch( blockEditorStore )
62
- .__unstableMarkAutomaticChange();
63
- return;
64
- }
65
- }
66
-
67
- const { text, start, end } = _value;
46
+ const { text, start, end } = value;
68
47
 
69
48
  if ( event.shiftKey ) {
70
49
  if ( ! disableLineBreaks ) {
71
- onChange( insert( _value, '\n' ) );
50
+ onChange( insert( value, '\n' ) );
72
51
  }
73
- } else if ( canSplit ) {
74
- splitValue( {
75
- value: _value,
76
- onReplace,
77
- onSplit,
78
- } );
79
52
  } else if ( onSplitAtEnd && start === end && end === text.length ) {
80
53
  onSplitAtEnd();
81
54
  } else if (
@@ -88,17 +61,24 @@ export default ( props ) => ( element ) => {
88
61
  text.slice( -2 ) === '\n\n'
89
62
  ) {
90
63
  registry.batch( () => {
64
+ const _value = { ...value };
91
65
  _value.start = _value.end - 2;
92
66
  onChange( remove( _value ) );
93
67
  onSplitAtDoubleLineEnd();
94
68
  } );
95
69
  } else if ( ! disableLineBreaks ) {
96
- onChange( insert( _value, '\n' ) );
70
+ onChange( insert( value, '\n' ) );
97
71
  }
98
72
  }
99
73
 
100
- element.addEventListener( 'keydown', onKeyDown );
74
+ const { defaultView } = element.ownerDocument;
75
+
76
+ // Attach the listener to the window so parent elements have the chance to
77
+ // prevent the default behavior.
78
+ defaultView.addEventListener( 'keydown', onKeyDown );
79
+ element.addEventListener( 'keydown', onKeyDownDeprecated );
101
80
  return () => {
102
- element.removeEventListener( 'keydown', onKeyDown );
81
+ defaultView.removeEventListener( 'keydown', onKeyDown );
82
+ element.removeEventListener( 'keydown', onKeyDownDeprecated );
103
83
  };
104
84
  };
@@ -1,11 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import {
5
- pasteHandler,
6
- findTransform,
7
- getBlockTransforms,
8
- } from '@wordpress/blocks';
4
+ import { pasteHandler } from '@wordpress/blocks';
9
5
  import { isEmpty, insert, create } from '@wordpress/rich-text';
10
6
  import { isURL } from '@wordpress/url';
11
7
 
@@ -13,7 +9,6 @@ import { isURL } from '@wordpress/url';
13
9
  * Internal dependencies
14
10
  */
15
11
  import { addActiveFormats } from '../utils';
16
- import { splitValue } from '../split-value';
17
12
  import { getPasteEventData } from '../../../utils/pasting';
18
13
 
19
14
  /** @typedef {import('@wordpress/rich-text').RichTextValue} RichTextValue */
@@ -27,12 +22,22 @@ export default ( props ) => ( element ) => {
27
22
  formatTypes,
28
23
  tagName,
29
24
  onReplace,
30
- onSplit,
31
25
  __unstableEmbedURLOnPaste,
26
+ preserveWhiteSpace,
32
27
  pastePlainText,
33
28
  } = props.current;
34
29
 
35
- const { plainText, html, files } = getPasteEventData( event );
30
+ // The event listener is attached to the window, so we need to check if
31
+ // the target is the element.
32
+ if ( event.target !== element ) {
33
+ return;
34
+ }
35
+
36
+ if ( event.defaultPrevented ) {
37
+ return;
38
+ }
39
+
40
+ const { plainText, html } = getPasteEventData( event );
36
41
 
37
42
  event.preventDefault();
38
43
 
@@ -85,47 +90,7 @@ export default ( props ) => ( element ) => {
85
90
  return;
86
91
  }
87
92
 
88
- if ( files?.length ) {
89
- // Allows us to ask for this information when we get a report.
90
- // eslint-disable-next-line no-console
91
- window.console.log( 'Received items:\n\n', files );
92
-
93
- const fromTransforms = getBlockTransforms( 'from' );
94
- const blocks = files
95
- .reduce( ( accumulator, file ) => {
96
- const transformation = findTransform(
97
- fromTransforms,
98
- ( transform ) =>
99
- transform.type === 'files' &&
100
- transform.isMatch( [ file ] )
101
- );
102
- if ( transformation ) {
103
- accumulator.push(
104
- transformation.transform( [ file ] )
105
- );
106
- }
107
- return accumulator;
108
- }, [] )
109
- .flat();
110
- if ( ! blocks.length ) {
111
- return;
112
- }
113
-
114
- if ( onReplace && isEmpty( value ) ) {
115
- onReplace( blocks );
116
- } else {
117
- splitValue( {
118
- value,
119
- pastedBlocks: blocks,
120
- onReplace,
121
- onSplit,
122
- } );
123
- }
124
-
125
- return;
126
- }
127
-
128
- let mode = onReplace && onSplit ? 'AUTO' : 'INLINE';
93
+ let mode = 'INLINE';
129
94
 
130
95
  const trimmedPlainText = plainText.trim();
131
96
 
@@ -144,6 +109,7 @@ export default ( props ) => ( element ) => {
144
109
  plainText,
145
110
  mode,
146
111
  tagName,
112
+ preserveWhiteSpace,
147
113
  } );
148
114
 
149
115
  if ( typeof content === 'string' ) {
@@ -151,19 +117,16 @@ export default ( props ) => ( element ) => {
151
117
  } else if ( content.length > 0 ) {
152
118
  if ( onReplace && isEmpty( value ) ) {
153
119
  onReplace( content, content.length - 1, -1 );
154
- } else {
155
- splitValue( {
156
- value,
157
- pastedBlocks: content,
158
- onReplace,
159
- onSplit,
160
- } );
161
120
  }
162
121
  }
163
122
  }
164
123
 
165
- element.addEventListener( 'paste', _onPaste );
124
+ const { defaultView } = element.ownerDocument;
125
+
126
+ // Attach the listener to the window so parent elements have the chance to
127
+ // prevent the default behavior.
128
+ defaultView.addEventListener( 'paste', _onPaste );
166
129
  return () => {
167
- element.removeEventListener( 'paste', _onPaste );
130
+ defaultView.removeEventListener( 'paste', _onPaste );
168
131
  };
169
132
  };