@wordpress/block-editor 12.13.0 → 12.15.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 (528) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +1 -1
  3. package/build/components/block-heading-level-dropdown/index.js +1 -1
  4. package/build/components/block-heading-level-dropdown/index.js.map +1 -1
  5. package/build/components/block-list/block.native.js +2 -0
  6. package/build/components/block-list/block.native.js.map +1 -1
  7. package/build/components/block-list/index.js +2 -9
  8. package/build/components/block-list/index.js.map +1 -1
  9. package/build/components/block-list-appender/index.js +16 -3
  10. package/build/components/block-list-appender/index.js.map +1 -1
  11. package/build/components/block-parent-selector/index.js +1 -1
  12. package/build/components/block-parent-selector/index.js.map +1 -1
  13. package/build/components/block-pattern-setup/index.js +25 -16
  14. package/build/components/block-pattern-setup/index.js.map +1 -1
  15. package/build/components/block-pattern-setup/setup-toolbar.js +4 -2
  16. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  17. package/build/components/block-patterns-list/index.js +36 -19
  18. package/build/components/block-patterns-list/index.js.map +1 -1
  19. package/build/components/block-quick-navigation/index.js +6 -4
  20. package/build/components/block-quick-navigation/index.js.map +1 -1
  21. package/build/components/block-rename/index.js +28 -0
  22. package/build/components/block-rename/index.js.map +1 -0
  23. package/build/components/block-rename/is-empty-string.js +10 -0
  24. package/build/components/block-rename/is-empty-string.js.map +1 -0
  25. package/build/components/block-rename/modal.js +87 -0
  26. package/build/components/block-rename/modal.js.map +1 -0
  27. package/build/components/block-rename/rename-control.js +74 -0
  28. package/build/components/block-rename/rename-control.js.map +1 -0
  29. package/build/components/block-rename/use-block-rename.js +17 -0
  30. package/build/components/block-rename/use-block-rename.js.map +1 -0
  31. package/build/components/block-settings-menu/block-settings-dropdown.js +33 -20
  32. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  33. package/build/components/block-settings-menu-controls/index.js +7 -0
  34. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  35. package/build/components/block-styles/index.js +0 -8
  36. package/build/components/block-styles/index.js.map +1 -1
  37. package/build/components/block-switcher/pattern-transformations-menu.js +18 -14
  38. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  39. package/build/components/block-toolbar/block-toolbar-menu.native.js +1 -1
  40. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  41. package/build/components/block-tools/back-compat.js +2 -2
  42. package/build/components/block-tools/back-compat.js.map +1 -1
  43. package/build/components/block-tools/block-contextual-toolbar.js +11 -81
  44. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  45. package/build/components/block-tools/empty-block-inserter.js +56 -0
  46. package/build/components/block-tools/empty-block-inserter.js.map +1 -0
  47. package/build/components/block-tools/index.js +48 -9
  48. package/build/components/block-tools/index.js.map +1 -1
  49. package/build/components/block-tools/selected-block-tools.js +113 -0
  50. package/build/components/block-tools/selected-block-tools.js.map +1 -0
  51. package/build/components/block-tools/use-selected-block-tool-props.js +56 -0
  52. package/build/components/block-tools/use-selected-block-tool-props.js.map +1 -0
  53. package/build/components/block-types-list/index.js +6 -2
  54. package/build/components/block-types-list/index.js.map +1 -1
  55. package/build/components/date-format-picker/index.js +8 -1
  56. package/build/components/date-format-picker/index.js.map +1 -1
  57. package/build/components/editable-text/index.js +1 -2
  58. package/build/components/editable-text/index.js.map +1 -1
  59. package/build/components/global-styles/advanced-panel.js +1 -1
  60. package/build/components/global-styles/advanced-panel.js.map +1 -1
  61. package/build/components/iframe/index.js +4 -3
  62. package/build/components/iframe/index.js.map +1 -1
  63. package/build/components/image-size-control/index.js +0 -5
  64. package/build/components/image-size-control/index.js.map +1 -1
  65. package/build/components/inner-blocks/index.js +3 -1
  66. package/build/components/inner-blocks/index.js.map +1 -1
  67. package/build/components/inner-blocks/warning-max-depth-exceeded.native.js +29 -31
  68. package/build/components/inner-blocks/warning-max-depth-exceeded.native.js.map +1 -1
  69. package/build/components/inserter/block-patterns-explorer/{explorer.js → index.js} +7 -7
  70. package/build/components/inserter/block-patterns-explorer/index.js.map +1 -0
  71. package/build/components/inserter/block-patterns-explorer/{sidebar.js → pattern-explorer-sidebar.js} +1 -1
  72. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -0
  73. package/build/components/inserter/block-patterns-explorer/{patterns-list.js → pattern-list.js} +4 -4
  74. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -0
  75. package/build/components/inserter/block-patterns-tab/index.js +75 -0
  76. package/build/components/inserter/block-patterns-tab/index.js.map +1 -0
  77. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +48 -0
  78. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -0
  79. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +108 -0
  80. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -0
  81. package/build/components/inserter/{block-patterns-filter.js → block-patterns-tab/patterns-filter.js} +18 -34
  82. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -0
  83. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +55 -0
  84. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -0
  85. package/build/components/inserter/block-patterns-tab/utils.js +69 -0
  86. package/build/components/inserter/block-patterns-tab/utils.js.map +1 -0
  87. package/build/components/inserter/hooks/use-patterns-state.js +2 -1
  88. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  89. package/build/components/inserter/media-tab/media-list.js +9 -5
  90. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  91. package/build/components/inserter/media-tab/media-preview.js +15 -12
  92. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  93. package/build/components/inserter/menu.js +3 -4
  94. package/build/components/inserter/menu.js.map +1 -1
  95. package/build/components/inserter-listbox/index.js +11 -6
  96. package/build/components/inserter-listbox/index.js.map +1 -1
  97. package/build/components/inserter-listbox/item.js +24 -23
  98. package/build/components/inserter-listbox/item.js.map +1 -1
  99. package/build/components/inserter-listbox/row.js +5 -5
  100. package/build/components/inserter-listbox/row.js.map +1 -1
  101. package/build/components/link-control/index.js +6 -5
  102. package/build/components/link-control/index.js.map +1 -1
  103. package/build/components/list-view/block-select-button.js +39 -0
  104. package/build/components/list-view/block-select-button.js.map +1 -1
  105. package/build/components/list-view/block.js +16 -3
  106. package/build/components/list-view/block.js.map +1 -1
  107. package/build/components/list-view/index.js +3 -2
  108. package/build/components/list-view/index.js.map +1 -1
  109. package/build/components/list-view/use-list-view-expand-selected-item.js +2 -3
  110. package/build/components/list-view/use-list-view-expand-selected-item.js.map +1 -1
  111. package/build/components/navigable-toolbar/index.js +69 -18
  112. package/build/components/navigable-toolbar/index.js.map +1 -1
  113. package/build/components/preview-options/index.js +4 -2
  114. package/build/components/preview-options/index.js.map +1 -1
  115. package/build/components/provider/use-block-sync.js +1 -14
  116. package/build/components/provider/use-block-sync.js.map +1 -1
  117. package/build/components/rich-text/index.js +0 -1
  118. package/build/components/rich-text/index.js.map +1 -1
  119. package/build/components/rich-text/index.native.js +4 -2
  120. package/build/components/rich-text/index.native.js.map +1 -1
  121. package/build/components/rich-text/native/format-edit.js +45 -0
  122. package/build/components/rich-text/native/format-edit.js.map +1 -0
  123. package/build/components/rich-text/native/get-format-colors.native.js +41 -0
  124. package/build/components/rich-text/native/get-format-colors.native.js.map +1 -0
  125. package/build/components/rich-text/native/index.js +9 -0
  126. package/build/components/rich-text/native/index.js.map +1 -0
  127. package/build/components/rich-text/native/index.native.js +1189 -0
  128. package/build/components/rich-text/native/index.native.js.map +1 -0
  129. package/build/components/rich-text/native/toolbar-button-with-options.native.js +58 -0
  130. package/build/components/rich-text/native/toolbar-button-with-options.native.js.map +1 -0
  131. package/build/components/rich-text/native/use-format-types.js +111 -0
  132. package/build/components/rich-text/native/use-format-types.js.map +1 -0
  133. package/build/components/rich-text/use-input-rules.js +30 -1
  134. package/build/components/rich-text/use-input-rules.js.map +1 -1
  135. package/build/components/rich-text/use-paste-handler.js +2 -5
  136. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  137. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  138. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  139. package/build/components/url-popover/image-url-input-ui.js +2 -1
  140. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  141. package/build/components/use-block-drop-zone/index.js +4 -1
  142. package/build/components/use-block-drop-zone/index.js.map +1 -1
  143. package/build/components/use-moving-animation/index.js +2 -1
  144. package/build/components/use-moving-animation/index.js.map +1 -1
  145. package/build/components/use-settings/index.js +2 -2
  146. package/build/components/use-settings/index.js.map +1 -1
  147. package/build/components/writing-flow/use-tab-nav.js +7 -3
  148. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  149. package/build/hooks/align.js +10 -10
  150. package/build/hooks/align.js.map +1 -1
  151. package/build/hooks/align.native.js +2 -2
  152. package/build/hooks/align.native.js.map +1 -1
  153. package/build/hooks/anchor.js +7 -6
  154. package/build/hooks/anchor.js.map +1 -1
  155. package/build/hooks/background.js +16 -4
  156. package/build/hooks/background.js.map +1 -1
  157. package/build/hooks/block-hooks.js +7 -8
  158. package/build/hooks/block-hooks.js.map +1 -1
  159. package/build/hooks/block-renaming.js +42 -0
  160. package/build/hooks/block-renaming.js.map +1 -1
  161. package/build/hooks/content-lock-ui.js +5 -5
  162. package/build/hooks/content-lock-ui.js.map +1 -1
  163. package/build/hooks/custom-class-name.js +8 -7
  164. package/build/hooks/custom-class-name.js.map +1 -1
  165. package/build/hooks/custom-fields.js +57 -52
  166. package/build/hooks/custom-fields.js.map +1 -1
  167. package/build/hooks/duotone.js +9 -20
  168. package/build/hooks/duotone.js.map +1 -1
  169. package/build/hooks/index.js +0 -1
  170. package/build/hooks/index.js.map +1 -1
  171. package/build/hooks/layout.js +103 -93
  172. package/build/hooks/layout.js.map +1 -1
  173. package/build/hooks/position.js +10 -9
  174. package/build/hooks/position.js.map +1 -1
  175. package/build/hooks/style.js +10 -13
  176. package/build/hooks/style.js.map +1 -1
  177. package/build/hooks/utils.js +30 -0
  178. package/build/hooks/utils.js.map +1 -1
  179. package/build/layouts/constrained.js +4 -3
  180. package/build/layouts/constrained.js.map +1 -1
  181. package/build/private-apis.js +3 -0
  182. package/build/private-apis.js.map +1 -1
  183. package/build/store/actions.js +30 -37
  184. package/build/store/actions.js.map +1 -1
  185. package/build/store/reducer.js +18 -0
  186. package/build/store/reducer.js.map +1 -1
  187. package/build/store/selectors.js +18 -13
  188. package/build/store/selectors.js.map +1 -1
  189. package/build/utils/transform-styles/index.js +26 -6
  190. package/build/utils/transform-styles/index.js.map +1 -1
  191. package/build-module/components/block-heading-level-dropdown/index.js +1 -1
  192. package/build-module/components/block-heading-level-dropdown/index.js.map +1 -1
  193. package/build-module/components/block-list/block.native.js +2 -0
  194. package/build-module/components/block-list/block.native.js.map +1 -1
  195. package/build-module/components/block-list/index.js +3 -10
  196. package/build-module/components/block-list/index.js.map +1 -1
  197. package/build-module/components/block-list-appender/index.js +16 -3
  198. package/build-module/components/block-list-appender/index.js.map +1 -1
  199. package/build-module/components/block-parent-selector/index.js +1 -1
  200. package/build-module/components/block-parent-selector/index.js.map +1 -1
  201. package/build-module/components/block-pattern-setup/index.js +24 -15
  202. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  203. package/build-module/components/block-pattern-setup/setup-toolbar.js +4 -2
  204. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  205. package/build-module/components/block-patterns-list/index.js +36 -19
  206. package/build-module/components/block-patterns-list/index.js.map +1 -1
  207. package/build-module/components/block-quick-navigation/index.js +7 -5
  208. package/build-module/components/block-quick-navigation/index.js.map +1 -1
  209. package/build-module/components/block-rename/index.js +4 -0
  210. package/build-module/components/block-rename/index.js.map +1 -0
  211. package/build-module/components/block-rename/is-empty-string.js +4 -0
  212. package/build-module/components/block-rename/is-empty-string.js.map +1 -0
  213. package/build-module/components/block-rename/modal.js +79 -0
  214. package/build-module/components/block-rename/modal.js.map +1 -0
  215. package/build-module/components/block-rename/rename-control.js +66 -0
  216. package/build-module/components/block-rename/rename-control.js.map +1 -0
  217. package/build-module/components/block-rename/use-block-rename.js +10 -0
  218. package/build-module/components/block-rename/use-block-rename.js.map +1 -0
  219. package/build-module/components/block-settings-menu/block-settings-dropdown.js +34 -21
  220. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  221. package/build-module/components/block-settings-menu-controls/index.js +7 -0
  222. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  223. package/build-module/components/block-styles/index.js +0 -8
  224. package/build-module/components/block-styles/index.js.map +1 -1
  225. package/build-module/components/block-switcher/pattern-transformations-menu.js +17 -13
  226. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  227. package/build-module/components/block-toolbar/block-toolbar-menu.native.js +1 -1
  228. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  229. package/build-module/components/block-tools/back-compat.js +1 -1
  230. package/build-module/components/block-tools/back-compat.js.map +1 -1
  231. package/build-module/components/block-tools/block-contextual-toolbar.js +11 -80
  232. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  233. package/build-module/components/block-tools/empty-block-inserter.js +48 -0
  234. package/build-module/components/block-tools/empty-block-inserter.js.map +1 -0
  235. package/build-module/components/block-tools/index.js +48 -9
  236. package/build-module/components/block-tools/index.js.map +1 -1
  237. package/build-module/components/block-tools/selected-block-tools.js +105 -0
  238. package/build-module/components/block-tools/selected-block-tools.js.map +1 -0
  239. package/build-module/components/block-tools/use-selected-block-tool-props.js +50 -0
  240. package/build-module/components/block-tools/use-selected-block-tool-props.js.map +1 -0
  241. package/build-module/components/block-types-list/index.js +6 -2
  242. package/build-module/components/block-types-list/index.js.map +1 -1
  243. package/build-module/components/date-format-picker/index.js +8 -1
  244. package/build-module/components/date-format-picker/index.js.map +1 -1
  245. package/build-module/components/editable-text/index.js +1 -2
  246. package/build-module/components/editable-text/index.js.map +1 -1
  247. package/build-module/components/global-styles/advanced-panel.js +1 -1
  248. package/build-module/components/global-styles/advanced-panel.js.map +1 -1
  249. package/build-module/components/iframe/index.js +4 -3
  250. package/build-module/components/iframe/index.js.map +1 -1
  251. package/build-module/components/image-size-control/index.js +0 -5
  252. package/build-module/components/image-size-control/index.js.map +1 -1
  253. package/build-module/components/inner-blocks/index.js +3 -1
  254. package/build-module/components/inner-blocks/index.js.map +1 -1
  255. package/build-module/components/inner-blocks/warning-max-depth-exceeded.native.js +30 -32
  256. package/build-module/components/inner-blocks/warning-max-depth-exceeded.native.js.map +1 -1
  257. package/build-module/components/inserter/block-patterns-explorer/{explorer.js → index.js} +5 -5
  258. package/build-module/components/inserter/block-patterns-explorer/index.js.map +1 -0
  259. package/build-module/components/inserter/block-patterns-explorer/{sidebar.js → pattern-explorer-sidebar.js} +1 -1
  260. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -0
  261. package/build-module/components/inserter/block-patterns-explorer/{patterns-list.js → pattern-list.js} +3 -3
  262. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -0
  263. package/build-module/components/inserter/block-patterns-tab/index.js +66 -0
  264. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -0
  265. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +42 -0
  266. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -0
  267. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +100 -0
  268. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -0
  269. package/build-module/components/inserter/{block-patterns-filter.js → block-patterns-tab/patterns-filter.js} +7 -20
  270. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -0
  271. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +47 -0
  272. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -0
  273. package/build-module/components/inserter/block-patterns-tab/utils.js +57 -0
  274. package/build-module/components/inserter/block-patterns-tab/utils.js.map +1 -0
  275. package/build-module/components/inserter/hooks/use-patterns-state.js +2 -1
  276. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  277. package/build-module/components/inserter/media-tab/media-list.js +9 -5
  278. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  279. package/build-module/components/inserter/media-tab/media-preview.js +15 -12
  280. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  281. package/build-module/components/inserter/menu.js +4 -3
  282. package/build-module/components/inserter/menu.js.map +1 -1
  283. package/build-module/components/inserter-listbox/index.js +13 -8
  284. package/build-module/components/inserter-listbox/index.js.map +1 -1
  285. package/build-module/components/inserter-listbox/item.js +25 -23
  286. package/build-module/components/inserter-listbox/item.js.map +1 -1
  287. package/build-module/components/inserter-listbox/row.js +6 -5
  288. package/build-module/components/inserter-listbox/row.js.map +1 -1
  289. package/build-module/components/link-control/index.js +7 -6
  290. package/build-module/components/link-control/index.js.map +1 -1
  291. package/build-module/components/list-view/block-select-button.js +39 -0
  292. package/build-module/components/list-view/block-select-button.js.map +1 -1
  293. package/build-module/components/list-view/block.js +16 -3
  294. package/build-module/components/list-view/block.js.map +1 -1
  295. package/build-module/components/list-view/index.js +3 -2
  296. package/build-module/components/list-view/index.js.map +1 -1
  297. package/build-module/components/list-view/use-list-view-expand-selected-item.js +2 -3
  298. package/build-module/components/list-view/use-list-view-expand-selected-item.js.map +1 -1
  299. package/build-module/components/navigable-toolbar/index.js +69 -17
  300. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  301. package/build-module/components/preview-options/index.js +4 -2
  302. package/build-module/components/preview-options/index.js.map +1 -1
  303. package/build-module/components/provider/use-block-sync.js +1 -14
  304. package/build-module/components/provider/use-block-sync.js.map +1 -1
  305. package/build-module/components/rich-text/index.js +0 -1
  306. package/build-module/components/rich-text/index.js.map +1 -1
  307. package/build-module/components/rich-text/index.native.js +4 -2
  308. package/build-module/components/rich-text/index.native.js.map +1 -1
  309. package/build-module/components/rich-text/native/format-edit.js +38 -0
  310. package/build-module/components/rich-text/native/format-edit.js.map +1 -0
  311. package/build-module/components/rich-text/native/get-format-colors.native.js +34 -0
  312. package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -0
  313. package/build-module/components/rich-text/native/index.js +2 -0
  314. package/build-module/components/rich-text/native/index.js.map +1 -0
  315. package/build-module/components/rich-text/native/index.native.js +1179 -0
  316. package/build-module/components/rich-text/native/index.native.js.map +1 -0
  317. package/build-module/components/rich-text/native/toolbar-button-with-options.native.js +51 -0
  318. package/build-module/components/rich-text/native/toolbar-button-with-options.native.js.map +1 -0
  319. package/build-module/components/rich-text/native/use-format-types.js +104 -0
  320. package/build-module/components/rich-text/native/use-format-types.js.map +1 -0
  321. package/build-module/components/rich-text/use-input-rules.js +31 -2
  322. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  323. package/build-module/components/rich-text/use-paste-handler.js +2 -5
  324. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  325. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  326. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  327. package/build-module/components/url-popover/image-url-input-ui.js +2 -1
  328. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  329. package/build-module/components/use-block-drop-zone/index.js +4 -1
  330. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  331. package/build-module/components/use-moving-animation/index.js +2 -1
  332. package/build-module/components/use-moving-animation/index.js.map +1 -1
  333. package/build-module/components/use-settings/index.js +2 -2
  334. package/build-module/components/use-settings/index.js.map +1 -1
  335. package/build-module/components/writing-flow/use-tab-nav.js +7 -3
  336. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  337. package/build-module/hooks/align.js +8 -8
  338. package/build-module/hooks/align.js.map +1 -1
  339. package/build-module/hooks/align.native.js +2 -2
  340. package/build-module/hooks/align.native.js.map +1 -1
  341. package/build-module/hooks/anchor.js +5 -4
  342. package/build-module/hooks/anchor.js.map +1 -1
  343. package/build-module/hooks/background.js +17 -5
  344. package/build-module/hooks/background.js.map +1 -1
  345. package/build-module/hooks/block-hooks.js +5 -6
  346. package/build-module/hooks/block-hooks.js.map +1 -1
  347. package/build-module/hooks/block-renaming.js +40 -0
  348. package/build-module/hooks/block-renaming.js.map +1 -1
  349. package/build-module/hooks/content-lock-ui.js +3 -3
  350. package/build-module/hooks/content-lock-ui.js.map +1 -1
  351. package/build-module/hooks/custom-class-name.js +6 -5
  352. package/build-module/hooks/custom-class-name.js.map +1 -1
  353. package/build-module/hooks/custom-fields.js +57 -52
  354. package/build-module/hooks/custom-fields.js.map +1 -1
  355. package/build-module/hooks/duotone.js +10 -21
  356. package/build-module/hooks/duotone.js.map +1 -1
  357. package/build-module/hooks/index.js +0 -1
  358. package/build-module/hooks/index.js.map +1 -1
  359. package/build-module/hooks/layout.js +103 -93
  360. package/build-module/hooks/layout.js.map +1 -1
  361. package/build-module/hooks/position.js +11 -10
  362. package/build-module/hooks/position.js.map +1 -1
  363. package/build-module/hooks/style.js +10 -13
  364. package/build-module/hooks/style.js.map +1 -1
  365. package/build-module/hooks/utils.js +30 -1
  366. package/build-module/hooks/utils.js.map +1 -1
  367. package/build-module/layouts/constrained.js +4 -3
  368. package/build-module/layouts/constrained.js.map +1 -1
  369. package/build-module/private-apis.js +4 -1
  370. package/build-module/private-apis.js.map +1 -1
  371. package/build-module/store/actions.js +29 -37
  372. package/build-module/store/actions.js.map +1 -1
  373. package/build-module/store/reducer.js +17 -0
  374. package/build-module/store/reducer.js.map +1 -1
  375. package/build-module/store/selectors.js +17 -13
  376. package/build-module/store/selectors.js.map +1 -1
  377. package/build-module/utils/transform-styles/index.js +24 -7
  378. package/build-module/utils/transform-styles/index.js.map +1 -1
  379. package/build-style/content-rtl.css +6 -6
  380. package/build-style/content.css +6 -6
  381. package/build-style/style-rtl.css +26 -20
  382. package/build-style/style.css +26 -20
  383. package/package.json +31 -31
  384. package/src/components/block-heading-level-dropdown/index.js +1 -1
  385. package/src/components/block-list/block.native.js +2 -0
  386. package/src/components/block-list/index.js +4 -18
  387. package/src/components/block-list-appender/index.js +20 -4
  388. package/src/components/block-parent-selector/index.js +1 -1
  389. package/src/components/block-pattern-setup/index.js +38 -22
  390. package/src/components/block-pattern-setup/setup-toolbar.js +2 -0
  391. package/src/components/block-pattern-setup/style.scss +4 -1
  392. package/src/components/block-patterns-list/README.md +4 -4
  393. package/src/components/block-patterns-list/index.js +60 -34
  394. package/src/components/block-patterns-list/style.scss +7 -0
  395. package/src/components/block-quick-navigation/index.js +11 -5
  396. package/src/components/block-rename/index.js +3 -0
  397. package/src/components/block-rename/is-empty-string.js +3 -0
  398. package/src/components/block-rename/modal.js +115 -0
  399. package/src/components/block-rename/rename-control.js +80 -0
  400. package/src/components/block-rename/use-block-rename.js +10 -0
  401. package/src/components/block-settings-menu/block-settings-dropdown.js +38 -34
  402. package/src/components/block-settings-menu-controls/index.js +9 -0
  403. package/src/components/block-styles/index.js +0 -10
  404. package/src/components/block-switcher/pattern-transformations-menu.js +20 -14
  405. package/src/components/block-toolbar/block-toolbar-menu.native.js +1 -4
  406. package/src/components/block-toolbar/style.scss +8 -0
  407. package/src/components/block-tools/back-compat.js +1 -1
  408. package/src/components/block-tools/block-contextual-toolbar.js +11 -134
  409. package/src/components/block-tools/empty-block-inserter.js +56 -0
  410. package/src/components/block-tools/index.js +72 -16
  411. package/src/components/block-tools/selected-block-tools.js +127 -0
  412. package/src/components/block-tools/style.scss +0 -10
  413. package/src/components/block-tools/use-selected-block-tool-props.js +66 -0
  414. package/src/components/block-types-list/index.js +5 -4
  415. package/src/components/button-block-appender/content.scss +2 -2
  416. package/src/components/date-format-picker/index.js +7 -0
  417. package/src/components/editable-text/README.md +0 -36
  418. package/src/components/editable-text/index.js +1 -8
  419. package/src/components/global-styles/advanced-panel.js +1 -1
  420. package/src/components/iframe/index.js +4 -3
  421. package/src/components/image-size-control/index.js +0 -6
  422. package/src/components/inner-blocks/index.js +6 -2
  423. package/src/components/inner-blocks/warning-max-depth-exceeded.native.js +57 -33
  424. package/src/components/inserter/block-patterns-explorer/{explorer.js → index.js} +4 -4
  425. package/src/components/inserter/block-patterns-explorer/{patterns-list.js → pattern-list.js} +9 -2
  426. package/src/components/inserter/block-patterns-tab/index.js +118 -0
  427. package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +48 -0
  428. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +179 -0
  429. package/src/components/inserter/{block-patterns-filter.js → block-patterns-tab/patterns-filter.js} +15 -21
  430. package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +101 -0
  431. package/src/components/inserter/block-patterns-tab/utils.js +78 -0
  432. package/src/components/inserter/hooks/use-patterns-state.js +3 -1
  433. package/src/components/inserter/media-tab/media-list.js +7 -7
  434. package/src/components/inserter/media-tab/media-preview.js +27 -22
  435. package/src/components/inserter/menu.js +4 -5
  436. package/src/components/inserter-listbox/index.js +11 -7
  437. package/src/components/inserter-listbox/item.js +11 -12
  438. package/src/components/inserter-listbox/row.js +6 -12
  439. package/src/components/link-control/README.md +2 -2
  440. package/src/components/link-control/index.js +15 -6
  441. package/src/components/link-control/style.scss +8 -5
  442. package/src/components/list-view/block-select-button.js +44 -1
  443. package/src/components/list-view/block.js +11 -11
  444. package/src/components/list-view/index.js +2 -0
  445. package/src/components/list-view/use-list-view-expand-selected-item.js +7 -8
  446. package/src/components/media-replace-flow/style.scss +2 -2
  447. package/src/components/navigable-toolbar/index.js +71 -25
  448. package/src/components/plain-text/README.md +2 -30
  449. package/src/components/preview-options/index.js +2 -0
  450. package/src/components/provider/use-block-sync.js +2 -21
  451. package/src/components/rich-text/README.md +6 -63
  452. package/src/components/rich-text/index.js +0 -1
  453. package/src/components/rich-text/index.native.js +4 -2
  454. package/src/components/rich-text/native/format-edit.js +44 -0
  455. package/src/components/rich-text/native/get-format-colors.native.js +54 -0
  456. package/src/components/rich-text/native/index.js +1 -0
  457. package/src/components/rich-text/native/index.native.js +1406 -0
  458. package/src/components/rich-text/native/style.native.scss +28 -0
  459. package/src/components/rich-text/native/test/__snapshots__/index.native.js.snap +79 -0
  460. package/src/components/rich-text/native/test/index.native.js +278 -0
  461. package/src/components/rich-text/native/test/performance/rich-text.native.js +44 -0
  462. package/src/components/rich-text/native/toolbar-button-with-options.native.js +61 -0
  463. package/src/components/rich-text/native/use-format-types.js +146 -0
  464. package/src/components/rich-text/use-input-rules.js +30 -2
  465. package/src/components/rich-text/use-paste-handler.js +1 -6
  466. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +1 -1
  467. package/src/components/url-input/README.md +1 -74
  468. package/src/components/url-popover/image-url-input-ui.js +1 -0
  469. package/src/components/use-block-drop-zone/index.js +4 -1
  470. package/src/components/use-moving-animation/index.js +1 -1
  471. package/src/components/use-settings/index.js +2 -2
  472. package/src/components/use-settings/test/index.js +1 -1
  473. package/src/components/writing-flow/use-tab-nav.js +8 -3
  474. package/src/hooks/align.js +8 -8
  475. package/src/hooks/align.native.js +2 -2
  476. package/src/hooks/anchor.js +21 -23
  477. package/src/hooks/background.js +28 -6
  478. package/src/hooks/block-hooks.js +20 -16
  479. package/src/hooks/block-renaming.js +47 -0
  480. package/src/hooks/content-lock-ui.js +3 -3
  481. package/src/hooks/custom-class-name.js +7 -6
  482. package/src/hooks/custom-fields.js +73 -70
  483. package/src/hooks/duotone.js +23 -33
  484. package/src/hooks/index.js +0 -1
  485. package/src/hooks/layout.js +126 -113
  486. package/src/hooks/position.js +8 -21
  487. package/src/hooks/style.js +17 -31
  488. package/src/hooks/test/__snapshots__/align.native.js.snap +5 -5
  489. package/src/hooks/test/align.js +4 -4
  490. package/src/hooks/utils.js +33 -1
  491. package/src/layouts/constrained.js +57 -50
  492. package/src/private-apis.js +4 -1
  493. package/src/store/actions.js +26 -72
  494. package/src/store/reducer.js +19 -0
  495. package/src/store/selectors.js +15 -19
  496. package/src/style.scss +1 -1
  497. package/src/utils/test/transform-styles.js +49 -0
  498. package/src/utils/transform-styles/index.js +39 -13
  499. package/build/components/block-tools/selected-block-popover.js +0 -221
  500. package/build/components/block-tools/selected-block-popover.js.map +0 -1
  501. package/build/components/inserter/block-patterns-explorer/explorer.js.map +0 -1
  502. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +0 -1
  503. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +0 -1
  504. package/build/components/inserter/block-patterns-filter.js.map +0 -1
  505. package/build/components/inserter/block-patterns-tab.js +0 -270
  506. package/build/components/inserter/block-patterns-tab.js.map +0 -1
  507. package/build/hooks/block-rename-ui.js +0 -165
  508. package/build/hooks/block-rename-ui.js.map +0 -1
  509. package/build/store/utils.js +0 -22
  510. package/build/store/utils.js.map +0 -1
  511. package/build-module/components/block-tools/selected-block-popover.js +0 -213
  512. package/build-module/components/block-tools/selected-block-popover.js.map +0 -1
  513. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +0 -1
  514. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +0 -1
  515. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +0 -1
  516. package/build-module/components/inserter/block-patterns-filter.js.map +0 -1
  517. package/build-module/components/inserter/block-patterns-tab.js +0 -254
  518. package/build-module/components/inserter/block-patterns-tab.js.map +0 -1
  519. package/build-module/hooks/block-rename-ui.js +0 -157
  520. package/build-module/hooks/block-rename-ui.js.map +0 -1
  521. package/build-module/store/utils.js +0 -16
  522. package/build-module/store/utils.js.map +0 -1
  523. package/src/components/block-tools/selected-block-popover.js +0 -265
  524. package/src/components/inserter/block-patterns-tab.js +0 -448
  525. package/src/hooks/block-rename-ui.js +0 -226
  526. package/src/store/utils.js +0 -12
  527. /package/src/{hooks/block-rename-ui.scss → components/block-rename/style.scss} +0 -0
  528. /package/src/components/inserter/block-patterns-explorer/{sidebar.js → pattern-explorer-sidebar.js} +0 -0
@@ -7,7 +7,6 @@ import classnames from 'classnames';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import {
10
- __unstableCompositeItem as CompositeItem,
11
10
  Tooltip,
12
11
  DropdownMenu,
13
12
  MenuGroup,
@@ -17,6 +16,7 @@ import {
17
16
  Flex,
18
17
  FlexItem,
19
18
  Button,
19
+ privateApis as componentsPrivateApis,
20
20
  __experimentalVStack as VStack,
21
21
  } from '@wordpress/components';
22
22
  import { __, sprintf } from '@wordpress/i18n';
@@ -33,6 +33,7 @@ import { isBlobURL } from '@wordpress/blob';
33
33
  import InserterDraggableBlocks from '../../inserter-draggable-blocks';
34
34
  import { getBlockAndPreviewFromMedia } from './utils';
35
35
  import { store as blockEditorStore } from '../../../store';
36
+ import { unlock } from '../../../lock-unlock';
36
37
 
37
38
  const ALLOWED_MEDIA_TYPES = [ 'image' ];
38
39
  const MAXIMUM_TITLE_LENGTH = 25;
@@ -42,6 +43,8 @@ const MEDIA_OPTIONS_POPOVER_PROPS = {
42
43
  'block-editor-inserter__media-list__item-preview-options__popover',
43
44
  };
44
45
 
46
+ const { CompositeItemV2: CompositeItem } = unlock( componentsPrivateApis );
47
+
45
48
  function MediaPreviewOptions( { category, media } ) {
46
49
  if ( ! category.getReportUrl ) {
47
50
  return null;
@@ -113,7 +116,7 @@ function InsertExternalImageModal( { onClose, onSubmit } ) {
113
116
  );
114
117
  }
115
118
 
116
- export function MediaPreview( { media, onClick, composite, category } ) {
119
+ export function MediaPreview( { media, onClick, category } ) {
117
120
  const [ showExternalUploadModal, setShowExternalUploadModal ] =
118
121
  useState( false );
119
122
  const [ isHovered, setIsHovered ] = useState( false );
@@ -216,20 +219,22 @@ export function MediaPreview( { media, onClick, composite, category } ) {
216
219
  onDragStart={ onDragStart }
217
220
  onDragEnd={ onDragEnd }
218
221
  >
219
- <Tooltip text={ truncatedTitle || title }>
220
- { /* Adding `is-hovered` class to the wrapper element is needed
221
- because the options Popover is rendered outside of this node. */ }
222
- <div
223
- onMouseEnter={ onMouseEnter }
224
- onMouseLeave={ onMouseLeave }
225
- >
222
+ { /* Adding `is-hovered` class to the wrapper element is needed
223
+ because the options Popover is rendered outside of this node. */ }
224
+ <div
225
+ onMouseEnter={ onMouseEnter }
226
+ onMouseLeave={ onMouseLeave }
227
+ >
228
+ <Tooltip text={ truncatedTitle || title }>
226
229
  <CompositeItem
227
- role="option"
228
- as="div"
229
- { ...composite }
230
- className="block-editor-inserter__media-list__item"
230
+ render={
231
+ <div
232
+ aria-label={ title }
233
+ role="option"
234
+ className="block-editor-inserter__media-list__item"
235
+ />
236
+ }
231
237
  onClick={ () => onMediaInsert( block ) }
232
- aria-label={ title }
233
238
  >
234
239
  <div className="block-editor-inserter__media-list__item-preview">
235
240
  { preview }
@@ -240,14 +245,14 @@ export function MediaPreview( { media, onClick, composite, category } ) {
240
245
  ) }
241
246
  </div>
242
247
  </CompositeItem>
243
- { ! isInserting && (
244
- <MediaPreviewOptions
245
- category={ category }
246
- media={ media }
247
- />
248
- ) }
249
- </div>
250
- </Tooltip>
248
+ </Tooltip>
249
+ { ! isInserting && (
250
+ <MediaPreviewOptions
251
+ category={ category }
252
+ media={ media }
253
+ />
254
+ ) }
255
+ </div>
251
256
  </div>
252
257
  ) }
253
258
  </InserterDraggableBlocks>
@@ -24,9 +24,8 @@ import { useSelect } from '@wordpress/data';
24
24
  import Tips from './tips';
25
25
  import InserterPreviewPanel from './preview-panel';
26
26
  import BlockTypesTab from './block-types-tab';
27
- import BlockPatternsTabs, {
28
- BlockPatternsCategoryDialog,
29
- } from './block-patterns-tab';
27
+ import BlockPatternsTab from './block-patterns-tab';
28
+ import { PatternCategoryPreviewPanel } from './block-patterns-tab/pattern-category-preview-panel';
30
29
  import { MediaTab, MediaCategoryDialog, useMediaCategories } from './media-tab';
31
30
  import InserterSearchResults from './search-results';
32
31
  import useDebouncedInput from './hooks/use-debounced-input';
@@ -160,7 +159,7 @@ function InserterMenu(
160
159
 
161
160
  const patternsTab = useMemo(
162
161
  () => (
163
- <BlockPatternsTabs
162
+ <BlockPatternsTab
164
163
  rootClientId={ destinationRootClientId }
165
164
  onInsert={ onInsertPattern }
166
165
  onSelectCategory={ onClickPatternCategory }
@@ -297,7 +296,7 @@ function InserterMenu(
297
296
  <InserterPreviewPanel item={ hoveredItem } />
298
297
  ) }
299
298
  { showPatternPanel && (
300
- <BlockPatternsCategoryDialog
299
+ <PatternCategoryPreviewPanel
301
300
  rootClientId={ destinationRootClientId }
302
301
  onInsert={ onInsertPattern }
303
302
  onHover={ onHoverPattern }
@@ -1,26 +1,30 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { __unstableUseCompositeState as useCompositeState } from '@wordpress/components';
4
+ import { privateApis as componentsPrivateApis } from '@wordpress/components';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import InserterListboxContext from './context';
9
+ import { unlock } from '../../lock-unlock';
10
10
 
11
11
  export { default as InserterListboxGroup } from './group';
12
12
  export { default as InserterListboxRow } from './row';
13
13
  export { default as InserterListboxItem } from './item';
14
14
 
15
+ const { CompositeV2: Composite, useCompositeStoreV2: useCompositeStore } =
16
+ unlock( componentsPrivateApis );
17
+
15
18
  function InserterListbox( { children } ) {
16
- const compositeState = useCompositeState( {
17
- shift: true,
18
- wrap: 'horizontal',
19
+ const store = useCompositeStore( {
20
+ focusShift: true,
21
+ focusWrap: 'horizontal',
19
22
  } );
23
+
20
24
  return (
21
- <InserterListboxContext.Provider value={ compositeState }>
25
+ <Composite store={ store } render={ <></> }>
22
26
  { children }
23
- </InserterListboxContext.Provider>
27
+ </Composite>
24
28
  );
25
29
  }
26
30
 
@@ -3,32 +3,31 @@
3
3
  */
4
4
  import {
5
5
  Button,
6
- __unstableCompositeItem as CompositeItem,
6
+ privateApis as componentsPrivateApis,
7
7
  } from '@wordpress/components';
8
- import { forwardRef, useContext } from '@wordpress/element';
8
+ import { forwardRef } from '@wordpress/element';
9
9
 
10
10
  /**
11
11
  * Internal dependencies
12
12
  */
13
- import InserterListboxContext from './context';
13
+ import { unlock } from '../../lock-unlock';
14
+
15
+ const { CompositeItemV2: CompositeItem } = unlock( componentsPrivateApis );
14
16
 
15
17
  function InserterListboxItem(
16
18
  { isFirst, as: Component, children, ...props },
17
19
  ref
18
20
  ) {
19
- const state = useContext( InserterListboxContext );
20
21
  return (
21
22
  <CompositeItem
22
23
  ref={ ref }
23
- state={ state }
24
24
  role="option"
25
- // Use the CompositeItem `focusable` prop over Button's
26
- // isFocusable. The latter was shown to cause an issue
27
- // with tab order in the inserter list.
28
- focusable
25
+ // Use the CompositeItem `accessibleWhenDisabled` prop
26
+ // over Button's `isFocusable`. The latter was shown to
27
+ // cause an issue with tab order in the inserter list.
28
+ accessibleWhenDisabled
29
29
  { ...props }
30
- >
31
- { ( htmlProps ) => {
30
+ render={ ( htmlProps ) => {
32
31
  const propsWithTabIndex = {
33
32
  ...htmlProps,
34
33
  tabIndex: isFirst ? 0 : htmlProps.tabIndex,
@@ -45,7 +44,7 @@ function InserterListboxItem(
45
44
  }
46
45
  return <Button { ...propsWithTabIndex }>{ children }</Button>;
47
46
  } }
48
- </CompositeItem>
47
+ />
49
48
  );
50
49
  }
51
50
 
@@ -1,24 +1,18 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { forwardRef, useContext } from '@wordpress/element';
5
- import { __unstableCompositeGroup as CompositeGroup } from '@wordpress/components';
4
+ import { forwardRef } from '@wordpress/element';
5
+ import { privateApis as componentsPrivateApis } from '@wordpress/components';
6
6
 
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
10
- import InserterListboxContext from './context';
10
+ import { unlock } from '../../lock-unlock';
11
+
12
+ const { CompositeGroupV2: CompositeGroup } = unlock( componentsPrivateApis );
11
13
 
12
14
  function InserterListboxRow( props, ref ) {
13
- const state = useContext( InserterListboxContext );
14
- return (
15
- <CompositeGroup
16
- state={ state }
17
- role="presentation"
18
- ref={ ref }
19
- { ...props }
20
- />
21
- );
15
+ return <CompositeGroup role="presentation" ref={ ref } { ...props } />;
22
16
  }
23
17
 
24
18
  export default forwardRef( InserterListboxRow );
@@ -275,14 +275,14 @@ If passed, children are rendered after the input.
275
275
 
276
276
  ```jsx
277
277
  <LinkControlSearchInput>
278
- <div className="block-editor-link-control__search-actions">
278
+ <HStack justify="right">
279
279
  <Button
280
280
  type="submit"
281
281
  label={ __( 'Submit' ) }
282
282
  icon={ keyboardReturn }
283
283
  className="block-editor-link-control__search-submit"
284
284
  />
285
- </div>
285
+ </HStack>
286
286
  </LinkControlSearchInput>
287
287
  ```
288
288
 
@@ -6,7 +6,13 @@ import classnames from 'classnames';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { Button, Spinner, Notice, TextControl } from '@wordpress/components';
9
+ import {
10
+ Button,
11
+ Spinner,
12
+ Notice,
13
+ TextControl,
14
+ __experimentalHStack as HStack,
15
+ } from '@wordpress/components';
10
16
  import { __ } from '@wordpress/i18n';
11
17
  import { useRef, useState, useEffect } from '@wordpress/element';
12
18
  import { focus } from '@wordpress/dom';
@@ -467,7 +473,13 @@ function LinkControl( {
467
473
  ) }
468
474
 
469
475
  { showActions && (
470
- <div className="block-editor-link-control__search-actions">
476
+ <HStack
477
+ justify="right"
478
+ className="block-editor-link-control__search-actions"
479
+ >
480
+ <Button variant="tertiary" onClick={ handleCancel }>
481
+ { __( 'Cancel' ) }
482
+ </Button>
471
483
  <Button
472
484
  variant="primary"
473
485
  onClick={ isDisabled ? noop : handleSubmit }
@@ -476,10 +488,7 @@ function LinkControl( {
476
488
  >
477
489
  { __( 'Save' ) }
478
490
  </Button>
479
- <Button variant="tertiary" onClick={ handleCancel }>
480
- { __( 'Cancel' ) }
481
- </Button>
482
- </div>
491
+ </HStack>
483
492
  ) }
484
493
 
485
494
  { renderControlBottom && renderControlBottom() }
@@ -61,6 +61,10 @@ $preview-image-height: 140px;
61
61
  .block-editor-link-control__field {
62
62
  margin: $grid-unit-20; // allow margin collapse for vertical spacing.
63
63
 
64
+ .components-base-control__label {
65
+ color: $gray-900;
66
+ }
67
+
64
68
  input[type="text"],
65
69
  // Specificity overide of URLInput defaults.
66
70
  &.block-editor-url-input input[type="text"].block-editor-url-input__input {
@@ -92,12 +96,7 @@ $preview-image-height: 140px;
92
96
  }
93
97
 
94
98
  .block-editor-link-control__search-actions {
95
- display: flex;
96
- flex-direction: row-reverse; // put "Cancel" on the left but retain DOM order.
97
- justify-content: flex-start;
98
- gap: $grid-unit-10;
99
99
  padding: $grid-unit-10 $grid-unit-20 $grid-unit-20;
100
- order: 20;
101
100
  }
102
101
 
103
102
  .block-editor-link-control__search-results-wrapper {
@@ -419,6 +418,10 @@ $preview-image-height: 140px;
419
418
 
420
419
  .components-base-control__field {
421
420
  display: flex; // don't allow label to wrap under checkbox.
421
+
422
+ .components-checkbox-control__label {
423
+ color: $gray-900;
424
+ }
422
425
  }
423
426
 
424
427
  // Cancel left margin inherited from WP Admin Forms CSS.
@@ -19,6 +19,7 @@ import { SPACE, ENTER, BACKSPACE, DELETE } from '@wordpress/keycodes';
19
19
  import { useSelect, useDispatch } from '@wordpress/data';
20
20
  import { __unstableUseShortcutEventMatch as useShortcutEventMatch } from '@wordpress/keyboard-shortcuts';
21
21
  import { __, sprintf } from '@wordpress/i18n';
22
+ import isShallowEqual from '@wordpress/is-shallow-equal';
22
23
 
23
24
  /**
24
25
  * Internal dependencies
@@ -30,6 +31,7 @@ import ListViewExpander from './expander';
30
31
  import { useBlockLock } from '../block-lock';
31
32
  import { store as blockEditorStore } from '../../store';
32
33
  import useListViewImages from './use-list-view-images';
34
+ import { useListViewContext } from './context';
33
35
 
34
36
  function ListViewBlockSelectButton(
35
37
  {
@@ -64,10 +66,12 @@ function ListViewBlockSelectButton(
64
66
  getBlocksByClientId,
65
67
  canRemoveBlocks,
66
68
  } = useSelect( blockEditorStore );
67
- const { duplicateBlocks, removeBlocks } = useDispatch( blockEditorStore );
69
+ const { duplicateBlocks, multiSelect, removeBlocks } =
70
+ useDispatch( blockEditorStore );
68
71
  const isMatch = useShortcutEventMatch();
69
72
  const isSticky = blockInformation?.positionType === 'sticky';
70
73
  const images = useListViewImages( { clientId, isExpanded } );
74
+ const { rootClientId } = useListViewContext();
71
75
 
72
76
  const positionLabel = blockInformation?.positionLabel
73
77
  ? sprintf(
@@ -183,6 +187,45 @@ function ListViewBlockSelectButton(
183
187
  updateFocusAndSelection( updatedBlocks[ 0 ], false );
184
188
  }
185
189
  }
190
+ } else if ( isMatch( 'core/block-editor/select-all', event ) ) {
191
+ if ( event.defaultPrevented ) {
192
+ return;
193
+ }
194
+ event.preventDefault();
195
+
196
+ const { firstBlockRootClientId, selectedBlockClientIds } =
197
+ getBlocksToUpdate();
198
+ const blockClientIds = getBlockOrder( firstBlockRootClientId );
199
+ if ( ! blockClientIds.length ) {
200
+ return;
201
+ }
202
+
203
+ // If we have selected all sibling nested blocks, try selecting up a level.
204
+ // This is a similar implementation to that used by `useSelectAll`.
205
+ // `isShallowEqual` is used for the list view instead of a length check,
206
+ // as the array of siblings of the currently focused block may be a different
207
+ // set of blocks from the current block selection if the user is focused
208
+ // on a different part of the list view from the block selection.
209
+ if ( isShallowEqual( selectedBlockClientIds, blockClientIds ) ) {
210
+ // Only select up a level if the first block is not the root block.
211
+ // This ensures that the block selection can't break out of the root block
212
+ // used by the list view, if the list view is only showing a partial hierarchy.
213
+ if (
214
+ firstBlockRootClientId &&
215
+ firstBlockRootClientId !== rootClientId
216
+ ) {
217
+ updateFocusAndSelection( firstBlockRootClientId, true );
218
+ return;
219
+ }
220
+ }
221
+
222
+ // Select all while passing `null` to skip focusing to the editor canvas,
223
+ // and retain focus within the list view.
224
+ multiSelect(
225
+ blockClientIds[ 0 ],
226
+ blockClientIds[ blockClientIds.length - 1 ],
227
+ null
228
+ );
186
229
  }
187
230
  }
188
231
 
@@ -69,17 +69,17 @@ function ListViewBlock( {
69
69
  const blockTitle =
70
70
  blockInformation?.name || blockInformation?.title || __( 'Untitled' );
71
71
 
72
- const block = useSelect(
73
- ( select ) => select( blockEditorStore ).getBlock( clientId ),
74
- [ clientId ]
75
- );
76
- const blockName = useSelect(
77
- ( select ) => select( blockEditorStore ).getBlockName( clientId ),
78
- [ clientId ]
79
- );
80
- const blockEditingMode = useSelect(
81
- ( select ) =>
82
- select( blockEditorStore ).getBlockEditingMode( clientId ),
72
+ const { block, blockName, blockEditingMode } = useSelect(
73
+ ( select ) => {
74
+ const { getBlock, getBlockName, getBlockEditingMode } =
75
+ select( blockEditorStore );
76
+
77
+ return {
78
+ block: getBlock( clientId ),
79
+ blockName: getBlockName( clientId ),
80
+ blockEditingMode: getBlockEditingMode( clientId ),
81
+ };
82
+ },
83
83
  [ clientId ]
84
84
  );
85
85
 
@@ -222,6 +222,7 @@ function ListViewComponent(
222
222
  insertedBlock,
223
223
  setInsertedBlock,
224
224
  treeGridElementRef: elementRef,
225
+ rootClientId,
225
226
  } ),
226
227
  [
227
228
  draggedClientIds,
@@ -233,6 +234,7 @@ function ListViewComponent(
233
234
  AdditionalBlockContent,
234
235
  insertedBlock,
235
236
  setInsertedBlock,
237
+ rootClientId,
236
238
  ]
237
239
  );
238
240
 
@@ -27,12 +27,6 @@ export default function useListViewExpandSelectedItem( {
27
27
  [ firstSelectedBlockClientId ]
28
28
  );
29
29
 
30
- const parentClientIds =
31
- Array.isArray( selectedBlockParentClientIds ) &&
32
- selectedBlockParentClientIds.length
33
- ? selectedBlockParentClientIds
34
- : null;
35
-
36
30
  // Expand tree when a block is selected.
37
31
  useEffect( () => {
38
32
  // If the selectedTreeId is the same as the selected block,
@@ -42,7 +36,7 @@ export default function useListViewExpandSelectedItem( {
42
36
  }
43
37
 
44
38
  // If the selected block has parents, get the top-level parent.
45
- if ( parentClientIds ) {
39
+ if ( selectedBlockParentClientIds?.length ) {
46
40
  // If the selected block has parents,
47
41
  // expand the tree branch.
48
42
  setExpandedState( {
@@ -50,7 +44,12 @@ export default function useListViewExpandSelectedItem( {
50
44
  clientIds: selectedBlockParentClientIds,
51
45
  } );
52
46
  }
53
- }, [ firstSelectedBlockClientId ] );
47
+ }, [
48
+ firstSelectedBlockClientId,
49
+ selectedBlockParentClientIds,
50
+ selectedTreeId,
51
+ setExpandedState,
52
+ ] );
54
53
 
55
54
  return {
56
55
  setSelectedTreeId,
@@ -17,6 +17,7 @@
17
17
  &.has-siblings {
18
18
  border-top: $border-width solid $gray-900;
19
19
  margin-top: $grid-unit-10;
20
+ padding-bottom: $grid-unit-10;
20
21
  }
21
22
 
22
23
  .block-editor-media-replace-flow__image-url-label {
@@ -55,8 +56,7 @@
55
56
  }
56
57
 
57
58
  .block-editor-link-control__search-actions {
58
- top: 0; // cancel default top positioning
59
- right: 4px;
59
+ padding: $grid-unit-10 0 0;
60
60
  }
61
61
  }
62
62
  }