@wordpress/block-editor 12.9.1-next.5a1d1283.0 → 12.10.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 (453) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +33 -3
  3. package/build/components/block-canvas/index.js +107 -0
  4. package/build/components/block-canvas/index.js.map +1 -0
  5. package/build/components/block-inspector/index.js +4 -1
  6. package/build/components/block-inspector/index.js.map +1 -1
  7. package/build/components/block-patterns-list/index.js +19 -4
  8. package/build/components/block-patterns-list/index.js.map +1 -1
  9. package/build/components/block-patterns-paging/index.js +66 -0
  10. package/build/components/block-patterns-paging/index.js.map +1 -0
  11. package/build/components/block-settings-menu/block-settings-dropdown.js +28 -0
  12. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  13. package/build/components/block-settings-menu-controls/index.js +4 -7
  14. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  15. package/build/components/block-styles/index.js +1 -0
  16. package/build/components/block-styles/index.js.map +1 -1
  17. package/build/components/block-toolbar/block-toolbar-menu.native.js +3 -7
  18. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  19. package/build/components/block-tools/block-contextual-toolbar.js +18 -7
  20. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  21. package/build/components/block-tools/block-selection-button.js +5 -1
  22. package/build/components/block-tools/block-selection-button.js.map +1 -1
  23. package/build/components/border-radius-control/input-controls.js +1 -1
  24. package/build/components/border-radius-control/input-controls.js.map +1 -1
  25. package/build/components/border-radius-control/linked-button.js +2 -4
  26. package/build/components/border-radius-control/linked-button.js.map +1 -1
  27. package/build/components/colors/with-colors.js.map +1 -1
  28. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
  29. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  30. package/build/components/default-block-appender/index.native.js +20 -1
  31. package/build/components/default-block-appender/index.native.js.map +1 -1
  32. package/build/components/duotone/utils.js +68 -0
  33. package/build/components/duotone/utils.js.map +1 -1
  34. package/build/components/editor-styles/index.js +28 -9
  35. package/build/components/editor-styles/index.js.map +1 -1
  36. package/build/components/global-styles/hooks.js +2 -101
  37. package/build/components/global-styles/hooks.js.map +1 -1
  38. package/build/components/global-styles/image-settings-panel.js +61 -0
  39. package/build/components/global-styles/image-settings-panel.js.map +1 -0
  40. package/build/components/global-styles/index.js +11 -17
  41. package/build/components/global-styles/index.js.map +1 -1
  42. package/build/components/global-styles/use-global-styles-output.js +19 -15
  43. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  44. package/build/components/global-styles/utils.js +1 -1
  45. package/build/components/global-styles/utils.js.map +1 -1
  46. package/build/components/iframe/index.js +67 -33
  47. package/build/components/iframe/index.js.map +1 -1
  48. package/build/components/image-editor/use-save-image.js +2 -5
  49. package/build/components/image-editor/use-save-image.js.map +1 -1
  50. package/build/components/image-editor/use-transform-image.js +9 -9
  51. package/build/components/image-editor/use-transform-image.js.map +1 -1
  52. package/build/components/index.js +8 -12
  53. package/build/components/index.js.map +1 -1
  54. package/build/components/index.native.js +6 -5
  55. package/build/components/index.native.js.map +1 -1
  56. package/build/components/inner-blocks/use-nested-settings-update.js +13 -7
  57. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  58. package/build/components/inserter/block-patterns-explorer/explorer.js +12 -6
  59. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  60. package/build/components/inserter/block-patterns-explorer/patterns-list.js +57 -23
  61. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  62. package/build/components/inserter/block-patterns-explorer/sidebar.js +24 -9
  63. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  64. package/build/components/inserter/block-patterns-source-filter.js +54 -0
  65. package/build/components/inserter/block-patterns-source-filter.js.map +1 -0
  66. package/build/components/inserter/block-patterns-sync-filter.js +46 -0
  67. package/build/components/inserter/block-patterns-sync-filter.js.map +1 -0
  68. package/build/components/inserter/block-patterns-tab.js +91 -45
  69. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  70. package/build/components/inserter/hooks/use-patterns-paging.js +57 -0
  71. package/build/components/inserter/hooks/use-patterns-paging.js.map +1 -0
  72. package/build/components/inserter/hooks/use-patterns-state.js +21 -10
  73. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  74. package/build/components/inserter/menu.js +13 -11
  75. package/build/components/inserter/menu.js.map +1 -1
  76. package/build/components/inserter/search-results.js +4 -3
  77. package/build/components/inserter/search-results.js.map +1 -1
  78. package/build/components/inserter/tabs.js +1 -12
  79. package/build/components/inserter/tabs.js.map +1 -1
  80. package/build/components/inspector-controls/block-support-slot-container.js +12 -1
  81. package/build/components/inspector-controls/block-support-slot-container.js.map +1 -1
  82. package/build/components/inspector-controls/fill.js +24 -13
  83. package/build/components/inspector-controls/fill.js.map +1 -1
  84. package/build/components/inspector-controls/groups.js +5 -3
  85. package/build/components/inspector-controls/groups.js.map +1 -1
  86. package/build/components/inspector-controls/slot.js +13 -0
  87. package/build/components/inspector-controls/slot.js.map +1 -1
  88. package/build/components/inspector-controls-tabs/styles-tab.js +3 -0
  89. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  90. package/build/components/link-control/index.js +12 -2
  91. package/build/components/link-control/index.js.map +1 -1
  92. package/build/components/list-view/block-select-button.js +1 -3
  93. package/build/components/list-view/block-select-button.js.map +1 -1
  94. package/build/components/list-view/block.js +13 -1
  95. package/build/components/list-view/block.js.map +1 -1
  96. package/build/components/list-view/use-block-selection.js +29 -24
  97. package/build/components/list-view/use-block-selection.js.map +1 -1
  98. package/build/components/media-placeholder/index.js +2 -2
  99. package/build/components/media-placeholder/index.js.map +1 -1
  100. package/build/components/media-placeholder/index.native.js +11 -11
  101. package/build/components/media-placeholder/index.native.js.map +1 -1
  102. package/build/components/media-replace-flow/index.js +2 -3
  103. package/build/components/media-replace-flow/index.js.map +1 -1
  104. package/build/components/media-upload/constants.js +30 -0
  105. package/build/components/media-upload/constants.js.map +1 -0
  106. package/build/components/media-upload/index.native.js +63 -53
  107. package/build/components/media-upload/index.native.js.map +1 -1
  108. package/build/components/preview-options/index.js +1 -1
  109. package/build/components/preview-options/index.js.map +1 -1
  110. package/build/components/rich-text/index.js +34 -35
  111. package/build/components/rich-text/index.js.map +1 -1
  112. package/build/components/rich-text/index.native.js +14 -32
  113. package/build/components/rich-text/index.native.js.map +1 -1
  114. package/build/components/rich-text/multiline.js +95 -0
  115. package/build/components/rich-text/multiline.js.map +1 -0
  116. package/build/components/rich-text/split-value.js +10 -16
  117. package/build/components/rich-text/split-value.js.map +1 -1
  118. package/build/components/rich-text/use-enter.js +31 -40
  119. package/build/components/rich-text/use-enter.js.map +1 -1
  120. package/build/components/rich-text/use-paste-handler.js +18 -33
  121. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  122. package/build/components/spacing-sizes-control/utils.js +1 -1
  123. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  124. package/build/components/use-block-commands/index.js +30 -18
  125. package/build/components/use-block-commands/index.js.map +1 -1
  126. package/build/components/use-block-display-information/index.js +5 -2
  127. package/build/components/use-block-display-information/index.js.map +1 -1
  128. package/build/hooks/background.js +258 -0
  129. package/build/hooks/background.js.map +1 -0
  130. package/build/hooks/block-hooks.js +188 -0
  131. package/build/hooks/block-hooks.js.map +1 -0
  132. package/build/hooks/block-rename-ui.js +160 -0
  133. package/build/hooks/block-rename-ui.js.map +1 -0
  134. package/build/hooks/duotone.js +29 -42
  135. package/build/hooks/duotone.js.map +1 -1
  136. package/build/hooks/index.js +2 -2
  137. package/build/hooks/index.js.map +1 -1
  138. package/build/hooks/layout.js +31 -14
  139. package/build/hooks/layout.js.map +1 -1
  140. package/build/hooks/position.js +4 -2
  141. package/build/hooks/position.js.map +1 -1
  142. package/build/hooks/style.js +10 -3
  143. package/build/hooks/style.js.map +1 -1
  144. package/build/private-apis.js +2 -0
  145. package/build/private-apis.js.map +1 -1
  146. package/build/store/actions.js +33 -10
  147. package/build/store/actions.js.map +1 -1
  148. package/build/store/private-actions.js +42 -8
  149. package/build/store/private-actions.js.map +1 -1
  150. package/build/store/private-selectors.js +23 -0
  151. package/build/store/private-selectors.js.map +1 -1
  152. package/build/store/reducer.js +43 -1
  153. package/build/store/reducer.js.map +1 -1
  154. package/build/store/selectors.js +84 -23
  155. package/build/store/selectors.js.map +1 -1
  156. package/build/store/utils.js +0 -4
  157. package/build/store/utils.js.map +1 -1
  158. package/build-module/components/block-canvas/index.js +97 -0
  159. package/build-module/components/block-canvas/index.js.map +1 -0
  160. package/build-module/components/block-inspector/index.js +4 -1
  161. package/build-module/components/block-inspector/index.js.map +1 -1
  162. package/build-module/components/block-patterns-list/index.js +20 -5
  163. package/build-module/components/block-patterns-list/index.js.map +1 -1
  164. package/build-module/components/block-patterns-paging/index.js +59 -0
  165. package/build-module/components/block-patterns-paging/index.js.map +1 -0
  166. package/build-module/components/block-settings-menu/block-settings-dropdown.js +28 -0
  167. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  168. package/build-module/components/block-settings-menu-controls/index.js +4 -7
  169. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  170. package/build-module/components/block-styles/index.js +1 -0
  171. package/build-module/components/block-styles/index.js.map +1 -1
  172. package/build-module/components/block-toolbar/block-toolbar-menu.native.js +3 -7
  173. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  174. package/build-module/components/block-tools/block-contextual-toolbar.js +18 -7
  175. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  176. package/build-module/components/block-tools/block-selection-button.js +5 -1
  177. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  178. package/build-module/components/border-radius-control/input-controls.js +1 -1
  179. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  180. package/build-module/components/border-radius-control/linked-button.js +2 -4
  181. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  182. package/build-module/components/colors/with-colors.js.map +1 -1
  183. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
  184. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  185. package/build-module/components/default-block-appender/index.native.js +20 -1
  186. package/build-module/components/default-block-appender/index.native.js.map +1 -1
  187. package/build-module/components/duotone/utils.js +65 -0
  188. package/build-module/components/duotone/utils.js.map +1 -1
  189. package/build-module/components/editor-styles/index.js +28 -9
  190. package/build-module/components/editor-styles/index.js.map +1 -1
  191. package/build-module/components/global-styles/hooks.js +3 -100
  192. package/build-module/components/global-styles/hooks.js.map +1 -1
  193. package/build-module/components/global-styles/image-settings-panel.js +53 -0
  194. package/build-module/components/global-styles/image-settings-panel.js.map +1 -0
  195. package/build-module/components/global-styles/index.js +2 -2
  196. package/build-module/components/global-styles/index.js.map +1 -1
  197. package/build-module/components/global-styles/use-global-styles-output.js +18 -16
  198. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  199. package/build-module/components/global-styles/utils.js +1 -1
  200. package/build-module/components/global-styles/utils.js.map +1 -1
  201. package/build-module/components/iframe/index.js +66 -33
  202. package/build-module/components/iframe/index.js.map +1 -1
  203. package/build-module/components/image-editor/use-save-image.js +2 -5
  204. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  205. package/build-module/components/image-editor/use-transform-image.js +9 -9
  206. package/build-module/components/image-editor/use-transform-image.js.map +1 -1
  207. package/build-module/components/index.js +1 -1
  208. package/build-module/components/index.js.map +1 -1
  209. package/build-module/components/index.native.js +2 -1
  210. package/build-module/components/index.native.js.map +1 -1
  211. package/build-module/components/inner-blocks/use-nested-settings-update.js +14 -8
  212. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  213. package/build-module/components/inserter/block-patterns-explorer/explorer.js +12 -6
  214. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  215. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +59 -25
  216. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  217. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +23 -9
  218. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  219. package/build-module/components/inserter/block-patterns-source-filter.js +44 -0
  220. package/build-module/components/inserter/block-patterns-source-filter.js.map +1 -0
  221. package/build-module/components/inserter/block-patterns-sync-filter.js +38 -0
  222. package/build-module/components/inserter/block-patterns-sync-filter.js.map +1 -0
  223. package/build-module/components/inserter/block-patterns-tab.js +87 -46
  224. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  225. package/build-module/components/inserter/hooks/use-patterns-paging.js +50 -0
  226. package/build-module/components/inserter/hooks/use-patterns-paging.js.map +1 -0
  227. package/build-module/components/inserter/hooks/use-patterns-state.js +22 -10
  228. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  229. package/build-module/components/inserter/menu.js +13 -11
  230. package/build-module/components/inserter/menu.js.map +1 -1
  231. package/build-module/components/inserter/search-results.js +4 -3
  232. package/build-module/components/inserter/search-results.js.map +1 -1
  233. package/build-module/components/inserter/tabs.js +1 -12
  234. package/build-module/components/inserter/tabs.js.map +1 -1
  235. package/build-module/components/inspector-controls/block-support-slot-container.js +13 -2
  236. package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -1
  237. package/build-module/components/inspector-controls/fill.js +25 -14
  238. package/build-module/components/inspector-controls/fill.js.map +1 -1
  239. package/build-module/components/inspector-controls/groups.js +5 -3
  240. package/build-module/components/inspector-controls/groups.js.map +1 -1
  241. package/build-module/components/inspector-controls/slot.js +15 -1
  242. package/build-module/components/inspector-controls/slot.js.map +1 -1
  243. package/build-module/components/inspector-controls-tabs/styles-tab.js +3 -0
  244. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  245. package/build-module/components/link-control/index.js +12 -2
  246. package/build-module/components/link-control/index.js.map +1 -1
  247. package/build-module/components/list-view/block-select-button.js +1 -3
  248. package/build-module/components/list-view/block-select-button.js.map +1 -1
  249. package/build-module/components/list-view/block.js +13 -1
  250. package/build-module/components/list-view/block.js.map +1 -1
  251. package/build-module/components/list-view/use-block-selection.js +30 -25
  252. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  253. package/build-module/components/media-placeholder/index.js +2 -2
  254. package/build-module/components/media-placeholder/index.js.map +1 -1
  255. package/build-module/components/media-placeholder/index.native.js +7 -7
  256. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  257. package/build-module/components/media-replace-flow/index.js +2 -3
  258. package/build-module/components/media-replace-flow/index.js.map +1 -1
  259. package/build-module/components/media-upload/constants.js +14 -0
  260. package/build-module/components/media-upload/constants.js.map +1 -0
  261. package/build-module/components/media-upload/index.native.js +53 -34
  262. package/build-module/components/media-upload/index.native.js.map +1 -1
  263. package/build-module/components/preview-options/index.js +1 -1
  264. package/build-module/components/preview-options/index.js.map +1 -1
  265. package/build-module/components/rich-text/index.js +35 -37
  266. package/build-module/components/rich-text/index.js.map +1 -1
  267. package/build-module/components/rich-text/index.native.js +15 -33
  268. package/build-module/components/rich-text/index.native.js.map +1 -1
  269. package/build-module/components/rich-text/multiline.js +87 -0
  270. package/build-module/components/rich-text/multiline.js.map +1 -0
  271. package/build-module/components/rich-text/split-value.js +10 -16
  272. package/build-module/components/rich-text/split-value.js.map +1 -1
  273. package/build-module/components/rich-text/use-enter.js +33 -42
  274. package/build-module/components/rich-text/use-enter.js.map +1 -1
  275. package/build-module/components/rich-text/use-paste-handler.js +19 -34
  276. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  277. package/build-module/components/spacing-sizes-control/utils.js +2 -2
  278. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  279. package/build-module/components/use-block-commands/index.js +28 -16
  280. package/build-module/components/use-block-commands/index.js.map +1 -1
  281. package/build-module/components/use-block-display-information/index.js +5 -2
  282. package/build-module/components/use-block-display-information/index.js.map +1 -1
  283. package/build-module/hooks/background.js +244 -0
  284. package/build-module/hooks/background.js.map +1 -0
  285. package/build-module/hooks/block-hooks.js +181 -0
  286. package/build-module/hooks/block-hooks.js.map +1 -0
  287. package/build-module/hooks/block-rename-ui.js +153 -0
  288. package/build-module/hooks/block-rename-ui.js.map +1 -0
  289. package/build-module/hooks/duotone.js +26 -39
  290. package/build-module/hooks/duotone.js.map +1 -1
  291. package/build-module/hooks/index.js +2 -2
  292. package/build-module/hooks/index.js.map +1 -1
  293. package/build-module/hooks/layout.js +33 -16
  294. package/build-module/hooks/layout.js.map +1 -1
  295. package/build-module/hooks/position.js +4 -2
  296. package/build-module/hooks/position.js.map +1 -1
  297. package/build-module/hooks/style.js +10 -3
  298. package/build-module/hooks/style.js.map +1 -1
  299. package/build-module/private-apis.js +2 -0
  300. package/build-module/private-apis.js.map +1 -1
  301. package/build-module/store/actions.js +33 -10
  302. package/build-module/store/actions.js.map +1 -1
  303. package/build-module/store/private-actions.js +39 -8
  304. package/build-module/store/private-actions.js.map +1 -1
  305. package/build-module/store/private-selectors.js +21 -0
  306. package/build-module/store/private-selectors.js.map +1 -1
  307. package/build-module/store/reducer.js +41 -1
  308. package/build-module/store/reducer.js.map +1 -1
  309. package/build-module/store/selectors.js +78 -22
  310. package/build-module/store/selectors.js.map +1 -1
  311. package/build-module/store/utils.js +0 -4
  312. package/build-module/store/utils.js.map +1 -1
  313. package/build-style/content-rtl.css +0 -1
  314. package/build-style/content.css +0 -1
  315. package/build-style/style-rtl.css +170 -127
  316. package/build-style/style.css +170 -127
  317. package/package.json +32 -32
  318. package/src/components/block-canvas/index.js +108 -0
  319. package/src/components/block-inspector/index.js +5 -1
  320. package/src/components/block-list/content.scss +0 -1
  321. package/src/components/block-patterns-list/index.js +32 -7
  322. package/src/components/block-patterns-list/style.scss +26 -9
  323. package/src/components/block-patterns-paging/index.js +92 -0
  324. package/src/components/block-patterns-paging/style.scss +42 -0
  325. package/src/components/block-settings-menu/block-settings-dropdown.js +44 -0
  326. package/src/components/block-settings-menu-controls/index.js +4 -9
  327. package/src/components/block-styles/index.js +1 -0
  328. package/src/components/block-styles/style.scss +3 -3
  329. package/src/components/block-toolbar/block-toolbar-menu.native.js +1 -6
  330. package/src/components/block-tools/block-contextual-toolbar.js +16 -5
  331. package/src/components/block-tools/block-selection-button.js +9 -1
  332. package/src/components/block-tools/style.scss +0 -98
  333. package/src/components/border-radius-control/input-controls.js +1 -1
  334. package/src/components/border-radius-control/linked-button.js +8 -11
  335. package/src/components/color-palette/test/__snapshots__/control.js.snap +34 -21
  336. package/src/components/colors/with-colors.js +3 -2
  337. package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -35
  338. package/src/components/default-block-appender/index.native.js +26 -3
  339. package/src/components/duotone/utils.js +65 -0
  340. package/src/components/editor-styles/index.js +32 -23
  341. package/src/components/global-styles/hooks.js +4 -112
  342. package/src/components/global-styles/image-settings-panel.js +71 -0
  343. package/src/components/global-styles/index.js +4 -3
  344. package/src/components/global-styles/use-global-styles-output.js +25 -16
  345. package/src/components/global-styles/utils.js +1 -2
  346. package/src/components/iframe/index.js +72 -33
  347. package/src/components/image-editor/use-save-image.js +2 -9
  348. package/src/components/image-editor/use-transform-image.js +9 -9
  349. package/src/components/index.js +1 -1
  350. package/src/components/index.native.js +2 -2
  351. package/src/components/inner-blocks/use-nested-settings-update.js +15 -10
  352. package/src/components/inserter/block-patterns-explorer/explorer.js +17 -5
  353. package/src/components/inserter/block-patterns-explorer/patterns-list.js +109 -40
  354. package/src/components/inserter/block-patterns-explorer/sidebar.js +23 -8
  355. package/src/components/inserter/block-patterns-source-filter.js +40 -0
  356. package/src/components/inserter/block-patterns-sync-filter.js +35 -0
  357. package/src/components/inserter/block-patterns-tab.js +168 -57
  358. package/src/components/inserter/hooks/use-patterns-paging.js +65 -0
  359. package/src/components/inserter/hooks/use-patterns-state.js +27 -16
  360. package/src/components/inserter/menu.js +15 -17
  361. package/src/components/inserter/search-results.js +6 -4
  362. package/src/components/inserter/style.scss +23 -2
  363. package/src/components/inserter/tabs.js +2 -12
  364. package/src/components/inserter/test/index.native.js +8 -12
  365. package/src/components/inspector-controls/block-support-slot-container.js +19 -3
  366. package/src/components/inspector-controls/fill.js +28 -14
  367. package/src/components/inspector-controls/groups.js +6 -2
  368. package/src/components/inspector-controls/slot.js +28 -3
  369. package/src/components/inspector-controls-tabs/styles-tab.js +4 -0
  370. package/src/components/link-control/index.js +13 -0
  371. package/src/components/link-control/style.scss +23 -2
  372. package/src/components/link-control/test/index.js +88 -6
  373. package/src/components/list-view/block-select-button.js +1 -3
  374. package/src/components/list-view/block.js +19 -1
  375. package/src/components/list-view/style.scss +1 -2
  376. package/src/components/list-view/use-block-selection.js +38 -32
  377. package/src/components/media-placeholder/README.md +2 -2
  378. package/src/components/media-placeholder/index.js +2 -2
  379. package/src/components/media-placeholder/index.native.js +11 -12
  380. package/src/components/media-replace-flow/index.js +2 -2
  381. package/src/components/media-replace-flow/test/index.js +5 -23
  382. package/src/components/media-upload/README.md +3 -2
  383. package/src/components/media-upload/constants.js +15 -0
  384. package/src/components/media-upload/index.native.js +66 -40
  385. package/src/components/media-upload/style.native.scss +4 -0
  386. package/src/components/media-upload/test/index.native.js +2 -2
  387. package/src/components/preview-options/README.md +7 -0
  388. package/src/components/preview-options/index.js +1 -1
  389. package/src/components/rich-text/index.js +48 -44
  390. package/src/components/rich-text/index.native.js +14 -42
  391. package/src/components/rich-text/multiline.js +121 -0
  392. package/src/components/rich-text/split-value.js +10 -35
  393. package/src/components/rich-text/use-enter.js +32 -42
  394. package/src/components/rich-text/use-paste-handler.js +16 -40
  395. package/src/components/spacing-sizes-control/style.scss +5 -7
  396. package/src/components/spacing-sizes-control/utils.js +1 -2
  397. package/src/components/use-block-commands/index.js +28 -20
  398. package/src/components/use-block-display-information/index.js +3 -0
  399. package/src/hooks/background.js +288 -0
  400. package/src/hooks/background.scss +57 -0
  401. package/src/hooks/block-hooks.js +257 -0
  402. package/src/hooks/block-hooks.scss +16 -0
  403. package/src/hooks/block-rename-ui.js +230 -0
  404. package/src/hooks/block-rename-ui.scss +3 -0
  405. package/src/hooks/duotone.js +42 -43
  406. package/src/hooks/index.js +2 -2
  407. package/src/hooks/layout.js +31 -33
  408. package/src/hooks/position.js +4 -3
  409. package/src/hooks/style.js +11 -2
  410. package/src/hooks/test/align.native.js +4 -3
  411. package/src/private-apis.js +2 -0
  412. package/src/store/actions.js +52 -10
  413. package/src/store/private-actions.js +37 -6
  414. package/src/store/private-selectors.js +21 -0
  415. package/src/store/reducer.js +38 -0
  416. package/src/store/selectors.js +107 -26
  417. package/src/store/test/actions.js +19 -8
  418. package/src/store/test/private-actions.js +17 -0
  419. package/src/store/test/reducer.js +25 -0
  420. package/src/store/test/selectors.js +130 -123
  421. package/src/store/utils.js +3 -10
  422. package/src/style.scss +4 -0
  423. package/build/components/duotone/components.js +0 -135
  424. package/build/components/duotone/components.js.map +0 -1
  425. package/build/components/duotone/index.js +0 -38
  426. package/build/components/duotone/index.js.map +0 -1
  427. package/build/components/global-styles/behaviors-panel.js +0 -64
  428. package/build/components/global-styles/behaviors-panel.js.map +0 -1
  429. package/build/components/inserter/reusable-blocks-tab.js +0 -85
  430. package/build/components/inserter/reusable-blocks-tab.js.map +0 -1
  431. package/build/hooks/auto-inserting-blocks.js +0 -174
  432. package/build/hooks/auto-inserting-blocks.js.map +0 -1
  433. package/build/hooks/behaviors.js +0 -173
  434. package/build/hooks/behaviors.js.map +0 -1
  435. package/build-module/components/duotone/components.js +0 -126
  436. package/build-module/components/duotone/components.js.map +0 -1
  437. package/build-module/components/duotone/index.js +0 -3
  438. package/build-module/components/duotone/index.js.map +0 -1
  439. package/build-module/components/global-styles/behaviors-panel.js +0 -57
  440. package/build-module/components/global-styles/behaviors-panel.js.map +0 -1
  441. package/build-module/components/inserter/reusable-blocks-tab.js +0 -76
  442. package/build-module/components/inserter/reusable-blocks-tab.js.map +0 -1
  443. package/build-module/hooks/auto-inserting-blocks.js +0 -167
  444. package/build-module/hooks/auto-inserting-blocks.js.map +0 -1
  445. package/build-module/hooks/behaviors.js +0 -166
  446. package/build-module/hooks/behaviors.js.map +0 -1
  447. package/src/components/duotone/components.js +0 -133
  448. package/src/components/duotone/index.js +0 -7
  449. package/src/components/global-styles/behaviors-panel.js +0 -71
  450. package/src/components/inserter/reusable-blocks-tab.js +0 -84
  451. package/src/components/inserter/test/reusable-blocks-tab.js +0 -73
  452. package/src/hooks/auto-inserting-blocks.js +0 -232
  453. package/src/hooks/behaviors.js +0 -206
@@ -426,7 +426,6 @@
426
426
  }
427
427
 
428
428
  .block-editor-iframe__body {
429
- background-color: $white;
430
429
  transition: all 0.3s;
431
430
  transform-origin: top center;
432
431
  }
@@ -1,3 +1,8 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
@@ -8,9 +13,11 @@ import {
8
13
  __unstableUseCompositeState as useCompositeState,
9
14
  __unstableCompositeItem as CompositeItem,
10
15
  Tooltip,
16
+ __experimentalHStack as HStack,
11
17
  } from '@wordpress/components';
12
18
  import { useInstanceId } from '@wordpress/compose';
13
19
  import { __ } from '@wordpress/i18n';
20
+ import { Icon, symbol } from '@wordpress/icons';
14
21
 
15
22
  /**
16
23
  * Internal dependencies
@@ -63,14 +70,20 @@ function BlockPattern( {
63
70
  } }
64
71
  >
65
72
  <WithToolTip
66
- showTooltip={ showTooltip }
73
+ showTooltip={ showTooltip && ! pattern.id }
67
74
  title={ pattern.title }
68
75
  >
69
76
  <CompositeItem
70
77
  role="option"
71
78
  as="div"
72
79
  { ...composite }
73
- className="block-editor-block-patterns-list__item"
80
+ className={ classnames(
81
+ 'block-editor-block-patterns-list__item',
82
+ {
83
+ 'block-editor-block-patterns-list__list-item-synced':
84
+ pattern.id && ! pattern.syncStatus,
85
+ }
86
+ ) }
74
87
  onClick={ () => {
75
88
  onClick( pattern, blocks );
76
89
  onHover?.( null );
@@ -91,11 +104,23 @@ function BlockPattern( {
91
104
  blocks={ blocks }
92
105
  viewportWidth={ viewportWidth }
93
106
  />
94
- { ! showTooltip && (
95
- <div className="block-editor-block-patterns-list__item-title">
96
- { pattern.title }
97
- </div>
98
- ) }
107
+
108
+ <HStack className="block-editor-patterns__pattern-details">
109
+ { pattern.id && ! pattern.syncStatus && (
110
+ <div className="block-editor-patterns__pattern-icon-wrapper">
111
+ <Icon
112
+ className="block-editor-patterns__pattern-icon"
113
+ icon={ symbol }
114
+ />
115
+ </div>
116
+ ) }
117
+ { ( ! showTooltip || pattern.id ) && (
118
+ <div className="block-editor-block-patterns-list__item-title">
119
+ { pattern.title }
120
+ </div>
121
+ ) }
122
+ </HStack>
123
+
99
124
  { !! pattern.description && (
100
125
  <VisuallyHidden id={ descriptionId }>
101
126
  { pattern.description }
@@ -11,7 +11,7 @@
11
11
  min-height: 100px;
12
12
  }
13
13
 
14
- &[draggable="true"] .block-editor-block-preview__container {
14
+ &[draggable="true"] {
15
15
  cursor: grab;
16
16
  }
17
17
  }
@@ -27,22 +27,39 @@
27
27
  }
28
28
 
29
29
  .block-editor-block-patterns-list__item-title {
30
- padding-top: $grid-unit-10;
31
- font-size: 12px;
32
- text-align: center;
30
+ text-align: left;
31
+ flex-grow: 1;
33
32
  }
34
33
 
35
34
  &:hover .block-editor-block-preview__container {
36
- box-shadow: 0 0 0 2px var(--wp-admin-theme-color);
35
+ box-shadow: 0 0 0 2px $gray-900;
37
36
  }
38
37
 
39
38
  &:focus .block-editor-block-preview__container {
40
- @include button-style-outset__focus(var(--wp-admin-theme-color));
39
+ @include button-style-outset__focus($gray-900);
41
40
  }
42
41
 
42
+ &.block-editor-block-patterns-list__list-item-synced {
43
+ &:hover,
44
+ &:focus {
45
+ .block-editor-block-preview__container {
46
+ box-shadow:
47
+ 0 0 0 2px var(--wp-block-synced-color),
48
+ 0 15px 25px rgb(0 0 0 / 7%);
49
+ }
50
+ }
51
+ }
52
+
53
+ .block-editor-patterns__pattern-details {
54
+ align-items: center;
55
+ margin-top: $grid-unit-10;
56
+ }
43
57
 
44
- &:hover .block-editor-block-patterns-list__item-title,
45
- &:focus .block-editor-block-patterns-list__item-title {
46
- color: var(--wp-admin-theme-color);
58
+ .block-editor-patterns__pattern-icon-wrapper {
59
+ min-width: 24px;
60
+ height: 24px;
61
+ .block-editor-patterns__pattern-icon {
62
+ fill: var(--wp-block-synced-color);
63
+ }
47
64
  }
48
65
  }
@@ -0,0 +1,92 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ __experimentalVStack as VStack,
6
+ __experimentalHStack as HStack,
7
+ __experimentalText as Text,
8
+ Button,
9
+ } from '@wordpress/components';
10
+ import { __, _x, _n, sprintf } from '@wordpress/i18n';
11
+
12
+ export default function Pagination( {
13
+ currentPage,
14
+ numPages,
15
+ changePage,
16
+ totalItems,
17
+ } ) {
18
+ return (
19
+ <VStack>
20
+ <Text variant="muted">
21
+ {
22
+ // translators: %s: Total number of patterns.
23
+ sprintf(
24
+ // translators: %s: Total number of patterns.
25
+ _n( '%s item', '%s items', totalItems ),
26
+ totalItems
27
+ )
28
+ }
29
+ </Text>
30
+ <HStack
31
+ expanded={ false }
32
+ spacing={ 3 }
33
+ justify="flex-start"
34
+ className="block-editor-patterns__grid-pagination"
35
+ >
36
+ <HStack
37
+ expanded={ false }
38
+ spacing={ 1 }
39
+ className="block-editor-patterns__grid-pagination-previous"
40
+ >
41
+ <Button
42
+ variant="tertiary"
43
+ onClick={ () => changePage( 1 ) }
44
+ disabled={ currentPage === 1 }
45
+ aria-label={ __( 'First page' ) }
46
+ >
47
+ <span>«</span>
48
+ </Button>
49
+ <Button
50
+ variant="tertiary"
51
+ onClick={ () => changePage( currentPage - 1 ) }
52
+ disabled={ currentPage === 1 }
53
+ aria-label={ __( 'Previous page' ) }
54
+ >
55
+ <span>‹</span>
56
+ </Button>
57
+ </HStack>
58
+ <Text variant="muted">
59
+ { sprintf(
60
+ // translators: %1$s: Current page number, %2$s: Total number of pages.
61
+ _x( '%1$s of %2$s', 'paging' ),
62
+ currentPage,
63
+ numPages
64
+ ) }
65
+ </Text>
66
+ <HStack
67
+ expanded={ false }
68
+ spacing={ 1 }
69
+ className="block-editor-patterns__grid-pagination-next"
70
+ >
71
+ <Button
72
+ variant="tertiary"
73
+ onClick={ () => changePage( currentPage + 1 ) }
74
+ disabled={ currentPage === numPages }
75
+ aria-label={ __( 'Next page' ) }
76
+ >
77
+ <span>›</span>
78
+ </Button>
79
+ <Button
80
+ variant="tertiary"
81
+ onClick={ () => changePage( numPages ) }
82
+ disabled={ currentPage === numPages }
83
+ aria-label={ __( 'Last page' ) }
84
+ size="default"
85
+ >
86
+ <span>»</span>
87
+ </Button>
88
+ </HStack>
89
+ </HStack>
90
+ </VStack>
91
+ );
92
+ }
@@ -0,0 +1,42 @@
1
+ .block-editor-patterns__grid-pagination {
2
+ border-top: 1px solid $gray-800;
3
+ padding: $grid-unit-05;
4
+
5
+ .components-button.is-tertiary {
6
+ width: auto;
7
+ height: $button-size-compact;
8
+ justify-content: center;
9
+
10
+ &:disabled {
11
+ color: $gray-600;
12
+ background: none;
13
+ }
14
+
15
+ &:hover:not(:disabled) {
16
+ color: $white;
17
+ background-color: $gray-700;
18
+ }
19
+ }
20
+ }
21
+
22
+ .show-icon-labels {
23
+ .block-editor-patterns__grid-pagination {
24
+ flex-direction: column;
25
+ .block-editor-patterns__grid-pagination-previous,
26
+ .block-editor-patterns__grid-pagination-next {
27
+ flex-direction: column;
28
+ }
29
+ .components-button {
30
+ width: auto;
31
+ // Hide the button icons when labels are set to display...
32
+ span {
33
+ display: none;
34
+ }
35
+ // ... and display labels.
36
+ // Uses ::before as ::after is already used for active tab styling.
37
+ &::before {
38
+ content: attr(aria-label);
39
+ }
40
+ }
41
+ }
42
+ }
@@ -31,6 +31,7 @@ import BlockHTMLConvertButton from './block-html-convert-button';
31
31
  import __unstableBlockSettingsMenuFirstItem from './block-settings-menu-first-item';
32
32
  import BlockSettingsMenuControls from '../block-settings-menu-controls';
33
33
  import { store as blockEditorStore } from '../../store';
34
+ import { unlock } from '../../lock-unlock';
34
35
  import { useShowHoveredOrFocusedGestures } from '../block-toolbar/utils';
35
36
 
36
37
  const POPOVER_PROPS = {
@@ -47,12 +48,15 @@ function CopyMenuItem( { blocks, onCopy, label } ) {
47
48
  }
48
49
 
49
50
  export function BlockSettingsDropdown( {
51
+ block,
50
52
  clientIds,
51
53
  __experimentalSelectBlock,
52
54
  children,
53
55
  __unstableDisplayLocation,
54
56
  ...props
55
57
  } ) {
58
+ // Get the client id of the current block for this menu, if one is set.
59
+ const currentClientId = block?.clientId;
56
60
  const blockClientIds = Array.isArray( clientIds )
57
61
  ? clientIds
58
62
  : [ clientIds ];
@@ -102,6 +106,16 @@ export function BlockSettingsDropdown( {
102
106
  const { getBlockOrder, getSelectedBlockClientIds } =
103
107
  useSelect( blockEditorStore );
104
108
 
109
+ const openedBlockSettingsMenu = useSelect(
110
+ ( select ) =>
111
+ unlock( select( blockEditorStore ) ).getOpenedBlockSettingsMenu(),
112
+ []
113
+ );
114
+
115
+ const { setOpenedBlockSettingsMenu } = unlock(
116
+ useDispatch( blockEditorStore )
117
+ );
118
+
105
119
  const shortcuts = useSelect( ( select ) => {
106
120
  const { getShortcutRepresentation } = select( keyboardShortcutsStore );
107
121
  return {
@@ -174,6 +188,32 @@ export function BlockSettingsDropdown( {
174
188
  const parentBlockIsSelected =
175
189
  selectedBlockClientIds?.includes( firstParentClientId );
176
190
 
191
+ // When a currentClientId is in use, treat the menu as a controlled component.
192
+ // This ensures that only one block settings menu is open at a time.
193
+ // This is a temporary solution to work around an issue with `onFocusOutside`
194
+ // where it does not allow a dropdown to be closed if focus was never within
195
+ // the dropdown to begin with. Examples include a user either CMD+Clicking or
196
+ // right clicking into an inactive window.
197
+ // See: https://github.com/WordPress/gutenberg/pull/54083
198
+ const open = ! currentClientId
199
+ ? undefined
200
+ : openedBlockSettingsMenu === currentClientId || false;
201
+
202
+ const onToggle = useCallback(
203
+ ( localOpen ) => {
204
+ if ( localOpen && openedBlockSettingsMenu !== currentClientId ) {
205
+ setOpenedBlockSettingsMenu( currentClientId );
206
+ } else if (
207
+ ! localOpen &&
208
+ openedBlockSettingsMenu &&
209
+ openedBlockSettingsMenu === currentClientId
210
+ ) {
211
+ setOpenedBlockSettingsMenu( undefined );
212
+ }
213
+ },
214
+ [ currentClientId, openedBlockSettingsMenu, setOpenedBlockSettingsMenu ]
215
+ );
216
+
177
217
  return (
178
218
  <BlockActions
179
219
  clientIds={ clientIds }
@@ -199,6 +239,8 @@ export function BlockSettingsDropdown( {
199
239
  label={ __( 'Options' ) }
200
240
  className="block-editor-block-settings-menu"
201
241
  popoverProps={ POPOVER_PROPS }
242
+ open={ open }
243
+ onToggle={ onToggle }
202
244
  noIcons
203
245
  menuProps={ {
204
246
  /**
@@ -230,6 +272,7 @@ export function BlockSettingsDropdown( {
230
272
  canInsertDefaultBlock
231
273
  ) {
232
274
  event.preventDefault();
275
+ setOpenedBlockSettingsMenu( undefined );
233
276
  onInsertAfter();
234
277
  } else if (
235
278
  isMatch(
@@ -239,6 +282,7 @@ export function BlockSettingsDropdown( {
239
282
  canInsertDefaultBlock
240
283
  ) {
241
284
  event.preventDefault();
285
+ setOpenedBlockSettingsMenu( undefined );
242
286
  onInsertBefore();
243
287
  }
244
288
  },
@@ -29,19 +29,15 @@ const BlockSettingsMenuControlsSlot = ( {
29
29
  clientIds = null,
30
30
  __unstableDisplayLocation,
31
31
  } ) => {
32
- const { selectedBlocks, selectedClientIds, canRemove } = useSelect(
32
+ const { selectedBlocks, selectedClientIds } = useSelect(
33
33
  ( select ) => {
34
- const {
35
- getBlockNamesByClientId,
36
- getSelectedBlockClientIds,
37
- canRemoveBlocks,
38
- } = select( blockEditorStore );
34
+ const { getBlockNamesByClientId, getSelectedBlockClientIds } =
35
+ select( blockEditorStore );
39
36
  const ids =
40
37
  clientIds !== null ? clientIds : getSelectedBlockClientIds();
41
38
  return {
42
39
  selectedBlocks: getBlockNamesByClientId( ids ),
43
40
  selectedClientIds: ids,
44
- canRemove: canRemoveBlocks( ids ),
45
41
  };
46
42
  },
47
43
  [ clientIds ]
@@ -55,8 +51,7 @@ const BlockSettingsMenuControlsSlot = ( {
55
51
  const convertToGroupButtonProps =
56
52
  useConvertToGroupButtonProps( selectedClientIds );
57
53
  const { isGroupable, isUngroupable } = convertToGroupButtonProps;
58
- const showConvertToGroupButton =
59
- ( isGroupable || isUngroupable ) && canRemove;
54
+ const showConvertToGroupButton = isGroupable || isUngroupable;
60
55
 
61
56
  return (
62
57
  <Slot
@@ -71,6 +71,7 @@ function BlockStyles( { clientId, onSwitch = noop, onHoverClassName = noop } ) {
71
71
 
72
72
  return (
73
73
  <Button
74
+ __next40pxDefaultSize
74
75
  className={ classnames(
75
76
  'block-editor-block-styles__item',
76
77
  {
@@ -36,13 +36,13 @@
36
36
 
37
37
  button.components-button.block-editor-block-styles__item {
38
38
  color: $gray-900;
39
- box-shadow: inset 0 0 0 1px $gray-400;
39
+ box-shadow: inset 0 0 0 $border-width $gray-300;
40
40
  display: inline-block;
41
41
  width: calc(50% - #{$grid-unit-05});
42
42
 
43
43
  &:hover {
44
44
  color: var(--wp-admin-theme-color);
45
- box-shadow: inset 0 0 0 1px $gray-400;
45
+ box-shadow: inset 0 0 0 $border-width $gray-300;
46
46
  }
47
47
 
48
48
  &.is-active,
@@ -58,7 +58,7 @@
58
58
 
59
59
  &:focus,
60
60
  &.is-active:focus {
61
- @include button-style__focus();
61
+ box-shadow: inset 0 0 0 $border-width var(--wp-components-color-background, #fff), 0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9));
62
62
  }
63
63
  }
64
64
 
@@ -60,7 +60,6 @@ const BlockActionsMenu = ( {
60
60
  rootClientId,
61
61
  selectedBlockClientId,
62
62
  selectedBlockPossibleTransformations,
63
- canRemove,
64
63
  // Dispatch.
65
64
  createSuccessNotice,
66
65
  convertToRegularBlocks,
@@ -106,8 +105,7 @@ const BlockActionsMenu = ( {
106
105
  selectedBlockClientId ? [ selectedBlockClientId ] : []
107
106
  );
108
107
  const { isGroupable, isUngroupable } = convertToGroupButtonProps;
109
- const showConvertToGroupButton =
110
- ( isGroupable || isUngroupable ) && canRemove;
108
+ const showConvertToGroupButton = isGroupable || isUngroupable;
111
109
  const convertToGroupButtons = useConvertToGroupButtons( {
112
110
  ...convertToGroupButtonProps,
113
111
  } );
@@ -348,7 +346,6 @@ export default compose(
348
346
  getSelectedBlockClientIds,
349
347
  canInsertBlockType,
350
348
  getTemplateLock,
351
- canRemoveBlock,
352
349
  } = select( blockEditorStore );
353
350
  const block = getBlock( clientId );
354
351
  const blockName = getBlockName( clientId );
@@ -385,7 +382,6 @@ export default compose(
385
382
  const selectedBlockPossibleTransformations = selectedBlock
386
383
  ? getBlockTransformItems( selectedBlock, rootClientId )
387
384
  : EMPTY_BLOCK_LIST;
388
- const canRemove = canRemoveBlock( selectedBlockClientId );
389
385
 
390
386
  const isReusableBlockType = block ? isReusableBlock( block ) : false;
391
387
  const reusableBlock = isReusableBlockType
@@ -411,7 +407,6 @@ export default compose(
411
407
  rootClientId,
412
408
  selectedBlockClientId,
413
409
  selectedBlockPossibleTransformations,
414
- canRemove,
415
410
  };
416
411
  } ),
417
412
  withDispatch(
@@ -86,9 +86,15 @@ function BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {
86
86
  const isFullscreen =
87
87
  document.body.classList.contains( 'is-fullscreen-mode' );
88
88
 
89
+ /**
90
+ * The following code is a workaround to fix the width of the toolbar
91
+ * it should be removed when the toolbar will be rendered inline
92
+ * FIXME: remove this layout effect when the toolbar is no longer
93
+ * absolutely positioned
94
+ */
89
95
  useLayoutEffect( () => {
90
96
  // don't do anything if not fixed toolbar
91
- if ( ! isFixed || ! blockType ) {
97
+ if ( ! isFixed ) {
92
98
  return;
93
99
  }
94
100
 
@@ -100,6 +106,11 @@ function BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {
100
106
  return;
101
107
  }
102
108
 
109
+ if ( ! blockType ) {
110
+ blockToolbar.style.width = 'initial';
111
+ return;
112
+ }
113
+
103
114
  if ( ! isLargerThanTabletViewport ) {
104
115
  // set the width of the toolbar to auto
105
116
  blockToolbar.style = {};
@@ -112,11 +123,10 @@ function BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {
112
123
  return;
113
124
  }
114
125
 
115
- // get the width of the pinned items in the post editor
126
+ // get the width of the pinned items in the post editor or widget editor
116
127
  const pinnedItems = document.querySelector(
117
- '.edit-post-header__settings'
128
+ '.edit-post-header__settings, .edit-widgets-header__actions'
118
129
  );
119
-
120
130
  // get the width of the left header in the site editor
121
131
  const leftHeader = document.querySelector(
122
132
  '.edit-site-header-edit-mode__end'
@@ -132,7 +142,7 @@ function BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {
132
142
 
133
143
  const marginLeft = parseFloat( computedToolbarStyle.marginLeft );
134
144
  const pinnedItemsWidth = computedPinnedItemsStyle
135
- ? parseFloat( computedPinnedItemsStyle.width ) + 10 // 10 is the pinned items padding
145
+ ? parseFloat( computedPinnedItemsStyle.width )
136
146
  : 0;
137
147
  const leftHeaderWidth = computedLeftHeaderStyle
138
148
  ? parseFloat( computedLeftHeaderStyle.width )
@@ -143,6 +153,7 @@ function BlockContextualToolbar( { focusOnMount, isFixed, ...props } ) {
143
153
  leftHeaderWidth +
144
154
  pinnedItemsWidth +
145
155
  marginLeft +
156
+ ( pinnedItems || leftHeader ? 2 : 0 ) + // Prevents button focus border from being cut off
146
157
  ( isFullscreen ? 0 : 160 ) // the width of the admin sidebar expanded
147
158
  }px)`;
148
159
  }, [
@@ -165,7 +165,7 @@ function BlockSelectionButton( { clientId, rootClientId } ) {
165
165
  selectedBlockClientId;
166
166
  } else if ( navigateIn ) {
167
167
  focusedBlockUid =
168
- getClientIdsOfDescendants( [ selectedBlockClientId ] )[ 0 ] ??
168
+ getClientIdsOfDescendants( selectedBlockClientId )[ 0 ] ??
169
169
  selectedBlockClientId;
170
170
  }
171
171
  const startingBlockClientId = hasBlockMovingClientId();
@@ -193,6 +193,14 @@ function BlockSelectionButton( { clientId, rootClientId } ) {
193
193
  selectBlock( startingBlockClientId );
194
194
  setBlockMovingClientId( null );
195
195
  }
196
+ // Prevent the block from being moved into itself.
197
+ if (
198
+ startingBlockClientId &&
199
+ selectedBlockClientId === startingBlockClientId &&
200
+ navigateIn
201
+ ) {
202
+ return;
203
+ }
196
204
  if ( navigateDown || navigateUp || navigateOut || navigateIn ) {
197
205
  if ( focusedBlockUid ) {
198
206
  event.preventDefault();