@wordpress/block-editor 12.21.0 → 12.23.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 (408) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +4 -0
  3. package/build/components/block-actions/index.js +2 -4
  4. package/build/components/block-actions/index.js.map +1 -1
  5. package/build/components/block-heading-level-dropdown/index.js +5 -5
  6. package/build/components/block-heading-level-dropdown/index.js.map +1 -1
  7. package/build/components/block-heading-level-dropdown/index.native.js +5 -4
  8. package/build/components/block-heading-level-dropdown/index.native.js.map +1 -1
  9. package/build/components/block-list/block-crash-boundary.native.js +49 -0
  10. package/build/components/block-list/block-crash-boundary.native.js.map +1 -0
  11. package/build/components/block-list/block-crash-warning.native.js +24 -0
  12. package/build/components/block-list/block-crash-warning.native.js.map +1 -0
  13. package/build/components/block-list/block.js +11 -3
  14. package/build/components/block-list/block.js.map +1 -1
  15. package/build/components/block-list/block.native.js +7 -2
  16. package/build/components/block-list/block.native.js.map +1 -1
  17. package/build/components/block-mover/button.js +4 -1
  18. package/build/components/block-mover/button.js.map +1 -1
  19. package/build/components/block-mover/index.js +5 -1
  20. package/build/components/block-mover/index.js.map +1 -1
  21. package/build/components/block-patterns-list/index.js +4 -1
  22. package/build/components/block-patterns-list/index.js.map +1 -1
  23. package/build/components/block-settings/container.native.js +2 -1
  24. package/build/components/block-settings/container.native.js.map +1 -1
  25. package/build/components/block-settings-menu/block-settings-dropdown.js +36 -32
  26. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  27. package/build/components/block-settings-menu-controls/index.js +1 -3
  28. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  29. package/build/components/block-switcher/index.js +4 -3
  30. package/build/components/block-switcher/index.js.map +1 -1
  31. package/build/components/block-toolbar/index.js +8 -5
  32. package/build/components/block-toolbar/index.js.map +1 -1
  33. package/build/components/block-toolbar/shuffle.js +19 -10
  34. package/build/components/block-toolbar/shuffle.js.map +1 -1
  35. package/build/components/block-tools/block-selection-button.js +48 -8
  36. package/build/components/block-tools/block-selection-button.js.map +1 -1
  37. package/build/components/block-tools/index.js +14 -2
  38. package/build/components/block-tools/index.js.map +1 -1
  39. package/build/components/child-layout-control/index.js +108 -11
  40. package/build/components/child-layout-control/index.js.map +1 -1
  41. package/build/components/convert-to-group-buttons/toolbar.js +11 -0
  42. package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
  43. package/build/components/global-styles/advanced-panel.js +9 -2
  44. package/build/components/global-styles/advanced-panel.js.map +1 -1
  45. package/build/components/global-styles/background-panel.js +444 -0
  46. package/build/components/global-styles/background-panel.js.map +1 -0
  47. package/build/components/global-styles/color-panel.js +2 -1
  48. package/build/components/global-styles/color-panel.js.map +1 -1
  49. package/build/components/global-styles/dimensions-panel.js +8 -33
  50. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  51. package/build/components/global-styles/get-global-styles-changes.js +3 -0
  52. package/build/components/global-styles/get-global-styles-changes.js.map +1 -1
  53. package/build/components/global-styles/hooks.js +1 -1
  54. package/build/components/global-styles/hooks.js.map +1 -1
  55. package/build/components/global-styles/index.js +13 -0
  56. package/build/components/global-styles/index.js.map +1 -1
  57. package/build/components/global-styles/use-global-styles-output.js +16 -15
  58. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  59. package/build/components/global-styles/utils.js +2 -3
  60. package/build/components/global-styles/utils.js.map +1 -1
  61. package/build/components/iframe/index.js +43 -34
  62. package/build/components/iframe/index.js.map +1 -1
  63. package/build/components/inserter/block-patterns-explorer/index.js +3 -6
  64. package/build/components/inserter/block-patterns-explorer/index.js.map +1 -1
  65. package/build/components/inserter/block-patterns-explorer/pattern-list.js +3 -1
  66. package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  67. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  68. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +5 -0
  69. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
  70. package/build/components/inserter/library.js +2 -0
  71. package/build/components/inserter/library.js.map +1 -1
  72. package/build/components/inserter/menu.js +11 -11
  73. package/build/components/inserter/menu.js.map +1 -1
  74. package/build/components/inserter/mobile-tab-navigation.js +1 -1
  75. package/build/components/inserter/mobile-tab-navigation.js.map +1 -1
  76. package/build/components/inserter/search-items.js +36 -15
  77. package/build/components/inserter/search-items.js.map +1 -1
  78. package/build/components/inserter/search-results.js +2 -3
  79. package/build/components/inserter/search-results.js.map +1 -1
  80. package/build/components/inserter/tabs.js +1 -2
  81. package/build/components/inserter/tabs.js.map +1 -1
  82. package/build/components/inspector-controls-tabs/advanced-controls-panel.native.js +36 -0
  83. package/build/components/inspector-controls-tabs/advanced-controls-panel.native.js.map +1 -0
  84. package/build/components/keyboard-shortcuts/index.js +11 -0
  85. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  86. package/build/components/list-view/block-select-button.js +18 -12
  87. package/build/components/list-view/block-select-button.js.map +1 -1
  88. package/build/components/list-view/block.js +4 -11
  89. package/build/components/list-view/block.js.map +1 -1
  90. package/build/components/list-view/index.js +17 -2
  91. package/build/components/list-view/index.js.map +1 -1
  92. package/build/components/list-view/use-list-view-collapse-items.js +47 -0
  93. package/build/components/list-view/use-list-view-collapse-items.js.map +1 -0
  94. package/build/components/list-view/utils.js +5 -3
  95. package/build/components/list-view/utils.js.map +1 -1
  96. package/build/components/rich-text/index.js +14 -11
  97. package/build/components/rich-text/index.js.map +1 -1
  98. package/build/components/rich-text/index.native.js +17 -11
  99. package/build/components/rich-text/index.native.js.map +1 -1
  100. package/build/components/rich-text/native/get-format-colors.native.js +1 -1
  101. package/build/components/rich-text/native/get-format-colors.native.js.map +1 -1
  102. package/build/components/rich-text/native/index.native.js +2 -2
  103. package/build/components/rich-text/native/index.native.js.map +1 -1
  104. package/build/components/rich-text/with-deprecations.js +0 -3
  105. package/build/components/rich-text/with-deprecations.js.map +1 -1
  106. package/build/components/spacing-sizes-control/sides-dropdown/index.js +1 -1
  107. package/build/components/spacing-sizes-control/sides-dropdown/index.js.map +1 -1
  108. package/build/components/url-popover/image-url-input-ui.js +50 -36
  109. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  110. package/build/components/use-block-display-information/index.js +4 -6
  111. package/build/components/use-block-display-information/index.js.map +1 -1
  112. package/build/components/use-moving-animation/index.js +4 -0
  113. package/build/components/use-moving-animation/index.js.map +1 -1
  114. package/build/components/warning/index.native.js +9 -4
  115. package/build/components/warning/index.native.js.map +1 -1
  116. package/build/hooks/anchor.js +9 -10
  117. package/build/hooks/anchor.js.map +1 -1
  118. package/build/hooks/background.js +85 -402
  119. package/build/hooks/background.js.map +1 -1
  120. package/build/hooks/index.js +9 -1
  121. package/build/hooks/index.js.map +1 -1
  122. package/build/hooks/layout-child.js +28 -6
  123. package/build/hooks/layout-child.js.map +1 -1
  124. package/build/hooks/layout.js +21 -10
  125. package/build/hooks/layout.js.map +1 -1
  126. package/build/hooks/position.js +1 -1
  127. package/build/hooks/position.js.map +1 -1
  128. package/build/hooks/use-zoom-out.js +47 -0
  129. package/build/hooks/use-zoom-out.js.map +1 -0
  130. package/build/index.js +7 -0
  131. package/build/index.js.map +1 -1
  132. package/build/private-apis.js +6 -1
  133. package/build/private-apis.js.map +1 -1
  134. package/build/private-apis.native.js +5 -1
  135. package/build/private-apis.native.js.map +1 -1
  136. package/build/store/private-actions.js +13 -0
  137. package/build/store/private-actions.js.map +1 -1
  138. package/build/store/private-keys.js +2 -1
  139. package/build/store/private-keys.js.map +1 -1
  140. package/build/store/private-selectors.js +24 -3
  141. package/build/store/private-selectors.js.map +1 -1
  142. package/build/store/reducer.js +53 -26
  143. package/build/store/reducer.js.map +1 -1
  144. package/build/store/selectors.js +34 -32
  145. package/build/store/selectors.js.map +1 -1
  146. package/build/store/utils.js +7 -1
  147. package/build/store/utils.js.map +1 -1
  148. package/build/utils/transform-styles/index.js +2 -1
  149. package/build/utils/transform-styles/index.js.map +1 -1
  150. package/build-module/components/block-actions/index.js +2 -4
  151. package/build-module/components/block-actions/index.js.map +1 -1
  152. package/build-module/components/block-heading-level-dropdown/index.js +5 -5
  153. package/build-module/components/block-heading-level-dropdown/index.js.map +1 -1
  154. package/build-module/components/block-heading-level-dropdown/index.native.js +5 -4
  155. package/build-module/components/block-heading-level-dropdown/index.native.js.map +1 -1
  156. package/build-module/components/block-list/block-crash-boundary.native.js +42 -0
  157. package/build-module/components/block-list/block-crash-boundary.native.js.map +1 -0
  158. package/build-module/components/block-list/block-crash-warning.native.js +15 -0
  159. package/build-module/components/block-list/block-crash-warning.native.js.map +1 -0
  160. package/build-module/components/block-list/block.js +11 -3
  161. package/build-module/components/block-list/block.js.map +1 -1
  162. package/build-module/components/block-list/block.native.js +7 -2
  163. package/build-module/components/block-list/block.native.js.map +1 -1
  164. package/build-module/components/block-mover/button.js +4 -1
  165. package/build-module/components/block-mover/button.js.map +1 -1
  166. package/build-module/components/block-mover/index.js +5 -1
  167. package/build-module/components/block-mover/index.js.map +1 -1
  168. package/build-module/components/block-patterns-list/index.js +4 -1
  169. package/build-module/components/block-patterns-list/index.js.map +1 -1
  170. package/build-module/components/block-settings/container.native.js +3 -2
  171. package/build-module/components/block-settings/container.native.js.map +1 -1
  172. package/build-module/components/block-settings-menu/block-settings-dropdown.js +37 -33
  173. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  174. package/build-module/components/block-settings-menu-controls/index.js +1 -3
  175. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  176. package/build-module/components/block-switcher/index.js +4 -3
  177. package/build-module/components/block-switcher/index.js.map +1 -1
  178. package/build-module/components/block-toolbar/index.js +8 -5
  179. package/build-module/components/block-toolbar/index.js.map +1 -1
  180. package/build-module/components/block-toolbar/shuffle.js +19 -10
  181. package/build-module/components/block-toolbar/shuffle.js.map +1 -1
  182. package/build-module/components/block-tools/block-selection-button.js +50 -10
  183. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  184. package/build-module/components/block-tools/index.js +14 -2
  185. package/build-module/components/block-tools/index.js.map +1 -1
  186. package/build-module/components/child-layout-control/index.js +109 -12
  187. package/build-module/components/child-layout-control/index.js.map +1 -1
  188. package/build-module/components/convert-to-group-buttons/toolbar.js +12 -1
  189. package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
  190. package/build-module/components/global-styles/advanced-panel.js +9 -2
  191. package/build-module/components/global-styles/advanced-panel.js.map +1 -1
  192. package/build-module/components/global-styles/background-panel.js +430 -0
  193. package/build-module/components/global-styles/background-panel.js.map +1 -0
  194. package/build-module/components/global-styles/color-panel.js +2 -1
  195. package/build-module/components/global-styles/color-panel.js.map +1 -1
  196. package/build-module/components/global-styles/dimensions-panel.js +9 -34
  197. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  198. package/build-module/components/global-styles/get-global-styles-changes.js +3 -0
  199. package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -1
  200. package/build-module/components/global-styles/hooks.js +1 -1
  201. package/build-module/components/global-styles/hooks.js.map +1 -1
  202. package/build-module/components/global-styles/index.js +1 -0
  203. package/build-module/components/global-styles/index.js.map +1 -1
  204. package/build-module/components/global-styles/use-global-styles-output.js +17 -16
  205. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  206. package/build-module/components/global-styles/utils.js +1 -2
  207. package/build-module/components/global-styles/utils.js.map +1 -1
  208. package/build-module/components/iframe/index.js +43 -34
  209. package/build-module/components/iframe/index.js.map +1 -1
  210. package/build-module/components/inserter/block-patterns-explorer/index.js +3 -6
  211. package/build-module/components/inserter/block-patterns-explorer/index.js.map +1 -1
  212. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +3 -1
  213. package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
  214. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  215. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +5 -0
  216. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
  217. package/build-module/components/inserter/library.js +2 -0
  218. package/build-module/components/inserter/library.js.map +1 -1
  219. package/build-module/components/inserter/menu.js +11 -11
  220. package/build-module/components/inserter/menu.js.map +1 -1
  221. package/build-module/components/inserter/mobile-tab-navigation.js +1 -1
  222. package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -1
  223. package/build-module/components/inserter/search-items.js +33 -15
  224. package/build-module/components/inserter/search-items.js.map +1 -1
  225. package/build-module/components/inserter/search-results.js +2 -3
  226. package/build-module/components/inserter/search-results.js.map +1 -1
  227. package/build-module/components/inserter/tabs.js +1 -2
  228. package/build-module/components/inserter/tabs.js.map +1 -1
  229. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.native.js +28 -0
  230. package/build-module/components/inspector-controls-tabs/advanced-controls-panel.native.js.map +1 -0
  231. package/build-module/components/keyboard-shortcuts/index.js +11 -0
  232. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  233. package/build-module/components/list-view/block-select-button.js +19 -13
  234. package/build-module/components/list-view/block-select-button.js.map +1 -1
  235. package/build-module/components/list-view/block.js +6 -13
  236. package/build-module/components/list-view/block.js.map +1 -1
  237. package/build-module/components/list-view/index.js +17 -2
  238. package/build-module/components/list-view/index.js.map +1 -1
  239. package/build-module/components/list-view/use-list-view-collapse-items.js +40 -0
  240. package/build-module/components/list-view/use-list-view-collapse-items.js.map +1 -0
  241. package/build-module/components/list-view/utils.js +2 -1
  242. package/build-module/components/list-view/utils.js.map +1 -1
  243. package/build-module/components/rich-text/index.js +15 -12
  244. package/build-module/components/rich-text/index.js.map +1 -1
  245. package/build-module/components/rich-text/index.native.js +16 -11
  246. package/build-module/components/rich-text/index.native.js.map +1 -1
  247. package/build-module/components/rich-text/native/get-format-colors.native.js +1 -1
  248. package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -1
  249. package/build-module/components/rich-text/native/index.native.js +2 -2
  250. package/build-module/components/rich-text/native/index.native.js.map +1 -1
  251. package/build-module/components/rich-text/with-deprecations.js +0 -3
  252. package/build-module/components/rich-text/with-deprecations.js.map +1 -1
  253. package/build-module/components/spacing-sizes-control/sides-dropdown/index.js +1 -1
  254. package/build-module/components/spacing-sizes-control/sides-dropdown/index.js.map +1 -1
  255. package/build-module/components/url-popover/image-url-input-ui.js +50 -36
  256. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  257. package/build-module/components/use-block-display-information/index.js +5 -7
  258. package/build-module/components/use-block-display-information/index.js.map +1 -1
  259. package/build-module/components/use-moving-animation/index.js +4 -0
  260. package/build-module/components/use-moving-animation/index.js.map +1 -1
  261. package/build-module/components/warning/index.native.js +9 -4
  262. package/build-module/components/warning/index.native.js.map +1 -1
  263. package/build-module/hooks/anchor.js +10 -11
  264. package/build-module/hooks/anchor.js.map +1 -1
  265. package/build-module/hooks/background.js +82 -397
  266. package/build-module/hooks/background.js.map +1 -1
  267. package/build-module/hooks/index.js +3 -1
  268. package/build-module/hooks/index.js.map +1 -1
  269. package/build-module/hooks/layout-child.js +28 -6
  270. package/build-module/hooks/layout-child.js.map +1 -1
  271. package/build-module/hooks/layout.js +21 -10
  272. package/build-module/hooks/layout.js.map +1 -1
  273. package/build-module/hooks/position.js +1 -1
  274. package/build-module/hooks/position.js.map +1 -1
  275. package/build-module/hooks/use-zoom-out.js +41 -0
  276. package/build-module/hooks/use-zoom-out.js.map +1 -0
  277. package/build-module/index.js +1 -1
  278. package/build-module/index.js.map +1 -1
  279. package/build-module/private-apis.js +7 -2
  280. package/build-module/private-apis.js.map +1 -1
  281. package/build-module/private-apis.native.js +5 -1
  282. package/build-module/private-apis.native.js.map +1 -1
  283. package/build-module/store/private-actions.js +12 -0
  284. package/build-module/store/private-actions.js.map +1 -1
  285. package/build-module/store/private-keys.js +1 -0
  286. package/build-module/store/private-keys.js.map +1 -1
  287. package/build-module/store/private-selectors.js +22 -4
  288. package/build-module/store/private-selectors.js.map +1 -1
  289. package/build-module/store/reducer.js +52 -26
  290. package/build-module/store/reducer.js.map +1 -1
  291. package/build-module/store/selectors.js +35 -33
  292. package/build-module/store/selectors.js.map +1 -1
  293. package/build-module/store/utils.js +6 -1
  294. package/build-module/store/utils.js.map +1 -1
  295. package/build-module/utils/transform-styles/index.js +2 -1
  296. package/build-module/utils/transform-styles/index.js.map +1 -1
  297. package/build-style/content-rtl.css +18 -1
  298. package/build-style/content.css +18 -1
  299. package/build-style/style-rtl.css +92 -99
  300. package/build-style/style.css +92 -99
  301. package/package.json +31 -31
  302. package/src/components/block-actions/index.js +2 -8
  303. package/src/components/block-bindings-toolbar-indicator/style.scss +10 -8
  304. package/src/components/block-heading-level-dropdown/README.md +5 -5
  305. package/src/components/block-heading-level-dropdown/index.js +5 -5
  306. package/src/components/block-heading-level-dropdown/index.native.js +5 -4
  307. package/src/components/block-list/block-crash-boundary.native.js +43 -0
  308. package/src/components/block-list/block-crash-warning.native.js +19 -0
  309. package/src/components/block-list/block.js +19 -3
  310. package/src/components/block-list/block.native.js +14 -7
  311. package/src/components/block-list/content.scss +16 -0
  312. package/src/components/block-mover/button.js +4 -1
  313. package/src/components/block-mover/index.js +8 -1
  314. package/src/components/block-patterns-list/index.js +22 -17
  315. package/src/components/block-preview/style.scss +28 -0
  316. package/src/components/block-settings/container.native.js +5 -1
  317. package/src/components/block-settings-menu/block-settings-dropdown.js +49 -58
  318. package/src/components/block-settings-menu-controls/README.md +0 -9
  319. package/src/components/block-settings-menu-controls/index.js +1 -6
  320. package/src/components/block-switcher/index.js +5 -3
  321. package/src/components/block-switcher/style.scss +1 -1
  322. package/src/components/block-toolbar/index.js +25 -20
  323. package/src/components/block-toolbar/shuffle.js +20 -14
  324. package/src/components/block-toolbar/style.scss +1 -1
  325. package/src/components/block-toolbar/test/index.native.js +1 -7
  326. package/src/components/block-tools/block-selection-button.js +66 -9
  327. package/src/components/block-tools/index.js +18 -1
  328. package/src/components/button-block-appender/content.scss +5 -1
  329. package/src/components/child-layout-control/index.js +147 -35
  330. package/src/components/convert-to-group-buttons/toolbar.js +13 -1
  331. package/src/components/default-block-appender/content.scss +2 -2
  332. package/src/components/global-styles/advanced-panel.js +8 -2
  333. package/src/components/global-styles/background-panel.js +591 -0
  334. package/src/components/global-styles/color-panel.js +2 -1
  335. package/src/components/global-styles/dimensions-panel.js +9 -34
  336. package/src/components/global-styles/get-global-styles-changes.js +3 -0
  337. package/src/components/global-styles/hooks.js +1 -0
  338. package/src/components/global-styles/index.js +4 -0
  339. package/src/components/global-styles/style.scss +78 -1
  340. package/src/{hooks/test/background.js → components/global-styles/test/background-panel.js} +36 -1
  341. package/src/components/global-styles/test/get-global-styles-changes.js +22 -3
  342. package/src/components/global-styles/test/use-global-styles-output.js +40 -9
  343. package/src/components/global-styles/use-global-styles-output.js +30 -17
  344. package/src/components/global-styles/utils.js +1 -18
  345. package/src/components/iframe/index.js +79 -53
  346. package/src/components/inserter/block-patterns-explorer/index.js +2 -9
  347. package/src/components/inserter/block-patterns-explorer/pattern-list.js +7 -1
  348. package/src/components/inserter/block-patterns-tab/index.js +1 -0
  349. package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +5 -0
  350. package/src/components/inserter/library.js +4 -0
  351. package/src/components/inserter/menu.js +12 -11
  352. package/src/components/inserter/mobile-tab-navigation.js +1 -1
  353. package/src/components/inserter/search-items.js +37 -15
  354. package/src/components/inserter/search-results.js +1 -2
  355. package/src/components/inserter/style.scss +6 -12
  356. package/src/components/inserter/tabs.js +1 -2
  357. package/src/components/inspector-controls-tabs/advanced-controls-panel.native.js +31 -0
  358. package/src/components/keyboard-shortcuts/index.js +11 -0
  359. package/src/components/link-control/style.scss +0 -5
  360. package/src/components/list-view/block-select-button.js +15 -19
  361. package/src/components/list-view/block.js +12 -21
  362. package/src/components/list-view/index.js +18 -1
  363. package/src/components/list-view/style.scss +38 -28
  364. package/src/components/list-view/use-list-view-collapse-items.js +33 -0
  365. package/src/components/list-view/utils.js +4 -1
  366. package/src/components/rich-text/README.md +6 -0
  367. package/src/components/rich-text/index.js +30 -13
  368. package/src/components/rich-text/index.native.js +14 -11
  369. package/src/components/rich-text/native/get-format-colors.native.js +1 -1
  370. package/src/components/rich-text/native/index.native.js +2 -2
  371. package/src/components/rich-text/with-deprecations.js +0 -3
  372. package/src/components/spacing-sizes-control/sides-dropdown/index.js +1 -1
  373. package/src/components/url-popover/image-url-input-ui.js +68 -51
  374. package/src/components/use-block-display-information/index.js +8 -10
  375. package/src/components/use-moving-animation/index.js +1 -0
  376. package/src/components/warning/index.native.js +19 -15
  377. package/src/hooks/anchor.js +43 -61
  378. package/src/hooks/background.js +100 -516
  379. package/src/hooks/index.js +3 -0
  380. package/src/hooks/layout-child.js +44 -8
  381. package/src/hooks/layout.js +22 -18
  382. package/src/hooks/position.js +1 -1
  383. package/src/hooks/test/__snapshots__/anchor.native.js.snap +7 -0
  384. package/src/hooks/test/anchor.native.js +32 -0
  385. package/src/hooks/use-zoom-out.js +36 -0
  386. package/src/index.js +1 -0
  387. package/src/private-apis.js +13 -1
  388. package/src/private-apis.native.js +4 -0
  389. package/src/store/private-actions.js +12 -0
  390. package/src/store/private-keys.js +1 -0
  391. package/src/store/private-selectors.js +54 -27
  392. package/src/store/reducer.js +63 -41
  393. package/src/store/selectors.js +195 -180
  394. package/src/store/test/private-actions.js +10 -0
  395. package/src/store/test/private-selectors.js +13 -0
  396. package/src/store/test/reducer.js +26 -0
  397. package/src/store/test/selectors.js +90 -199
  398. package/src/store/utils.js +13 -0
  399. package/src/style.scss +0 -2
  400. package/src/utils/transform-styles/index.js +2 -1
  401. package/tsconfig.json +1 -0
  402. package/build/utils/calculate-scale.js +0 -17
  403. package/build/utils/calculate-scale.js.map +0 -1
  404. package/build-module/utils/calculate-scale.js +0 -11
  405. package/build-module/utils/calculate-scale.js.map +0 -1
  406. package/src/hooks/anchor.scss +0 -4
  407. package/src/hooks/background.scss +0 -75
  408. package/src/utils/calculate-scale.js +0 -20
@@ -126,15 +126,15 @@
126
126
  .block-editor-block-bindings-toolbar-indicator {
127
127
  display: inline-flex;
128
128
  align-items: center;
129
- height: 48px;
129
+ justify-content: center;
130
130
  padding: 6px;
131
131
  }
132
- .block-editor-block-bindings-toolbar-indicator svg g {
133
- stroke: var(--wp-bound-block-color);
134
- fill: transparent;
135
- stroke-width: 1.5;
136
- stroke-linecap: round;
137
- stroke-linejoin: round;
132
+ .block-editor-block-bindings-toolbar-indicator svg {
133
+ fill: var(--wp-bound-block-color);
134
+ }
135
+
136
+ .edit-post-header__toolbar .selected-block-tools-wrapper .block-editor-block-toolbar .block-editor-block-bindings-toolbar-indicator {
137
+ height: 32px;
138
138
  }
139
139
 
140
140
  iframe[name=editor-canvas] {
@@ -968,6 +968,20 @@ iframe[name=editor-canvas].has-editor-padding {
968
968
  z-index: 1;
969
969
  }
970
970
 
971
+ .interface-interface-skeleton__sidebar .block-editor-block-patterns-list__list-item .block-editor-block-preview__container {
972
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0.1);
973
+ }
974
+ .interface-interface-skeleton__sidebar .block-editor-block-patterns-list__list-item:hover .block-editor-block-preview__container {
975
+ box-shadow: 0 0 0 2px #1e1e1e;
976
+ }
977
+
978
+ .editor-inserter-sidebar .block-editor-block-patterns-list__list-item .block-editor-block-preview__container {
979
+ box-shadow: 0 15px 25px rgba(0, 0, 0, 0.07);
980
+ }
981
+ .editor-inserter-sidebar .block-editor-block-patterns-list__list-item:hover .block-editor-block-preview__container {
982
+ box-shadow: 0 0 0 2px #1e1e1e, 0 15px 25px rgba(0, 0, 0, 0.07);
983
+ }
984
+
971
985
  .block-editor-block-rename-modal {
972
986
  z-index: 1000001;
973
987
  }
@@ -1612,6 +1626,70 @@ iframe[name=editor-canvas].has-editor-padding {
1612
1626
  direction: ltr;
1613
1627
  }
1614
1628
 
1629
+ .block-editor-global-styles-background-panel__inspector-media-replace-container {
1630
+ position: relative;
1631
+ }
1632
+ .block-editor-global-styles-background-panel__inspector-media-replace-container .components-drop-zone__content-icon {
1633
+ display: none;
1634
+ }
1635
+ .block-editor-global-styles-background-panel__inspector-media-replace-container button.components-button {
1636
+ color: #1e1e1e;
1637
+ box-shadow: inset 0 0 0 1px #ddd;
1638
+ width: 100%;
1639
+ display: block;
1640
+ height: 40px;
1641
+ }
1642
+ .block-editor-global-styles-background-panel__inspector-media-replace-container button.components-button:hover {
1643
+ color: var(--wp-admin-theme-color);
1644
+ }
1645
+ .block-editor-global-styles-background-panel__inspector-media-replace-container button.components-button:focus {
1646
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
1647
+ }
1648
+ .block-editor-global-styles-background-panel__inspector-media-replace-container .block-editor-global-styles-background-panel__inspector-media-replace-title {
1649
+ word-break: break-all;
1650
+ white-space: normal;
1651
+ text-align: start;
1652
+ text-align-last: center;
1653
+ }
1654
+ .block-editor-global-styles-background-panel__inspector-media-replace-container .components-dropdown {
1655
+ display: block;
1656
+ }
1657
+
1658
+ .block-editor-global-styles-background-panel__inspector-image-indicator-wrapper {
1659
+ background: #fff linear-gradient(-45deg, transparent 48%, #ddd 48%, #ddd 52%, transparent 52%);
1660
+ border-radius: 50% !important;
1661
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2);
1662
+ display: block;
1663
+ width: 20px;
1664
+ height: 20px;
1665
+ flex: none;
1666
+ }
1667
+ .block-editor-global-styles-background-panel__inspector-image-indicator-wrapper.has-image {
1668
+ background: #fff;
1669
+ }
1670
+
1671
+ .block-editor-global-styles-background-panel__inspector-image-indicator {
1672
+ background-size: cover;
1673
+ border-radius: 50%;
1674
+ width: 20px;
1675
+ height: 20px;
1676
+ display: block;
1677
+ position: relative;
1678
+ }
1679
+
1680
+ .block-editor-global-styles-background-panel__inspector-image-indicator::after {
1681
+ content: "";
1682
+ position: absolute;
1683
+ top: -1px;
1684
+ left: -1px;
1685
+ bottom: -1px;
1686
+ right: -1px;
1687
+ border-radius: 50%;
1688
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2);
1689
+ border: 1px solid transparent;
1690
+ box-sizing: inherit;
1691
+ }
1692
+
1615
1693
  .block-editor-grid-visualizer {
1616
1694
  z-index: 30 !important;
1617
1695
  }
@@ -1935,10 +2013,6 @@ iframe[name=editor-canvas].has-editor-padding {
1935
2013
  right: 19px;
1936
2014
  top: 3px;
1937
2015
  }
1938
- .block-editor-link-control__search-enter svg {
1939
- position: relative;
1940
- top: -2px;
1941
- }
1942
2016
 
1943
2017
  .block-editor-link-control__search-actions {
1944
2018
  padding: 8px 16px 16px;
@@ -2362,7 +2436,7 @@ iframe[name=editor-canvas].has-editor-padding {
2362
2436
  }
2363
2437
  .block-editor-list-view-leaf.is-after-dragged-blocks.is-displacement-down {
2364
2438
  transition: transform 0.2s;
2365
- transform: translateY(calc(36px + var(--wp-admin--list-view-dragged-items-height, 36px) * -1));
2439
+ transform: translateY(calc(36px + var(--wp-admin--list-view-dragged-items-height, 36px) * -1));
2366
2440
  }
2367
2441
  @media (prefers-reduced-motion: reduce) {
2368
2442
  .block-editor-list-view-leaf.is-after-dragged-blocks.is-displacement-down {
@@ -2381,7 +2455,7 @@ iframe[name=editor-canvas].has-editor-padding {
2381
2455
  align-items: center;
2382
2456
  width: 100%;
2383
2457
  height: auto;
2384
- padding: 6px 4px 6px 0;
2458
+ padding: 6px 6px 6px 0;
2385
2459
  text-align: left;
2386
2460
  border-radius: 2px;
2387
2461
  position: relative;
@@ -2472,7 +2546,7 @@ iframe[name=editor-canvas].has-editor-padding {
2472
2546
  padding: 0;
2473
2547
  }
2474
2548
  .block-editor-list-view-leaf .block-editor-list-view-block__menu-cell {
2475
- padding-right: 4px;
2549
+ padding-right: 6px;
2476
2550
  }
2477
2551
  .block-editor-list-view-leaf .block-editor-list-view-block__menu-cell .components-button.has-icon {
2478
2552
  height: 24px;
@@ -2709,14 +2783,6 @@ iframe[name=editor-canvas].has-editor-padding {
2709
2783
  display: none;
2710
2784
  }
2711
2785
 
2712
- .block-editor-list-view-block-select-button__bindings svg g {
2713
- stroke: var(--wp-bound-block-color);
2714
- fill: transparent;
2715
- stroke-width: 1.5;
2716
- stroke-linecap: round;
2717
- stroke-linejoin: round;
2718
- }
2719
-
2720
2786
  .modal-open .block-editor-media-replace-flow__options {
2721
2787
  display: none;
2722
2788
  }
@@ -3221,11 +3287,6 @@ iframe[name=editor-canvas].has-editor-padding {
3221
3287
  font-size: 12px;
3222
3288
  }
3223
3289
 
3224
- .html-anchor-control .components-external-link {
3225
- display: inline-block;
3226
- margin-top: 8px;
3227
- }
3228
-
3229
3290
  .block-editor-hooks__block-hooks {
3230
3291
  /**
3231
3292
  * Since we're displaying the block icon alongside the block name,
@@ -3247,70 +3308,6 @@ iframe[name=editor-canvas].has-editor-padding {
3247
3308
  margin-bottom: 16px;
3248
3309
  }
3249
3310
 
3250
- .block-editor-hooks__background__inspector-media-replace-container {
3251
- position: relative;
3252
- }
3253
- .block-editor-hooks__background__inspector-media-replace-container .components-drop-zone__content-icon {
3254
- display: none;
3255
- }
3256
- .block-editor-hooks__background__inspector-media-replace-container button.components-button {
3257
- color: #1e1e1e;
3258
- box-shadow: inset 0 0 0 1px #ddd;
3259
- width: 100%;
3260
- display: block;
3261
- height: 40px;
3262
- }
3263
- .block-editor-hooks__background__inspector-media-replace-container button.components-button:hover {
3264
- color: var(--wp-admin-theme-color);
3265
- }
3266
- .block-editor-hooks__background__inspector-media-replace-container button.components-button:focus {
3267
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
3268
- }
3269
- .block-editor-hooks__background__inspector-media-replace-container .block-editor-hooks__background__inspector-media-replace-title {
3270
- word-break: break-all;
3271
- white-space: normal;
3272
- text-align: start;
3273
- text-align-last: center;
3274
- }
3275
- .block-editor-hooks__background__inspector-media-replace-container .components-dropdown {
3276
- display: block;
3277
- }
3278
-
3279
- .block-editor-hooks__background__inspector-image-indicator-wrapper {
3280
- background: #fff linear-gradient(-45deg, transparent 48%, #ddd 48%, #ddd 52%, transparent 52%);
3281
- border-radius: 50% !important;
3282
- box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2);
3283
- display: block;
3284
- width: 20px;
3285
- height: 20px;
3286
- flex: none;
3287
- }
3288
- .block-editor-hooks__background__inspector-image-indicator-wrapper.has-image {
3289
- background: #fff;
3290
- }
3291
-
3292
- .block-editor-hooks__background__inspector-image-indicator {
3293
- background-size: cover;
3294
- border-radius: 50%;
3295
- width: 20px;
3296
- height: 20px;
3297
- display: block;
3298
- position: relative;
3299
- }
3300
-
3301
- .block-editor-hooks__background__inspector-image-indicator::after {
3302
- content: "";
3303
- position: absolute;
3304
- top: -1px;
3305
- left: -1px;
3306
- bottom: -1px;
3307
- right: -1px;
3308
- border-radius: 50%;
3309
- box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2);
3310
- border: 1px solid transparent;
3311
- box-sizing: inherit;
3312
- }
3313
-
3314
3311
  .border-block-support-panel .single-column {
3315
3312
  grid-column: span 1;
3316
3313
  }
@@ -3669,7 +3666,6 @@ iframe[name=editor-canvas].has-editor-padding {
3669
3666
  flex-direction: column;
3670
3667
  height: 100%;
3671
3668
  gap: 16px;
3672
- overflow-y: hidden;
3673
3669
  }
3674
3670
  .block-editor-inserter__main-area.show-as-tabs {
3675
3671
  gap: 0;
@@ -3781,6 +3777,7 @@ iframe[name=editor-canvas].has-editor-padding {
3781
3777
  .block-editor-inserter__no-tab-container {
3782
3778
  overflow-y: auto;
3783
3779
  flex-grow: 1;
3780
+ position: relative;
3784
3781
  }
3785
3782
 
3786
3783
  .block-editor-inserter__panel-header {
@@ -3948,13 +3945,6 @@ iframe[name=editor-canvas].has-editor-padding {
3948
3945
  padding: 16px 24px;
3949
3946
  }
3950
3947
 
3951
- .block-editor-block-patterns-list__list-item .block-editor-block-preview__container {
3952
- box-shadow: 0 15px 25px rgba(0, 0, 0, 0.07);
3953
- }
3954
- .block-editor-block-patterns-list__list-item:hover .block-editor-block-preview__container {
3955
- box-shadow: 0 0 0 2px #1e1e1e, 0 15px 25px rgba(0, 0, 0, 0.07);
3956
- }
3957
-
3958
3948
  .block-editor-inserter__patterns-category-panel {
3959
3949
  padding: 0 16px;
3960
3950
  display: flex;
@@ -4337,6 +4327,9 @@ iframe[name=editor-canvas].has-editor-padding {
4337
4327
  .is-zoom-out .block-editor-inserter__patterns-category-dialog {
4338
4328
  position: static;
4339
4329
  }
4330
+ .is-zoom-out .block-editor-inserter__media-dialog {
4331
+ position: static;
4332
+ }
4340
4333
 
4341
4334
  .spacing-sizes-control .spacing-sizes-control__custom-value-input,
4342
4335
  .spacing-sizes-control .spacing-sizes-control__label {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/block-editor",
3
- "version": "12.21.0",
3
+ "version": "12.23.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.53.0",
39
- "@wordpress/api-fetch": "^6.50.0",
40
- "@wordpress/blob": "^3.53.0",
41
- "@wordpress/blocks": "^12.30.0",
42
- "@wordpress/commands": "^0.24.0",
43
- "@wordpress/components": "^27.1.0",
44
- "@wordpress/compose": "^6.30.0",
45
- "@wordpress/data": "^9.23.0",
46
- "@wordpress/date": "^4.53.0",
47
- "@wordpress/deprecated": "^3.53.0",
48
- "@wordpress/dom": "^3.53.0",
49
- "@wordpress/element": "^5.30.0",
50
- "@wordpress/escape-html": "^2.53.0",
51
- "@wordpress/hooks": "^3.53.0",
52
- "@wordpress/html-entities": "^3.53.0",
53
- "@wordpress/i18n": "^4.53.0",
54
- "@wordpress/icons": "^9.44.0",
55
- "@wordpress/is-shallow-equal": "^4.53.0",
56
- "@wordpress/keyboard-shortcuts": "^4.30.0",
57
- "@wordpress/keycodes": "^3.53.0",
58
- "@wordpress/notices": "^4.21.0",
59
- "@wordpress/preferences": "^3.30.0",
60
- "@wordpress/private-apis": "^0.35.0",
61
- "@wordpress/rich-text": "^6.30.0",
62
- "@wordpress/style-engine": "^1.36.0",
63
- "@wordpress/token-list": "^2.53.0",
64
- "@wordpress/url": "^3.54.0",
65
- "@wordpress/warning": "^2.53.0",
66
- "@wordpress/wordcount": "^3.53.0",
38
+ "@wordpress/a11y": "^3.55.0",
39
+ "@wordpress/api-fetch": "^6.52.0",
40
+ "@wordpress/blob": "^3.55.0",
41
+ "@wordpress/blocks": "^12.32.0",
42
+ "@wordpress/commands": "^0.26.0",
43
+ "@wordpress/components": "^27.3.0",
44
+ "@wordpress/compose": "^6.32.0",
45
+ "@wordpress/data": "^9.25.0",
46
+ "@wordpress/date": "^4.55.0",
47
+ "@wordpress/deprecated": "^3.55.0",
48
+ "@wordpress/dom": "^3.55.0",
49
+ "@wordpress/element": "^5.32.0",
50
+ "@wordpress/escape-html": "^2.55.0",
51
+ "@wordpress/hooks": "^3.55.0",
52
+ "@wordpress/html-entities": "^3.55.0",
53
+ "@wordpress/i18n": "^4.55.0",
54
+ "@wordpress/icons": "^9.46.0",
55
+ "@wordpress/is-shallow-equal": "^4.55.0",
56
+ "@wordpress/keyboard-shortcuts": "^4.32.0",
57
+ "@wordpress/keycodes": "^3.55.0",
58
+ "@wordpress/notices": "^4.23.0",
59
+ "@wordpress/preferences": "^3.32.0",
60
+ "@wordpress/private-apis": "^0.37.0",
61
+ "@wordpress/rich-text": "^6.32.0",
62
+ "@wordpress/style-engine": "^1.38.0",
63
+ "@wordpress/token-list": "^2.55.0",
64
+ "@wordpress/url": "^3.56.0",
65
+ "@wordpress/warning": "^2.55.0",
66
+ "@wordpress/wordcount": "^3.55.0",
67
67
  "change-case": "^4.1.2",
68
68
  "classnames": "^2.3.1",
69
69
  "colord": "^2.7.0",
@@ -86,5 +86,5 @@
86
86
  "publishConfig": {
87
87
  "access": "public"
88
88
  },
89
- "gitHead": "ac3c3e465a083081a86a4da6ee6fb817b41e5130"
89
+ "gitHead": "ac2b13783c28f959770cf029a797a712f59e1958"
90
90
  }
@@ -98,16 +98,10 @@ export default function BlockActions( {
98
98
  return removeBlocks( clientIds, updateSelection );
99
99
  },
100
100
  onInsertBefore() {
101
- const clientId = Array.isArray( clientIds )
102
- ? clientIds[ 0 ]
103
- : clientId;
104
- insertBeforeBlock( clientId );
101
+ insertBeforeBlock( clientIds[ 0 ] );
105
102
  },
106
103
  onInsertAfter() {
107
- const clientId = Array.isArray( clientIds )
108
- ? clientIds[ clientIds.length - 1 ]
109
- : clientId;
110
- insertAfterBlock( clientId );
104
+ insertAfterBlock( clientIds[ clientIds.length - 1 ] );
111
105
  },
112
106
  onMoveTo() {
113
107
  setNavigationMode( true );
@@ -1,14 +1,16 @@
1
1
  .block-editor-block-bindings-toolbar-indicator {
2
2
  display: inline-flex;
3
3
  align-items: center;
4
- height: 48px;
4
+ justify-content: center;
5
5
  padding: 6px;
6
-
7
- svg g {
8
- stroke: var(--wp-bound-block-color);
9
- fill: transparent;
10
- stroke-width: 1.5;
11
- stroke-linecap: round;
12
- stroke-linejoin: round;
6
+ svg {
7
+ fill: var(--wp-bound-block-color);
13
8
  }
14
9
  }
10
+
11
+ .edit-post-header__toolbar
12
+ .selected-block-tools-wrapper
13
+ .block-editor-block-toolbar
14
+ .block-editor-block-bindings-toolbar-indicator {
15
+ height: 32px;
16
+ }
@@ -28,23 +28,23 @@ const MyHeadingLevelToolbar = () => (
28
28
 
29
29
  #### options
30
30
 
31
- The list of available HTML tags, passed from the block.
31
+ The list of available heading levels, passed from the block.
32
32
 
33
33
  - Type: `Object`
34
34
  - Required: no
35
35
 
36
36
  #### value
37
37
 
38
- The chosen HTML tag.
38
+ The chosen heading level.
39
39
 
40
- - Type: `string`
40
+ - Type: `number`
41
41
  - Required: no
42
42
 
43
43
  #### onChange
44
44
 
45
- Callback to run when toolbar value is changed.
45
+ Function called with the selected value changes.
46
46
 
47
- - Type: `string`
47
+ - Type: `() => number`
48
48
  - Required: yes
49
49
 
50
50
  ## Related components
@@ -22,10 +22,10 @@ const POPOVER_PROPS = {
22
22
  *
23
23
  * @typedef WPHeadingLevelDropdownProps
24
24
  *
25
- * @property {number} value The chosen heading level.
26
- * @property {number[]} options An array of supported heading levels.
27
- * @property {(newValue:number)=>any} onChange Callback to run when
28
- * toolbar value is changed.
25
+ * @property {number} value The chosen heading level.
26
+ * @property {number[]} options An array of supported heading levels.
27
+ * @property {()=>number} onChange Function called with
28
+ * the selected value changes.
29
29
  */
30
30
 
31
31
  /**
@@ -53,7 +53,7 @@ export default function HeadingLevelDropdown( {
53
53
  targetLevel === 0
54
54
  ? __( 'Paragraph' )
55
55
  : sprintf(
56
- // translators: %s: heading level e.g: "1", "2", "3"
56
+ // translators: %d: heading level e.g: "1", "2", "3"
57
57
  __( 'Heading %d' ),
58
58
  targetLevel
59
59
  ),
@@ -18,9 +18,10 @@ const HEADING_LEVELS = [ 1, 2, 3, 4, 5, 6 ];
18
18
  *
19
19
  * @typedef WPHeadingLevelDropdownProps
20
20
  *
21
- * @property {number} selectedLevel The chosen heading level.
22
- * @property {(newValue:number)=>any} onChange Callback to run when
23
- * toolbar value is changed.
21
+ * @property {number} value The chosen heading level.
22
+ * @property {number[]} options An array of supported heading levels.
23
+ * @property {()=>number} onChange Function called with
24
+ * the selected value changes.
24
25
  */
25
26
 
26
27
  /**
@@ -48,7 +49,7 @@ export default function HeadingLevelDropdown( {
48
49
  isPressed={ isActive }
49
50
  />
50
51
  ),
51
- // translators: %s: heading level e.g: "1", "2", "3"
52
+ // translators: %d: heading level e.g: "1", "2", "3"
52
53
  title: sprintf( __( 'Heading %d' ), targetLevel ),
53
54
  isActive,
54
55
  onClick: () => onChangeCallback( targetLevel ),
@@ -0,0 +1,43 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { Component } from '@wordpress/element';
5
+ import { logException } from '@wordpress/react-native-bridge';
6
+
7
+ class BlockCrashBoundary extends Component {
8
+ constructor() {
9
+ super( ...arguments );
10
+
11
+ this.state = {
12
+ error: null,
13
+ };
14
+ }
15
+
16
+ static getDerivedStateFromError( error ) {
17
+ return { error };
18
+ }
19
+
20
+ componentDidCatch( error ) {
21
+ const { blockName } = this.props;
22
+
23
+ logException( error, {
24
+ context: {
25
+ component_stack: error.componentStack,
26
+ block_name: blockName,
27
+ },
28
+ isHandled: true,
29
+ handledBy: 'Block-level Error Boundary',
30
+ } );
31
+ }
32
+
33
+ render() {
34
+ const { error } = this.state;
35
+ if ( ! error ) {
36
+ return this.props.children;
37
+ }
38
+
39
+ return this.props.fallback;
40
+ }
41
+ }
42
+
43
+ export default BlockCrashBoundary;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { __ } from '@wordpress/i18n';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import Warning from '../warning';
10
+
11
+ const warning = (
12
+ <Warning
13
+ message={ __(
14
+ 'This block has encountered an error and cannot be previewed.'
15
+ ) }
16
+ />
17
+ );
18
+
19
+ export default () => warning;
@@ -112,7 +112,10 @@ function BlockListBlock( {
112
112
  ...context
113
113
  } = useContext( PrivateBlockContext );
114
114
  const { removeBlock } = useDispatch( blockEditorStore );
115
- const onRemove = useCallback( () => removeBlock( clientId ), [ clientId ] );
115
+ const onRemove = useCallback(
116
+ () => removeBlock( clientId ),
117
+ [ clientId, removeBlock ]
118
+ );
116
119
 
117
120
  const parentLayout = useLayout() || {};
118
121
 
@@ -222,6 +225,11 @@ function BlockListBlock( {
222
225
  // We set a new context with the adjusted and filtered wrapperProps (through
223
226
  // `editor.BlockListBlock`), which the `BlockListBlockProvider` did not have
224
227
  // access to.
228
+ // Note that the context value doesn't have to be memoized in this case
229
+ // because when it changes, this component will be re-rendered anyway, and
230
+ // none of the consumers (BlockListBlock and useBlockProps) are memoized or
231
+ // "pure". This is different from the public BlockEditContext, where
232
+ // consumers might be memoized or "pure".
225
233
  return (
226
234
  <PrivateBlockContext.Provider
227
235
  value={ {
@@ -451,8 +459,16 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
451
459
  }
452
460
 
453
461
  moveFirstItemUp( rootClientId );
454
- } else {
455
- removeBlock( clientId );
462
+ } else if (
463
+ getBlockName( clientId ) !== getDefaultBlockName()
464
+ ) {
465
+ const replacement = switchToBlockType(
466
+ getBlock( clientId ),
467
+ getDefaultBlockName()
468
+ );
469
+ if ( replacement && replacement.length ) {
470
+ replaceBlocks( clientId, replacement );
471
+ }
456
472
  }
457
473
  }
458
474
  },
@@ -49,6 +49,8 @@ import { useLayout } from './layout';
49
49
  import useScrollUponInsertion from './use-scroll-upon-insertion';
50
50
  import { useSettings } from '../use-settings';
51
51
  import { unlock } from '../../lock-unlock';
52
+ import BlockCrashBoundary from './block-crash-boundary';
53
+ import BlockCrashWarning from './block-crash-warning';
52
54
 
53
55
  const EMPTY_ARRAY = [];
54
56
 
@@ -139,14 +141,19 @@ function BlockWrapper( {
139
141
  isSelected={ isSelected }
140
142
  name={ name }
141
143
  />
142
- <BlockDraggable
143
- clientId={ clientId }
144
- draggingClientId={ draggingClientId }
145
- enabled={ draggingEnabled }
146
- testID="draggable-trigger-content"
144
+ <BlockCrashBoundary
145
+ blockName={ name }
146
+ fallback={ <BlockCrashWarning /> }
147
147
  >
148
- { children }
149
- </BlockDraggable>
148
+ <BlockDraggable
149
+ clientId={ clientId }
150
+ draggingClientId={ draggingClientId }
151
+ enabled={ draggingEnabled }
152
+ testID="draggable-trigger-content"
153
+ >
154
+ { children }
155
+ </BlockDraggable>
156
+ </BlockCrashBoundary>
150
157
  </Pressable>
151
158
  );
152
159
  }
@@ -360,6 +360,22 @@ _::-webkit-full-page-media, _:future, :root .has-multi-selection .block-editor-b
360
360
  z-index: z-index("{core/image aligned left or right} .wp-block");
361
361
  }
362
362
 
363
+ body.is-zoomed-out {
364
+ display: flex;
365
+ flex-direction: column;
366
+
367
+ > .is-root-container {
368
+ flex: 1;
369
+ display: flex;
370
+ flex-direction: column;
371
+ height: 100%;
372
+
373
+ > main {
374
+ flex: 1;
375
+ }
376
+ }
377
+ }
378
+
363
379
  .wp-site-blocks > [data-align="left"] {
364
380
  float: left;
365
381
  margin-right: 2em;
@@ -65,6 +65,7 @@ const BlockMoverButton = forwardRef(
65
65
  ? clientIds
66
66
  : [ clientIds ];
67
67
  const blocksCount = normalizedClientIds.length;
68
+ const { disabled } = props;
68
69
 
69
70
  const {
70
71
  blockType,
@@ -98,7 +99,9 @@ const BlockMoverButton = forwardRef(
98
99
 
99
100
  return {
100
101
  blockType: block ? getBlockType( block.name ) : null,
101
- isDisabled: direction === 'up' ? isFirstBlock : isLastBlock,
102
+ isDisabled:
103
+ disabled ||
104
+ ( direction === 'up' ? isFirstBlock : isLastBlock ),
102
105
  rootClientId: blockRootClientId,
103
106
  firstIndex: firstBlockIndex,
104
107
  isFirst: isFirstBlock,