@wordpress/block-editor 14.1.0 → 14.2.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 (630) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +1 -10
  3. package/build/components/block-alignment-matrix-control/index.js +2 -2
  4. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  5. package/build/components/block-breadcrumb/index.js +8 -2
  6. package/build/components/block-breadcrumb/index.js.map +1 -1
  7. package/build/components/block-canvas/index.js +8 -1
  8. package/build/components/block-canvas/index.js.map +1 -1
  9. package/build/components/block-compare/block-view.js +4 -1
  10. package/build/components/block-compare/block-view.js.map +1 -1
  11. package/build/components/block-draggable/index.js +4 -4
  12. package/build/components/block-draggable/index.js.map +1 -1
  13. package/build/components/block-draggable/use-scroll-when-dragging.js +25 -25
  14. package/build/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  15. package/build/components/block-edit/multiple-usage-warning.js +8 -2
  16. package/build/components/block-edit/multiple-usage-warning.js.map +1 -1
  17. package/build/components/block-inspector/index.js +27 -9
  18. package/build/components/block-inspector/index.js.map +1 -1
  19. package/build/components/block-list/block-invalid-warning.js +6 -3
  20. package/build/components/block-list/block-invalid-warning.js.map +1 -1
  21. package/build/components/block-list/block.js +5 -1
  22. package/build/components/block-list/block.js.map +1 -1
  23. package/build/components/block-list/use-block-props/index.js +5 -1
  24. package/build/components/block-list/use-block-props/index.js.map +1 -1
  25. package/build/components/block-list/use-block-props/use-focus-first-element.js +1 -0
  26. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  27. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js +46 -0
  28. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -0
  29. package/build/components/block-lock/toolbar.js +3 -3
  30. package/build/components/block-lock/toolbar.js.map +1 -1
  31. package/build/components/block-mover/button.js +4 -1
  32. package/build/components/block-mover/button.js.map +1 -1
  33. package/build/components/block-mover/index.js +4 -1
  34. package/build/components/block-mover/index.js.map +1 -1
  35. package/build/components/block-navigation/dropdown.js +4 -1
  36. package/build/components/block-navigation/dropdown.js.map +1 -1
  37. package/build/components/block-pattern-setup/index.js +1 -4
  38. package/build/components/block-pattern-setup/index.js.map +1 -1
  39. package/build/components/block-pattern-setup/setup-toolbar.js +22 -7
  40. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  41. package/build/components/block-patterns-list/index.js +11 -14
  42. package/build/components/block-patterns-list/index.js.map +1 -1
  43. package/build/components/block-patterns-paging/index.js +12 -3
  44. package/build/components/block-patterns-paging/index.js.map +1 -1
  45. package/build/components/block-popover/index.js +2 -15
  46. package/build/components/block-popover/index.js.map +1 -1
  47. package/build/components/block-quick-navigation/index.js +4 -1
  48. package/build/components/block-quick-navigation/index.js.map +1 -1
  49. package/build/components/block-settings-menu-controls/index.js +4 -0
  50. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  51. package/build/components/block-switcher/index.js +22 -17
  52. package/build/components/block-switcher/index.js.map +1 -1
  53. package/build/components/block-switcher/pattern-transformations-menu.js +1 -4
  54. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  55. package/build/components/block-toolbar/index.js +12 -11
  56. package/build/components/block-toolbar/index.js.map +1 -1
  57. package/build/components/block-toolbar/shuffle.js +6 -2
  58. package/build/components/block-toolbar/shuffle.js.map +1 -1
  59. package/build/components/block-tools/block-selection-button.js +8 -2
  60. package/build/components/block-tools/block-selection-button.js.map +1 -1
  61. package/build/components/block-tools/block-toolbar-popover.js +10 -6
  62. package/build/components/block-tools/block-toolbar-popover.js.map +1 -1
  63. package/build/components/block-tools/use-block-toolbar-popover-props.js +2 -1
  64. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  65. package/build/components/block-tools/zoom-out-mode-inserters.js +4 -9
  66. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  67. package/build/components/block-tools/zoom-out-popover.js +3 -4
  68. package/build/components/block-tools/zoom-out-popover.js.map +1 -1
  69. package/build/components/block-tools/zoom-out-toolbar.js +14 -5
  70. package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
  71. package/build/components/block-variation-picker/index.js +4 -1
  72. package/build/components/block-variation-picker/index.js.map +1 -1
  73. package/build/components/block-variation-transforms/index.js +4 -1
  74. package/build/components/block-variation-transforms/index.js.map +1 -1
  75. package/build/components/button-block-appender/index.js +14 -3
  76. package/build/components/button-block-appender/index.js.map +1 -1
  77. package/build/components/colors-gradients/dropdown.js +4 -1
  78. package/build/components/colors-gradients/dropdown.js.map +1 -1
  79. package/build/components/content-lock/index.js +13 -0
  80. package/build/components/content-lock/index.js.map +1 -0
  81. package/build/components/content-lock/modify-content-lock-menu-item.js +64 -0
  82. package/build/components/content-lock/modify-content-lock-menu-item.js.map +1 -0
  83. package/build/components/editor-styles/index.js +4 -3
  84. package/build/components/editor-styles/index.js.map +1 -1
  85. package/build/components/global-styles/background-panel.js +8 -12
  86. package/build/components/global-styles/background-panel.js.map +1 -1
  87. package/build/components/global-styles/color-panel.js +8 -5
  88. package/build/components/global-styles/color-panel.js.map +1 -1
  89. package/build/components/global-styles/color-panel.native.js +1 -1
  90. package/build/components/global-styles/color-panel.native.js.map +1 -1
  91. package/build/components/global-styles/dimensions-panel.js +34 -37
  92. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  93. package/build/components/global-styles/filters-panel.js +4 -1
  94. package/build/components/global-styles/filters-panel.js.map +1 -1
  95. package/build/components/global-styles/shadow-panel-components.js +13 -7
  96. package/build/components/global-styles/shadow-panel-components.js.map +1 -1
  97. package/build/components/global-styles/typography-utils.js +17 -6
  98. package/build/components/global-styles/typography-utils.js.map +1 -1
  99. package/build/components/global-styles/utils.js +4 -6
  100. package/build/components/global-styles/utils.js.map +1 -1
  101. package/build/components/grid/grid-item-movers.js +2 -2
  102. package/build/components/grid/grid-item-movers.js.map +1 -1
  103. package/build/components/iframe/index.js +5 -5
  104. package/build/components/iframe/index.js.map +1 -1
  105. package/build/components/inner-blocks/index.js +2 -4
  106. package/build/components/inner-blocks/index.js.map +1 -1
  107. package/build/components/inner-blocks/use-inner-block-template-sync.js +3 -3
  108. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  109. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +4 -1
  110. package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
  111. package/build/components/inserter/block-patterns-tab/index.js +4 -1
  112. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  113. package/build/components/inserter/library.js +2 -4
  114. package/build/components/inserter/library.js.map +1 -1
  115. package/build/components/inserter/media-tab/hooks.js +3 -3
  116. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  117. package/build/components/inserter/media-tab/media-list.js +1 -4
  118. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  119. package/build/components/inserter/media-tab/media-preview.js +8 -2
  120. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  121. package/build/components/inserter/media-tab/media-tab.js +4 -1
  122. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  123. package/build/components/inserter/menu.js +7 -24
  124. package/build/components/inserter/menu.js.map +1 -1
  125. package/build/components/inserter/quick-inserter.js +4 -1
  126. package/build/components/inserter/quick-inserter.js.map +1 -1
  127. package/build/components/inserter-list-item/index.js +4 -4
  128. package/build/components/inserter-list-item/index.js.map +1 -1
  129. package/build/components/inserter-listbox/index.js +3 -7
  130. package/build/components/inserter-listbox/index.js.map +1 -1
  131. package/build/components/inserter-listbox/item.js +4 -1
  132. package/build/components/inserter-listbox/item.js.map +1 -1
  133. package/build/components/inspector-controls/groups.js +2 -0
  134. package/build/components/inspector-controls/groups.js.map +1 -1
  135. package/build/components/inspector-controls-tabs/index.js +4 -1
  136. package/build/components/inspector-controls-tabs/index.js.map +1 -1
  137. package/build/components/inspector-controls-tabs/settings-tab.js +3 -1
  138. package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  139. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -1
  140. package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  141. package/build/components/inspector-popover-header/index.js +8 -2
  142. package/build/components/inspector-popover-header/index.js.map +1 -1
  143. package/build/components/letter-spacing-control/index.js +7 -4
  144. package/build/components/letter-spacing-control/index.js.map +1 -1
  145. package/build/components/link-control/index.js +19 -10
  146. package/build/components/link-control/index.js.map +1 -1
  147. package/build/components/link-control/settings-drawer.js +4 -1
  148. package/build/components/link-control/settings-drawer.js.map +1 -1
  149. package/build/components/list-view/block-select-button.js +4 -1
  150. package/build/components/list-view/block-select-button.js.map +1 -1
  151. package/build/components/media-placeholder/index.js +28 -7
  152. package/build/components/media-placeholder/index.js.map +1 -1
  153. package/build/components/media-replace-flow/index.js +8 -1
  154. package/build/components/media-replace-flow/index.js.map +1 -1
  155. package/build/components/provider/use-block-sync.js +19 -19
  156. package/build/components/provider/use-block-sync.js.map +1 -1
  157. package/build/components/rich-text/event-listeners/paste-handler.js +12 -1
  158. package/build/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  159. package/build/components/rich-text/index.js +38 -30
  160. package/build/components/rich-text/index.js.map +1 -1
  161. package/build/components/rich-text/use-mark-persistent.js +5 -5
  162. package/build/components/rich-text/use-mark-persistent.js.map +1 -1
  163. package/build/components/skip-to-selected-block/index.js +4 -1
  164. package/build/components/skip-to-selected-block/index.js.map +1 -1
  165. package/build/components/tool-selector/index.js +4 -1
  166. package/build/components/tool-selector/index.js.map +1 -1
  167. package/build/components/url-input/button.js +12 -3
  168. package/build/components/url-input/button.js.map +1 -1
  169. package/build/components/url-input/index.js +4 -1
  170. package/build/components/url-input/index.js.map +1 -1
  171. package/build/components/use-block-drop-zone/index.js +4 -6
  172. package/build/components/use-block-drop-zone/index.js.map +1 -1
  173. package/build/components/writing-flow/index.js +2 -1
  174. package/build/components/writing-flow/index.js.map +1 -1
  175. package/build/components/writing-flow/use-arrow-nav.js +4 -1
  176. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  177. package/build/components/writing-flow/use-event-redirect.js +66 -0
  178. package/build/components/writing-flow/use-event-redirect.js.map +1 -0
  179. package/build/components/writing-flow/use-input.js +31 -1
  180. package/build/components/writing-flow/use-input.js.map +1 -1
  181. package/build/components/writing-flow/use-select-all.js +14 -1
  182. package/build/components/writing-flow/use-select-all.js.map +1 -1
  183. package/build/components/writing-flow/use-selection-observer.js +20 -6
  184. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  185. package/build/components/writing-flow/use-tab-nav.js +4 -4
  186. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  187. package/build/components/writing-flow/utils.js +27 -0
  188. package/build/components/writing-flow/utils.js.map +1 -1
  189. package/build/hooks/block-bindings.js +32 -29
  190. package/build/hooks/block-bindings.js.map +1 -1
  191. package/build/hooks/content-lock-ui.js +8 -26
  192. package/build/hooks/content-lock-ui.js.map +1 -1
  193. package/build/hooks/duotone.js +0 -4
  194. package/build/hooks/duotone.js.map +1 -1
  195. package/build/hooks/layout.js +4 -1
  196. package/build/hooks/layout.js.map +1 -1
  197. package/build/hooks/spacing-visualizer.js +3 -3
  198. package/build/hooks/spacing-visualizer.js.map +1 -1
  199. package/build/hooks/style.js +1 -5
  200. package/build/hooks/style.js.map +1 -1
  201. package/build/hooks/use-bindings-attributes.js +19 -20
  202. package/build/hooks/use-bindings-attributes.js.map +1 -1
  203. package/build/hooks/use-zoom-out.js +7 -7
  204. package/build/hooks/use-zoom-out.js.map +1 -1
  205. package/build/layouts/constrained.js +41 -41
  206. package/build/layouts/constrained.js.map +1 -1
  207. package/build/layouts/flex.js +4 -1
  208. package/build/layouts/flex.js.map +1 -1
  209. package/build/layouts/utils.js +1 -7
  210. package/build/layouts/utils.js.map +1 -1
  211. package/build/private-apis.js +2 -1
  212. package/build/private-apis.js.map +1 -1
  213. package/build/store/actions.js +2 -7
  214. package/build/store/actions.js.map +1 -1
  215. package/build/store/private-actions.js +1 -0
  216. package/build/store/private-actions.js.map +1 -1
  217. package/build/store/private-keys.js +2 -1
  218. package/build/store/private-keys.js.map +1 -1
  219. package/build/store/private-selectors.js +13 -15
  220. package/build/store/private-selectors.js.map +1 -1
  221. package/build/store/reducer.js +1 -8
  222. package/build/store/reducer.js.map +1 -1
  223. package/build/store/selectors.js +19 -43
  224. package/build/store/selectors.js.map +1 -1
  225. package/build/store/utils.js +48 -0
  226. package/build/store/utils.js.map +1 -1
  227. package/build/utils/block-bindings.js +16 -11
  228. package/build/utils/block-bindings.js.map +1 -1
  229. package/build/utils/dom.js +101 -0
  230. package/build/utils/dom.js.map +1 -1
  231. package/build/utils/get-font-styles-and-weights.js +4 -4
  232. package/build/utils/get-font-styles-and-weights.js.map +1 -1
  233. package/build/utils/transform-styles/index.js +120 -16
  234. package/build/utils/transform-styles/index.js.map +1 -1
  235. package/build-module/components/block-alignment-matrix-control/index.js +1 -1
  236. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  237. package/build-module/components/block-breadcrumb/index.js +8 -2
  238. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  239. package/build-module/components/block-canvas/index.js +9 -1
  240. package/build-module/components/block-canvas/index.js.map +1 -1
  241. package/build-module/components/block-compare/block-view.js +4 -1
  242. package/build-module/components/block-compare/block-view.js.map +1 -1
  243. package/build-module/components/block-draggable/index.js +4 -4
  244. package/build-module/components/block-draggable/index.js.map +1 -1
  245. package/build-module/components/block-draggable/use-scroll-when-dragging.js +25 -25
  246. package/build-module/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
  247. package/build-module/components/block-edit/multiple-usage-warning.js +8 -2
  248. package/build-module/components/block-edit/multiple-usage-warning.js.map +1 -1
  249. package/build-module/components/block-inspector/index.js +27 -9
  250. package/build-module/components/block-inspector/index.js.map +1 -1
  251. package/build-module/components/block-list/block-invalid-warning.js +6 -3
  252. package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
  253. package/build-module/components/block-list/block.js +5 -1
  254. package/build-module/components/block-list/block.js.map +1 -1
  255. package/build-module/components/block-list/use-block-props/index.js +5 -1
  256. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  257. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +1 -0
  258. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  259. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js +40 -0
  260. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -0
  261. package/build-module/components/block-lock/toolbar.js +3 -3
  262. package/build-module/components/block-lock/toolbar.js.map +1 -1
  263. package/build-module/components/block-mover/button.js +4 -1
  264. package/build-module/components/block-mover/button.js.map +1 -1
  265. package/build-module/components/block-mover/index.js +4 -1
  266. package/build-module/components/block-mover/index.js.map +1 -1
  267. package/build-module/components/block-navigation/dropdown.js +4 -1
  268. package/build-module/components/block-navigation/dropdown.js.map +1 -1
  269. package/build-module/components/block-pattern-setup/index.js +1 -4
  270. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  271. package/build-module/components/block-pattern-setup/setup-toolbar.js +23 -8
  272. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  273. package/build-module/components/block-patterns-list/index.js +11 -14
  274. package/build-module/components/block-patterns-list/index.js.map +1 -1
  275. package/build-module/components/block-patterns-paging/index.js +12 -3
  276. package/build-module/components/block-patterns-paging/index.js.map +1 -1
  277. package/build-module/components/block-popover/index.js +2 -15
  278. package/build-module/components/block-popover/index.js.map +1 -1
  279. package/build-module/components/block-quick-navigation/index.js +4 -1
  280. package/build-module/components/block-quick-navigation/index.js.map +1 -1
  281. package/build-module/components/block-settings-menu-controls/index.js +4 -0
  282. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  283. package/build-module/components/block-switcher/index.js +22 -17
  284. package/build-module/components/block-switcher/index.js.map +1 -1
  285. package/build-module/components/block-switcher/pattern-transformations-menu.js +1 -4
  286. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  287. package/build-module/components/block-toolbar/index.js +12 -11
  288. package/build-module/components/block-toolbar/index.js.map +1 -1
  289. package/build-module/components/block-toolbar/shuffle.js +6 -2
  290. package/build-module/components/block-toolbar/shuffle.js.map +1 -1
  291. package/build-module/components/block-tools/block-selection-button.js +8 -2
  292. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  293. package/build-module/components/block-tools/block-toolbar-popover.js +10 -6
  294. package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -1
  295. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +2 -1
  296. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  297. package/build-module/components/block-tools/zoom-out-mode-inserters.js +4 -9
  298. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  299. package/build-module/components/block-tools/zoom-out-popover.js +3 -4
  300. package/build-module/components/block-tools/zoom-out-popover.js.map +1 -1
  301. package/build-module/components/block-tools/zoom-out-toolbar.js +15 -6
  302. package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
  303. package/build-module/components/block-variation-picker/index.js +4 -1
  304. package/build-module/components/block-variation-picker/index.js.map +1 -1
  305. package/build-module/components/block-variation-transforms/index.js +4 -1
  306. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  307. package/build-module/components/button-block-appender/index.js +15 -4
  308. package/build-module/components/button-block-appender/index.js.map +1 -1
  309. package/build-module/components/colors-gradients/dropdown.js +4 -1
  310. package/build-module/components/colors-gradients/dropdown.js.map +1 -1
  311. package/build-module/components/content-lock/index.js +2 -0
  312. package/build-module/components/content-lock/index.js.map +1 -0
  313. package/build-module/components/content-lock/modify-content-lock-menu-item.js +57 -0
  314. package/build-module/components/content-lock/modify-content-lock-menu-item.js.map +1 -0
  315. package/build-module/components/editor-styles/index.js +4 -3
  316. package/build-module/components/editor-styles/index.js.map +1 -1
  317. package/build-module/components/global-styles/background-panel.js +8 -12
  318. package/build-module/components/global-styles/background-panel.js.map +1 -1
  319. package/build-module/components/global-styles/color-panel.js +7 -4
  320. package/build-module/components/global-styles/color-panel.js.map +1 -1
  321. package/build-module/components/global-styles/color-panel.native.js +2 -2
  322. package/build-module/components/global-styles/color-panel.native.js.map +1 -1
  323. package/build-module/components/global-styles/dimensions-panel.js +36 -39
  324. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  325. package/build-module/components/global-styles/filters-panel.js +4 -1
  326. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  327. package/build-module/components/global-styles/shadow-panel-components.js +13 -7
  328. package/build-module/components/global-styles/shadow-panel-components.js.map +1 -1
  329. package/build-module/components/global-styles/typography-utils.js +17 -6
  330. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  331. package/build-module/components/global-styles/utils.js +4 -6
  332. package/build-module/components/global-styles/utils.js.map +1 -1
  333. package/build-module/components/grid/grid-item-movers.js +3 -3
  334. package/build-module/components/grid/grid-item-movers.js.map +1 -1
  335. package/build-module/components/iframe/index.js +5 -5
  336. package/build-module/components/iframe/index.js.map +1 -1
  337. package/build-module/components/inner-blocks/index.js +2 -4
  338. package/build-module/components/inner-blocks/index.js.map +1 -1
  339. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +3 -3
  340. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  341. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +4 -1
  342. package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
  343. package/build-module/components/inserter/block-patterns-tab/index.js +4 -1
  344. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  345. package/build-module/components/inserter/library.js +2 -4
  346. package/build-module/components/inserter/library.js.map +1 -1
  347. package/build-module/components/inserter/media-tab/hooks.js +3 -3
  348. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  349. package/build-module/components/inserter/media-tab/media-list.js +1 -4
  350. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  351. package/build-module/components/inserter/media-tab/media-preview.js +8 -2
  352. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  353. package/build-module/components/inserter/media-tab/media-tab.js +4 -1
  354. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  355. package/build-module/components/inserter/menu.js +7 -24
  356. package/build-module/components/inserter/menu.js.map +1 -1
  357. package/build-module/components/inserter/quick-inserter.js +4 -1
  358. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  359. package/build-module/components/inserter-list-item/index.js +4 -4
  360. package/build-module/components/inserter-list-item/index.js.map +1 -1
  361. package/build-module/components/inserter-listbox/index.js +3 -7
  362. package/build-module/components/inserter-listbox/index.js.map +1 -1
  363. package/build-module/components/inserter-listbox/item.js +4 -1
  364. package/build-module/components/inserter-listbox/item.js.map +1 -1
  365. package/build-module/components/inspector-controls/groups.js +2 -0
  366. package/build-module/components/inspector-controls/groups.js.map +1 -1
  367. package/build-module/components/inspector-controls-tabs/index.js +4 -1
  368. package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
  369. package/build-module/components/inspector-controls-tabs/settings-tab.js +3 -1
  370. package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -1
  371. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -1
  372. package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
  373. package/build-module/components/inspector-popover-header/index.js +8 -2
  374. package/build-module/components/inspector-popover-header/index.js.map +1 -1
  375. package/build-module/components/letter-spacing-control/index.js +7 -4
  376. package/build-module/components/letter-spacing-control/index.js.map +1 -1
  377. package/build-module/components/link-control/index.js +19 -10
  378. package/build-module/components/link-control/index.js.map +1 -1
  379. package/build-module/components/link-control/settings-drawer.js +4 -1
  380. package/build-module/components/link-control/settings-drawer.js.map +1 -1
  381. package/build-module/components/list-view/block-select-button.js +4 -1
  382. package/build-module/components/list-view/block-select-button.js.map +1 -1
  383. package/build-module/components/media-placeholder/index.js +28 -7
  384. package/build-module/components/media-placeholder/index.js.map +1 -1
  385. package/build-module/components/media-replace-flow/index.js +8 -1
  386. package/build-module/components/media-replace-flow/index.js.map +1 -1
  387. package/build-module/components/provider/use-block-sync.js +19 -19
  388. package/build-module/components/provider/use-block-sync.js.map +1 -1
  389. package/build-module/components/rich-text/event-listeners/paste-handler.js +12 -1
  390. package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  391. package/build-module/components/rich-text/index.js +39 -31
  392. package/build-module/components/rich-text/index.js.map +1 -1
  393. package/build-module/components/rich-text/use-mark-persistent.js +5 -5
  394. package/build-module/components/rich-text/use-mark-persistent.js.map +1 -1
  395. package/build-module/components/skip-to-selected-block/index.js +4 -1
  396. package/build-module/components/skip-to-selected-block/index.js.map +1 -1
  397. package/build-module/components/tool-selector/index.js +4 -1
  398. package/build-module/components/tool-selector/index.js.map +1 -1
  399. package/build-module/components/url-input/button.js +12 -3
  400. package/build-module/components/url-input/button.js.map +1 -1
  401. package/build-module/components/url-input/index.js +4 -1
  402. package/build-module/components/url-input/index.js.map +1 -1
  403. package/build-module/components/use-block-drop-zone/index.js +4 -6
  404. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  405. package/build-module/components/writing-flow/index.js +2 -1
  406. package/build-module/components/writing-flow/index.js.map +1 -1
  407. package/build-module/components/writing-flow/use-arrow-nav.js +4 -1
  408. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  409. package/build-module/components/writing-flow/use-event-redirect.js +60 -0
  410. package/build-module/components/writing-flow/use-event-redirect.js.map +1 -0
  411. package/build-module/components/writing-flow/use-input.js +31 -1
  412. package/build-module/components/writing-flow/use-input.js.map +1 -1
  413. package/build-module/components/writing-flow/use-select-all.js +14 -1
  414. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  415. package/build-module/components/writing-flow/use-selection-observer.js +16 -2
  416. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  417. package/build-module/components/writing-flow/use-tab-nav.js +4 -4
  418. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  419. package/build-module/components/writing-flow/utils.js +26 -0
  420. package/build-module/components/writing-flow/utils.js.map +1 -1
  421. package/build-module/hooks/block-bindings.js +34 -31
  422. package/build-module/hooks/block-bindings.js.map +1 -1
  423. package/build-module/hooks/content-lock-ui.js +10 -30
  424. package/build-module/hooks/content-lock-ui.js.map +1 -1
  425. package/build-module/hooks/duotone.js +0 -4
  426. package/build-module/hooks/duotone.js.map +1 -1
  427. package/build-module/hooks/layout.js +4 -1
  428. package/build-module/hooks/layout.js.map +1 -1
  429. package/build-module/hooks/spacing-visualizer.js +3 -3
  430. package/build-module/hooks/spacing-visualizer.js.map +1 -1
  431. package/build-module/hooks/style.js +1 -5
  432. package/build-module/hooks/style.js.map +1 -1
  433. package/build-module/hooks/use-bindings-attributes.js +19 -20
  434. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  435. package/build-module/hooks/use-zoom-out.js +7 -7
  436. package/build-module/hooks/use-zoom-out.js.map +1 -1
  437. package/build-module/layouts/constrained.js +43 -43
  438. package/build-module/layouts/constrained.js.map +1 -1
  439. package/build-module/layouts/flex.js +4 -1
  440. package/build-module/layouts/flex.js.map +1 -1
  441. package/build-module/layouts/utils.js +1 -7
  442. package/build-module/layouts/utils.js.map +1 -1
  443. package/build-module/private-apis.js +3 -2
  444. package/build-module/private-apis.js.map +1 -1
  445. package/build-module/store/actions.js +2 -7
  446. package/build-module/store/actions.js.map +1 -1
  447. package/build-module/store/private-actions.js +1 -0
  448. package/build-module/store/private-actions.js.map +1 -1
  449. package/build-module/store/private-keys.js +1 -0
  450. package/build-module/store/private-keys.js.map +1 -1
  451. package/build-module/store/private-selectors.js +12 -15
  452. package/build-module/store/private-selectors.js.map +1 -1
  453. package/build-module/store/reducer.js +1 -7
  454. package/build-module/store/reducer.js.map +1 -1
  455. package/build-module/store/selectors.js +22 -46
  456. package/build-module/store/selectors.js.map +1 -1
  457. package/build-module/store/utils.js +46 -0
  458. package/build-module/store/utils.js.map +1 -1
  459. package/build-module/utils/block-bindings.js +17 -12
  460. package/build-module/utils/block-bindings.js.map +1 -1
  461. package/build-module/utils/dom.js +99 -0
  462. package/build-module/utils/dom.js.map +1 -1
  463. package/build-module/utils/get-font-styles-and-weights.js +4 -4
  464. package/build-module/utils/get-font-styles-and-weights.js.map +1 -1
  465. package/build-module/utils/transform-styles/index.js +120 -16
  466. package/build-module/utils/transform-styles/index.js.map +1 -1
  467. package/build-style/content-rtl.css +2 -11
  468. package/build-style/content.css +2 -11
  469. package/build-style/style-rtl.css +17 -38
  470. package/build-style/style.css +17 -38
  471. package/build-types/utils/dom.d.ts +25 -0
  472. package/build-types/utils/dom.d.ts.map +1 -1
  473. package/package.json +34 -32
  474. package/src/components/block-alignment-matrix-control/index.js +1 -1
  475. package/src/components/block-breadcrumb/index.js +4 -0
  476. package/src/components/block-breadcrumb/style.scss +1 -1
  477. package/src/components/block-canvas/index.js +9 -1
  478. package/src/components/block-compare/block-view.js +7 -1
  479. package/src/components/block-draggable/content.scss +1 -1
  480. package/src/components/block-draggable/index.js +4 -4
  481. package/src/components/block-draggable/style.scss +1 -1
  482. package/src/components/block-draggable/use-scroll-when-dragging.js +25 -25
  483. package/src/components/block-edit/multiple-usage-warning.js +4 -0
  484. package/src/components/block-inspector/index.js +22 -6
  485. package/src/components/block-list/block-invalid-warning.js +4 -2
  486. package/src/components/block-list/block.js +6 -2
  487. package/src/components/block-list/content.scss +2 -3
  488. package/src/components/block-list/use-block-props/index.js +3 -0
  489. package/src/components/block-list/use-block-props/use-focus-first-element.js +1 -0
  490. package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +44 -0
  491. package/src/components/block-lock/style.scss +1 -1
  492. package/src/components/block-lock/toolbar.js +3 -3
  493. package/src/components/block-mover/button.js +2 -0
  494. package/src/components/block-mover/index.js +2 -0
  495. package/src/components/block-mover/style.scss +1 -1
  496. package/src/components/block-navigation/dropdown.js +2 -0
  497. package/src/components/block-pattern-setup/index.js +3 -7
  498. package/src/components/block-pattern-setup/setup-toolbar.js +17 -4
  499. package/src/components/block-pattern-setup/style.scss +2 -2
  500. package/src/components/block-patterns-list/index.js +15 -13
  501. package/src/components/block-patterns-list/style.scss +2 -2
  502. package/src/components/block-patterns-paging/index.js +6 -0
  503. package/src/components/block-popover/index.js +7 -28
  504. package/src/components/block-popover/style.scss +1 -1
  505. package/src/components/block-quick-navigation/index.js +2 -0
  506. package/src/components/block-settings-menu-controls/index.js +7 -1
  507. package/src/components/block-switcher/index.js +26 -20
  508. package/src/components/block-switcher/pattern-transformations-menu.js +3 -7
  509. package/src/components/block-switcher/style.scss +5 -6
  510. package/src/components/block-toolbar/index.js +17 -8
  511. package/src/components/block-toolbar/shuffle.js +9 -7
  512. package/src/components/block-tools/block-selection-button.js +4 -0
  513. package/src/components/block-tools/block-toolbar-popover.js +10 -6
  514. package/src/components/block-tools/style.scss +3 -4
  515. package/src/components/block-tools/use-block-toolbar-popover-props.js +2 -1
  516. package/src/components/block-tools/zoom-out-mode-inserters.js +2 -5
  517. package/src/components/block-tools/zoom-out-popover.js +3 -7
  518. package/src/components/block-tools/zoom-out-toolbar.js +20 -6
  519. package/src/components/block-variation-picker/README.md +2 -2
  520. package/src/components/block-variation-picker/index.js +6 -1
  521. package/src/components/block-variation-transforms/index.js +2 -0
  522. package/src/components/block-variation-transforms/style.scss +1 -1
  523. package/src/components/button-block-appender/content.scss +0 -1
  524. package/src/components/button-block-appender/index.js +14 -3
  525. package/src/components/color-palette/test/control.js +15 -2
  526. package/src/components/colors-gradients/dropdown.js +5 -1
  527. package/src/components/colors-gradients/style.scss +4 -4
  528. package/src/components/content-lock/index.js +1 -0
  529. package/src/components/content-lock/modify-content-lock-menu-item.js +58 -0
  530. package/src/components/default-block-appender/content.scss +0 -1
  531. package/src/components/editor-styles/index.js +4 -3
  532. package/src/components/global-styles/background-panel.js +6 -14
  533. package/src/components/global-styles/color-panel.js +8 -4
  534. package/src/components/global-styles/color-panel.native.js +2 -2
  535. package/src/components/global-styles/dimensions-panel.js +40 -40
  536. package/src/components/global-styles/filters-panel.js +5 -1
  537. package/src/components/global-styles/shadow-panel-components.js +12 -8
  538. package/src/components/global-styles/style.scss +3 -4
  539. package/src/components/global-styles/test/typography-utils.js +96 -5
  540. package/src/components/global-styles/test/utils.js +10 -0
  541. package/src/components/global-styles/typography-utils.js +22 -6
  542. package/src/components/global-styles/utils.js +4 -6
  543. package/src/components/grid/grid-item-movers.js +3 -3
  544. package/src/components/grid/style.scss +1 -1
  545. package/src/components/iframe/index.js +5 -5
  546. package/src/components/inner-blocks/index.js +2 -2
  547. package/src/components/inner-blocks/use-inner-block-template-sync.js +3 -3
  548. package/src/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +2 -0
  549. package/src/components/inserter/block-patterns-tab/index.js +2 -0
  550. package/src/components/inserter/library.js +0 -2
  551. package/src/components/inserter/media-tab/hooks.js +3 -3
  552. package/src/components/inserter/media-tab/media-list.js +1 -4
  553. package/src/components/inserter/media-tab/media-preview.js +12 -2
  554. package/src/components/inserter/media-tab/media-tab.js +2 -0
  555. package/src/components/inserter/menu.js +15 -29
  556. package/src/components/inserter/quick-inserter.js +2 -0
  557. package/src/components/inserter/style.scss +6 -8
  558. package/src/components/inserter-list-item/index.js +4 -4
  559. package/src/components/inserter-list-item/style.scss +1 -3
  560. package/src/components/inserter-listbox/index.js +2 -8
  561. package/src/components/inserter-listbox/item.js +9 -1
  562. package/src/components/inspector-controls/groups.js +2 -0
  563. package/src/components/inspector-controls-tabs/index.js +2 -0
  564. package/src/components/inspector-controls-tabs/settings-tab.js +1 -0
  565. package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +5 -2
  566. package/src/components/inspector-popover-header/index.js +4 -0
  567. package/src/components/letter-spacing-control/README.md +8 -1
  568. package/src/components/letter-spacing-control/index.js +7 -4
  569. package/src/components/link-control/index.js +17 -8
  570. package/src/components/link-control/settings-drawer.js +2 -0
  571. package/src/components/link-control/style.scss +1 -3
  572. package/src/components/list-view/block-select-button.js +2 -0
  573. package/src/components/list-view/style.scss +14 -16
  574. package/src/components/media-placeholder/index.js +14 -0
  575. package/src/components/media-replace-flow/index.js +12 -1
  576. package/src/components/provider/use-block-sync.js +20 -20
  577. package/src/components/responsive-block-control/README.md +3 -27
  578. package/src/components/rich-text/content.scss +1 -1
  579. package/src/components/rich-text/event-listeners/paste-handler.js +6 -1
  580. package/src/components/rich-text/index.js +54 -41
  581. package/src/components/rich-text/style.scss +1 -1
  582. package/src/components/rich-text/use-mark-persistent.js +5 -5
  583. package/src/components/skip-to-selected-block/index.js +2 -0
  584. package/src/components/spacing-sizes-control/style.scss +1 -0
  585. package/src/components/tool-selector/index.js +2 -0
  586. package/src/components/url-input/button.js +6 -0
  587. package/src/components/url-input/index.js +2 -0
  588. package/src/components/url-popover/stories/index.story.js +7 -1
  589. package/src/components/use-block-drop-zone/index.js +4 -4
  590. package/src/components/warning/content.scss +3 -10
  591. package/src/components/writing-flow/index.js +2 -0
  592. package/src/components/writing-flow/use-arrow-nav.js +9 -2
  593. package/src/components/writing-flow/use-event-redirect.js +72 -0
  594. package/src/components/writing-flow/use-input.js +36 -1
  595. package/src/components/writing-flow/use-select-all.js +18 -1
  596. package/src/components/writing-flow/use-selection-observer.js +23 -3
  597. package/src/components/writing-flow/use-tab-nav.js +4 -4
  598. package/src/components/writing-flow/utils.js +30 -0
  599. package/src/hooks/block-bindings.js +42 -43
  600. package/src/hooks/block-bindings.scss +1 -9
  601. package/src/hooks/content-lock-ui.js +11 -36
  602. package/src/hooks/duotone.js +0 -4
  603. package/src/hooks/layout.js +2 -0
  604. package/src/hooks/layout.scss +3 -11
  605. package/src/hooks/spacing-visualizer.js +3 -3
  606. package/src/hooks/style.js +1 -4
  607. package/src/hooks/use-bindings-attributes.js +23 -24
  608. package/src/hooks/use-zoom-out.js +7 -7
  609. package/src/layouts/constrained.js +50 -47
  610. package/src/layouts/flex.js +2 -0
  611. package/src/layouts/test/grid.js +2 -2
  612. package/src/layouts/test/utils.js +6 -8
  613. package/src/layouts/utils.js +1 -9
  614. package/src/private-apis.js +2 -0
  615. package/src/store/actions.js +4 -6
  616. package/src/store/private-actions.js +1 -0
  617. package/src/store/private-keys.js +1 -0
  618. package/src/store/private-selectors.js +12 -11
  619. package/src/store/reducer.js +0 -5
  620. package/src/store/selectors.js +32 -51
  621. package/src/store/utils.js +50 -0
  622. package/src/utils/block-bindings.js +15 -16
  623. package/src/utils/dom.js +117 -0
  624. package/src/utils/get-font-styles-and-weights.js +12 -4
  625. package/src/utils/test/get-font-styles-and-weights.js +148 -0
  626. package/src/utils/test/transform-styles.js +259 -50
  627. package/src/utils/transform-styles/index.js +132 -21
  628. package/tsconfig.json +1 -0
  629. package/tsconfig.tsbuildinfo +1 -1
  630. package/src/utils/test/__snapshots__/transform-styles.js.snap +0 -109
@@ -27,11 +27,9 @@ import InserterDraggableBlocks from '../inserter-draggable-blocks';
27
27
  import BlockPatternsPaging from '../block-patterns-paging';
28
28
  import { INSERTER_PATTERN_TYPES } from '../inserter/block-patterns-tab/utils';
29
29
 
30
- const {
31
- CompositeV2: Composite,
32
- CompositeItemV2: CompositeItem,
33
- useCompositeStoreV2: useCompositeStore,
34
- } = unlock( componentsPrivateApis );
30
+ const { CompositeV2: Composite, CompositeItemV2: CompositeItem } = unlock(
31
+ componentsPrivateApis
32
+ );
35
33
 
36
34
  const WithToolTip = ( { showTooltip, title, children } ) => {
37
35
  if ( showTooltip ) {
@@ -206,19 +204,23 @@ function BlockPatternsList(
206
204
  },
207
205
  ref
208
206
  ) {
209
- const compositeStore = useCompositeStore( { orientation } );
210
- const { setActiveId } = compositeStore;
207
+ const [ activeCompositeId, setActiveCompositeId ] = useState( undefined );
211
208
 
212
209
  useEffect( () => {
213
- // We reset the active composite item whenever the
214
- // available patterns change, to make sure that
215
- // focus is put back to the start.
216
- setActiveId( undefined );
217
- }, [ setActiveId, shownPatterns, blockPatterns ] );
210
+ // Reset the active composite item whenever the available patterns change,
211
+ // to make sure that Composite widget can receive focus correctly when its
212
+ // composite items change. The first composite item will receive focus.
213
+ const firstCompositeItemId = blockPatterns.find( ( pattern ) =>
214
+ shownPatterns.includes( pattern )
215
+ )?.name;
216
+ setActiveCompositeId( firstCompositeItemId );
217
+ }, [ shownPatterns, blockPatterns ] );
218
218
 
219
219
  return (
220
220
  <Composite
221
- store={ compositeStore }
221
+ orientation={ orientation }
222
+ activeId={ activeCompositeId }
223
+ setActiveId={ setActiveCompositeId }
222
224
  role="listbox"
223
225
  className="block-editor-block-patterns-list"
224
226
  aria-label={ label }
@@ -36,12 +36,12 @@
36
36
  display: flex;
37
37
  align-items: center;
38
38
  overflow: hidden;
39
- border-radius: $radius-block-ui;
39
+ border-radius: $radius-medium;
40
40
 
41
41
  &::after {
42
42
  outline: $border-width solid rgba($black, 0.1);
43
43
  outline-offset: -$border-width;
44
- border-radius: $radius-block-ui;
44
+ border-radius: $radius-medium;
45
45
  }
46
46
  }
47
47
 
@@ -38,6 +38,8 @@ export default function Pagination( {
38
38
  className="block-editor-patterns__grid-pagination-previous"
39
39
  >
40
40
  <Button
41
+ // TODO: Switch to `true` (40px size) if possible
42
+ __next40pxDefaultSize={ false }
41
43
  variant="tertiary"
42
44
  onClick={ () => changePage( 1 ) }
43
45
  disabled={ currentPage === 1 }
@@ -47,6 +49,8 @@ export default function Pagination( {
47
49
  <span>«</span>
48
50
  </Button>
49
51
  <Button
52
+ // TODO: Switch to `true` (40px size) if possible
53
+ __next40pxDefaultSize={ false }
50
54
  variant="tertiary"
51
55
  onClick={ () => changePage( currentPage - 1 ) }
52
56
  disabled={ currentPage === 1 }
@@ -70,6 +74,8 @@ export default function Pagination( {
70
74
  className="block-editor-patterns__grid-pagination-next"
71
75
  >
72
76
  <Button
77
+ // TODO: Switch to `true` (40px size) if possible
78
+ __next40pxDefaultSize={ false }
73
79
  variant="tertiary"
74
80
  onClick={ () => changePage( currentPage + 1 ) }
75
81
  disabled={ currentPage === numPages }
@@ -20,6 +20,7 @@ import {
20
20
  */
21
21
  import { useBlockElement } from '../block-list/use-block-props/use-block-refs';
22
22
  import usePopoverScroll from './use-popover-scroll';
23
+ import { rectUnion, getVisibleElementBounds } from '../../utils/dom';
23
24
 
24
25
  const MAX_POPOVER_RECOMPUTE_COUNTER = Number.MAX_SAFE_INTEGER;
25
26
 
@@ -87,34 +88,12 @@ function BlockPopover(
87
88
 
88
89
  return {
89
90
  getBoundingClientRect() {
90
- const selectedBCR = selectedElement.getBoundingClientRect();
91
- const lastSelectedBCR =
92
- lastSelectedElement?.getBoundingClientRect();
93
-
94
- // Get the biggest rectangle that encompasses completely the currently
95
- // selected element and the last selected element:
96
- // - for top/left coordinates, use the smaller numbers
97
- // - for the bottom/right coordinates, use the largest numbers
98
- const left = Math.min(
99
- selectedBCR.left,
100
- lastSelectedBCR?.left ?? Infinity
101
- );
102
- const top = Math.min(
103
- selectedBCR.top,
104
- lastSelectedBCR?.top ?? Infinity
105
- );
106
- const right = Math.max(
107
- selectedBCR.right,
108
- lastSelectedBCR.right ?? -Infinity
109
- );
110
- const bottom = Math.max(
111
- selectedBCR.bottom,
112
- lastSelectedBCR.bottom ?? -Infinity
113
- );
114
- const width = right - left;
115
- const height = bottom - top;
116
-
117
- return new window.DOMRect( left, top, width, height );
91
+ return lastSelectedElement
92
+ ? rectUnion(
93
+ getVisibleElementBounds( selectedElement ),
94
+ getVisibleElementBounds( lastSelectedElement )
95
+ )
96
+ : getVisibleElementBounds( selectedElement );
118
97
  },
119
98
  contextElement: selectedElement,
120
99
  };
@@ -57,6 +57,6 @@
57
57
  position: absolute;
58
58
  inset: 0;
59
59
  background-color: var(--wp-admin-theme-color);
60
- border-radius: 2px;
60
+ border-radius: $radius-small;
61
61
  }
62
62
  }
@@ -59,6 +59,8 @@ function BlockQuickNavigationItem( { clientId, onSelect } ) {
59
59
 
60
60
  return (
61
61
  <Button
62
+ // TODO: Switch to `true` (40px size) if possible
63
+ __next40pxDefaultSize={ false }
62
64
  isPressed={ isSelected }
63
65
  onClick={ async () => {
64
66
  await selectBlock( clientId );
@@ -21,7 +21,7 @@ import {
21
21
  import { BlockLockMenuItem, useBlockLock } from '../block-lock';
22
22
  import { store as blockEditorStore } from '../../store';
23
23
  import BlockModeToggle from '../block-settings-menu/block-mode-toggle';
24
-
24
+ import { ModifyContentLockMenuItem } from '../content-lock';
25
25
  import { BlockRenameControl, useBlockRename } from '../block-rename';
26
26
 
27
27
  const { Fill, Slot } = createSlotFill( 'BlockSettingsMenuControls' );
@@ -108,6 +108,12 @@ const BlockSettingsMenuControlsSlot = ( { fillProps, clientIds = null } ) => {
108
108
  { __( 'Move to' ) }
109
109
  </MenuItem>
110
110
  ) }
111
+ { selectedClientIds.length === 1 && (
112
+ <ModifyContentLockMenuItem
113
+ clientId={ selectedClientIds[ 0 ] }
114
+ onClose={ fillProps?.onClose }
115
+ />
116
+ ) }
111
117
  { fillProps?.count === 1 && ! isContentOnly && (
112
118
  <BlockModeToggle
113
119
  clientId={ fillProps?.firstBlockClientId }
@@ -181,6 +181,21 @@ function BlockSwitcherDropdownMenuContents( {
181
181
  );
182
182
  }
183
183
 
184
+ const BlockIndicator = ( { icon, showTitle, blockTitle } ) => (
185
+ <>
186
+ <BlockIcon
187
+ className="block-editor-block-switcher__toggle"
188
+ icon={ icon }
189
+ showColors
190
+ />
191
+ { showTitle && blockTitle && (
192
+ <span className="block-editor-block-switcher__toggle-text">
193
+ { blockTitle }
194
+ </span>
195
+ ) }
196
+ </>
197
+ );
198
+
184
199
  export const BlockSwitcher = ( { clientIds, disabled, isUsingBindings } ) => {
185
200
  const {
186
201
  canRemove,
@@ -247,6 +262,7 @@ export const BlockSwitcher = ( { clientIds, disabled, isUsingBindings } ) => {
247
262
  : __( 'Multiple blocks selected' );
248
263
 
249
264
  const hideDropdown = disabled || ( ! hasBlockStyles && ! canRemove );
265
+
250
266
  if ( hideDropdown ) {
251
267
  return (
252
268
  <ToolbarGroup>
@@ -255,14 +271,11 @@ export const BlockSwitcher = ( { clientIds, disabled, isUsingBindings } ) => {
255
271
  className="block-editor-block-switcher__no-switcher-icon"
256
272
  title={ blockSwitcherLabel }
257
273
  icon={
258
- <>
259
- <BlockIcon icon={ icon } showColors />
260
- { ( isReusable || isTemplate ) && (
261
- <span className="block-editor-block-switcher__toggle-text">
262
- { blockTitle }
263
- </span>
264
- ) }
265
- </>
274
+ <BlockIndicator
275
+ icon={ icon }
276
+ showTitle={ isReusable || isTemplate }
277
+ blockTitle={ blockTitle }
278
+ />
266
279
  }
267
280
  />
268
281
  </ToolbarGroup>
@@ -292,18 +305,11 @@ export const BlockSwitcher = ( { clientIds, disabled, isUsingBindings } ) => {
292
305
  className: 'block-editor-block-switcher__popover',
293
306
  } }
294
307
  icon={
295
- <>
296
- <BlockIcon
297
- icon={ icon }
298
- className="block-editor-block-switcher__toggle"
299
- showColors
300
- />
301
- { ( isReusable || isTemplate ) && (
302
- <span className="block-editor-block-switcher__toggle-text">
303
- { blockTitle }
304
- </span>
305
- ) }
306
- </>
308
+ <BlockIndicator
309
+ icon={ icon }
310
+ showTitle={ isReusable || isTemplate }
311
+ blockTitle={ blockTitle }
312
+ />
307
313
  }
308
314
  toggleProps={ {
309
315
  description: blockSwitcherDescription,
@@ -21,11 +21,9 @@ import BlockPreview from '../block-preview';
21
21
  import useTransformedPatterns from './use-transformed-patterns';
22
22
  import { unlock } from '../../lock-unlock';
23
23
 
24
- const {
25
- CompositeV2: Composite,
26
- CompositeItemV2: CompositeItem,
27
- useCompositeStoreV2: useCompositeStore,
28
- } = unlock( componentsPrivateApis );
24
+ const { CompositeV2: Composite, CompositeItemV2: CompositeItem } = unlock(
25
+ componentsPrivateApis
26
+ );
29
27
 
30
28
  function PatternTransformationsMenu( {
31
29
  blocks,
@@ -82,10 +80,8 @@ function PreviewPatternsPopover( { patterns, onSelect } ) {
82
80
  }
83
81
 
84
82
  function BlockPatternsList( { patterns, onSelect } ) {
85
- const composite = useCompositeStore();
86
83
  return (
87
84
  <Composite
88
- store={ composite }
89
85
  role="listbox"
90
86
  className="block-editor-block-switcher__preview-patterns-container"
91
87
  aria-label={ __( 'Patterns list' ) }
@@ -46,12 +46,11 @@
46
46
  }
47
47
 
48
48
  // Even when the block switcher does not have any transformations, it still serves as a block indicator.
49
- .components-button.block-editor-block-switcher__no-switcher-icon:disabled {
50
- opacity: 1;
49
+ .components-button.block-editor-block-switcher__no-switcher-icon[aria-disabled="true"] {
50
+ color: $gray-900;
51
51
 
52
52
  // Since it's not clickable, though, don't show a hover state.
53
- &,
54
- .block-editor-block-icon.has-colors {
53
+ &:hover {
55
54
  color: $gray-900;
56
55
  }
57
56
  }
@@ -100,7 +99,7 @@
100
99
  width: 300px;
101
100
  border: $border-width solid $gray-900;
102
101
  background: $white;
103
- border-radius: $radius-block-ui;
102
+ border-radius: $radius-medium;
104
103
  outline: none;
105
104
  box-shadow: none;
106
105
  overflow: auto;
@@ -162,7 +161,7 @@
162
161
 
163
162
  .block-editor-block-switcher__preview-patterns-container-list__item {
164
163
  height: 100%;
165
- border-radius: $radius-block-ui;
164
+ border-radius: $radius-small;
166
165
  transition: all 0.05s ease-in-out;
167
166
  position: relative;
168
167
  border: $border-width solid transparent;
@@ -34,7 +34,6 @@ import { useShowHoveredOrFocusedGestures } from './utils';
34
34
  import { store as blockEditorStore } from '../../store';
35
35
  import __unstableBlockNameContext from './block-name-context';
36
36
  import NavigableToolbar from '../navigable-toolbar';
37
- import Shuffle from './shuffle';
38
37
  import { useHasBlockToolbar } from './use-has-block-toolbar';
39
38
 
40
39
  /**
@@ -59,12 +58,14 @@ export function PrivateBlockToolbar( {
59
58
  const {
60
59
  blockClientId,
61
60
  blockClientIds,
61
+ isContentOnlyEditingMode,
62
62
  isDefaultEditingMode,
63
63
  blockType,
64
64
  toolbarKey,
65
65
  shouldShowVisualToolbar,
66
66
  showParentSelector,
67
67
  isUsingBindings,
68
+ hasParentPattern,
68
69
  } = useSelect( ( select ) => {
69
70
  const {
70
71
  getBlockName,
@@ -72,19 +73,18 @@ export function PrivateBlockToolbar( {
72
73
  getBlockParents,
73
74
  getSelectedBlockClientIds,
74
75
  isBlockValid,
75
- getBlockRootClientId,
76
76
  getBlockEditingMode,
77
77
  getBlockAttributes,
78
+ getBlockParentsByBlockName,
78
79
  } = select( blockEditorStore );
79
80
  const selectedBlockClientIds = getSelectedBlockClientIds();
80
81
  const selectedBlockClientId = selectedBlockClientIds[ 0 ];
81
- const blockRootClientId = getBlockRootClientId( selectedBlockClientId );
82
82
  const parents = getBlockParents( selectedBlockClientId );
83
83
  const firstParentClientId = parents[ parents.length - 1 ];
84
84
  const parentBlockName = getBlockName( firstParentClientId );
85
85
  const parentBlockType = getBlockType( parentBlockName );
86
- const _isDefaultEditingMode =
87
- getBlockEditingMode( selectedBlockClientId ) === 'default';
86
+ const editingMode = getBlockEditingMode( selectedBlockClientId );
87
+ const _isDefaultEditingMode = editingMode === 'default';
88
88
  const _blockName = getBlockName( selectedBlockClientId );
89
89
  const isValid = selectedBlockClientIds.every( ( id ) =>
90
90
  isBlockValid( id )
@@ -96,13 +96,20 @@ export function PrivateBlockToolbar( {
96
96
  ( clientId ) =>
97
97
  !! getBlockAttributes( clientId )?.metadata?.bindings
98
98
  );
99
+
100
+ const _hasParentPattern = selectedBlockClientIds.every(
101
+ ( clientId ) =>
102
+ getBlockParentsByBlockName( clientId, 'core/block', true )
103
+ .length > 0
104
+ );
105
+
99
106
  return {
100
107
  blockClientId: selectedBlockClientId,
101
108
  blockClientIds: selectedBlockClientIds,
109
+ isContentOnlyEditingMode: editingMode === 'contentOnly',
102
110
  isDefaultEditingMode: _isDefaultEditingMode,
103
111
  blockType: selectedBlockClientId && getBlockType( _blockName ),
104
112
  shouldShowVisualToolbar: isValid && isVisual,
105
- rootClientId: blockRootClientId,
106
113
  toolbarKey: `${ selectedBlockClientId }${ firstParentClientId }`,
107
114
  showParentSelector:
108
115
  parentBlockType &&
@@ -115,6 +122,7 @@ export function PrivateBlockToolbar( {
115
122
  selectedBlockClientIds.length === 1 &&
116
123
  _isDefaultEditingMode,
117
124
  isUsingBindings: _isUsingBindings,
125
+ hasParentPattern: _hasParentPattern,
118
126
  };
119
127
  }, [] );
120
128
 
@@ -168,7 +176,9 @@ export function PrivateBlockToolbar( {
168
176
  isLargeViewport &&
169
177
  isDefaultEditingMode && <BlockParentSelector /> }
170
178
  { ( shouldShowVisualToolbar || isMultiToolbar ) &&
171
- ( isDefaultEditingMode || isSynced ) && (
179
+ ( isDefaultEditingMode ||
180
+ ( isContentOnlyEditingMode && ! hasParentPattern ) ||
181
+ isSynced ) && (
172
182
  <div
173
183
  ref={ nodeRef }
174
184
  { ...showHoveredOrFocusedGestures }
@@ -195,7 +205,6 @@ export function PrivateBlockToolbar( {
195
205
  </ToolbarGroup>
196
206
  </div>
197
207
  ) }
198
- <Shuffle clientId={ blockClientId } />
199
208
  { shouldShowVisualToolbar && isMultiToolbar && (
200
209
  <BlockGroupToolbar />
201
210
  ) }
@@ -34,7 +34,14 @@ export default function Shuffle( { clientId, as = Container } ) {
34
34
  const _categories = attributes?.metadata?.categories || EMPTY_ARRAY;
35
35
  const _patternName = attributes?.metadata?.patternName;
36
36
  const rootBlock = getBlockRootClientId( clientId );
37
- const _patterns = __experimentalGetAllowedPatterns( rootBlock );
37
+
38
+ // Calling `__experimentalGetAllowedPatterns` is expensive.
39
+ // Checking if the block can be shuffled prevents unnecessary selector calls.
40
+ // See: https://github.com/WordPress/gutenberg/pull/64736.
41
+ const _patterns =
42
+ _categories.length > 0
43
+ ? __experimentalGetAllowedPatterns( rootBlock )
44
+ : EMPTY_ARRAY;
38
45
  return {
39
46
  categories: _categories,
40
47
  patterns: _patterns,
@@ -45,12 +52,7 @@ export default function Shuffle( { clientId, as = Container } ) {
45
52
  );
46
53
  const { replaceBlocks } = useDispatch( blockEditorStore );
47
54
  const sameCategoryPatternsWithSingleWrapper = useMemo( () => {
48
- if (
49
- ! categories ||
50
- categories.length === 0 ||
51
- ! patterns ||
52
- patterns.length === 0
53
- ) {
55
+ if ( categories.length === 0 || ! patterns || patterns.length === 0 ) {
54
56
  return EMPTY_ARRAY;
55
57
  }
56
58
  return patterns.filter( ( pattern ) => {
@@ -257,6 +257,8 @@ function BlockSelectionButton( { clientId, rootClientId }, ref ) {
257
257
  <BlockDraggable clientIds={ [ clientId ] }>
258
258
  { ( draggableProps ) => (
259
259
  <Button
260
+ // TODO: Switch to `true` (40px size) if possible
261
+ __next40pxDefaultSize={ false }
260
262
  icon={ dragHandle }
261
263
  className="block-selection-button_drag-handle"
262
264
  label={ dragHandleLabel }
@@ -272,6 +274,8 @@ function BlockSelectionButton( { clientId, rootClientId }, ref ) {
272
274
  { editorMode === 'navigation' && (
273
275
  <FlexItem>
274
276
  <Button
277
+ // TODO: Switch to `true` (40px size) if possible
278
+ __next40pxDefaultSize={ false }
275
279
  ref={ ref }
276
280
  onClick={
277
281
  editorMode === 'navigation'
@@ -36,26 +36,30 @@ export default function BlockToolbarPopover( {
36
36
  }, [ clientId ] );
37
37
 
38
38
  const { stopTyping } = useDispatch( blockEditorStore );
39
- const isToolbarForced = useRef( false );
39
+ const isToolbarForcedRef = useRef( false );
40
40
 
41
41
  useShortcut( 'core/block-editor/focus-toolbar', () => {
42
- isToolbarForced.current = true;
42
+ isToolbarForcedRef.current = true;
43
43
  stopTyping( true );
44
44
  } );
45
45
 
46
46
  useEffect( () => {
47
- isToolbarForced.current = false;
47
+ isToolbarForcedRef.current = false;
48
48
  } );
49
49
 
50
+ // If the block has a parent with __experimentalCaptureToolbars enabled,
51
+ // the toolbar should be positioned over the topmost capturing parent.
52
+ const clientIdToPositionOver = capturingClientId || clientId;
53
+
50
54
  const popoverProps = useBlockToolbarPopoverProps( {
51
55
  contentElement: __unstableContentRef?.current,
52
- clientId,
56
+ clientId: clientIdToPositionOver,
53
57
  } );
54
58
 
55
59
  return (
56
60
  ! isTyping && (
57
61
  <BlockPopover
58
- clientId={ capturingClientId || clientId }
62
+ clientId={ clientIdToPositionOver }
59
63
  bottomClientId={ lastClientId }
60
64
  className={ clsx( 'block-editor-block-list__block-popover', {
61
65
  'is-insertion-point-visible': isInsertionPointVisible,
@@ -66,7 +70,7 @@ export default function BlockToolbarPopover( {
66
70
  <PrivateBlockToolbar
67
71
  // If the toolbar is being shown because of being forced
68
72
  // it should focus the toolbar right after the mount.
69
- focusOnMount={ isToolbarForced.current }
73
+ focusOnMount={ isToolbarForcedRef.current }
70
74
  __experimentalInitialIndex={
71
75
  initialToolbarItemIndexRef.current
72
76
  }
@@ -13,7 +13,7 @@
13
13
  .block-editor-block-list__insertion-point-indicator {
14
14
  position: absolute;
15
15
  background: var(--wp-admin-theme-color);
16
- border-radius: 2px;
16
+ border-radius: $radius-small;
17
17
  transform-origin: center;
18
18
  opacity: 0;
19
19
  will-change: transform, opacity;
@@ -63,7 +63,6 @@
63
63
  .block-editor-inserter__toggle.components-button.has-icon {
64
64
  // Basic look
65
65
  background: $gray-900;
66
- border-radius: $radius-block-ui;
67
66
  color: $white;
68
67
  padding: 0;
69
68
 
@@ -95,7 +94,7 @@
95
94
  z-index: z-index(".block-editor-block-list__block-selection-button");
96
95
 
97
96
  // Dark block UI appearance.
98
- border-radius: $radius-block-ui;
97
+ border-radius: $radius-small;
99
98
  background-color: $gray-900;
100
99
 
101
100
  font-size: $default-font-size;
@@ -188,7 +187,7 @@
188
187
 
189
188
  .block-editor-block-contextual-toolbar {
190
189
  border: $border-width solid $gray-900;
191
- border-radius: $radius-block-ui;
190
+ border-radius: $radius-small;
192
191
  overflow: visible; // allow the parent selector to be visible
193
192
  position: static;
194
193
  width: auto;
@@ -17,6 +17,7 @@ import {
17
17
  import { store as blockEditorStore } from '../../store';
18
18
  import { useBlockElement } from '../block-list/use-block-props/use-block-refs';
19
19
  import { hasStickyOrFixedPositionValue } from '../../hooks/position';
20
+ import { getVisibleElementBounds } from '../../utils/dom';
20
21
 
21
22
  const COMMON_PROPS = {
22
23
  placement: 'top-start',
@@ -67,7 +68,7 @@ function getProps(
67
68
  // Get how far the content area has been scrolled.
68
69
  const scrollTop = scrollContainer?.scrollTop || 0;
69
70
 
70
- const blockRect = selectedBlockElement.getBoundingClientRect();
71
+ const blockRect = getVisibleElementBounds( selectedBlockElement );
71
72
  const contentRect = contentElement.getBoundingClientRect();
72
73
 
73
74
  // Get the vertical position of top of the visible content area.
@@ -23,7 +23,6 @@ function ZoomOutModeInserters() {
23
23
  sectionRootClientId,
24
24
  selectedBlockClientId,
25
25
  hoveredBlockClientId,
26
- inserterSearchInputRef,
27
26
  } = useSelect( ( select ) => {
28
27
  const {
29
28
  getSettings,
@@ -33,10 +32,10 @@ function ZoomOutModeInserters() {
33
32
  getSelectedBlockClientId,
34
33
  getHoveredBlockClientId,
35
34
  isBlockInsertionPointVisible,
36
- getInserterSearchInputRef,
35
+ getSectionRootClientId,
37
36
  } = unlock( select( blockEditorStore ) );
38
37
 
39
- const { sectionRootClientId: root } = unlock( getSettings() );
38
+ const root = getSectionRootClientId();
40
39
 
41
40
  return {
42
41
  hasSelection: !! getSelectionStart().clientId,
@@ -48,7 +47,6 @@ function ZoomOutModeInserters() {
48
47
  getSettings().__experimentalSetIsInserterOpened,
49
48
  selectedBlockClientId: getSelectedBlockClientId(),
50
49
  hoveredBlockClientId: getHoveredBlockClientId(),
51
- inserterSearchInputRef: getInserterSearchInputRef(),
52
50
  };
53
51
  }, [] );
54
52
 
@@ -115,7 +113,6 @@ function ZoomOutModeInserters() {
115
113
  showInsertionPoint( sectionRootClientId, index, {
116
114
  operation: 'insert',
117
115
  } );
118
- inserterSearchInputRef?.current?.focus();
119
116
  } }
120
117
  />
121
118
  ) }
@@ -11,12 +11,8 @@ import useSelectedBlockToolProps from './use-selected-block-tool-props';
11
11
  import ZoomOutToolbar from './zoom-out-toolbar';
12
12
 
13
13
  export default function ZoomOutPopover( { clientId, __unstableContentRef } ) {
14
- const {
15
- capturingClientId,
16
- isInsertionPointVisible,
17
- lastClientId,
18
- rootClientId,
19
- } = useSelectedBlockToolProps( clientId );
14
+ const { capturingClientId, isInsertionPointVisible, lastClientId } =
15
+ useSelectedBlockToolProps( clientId );
20
16
 
21
17
  const popoverProps = useBlockToolbarPopoverProps( {
22
18
  contentElement: __unstableContentRef?.current,
@@ -42,8 +38,8 @@ export default function ZoomOutPopover( { clientId, __unstableContentRef } ) {
42
38
  { ...props }
43
39
  >
44
40
  <ZoomOutToolbar
41
+ __unstableContentRef={ __unstableContentRef }
45
42
  clientId={ clientId }
46
- rootClientId={ rootClientId }
47
43
  />
48
44
  </BlockPopover>
49
45
  );