@wordpress/block-editor 10.4.0 → 11.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 (638) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +0 -1
  3. package/build/autocompleters/block.js +2 -6
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/autocompleters/link.js +2 -0
  6. package/build/autocompleters/link.js.map +1 -1
  7. package/build/components/block-card/index.js +51 -3
  8. package/build/components/block-card/index.js.map +1 -1
  9. package/build/components/block-draggable/index.native.js +46 -39
  10. package/build/components/block-draggable/index.native.js.map +1 -1
  11. package/build/components/block-edit/edit.js +4 -3
  12. package/build/components/block-edit/edit.js.map +1 -1
  13. package/build/components/block-edit/edit.native.js +4 -7
  14. package/build/components/block-edit/edit.native.js.map +1 -1
  15. package/build/components/block-inspector/index.js +35 -33
  16. package/build/components/block-inspector/index.js.map +1 -1
  17. package/build/components/block-list/block-list-context.native.js +5 -8
  18. package/build/components/block-list/block-list-context.native.js.map +1 -1
  19. package/build/components/block-list/block.js +55 -24
  20. package/build/components/block-list/block.js.map +1 -1
  21. package/build/components/block-list/block.native.js +61 -28
  22. package/build/components/block-list/block.native.js.map +1 -1
  23. package/build/components/block-lock/menu-item.js +1 -1
  24. package/build/components/block-lock/menu-item.js.map +1 -1
  25. package/build/components/block-lock/modal.js +16 -9
  26. package/build/components/block-lock/modal.js.map +1 -1
  27. package/build/components/block-mobile-toolbar/block-actions-menu.native.js +12 -4
  28. package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  29. package/build/components/block-pattern-setup/index.js +3 -2
  30. package/build/components/block-pattern-setup/index.js.map +1 -1
  31. package/build/components/block-patterns-list/index.js +33 -11
  32. package/build/components/block-patterns-list/index.js.map +1 -1
  33. package/build/components/block-preview/auto.js +9 -3
  34. package/build/components/block-preview/auto.js.map +1 -1
  35. package/build/components/block-preview/index.js +5 -9
  36. package/build/components/block-preview/index.js.map +1 -1
  37. package/build/components/block-settings-menu/block-settings-dropdown.js +5 -2
  38. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  39. package/build/components/block-styles/utils.js +3 -3
  40. package/build/components/block-styles/utils.js.map +1 -1
  41. package/build/components/block-switcher/index.js +19 -4
  42. package/build/components/block-switcher/index.js.map +1 -1
  43. package/build/components/block-toolbar/index.js +5 -1
  44. package/build/components/block-toolbar/index.js.map +1 -1
  45. package/build/components/block-tools/insertion-point.js +8 -49
  46. package/build/components/block-tools/insertion-point.js.map +1 -1
  47. package/build/components/block-tools/selected-block-popover.js +27 -4
  48. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  49. package/build/components/block-variation-picker/index.js +1 -2
  50. package/build/components/block-variation-picker/index.js.map +1 -1
  51. package/build/components/colors/with-colors.js +4 -3
  52. package/build/components/colors/with-colors.js.map +1 -1
  53. package/build/components/font-sizes/fluid-utils.js +24 -40
  54. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  55. package/build/components/font-sizes/with-font-sizes.js +7 -5
  56. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  57. package/build/components/height-control/index.js +115 -0
  58. package/build/components/height-control/index.js.map +1 -0
  59. package/build/components/iframe/index.js +11 -8
  60. package/build/components/iframe/index.js.map +1 -1
  61. package/build/components/image-editor/use-save-image.js +2 -0
  62. package/build/components/image-editor/use-save-image.js.map +1 -1
  63. package/build/components/image-editor/zoom-dropdown.js +1 -0
  64. package/build/components/image-editor/zoom-dropdown.js.map +1 -1
  65. package/build/components/index.js +18 -0
  66. package/build/components/index.js.map +1 -1
  67. package/build/components/inner-blocks/index.js +25 -9
  68. package/build/components/inner-blocks/index.js.map +1 -1
  69. package/build/components/inner-blocks/use-inner-block-template-sync.js +25 -10
  70. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  71. package/build/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  72. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  73. package/build/components/inserter/block-patterns-tab.js +25 -46
  74. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  75. package/build/components/inserter/block-types-tab.js +3 -1
  76. package/build/components/inserter/block-types-tab.js.map +1 -1
  77. package/build/components/inserter/hooks/use-debounced-input.js +27 -0
  78. package/build/components/inserter/hooks/use-debounced-input.js.map +1 -0
  79. package/build/components/inserter/index.js +8 -3
  80. package/build/components/inserter/index.js.map +1 -1
  81. package/build/components/inserter/index.native.js +3 -4
  82. package/build/components/inserter/index.native.js.map +1 -1
  83. package/build/components/inserter/media-tab/hooks.js +103 -0
  84. package/build/components/inserter/media-tab/hooks.js.map +1 -0
  85. package/build/components/inserter/media-tab/index.js +32 -0
  86. package/build/components/inserter/media-tab/index.js.map +1 -0
  87. package/build/components/inserter/media-tab/media-list.js +100 -0
  88. package/build/components/inserter/media-tab/media-list.js.map +1 -0
  89. package/build/components/inserter/media-tab/media-panel.js +96 -0
  90. package/build/components/inserter/media-tab/media-panel.js.map +1 -0
  91. package/build/components/inserter/media-tab/media-tab.js +120 -0
  92. package/build/components/inserter/media-tab/media-tab.js.map +1 -0
  93. package/build/components/inserter/media-tab/utils.js +54 -0
  94. package/build/components/inserter/media-tab/utils.js.map +1 -0
  95. package/build/components/inserter/menu.js +35 -12
  96. package/build/components/inserter/menu.js.map +1 -1
  97. package/build/components/inserter/mobile-tab-navigation.js +70 -0
  98. package/build/components/inserter/mobile-tab-navigation.js.map +1 -0
  99. package/build/components/inserter/quick-inserter.js +1 -0
  100. package/build/components/inserter/quick-inserter.js.map +1 -1
  101. package/build/components/inserter/reusable-blocks-tab.js +4 -1
  102. package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
  103. package/build/components/inserter/search-results.js +3 -1
  104. package/build/components/inserter/search-results.js.map +1 -1
  105. package/build/components/inserter/tabs.js +16 -2
  106. package/build/components/inserter/tabs.js.map +1 -1
  107. package/build/components/inserter-list-item/index.js +4 -1
  108. package/build/components/inserter-list-item/index.js.map +1 -1
  109. package/build/components/inspector-controls/groups.js +2 -0
  110. package/build/components/inspector-controls/groups.js.map +1 -1
  111. package/build/components/inspector-controls-tabs/advanced-controls-panel.js +46 -0
  112. package/build/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -0
  113. package/build/components/inspector-controls-tabs/index.js +71 -0
  114. package/build/components/inspector-controls-tabs/index.js.map +1 -0
  115. package/build/components/inspector-controls-tabs/settings-tab.js +28 -0
  116. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -0
  117. package/build/components/inspector-controls-tabs/styles-tab.js +61 -0
  118. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -0
  119. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +97 -0
  120. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -0
  121. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +18 -0
  122. package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +1 -0
  123. package/build/components/inspector-controls-tabs/utils.js +37 -0
  124. package/build/components/inspector-controls-tabs/utils.js.map +1 -0
  125. package/build/components/link-control/index.js +19 -34
  126. package/build/components/link-control/index.js.map +1 -1
  127. package/build/components/link-control/search-input.js +1 -2
  128. package/build/components/link-control/search-input.js.map +1 -1
  129. package/build/components/link-control/use-internal-input-value.js +26 -0
  130. package/build/components/link-control/use-internal-input-value.js.map +1 -0
  131. package/build/components/list-view/block.js +10 -5
  132. package/build/components/list-view/block.js.map +1 -1
  133. package/build/components/list-view/branch.js +22 -15
  134. package/build/components/list-view/branch.js.map +1 -1
  135. package/build/components/media-upload/index.native.js +2 -3
  136. package/build/components/media-upload/index.native.js.map +1 -1
  137. package/build/components/off-canvas-editor/appender.js +104 -0
  138. package/build/components/off-canvas-editor/appender.js.map +1 -0
  139. package/build/components/off-canvas-editor/block-contents.js +100 -0
  140. package/build/components/off-canvas-editor/block-contents.js.map +1 -0
  141. package/build/components/off-canvas-editor/block-edit-button.js +50 -0
  142. package/build/components/off-canvas-editor/block-edit-button.js.map +1 -0
  143. package/build/components/off-canvas-editor/block-select-button.js +119 -0
  144. package/build/components/off-canvas-editor/block-select-button.js.map +1 -0
  145. package/build/components/off-canvas-editor/block.js +324 -0
  146. package/build/components/off-canvas-editor/block.js.map +1 -0
  147. package/build/components/off-canvas-editor/branch.js +179 -0
  148. package/build/components/off-canvas-editor/branch.js.map +1 -0
  149. package/build/components/off-canvas-editor/context.js +19 -0
  150. package/build/components/off-canvas-editor/context.js.map +1 -0
  151. package/build/components/off-canvas-editor/drop-indicator.js +118 -0
  152. package/build/components/off-canvas-editor/drop-indicator.js.map +1 -0
  153. package/build/components/off-canvas-editor/expander.js +41 -0
  154. package/build/components/off-canvas-editor/expander.js.map +1 -0
  155. package/build/components/off-canvas-editor/index.js +213 -0
  156. package/build/components/off-canvas-editor/index.js.map +1 -0
  157. package/build/components/off-canvas-editor/leaf.js +60 -0
  158. package/build/components/off-canvas-editor/leaf.js.map +1 -0
  159. package/build/components/off-canvas-editor/link-ui.js +185 -0
  160. package/build/components/off-canvas-editor/link-ui.js.map +1 -0
  161. package/build/components/off-canvas-editor/update-attributes.js +108 -0
  162. package/build/components/off-canvas-editor/update-attributes.js.map +1 -0
  163. package/build/components/off-canvas-editor/use-block-selection.js +139 -0
  164. package/build/components/off-canvas-editor/use-block-selection.js.map +1 -0
  165. package/build/components/off-canvas-editor/use-list-view-client-ids.js +33 -0
  166. package/build/components/off-canvas-editor/use-list-view-client-ids.js.map +1 -0
  167. package/build/components/off-canvas-editor/use-list-view-drop-zone.js +235 -0
  168. package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -0
  169. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js +60 -0
  170. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +1 -0
  171. package/build/components/off-canvas-editor/utils.js +60 -0
  172. package/build/components/off-canvas-editor/utils.js.map +1 -0
  173. package/build/components/rich-text/format-toolbar/index.js +8 -4
  174. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  175. package/build/components/rich-text/index.js +3 -3
  176. package/build/components/rich-text/index.js.map +1 -1
  177. package/build/components/rich-text/index.native.js +0 -2
  178. package/build/components/rich-text/index.native.js.map +1 -1
  179. package/build/components/rich-text/use-insert-replacement-text.js +43 -0
  180. package/build/components/rich-text/use-insert-replacement-text.js.map +1 -0
  181. package/build/components/rich-text/use-undo-automatic-change.js +9 -1
  182. package/build/components/rich-text/use-undo-automatic-change.js.map +1 -1
  183. package/build/components/rich-text/utils.js +1 -19
  184. package/build/components/rich-text/utils.js.map +1 -1
  185. package/build/components/spacing-sizes-control/spacing-input-control.js +12 -3
  186. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  187. package/build/components/ungroup-button/index.native.js +4 -2
  188. package/build/components/ungroup-button/index.native.js.map +1 -1
  189. package/build/components/url-input/index.js +46 -43
  190. package/build/components/url-input/index.js.map +1 -1
  191. package/build/components/url-popover/index.js +31 -2
  192. package/build/components/url-popover/index.js.map +1 -1
  193. package/build/components/use-block-display-information/index.js +8 -4
  194. package/build/components/use-block-display-information/index.js.map +1 -1
  195. package/build/components/use-setting/index.js +10 -2
  196. package/build/components/use-setting/index.js.map +1 -1
  197. package/build/hooks/child-layout.js +209 -0
  198. package/build/hooks/child-layout.js.map +1 -0
  199. package/build/hooks/color-panel.js +17 -1
  200. package/build/hooks/color-panel.js.map +1 -1
  201. package/build/hooks/color.js +1 -1
  202. package/build/hooks/color.js.map +1 -1
  203. package/build/hooks/content-lock-ui.js +14 -7
  204. package/build/hooks/content-lock-ui.js.map +1 -1
  205. package/build/hooks/dimensions.js +65 -16
  206. package/build/hooks/dimensions.js.map +1 -1
  207. package/build/hooks/layout.js +59 -3
  208. package/build/hooks/layout.js.map +1 -1
  209. package/build/hooks/margin.js +4 -2
  210. package/build/hooks/margin.js.map +1 -1
  211. package/build/hooks/min-height.js +139 -0
  212. package/build/hooks/min-height.js.map +1 -0
  213. package/build/hooks/padding.js +4 -2
  214. package/build/hooks/padding.js.map +1 -1
  215. package/build/hooks/style.js +3 -2
  216. package/build/hooks/style.js.map +1 -1
  217. package/build/layouts/flex.js +22 -21
  218. package/build/layouts/flex.js.map +1 -1
  219. package/build/store/actions.js +26 -0
  220. package/build/store/actions.js.map +1 -1
  221. package/build/store/reducer.js +420 -265
  222. package/build/store/reducer.js.map +1 -1
  223. package/build/store/selectors.js +73 -49
  224. package/build/store/selectors.js.map +1 -1
  225. package/build/utils/sorting.js +63 -0
  226. package/build/utils/sorting.js.map +1 -0
  227. package/build-module/autocompleters/block.js +2 -6
  228. package/build-module/autocompleters/block.js.map +1 -1
  229. package/build-module/autocompleters/link.js +2 -0
  230. package/build-module/autocompleters/link.js.map +1 -1
  231. package/build-module/components/block-card/index.js +45 -3
  232. package/build-module/components/block-card/index.js.map +1 -1
  233. package/build-module/components/block-draggable/index.native.js +40 -31
  234. package/build-module/components/block-draggable/index.native.js.map +1 -1
  235. package/build-module/components/block-edit/edit.js +4 -2
  236. package/build-module/components/block-edit/edit.js.map +1 -1
  237. package/build-module/components/block-edit/edit.native.js +4 -6
  238. package/build-module/components/block-edit/edit.native.js.map +1 -1
  239. package/build-module/components/block-inspector/index.js +32 -30
  240. package/build-module/components/block-inspector/index.js.map +1 -1
  241. package/build-module/components/block-list/block-list-context.native.js +5 -8
  242. package/build-module/components/block-list/block-list-context.native.js.map +1 -1
  243. package/build-module/components/block-list/block.js +55 -25
  244. package/build-module/components/block-list/block.js.map +1 -1
  245. package/build-module/components/block-list/block.native.js +61 -28
  246. package/build-module/components/block-list/block.native.js.map +1 -1
  247. package/build-module/components/block-lock/menu-item.js +2 -2
  248. package/build-module/components/block-lock/menu-item.js.map +1 -1
  249. package/build-module/components/block-lock/modal.js +17 -10
  250. package/build-module/components/block-lock/modal.js.map +1 -1
  251. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +13 -6
  252. package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
  253. package/build-module/components/block-pattern-setup/index.js +3 -2
  254. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  255. package/build-module/components/block-patterns-list/index.js +35 -13
  256. package/build-module/components/block-patterns-list/index.js.map +1 -1
  257. package/build-module/components/block-preview/auto.js +9 -3
  258. package/build-module/components/block-preview/auto.js.map +1 -1
  259. package/build-module/components/block-preview/index.js +5 -8
  260. package/build-module/components/block-preview/index.js.map +1 -1
  261. package/build-module/components/block-settings-menu/block-settings-dropdown.js +5 -2
  262. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  263. package/build-module/components/block-styles/utils.js +3 -3
  264. package/build-module/components/block-styles/utils.js.map +1 -1
  265. package/build-module/components/block-switcher/index.js +19 -4
  266. package/build-module/components/block-switcher/index.js.map +1 -1
  267. package/build-module/components/block-toolbar/index.js +6 -2
  268. package/build-module/components/block-toolbar/index.js.map +1 -1
  269. package/build-module/components/block-tools/insertion-point.js +8 -49
  270. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  271. package/build-module/components/block-tools/selected-block-popover.js +27 -5
  272. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  273. package/build-module/components/block-variation-picker/index.js +1 -2
  274. package/build-module/components/block-variation-picker/index.js.map +1 -1
  275. package/build-module/components/colors/with-colors.js +5 -4
  276. package/build-module/components/colors/with-colors.js.map +1 -1
  277. package/build-module/components/font-sizes/fluid-utils.js +24 -40
  278. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  279. package/build-module/components/font-sizes/with-font-sizes.js +8 -6
  280. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  281. package/build-module/components/height-control/index.js +103 -0
  282. package/build-module/components/height-control/index.js.map +1 -0
  283. package/build-module/components/iframe/index.js +11 -8
  284. package/build-module/components/iframe/index.js.map +1 -1
  285. package/build-module/components/image-editor/use-save-image.js +2 -0
  286. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  287. package/build-module/components/image-editor/zoom-dropdown.js +1 -0
  288. package/build-module/components/image-editor/zoom-dropdown.js.map +1 -1
  289. package/build-module/components/index.js +2 -0
  290. package/build-module/components/index.js.map +1 -1
  291. package/build-module/components/inner-blocks/index.js +27 -11
  292. package/build-module/components/inner-blocks/index.js.map +1 -1
  293. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +23 -10
  294. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  295. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  296. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  297. package/build-module/components/inserter/block-patterns-tab.js +27 -49
  298. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  299. package/build-module/components/inserter/block-types-tab.js +3 -2
  300. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  301. package/build-module/components/inserter/hooks/use-debounced-input.js +18 -0
  302. package/build-module/components/inserter/hooks/use-debounced-input.js.map +1 -0
  303. package/build-module/components/inserter/index.js +8 -3
  304. package/build-module/components/inserter/index.js.map +1 -1
  305. package/build-module/components/inserter/index.native.js +3 -5
  306. package/build-module/components/inserter/index.native.js.map +1 -1
  307. package/build-module/components/inserter/media-tab/hooks.js +89 -0
  308. package/build-module/components/inserter/media-tab/hooks.js.map +1 -0
  309. package/build-module/components/inserter/media-tab/index.js +4 -0
  310. package/build-module/components/inserter/media-tab/index.js.map +1 -0
  311. package/build-module/components/inserter/media-tab/media-list.js +86 -0
  312. package/build-module/components/inserter/media-tab/media-list.js.map +1 -0
  313. package/build-module/components/inserter/media-tab/media-panel.js +77 -0
  314. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -0
  315. package/build-module/components/inserter/media-tab/media-tab.js +100 -0
  316. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -0
  317. package/build-module/components/inserter/media-tab/utils.js +45 -0
  318. package/build-module/components/inserter/media-tab/utils.js.map +1 -0
  319. package/build-module/components/inserter/menu.js +33 -12
  320. package/build-module/components/inserter/menu.js.map +1 -1
  321. package/build-module/components/inserter/mobile-tab-navigation.js +61 -0
  322. package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -0
  323. package/build-module/components/inserter/quick-inserter.js +1 -0
  324. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  325. package/build-module/components/inserter/reusable-blocks-tab.js +3 -1
  326. package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
  327. package/build-module/components/inserter/search-results.js +3 -2
  328. package/build-module/components/inserter/search-results.js.map +1 -1
  329. package/build-module/components/inserter/tabs.js +15 -2
  330. package/build-module/components/inserter/tabs.js.map +1 -1
  331. package/build-module/components/inserter-list-item/index.js +5 -2
  332. package/build-module/components/inserter-list-item/index.js.map +1 -1
  333. package/build-module/components/inspector-controls/groups.js +2 -0
  334. package/build-module/components/inspector-controls/groups.js.map +1 -1
  335. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js +32 -0
  336. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -0
  337. package/build-module/components/inspector-controls-tabs/index.js +56 -0
  338. package/build-module/components/inspector-controls-tabs/index.js.map +1 -0
  339. package/build-module/components/inspector-controls-tabs/settings-tab.js +17 -0
  340. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -0
  341. package/build-module/components/inspector-controls-tabs/styles-tab.js +46 -0
  342. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -0
  343. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +81 -0
  344. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -0
  345. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +8 -0
  346. package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +1 -0
  347. package/build-module/components/inspector-controls-tabs/utils.js +26 -0
  348. package/build-module/components/inspector-controls-tabs/utils.js.map +1 -0
  349. package/build-module/components/link-control/index.js +18 -34
  350. package/build-module/components/link-control/index.js.map +1 -1
  351. package/build-module/components/link-control/search-input.js +1 -2
  352. package/build-module/components/link-control/search-input.js.map +1 -1
  353. package/build-module/components/link-control/use-internal-input-value.js +18 -0
  354. package/build-module/components/link-control/use-internal-input-value.js.map +1 -0
  355. package/build-module/components/list-view/block.js +10 -5
  356. package/build-module/components/list-view/block.js.map +1 -1
  357. package/build-module/components/list-view/branch.js +21 -14
  358. package/build-module/components/list-view/branch.js.map +1 -1
  359. package/build-module/components/media-upload/index.native.js +2 -4
  360. package/build-module/components/media-upload/index.native.js.map +1 -1
  361. package/build-module/components/off-canvas-editor/appender.js +89 -0
  362. package/build-module/components/off-canvas-editor/appender.js.map +1 -0
  363. package/build-module/components/off-canvas-editor/block-contents.js +85 -0
  364. package/build-module/components/off-canvas-editor/block-contents.js.map +1 -0
  365. package/build-module/components/off-canvas-editor/block-edit-button.js +35 -0
  366. package/build-module/components/off-canvas-editor/block-edit-button.js.map +1 -0
  367. package/build-module/components/off-canvas-editor/block-select-button.js +101 -0
  368. package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -0
  369. package/build-module/components/off-canvas-editor/block.js +298 -0
  370. package/build-module/components/off-canvas-editor/block.js.map +1 -0
  371. package/build-module/components/off-canvas-editor/branch.js +164 -0
  372. package/build-module/components/off-canvas-editor/branch.js.map +1 -0
  373. package/build-module/components/off-canvas-editor/context.js +7 -0
  374. package/build-module/components/off-canvas-editor/context.js.map +1 -0
  375. package/build-module/components/off-canvas-editor/drop-indicator.js +111 -0
  376. package/build-module/components/off-canvas-editor/drop-indicator.js.map +1 -0
  377. package/build-module/components/off-canvas-editor/expander.js +32 -0
  378. package/build-module/components/off-canvas-editor/expander.js.map +1 -0
  379. package/build-module/components/off-canvas-editor/index.js +189 -0
  380. package/build-module/components/off-canvas-editor/index.js.map +1 -0
  381. package/build-module/components/off-canvas-editor/leaf.js +45 -0
  382. package/build-module/components/off-canvas-editor/leaf.js.map +1 -0
  383. package/build-module/components/off-canvas-editor/link-ui.js +165 -0
  384. package/build-module/components/off-canvas-editor/link-ui.js.map +1 -0
  385. package/build-module/components/off-canvas-editor/update-attributes.js +97 -0
  386. package/build-module/components/off-canvas-editor/update-attributes.js.map +1 -0
  387. package/build-module/components/off-canvas-editor/use-block-selection.js +124 -0
  388. package/build-module/components/off-canvas-editor/use-block-selection.js.map +1 -0
  389. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js +24 -0
  390. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js.map +1 -0
  391. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +220 -0
  392. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -0
  393. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js +50 -0
  394. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +1 -0
  395. package/build-module/components/off-canvas-editor/utils.js +44 -0
  396. package/build-module/components/off-canvas-editor/utils.js.map +1 -0
  397. package/build-module/components/rich-text/format-toolbar/index.js +6 -2
  398. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  399. package/build-module/components/rich-text/index.js +2 -3
  400. package/build-module/components/rich-text/index.js.map +1 -1
  401. package/build-module/components/rich-text/index.native.js +0 -2
  402. package/build-module/components/rich-text/index.native.js.map +1 -1
  403. package/build-module/components/rich-text/use-insert-replacement-text.js +33 -0
  404. package/build-module/components/rich-text/use-insert-replacement-text.js.map +1 -0
  405. package/build-module/components/rich-text/use-undo-automatic-change.js +9 -1
  406. package/build-module/components/rich-text/use-undo-automatic-change.js.map +1 -1
  407. package/build-module/components/rich-text/utils.js +1 -16
  408. package/build-module/components/rich-text/utils.js.map +1 -1
  409. package/build-module/components/spacing-sizes-control/spacing-input-control.js +12 -3
  410. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  411. package/build-module/components/ungroup-button/index.native.js +3 -2
  412. package/build-module/components/ungroup-button/index.native.js.map +1 -1
  413. package/build-module/components/url-input/index.js +46 -43
  414. package/build-module/components/url-input/index.js.map +1 -1
  415. package/build-module/components/url-popover/index.js +30 -3
  416. package/build-module/components/url-popover/index.js.map +1 -1
  417. package/build-module/components/use-block-display-information/index.js +9 -5
  418. package/build-module/components/use-block-display-information/index.js.map +1 -1
  419. package/build-module/components/use-setting/index.js +9 -2
  420. package/build-module/components/use-setting/index.js.map +1 -1
  421. package/build-module/hooks/child-layout.js +189 -0
  422. package/build-module/hooks/child-layout.js.map +1 -0
  423. package/build-module/hooks/color-panel.js +17 -1
  424. package/build-module/hooks/color-panel.js.map +1 -1
  425. package/build-module/hooks/color.js +1 -1
  426. package/build-module/hooks/color.js.map +1 -1
  427. package/build-module/hooks/content-lock-ui.js +16 -9
  428. package/build-module/hooks/content-lock-ui.js.map +1 -1
  429. package/build-module/hooks/dimensions.js +60 -16
  430. package/build-module/hooks/dimensions.js.map +1 -1
  431. package/build-module/hooks/layout.js +57 -2
  432. package/build-module/hooks/layout.js.map +1 -1
  433. package/build-module/hooks/margin.js +4 -2
  434. package/build-module/hooks/margin.js.map +1 -1
  435. package/build-module/hooks/min-height.js +116 -0
  436. package/build-module/hooks/min-height.js.map +1 -0
  437. package/build-module/hooks/padding.js +4 -2
  438. package/build-module/hooks/padding.js.map +1 -1
  439. package/build-module/hooks/style.js +4 -3
  440. package/build-module/hooks/style.js.map +1 -1
  441. package/build-module/layouts/flex.js +23 -22
  442. package/build-module/layouts/flex.js.map +1 -1
  443. package/build-module/store/actions.js +22 -0
  444. package/build-module/store/actions.js.map +1 -1
  445. package/build-module/store/reducer.js +415 -265
  446. package/build-module/store/reducer.js.map +1 -1
  447. package/build-module/store/selectors.js +66 -48
  448. package/build-module/store/selectors.js.map +1 -1
  449. package/build-module/utils/sorting.js +56 -0
  450. package/build-module/utils/sorting.js.map +1 -0
  451. package/build-style/content-rtl.css +701 -0
  452. package/build-style/content.css +701 -0
  453. package/build-style/default-editor-styles-rtl.css +14 -0
  454. package/build-style/default-editor-styles.css +14 -0
  455. package/build-style/style-rtl.css +305 -668
  456. package/build-style/style.css +305 -668
  457. package/package.json +32 -30
  458. package/src/autocompleters/block.js +2 -6
  459. package/src/autocompleters/link.js +2 -0
  460. package/src/components/alignment-control/README.md +1 -1
  461. package/src/components/alignment-control/test/index.js +4 -1
  462. package/src/components/block-alignment-control/test/index.js +4 -1
  463. package/src/components/block-alignment-control/test/index.native.js +4 -4
  464. package/src/components/block-card/index.js +46 -2
  465. package/src/components/block-card/style.scss +4 -0
  466. package/src/components/block-content-overlay/{style.scss → content.scss} +7 -1
  467. package/src/components/block-draggable/content.scss +20 -0
  468. package/src/components/block-draggable/index.native.js +54 -40
  469. package/src/components/block-draggable/style.scss +0 -21
  470. package/src/components/block-draggable/test/helpers.native.js +7 -9
  471. package/src/components/block-draggable/test/index.native.js +35 -45
  472. package/src/components/block-edit/edit.js +5 -2
  473. package/src/components/block-edit/edit.native.js +5 -6
  474. package/src/components/block-inspector/index.js +96 -81
  475. package/src/components/block-inspector/style.scss +9 -1
  476. package/src/components/block-list/block-list-context.native.js +5 -8
  477. package/src/components/block-list/block.js +74 -23
  478. package/src/components/block-list/block.native.js +78 -23
  479. package/src/components/block-list/{style.scss → content.scss} +11 -20
  480. package/src/components/block-list-appender/{style.scss → content.scss} +0 -0
  481. package/src/components/block-lock/menu-item.js +5 -2
  482. package/src/components/block-lock/modal.js +19 -36
  483. package/src/components/block-lock/style.scss +8 -17
  484. package/src/components/block-mobile-toolbar/block-actions-menu.native.js +24 -6
  485. package/src/components/block-mover/style.scss +0 -1
  486. package/src/components/block-mover/test/__snapshots__/index.native.js.snap +0 -2
  487. package/src/components/block-pattern-setup/index.js +2 -1
  488. package/src/components/block-patterns-list/index.js +47 -24
  489. package/src/components/block-popover/style.scss +1 -1
  490. package/src/components/block-preview/README.md +15 -10
  491. package/src/components/block-preview/auto.js +7 -1
  492. package/src/components/block-preview/content.scss +4 -0
  493. package/src/components/block-preview/index.js +7 -12
  494. package/src/components/block-preview/style.scss +0 -7
  495. package/src/components/block-preview/test/index.js +18 -35
  496. package/src/components/block-selection-clearer/test/index.js +12 -12
  497. package/src/components/block-settings-menu/block-settings-dropdown.js +32 -20
  498. package/src/components/block-styles/utils.js +3 -3
  499. package/src/components/block-switcher/index.js +19 -4
  500. package/src/components/block-switcher/test/index.js +4 -0
  501. package/src/components/block-toolbar/index.js +12 -5
  502. package/src/components/block-toolbar/style.scss +10 -0
  503. package/src/components/block-tools/insertion-point.js +3 -47
  504. package/src/components/block-tools/selected-block-popover.js +80 -34
  505. package/src/components/block-tools/style.scss +27 -5
  506. package/src/components/block-variation-picker/index.js +1 -4
  507. package/src/components/block-vertical-alignment-control/test/index.js +4 -1
  508. package/src/components/colors/with-colors.js +13 -23
  509. package/src/components/default-block-appender/{style.scss → content.scss} +1 -0
  510. package/src/components/font-sizes/fluid-utils.js +37 -64
  511. package/src/components/font-sizes/test/fluid-utils.js +5 -5
  512. package/src/components/font-sizes/with-font-sizes.js +14 -11
  513. package/src/components/height-control/index.js +123 -0
  514. package/src/components/height-control/stories/index.js +21 -0
  515. package/src/components/height-control/style.scss +5 -0
  516. package/src/components/iframe/index.js +25 -18
  517. package/src/components/image-editor/use-save-image.js +2 -0
  518. package/src/components/image-editor/zoom-dropdown.js +1 -0
  519. package/src/components/index.js +2 -0
  520. package/src/components/inner-blocks/{style.scss → content.scss} +0 -0
  521. package/src/components/inner-blocks/index.js +30 -10
  522. package/src/components/inner-blocks/use-inner-block-template-sync.js +28 -10
  523. package/src/components/inserter/block-patterns-explorer/sidebar.js +1 -0
  524. package/src/components/inserter/block-patterns-tab.js +28 -71
  525. package/src/components/inserter/block-types-tab.js +3 -2
  526. package/src/components/inserter/hooks/use-debounced-input.js +17 -0
  527. package/src/components/inserter/index.js +10 -2
  528. package/src/components/inserter/index.native.js +1 -1
  529. package/src/components/inserter/media-tab/hooks.js +88 -0
  530. package/src/components/inserter/media-tab/index.js +3 -0
  531. package/src/components/inserter/media-tab/media-list.js +93 -0
  532. package/src/components/inserter/media-tab/media-panel.js +83 -0
  533. package/src/components/inserter/media-tab/media-tab.js +135 -0
  534. package/src/components/inserter/media-tab/utils.js +37 -0
  535. package/src/components/inserter/menu.js +55 -13
  536. package/src/components/inserter/mobile-tab-navigation.js +85 -0
  537. package/src/components/inserter/quick-inserter.js +1 -0
  538. package/src/components/inserter/reusable-blocks-tab.js +4 -2
  539. package/src/components/inserter/search-results.js +3 -2
  540. package/src/components/inserter/stories/index.js +1 -1
  541. package/src/components/inserter/stories/{fixtures.js → utils/fixtures.js} +0 -0
  542. package/src/components/inserter/style.scss +184 -18
  543. package/src/components/inserter/tabs.js +12 -1
  544. package/src/components/inserter/test/reusable-blocks-tab.js +14 -57
  545. package/src/components/inserter-list-item/index.js +11 -1
  546. package/src/components/inserter-list-item/style.scss +26 -0
  547. package/src/components/inspector-controls/groups.js +2 -0
  548. package/src/components/inspector-controls-tabs/advanced-controls-panel.js +37 -0
  549. package/src/components/inspector-controls-tabs/index.js +62 -0
  550. package/src/components/inspector-controls-tabs/settings-tab.js +18 -0
  551. package/src/components/inspector-controls-tabs/styles-tab.js +51 -0
  552. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +89 -0
  553. package/src/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +9 -0
  554. package/src/components/inspector-controls-tabs/utils.js +28 -0
  555. package/src/components/line-height-control/test/index.js +5 -5
  556. package/src/components/link-control/README.md +1 -1
  557. package/src/components/link-control/index.js +24 -39
  558. package/src/components/link-control/search-input.js +1 -2
  559. package/src/components/link-control/test/index.js +400 -582
  560. package/src/components/link-control/use-internal-input-value.js +22 -0
  561. package/src/components/list-view/block.js +7 -3
  562. package/src/components/list-view/branch.js +21 -14
  563. package/src/components/list-view/style.scss +20 -9
  564. package/src/components/media-placeholder/{style.scss → content.scss} +0 -0
  565. package/src/components/media-replace-flow/test/index.js +37 -9
  566. package/src/components/media-upload/test/index.native.js +2 -0
  567. package/src/components/off-canvas-editor/README.md +5 -0
  568. package/src/components/off-canvas-editor/appender.js +93 -0
  569. package/src/components/off-canvas-editor/block-contents.js +89 -0
  570. package/src/components/off-canvas-editor/block-edit-button.js +27 -0
  571. package/src/components/off-canvas-editor/block-select-button.js +113 -0
  572. package/src/components/off-canvas-editor/block.js +401 -0
  573. package/src/components/off-canvas-editor/branch.js +208 -0
  574. package/src/components/off-canvas-editor/context.js +8 -0
  575. package/src/components/off-canvas-editor/drop-indicator.js +126 -0
  576. package/src/components/off-canvas-editor/expander.js +26 -0
  577. package/src/components/off-canvas-editor/index.js +242 -0
  578. package/src/components/off-canvas-editor/leaf.js +52 -0
  579. package/src/components/off-canvas-editor/link-ui.js +166 -0
  580. package/src/components/off-canvas-editor/style.scss +26 -0
  581. package/src/components/off-canvas-editor/test/utils.js +50 -0
  582. package/src/components/off-canvas-editor/update-attributes.js +99 -0
  583. package/src/components/off-canvas-editor/use-block-selection.js +169 -0
  584. package/src/components/off-canvas-editor/use-list-view-client-ids.js +29 -0
  585. package/src/components/off-canvas-editor/use-list-view-drop-zone.js +260 -0
  586. package/src/components/off-canvas-editor/use-list-view-expand-selected-item.js +58 -0
  587. package/src/components/off-canvas-editor/utils.js +58 -0
  588. package/src/components/plain-text/{style.scss → content.scss} +0 -0
  589. package/src/components/recursion-provider/test/index.js +27 -29
  590. package/src/components/responsive-block-control/test/index.js +69 -92
  591. package/src/components/rich-text/content.scss +42 -0
  592. package/src/components/rich-text/format-toolbar/index.js +6 -4
  593. package/src/components/rich-text/index.js +2 -2
  594. package/src/components/rich-text/index.native.js +0 -2
  595. package/src/components/rich-text/style.scss +0 -43
  596. package/src/components/rich-text/use-insert-replacement-text.js +31 -0
  597. package/src/components/rich-text/use-undo-automatic-change.js +7 -1
  598. package/src/components/rich-text/utils.js +2 -21
  599. package/src/components/spacing-sizes-control/spacing-input-control.js +9 -0
  600. package/src/components/ungroup-button/index.native.js +6 -2
  601. package/src/components/url-input/index.js +57 -73
  602. package/src/components/url-popover/README.md +12 -3
  603. package/src/components/url-popover/index.js +33 -3
  604. package/src/components/url-popover/test/__snapshots__/index.js.snap +8 -6
  605. package/src/components/url-popover/test/index.js +21 -9
  606. package/src/components/use-block-display-information/index.js +14 -5
  607. package/src/components/use-setting/index.js +20 -2
  608. package/src/components/use-setting/test/index.js +99 -0
  609. package/src/content.scss +10 -0
  610. package/src/hooks/child-layout.js +190 -0
  611. package/src/hooks/color-panel.js +13 -1
  612. package/src/hooks/color.js +2 -0
  613. package/src/hooks/content-lock-ui.js +47 -35
  614. package/src/hooks/dimensions.js +119 -21
  615. package/src/hooks/layout.js +62 -3
  616. package/src/hooks/margin.js +4 -3
  617. package/src/hooks/min-height.js +104 -0
  618. package/src/hooks/padding.js +4 -3
  619. package/src/hooks/style.js +10 -2
  620. package/src/hooks/test/style.js +4 -0
  621. package/src/hooks/test/use-typography-props.js +1 -1
  622. package/src/layouts/flex.js +43 -38
  623. package/src/store/actions.js +22 -0
  624. package/src/store/reducer.js +480 -434
  625. package/src/store/selectors.js +70 -64
  626. package/src/store/test/actions.js +18 -0
  627. package/src/store/test/performance.js +71 -0
  628. package/src/store/test/reducer.js +662 -490
  629. package/src/store/test/selectors.js +1839 -1306
  630. package/src/style.scss +4 -7
  631. package/src/utils/sorting.js +54 -0
  632. package/src/utils/test/sorting.js +49 -0
  633. package/tsconfig.tsbuildinfo +1 -1
  634. package/build/components/block-preview/live.js +0 -30
  635. package/build/components/block-preview/live.js.map +0 -1
  636. package/build-module/components/block-preview/live.js +0 -20
  637. package/build-module/components/block-preview/live.js.map +0 -1
  638. package/src/components/block-preview/live.js +0 -19
@@ -19,6 +19,8 @@ import {
19
19
  serializeRawBlock,
20
20
  switchToBlockType,
21
21
  store as blocksStore,
22
+ getDefaultBlockName,
23
+ isUnmodifiedBlock,
22
24
  } from '@wordpress/blocks';
23
25
  import { withFilters } from '@wordpress/components';
24
26
  import {
@@ -40,7 +42,7 @@ import BlockCrashBoundary from './block-crash-boundary';
40
42
  import BlockHtml from './block-html';
41
43
  import { useBlockProps } from './use-block-props';
42
44
  import { store as blockEditorStore } from '../../store';
43
-
45
+ import { useLayout } from './layout';
44
46
  export const BlockListBlockContext = createContext();
45
47
 
46
48
  /**
@@ -130,6 +132,8 @@ function BlockListBlock( {
130
132
  const { removeBlock } = useDispatch( blockEditorStore );
131
133
  const onRemove = useCallback( () => removeBlock( clientId ), [ clientId ] );
132
134
 
135
+ const parentLayout = useLayout() || {};
136
+
133
137
  // We wrap the BlockEdit component in a div that hides it when editing in
134
138
  // HTML mode. This allows us to render all of the ancillary pieces
135
139
  // (InspectorControls, etc.) which are inside `BlockEdit` but not
@@ -148,6 +152,9 @@ function BlockListBlock( {
148
152
  isSelectionEnabled={ isSelectionEnabled }
149
153
  toggleSelection={ toggleSelection }
150
154
  __unstableLayoutClassNames={ layoutClassNames }
155
+ __unstableParentLayout={
156
+ Object.keys( parentLayout ).length ? parentLayout : undefined
157
+ }
151
158
  />
152
159
  );
153
160
 
@@ -308,7 +315,6 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
308
315
  __unstableMarkLastChangeAsPersistent,
309
316
  moveBlocksToPosition,
310
317
  removeBlock,
311
- selectBlock,
312
318
  } = dispatch( blockEditorStore );
313
319
 
314
320
  // Do not add new properties here, use `useDispatch` instead to avoid
@@ -345,8 +351,71 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
345
351
  getBlockAttributes,
346
352
  getBlockName,
347
353
  getBlockOrder,
354
+ getBlockIndex,
355
+ getBlockRootClientId,
356
+ canInsertBlockType,
348
357
  } = registry.select( blockEditorStore );
349
358
 
359
+ /**
360
+ * Moves the block with clientId up one level. If the block type
361
+ * cannot be inserted at the new location, it will be attempted to
362
+ * convert to the default block type.
363
+ *
364
+ * @param {string} _clientId The block to move.
365
+ * @param {boolean} changeSelection Whether to change the selection
366
+ * to the moved block.
367
+ */
368
+ function moveFirstItemUp( _clientId, changeSelection = true ) {
369
+ const targetRootClientId = getBlockRootClientId( _clientId );
370
+ const blockOrder = getBlockOrder( _clientId );
371
+ const [ firstClientId ] = blockOrder;
372
+
373
+ if (
374
+ blockOrder.length === 1 &&
375
+ isUnmodifiedBlock( getBlock( firstClientId ) )
376
+ ) {
377
+ removeBlock( _clientId );
378
+ } else {
379
+ if (
380
+ canInsertBlockType(
381
+ getBlockName( firstClientId ),
382
+ targetRootClientId
383
+ )
384
+ ) {
385
+ moveBlocksToPosition(
386
+ [ firstClientId ],
387
+ _clientId,
388
+ targetRootClientId,
389
+ getBlockIndex( _clientId )
390
+ );
391
+ } else {
392
+ const replacement = switchToBlockType(
393
+ getBlock( firstClientId ),
394
+ getDefaultBlockName()
395
+ );
396
+
397
+ if ( replacement && replacement.length ) {
398
+ registry.batch( () => {
399
+ insertBlocks(
400
+ replacement,
401
+ getBlockIndex( _clientId ),
402
+ targetRootClientId,
403
+ changeSelection
404
+ );
405
+ removeBlock( firstClientId, false );
406
+ } );
407
+ }
408
+ }
409
+
410
+ if (
411
+ ! getBlockOrder( _clientId ).length &&
412
+ isUnmodifiedBlock( getBlock( _clientId ) )
413
+ ) {
414
+ removeBlock( _clientId, false );
415
+ }
416
+ }
417
+ }
418
+
350
419
  // For `Delete` or forward merge, we should do the exact same thing
351
420
  // as `Backspace`, but from the other block.
352
421
  if ( forward ) {
@@ -397,15 +466,8 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
397
466
  return;
398
467
  }
399
468
 
400
- // Check if it's possibile to "unwrap" the following block
401
- // before trying to merge.
402
- const replacement = switchToBlockType(
403
- getBlock( nextBlockClientId ),
404
- '*'
405
- );
406
-
407
- if ( replacement && replacement.length ) {
408
- replaceBlocks( nextBlockClientId, replacement );
469
+ if ( getBlockOrder( nextBlockClientId ).length ) {
470
+ moveFirstItemUp( nextBlockClientId, false );
409
471
  } else {
410
472
  mergeBlocks( clientId, nextBlockClientId );
411
473
  }
@@ -450,18 +512,7 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
450
512
  }
451
513
  }
452
514
 
453
- // Attempt to "unwrap" the block contents when there's no
454
- // preceding block to merge with.
455
- const replacement = switchToBlockType(
456
- getBlock( rootClientId ),
457
- '*'
458
- );
459
- if ( replacement && replacement.length ) {
460
- registry.batch( () => {
461
- replaceBlocks( rootClientId, replacement );
462
- selectBlock( replacement[ 0 ].clientId, 0 );
463
- } );
464
- }
515
+ moveFirstItemUp( rootClientId );
465
516
  }
466
517
  }
467
518
  },
@@ -2,7 +2,6 @@
2
2
  * External dependencies
3
3
  */
4
4
  import { View, Text, TouchableWithoutFeedback, Dimensions } from 'react-native';
5
- import { pick } from 'lodash';
6
5
 
7
6
  /**
8
7
  * WordPress dependencies
@@ -21,6 +20,8 @@ import {
21
20
  getBlockType,
22
21
  __experimentalGetAccessibleBlockLabel as getAccessibleBlockLabel,
23
22
  switchToBlockType,
23
+ getDefaultBlockName,
24
+ isUnmodifiedBlock,
24
25
  } from '@wordpress/blocks';
25
26
  import { useSetting } from '@wordpress/block-editor';
26
27
 
@@ -33,6 +34,7 @@ import BlockInvalidWarning from './block-invalid-warning';
33
34
  import BlockMobileToolbar from '../block-mobile-toolbar';
34
35
  import { store as blockEditorStore } from '../../store';
35
36
  import BlockDraggable from '../block-draggable';
37
+ import { useLayout } from './layout';
36
38
 
37
39
  const emptyArray = [];
38
40
  function BlockForType( {
@@ -74,10 +76,16 @@ function BlockForType( {
74
76
  // Thanks to the JSON.stringify we check if the value is the same instead of reference.
75
77
  JSON.stringify( wrapperProps.style ),
76
78
  JSON.stringify(
77
- pick( attributes, GlobalStylesContext.BLOCK_STYLE_ATTRIBUTES )
79
+ Object.fromEntries(
80
+ Object.entries( attributes ?? {} ).filter( ( [ key ] ) =>
81
+ GlobalStylesContext.BLOCK_STYLE_ATTRIBUTES.includes( key )
82
+ )
83
+ )
78
84
  ),
79
85
  ] );
80
86
 
87
+ const parentLayout = useLayout();
88
+
81
89
  return (
82
90
  <GlobalStylesContext.Provider value={ mergedStyle }>
83
91
  <BlockEdit
@@ -99,6 +107,7 @@ function BlockForType( {
99
107
  onDeleteBlock={ onDeleteBlock }
100
108
  blockWidth={ blockWidth }
101
109
  parentBlockAlignment={ parentBlockAlignment }
110
+ __unstableParentLayout={ parentLayout }
102
111
  />
103
112
  <View onLayout={ getBlockWidth } />
104
113
  </GlobalStylesContext.Provider>
@@ -429,8 +438,72 @@ export default compose( [
429
438
  getBlockAttributes,
430
439
  getBlockName,
431
440
  getBlockOrder,
441
+ getBlockIndex,
442
+ getBlockRootClientId,
443
+ canInsertBlockType,
432
444
  } = registry.select( blockEditorStore );
433
445
 
446
+ /**
447
+ * Moves the block with clientId up one level. If the block type
448
+ * cannot be inserted at the new location, it will be attempted to
449
+ * convert to the default block type.
450
+ *
451
+ * @param {string} _clientId The block to move.
452
+ * @param {boolean} changeSelection Whether to change the selection
453
+ * to the moved block.
454
+ */
455
+ function moveFirstItemUp( _clientId, changeSelection = true ) {
456
+ const targetRootClientId =
457
+ getBlockRootClientId( _clientId );
458
+ const blockOrder = getBlockOrder( _clientId );
459
+ const [ firstClientId ] = blockOrder;
460
+
461
+ if (
462
+ blockOrder.length === 1 &&
463
+ isUnmodifiedBlock( getBlock( firstClientId ) )
464
+ ) {
465
+ removeBlock( _clientId );
466
+ } else {
467
+ if (
468
+ canInsertBlockType(
469
+ getBlockName( firstClientId ),
470
+ targetRootClientId
471
+ )
472
+ ) {
473
+ moveBlocksToPosition(
474
+ [ firstClientId ],
475
+ _clientId,
476
+ targetRootClientId,
477
+ getBlockIndex( _clientId )
478
+ );
479
+ } else {
480
+ const replacement = switchToBlockType(
481
+ getBlock( firstClientId ),
482
+ getDefaultBlockName()
483
+ );
484
+
485
+ if ( replacement && replacement.length ) {
486
+ registry.batch( () => {
487
+ insertBlocks(
488
+ replacement,
489
+ getBlockIndex( _clientId ),
490
+ targetRootClientId,
491
+ changeSelection
492
+ );
493
+ removeBlock( firstClientId, false );
494
+ } );
495
+ }
496
+ }
497
+
498
+ if (
499
+ ! getBlockOrder( _clientId ).length &&
500
+ isUnmodifiedBlock( getBlock( _clientId ) )
501
+ ) {
502
+ removeBlock( _clientId, false );
503
+ }
504
+ }
505
+ }
506
+
434
507
  // For `Delete` or forward merge, we should do the exact same thing
435
508
  // as `Backspace`, but from the other block.
436
509
  if ( forward ) {
@@ -481,15 +554,8 @@ export default compose( [
481
554
  return;
482
555
  }
483
556
 
484
- // Check if it's possibile to "unwrap" the following block
485
- // before trying to merge.
486
- const replacement = switchToBlockType(
487
- getBlock( nextBlockClientId ),
488
- '*'
489
- );
490
-
491
- if ( replacement && replacement.length ) {
492
- replaceBlocks( nextBlockClientId, replacement );
557
+ if ( getBlockOrder( nextBlockClientId ).length ) {
558
+ moveFirstItemUp( nextBlockClientId, false );
493
559
  } else {
494
560
  mergeBlocks( clientId, nextBlockClientId );
495
561
  }
@@ -534,18 +600,7 @@ export default compose( [
534
600
  }
535
601
  }
536
602
 
537
- // Attempt to "unwrap" the block contents when there's no
538
- // preceding block to merge with.
539
- const replacement = switchToBlockType(
540
- getBlock( rootClientId ),
541
- '*'
542
- );
543
- if ( replacement && replacement.length ) {
544
- registry.batch( () => {
545
- replaceBlocks( rootClientId, replacement );
546
- selectBlock( replacement[ 0 ].clientId, 0 );
547
- } );
548
- }
603
+ moveFirstItemUp( rootClientId );
549
604
  }
550
605
  }
551
606
  },
@@ -290,11 +290,16 @@
290
290
  cursor: unset;
291
291
  }
292
292
 
293
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color); // Selected not focussed.
294
- border-radius: $radius-block-ui;
295
-
296
- &:focus {
297
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
293
+ &::after {
294
+ content: "";
295
+ position: absolute;
296
+ pointer-events: none;
297
+ top: $border-width;
298
+ left: $border-width;
299
+ right: $border-width;
300
+ bottom: $border-width;
301
+ box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
302
+ border-radius: $radius-block-ui;
298
303
  }
299
304
  }
300
305
  }
@@ -425,22 +430,8 @@
425
430
  }
426
431
  }
427
432
 
428
- /** Zoom Out mode styles **/
429
433
  .block-editor-iframe__body {
434
+ background-color: $white;
430
435
  transition: all 0.3s;
431
436
  transform-origin: top center;
432
-
433
- &.is-zoomed-out {
434
- margin: 100px 0;
435
- transform: scale(0.45);
436
-
437
- // Add a bit more space between the top level blocks.
438
- .wp-site-blocks > * + * {
439
- margin-block-start: 2.5rem;
440
- }
441
-
442
- > .block-list-appender {
443
- display: none;
444
- }
445
- }
446
437
  }
@@ -4,7 +4,7 @@
4
4
  import { __ } from '@wordpress/i18n';
5
5
  import { useReducer } from '@wordpress/element';
6
6
  import { MenuItem } from '@wordpress/components';
7
- import { lock, unlock } from '@wordpress/icons';
7
+ import { lockOutline, unlock } from '@wordpress/icons';
8
8
 
9
9
  /**
10
10
  * Internal dependencies
@@ -28,7 +28,10 @@ export default function BlockLockMenuItem( { clientId } ) {
28
28
 
29
29
  return (
30
30
  <>
31
- <MenuItem icon={ isLocked ? unlock : lock } onClick={ toggleModal }>
31
+ <MenuItem
32
+ icon={ isLocked ? unlock : lockOutline }
33
+ onClick={ toggleModal }
34
+ >
32
35
  { label }
33
36
  </MenuItem>
34
37
  { isModalOpen && (
@@ -114,6 +114,7 @@ export default function BlockLockModal( { clientId, onClose } ) {
114
114
  className="block-editor-block-lock-modal__options"
115
115
  >
116
116
  <CheckboxControl
117
+ __nextHasNoMarginBottom
117
118
  className="block-editor-block-lock-modal__options-title"
118
119
  label={
119
120
  <span id={ instanceId }>{ __( 'Lock all' ) }</span>
@@ -134,18 +135,8 @@ export default function BlockLockModal( { clientId, onClose } ) {
134
135
  { allowsEditLocking && (
135
136
  <li className="block-editor-block-lock-modal__checklist-item">
136
137
  <CheckboxControl
137
- label={
138
- <>
139
- { __( 'Restrict editing' ) }
140
- <Icon
141
- icon={
142
- lock.edit
143
- ? lockIcon
144
- : unlockIcon
145
- }
146
- />
147
- </>
148
- }
138
+ __nextHasNoMarginBottom
139
+ label={ __( 'Restrict editing' ) }
149
140
  checked={ !! lock.edit }
150
141
  onChange={ ( edit ) =>
151
142
  setLock( ( prevLock ) => ( {
@@ -154,22 +145,16 @@ export default function BlockLockModal( { clientId, onClose } ) {
154
145
  } ) )
155
146
  }
156
147
  />
148
+ <Icon
149
+ className="block-editor-block-lock-modal__lock-icon"
150
+ icon={ lock.edit ? lockIcon : unlockIcon }
151
+ />
157
152
  </li>
158
153
  ) }
159
154
  <li className="block-editor-block-lock-modal__checklist-item">
160
155
  <CheckboxControl
161
- label={
162
- <>
163
- { __( 'Disable movement' ) }
164
- <Icon
165
- icon={
166
- lock.move
167
- ? lockIcon
168
- : unlockIcon
169
- }
170
- />
171
- </>
172
- }
156
+ __nextHasNoMarginBottom
157
+ label={ __( 'Disable movement' ) }
173
158
  checked={ lock.move }
174
159
  onChange={ ( move ) =>
175
160
  setLock( ( prevLock ) => ( {
@@ -178,21 +163,15 @@ export default function BlockLockModal( { clientId, onClose } ) {
178
163
  } ) )
179
164
  }
180
165
  />
166
+ <Icon
167
+ className="block-editor-block-lock-modal__lock-icon"
168
+ icon={ lock.move ? lockIcon : unlockIcon }
169
+ />
181
170
  </li>
182
171
  <li className="block-editor-block-lock-modal__checklist-item">
183
172
  <CheckboxControl
184
- label={
185
- <>
186
- { __( 'Prevent removal' ) }
187
- <Icon
188
- icon={
189
- lock.remove
190
- ? lockIcon
191
- : unlockIcon
192
- }
193
- />
194
- </>
195
- }
173
+ __nextHasNoMarginBottom
174
+ label={ __( 'Prevent removal' ) }
196
175
  checked={ lock.remove }
197
176
  onChange={ ( remove ) =>
198
177
  setLock( ( prevLock ) => ( {
@@ -201,6 +180,10 @@ export default function BlockLockModal( { clientId, onClose } ) {
201
180
  } ) )
202
181
  }
203
182
  />
183
+ <Icon
184
+ className="block-editor-block-lock-modal__lock-icon"
185
+ icon={ lock.remove ? lockIcon : unlockIcon }
186
+ />
204
187
  </li>
205
188
  </ul>
206
189
  { hasTemplateLock && (
@@ -22,29 +22,20 @@
22
22
  .components-base-control__field {
23
23
  align-items: center;
24
24
  display: flex;
25
- margin: 0;
26
25
  }
27
26
  }
28
27
  .block-editor-block-lock-modal__checklist-item {
28
+ display: flex;
29
+ justify-content: space-between;
30
+ align-items: center;
31
+ gap: $grid-unit-15;
29
32
  margin-bottom: 0;
30
33
  padding: $grid-unit-15 0 $grid-unit-15 $grid-unit-40;
31
34
 
32
- .components-base-control__field {
33
- align-items: center;
34
- display: flex;
35
- margin: 0;
36
- }
37
-
38
- .components-checkbox-control__label {
39
- display: flex;
40
- align-items: center;
41
- justify-content: space-between;
42
- flex-grow: 1;
43
-
44
- svg {
45
- margin-right: $grid-unit-15;
46
- fill: $gray-900;
47
- }
35
+ .block-editor-block-lock-modal__lock-icon {
36
+ flex-shrink: 0;
37
+ margin-right: $grid-unit-15;
38
+ fill: $gray-900;
48
39
  }
49
40
 
50
41
  &:hover {
@@ -23,12 +23,14 @@ import {
23
23
  isReusableBlock,
24
24
  } from '@wordpress/blocks';
25
25
  import { __, sprintf } from '@wordpress/i18n';
26
- import { withDispatch, withSelect } from '@wordpress/data';
26
+ import { withDispatch, withSelect, useSelect } from '@wordpress/data';
27
27
  import { withInstanceId, compose } from '@wordpress/compose';
28
28
  import { moreHorizontalMobile } from '@wordpress/icons';
29
29
  import { useRef, useState } from '@wordpress/element';
30
30
  import { store as noticesStore } from '@wordpress/notices';
31
31
  import { store as reusableBlocksStore } from '@wordpress/reusable-blocks';
32
+ // Disable Reason: Needs to be refactored.
33
+ // eslint-disable-next-line no-restricted-imports
32
34
  import { store as coreStore } from '@wordpress/core-data';
33
35
 
34
36
  /**
@@ -78,6 +80,12 @@ const BlockActionsMenu = ( {
78
80
  clipboardBlock &&
79
81
  canInsertBlockType( clipboardBlock.name, rootClientId );
80
82
 
83
+ const innerBlockCount = useSelect(
84
+ ( select ) =>
85
+ select( blockEditorStore ).getBlockCount( selectedBlockClientId ),
86
+ [ selectedBlockClientId ]
87
+ );
88
+
81
89
  const {
82
90
  actionTitle: {
83
91
  backward: backwardButtonTitle,
@@ -187,13 +195,21 @@ const BlockActionsMenu = ( {
187
195
  },
188
196
  convertToRegularBlocks: {
189
197
  id: 'convertToRegularBlocksOption',
190
- label: __( 'Convert to regular blocks' ),
198
+ label:
199
+ innerBlockCount > 1
200
+ ? __( 'Convert to regular blocks' )
201
+ : __( 'Convert to regular block' ),
191
202
  value: 'convertToRegularBlocksOption',
192
203
  onSelect: () => {
204
+ const successNotice =
205
+ innerBlockCount > 1
206
+ ? /* translators: %s: name of the reusable block */
207
+ __( '%s converted to regular blocks' )
208
+ : /* translators: %s: name of the reusable block */
209
+ __( '%s converted to regular block' );
193
210
  createSuccessNotice(
194
211
  sprintf(
195
- /* translators: %s: name of the reusable block */
196
- __( '%s converted to regular blocks' ),
212
+ successNotice,
197
213
  reusableBlock?.title?.raw || blockTitle
198
214
  )
199
215
  );
@@ -293,6 +309,8 @@ const BlockActionsMenu = ( {
293
309
  );
294
310
  };
295
311
 
312
+ const EMPTY_BLOCK_LIST = [];
313
+
296
314
  export default compose(
297
315
  withSelect( ( select, { clientIds } ) => {
298
316
  const {
@@ -345,8 +363,8 @@ export default compose(
345
363
  ? getBlocksByClientId( selectedBlockClientId )[ 0 ]
346
364
  : undefined;
347
365
  const selectedBlockPossibleTransformations = selectedBlock
348
- ? getBlockTransformItems( [ selectedBlock ], rootClientId )
349
- : [];
366
+ ? getBlockTransformItems( selectedBlock, rootClientId )
367
+ : EMPTY_BLOCK_LIST;
350
368
 
351
369
  const isReusableBlockType = block ? isReusableBlock( block ) : false;
352
370
  const reusableBlock = isReusableBlockType
@@ -15,7 +15,6 @@
15
15
  // Focus style.
16
16
  &::before {
17
17
  height: calc(100% - 4px);
18
- width: calc(100% - 4px);
19
18
  }
20
19
  }
21
20
 
@@ -15,7 +15,6 @@ Array [
15
15
  accessible={true}
16
16
  collapsable={false}
17
17
  focusable={true}
18
- nativeID="animatedComponent"
19
18
  onClick={[Function]}
20
19
  onResponderGrant={[Function]}
21
20
  onResponderMove={[Function]}
@@ -75,7 +74,6 @@ Array [
75
74
  accessible={true}
76
75
  collapsable={false}
77
76
  focusable={true}
78
- nativeID="animatedComponent"
79
77
  onClick={[Function]}
80
78
  onResponderGrant={[Function]}
81
79
  onResponderMove={[Function]}
@@ -138,8 +138,9 @@ const BlockPatternSetup = ( {
138
138
  blockName,
139
139
  filterPatternsFn,
140
140
  onBlockPatternSelect,
141
+ initialViewMode = VIEWMODES.carousel,
141
142
  } ) => {
142
- const [ viewMode, setViewMode ] = useState( VIEWMODES.carousel );
143
+ const [ viewMode, setViewMode ] = useState( initialViewMode );
143
144
  const [ activeSlide, setActiveSlide ] = useState( 0 );
144
145
  const { replaceBlock } = useDispatch( blockEditorStore );
145
146
  const patterns = usePatternsSetup( clientId, blockName, filterPatternsFn );