@wordpress/block-editor 12.24.0 → 12.25.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 (510) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +1 -1
  3. package/build/components/alignment-control/ui.js +3 -1
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/block-inspector/index.js +1 -1
  6. package/build/components/block-inspector/index.js.map +1 -1
  7. package/build/components/block-list/block.js +0 -9
  8. package/build/components/block-list/block.js.map +1 -1
  9. package/build/components/block-list/index.js +4 -3
  10. package/build/components/block-list/index.js.map +1 -1
  11. package/build/components/block-list/index.native.js +1 -9
  12. package/build/components/block-list/index.native.js.map +1 -1
  13. package/build/components/block-list/use-block-props/index.js +6 -6
  14. package/build/components/block-list/use-block-props/index.js.map +1 -1
  15. package/build/components/block-list/use-block-props/use-block-refs.js +17 -46
  16. package/build/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  17. package/build/components/block-list/use-block-props/use-is-hovered.js +10 -14
  18. package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  19. package/build/components/block-mover/index.native.js +3 -1
  20. package/build/components/block-mover/index.native.js.map +1 -1
  21. package/build/components/block-settings-menu/block-settings-dropdown.js +0 -25
  22. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  23. package/build/components/block-switcher/pattern-transformations-menu.js +3 -1
  24. package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  25. package/build/components/block-switcher/use-transformed-patterns.js +6 -2
  26. package/build/components/block-switcher/use-transformed-patterns.js.map +1 -1
  27. package/build/components/block-switcher/utils.js +15 -5
  28. package/build/components/block-switcher/utils.js.map +1 -1
  29. package/build/components/block-toolbar/use-has-block-toolbar.js +14 -9
  30. package/build/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
  31. package/build/components/block-tools/index.js +3 -1
  32. package/build/components/block-tools/index.js.map +1 -1
  33. package/build/components/block-tools/use-show-block-tools.js +2 -5
  34. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  35. package/build/components/block-tools/zoom-out-mode-inserters.js +5 -1
  36. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  37. package/build/components/block-variation-picker/index.js +3 -2
  38. package/build/components/block-variation-picker/index.js.map +1 -1
  39. package/build/components/block-variation-transforms/index.js +3 -1
  40. package/build/components/block-variation-transforms/index.js.map +1 -1
  41. package/build/components/floating-toolbar/index.native.js +9 -5
  42. package/build/components/floating-toolbar/index.native.js.map +1 -1
  43. package/build/components/global-styles/background-panel.js +1 -1
  44. package/build/components/global-styles/background-panel.js.map +1 -1
  45. package/build/components/global-styles/color-panel.js +3 -1
  46. package/build/components/global-styles/color-panel.js.map +1 -1
  47. package/build/components/global-styles/dimensions-panel.js +16 -0
  48. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  49. package/build/components/global-styles/hooks.js +3 -2
  50. package/build/components/global-styles/hooks.js.map +1 -1
  51. package/build/components/global-styles/typography-panel.js +23 -23
  52. package/build/components/global-styles/typography-panel.js.map +1 -1
  53. package/build/components/global-styles/use-global-styles-output.js +149 -132
  54. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  55. package/build/components/global-styles/utils.js +45 -0
  56. package/build/components/global-styles/utils.js.map +1 -1
  57. package/build/components/inner-blocks/index.js +16 -2
  58. package/build/components/inner-blocks/index.js.map +1 -1
  59. package/build/components/inserter/block-patterns-tab/index.js +12 -31
  60. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  61. package/build/components/inserter/block-types-tab.js +4 -0
  62. package/build/components/inserter/block-types-tab.js.map +1 -1
  63. package/build/components/inserter/category-tabs/index.js +56 -0
  64. package/build/components/inserter/category-tabs/index.js.map +1 -0
  65. package/build/components/inserter/media-tab/index.js +2 -2
  66. package/build/components/inserter/media-tab/index.js.map +1 -1
  67. package/build/components/inserter/media-tab/media-panel.js +0 -25
  68. package/build/components/inserter/media-tab/media-panel.js.map +1 -1
  69. package/build/components/inserter/media-tab/media-preview.js +13 -3
  70. package/build/components/inserter/media-tab/media-preview.js.map +1 -1
  71. package/build/components/inserter/media-tab/media-tab.js +15 -29
  72. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  73. package/build/components/inserter/menu.js +59 -69
  74. package/build/components/inserter/menu.js.map +1 -1
  75. package/build/components/inserter/tabs.js +6 -6
  76. package/build/components/inserter/tabs.js.map +1 -1
  77. package/build/components/line-height-control/index.js +6 -2
  78. package/build/components/line-height-control/index.js.map +1 -1
  79. package/build/components/link-control/search-item.js +9 -3
  80. package/build/components/link-control/search-item.js.map +1 -1
  81. package/build/components/list-view/block-select-button.js +5 -170
  82. package/build/components/list-view/block-select-button.js.map +1 -1
  83. package/build/components/list-view/block.js +166 -14
  84. package/build/components/list-view/block.js.map +1 -1
  85. package/build/components/list-view/index.js +1 -1
  86. package/build/components/list-view/index.js.map +1 -1
  87. package/build/components/list-view/use-list-view-drop-zone.js +1 -1
  88. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  89. package/build/components/list-view/utils.js +3 -1
  90. package/build/components/list-view/utils.js.map +1 -1
  91. package/build/components/media-placeholder/index.js +3 -3
  92. package/build/components/media-placeholder/index.js.map +1 -1
  93. package/build/components/navigable-toolbar/index.js +3 -1
  94. package/build/components/navigable-toolbar/index.js.map +1 -1
  95. package/build/components/provider/block-refs-provider.js +3 -4
  96. package/build/components/provider/block-refs-provider.js.map +1 -1
  97. package/build/components/provider/use-block-sync.js +3 -12
  98. package/build/components/provider/use-block-sync.js.map +1 -1
  99. package/build/components/rich-text/event-listeners/before-input-rules.js +93 -0
  100. package/build/components/rich-text/event-listeners/before-input-rules.js.map +1 -0
  101. package/build/components/rich-text/event-listeners/delete.js +58 -0
  102. package/build/components/rich-text/event-listeners/delete.js.map +1 -0
  103. package/build/components/rich-text/event-listeners/enter.js +98 -0
  104. package/build/components/rich-text/event-listeners/enter.js.map +1 -0
  105. package/build/components/rich-text/event-listeners/firefox-compat.js +36 -0
  106. package/build/components/rich-text/event-listeners/firefox-compat.js.map +1 -0
  107. package/build/components/rich-text/event-listeners/index.js +44 -0
  108. package/build/components/rich-text/event-listeners/index.js.map +1 -0
  109. package/build/components/rich-text/event-listeners/input-events.js +22 -0
  110. package/build/components/rich-text/event-listeners/input-events.js.map +1 -0
  111. package/build/components/rich-text/event-listeners/input-rules.js +135 -0
  112. package/build/components/rich-text/event-listeners/input-rules.js.map +1 -0
  113. package/build/components/rich-text/event-listeners/insert-replacement-text.js +33 -0
  114. package/build/components/rich-text/event-listeners/insert-replacement-text.js.map +1 -0
  115. package/build/components/rich-text/event-listeners/paste-handler.js +146 -0
  116. package/build/components/rich-text/event-listeners/paste-handler.js.map +1 -0
  117. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.js +27 -0
  118. package/build/components/rich-text/event-listeners/remove-browser-shortcuts.js.map +1 -0
  119. package/build/components/rich-text/event-listeners/shortcuts.js +22 -0
  120. package/build/components/rich-text/event-listeners/shortcuts.js.map +1 -0
  121. package/build/components/rich-text/event-listeners/undo-automatic-change.js +51 -0
  122. package/build/components/rich-text/event-listeners/undo-automatic-change.js.map +1 -0
  123. package/build/components/rich-text/index.js +11 -31
  124. package/build/components/rich-text/index.js.map +1 -1
  125. package/build/components/rich-text/index.native.js +13 -3
  126. package/build/components/rich-text/index.native.js.map +1 -1
  127. package/build/components/rich-text/multiline.js +6 -2
  128. package/build/components/rich-text/multiline.js.map +1 -1
  129. package/build/components/rich-text/native/index.native.js +12 -0
  130. package/build/components/rich-text/native/index.native.js.map +1 -1
  131. package/build/components/rich-text/use-format-types.js +8 -4
  132. package/build/components/rich-text/use-format-types.js.map +1 -1
  133. package/build/components/segmented-text-control/index.js +62 -0
  134. package/build/components/segmented-text-control/index.js.map +1 -0
  135. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +16 -2
  136. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  137. package/build/components/text-alignment-control/index.js +76 -0
  138. package/build/components/text-alignment-control/index.js.map +1 -0
  139. package/build/components/text-decoration-control/index.js +21 -25
  140. package/build/components/text-decoration-control/index.js.map +1 -1
  141. package/build/components/text-transform-control/index.js +18 -22
  142. package/build/components/text-transform-control/index.js.map +1 -1
  143. package/build/components/use-block-display-information/index.js +9 -3
  144. package/build/components/use-block-display-information/index.js.map +1 -1
  145. package/build/components/use-on-block-drop/index.js +3 -1
  146. package/build/components/use-on-block-drop/index.js.map +1 -1
  147. package/build/components/writing-flow/use-drag-selection.js +3 -1
  148. package/build/components/writing-flow/use-drag-selection.js.map +1 -1
  149. package/build/components/writing-flow/use-tab-nav.js +3 -1
  150. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  151. package/build/components/writing-mode-control/index.js +16 -20
  152. package/build/components/writing-mode-control/index.js.map +1 -1
  153. package/build/hooks/duotone.js +3 -1
  154. package/build/hooks/duotone.js.map +1 -1
  155. package/build/hooks/utils.js +11 -6
  156. package/build/hooks/utils.js.map +1 -1
  157. package/build/private-apis.js +4 -2
  158. package/build/private-apis.js.map +1 -1
  159. package/build/store/actions.js +32 -8
  160. package/build/store/actions.js.map +1 -1
  161. package/build/store/private-selectors.js +27 -6
  162. package/build/store/private-selectors.js.map +1 -1
  163. package/build/store/reducer.js +11 -8
  164. package/build/store/reducer.js.map +1 -1
  165. package/build/store/selectors.js +21 -7
  166. package/build/store/selectors.js.map +1 -1
  167. package/build/utils/object.js +17 -0
  168. package/build/utils/object.js.map +1 -1
  169. package/build/utils/order-inserter-block-items.js +6 -2
  170. package/build/utils/order-inserter-block-items.js.map +1 -1
  171. package/build/utils/pasting.js +6 -2
  172. package/build/utils/pasting.js.map +1 -1
  173. package/build-module/components/alignment-control/ui.js +3 -1
  174. package/build-module/components/alignment-control/ui.js.map +1 -1
  175. package/build-module/components/block-inspector/index.js +1 -1
  176. package/build-module/components/block-inspector/index.js.map +1 -1
  177. package/build-module/components/block-list/block.js +0 -9
  178. package/build-module/components/block-list/block.js.map +1 -1
  179. package/build-module/components/block-list/index.js +4 -3
  180. package/build-module/components/block-list/index.js.map +1 -1
  181. package/build-module/components/block-list/index.native.js +1 -9
  182. package/build-module/components/block-list/index.native.js.map +1 -1
  183. package/build-module/components/block-list/use-block-props/index.js +6 -6
  184. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  185. package/build-module/components/block-list/use-block-props/use-block-refs.js +19 -48
  186. package/build-module/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  187. package/build-module/components/block-list/use-block-props/use-is-hovered.js +10 -14
  188. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  189. package/build-module/components/block-mover/index.native.js +3 -1
  190. package/build-module/components/block-mover/index.native.js.map +1 -1
  191. package/build-module/components/block-settings-menu/block-settings-dropdown.js +1 -26
  192. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  193. package/build-module/components/block-switcher/pattern-transformations-menu.js +3 -1
  194. package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
  195. package/build-module/components/block-switcher/use-transformed-patterns.js +6 -2
  196. package/build-module/components/block-switcher/use-transformed-patterns.js.map +1 -1
  197. package/build-module/components/block-switcher/utils.js +15 -5
  198. package/build-module/components/block-switcher/utils.js.map +1 -1
  199. package/build-module/components/block-toolbar/use-has-block-toolbar.js +14 -9
  200. package/build-module/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
  201. package/build-module/components/block-tools/index.js +3 -1
  202. package/build-module/components/block-tools/index.js.map +1 -1
  203. package/build-module/components/block-tools/use-show-block-tools.js +2 -5
  204. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  205. package/build-module/components/block-tools/zoom-out-mode-inserters.js +5 -1
  206. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  207. package/build-module/components/block-variation-picker/index.js +3 -2
  208. package/build-module/components/block-variation-picker/index.js.map +1 -1
  209. package/build-module/components/block-variation-transforms/index.js +3 -1
  210. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  211. package/build-module/components/floating-toolbar/index.native.js +9 -5
  212. package/build-module/components/floating-toolbar/index.native.js.map +1 -1
  213. package/build-module/components/global-styles/background-panel.js +1 -1
  214. package/build-module/components/global-styles/background-panel.js.map +1 -1
  215. package/build-module/components/global-styles/color-panel.js +3 -1
  216. package/build-module/components/global-styles/color-panel.js.map +1 -1
  217. package/build-module/components/global-styles/dimensions-panel.js +17 -1
  218. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  219. package/build-module/components/global-styles/hooks.js +3 -2
  220. package/build-module/components/global-styles/hooks.js.map +1 -1
  221. package/build-module/components/global-styles/typography-panel.js +24 -24
  222. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  223. package/build-module/components/global-styles/use-global-styles-output.js +149 -132
  224. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  225. package/build-module/components/global-styles/utils.js +44 -0
  226. package/build-module/components/global-styles/utils.js.map +1 -1
  227. package/build-module/components/inner-blocks/index.js +16 -2
  228. package/build-module/components/inner-blocks/index.js.map +1 -1
  229. package/build-module/components/inserter/block-patterns-tab/index.js +13 -32
  230. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  231. package/build-module/components/inserter/block-types-tab.js +4 -0
  232. package/build-module/components/inserter/block-types-tab.js.map +1 -1
  233. package/build-module/components/inserter/category-tabs/index.js +49 -0
  234. package/build-module/components/inserter/category-tabs/index.js.map +1 -0
  235. package/build-module/components/inserter/media-tab/index.js +1 -1
  236. package/build-module/components/inserter/media-tab/index.js.map +1 -1
  237. package/build-module/components/inserter/media-tab/media-panel.js +0 -24
  238. package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
  239. package/build-module/components/inserter/media-tab/media-preview.js +13 -3
  240. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
  241. package/build-module/components/inserter/media-tab/media-tab.js +17 -31
  242. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  243. package/build-module/components/inserter/menu.js +61 -71
  244. package/build-module/components/inserter/menu.js.map +1 -1
  245. package/build-module/components/inserter/tabs.js +6 -6
  246. package/build-module/components/inserter/tabs.js.map +1 -1
  247. package/build-module/components/line-height-control/index.js +6 -2
  248. package/build-module/components/line-height-control/index.js.map +1 -1
  249. package/build-module/components/link-control/search-item.js +9 -3
  250. package/build-module/components/link-control/search-item.js.map +1 -1
  251. package/build-module/components/list-view/block-select-button.js +7 -172
  252. package/build-module/components/list-view/block-select-button.js.map +1 -1
  253. package/build-module/components/list-view/block.js +167 -15
  254. package/build-module/components/list-view/block.js.map +1 -1
  255. package/build-module/components/list-view/index.js +1 -1
  256. package/build-module/components/list-view/index.js.map +1 -1
  257. package/build-module/components/list-view/use-list-view-drop-zone.js +1 -1
  258. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  259. package/build-module/components/list-view/utils.js +3 -1
  260. package/build-module/components/list-view/utils.js.map +1 -1
  261. package/build-module/components/media-placeholder/index.js +3 -3
  262. package/build-module/components/media-placeholder/index.js.map +1 -1
  263. package/build-module/components/navigable-toolbar/index.js +3 -1
  264. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  265. package/build-module/components/provider/block-refs-provider.js +3 -4
  266. package/build-module/components/provider/block-refs-provider.js.map +1 -1
  267. package/build-module/components/provider/use-block-sync.js +4 -13
  268. package/build-module/components/provider/use-block-sync.js.map +1 -1
  269. package/build-module/components/rich-text/event-listeners/before-input-rules.js +86 -0
  270. package/build-module/components/rich-text/event-listeners/before-input-rules.js.map +1 -0
  271. package/build-module/components/rich-text/event-listeners/delete.js +51 -0
  272. package/build-module/components/rich-text/event-listeners/delete.js.map +1 -0
  273. package/build-module/components/rich-text/event-listeners/enter.js +92 -0
  274. package/build-module/components/rich-text/event-listeners/enter.js.map +1 -0
  275. package/build-module/components/rich-text/event-listeners/firefox-compat.js +29 -0
  276. package/build-module/components/rich-text/event-listeners/firefox-compat.js.map +1 -0
  277. package/build-module/components/rich-text/event-listeners/index.js +36 -0
  278. package/build-module/components/rich-text/event-listeners/index.js.map +1 -0
  279. package/build-module/components/rich-text/event-listeners/input-events.js +15 -0
  280. package/build-module/components/rich-text/event-listeners/input-events.js.map +1 -0
  281. package/build-module/components/rich-text/event-listeners/input-rules.js +127 -0
  282. package/build-module/components/rich-text/event-listeners/input-rules.js.map +1 -0
  283. package/build-module/components/rich-text/event-listeners/insert-replacement-text.js +27 -0
  284. package/build-module/components/rich-text/event-listeners/insert-replacement-text.js.map +1 -0
  285. package/build-module/components/rich-text/event-listeners/paste-handler.js +142 -0
  286. package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -0
  287. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.js +21 -0
  288. package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.js.map +1 -0
  289. package/build-module/components/rich-text/event-listeners/shortcuts.js +15 -0
  290. package/build-module/components/rich-text/event-listeners/shortcuts.js.map +1 -0
  291. package/build-module/components/rich-text/event-listeners/undo-automatic-change.js +45 -0
  292. package/build-module/components/rich-text/event-listeners/undo-automatic-change.js.map +1 -0
  293. package/build-module/components/rich-text/index.js +12 -32
  294. package/build-module/components/rich-text/index.js.map +1 -1
  295. package/build-module/components/rich-text/index.native.js +13 -3
  296. package/build-module/components/rich-text/index.native.js.map +1 -1
  297. package/build-module/components/rich-text/multiline.js +6 -2
  298. package/build-module/components/rich-text/multiline.js.map +1 -1
  299. package/build-module/components/rich-text/native/index.native.js +12 -0
  300. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  301. package/build-module/components/rich-text/use-format-types.js +8 -4
  302. package/build-module/components/rich-text/use-format-types.js.map +1 -1
  303. package/build-module/components/segmented-text-control/index.js +55 -0
  304. package/build-module/components/segmented-text-control/index.js.map +1 -0
  305. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +16 -2
  306. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  307. package/build-module/components/text-alignment-control/index.js +68 -0
  308. package/build-module/components/text-alignment-control/index.js.map +1 -0
  309. package/build-module/components/text-decoration-control/index.js +21 -25
  310. package/build-module/components/text-decoration-control/index.js.map +1 -1
  311. package/build-module/components/text-transform-control/index.js +18 -22
  312. package/build-module/components/text-transform-control/index.js.map +1 -1
  313. package/build-module/components/use-block-display-information/index.js +9 -3
  314. package/build-module/components/use-block-display-information/index.js.map +1 -1
  315. package/build-module/components/use-on-block-drop/index.js +3 -1
  316. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  317. package/build-module/components/writing-flow/use-drag-selection.js +3 -1
  318. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
  319. package/build-module/components/writing-flow/use-tab-nav.js +3 -1
  320. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  321. package/build-module/components/writing-mode-control/index.js +16 -20
  322. package/build-module/components/writing-mode-control/index.js.map +1 -1
  323. package/build-module/hooks/duotone.js +3 -1
  324. package/build-module/hooks/duotone.js.map +1 -1
  325. package/build-module/hooks/utils.js +11 -6
  326. package/build-module/hooks/utils.js.map +1 -1
  327. package/build-module/private-apis.js +4 -2
  328. package/build-module/private-apis.js.map +1 -1
  329. package/build-module/store/actions.js +32 -8
  330. package/build-module/store/actions.js.map +1 -1
  331. package/build-module/store/private-selectors.js +27 -5
  332. package/build-module/store/private-selectors.js.map +1 -1
  333. package/build-module/store/reducer.js +11 -8
  334. package/build-module/store/reducer.js.map +1 -1
  335. package/build-module/store/selectors.js +21 -7
  336. package/build-module/store/selectors.js.map +1 -1
  337. package/build-module/utils/object.js +16 -0
  338. package/build-module/utils/object.js.map +1 -1
  339. package/build-module/utils/order-inserter-block-items.js +6 -2
  340. package/build-module/utils/order-inserter-block-items.js.map +1 -1
  341. package/build-module/utils/pasting.js +6 -2
  342. package/build-module/utils/pasting.js.map +1 -1
  343. package/build-style/content-rtl.css +41 -68
  344. package/build-style/content.css +41 -68
  345. package/build-style/style-rtl.css +100 -199
  346. package/build-style/style.css +100 -199
  347. package/package.json +31 -31
  348. package/src/components/alignment-control/ui.js +3 -1
  349. package/src/components/block-bindings-toolbar-indicator/style.scss +1 -4
  350. package/src/components/block-canvas/style.scss +1 -3
  351. package/src/components/block-draggable/test/helpers.native.js +8 -8
  352. package/src/components/block-inspector/index.js +1 -2
  353. package/src/components/block-list/block.js +2 -13
  354. package/src/components/block-list/content.scss +9 -1
  355. package/src/components/block-list/index.js +4 -4
  356. package/src/components/block-list/index.native.js +1 -6
  357. package/src/components/block-list/use-block-props/index.js +12 -4
  358. package/src/components/block-list/use-block-props/use-block-refs.js +17 -57
  359. package/src/components/block-list/use-block-props/use-is-hovered.js +11 -16
  360. package/src/components/block-mover/index.native.js +3 -1
  361. package/src/components/block-patterns-list/style.scss +1 -3
  362. package/src/components/block-preview/style.scss +13 -15
  363. package/src/components/block-settings-menu/block-settings-dropdown.js +1 -51
  364. package/src/components/block-switcher/pattern-transformations-menu.js +3 -1
  365. package/src/components/block-switcher/use-transformed-patterns.js +6 -2
  366. package/src/components/block-switcher/utils.js +14 -5
  367. package/src/components/block-toolbar/style.scss +8 -11
  368. package/src/components/block-toolbar/use-has-block-toolbar.js +21 -16
  369. package/src/components/block-tools/index.js +3 -1
  370. package/src/components/block-tools/use-show-block-tools.js +36 -48
  371. package/src/components/block-tools/zoom-out-mode-inserters.js +5 -1
  372. package/src/components/block-variation-picker/content.scss +22 -72
  373. package/src/components/block-variation-picker/index.js +3 -2
  374. package/src/components/block-variation-transforms/index.js +3 -1
  375. package/src/components/floating-toolbar/index.native.js +5 -2
  376. package/src/components/global-styles/background-panel.js +1 -3
  377. package/src/components/global-styles/color-panel.js +3 -1
  378. package/src/components/global-styles/dimensions-panel.js +18 -1
  379. package/src/components/global-styles/hooks.js +2 -0
  380. package/src/components/global-styles/test/utils.js +21 -0
  381. package/src/components/global-styles/typography-panel.js +27 -23
  382. package/src/components/global-styles/use-global-styles-output.js +211 -187
  383. package/src/components/global-styles/utils.js +55 -0
  384. package/src/components/inner-blocks/index.js +14 -1
  385. package/src/components/inserter/block-patterns-tab/index.js +15 -65
  386. package/src/components/inserter/block-types-tab.js +5 -0
  387. package/src/components/inserter/category-tabs/index.js +74 -0
  388. package/src/components/inserter/media-tab/index.js +1 -1
  389. package/src/components/inserter/media-tab/media-panel.js +0 -22
  390. package/src/components/inserter/media-tab/media-preview.js +15 -7
  391. package/src/components/inserter/media-tab/media-tab.js +44 -83
  392. package/src/components/inserter/menu.js +139 -117
  393. package/src/components/inserter/style.scss +90 -170
  394. package/src/components/inserter/tabs.js +5 -13
  395. package/src/components/line-height-control/index.js +6 -2
  396. package/src/components/link-control/search-item.js +9 -3
  397. package/src/components/list-view/block-select-button.js +73 -266
  398. package/src/components/list-view/block.js +218 -28
  399. package/src/components/list-view/index.js +1 -1
  400. package/src/components/list-view/style.scss +20 -28
  401. package/src/components/list-view/use-list-view-drop-zone.js +1 -1
  402. package/src/components/list-view/utils.js +3 -1
  403. package/src/components/media-placeholder/content.scss +0 -11
  404. package/src/components/media-placeholder/index.js +3 -3
  405. package/src/components/navigable-toolbar/index.js +3 -1
  406. package/src/components/provider/block-refs-provider.js +3 -8
  407. package/src/components/provider/test/use-block-sync.js +7 -0
  408. package/src/components/provider/use-block-sync.js +3 -20
  409. package/src/components/rich-text/event-listeners/before-input-rules.js +92 -0
  410. package/src/components/rich-text/event-listeners/delete.js +53 -0
  411. package/src/components/rich-text/event-listeners/enter.js +104 -0
  412. package/src/components/rich-text/event-listeners/firefox-compat.js +31 -0
  413. package/src/components/rich-text/event-listeners/index.js +56 -0
  414. package/src/components/rich-text/event-listeners/input-events.js +13 -0
  415. package/src/components/rich-text/event-listeners/input-rules.js +146 -0
  416. package/src/components/rich-text/event-listeners/insert-replacement-text.js +28 -0
  417. package/src/components/rich-text/event-listeners/paste-handler.js +169 -0
  418. package/src/components/rich-text/event-listeners/remove-browser-shortcuts.js +24 -0
  419. package/src/components/rich-text/event-listeners/shortcuts.js +13 -0
  420. package/src/components/rich-text/event-listeners/undo-automatic-change.js +45 -0
  421. package/src/components/rich-text/index.js +7 -34
  422. package/src/components/rich-text/index.native.js +11 -0
  423. package/src/components/rich-text/multiline.js +6 -2
  424. package/src/components/rich-text/native/index.native.js +11 -0
  425. package/src/components/rich-text/use-format-types.js +6 -2
  426. package/src/components/segmented-text-control/index.js +63 -0
  427. package/src/components/{writing-mode-control → segmented-text-control}/style.scss +2 -5
  428. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +16 -1
  429. package/src/components/text-alignment-control/index.js +91 -0
  430. package/src/components/text-alignment-control/stories/index.story.js +39 -0
  431. package/src/components/text-decoration-control/index.js +20 -33
  432. package/src/components/text-transform-control/index.js +17 -30
  433. package/src/components/use-block-display-information/index.js +9 -3
  434. package/src/components/use-on-block-drop/index.js +3 -1
  435. package/src/components/writing-flow/use-drag-selection.js +3 -1
  436. package/src/components/writing-flow/use-tab-nav.js +3 -1
  437. package/src/components/writing-mode-control/index.js +15 -28
  438. package/src/hooks/duotone.js +3 -1
  439. package/src/hooks/utils.js +16 -2
  440. package/src/private-apis.js +4 -2
  441. package/src/store/actions.js +36 -12
  442. package/src/store/private-selectors.js +28 -4
  443. package/src/store/reducer.js +13 -23
  444. package/src/store/selectors.js +20 -7
  445. package/src/style.scss +1 -2
  446. package/src/utils/object.js +16 -0
  447. package/src/utils/order-inserter-block-items.js +6 -2
  448. package/src/utils/pasting.js +6 -2
  449. package/build/components/block-list/use-block-props/use-block-moving-mode-class-names.js +0 -54
  450. package/build/components/block-list/use-block-props/use-block-moving-mode-class-names.js.map +0 -1
  451. package/build/components/rich-text/use-before-input-rules.js +0 -98
  452. package/build/components/rich-text/use-before-input-rules.js.map +0 -1
  453. package/build/components/rich-text/use-delete.js +0 -64
  454. package/build/components/rich-text/use-delete.js.map +0 -1
  455. package/build/components/rich-text/use-enter.js +0 -109
  456. package/build/components/rich-text/use-enter.js.map +0 -1
  457. package/build/components/rich-text/use-firefox-compat.js +0 -44
  458. package/build/components/rich-text/use-firefox-compat.js.map +0 -1
  459. package/build/components/rich-text/use-input-events.js +0 -25
  460. package/build/components/rich-text/use-input-events.js.map +0 -1
  461. package/build/components/rich-text/use-input-rules.js +0 -139
  462. package/build/components/rich-text/use-input-rules.js.map +0 -1
  463. package/build/components/rich-text/use-insert-replacement-text.js +0 -38
  464. package/build/components/rich-text/use-insert-replacement-text.js.map +0 -1
  465. package/build/components/rich-text/use-paste-handler.js +0 -158
  466. package/build/components/rich-text/use-paste-handler.js.map +0 -1
  467. package/build/components/rich-text/use-remove-browser-shortcuts.js +0 -32
  468. package/build/components/rich-text/use-remove-browser-shortcuts.js.map +0 -1
  469. package/build/components/rich-text/use-shortcuts.js +0 -25
  470. package/build/components/rich-text/use-shortcuts.js.map +0 -1
  471. package/build/components/rich-text/use-undo-automatic-change.js +0 -53
  472. package/build/components/rich-text/use-undo-automatic-change.js.map +0 -1
  473. package/build-module/components/block-list/use-block-props/use-block-moving-mode-class-names.js +0 -47
  474. package/build-module/components/block-list/use-block-props/use-block-moving-mode-class-names.js.map +0 -1
  475. package/build-module/components/rich-text/use-before-input-rules.js +0 -92
  476. package/build-module/components/rich-text/use-before-input-rules.js.map +0 -1
  477. package/build-module/components/rich-text/use-delete.js +0 -57
  478. package/build-module/components/rich-text/use-delete.js.map +0 -1
  479. package/build-module/components/rich-text/use-enter.js +0 -102
  480. package/build-module/components/rich-text/use-enter.js.map +0 -1
  481. package/build-module/components/rich-text/use-firefox-compat.js +0 -37
  482. package/build-module/components/rich-text/use-firefox-compat.js.map +0 -1
  483. package/build-module/components/rich-text/use-input-events.js +0 -18
  484. package/build-module/components/rich-text/use-input-events.js.map +0 -1
  485. package/build-module/components/rich-text/use-input-rules.js +0 -132
  486. package/build-module/components/rich-text/use-input-rules.js.map +0 -1
  487. package/build-module/components/rich-text/use-insert-replacement-text.js +0 -32
  488. package/build-module/components/rich-text/use-insert-replacement-text.js.map +0 -1
  489. package/build-module/components/rich-text/use-paste-handler.js +0 -152
  490. package/build-module/components/rich-text/use-paste-handler.js.map +0 -1
  491. package/build-module/components/rich-text/use-remove-browser-shortcuts.js +0 -26
  492. package/build-module/components/rich-text/use-remove-browser-shortcuts.js.map +0 -1
  493. package/build-module/components/rich-text/use-shortcuts.js +0 -18
  494. package/build-module/components/rich-text/use-shortcuts.js.map +0 -1
  495. package/build-module/components/rich-text/use-undo-automatic-change.js +0 -46
  496. package/build-module/components/rich-text/use-undo-automatic-change.js.map +0 -1
  497. package/src/components/block-list/use-block-props/use-block-moving-mode-class-names.js +0 -55
  498. package/src/components/rich-text/use-before-input-rules.js +0 -99
  499. package/src/components/rich-text/use-delete.js +0 -59
  500. package/src/components/rich-text/use-enter.js +0 -110
  501. package/src/components/rich-text/use-firefox-compat.js +0 -39
  502. package/src/components/rich-text/use-input-events.js +0 -19
  503. package/src/components/rich-text/use-input-rules.js +0 -150
  504. package/src/components/rich-text/use-insert-replacement-text.js +0 -31
  505. package/src/components/rich-text/use-paste-handler.js +0 -180
  506. package/src/components/rich-text/use-remove-browser-shortcuts.js +0 -29
  507. package/src/components/rich-text/use-shortcuts.js +0 -19
  508. package/src/components/rich-text/use-undo-automatic-change.js +0 -46
  509. package/src/components/text-decoration-control/style.scss +0 -18
  510. package/src/components/text-transform-control/style.scss +0 -18
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/block-editor",
3
- "version": "12.24.0",
3
+ "version": "12.25.0",
4
4
  "description": "Generic block editor.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -35,35 +35,35 @@
35
35
  "@emotion/react": "^11.7.1",
36
36
  "@emotion/styled": "^11.6.0",
37
37
  "@react-spring/web": "^9.4.5",
38
- "@wordpress/a11y": "^3.56.0",
39
- "@wordpress/api-fetch": "^6.53.0",
40
- "@wordpress/blob": "^3.56.0",
41
- "@wordpress/blocks": "^12.33.0",
42
- "@wordpress/commands": "^0.27.0",
43
- "@wordpress/components": "^27.4.0",
44
- "@wordpress/compose": "^6.33.0",
45
- "@wordpress/data": "^9.26.0",
46
- "@wordpress/date": "^4.56.0",
47
- "@wordpress/deprecated": "^3.56.0",
48
- "@wordpress/dom": "^3.56.0",
49
- "@wordpress/element": "^5.33.0",
50
- "@wordpress/escape-html": "^2.56.0",
51
- "@wordpress/hooks": "^3.56.0",
52
- "@wordpress/html-entities": "^3.56.0",
53
- "@wordpress/i18n": "^4.56.0",
54
- "@wordpress/icons": "^9.47.0",
55
- "@wordpress/is-shallow-equal": "^4.56.0",
56
- "@wordpress/keyboard-shortcuts": "^4.33.0",
57
- "@wordpress/keycodes": "^3.56.0",
58
- "@wordpress/notices": "^4.24.0",
59
- "@wordpress/preferences": "^3.33.0",
60
- "@wordpress/private-apis": "^0.38.0",
61
- "@wordpress/rich-text": "^6.33.0",
62
- "@wordpress/style-engine": "^1.39.0",
63
- "@wordpress/token-list": "^2.56.0",
64
- "@wordpress/url": "^3.57.0",
65
- "@wordpress/warning": "^2.56.0",
66
- "@wordpress/wordcount": "^3.56.0",
38
+ "@wordpress/a11y": "^3.57.0",
39
+ "@wordpress/api-fetch": "^6.54.0",
40
+ "@wordpress/blob": "^3.57.0",
41
+ "@wordpress/blocks": "^12.34.0",
42
+ "@wordpress/commands": "^0.28.0",
43
+ "@wordpress/components": "^27.5.0",
44
+ "@wordpress/compose": "^6.34.0",
45
+ "@wordpress/data": "^9.27.0",
46
+ "@wordpress/date": "^4.57.0",
47
+ "@wordpress/deprecated": "^3.57.0",
48
+ "@wordpress/dom": "^3.57.0",
49
+ "@wordpress/element": "^5.34.0",
50
+ "@wordpress/escape-html": "^2.57.0",
51
+ "@wordpress/hooks": "^3.57.0",
52
+ "@wordpress/html-entities": "^3.57.0",
53
+ "@wordpress/i18n": "^4.57.0",
54
+ "@wordpress/icons": "^9.48.0",
55
+ "@wordpress/is-shallow-equal": "^4.57.0",
56
+ "@wordpress/keyboard-shortcuts": "^4.34.0",
57
+ "@wordpress/keycodes": "^3.57.0",
58
+ "@wordpress/notices": "^4.25.0",
59
+ "@wordpress/preferences": "^3.34.0",
60
+ "@wordpress/private-apis": "^0.39.0",
61
+ "@wordpress/rich-text": "^6.34.0",
62
+ "@wordpress/style-engine": "^1.40.0",
63
+ "@wordpress/token-list": "^2.57.0",
64
+ "@wordpress/url": "^3.58.0",
65
+ "@wordpress/warning": "^2.57.0",
66
+ "@wordpress/wordcount": "^3.57.0",
67
67
  "change-case": "^4.1.2",
68
68
  "classnames": "^2.3.1",
69
69
  "colord": "^2.7.0",
@@ -85,5 +85,5 @@
85
85
  "publishConfig": {
86
86
  "access": "public"
87
87
  },
88
- "gitHead": "280403b4c1cf6cc2c55a6c4d56f9ef91145e4191"
88
+ "gitHead": "581d8a5580dba8f600b7268d51eb554771ae482c"
89
89
  }
@@ -45,7 +45,9 @@ function AlignmentUI( {
45
45
  );
46
46
 
47
47
  function setIcon() {
48
- if ( activeAlignment ) return activeAlignment.icon;
48
+ if ( activeAlignment ) {
49
+ return activeAlignment.icon;
50
+ }
49
51
  return isRTL() ? alignRight : alignLeft;
50
52
  }
51
53
 
@@ -8,9 +8,6 @@
8
8
  }
9
9
  }
10
10
 
11
- .edit-post-header__toolbar
12
- .selected-block-tools-wrapper
13
- .block-editor-block-toolbar
14
- .block-editor-block-bindings-toolbar-indicator {
11
+ .editor-collapsible-block-toolbar .block-editor-block-bindings-toolbar-indicator {
15
12
  height: 32px;
16
13
  }
@@ -2,11 +2,9 @@ iframe[name="editor-canvas"] {
2
2
  width: 100%;
3
3
  height: 100%;
4
4
  display: block;
5
+ background-color: $gray-300;
5
6
  }
6
7
 
7
- iframe[name="editor-canvas"]:not(.has-editor-padding) {
8
- background-color: $white;
9
- }
10
8
 
11
9
  iframe[name="editor-canvas"].has-editor-padding {
12
10
  padding: $grid-unit-30 $grid-unit-30 0;
@@ -108,11 +108,11 @@ export const initializeWithBlocksLayouts = async ( blocks ) => {
108
108
  /**
109
109
  * Fires long-press gesture event on a block.
110
110
  *
111
- * @param {import('react-test-renderer').ReactTestInstance} block Block test instance.
112
- * @param {string} testID Id for querying the draggable trigger element.
113
- * @param {Object} [options] Configuration options for the gesture event.
114
- * @param {boolean} [options.failed] Determines if the gesture should fail.
115
- * @param {number} [options.triggerIndex] In case there are multiple draggable triggers, this specifies the index to use.
111
+ * @param {HTMLElement} block Block test instance.
112
+ * @param {string} testID Id for querying the draggable trigger element.
113
+ * @param {Object} [options] Configuration options for the gesture event.
114
+ * @param {boolean} [options.failed] Determines if the gesture should fail.
115
+ * @param {number} [options.triggerIndex] In case there are multiple draggable triggers, this specifies the index to use.
116
116
  */
117
117
  export const fireLongPress = (
118
118
  block,
@@ -140,8 +140,8 @@ export const fireLongPress = (
140
140
  /**
141
141
  * Fires pan gesture event on a BlockDraggable component.
142
142
  *
143
- * @param {import('react-test-renderer').ReactTestInstance} blockDraggable BlockDraggable test instance.
144
- * @param {Object} [touchEvents] Array of touch events to dispatch on the pan gesture.
143
+ * @param {HTMLElement} blockDraggable BlockDraggable test instance.
144
+ * @param {Object} [touchEvents] Array of touch events to dispatch on the pan gesture.
145
145
  */
146
146
  export const firePanGesture = (
147
147
  blockDraggable,
@@ -169,7 +169,7 @@ export const firePanGesture = (
169
169
  *
170
170
  * @param {import('@testing-library/react-native').RenderAPI} screen The Testing Library screen.
171
171
  *
172
- * @return {import('react-test-renderer').ReactTestInstance} Draggable chip test instance.
172
+ * @return {HTMLElement} Draggable chip test instance.
173
173
  */
174
174
  export const getDraggableChip = ( { getByTestId } ) => {
175
175
  let draggableChip;
@@ -95,8 +95,7 @@ const BlockInspector = ( { showNoBlockSelectedMessage = true } ) => {
95
95
  blockType: _blockType,
96
96
  topLevelLockedBlock:
97
97
  getContentLockingParent( _selectedBlockClientId ) ||
98
- ( getTemplateLock( _selectedBlockClientId ) === 'contentOnly' ||
99
- _selectedBlockName === 'core/block'
98
+ ( getTemplateLock( _selectedBlockClientId ) === 'contentOnly'
100
99
  ? _selectedBlockClientId
101
100
  : undefined ),
102
101
  };
@@ -534,7 +534,6 @@ function BlockListBlockProvider( props ) {
534
534
  hasSelectedInnerBlock,
535
535
 
536
536
  getBlockIndex,
537
- isTyping,
538
537
  isBlockMultiSelected,
539
538
  isBlockSubtreeDisabled,
540
539
  isBlockHighlighted,
@@ -566,11 +565,8 @@ function BlockListBlockProvider( props ) {
566
565
  const attributes = getBlockAttributes( clientId );
567
566
  const { name: blockName, isValid } = blockWithoutAttributes;
568
567
  const blockType = getBlockType( blockName );
569
- const {
570
- outlineMode,
571
- supportsLayout,
572
- __unstableIsPreviewMode: isPreviewMode,
573
- } = getSettings();
568
+ const { supportsLayout, __unstableIsPreviewMode: isPreviewMode } =
569
+ getSettings();
574
570
  const hasLightBlockWrapper = blockType?.apiVersion > 1;
575
571
  const previewContext = {
576
572
  isPreviewMode,
@@ -606,7 +602,6 @@ function BlockListBlockProvider( props ) {
606
602
  clientId,
607
603
  checkDeep
608
604
  );
609
- const typing = isTyping();
610
605
  const movingClientId = hasBlockMovingClientId();
611
606
  const blockEditingMode = getBlockEditingMode( clientId );
612
607
 
@@ -639,7 +634,6 @@ function BlockListBlockProvider( props ) {
639
634
  isSubtreeDisabled:
640
635
  blockEditingMode === 'disabled' &&
641
636
  isBlockSubtreeDisabled( clientId ),
642
- isOutlineEnabled: outlineMode,
643
637
  hasOverlay:
644
638
  __unstableHasActiveBlockOverlayActive( clientId ) &&
645
639
  ! isDragging(),
@@ -657,7 +651,6 @@ function BlockListBlockProvider( props ) {
657
651
  ! __unstableSelectionHasUnmergeableBlock(),
658
652
  isDragging: isBlockBeingDragged( clientId ),
659
653
  hasChildSelected: isAncestorOfSelectedBlock,
660
- removeOutline: _isSelected && outlineMode && typing,
661
654
  isBlockMovingMode: !! movingClientId,
662
655
  canInsertMovingBlock:
663
656
  movingClientId &&
@@ -697,7 +690,6 @@ function BlockListBlockProvider( props ) {
697
690
  blockApiVersion,
698
691
  blockTitle,
699
692
  isSubtreeDisabled,
700
- isOutlineEnabled,
701
693
  hasOverlay,
702
694
  initialPosition,
703
695
  isHighlighted,
@@ -706,7 +698,6 @@ function BlockListBlockProvider( props ) {
706
698
  isReusable,
707
699
  isDragging,
708
700
  hasChildSelected,
709
- removeOutline,
710
701
  isBlockMovingMode,
711
702
  canInsertMovingBlock,
712
703
  templateLock,
@@ -743,7 +734,6 @@ function BlockListBlockProvider( props ) {
743
734
  blockTitle,
744
735
  isSelected,
745
736
  isSubtreeDisabled,
746
- isOutlineEnabled,
747
737
  hasOverlay,
748
738
  initialPosition,
749
739
  blockEditingMode,
@@ -753,7 +743,6 @@ function BlockListBlockProvider( props ) {
753
743
  isReusable,
754
744
  isDragging,
755
745
  hasChildSelected,
756
- removeOutline,
757
746
  isBlockMovingMode,
758
747
  canInsertMovingBlock,
759
748
  templateLock,
@@ -183,6 +183,14 @@ _::-webkit-full-page-media, _:future, :root .has-multi-selection .block-editor-b
183
183
  user-select: none;
184
184
  }
185
185
 
186
+ &.has-negative-margin {
187
+ &.is-selected,
188
+ &.has-child-selected {
189
+ // Bring the selected block forward so we can see it.
190
+ z-index: z-index(".block-editor-block-list__block.is-selected");
191
+ }
192
+ }
193
+
186
194
  .reusable-block-edit-panel * {
187
195
  z-index: z-index(".block-editor-block-list__block .reusable-block-edit-panel *");
188
196
  }
@@ -262,7 +270,7 @@ _::-webkit-full-page-media, _:future, :root .has-multi-selection .block-editor-b
262
270
  }
263
271
  }
264
272
 
265
- .is-outline-mode .block-editor-block-list__block:not(.remove-outline) {
273
+ .is-outline-mode .block-editor-block-list__block {
266
274
  &.is-hovered {
267
275
  cursor: default;
268
276
 
@@ -56,10 +56,11 @@ function Root( { className, ...settings } ) {
56
56
  getSettings,
57
57
  __unstableGetEditorMode,
58
58
  getTemporarilyEditingAsBlocks,
59
+ isTyping,
59
60
  } = unlock( select( blockEditorStore ) );
60
61
  const { outlineMode, focusMode } = getSettings();
61
62
  return {
62
- isOutlineMode: outlineMode,
63
+ isOutlineMode: outlineMode && ! isTyping(),
63
64
  isFocusMode: focusMode,
64
65
  editorMode: __unstableGetEditorMode(),
65
66
  temporarilyEditingAsBlocks: getTemporarilyEditingAsBlocks(),
@@ -204,11 +205,10 @@ function Items( {
204
205
  visibleBlocks: __unstableGetVisibleBlocks(),
205
206
  shouldRenderAppender:
206
207
  hasAppender &&
208
+ __unstableGetEditorMode() !== 'zoom-out' &&
207
209
  ( hasCustomAppender
208
210
  ? ! getTemplateLock( rootClientId ) &&
209
- getBlockEditingMode( rootClientId ) !==
210
- 'disabled' &&
211
- __unstableGetEditorMode() !== 'zoom-out'
211
+ getBlockEditingMode( rootClientId ) !== 'disabled'
212
212
  : rootClientId === selectedBlockClientId ||
213
213
  ( ! rootClientId &&
214
214
  ! selectedBlockClientId &&
@@ -211,7 +211,7 @@ export default function BlockList( {
211
211
  );
212
212
  };
213
213
 
214
- const { blockToolbar, headerToolbar, floatingToolbar } = styles;
214
+ const { blockToolbar, floatingToolbar } = styles;
215
215
 
216
216
  const containerStyle = {
217
217
  flex: isRootList ? 1 : 0,
@@ -224,7 +224,6 @@ export default function BlockList( {
224
224
  const isMultiBlocks = blockClientIds.length > 1;
225
225
  const { isWider } = alignmentHelpers;
226
226
  const extraScrollHeight =
227
- headerToolbar.height +
228
227
  blockToolbar.height +
229
228
  ( isFloatingToolbarVisible ? floatingToolbar.height : 0 );
230
229
 
@@ -245,14 +244,10 @@ export default function BlockList( {
245
244
  <BlockDraggableWrapper isRTL={ isRTL }>
246
245
  { ( { onScroll } ) => (
247
246
  <KeyboardAwareFlatList
248
- { ...( Platform.OS === 'android'
249
- ? { removeClippedSubviews: false }
250
- : {} ) } // Disable clipping on Android to fix focus losing. See https://github.com/wordpress-mobile/gutenberg-mobile/pull/741#issuecomment-472746541
251
247
  accessibilityLabel="block-list"
252
248
  ref={ scrollRef }
253
249
  extraScrollHeight={ extraScrollHeight }
254
250
  keyboardShouldPersistTaps="always"
255
- scrollViewStyle={ { flex: 1 } }
256
251
  extraData={ getExtraData() }
257
252
  scrollEnabled={ isRootList }
258
253
  contentContainerStyle={ [
@@ -86,7 +86,6 @@ export function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {
86
86
  blockTitle,
87
87
  isSelected,
88
88
  isSubtreeDisabled,
89
- isOutlineEnabled,
90
89
  hasOverlay,
91
90
  initialPosition,
92
91
  blockEditingMode,
@@ -96,7 +95,6 @@ export function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {
96
95
  isReusable,
97
96
  isDragging,
98
97
  hasChildSelected,
99
- removeOutline,
100
98
  isBlockMovingMode,
101
99
  canInsertMovingBlock,
102
100
  isEditingDisabled,
@@ -116,7 +114,7 @@ export function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {
116
114
  useFocusHandler( clientId ),
117
115
  useEventHandlers( { clientId, isSelected } ),
118
116
  useNavModeExit( clientId ),
119
- useIsHovered( { isEnabled: isOutlineEnabled } ),
117
+ useIsHovered(),
120
118
  useIntersectionObserver(),
121
119
  useMovingAnimation( { triggerAnimationOnChange: index, clientId } ),
122
120
  useDisabled( { isDisabled: ! hasOverlay } ),
@@ -144,6 +142,16 @@ export function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {
144
142
  );
145
143
  }
146
144
 
145
+ let hasNegativeMargin = false;
146
+ if (
147
+ wrapperProps?.style?.marginTop?.charAt( 0 ) === '-' ||
148
+ wrapperProps?.style?.marginBottom?.charAt( 0 ) === '-' ||
149
+ wrapperProps?.style?.marginLeft?.charAt( 0 ) === '-' ||
150
+ wrapperProps?.style?.marginRight?.charAt( 0 ) === '-'
151
+ ) {
152
+ hasNegativeMargin = true;
153
+ }
154
+
147
155
  return {
148
156
  tabIndex: blockEditingMode === 'disabled' ? -1 : 0,
149
157
  ...wrapperProps,
@@ -169,11 +177,11 @@ export function useBlockProps( props = {}, { __unstableIsHtml } = {} ) {
169
177
  'is-reusable': isReusable,
170
178
  'is-dragging': isDragging,
171
179
  'has-child-selected': hasChildSelected,
172
- 'remove-outline': removeOutline,
173
180
  'is-block-moving-mode': isBlockMovingMode,
174
181
  'can-insert-moving-block': canInsertMovingBlock,
175
182
  'is-editing-disabled': isEditingDisabled,
176
183
  'has-editable-outline': hasEditableOutline,
184
+ 'has-negative-margin': hasNegativeMargin,
177
185
  'is-content-locked-temporarily-editing-as-blocks':
178
186
  isTemporarilyEditingAsBlocks,
179
187
  },
@@ -1,14 +1,8 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import {
5
- useContext,
6
- useLayoutEffect,
7
- useMemo,
8
- useRef,
9
- useState,
10
- } from '@wordpress/element';
11
- import { useRefEffect } from '@wordpress/compose';
4
+ import { useContext, useMemo, useRef } from '@wordpress/element';
5
+ import { useRefEffect, useObservableValue } from '@wordpress/compose';
12
6
 
13
7
  /**
14
8
  * Internal dependencies
@@ -26,60 +20,40 @@ import { BlockRefs } from '../../provider/block-refs-provider';
26
20
  * @return {RefCallback} Ref callback.
27
21
  */
28
22
  export function useBlockRefProvider( clientId ) {
29
- const { refs, callbacks } = useContext( BlockRefs );
30
- const ref = useRef();
31
- useLayoutEffect( () => {
32
- refs.set( ref, clientId );
33
- return () => {
34
- refs.delete( ref );
35
- };
36
- }, [ clientId ] );
23
+ const { refsMap } = useContext( BlockRefs );
37
24
  return useRefEffect(
38
25
  ( element ) => {
39
- // Update the ref in the provider.
40
- ref.current = element;
41
- // Call any update functions.
42
- callbacks.forEach( ( id, setElement ) => {
43
- if ( clientId === id ) {
44
- setElement( element );
45
- }
46
- } );
26
+ refsMap.set( clientId, element );
27
+ return () => refsMap.delete( clientId );
47
28
  },
48
29
  [ clientId ]
49
30
  );
50
31
  }
51
32
 
52
33
  /**
53
- * Gets a ref pointing to the current block element. Continues to return a
54
- * stable ref even if the block client ID changes.
34
+ * Gets a ref pointing to the current block element. Continues to return the same
35
+ * stable ref object even if the `clientId` argument changes. This hook is not
36
+ * reactive, i.e., it won't trigger a rerender of the calling component if the
37
+ * ref value changes. For reactive use cases there is the `useBlockElement` hook.
55
38
  *
56
39
  * @param {string} clientId The client ID to get a ref for.
57
40
  *
58
41
  * @return {RefObject} A ref containing the element.
59
42
  */
60
43
  function useBlockRef( clientId ) {
61
- const { refs } = useContext( BlockRefs );
62
- const freshClientId = useRef();
63
- freshClientId.current = clientId;
44
+ const { refsMap } = useContext( BlockRefs );
45
+ const latestClientId = useRef();
46
+ latestClientId.current = clientId;
47
+
64
48
  // Always return an object, even if no ref exists for a given client ID, so
65
49
  // that `current` works at a later point.
66
50
  return useMemo(
67
51
  () => ( {
68
52
  get current() {
69
- let element = null;
70
-
71
- // Multiple refs may be created for a single block. Find the
72
- // first that has an element set.
73
- for ( const [ ref, id ] of refs.entries() ) {
74
- if ( id === freshClientId.current && ref.current ) {
75
- element = ref.current;
76
- }
77
- }
78
-
79
- return element;
53
+ return refsMap.get( latestClientId.current ) ?? null;
80
54
  },
81
55
  } ),
82
- []
56
+ [ refsMap ]
83
57
  );
84
58
  }
85
59
 
@@ -92,22 +66,8 @@ function useBlockRef( clientId ) {
92
66
  * @return {Element|null} The block's wrapper element.
93
67
  */
94
68
  function useBlockElement( clientId ) {
95
- const { callbacks } = useContext( BlockRefs );
96
- const ref = useBlockRef( clientId );
97
- const [ element, setElement ] = useState( null );
98
-
99
- useLayoutEffect( () => {
100
- if ( ! clientId ) {
101
- return;
102
- }
103
-
104
- callbacks.set( setElement, clientId );
105
- return () => {
106
- callbacks.delete( setElement );
107
- };
108
- }, [ clientId ] );
109
-
110
- return ref.current || element;
69
+ const { refsMap } = useContext( BlockRefs );
70
+ return useObservableValue( refsMap, clientId ) ?? null;
111
71
  }
112
72
 
113
73
  export { useBlockRef as __unstableUseBlockRef };
@@ -18,22 +18,17 @@ function listener( event ) {
18
18
  * Adds `is-hovered` class when the block is hovered and in navigation or
19
19
  * outline mode.
20
20
  */
21
- export function useIsHovered( { isEnabled } ) {
22
- return useRefEffect(
23
- ( node ) => {
24
- if ( isEnabled ) {
25
- node.addEventListener( 'mouseout', listener );
26
- node.addEventListener( 'mouseover', listener );
21
+ export function useIsHovered() {
22
+ return useRefEffect( ( node ) => {
23
+ node.addEventListener( 'mouseout', listener );
24
+ node.addEventListener( 'mouseover', listener );
27
25
 
28
- return () => {
29
- node.removeEventListener( 'mouseout', listener );
30
- node.removeEventListener( 'mouseover', listener );
26
+ return () => {
27
+ node.removeEventListener( 'mouseout', listener );
28
+ node.removeEventListener( 'mouseover', listener );
31
29
 
32
- // Remove class in case it lingers.
33
- node.classList.remove( 'is-hovered' );
34
- };
35
- }
36
- },
37
- [ isEnabled ]
38
- );
30
+ // Remove class in case it lingers.
31
+ node.classList.remove( 'is-hovered' );
32
+ };
33
+ }, [] );
39
34
  }
@@ -90,7 +90,9 @@ export const BlockMover = ( {
90
90
  const option = blockPageMoverOptions.find(
91
91
  ( el ) => el.value === value
92
92
  );
93
- if ( option && option.onSelect ) option.onSelect();
93
+ if ( option && option.onSelect ) {
94
+ option.onSelect();
95
+ }
94
96
  };
95
97
 
96
98
  const onLongPressMoveUp = useCallback(
@@ -50,9 +50,7 @@
50
50
  &:hover,
51
51
  &:focus {
52
52
  .block-editor-block-preview__container {
53
- box-shadow:
54
- 0 0 0 2px var(--wp-block-synced-color),
55
- 0 15px 25px rgb(0 0 0 / 7%);
53
+ box-shadow: 0 0 0 2px var(--wp-block-synced-color);
56
54
  }
57
55
  }
58
56
  }
@@ -49,30 +49,28 @@
49
49
  z-index: 1;
50
50
  }
51
51
 
52
- // Restrict these shadows to the context of the inspector.
53
- .interface-interface-skeleton__sidebar {
54
- .block-editor-block-patterns-list__list-item {
55
- .block-editor-block-preview__container {
56
- box-shadow: 0 0 $border-width rgba($black, 0.1);
57
- }
58
- &:hover {
59
- .block-editor-block-preview__container {
60
- box-shadow: 0 0 0 2px $gray-900;
61
- }
62
- }
63
- }
64
- }
65
-
66
52
  // Restrict these shadows to the context of the inserter.
67
53
  .editor-inserter-sidebar {
68
- .block-editor-block-patterns-list__list-item {
54
+ .block-editor-block-patterns-list__item {
69
55
  .block-editor-block-preview__container {
70
56
  box-shadow: 0 15px 25px rgb(0 0 0 / 7%);
71
57
  }
58
+ &:focus,
72
59
  &:hover {
73
60
  .block-editor-block-preview__container {
74
61
  box-shadow: 0 0 0 2px $gray-900, 0 15px 25px rgb(0 0 0 / 7%);
75
62
  }
76
63
  }
64
+
65
+ &.block-editor-block-patterns-list__list-item-synced {
66
+ &:hover,
67
+ &:focus {
68
+ .block-editor-block-preview__container {
69
+ box-shadow:
70
+ 0 0 0 2px var(--wp-block-synced-color),
71
+ 0 15px 25px rgb(0 0 0 / 7%);
72
+ }
73
+ }
74
+ }
77
75
  }
78
76
  }
@@ -12,10 +12,7 @@ import { moreVertical } from '@wordpress/icons';
12
12
  import { Children, cloneElement } from '@wordpress/element';
13
13
  import { __ } from '@wordpress/i18n';
14
14
  import { displayShortcut } from '@wordpress/keycodes';
15
- import {
16
- store as keyboardShortcutsStore,
17
- __unstableUseShortcutEventMatch,
18
- } from '@wordpress/keyboard-shortcuts';
15
+ import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';
19
16
  import { pipe, useCopyToClipboard } from '@wordpress/compose';
20
17
 
21
18
  /**
@@ -125,7 +122,6 @@ export function BlockSettingsDropdown( {
125
122
  ),
126
123
  };
127
124
  }, [] );
128
- const isMatch = __unstableUseShortcutEventMatch();
129
125
  const hasSelectedBlocks = selectedBlockClientIds.length > 0;
130
126
 
131
127
  async function updateSelectionAfterDuplicate( clientIdsPromise ) {
@@ -213,52 +209,6 @@ export function BlockSettingsDropdown( {
213
209
  open={ open }
214
210
  onToggle={ onToggle }
215
211
  noIcons
216
- menuProps={ {
217
- /**
218
- * @param {KeyboardEvent} event
219
- */
220
- onKeyDown( event ) {
221
- if ( event.defaultPrevented ) return;
222
-
223
- if (
224
- isMatch( 'core/block-editor/remove', event ) &&
225
- canRemove
226
- ) {
227
- event.preventDefault();
228
- onRemove();
229
- updateSelectionAfterRemove();
230
- } else if (
231
- isMatch(
232
- 'core/block-editor/duplicate',
233
- event
234
- ) &&
235
- canDuplicate
236
- ) {
237
- event.preventDefault();
238
- updateSelectionAfterDuplicate( onDuplicate() );
239
- } else if (
240
- isMatch(
241
- 'core/block-editor/insert-after',
242
- event
243
- ) &&
244
- canInsertBlock
245
- ) {
246
- event.preventDefault();
247
- setOpenedBlockSettingsMenu( undefined );
248
- onInsertAfter();
249
- } else if (
250
- isMatch(
251
- 'core/block-editor/insert-before',
252
- event
253
- ) &&
254
- canInsertBlock
255
- ) {
256
- event.preventDefault();
257
- setOpenedBlockSettingsMenu( undefined );
258
- onInsertBefore();
259
- }
260
- },
261
- } }
262
212
  { ...props }
263
213
  >
264
214
  { ( { onClose } ) => (