@wordpress/block-editor 14.5.0 → 14.7.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 (541) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +0 -8
  3. package/build/autocompleters/block.js +13 -5
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/components/block-canvas/index.js +10 -0
  6. package/build/components/block-canvas/index.js.map +1 -1
  7. package/build/components/block-card/index.js +2 -2
  8. package/build/components/block-card/index.js.map +1 -1
  9. package/build/components/block-full-height-alignment-control/index.js +1 -1
  10. package/build/components/block-full-height-alignment-control/index.js.map +1 -1
  11. package/build/components/block-list/block.js +15 -29
  12. package/build/components/block-list/block.js.map +1 -1
  13. package/build/components/block-list/block.native.js +1 -7
  14. package/build/components/block-list/block.native.js.map +1 -1
  15. package/build/components/block-list/index.js +5 -5
  16. package/build/components/block-list/index.js.map +1 -1
  17. package/build/components/block-list/use-block-props/index.js +1 -2
  18. package/build/components/block-list/use-block-props/index.js.map +1 -1
  19. package/build/components/block-list/use-block-props/use-focus-first-element.js +4 -3
  20. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  21. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +3 -6
  22. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  23. package/build/components/block-list/use-in-between-inserter.js +1 -1
  24. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  25. package/build/components/block-patterns-list/index.js +23 -26
  26. package/build/components/block-patterns-list/index.js.map +1 -1
  27. package/build/components/block-patterns-paging/index.js +1 -1
  28. package/build/components/block-patterns-paging/index.js.map +1 -1
  29. package/build/components/block-popover/index.js +3 -46
  30. package/build/components/block-popover/index.js.map +1 -1
  31. package/build/components/block-preview/async.js +51 -0
  32. package/build/components/block-preview/async.js.map +1 -0
  33. package/build/components/block-preview/index.js +6 -3
  34. package/build/components/block-preview/index.js.map +1 -1
  35. package/build/components/block-settings-menu/block-settings-dropdown.js +5 -0
  36. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  37. package/build/components/block-settings-menu/index.js +4 -3
  38. package/build/components/block-settings-menu/index.js.map +1 -1
  39. package/build/components/block-toolbar/change-design.js +119 -0
  40. package/build/components/block-toolbar/change-design.js.map +1 -0
  41. package/build/components/block-toolbar/index.js +19 -7
  42. package/build/components/block-toolbar/index.js.map +1 -1
  43. package/build/components/block-tools/index.js +16 -19
  44. package/build/components/block-tools/index.js.map +1 -1
  45. package/build/components/block-tools/insertion-point.js +4 -3
  46. package/build/components/block-tools/insertion-point.js.map +1 -1
  47. package/build/components/block-tools/use-block-toolbar-popover-props.js +1 -1
  48. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  49. package/build/components/block-tools/use-show-block-tools.js +7 -10
  50. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  51. package/build/components/block-tools/zoom-out-mode-inserters.js +20 -29
  52. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  53. package/build/components/block-variation-transforms/index.js +2 -2
  54. package/build/components/block-variation-transforms/index.js.map +1 -1
  55. package/build/components/block-vertical-alignment-control/ui.js +6 -10
  56. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  57. package/build/components/border-radius-control/linked-button.js +7 -10
  58. package/build/components/border-radius-control/linked-button.js.map +1 -1
  59. package/build/components/collab/block-comment-icon-slot.js +18 -0
  60. package/build/components/collab/block-comment-icon-slot.js.map +1 -0
  61. package/build/components/collab/block-comment-icon-toolbar-slot.js +18 -0
  62. package/build/components/collab/block-comment-icon-toolbar-slot.js.map +1 -0
  63. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +7 -1
  64. package/build/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  65. package/build/components/convert-to-group-buttons/toolbar.js +4 -4
  66. package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
  67. package/build/components/global-styles/color-panel.js +1 -4
  68. package/build/components/global-styles/color-panel.js.map +1 -1
  69. package/build/components/global-styles/dimensions-panel.js +26 -14
  70. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  71. package/build/components/global-styles/use-global-styles-context.native.js +6 -0
  72. package/build/components/global-styles/use-global-styles-context.native.js.map +1 -1
  73. package/build/components/iframe/get-compatibility-styles.js +4 -4
  74. package/build/components/iframe/get-compatibility-styles.js.map +1 -1
  75. package/build/components/iframe/index.js +33 -22
  76. package/build/components/iframe/index.js.map +1 -1
  77. package/build/components/image-size-control/index.js +61 -20
  78. package/build/components/image-size-control/index.js.map +1 -1
  79. package/build/components/inner-blocks/index.js +9 -5
  80. package/build/components/inner-blocks/index.js.map +1 -1
  81. package/build/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
  82. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  83. package/build/components/inserter/block-patterns-tab/index.js +1 -2
  84. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  85. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +5 -3
  86. package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  87. package/build/components/inserter/block-patterns-tab/patterns-filter.js +1 -1
  88. package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  89. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js +3 -0
  90. package/build/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  91. package/build/components/inserter/block-patterns-tab/utils.js +5 -1
  92. package/build/components/inserter/block-patterns-tab/utils.js.map +1 -1
  93. package/build/components/inserter/category-tabs/index.js +15 -2
  94. package/build/components/inserter/category-tabs/index.js.map +1 -1
  95. package/build/components/inserter/hooks/use-block-types-state.js +1 -1
  96. package/build/components/inserter/hooks/use-block-types-state.js.map +1 -1
  97. package/build/components/inserter/hooks/use-patterns-paging.js +0 -5
  98. package/build/components/inserter/hooks/use-patterns-paging.js.map +1 -1
  99. package/build/components/inserter/menu.js +4 -2
  100. package/build/components/inserter/menu.js.map +1 -1
  101. package/build/components/inserter/search-results.js +0 -2
  102. package/build/components/inserter/search-results.js.map +1 -1
  103. package/build/components/inserter-button/index.native.js +1 -1
  104. package/build/components/inserter-button/index.native.js.map +1 -1
  105. package/build/components/inspector-controls-tabs/index.js +0 -2
  106. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  107. package/build/components/inspector-controls-tabs/utils.js +3 -6
  108. package/build/components/inspector-controls-tabs/utils.js.map +1 -1
  109. package/build/components/link-control/link-preview.js +12 -9
  110. package/build/components/link-control/link-preview.js.map +1 -1
  111. package/build/components/list-view/appender.js +4 -3
  112. package/build/components/list-view/appender.js.map +1 -1
  113. package/build/components/list-view/branch.js +6 -5
  114. package/build/components/list-view/branch.js.map +1 -1
  115. package/build/components/list-view/index.js +1 -2
  116. package/build/components/list-view/index.js.map +1 -1
  117. package/build/components/media-placeholder/index.js +4 -4
  118. package/build/components/media-placeholder/index.js.map +1 -1
  119. package/build/components/provider/index.js +1 -1
  120. package/build/components/provider/index.js.map +1 -1
  121. package/build/components/rich-text/event-listeners/index.js +3 -1
  122. package/build/components/rich-text/event-listeners/index.js.map +1 -1
  123. package/build/components/rich-text/index.js +1 -1
  124. package/build/components/rich-text/index.js.map +1 -1
  125. package/build/components/rich-text/index.native.js +2 -6
  126. package/build/components/rich-text/index.native.js.map +1 -1
  127. package/build/components/spacing-sizes-control/index.js +2 -2
  128. package/build/components/spacing-sizes-control/index.js.map +1 -1
  129. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +3 -3
  130. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  131. package/build/components/spacing-sizes-control/linked-button.js +1 -5
  132. package/build/components/spacing-sizes-control/linked-button.js.map +1 -1
  133. package/build/components/tabbed-sidebar/index.js +1 -1
  134. package/build/components/tabbed-sidebar/index.js.map +1 -1
  135. package/build/components/tool-selector/index.js +1 -4
  136. package/build/components/tool-selector/index.js.map +1 -1
  137. package/build/components/url-input/index.js +4 -2
  138. package/build/components/url-input/index.js.map +1 -1
  139. package/build/components/use-block-commands/index.js +6 -7
  140. package/build/components/use-block-commands/index.js.map +1 -1
  141. package/build/components/use-block-drop-zone/index.js +5 -5
  142. package/build/components/use-block-drop-zone/index.js.map +1 -1
  143. package/build/components/use-block-drop-zone/index.native.js +0 -1
  144. package/build/components/use-block-drop-zone/index.native.js.map +1 -1
  145. package/build/components/use-moving-animation/index.js +1 -3
  146. package/build/components/use-moving-animation/index.js.map +1 -1
  147. package/build/components/use-settings/index.js +1 -3
  148. package/build/components/use-settings/index.js.map +1 -1
  149. package/build/components/writing-flow/index.js +5 -3
  150. package/build/components/writing-flow/index.js.map +1 -1
  151. package/build/components/writing-flow/use-tab-nav.js +2 -3
  152. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  153. package/build/hooks/block-bindings.js +19 -8
  154. package/build/hooks/block-bindings.js.map +1 -1
  155. package/build/hooks/contrast-checker.js +0 -1
  156. package/build/hooks/contrast-checker.js.map +1 -1
  157. package/build/hooks/duotone.js +2 -2
  158. package/build/hooks/duotone.js.map +1 -1
  159. package/build/hooks/font-family.js +1 -1
  160. package/build/hooks/font-family.js.map +1 -1
  161. package/build/hooks/style.js +4 -1
  162. package/build/hooks/style.js.map +1 -1
  163. package/build/hooks/supports.js +6 -6
  164. package/build/hooks/supports.js.map +1 -1
  165. package/build/hooks/typography.js +5 -5
  166. package/build/hooks/typography.js.map +1 -1
  167. package/build/hooks/use-zoom-out.js +13 -22
  168. package/build/hooks/use-zoom-out.js.map +1 -1
  169. package/build/hooks/utils.js +2 -2
  170. package/build/hooks/utils.js.map +1 -1
  171. package/build/index.js +0 -7
  172. package/build/index.js.map +1 -1
  173. package/build/lock-unlock.js.map +1 -1
  174. package/build/private-apis.js +6 -3
  175. package/build/private-apis.js.map +1 -1
  176. package/build/store/actions.js +2 -33
  177. package/build/store/actions.js.map +1 -1
  178. package/build/store/defaults.js +1 -1
  179. package/build/store/defaults.js.map +1 -1
  180. package/build/store/private-actions.js +57 -8
  181. package/build/store/private-actions.js.map +1 -1
  182. package/build/store/private-selectors.js +10 -22
  183. package/build/store/private-selectors.js.map +1 -1
  184. package/build/store/reducer.js +16 -6
  185. package/build/store/reducer.js.map +1 -1
  186. package/build/store/selectors.js +53 -15
  187. package/build/store/selectors.js.map +1 -1
  188. package/build/store/utils.js +5 -4
  189. package/build/store/utils.js.map +1 -1
  190. package/build/utils/dom.js +37 -17
  191. package/build/utils/dom.js.map +1 -1
  192. package/build/utils/get-font-styles-and-weights.js +1 -1
  193. package/build/utils/get-font-styles-and-weights.js.map +1 -1
  194. package/build/utils/transform-styles/index.js +4 -3
  195. package/build/utils/transform-styles/index.js.map +1 -1
  196. package/build-module/autocompleters/block.js +14 -6
  197. package/build-module/autocompleters/block.js.map +1 -1
  198. package/build-module/components/block-canvas/index.js +11 -1
  199. package/build-module/components/block-canvas/index.js.map +1 -1
  200. package/build-module/components/block-card/index.js +3 -3
  201. package/build-module/components/block-card/index.js.map +1 -1
  202. package/build-module/components/block-full-height-alignment-control/index.js +1 -1
  203. package/build-module/components/block-full-height-alignment-control/index.js.map +1 -1
  204. package/build-module/components/block-list/block.js +16 -28
  205. package/build-module/components/block-list/block.js.map +1 -1
  206. package/build-module/components/block-list/block.native.js +1 -7
  207. package/build-module/components/block-list/block.native.js.map +1 -1
  208. package/build-module/components/block-list/index.js +5 -5
  209. package/build-module/components/block-list/index.js.map +1 -1
  210. package/build-module/components/block-list/use-block-props/index.js +1 -2
  211. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  212. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +4 -3
  213. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  214. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +3 -6
  215. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  216. package/build-module/components/block-list/use-in-between-inserter.js +1 -1
  217. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  218. package/build-module/components/block-patterns-list/index.js +23 -26
  219. package/build-module/components/block-patterns-list/index.js.map +1 -1
  220. package/build-module/components/block-patterns-paging/index.js +1 -1
  221. package/build-module/components/block-patterns-paging/index.js.map +1 -1
  222. package/build-module/components/block-popover/index.js +4 -47
  223. package/build-module/components/block-popover/index.js.map +1 -1
  224. package/build-module/components/block-preview/async.js +44 -0
  225. package/build-module/components/block-preview/async.js.map +1 -0
  226. package/build-module/components/block-preview/index.js +6 -3
  227. package/build-module/components/block-preview/index.js.map +1 -1
  228. package/build-module/components/block-settings-menu/block-settings-dropdown.js +5 -0
  229. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  230. package/build-module/components/block-settings-menu/index.js +5 -4
  231. package/build-module/components/block-settings-menu/index.js.map +1 -1
  232. package/build-module/components/block-toolbar/change-design.js +111 -0
  233. package/build-module/components/block-toolbar/change-design.js.map +1 -0
  234. package/build-module/components/block-toolbar/index.js +19 -7
  235. package/build-module/components/block-toolbar/index.js.map +1 -1
  236. package/build-module/components/block-tools/index.js +17 -20
  237. package/build-module/components/block-tools/index.js.map +1 -1
  238. package/build-module/components/block-tools/insertion-point.js +4 -3
  239. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  240. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +2 -2
  241. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  242. package/build-module/components/block-tools/use-show-block-tools.js +7 -10
  243. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  244. package/build-module/components/block-tools/zoom-out-mode-inserters.js +20 -29
  245. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  246. package/build-module/components/block-variation-transforms/index.js +2 -2
  247. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  248. package/build-module/components/block-vertical-alignment-control/ui.js +6 -10
  249. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  250. package/build-module/components/border-radius-control/linked-button.js +8 -11
  251. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  252. package/build-module/components/collab/block-comment-icon-slot.js +11 -0
  253. package/build-module/components/collab/block-comment-icon-slot.js.map +1 -0
  254. package/build-module/components/collab/block-comment-icon-toolbar-slot.js +11 -0
  255. package/build-module/components/collab/block-comment-icon-toolbar-slot.js.map +1 -0
  256. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +7 -1
  257. package/build-module/components/colors-gradients/use-multiple-origin-colors-and-gradients.js.map +1 -1
  258. package/build-module/components/convert-to-group-buttons/toolbar.js +4 -4
  259. package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
  260. package/build-module/components/global-styles/color-panel.js +2 -5
  261. package/build-module/components/global-styles/color-panel.js.map +1 -1
  262. package/build-module/components/global-styles/dimensions-panel.js +26 -14
  263. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  264. package/build-module/components/global-styles/use-global-styles-context.native.js +6 -0
  265. package/build-module/components/global-styles/use-global-styles-context.native.js.map +1 -1
  266. package/build-module/components/iframe/get-compatibility-styles.js +4 -4
  267. package/build-module/components/iframe/get-compatibility-styles.js.map +1 -1
  268. package/build-module/components/iframe/index.js +33 -22
  269. package/build-module/components/iframe/index.js.map +1 -1
  270. package/build-module/components/image-size-control/index.js +62 -21
  271. package/build-module/components/image-size-control/index.js.map +1 -1
  272. package/build-module/components/inner-blocks/index.js +9 -5
  273. package/build-module/components/inner-blocks/index.js.map +1 -1
  274. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +2 -2
  275. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  276. package/build-module/components/inserter/block-patterns-tab/index.js +1 -2
  277. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  278. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +6 -4
  279. package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
  280. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +1 -1
  281. package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
  282. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js +4 -1
  283. package/build-module/components/inserter/block-patterns-tab/use-pattern-categories.js.map +1 -1
  284. package/build-module/components/inserter/block-patterns-tab/utils.js +4 -0
  285. package/build-module/components/inserter/block-patterns-tab/utils.js.map +1 -1
  286. package/build-module/components/inserter/category-tabs/index.js +15 -2
  287. package/build-module/components/inserter/category-tabs/index.js.map +1 -1
  288. package/build-module/components/inserter/hooks/use-block-types-state.js +1 -1
  289. package/build-module/components/inserter/hooks/use-block-types-state.js.map +1 -1
  290. package/build-module/components/inserter/hooks/use-patterns-paging.js +1 -6
  291. package/build-module/components/inserter/hooks/use-patterns-paging.js.map +1 -1
  292. package/build-module/components/inserter/menu.js +5 -3
  293. package/build-module/components/inserter/menu.js.map +1 -1
  294. package/build-module/components/inserter/search-results.js +0 -2
  295. package/build-module/components/inserter/search-results.js.map +1 -1
  296. package/build-module/components/inserter-button/index.native.js +1 -1
  297. package/build-module/components/inserter-button/index.native.js.map +1 -1
  298. package/build-module/components/inspector-controls-tabs/index.js +0 -2
  299. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  300. package/build-module/components/inspector-controls-tabs/utils.js +3 -6
  301. package/build-module/components/inspector-controls-tabs/utils.js.map +1 -1
  302. package/build-module/components/link-control/link-preview.js +13 -10
  303. package/build-module/components/link-control/link-preview.js.map +1 -1
  304. package/build-module/components/list-view/appender.js +4 -3
  305. package/build-module/components/list-view/appender.js.map +1 -1
  306. package/build-module/components/list-view/branch.js +7 -6
  307. package/build-module/components/list-view/branch.js.map +1 -1
  308. package/build-module/components/list-view/index.js +1 -2
  309. package/build-module/components/list-view/index.js.map +1 -1
  310. package/build-module/components/media-placeholder/index.js +4 -4
  311. package/build-module/components/media-placeholder/index.js.map +1 -1
  312. package/build-module/components/provider/index.js +1 -1
  313. package/build-module/components/provider/index.js.map +1 -1
  314. package/build-module/components/rich-text/event-listeners/index.js +4 -2
  315. package/build-module/components/rich-text/event-listeners/index.js.map +1 -1
  316. package/build-module/components/rich-text/index.js +1 -1
  317. package/build-module/components/rich-text/index.js.map +1 -1
  318. package/build-module/components/rich-text/index.native.js +2 -6
  319. package/build-module/components/rich-text/index.native.js.map +1 -1
  320. package/build-module/components/spacing-sizes-control/index.js +3 -3
  321. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  322. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -4
  323. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  324. package/build-module/components/spacing-sizes-control/linked-button.js +2 -6
  325. package/build-module/components/spacing-sizes-control/linked-button.js.map +1 -1
  326. package/build-module/components/tabbed-sidebar/index.js +1 -1
  327. package/build-module/components/tabbed-sidebar/index.js.map +1 -1
  328. package/build-module/components/tool-selector/index.js +1 -4
  329. package/build-module/components/tool-selector/index.js.map +1 -1
  330. package/build-module/components/url-input/index.js +4 -2
  331. package/build-module/components/url-input/index.js.map +1 -1
  332. package/build-module/components/use-block-commands/index.js +5 -5
  333. package/build-module/components/use-block-commands/index.js.map +1 -1
  334. package/build-module/components/use-block-drop-zone/index.js +5 -5
  335. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  336. package/build-module/components/use-block-drop-zone/index.native.js +0 -1
  337. package/build-module/components/use-block-drop-zone/index.native.js.map +1 -1
  338. package/build-module/components/use-moving-animation/index.js +1 -3
  339. package/build-module/components/use-moving-animation/index.js.map +1 -1
  340. package/build-module/components/use-settings/index.js +1 -3
  341. package/build-module/components/use-settings/index.js.map +1 -1
  342. package/build-module/components/writing-flow/index.js +5 -3
  343. package/build-module/components/writing-flow/index.js.map +1 -1
  344. package/build-module/components/writing-flow/use-tab-nav.js +2 -3
  345. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  346. package/build-module/hooks/block-bindings.js +20 -9
  347. package/build-module/hooks/block-bindings.js.map +1 -1
  348. package/build-module/hooks/contrast-checker.js +0 -1
  349. package/build-module/hooks/contrast-checker.js.map +1 -1
  350. package/build-module/hooks/duotone.js +2 -2
  351. package/build-module/hooks/duotone.js.map +1 -1
  352. package/build-module/hooks/font-family.js +1 -1
  353. package/build-module/hooks/font-family.js.map +1 -1
  354. package/build-module/hooks/style.js +4 -1
  355. package/build-module/hooks/style.js.map +1 -1
  356. package/build-module/hooks/supports.js +6 -6
  357. package/build-module/hooks/supports.js.map +1 -1
  358. package/build-module/hooks/typography.js +5 -5
  359. package/build-module/hooks/typography.js.map +1 -1
  360. package/build-module/hooks/use-zoom-out.js +15 -23
  361. package/build-module/hooks/use-zoom-out.js.map +1 -1
  362. package/build-module/hooks/utils.js +2 -2
  363. package/build-module/hooks/utils.js.map +1 -1
  364. package/build-module/index.js +1 -1
  365. package/build-module/index.js.map +1 -1
  366. package/build-module/lock-unlock.js.map +1 -1
  367. package/build-module/private-apis.js +7 -5
  368. package/build-module/private-apis.js.map +1 -1
  369. package/build-module/store/actions.js +2 -33
  370. package/build-module/store/actions.js.map +1 -1
  371. package/build-module/store/defaults.js +1 -1
  372. package/build-module/store/defaults.js.map +1 -1
  373. package/build-module/store/private-actions.js +54 -7
  374. package/build-module/store/private-actions.js.map +1 -1
  375. package/build-module/store/private-selectors.js +10 -21
  376. package/build-module/store/private-selectors.js.map +1 -1
  377. package/build-module/store/reducer.js +16 -6
  378. package/build-module/store/reducer.js.map +1 -1
  379. package/build-module/store/selectors.js +54 -16
  380. package/build-module/store/selectors.js.map +1 -1
  381. package/build-module/store/utils.js +3 -3
  382. package/build-module/store/utils.js.map +1 -1
  383. package/build-module/utils/dom.js +35 -16
  384. package/build-module/utils/dom.js.map +1 -1
  385. package/build-module/utils/get-font-styles-and-weights.js +2 -2
  386. package/build-module/utils/get-font-styles-and-weights.js.map +1 -1
  387. package/build-module/utils/transform-styles/index.js +3 -2
  388. package/build-module/utils/transform-styles/index.js.map +1 -1
  389. package/build-style/content-rtl.css +16 -10
  390. package/build-style/content.css +16 -10
  391. package/build-style/style-rtl.css +47 -25
  392. package/build-style/style.css +47 -25
  393. package/build-types/utils/dom.d.ts +7 -9
  394. package/build-types/utils/dom.d.ts.map +1 -1
  395. package/package.json +34 -32
  396. package/src/autocompleters/block.js +16 -7
  397. package/src/components/block-canvas/index.js +17 -1
  398. package/src/components/block-canvas/style.scss +3 -1
  399. package/src/components/block-card/index.js +3 -3
  400. package/src/components/block-full-height-alignment-control/index.js +1 -1
  401. package/src/components/block-inspector/style.scss +2 -7
  402. package/src/components/block-list/block.js +29 -50
  403. package/src/components/block-list/block.native.js +0 -4
  404. package/src/components/block-list/content.scss +1 -1
  405. package/src/components/block-list/index.js +4 -4
  406. package/src/components/block-list/use-block-props/index.js +0 -2
  407. package/src/components/block-list/use-block-props/use-focus-first-element.js +5 -3
  408. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +7 -20
  409. package/src/components/block-list/use-in-between-inserter.js +1 -1
  410. package/src/components/block-patterns-list/README.md +8 -8
  411. package/src/components/block-patterns-list/index.js +35 -51
  412. package/src/components/block-patterns-list/stories/fixtures.js +834 -0
  413. package/src/components/block-patterns-list/stories/index.story.js +64 -0
  414. package/src/components/block-patterns-list/style.scss +2 -0
  415. package/src/components/block-patterns-paging/index.js +1 -1
  416. package/src/components/block-popover/index.js +4 -66
  417. package/src/components/block-preview/async.js +43 -0
  418. package/src/components/block-preview/index.js +8 -3
  419. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -0
  420. package/src/components/block-settings-menu/index.js +3 -0
  421. package/src/components/block-toolbar/change-design.js +127 -0
  422. package/src/components/block-toolbar/index.js +25 -8
  423. package/src/components/block-toolbar/style.scss +16 -0
  424. package/src/components/block-tools/index.js +30 -27
  425. package/src/components/block-tools/insertion-point.js +4 -3
  426. package/src/components/block-tools/style.scss +12 -20
  427. package/src/components/block-tools/use-block-toolbar-popover-props.js +2 -2
  428. package/src/components/block-tools/use-show-block-tools.js +3 -14
  429. package/src/components/block-tools/zoom-out-mode-inserters.js +25 -40
  430. package/src/components/block-variation-transforms/index.js +2 -2
  431. package/src/components/block-vertical-alignment-control/ui.js +11 -15
  432. package/src/components/border-radius-control/linked-button.js +9 -11
  433. package/src/components/collab/block-comment-icon-slot.js +12 -0
  434. package/src/components/collab/block-comment-icon-toolbar-slot.js +12 -0
  435. package/src/components/colors-gradients/use-multiple-origin-colors-and-gradients.js +7 -1
  436. package/src/components/convert-to-group-buttons/toolbar.js +4 -4
  437. package/src/components/default-block-appender/content.scss +13 -19
  438. package/src/components/global-styles/color-panel.js +2 -10
  439. package/src/components/global-styles/dimensions-panel.js +22 -16
  440. package/src/components/global-styles/test/use-global-styles-context.native.js +1 -0
  441. package/src/components/global-styles/use-global-styles-context.native.js +6 -0
  442. package/src/components/iframe/content.scss +4 -9
  443. package/src/components/iframe/get-compatibility-styles.js +4 -9
  444. package/src/components/iframe/index.js +48 -34
  445. package/src/components/iframe/style.scss +2 -3
  446. package/src/components/image-size-control/index.js +74 -43
  447. package/src/components/image-size-control/test/index.js +5 -63
  448. package/src/components/inner-blocks/index.js +12 -6
  449. package/src/components/inserter/block-patterns-explorer/pattern-list.js +3 -6
  450. package/src/components/inserter/block-patterns-tab/index.js +0 -1
  451. package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +10 -4
  452. package/src/components/inserter/block-patterns-tab/patterns-filter.js +1 -1
  453. package/src/components/inserter/block-patterns-tab/use-pattern-categories.js +8 -0
  454. package/src/components/inserter/block-patterns-tab/utils.js +5 -0
  455. package/src/components/inserter/category-tabs/index.js +16 -2
  456. package/src/components/inserter/hooks/use-block-types-state.js +6 -1
  457. package/src/components/inserter/hooks/use-patterns-paging.js +1 -6
  458. package/src/components/inserter/menu.js +6 -4
  459. package/src/components/inserter/search-results.js +0 -6
  460. package/src/components/inserter/style.scss +13 -0
  461. package/src/components/inserter-button/index.native.js +1 -1
  462. package/src/components/inspector-controls-tabs/index.js +1 -6
  463. package/src/components/inspector-controls-tabs/utils.js +0 -3
  464. package/src/components/link-control/link-preview.js +15 -8
  465. package/src/components/link-control/test/index.js +63 -24
  466. package/src/components/list-view/appender.js +5 -6
  467. package/src/components/list-view/branch.js +8 -6
  468. package/src/components/list-view/index.js +1 -2
  469. package/src/components/media-placeholder/index.js +4 -4
  470. package/src/components/provider/index.js +1 -3
  471. package/src/components/provider/test/experimental-provider.js +43 -1
  472. package/src/components/rich-text/event-listeners/index.js +4 -2
  473. package/src/components/rich-text/index.js +8 -1
  474. package/src/components/rich-text/index.native.js +0 -2
  475. package/src/components/spacing-sizes-control/index.js +3 -3
  476. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -4
  477. package/src/components/spacing-sizes-control/linked-button.js +2 -12
  478. package/src/components/tabbed-sidebar/index.js +1 -1
  479. package/src/components/tabbed-sidebar/style.scss +1 -1
  480. package/src/components/tool-selector/index.js +1 -5
  481. package/src/components/url-input/index.js +4 -5
  482. package/src/components/use-block-commands/index.js +245 -234
  483. package/src/components/use-block-drop-zone/index.js +5 -5
  484. package/src/components/use-block-drop-zone/index.native.js +0 -1
  485. package/src/components/use-moving-animation/index.js +0 -1
  486. package/src/components/use-settings/index.js +0 -1
  487. package/src/components/writing-flow/index.js +5 -3
  488. package/src/components/writing-flow/use-tab-nav.js +1 -2
  489. package/src/hooks/block-bindings.js +48 -31
  490. package/src/hooks/contrast-checker.js +0 -1
  491. package/src/hooks/duotone.js +2 -2
  492. package/src/hooks/font-family.js +1 -1
  493. package/src/hooks/style.js +7 -3
  494. package/src/hooks/supports.js +6 -6
  495. package/src/hooks/typography.js +5 -5
  496. package/src/hooks/use-zoom-out.js +14 -34
  497. package/src/hooks/utils.js +7 -2
  498. package/src/index.js +0 -1
  499. package/src/private-apis.js +6 -3
  500. package/src/store/actions.js +3 -52
  501. package/src/store/defaults.js +2 -1
  502. package/src/store/private-actions.js +71 -8
  503. package/src/store/private-selectors.js +14 -25
  504. package/src/store/reducer.js +25 -11
  505. package/src/store/selectors.js +116 -53
  506. package/src/store/test/actions.js +41 -0
  507. package/src/store/test/private-selectors.js +5 -0
  508. package/src/store/test/reducer.js +23 -0
  509. package/src/store/utils.js +12 -11
  510. package/src/utils/dom.js +42 -17
  511. package/src/utils/get-font-styles-and-weights.js +2 -2
  512. package/src/utils/test/dom.js +224 -0
  513. package/src/utils/transform-styles/index.js +3 -2
  514. package/tsconfig.json +1 -0
  515. package/tsconfig.tsbuildinfo +1 -1
  516. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js +0 -57
  517. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +0 -1
  518. package/build/components/block-toolbar/shuffle.js +0 -110
  519. package/build/components/block-toolbar/shuffle.js.map +0 -1
  520. package/build/components/block-tools/zoom-out-popover.js +0 -58
  521. package/build/components/block-tools/zoom-out-popover.js.map +0 -1
  522. package/build/components/block-tools/zoom-out-toolbar.js +0 -132
  523. package/build/components/block-tools/zoom-out-toolbar.js.map +0 -1
  524. package/build/components/block-vertical-alignment-control/icons.js +0 -48
  525. package/build/components/block-vertical-alignment-control/icons.js.map +0 -1
  526. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js +0 -51
  527. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +0 -1
  528. package/build-module/components/block-toolbar/shuffle.js +0 -103
  529. package/build-module/components/block-toolbar/shuffle.js.map +0 -1
  530. package/build-module/components/block-tools/zoom-out-popover.js +0 -49
  531. package/build-module/components/block-tools/zoom-out-popover.js.map +0 -1
  532. package/build-module/components/block-tools/zoom-out-toolbar.js +0 -124
  533. package/build-module/components/block-tools/zoom-out-toolbar.js.map +0 -1
  534. package/build-module/components/block-vertical-alignment-control/icons.js +0 -41
  535. package/build-module/components/block-vertical-alignment-control/icons.js.map +0 -1
  536. package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +0 -65
  537. package/src/components/block-toolbar/shuffle.js +0 -111
  538. package/src/components/block-tools/zoom-out-popover.js +0 -47
  539. package/src/components/block-tools/zoom-out-toolbar.js +0 -135
  540. package/src/components/block-vertical-alignment-control/icons.js +0 -34
  541. /package/src/{lock-unlock.js → lock-unlock.ts} +0 -0
@@ -24,8 +24,8 @@ import {
24
24
  isReusableBlock,
25
25
  getBlockDefaultClassName,
26
26
  hasBlockSupport,
27
+ createBlock,
27
28
  store as blocksStore,
28
- privateApis as blocksPrivateApis,
29
29
  } from '@wordpress/blocks';
30
30
  import { withFilters } from '@wordpress/components';
31
31
  import { withDispatch, useDispatch, useSelect } from '@wordpress/data';
@@ -47,8 +47,6 @@ import { PrivateBlockContext } from './private-block-context';
47
47
 
48
48
  import { unlock } from '../../lock-unlock';
49
49
 
50
- const { isUnmodifiedBlockContent } = unlock( blocksPrivateApis );
51
-
52
50
  /**
53
51
  * Merges wrapper props with special handling for classNames and styles.
54
52
  *
@@ -313,6 +311,7 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
313
311
  function switchToDefaultOrRemove() {
314
312
  const block = getBlock( clientId );
315
313
  const defaultBlockName = getDefaultBlockName();
314
+ const defaultBlockType = getBlockType( defaultBlockName );
316
315
  if ( getBlockName( clientId ) !== defaultBlockName ) {
317
316
  const replacement = switchToBlockType(
318
317
  block,
@@ -329,6 +328,15 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
329
328
  selectBlock( nextBlockClientId );
330
329
  } );
331
330
  }
331
+ } else if ( defaultBlockType.merge ) {
332
+ const attributes = defaultBlockType.merge(
333
+ {},
334
+ block.attributes
335
+ );
336
+ replaceBlocks(
337
+ [ clientId ],
338
+ [ createBlock( defaultBlockName, attributes ) ]
339
+ );
332
340
  }
333
341
  }
334
342
 
@@ -342,6 +350,9 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
342
350
  * to the moved block.
343
351
  */
344
352
  function moveFirstItemUp( _clientId, changeSelection = true ) {
353
+ const wrapperBlockName = getBlockName( _clientId );
354
+ const wrapperBlockType = getBlockType( wrapperBlockName );
355
+ const isTextualWrapper = wrapperBlockType.category === 'text';
345
356
  const targetRootClientId = getBlockRootClientId( _clientId );
346
357
  const blockOrder = getBlockOrder( _clientId );
347
358
  const [ firstClientId ] = blockOrder;
@@ -351,50 +362,14 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
351
362
  isUnmodifiedBlock( getBlock( firstClientId ) )
352
363
  ) {
353
364
  removeBlock( _clientId );
354
- } else {
365
+ } else if ( isTextualWrapper ) {
355
366
  registry.batch( () => {
356
- const firstBlock = getBlock( firstClientId );
357
- const isFirstBlockContentUnmodified =
358
- isUnmodifiedBlockContent( firstBlock );
359
- const defaultBlockName = getDefaultBlockName();
360
- const replacement = switchToBlockType(
361
- firstBlock,
362
- defaultBlockName
363
- );
364
- const canTransformToDefaultBlock =
365
- !! replacement?.length &&
366
- replacement.every( ( block ) =>
367
- canInsertBlockType( block.name, _clientId )
368
- );
369
-
370
367
  if (
371
- isFirstBlockContentUnmodified &&
372
- canTransformToDefaultBlock
373
- ) {
374
- // Step 1: If the block is empty and can be transformed to the default block type.
375
- replaceBlocks(
376
- firstClientId,
377
- replacement,
378
- changeSelection
379
- );
380
- } else if (
381
- isFirstBlockContentUnmodified &&
382
- firstBlock.name === defaultBlockName
383
- ) {
384
- // Step 2: If the block is empty and is already the default block type.
385
- removeBlock( firstClientId );
386
- const nextBlockClientId =
387
- getNextBlockClientId( clientId );
388
- if ( nextBlockClientId ) {
389
- selectBlock( nextBlockClientId );
390
- }
391
- } else if (
392
368
  canInsertBlockType(
393
- firstBlock.name,
369
+ getBlockName( firstClientId ),
394
370
  targetRootClientId
395
371
  )
396
372
  ) {
397
- // Step 3: If the block can be moved up.
398
373
  moveBlocksToPosition(
399
374
  [ firstClientId ],
400
375
  _clientId,
@@ -402,17 +377,21 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
402
377
  getBlockIndex( _clientId )
403
378
  );
404
379
  } else {
405
- const canLiftAndTransformToDefaultBlock =
406
- !! replacement?.length &&
380
+ const replacement = switchToBlockType(
381
+ getBlock( firstClientId ),
382
+ getDefaultBlockName()
383
+ );
384
+
385
+ if (
386
+ replacement &&
387
+ replacement.length &&
407
388
  replacement.every( ( block ) =>
408
389
  canInsertBlockType(
409
390
  block.name,
410
391
  targetRootClientId
411
392
  )
412
- );
413
-
414
- if ( canLiftAndTransformToDefaultBlock ) {
415
- // Step 4: If the block can be transformed to the default block type and moved up.
393
+ )
394
+ ) {
416
395
  insertBlocks(
417
396
  replacement,
418
397
  getBlockIndex( _clientId ),
@@ -421,7 +400,6 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
421
400
  );
422
401
  removeBlock( firstClientId, false );
423
402
  } else {
424
- // Step 5: Continue the default behavior.
425
403
  switchToDefaultOrRemove();
426
404
  }
427
405
  }
@@ -433,6 +411,8 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
433
411
  removeBlock( _clientId, false );
434
412
  }
435
413
  } );
414
+ } else {
415
+ switchToDefaultOrRemove();
436
416
  }
437
417
  }
438
418
 
@@ -629,8 +609,7 @@ function BlockListBlockProvider( props ) {
629
609
  const attributes = getBlockAttributes( clientId );
630
610
  const { name: blockName, isValid } = blockWithoutAttributes;
631
611
  const blockType = getBlockType( blockName );
632
- const { supportsLayout, __unstableIsPreviewMode: isPreviewMode } =
633
- getSettings();
612
+ const { supportsLayout, isPreviewMode } = getSettings();
634
613
  const hasLightBlockWrapper = blockType?.apiVersion > 1;
635
614
  const previewContext = {
636
615
  isPreviewMode,
@@ -320,7 +320,6 @@ function BlockListBlock( {
320
320
  name,
321
321
  fontSizes || EMPTY_ARRAY
322
322
  );
323
- // eslint-disable-next-line react-hooks/exhaustive-deps
324
323
  }, [
325
324
  // It is crucial to keep the dependencies array minimal to prevent unnecessary calls that could negatively impact performance.
326
325
  // JSON.stringify is used for the following purposes:
@@ -329,11 +328,8 @@ function BlockListBlock( {
329
328
  // 2. To filter the attributes object, ensuring that only the relevant attributes (included in
330
329
  // GlobalStylesContext.BLOCK_STYLE_ATTRIBUTES) are considered as dependencies. This reduces the likelihood of
331
330
  // unnecessary useMemo calls when other, unrelated attributes change.
332
- // eslint-disable-next-line react-hooks/exhaustive-deps
333
331
  JSON.stringify( globalStyle ),
334
- // eslint-disable-next-line react-hooks/exhaustive-deps
335
332
  JSON.stringify( wrapperProps?.style ),
336
- // eslint-disable-next-line react-hooks/exhaustive-deps
337
333
  JSON.stringify(
338
334
  Object.fromEntries(
339
335
  Object.entries( attributes ?? {} ).filter( ( [ key ] ) =>
@@ -24,7 +24,7 @@
24
24
  // hack a progressive enhancement.
25
25
  /* stylelint-disable -- Stylelint is disabled to allow the hack to work. */
26
26
  _::-webkit-full-page-media, _:future, :root .block-editor-block-list__layout::selection,
27
- _::-webkit-full-page-media, _:future, :root .has-multi-selection .block-editor-block-list__layout::selection {
27
+ _::-webkit-full-page-media, _:future, :root [data-has-multi-selection="true"] .block-editor-block-list__layout::selection {
28
28
  background-color: transparent;
29
29
  }
30
30
  /* stylelint-enable */
@@ -181,13 +181,13 @@ function Items( {
181
181
  __unstableGetVisibleBlocks,
182
182
  getTemplateLock,
183
183
  getBlockEditingMode,
184
- __unstableGetEditorMode,
185
184
  isSectionBlock,
185
+ isZoomOut: _isZoomOut,
186
186
  } = unlock( select( blockEditorStore ) );
187
187
 
188
188
  const _order = getBlockOrder( rootClientId );
189
189
 
190
- if ( getSettings().__unstableIsPreviewMode ) {
190
+ if ( getSettings().isPreviewMode ) {
191
191
  return {
192
192
  order: _order,
193
193
  selectedBlocks: EMPTY_ARRAY,
@@ -200,13 +200,13 @@ function Items( {
200
200
  order: _order,
201
201
  selectedBlocks: getSelectedBlockClientIds(),
202
202
  visibleBlocks: __unstableGetVisibleBlocks(),
203
- isZoomOut: __unstableGetEditorMode() === 'zoom-out',
203
+ isZoomOut: _isZoomOut(),
204
204
  shouldRenderAppender:
205
205
  ! isSectionBlock( rootClientId ) &&
206
206
  getBlockEditingMode( rootClientId ) !== 'disabled' &&
207
207
  ! getTemplateLock( rootClientId ) &&
208
208
  hasAppender &&
209
- __unstableGetEditorMode() !== 'zoom-out' &&
209
+ ! _isZoomOut() &&
210
210
  ( hasCustomAppender ||
211
211
  rootClientId === selectedBlockClientId ||
212
212
  ( ! rootClientId &&
@@ -25,7 +25,6 @@ import {
25
25
  } from '../../block-edit/context';
26
26
  import { useFocusHandler } from './use-focus-handler';
27
27
  import { useEventHandlers } from './use-selected-block-event-handlers';
28
- import { useZoomOutModeExit } from './use-zoom-out-mode-exit';
29
28
  import { useBlockRefProvider } from './use-block-refs';
30
29
  import { useIntersectionObserver } from './use-intersection-observer';
31
30
  import { useScrollIntoView } from './use-scroll-into-view';
@@ -112,7 +111,6 @@ export function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {
112
111
  useBlockRefProvider( clientId ),
113
112
  useFocusHandler( clientId ),
114
113
  useEventHandlers( { clientId, isSelected } ),
115
- useZoomOutModeExit(),
116
114
  useIsHovered( { clientId } ),
117
115
  useIntersectionObserver(),
118
116
  useMovingAnimation( { triggerAnimationOnChange: index, clientId } ),
@@ -15,6 +15,7 @@ import { useSelect } from '@wordpress/data';
15
15
  */
16
16
  import { isInsideRootBlock } from '../../../utils/dom';
17
17
  import { store as blockEditorStore } from '../../../store';
18
+ import { unlock } from '../../../lock-unlock';
18
19
 
19
20
  /** @typedef {import('@wordpress/element').RefObject} RefObject */
20
21
 
@@ -28,15 +29,16 @@ import { store as blockEditorStore } from '../../../store';
28
29
  */
29
30
  export function useFocusFirstElement( { clientId, initialPosition } ) {
30
31
  const ref = useRef();
31
- const { isBlockSelected, isMultiSelecting, __unstableGetEditorMode } =
32
- useSelect( blockEditorStore );
32
+ const { isBlockSelected, isMultiSelecting, isZoomOut } = unlock(
33
+ useSelect( blockEditorStore )
34
+ );
33
35
 
34
36
  useEffect( () => {
35
37
  // Check if the block is still selected at the time this effect runs.
36
38
  if (
37
39
  ! isBlockSelected( clientId ) ||
38
40
  isMultiSelecting() ||
39
- __unstableGetEditorMode() === 'zoom-out'
41
+ isZoomOut()
40
42
  ) {
41
43
  return;
42
44
  }
@@ -21,18 +21,12 @@ import { unlock } from '../../../lock-unlock';
21
21
  * @param {string} clientId Block client ID.
22
22
  */
23
23
  export function useEventHandlers( { clientId, isSelected } ) {
24
- const {
25
- getBlockRootClientId,
26
- getBlockIndex,
27
- isZoomOut,
28
- __unstableGetEditorMode,
29
- } = unlock( useSelect( blockEditorStore ) );
30
- const {
31
- insertAfterBlock,
32
- removeBlock,
33
- __unstableSetEditorMode,
34
- resetZoomLevel,
35
- } = unlock( useDispatch( blockEditorStore ) );
24
+ const { getBlockRootClientId, getBlockIndex, isZoomOut } = unlock(
25
+ useSelect( blockEditorStore )
26
+ );
27
+ const { insertAfterBlock, removeBlock, resetZoomLevel } = unlock(
28
+ useDispatch( blockEditorStore )
29
+ );
36
30
 
37
31
  return useRefEffect(
38
32
  ( node ) => {
@@ -66,12 +60,7 @@ export function useEventHandlers( { clientId, isSelected } ) {
66
60
 
67
61
  event.preventDefault();
68
62
 
69
- if (
70
- keyCode === ENTER &&
71
- __unstableGetEditorMode() === 'zoom-out' &&
72
- isZoomOut()
73
- ) {
74
- __unstableSetEditorMode( 'edit' );
63
+ if ( keyCode === ENTER && isZoomOut() ) {
75
64
  resetZoomLevel();
76
65
  } else if ( keyCode === ENTER ) {
77
66
  insertAfterBlock( clientId );
@@ -105,8 +94,6 @@ export function useEventHandlers( { clientId, isSelected } ) {
105
94
  getBlockIndex,
106
95
  insertAfterBlock,
107
96
  removeBlock,
108
- __unstableGetEditorMode,
109
- __unstableSetEditorMode,
110
97
  isZoomOut,
111
98
  resetZoomLevel,
112
99
  ]
@@ -18,7 +18,7 @@ export function useInBetweenInserter() {
18
18
  const isInBetweenInserterDisabled = useSelect(
19
19
  ( select ) =>
20
20
  select( blockEditorStore ).getSettings().isDistractionFree ||
21
- select( blockEditorStore ).__unstableGetEditorMode() === 'zoom-out',
21
+ unlock( select( blockEditorStore ) ).isZoomOut(),
22
22
  []
23
23
  );
24
24
  const {
@@ -18,7 +18,6 @@ import { BlockPatternsList } from '@wordpress/block-editor';
18
18
  const MyBlockPatternsList = () => (
19
19
  <BlockPatternsList
20
20
  blockPatterns={ shownBlockPatterns }
21
- shownPatterns={ shownBlockPatterns }
22
21
  onClickPattern={ onSelectBlockPattern }
23
22
  />
24
23
  );
@@ -33,13 +32,6 @@ An array of block patterns that can be shown in the block patterns list.
33
32
  - Type: `Array`
34
33
  - Required: Yes
35
34
 
36
- #### shownPatterns
37
-
38
- An array of shown block patterns objects.
39
-
40
- - Type: `Array`
41
- - Required: Yes
42
-
43
35
  #### onClickPattern
44
36
 
45
37
  The performed event after a click on a block pattern. In most cases, the pattern is inserted in the block editor.
@@ -69,6 +61,14 @@ The aria label for the block patterns list.
69
61
  - Required: No
70
62
  - Default: `Block Patterns`
71
63
 
64
+ #### showTitlesAsTooltip
65
+
66
+ Whether to render the title of each pattern as a tooltip. User-defined patterns always show their visual title regardless of this prop.
67
+
68
+ - Type: `boolean`
69
+ - Required: No
70
+ - Default: `false`
71
+
72
72
  ## Related components
73
73
 
74
74
  Block Editor components are components that can be used to compose the UI of your block editor. Thus, they can only be used under a [`BlockEditorProvider`](https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/provider/README.md) in the components tree.
@@ -39,14 +39,14 @@ function BlockPattern( {
39
39
  pattern,
40
40
  onClick,
41
41
  onHover,
42
- showTitle = true,
43
- showTooltip,
42
+ showTitlesAsTooltip,
44
43
  category,
45
44
  } ) {
46
45
  const [ isDragging, setIsDragging ] = useState( false );
47
46
  const { blocks, viewportWidth } = pattern;
48
47
  const instanceId = useInstanceId( BlockPattern );
49
48
  const descriptionId = `block-editor-block-patterns-list__item-description-${ instanceId }`;
49
+ const isUserPattern = pattern.type === INSERTER_PATTERN_TYPES.user;
50
50
 
51
51
  // When we have a selected category and the pattern is draggable, we need to update the
52
52
  // pattern's categories in metadata to only contain the selected category, and pass this to
@@ -94,10 +94,7 @@ function BlockPattern( {
94
94
  } }
95
95
  >
96
96
  <WithToolTip
97
- showTooltip={
98
- showTooltip &&
99
- ! pattern.type !== INSERTER_PATTERN_TYPES.user
100
- }
97
+ showTooltip={ showTitlesAsTooltip && ! isUserPattern }
101
98
  title={ pattern.title }
102
99
  >
103
100
  <Composite.Item
@@ -134,33 +131,30 @@ function BlockPattern( {
134
131
  } }
135
132
  onMouseLeave={ () => onHover?.( null ) }
136
133
  >
137
- <BlockPreview
138
- blocks={ blocks }
139
- viewportWidth={ viewportWidth }
140
- />
141
-
142
- { showTitle && (
134
+ <BlockPreview.Async
135
+ placeholder={ <BlockPatternPlaceholder /> }
136
+ >
137
+ <BlockPreview
138
+ blocks={ blocks }
139
+ viewportWidth={ viewportWidth }
140
+ />
141
+ </BlockPreview.Async>
142
+ { ( ! showTitlesAsTooltip || isUserPattern ) && (
143
143
  <HStack
144
144
  className="block-editor-patterns__pattern-details"
145
145
  spacing={ 2 }
146
146
  >
147
- { pattern.type ===
148
- INSERTER_PATTERN_TYPES.user &&
149
- ! pattern.syncStatus && (
150
- <div className="block-editor-patterns__pattern-icon-wrapper">
151
- <Icon
152
- className="block-editor-patterns__pattern-icon"
153
- icon={ symbol }
154
- />
155
- </div>
156
- ) }
157
- { ( ! showTooltip ||
158
- pattern.type ===
159
- INSERTER_PATTERN_TYPES.user ) && (
160
- <div className="block-editor-block-patterns-list__item-title">
161
- { pattern.title }
147
+ { isUserPattern && ! pattern.syncStatus && (
148
+ <div className="block-editor-patterns__pattern-icon-wrapper">
149
+ <Icon
150
+ className="block-editor-patterns__pattern-icon"
151
+ icon={ symbol }
152
+ />
162
153
  </div>
163
154
  ) }
155
+ <div className="block-editor-block-patterns-list__item-title">
156
+ { pattern.title }
157
+ </div>
164
158
  </HStack>
165
159
  ) }
166
160
 
@@ -187,13 +181,11 @@ function BlockPatternsList(
187
181
  {
188
182
  isDraggable,
189
183
  blockPatterns,
190
- shownPatterns,
191
184
  onHover,
192
185
  onClickPattern,
193
186
  orientation,
194
187
  label = __( 'Block patterns' ),
195
188
  category,
196
- showTitle = true,
197
189
  showTitlesAsTooltip,
198
190
  pagingProps,
199
191
  },
@@ -205,11 +197,9 @@ function BlockPatternsList(
205
197
  // Reset the active composite item whenever the available patterns change,
206
198
  // to make sure that Composite widget can receive focus correctly when its
207
199
  // composite items change. The first composite item will receive focus.
208
- const firstCompositeItemId = blockPatterns.find( ( pattern ) =>
209
- shownPatterns.includes( pattern )
210
- )?.name;
200
+ const firstCompositeItemId = blockPatterns[ 0 ]?.name;
211
201
  setActiveCompositeId( firstCompositeItemId );
212
- }, [ shownPatterns, blockPatterns ] );
202
+ }, [ blockPatterns ] );
213
203
 
214
204
  return (
215
205
  <Composite
@@ -221,24 +211,18 @@ function BlockPatternsList(
221
211
  aria-label={ label }
222
212
  ref={ ref }
223
213
  >
224
- { blockPatterns.map( ( pattern ) => {
225
- const isShown = shownPatterns.includes( pattern );
226
- return isShown ? (
227
- <BlockPattern
228
- key={ pattern.name }
229
- id={ pattern.name }
230
- pattern={ pattern }
231
- onClick={ onClickPattern }
232
- onHover={ onHover }
233
- isDraggable={ isDraggable }
234
- showTitle={ showTitle }
235
- showTooltip={ showTitlesAsTooltip }
236
- category={ category }
237
- />
238
- ) : (
239
- <BlockPatternPlaceholder key={ pattern.name } />
240
- );
241
- } ) }
214
+ { blockPatterns.map( ( pattern ) => (
215
+ <BlockPattern
216
+ key={ pattern.name }
217
+ id={ pattern.name }
218
+ pattern={ pattern }
219
+ onClick={ onClickPattern }
220
+ onHover={ onHover }
221
+ isDraggable={ isDraggable }
222
+ showTitlesAsTooltip={ showTitlesAsTooltip }
223
+ category={ category }
224
+ />
225
+ ) ) }
242
226
  { pagingProps && <BlockPatternsPaging { ...pagingProps } /> }
243
227
  </Composite>
244
228
  );