@wordpress/block-editor 11.6.0 → 11.8.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 (350) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +46 -55
  3. package/build/components/block-list/block-html.js +1 -3
  4. package/build/components/block-list/block-html.js.map +1 -1
  5. package/build/components/block-list/block.native.js +4 -3
  6. package/build/components/block-list/block.native.js.map +1 -1
  7. package/build/components/block-list/index.native.js +11 -21
  8. package/build/components/block-list/index.native.js.map +1 -1
  9. package/build/components/block-list/use-in-between-inserter.js +3 -1
  10. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  11. package/build/components/block-popover/inbetween.js +2 -9
  12. package/build/components/block-popover/inbetween.js.map +1 -1
  13. package/build/components/block-preview/auto.js +6 -23
  14. package/build/components/block-preview/auto.js.map +1 -1
  15. package/build/components/block-settings-menu/block-settings-dropdown.js +1 -10
  16. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  17. package/build/components/caption/index.native.js +0 -1
  18. package/build/components/caption/index.native.js.map +1 -1
  19. package/build/components/date-format-picker/index.js +1 -1
  20. package/build/components/date-format-picker/index.js.map +1 -1
  21. package/build/components/editor-styles/index.js +20 -2
  22. package/build/components/editor-styles/index.js.map +1 -1
  23. package/build/components/global-styles/border-panel.js +15 -29
  24. package/build/components/global-styles/border-panel.js.map +1 -1
  25. package/build/components/global-styles/color-panel.js +583 -0
  26. package/build/components/global-styles/color-panel.js.map +1 -0
  27. package/build/components/global-styles/dimensions-panel.js +23 -44
  28. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  29. package/build/components/global-styles/effects-panel.js +244 -0
  30. package/build/components/global-styles/effects-panel.js.map +1 -0
  31. package/build/components/global-styles/filters-panel.js +151 -0
  32. package/build/components/global-styles/filters-panel.js.map +1 -0
  33. package/build/components/global-styles/get-block-css-selector.js +118 -0
  34. package/build/components/global-styles/get-block-css-selector.js.map +1 -0
  35. package/build/components/global-styles/hooks.js +60 -1
  36. package/build/components/global-styles/hooks.js.map +1 -1
  37. package/build/components/global-styles/index.js +46 -2
  38. package/build/components/global-styles/index.js.map +1 -1
  39. package/build/components/global-styles/typography-panel.js +9 -35
  40. package/build/components/global-styles/typography-panel.js.map +1 -1
  41. package/build/components/global-styles/use-global-styles-output.js +173 -91
  42. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  43. package/build/components/global-styles/utils.js +2 -1
  44. package/build/components/global-styles/utils.js.map +1 -1
  45. package/build/components/iframe/index.js +1 -1
  46. package/build/components/iframe/index.js.map +1 -1
  47. package/build/components/image-size-control/index.js +8 -5
  48. package/build/components/image-size-control/index.js.map +1 -1
  49. package/build/components/image-size-control/use-dimension-handler.js +5 -3
  50. package/build/components/image-size-control/use-dimension-handler.js.map +1 -1
  51. package/build/components/index.js +16 -0
  52. package/build/components/index.js.map +1 -1
  53. package/build/components/inserter/block-patterns-tab.js +4 -2
  54. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  55. package/build/components/inspector-controls-tabs/position-controls-panel.js +43 -7
  56. package/build/components/inspector-controls-tabs/position-controls-panel.js.map +1 -1
  57. package/build/components/inspector-controls-tabs/utils.js +5 -3
  58. package/build/components/inspector-controls-tabs/utils.js.map +1 -1
  59. package/build/components/line-height-control/index.js +15 -1
  60. package/build/components/line-height-control/index.js.map +1 -1
  61. package/build/components/list-view/appender.js +105 -0
  62. package/build/components/list-view/appender.js.map +1 -0
  63. package/build/components/list-view/block.js +6 -5
  64. package/build/components/list-view/block.js.map +1 -1
  65. package/build/components/list-view/branch.js +25 -5
  66. package/build/components/list-view/branch.js.map +1 -1
  67. package/build/components/list-view/index.js +56 -14
  68. package/build/components/list-view/index.js.map +1 -1
  69. package/build/components/list-view/use-list-view-client-ids.js +7 -3
  70. package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
  71. package/build/components/list-view/use-list-view-drop-zone.js +8 -2
  72. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  73. package/build/components/media-replace-flow/index.js +13 -4
  74. package/build/components/media-replace-flow/index.js.map +1 -1
  75. package/build/components/off-canvas-editor/block-contents.js +6 -1
  76. package/build/components/off-canvas-editor/block-contents.js.map +1 -1
  77. package/build/components/off-canvas-editor/index.js +17 -14
  78. package/build/components/off-canvas-editor/index.js.map +1 -1
  79. package/build/components/resizable-box-popover/index.js +38 -0
  80. package/build/components/resizable-box-popover/index.js.map +1 -0
  81. package/build/components/rich-text/format-edit.js +2 -30
  82. package/build/components/rich-text/format-edit.js.map +1 -1
  83. package/build/components/rich-text/index.js +0 -1
  84. package/build/components/rich-text/index.js.map +1 -1
  85. package/build/components/rich-text/index.native.js +7 -11
  86. package/build/components/rich-text/index.native.js.map +1 -1
  87. package/build/components/spacing-sizes-control/spacing-input-control.js +8 -0
  88. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  89. package/build/components/writing-flow/use-input.js +4 -8
  90. package/build/components/writing-flow/use-input.js.map +1 -1
  91. package/build/hooks/anchor.js +1 -1
  92. package/build/hooks/anchor.js.map +1 -1
  93. package/build/hooks/border.js +1 -2
  94. package/build/hooks/border.js.map +1 -1
  95. package/build/hooks/color.js +92 -229
  96. package/build/hooks/color.js.map +1 -1
  97. package/build/hooks/content-lock-ui.js +4 -2
  98. package/build/hooks/content-lock-ui.js.map +1 -1
  99. package/build/hooks/{color-panel.js → contrast-checker.js} +11 -49
  100. package/build/hooks/contrast-checker.js.map +1 -0
  101. package/build/hooks/dimensions.js +0 -1
  102. package/build/hooks/dimensions.js.map +1 -1
  103. package/build/hooks/duotone.js +92 -64
  104. package/build/hooks/duotone.js.map +1 -1
  105. package/build/hooks/margin.js +27 -17
  106. package/build/hooks/margin.js.map +1 -1
  107. package/build/hooks/padding.js +19 -9
  108. package/build/hooks/padding.js.map +1 -1
  109. package/build/hooks/position.js +2 -2
  110. package/build/hooks/position.js.map +1 -1
  111. package/build/hooks/style.js +23 -26
  112. package/build/hooks/style.js.map +1 -1
  113. package/build/hooks/typography.js +0 -1
  114. package/build/hooks/typography.js.map +1 -1
  115. package/build/hooks/utils.js +28 -76
  116. package/build/hooks/utils.js.map +1 -1
  117. package/build/layouts/grid.js +165 -0
  118. package/build/layouts/grid.js.map +1 -0
  119. package/build/layouts/index.js +3 -1
  120. package/build/layouts/index.js.map +1 -1
  121. package/build/layouts/utils.js +3 -2
  122. package/build/layouts/utils.js.map +1 -1
  123. package/build/private-apis.js +7 -1
  124. package/build/private-apis.js.map +1 -1
  125. package/build/store/actions.js +1 -1
  126. package/build/store/actions.js.map +1 -1
  127. package/build/utils/object.js +76 -0
  128. package/build/utils/object.js.map +1 -0
  129. package/build-module/components/block-list/block-html.js +1 -3
  130. package/build-module/components/block-list/block-html.js.map +1 -1
  131. package/build-module/components/block-list/block.native.js +4 -3
  132. package/build-module/components/block-list/block.native.js.map +1 -1
  133. package/build-module/components/block-list/index.native.js +11 -19
  134. package/build-module/components/block-list/index.native.js.map +1 -1
  135. package/build-module/components/block-list/use-in-between-inserter.js +2 -1
  136. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  137. package/build-module/components/block-popover/inbetween.js +2 -9
  138. package/build-module/components/block-popover/inbetween.js.map +1 -1
  139. package/build-module/components/block-preview/auto.js +6 -22
  140. package/build-module/components/block-preview/auto.js.map +1 -1
  141. package/build-module/components/block-settings-menu/block-settings-dropdown.js +1 -9
  142. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  143. package/build-module/components/caption/index.native.js +0 -1
  144. package/build-module/components/caption/index.native.js.map +1 -1
  145. package/build-module/components/date-format-picker/index.js +1 -1
  146. package/build-module/components/date-format-picker/index.js.map +1 -1
  147. package/build-module/components/editor-styles/index.js +19 -2
  148. package/build-module/components/editor-styles/index.js.map +1 -1
  149. package/build-module/components/global-styles/border-panel.js +15 -29
  150. package/build-module/components/global-styles/border-panel.js.map +1 -1
  151. package/build-module/components/global-styles/color-panel.js +554 -0
  152. package/build-module/components/global-styles/color-panel.js.map +1 -0
  153. package/build-module/components/global-styles/dimensions-panel.js +22 -44
  154. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  155. package/build-module/components/global-styles/effects-panel.js +228 -0
  156. package/build-module/components/global-styles/effects-panel.js.map +1 -0
  157. package/build-module/components/global-styles/filters-panel.js +139 -0
  158. package/build-module/components/global-styles/filters-panel.js.map +1 -0
  159. package/build-module/components/global-styles/get-block-css-selector.js +109 -0
  160. package/build-module/components/global-styles/get-block-css-selector.js.map +1 -0
  161. package/build-module/components/global-styles/hooks.js +58 -1
  162. package/build-module/components/global-styles/hooks.js.map +1 -1
  163. package/build-module/components/global-styles/index.js +5 -1
  164. package/build-module/components/global-styles/index.js.map +1 -1
  165. package/build-module/components/global-styles/typography-panel.js +8 -35
  166. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  167. package/build-module/components/global-styles/use-global-styles-output.js +175 -93
  168. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  169. package/build-module/components/global-styles/utils.js +2 -1
  170. package/build-module/components/global-styles/utils.js.map +1 -1
  171. package/build-module/components/iframe/index.js +1 -1
  172. package/build-module/components/iframe/index.js.map +1 -1
  173. package/build-module/components/image-size-control/index.js +8 -5
  174. package/build-module/components/image-size-control/index.js.map +1 -1
  175. package/build-module/components/image-size-control/use-dimension-handler.js +5 -3
  176. package/build-module/components/image-size-control/use-dimension-handler.js.map +1 -1
  177. package/build-module/components/index.js +1 -0
  178. package/build-module/components/index.js.map +1 -1
  179. package/build-module/components/inserter/block-patterns-tab.js +5 -2
  180. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  181. package/build-module/components/inspector-controls-tabs/position-controls-panel.js +42 -7
  182. package/build-module/components/inspector-controls-tabs/position-controls-panel.js.map +1 -1
  183. package/build-module/components/inspector-controls-tabs/utils.js +4 -3
  184. package/build-module/components/inspector-controls-tabs/utils.js.map +1 -1
  185. package/build-module/components/line-height-control/index.js +15 -1
  186. package/build-module/components/line-height-control/index.js.map +1 -1
  187. package/build-module/components/list-view/appender.js +88 -0
  188. package/build-module/components/list-view/appender.js.map +1 -0
  189. package/build-module/components/list-view/block.js +6 -4
  190. package/build-module/components/list-view/block.js.map +1 -1
  191. package/build-module/components/list-view/branch.js +22 -5
  192. package/build-module/components/list-view/branch.js.map +1 -1
  193. package/build-module/components/list-view/index.js +50 -13
  194. package/build-module/components/list-view/index.js.map +1 -1
  195. package/build-module/components/list-view/use-list-view-client-ids.js +7 -3
  196. package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
  197. package/build-module/components/list-view/use-list-view-drop-zone.js +8 -4
  198. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  199. package/build-module/components/media-replace-flow/index.js +12 -4
  200. package/build-module/components/media-replace-flow/index.js.map +1 -1
  201. package/build-module/components/off-canvas-editor/block-contents.js +5 -1
  202. package/build-module/components/off-canvas-editor/block-contents.js.map +1 -1
  203. package/build-module/components/off-canvas-editor/index.js +17 -14
  204. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  205. package/build-module/components/resizable-box-popover/index.js +26 -0
  206. package/build-module/components/resizable-box-popover/index.js.map +1 -0
  207. package/build-module/components/rich-text/format-edit.js +3 -31
  208. package/build-module/components/rich-text/format-edit.js.map +1 -1
  209. package/build-module/components/rich-text/index.js +0 -1
  210. package/build-module/components/rich-text/index.js.map +1 -1
  211. package/build-module/components/rich-text/index.native.js +7 -10
  212. package/build-module/components/rich-text/index.native.js.map +1 -1
  213. package/build-module/components/spacing-sizes-control/spacing-input-control.js +7 -0
  214. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  215. package/build-module/components/writing-flow/use-input.js +4 -8
  216. package/build-module/components/writing-flow/use-input.js.map +1 -1
  217. package/build-module/hooks/anchor.js +1 -1
  218. package/build-module/hooks/anchor.js.map +1 -1
  219. package/build-module/hooks/border.js +1 -2
  220. package/build-module/hooks/border.js.map +1 -1
  221. package/build-module/hooks/color.js +90 -232
  222. package/build-module/hooks/color.js.map +1 -1
  223. package/build-module/hooks/content-lock-ui.js +4 -2
  224. package/build-module/hooks/content-lock-ui.js.map +1 -1
  225. package/build-module/hooks/{color-panel.js → contrast-checker.js} +10 -44
  226. package/build-module/hooks/contrast-checker.js.map +1 -0
  227. package/build-module/hooks/dimensions.js +0 -1
  228. package/build-module/hooks/dimensions.js.map +1 -1
  229. package/build-module/hooks/duotone.js +91 -65
  230. package/build-module/hooks/duotone.js.map +1 -1
  231. package/build-module/hooks/margin.js +29 -18
  232. package/build-module/hooks/margin.js.map +1 -1
  233. package/build-module/hooks/padding.js +21 -10
  234. package/build-module/hooks/padding.js.map +1 -1
  235. package/build-module/hooks/position.js +3 -3
  236. package/build-module/hooks/position.js.map +1 -1
  237. package/build-module/hooks/style.js +23 -26
  238. package/build-module/hooks/style.js.map +1 -1
  239. package/build-module/hooks/typography.js +0 -1
  240. package/build-module/hooks/typography.js.map +1 -1
  241. package/build-module/hooks/utils.js +27 -74
  242. package/build-module/hooks/utils.js.map +1 -1
  243. package/build-module/layouts/grid.js +151 -0
  244. package/build-module/layouts/grid.js.map +1 -0
  245. package/build-module/layouts/index.js +2 -1
  246. package/build-module/layouts/index.js.map +1 -1
  247. package/build-module/layouts/utils.js +3 -2
  248. package/build-module/layouts/utils.js.map +1 -1
  249. package/build-module/private-apis.js +5 -1
  250. package/build-module/private-apis.js.map +1 -1
  251. package/build-module/store/actions.js +1 -1
  252. package/build-module/store/actions.js.map +1 -1
  253. package/build-module/utils/object.js +69 -0
  254. package/build-module/utils/object.js.map +1 -0
  255. package/build-style/style-rtl.css +77 -16
  256. package/build-style/style.css +77 -16
  257. package/package.json +31 -31
  258. package/src/components/block-draggable/content.scss +1 -1
  259. package/src/components/block-inspector/style.scss +6 -4
  260. package/src/components/block-list/block-html.js +1 -1
  261. package/src/components/block-list/block.native.js +3 -2
  262. package/src/components/block-list/index.native.js +19 -38
  263. package/src/components/block-list/use-in-between-inserter.js +4 -1
  264. package/src/components/block-popover/inbetween.js +2 -13
  265. package/src/components/block-preview/auto.js +2 -17
  266. package/src/components/block-settings-menu/block-settings-dropdown.js +2 -12
  267. package/src/components/caption/index.native.js +0 -1
  268. package/src/components/colors-gradients/style.scss +8 -8
  269. package/src/components/date-format-picker/index.js +1 -1
  270. package/src/components/editor-styles/index.js +29 -1
  271. package/src/components/global-styles/README.md +129 -16
  272. package/src/components/global-styles/border-panel.js +13 -32
  273. package/src/components/global-styles/color-panel.js +706 -0
  274. package/src/components/global-styles/dimensions-panel.js +43 -55
  275. package/src/components/global-styles/effects-panel.js +228 -0
  276. package/src/components/global-styles/filters-panel.js +157 -0
  277. package/src/components/global-styles/get-block-css-selector.js +118 -0
  278. package/src/components/global-styles/hooks.js +90 -0
  279. package/src/components/global-styles/index.js +4 -1
  280. package/src/components/global-styles/style.scss +42 -0
  281. package/src/components/global-styles/test/use-global-styles-output.js +34 -5
  282. package/src/components/global-styles/typography-panel.js +26 -51
  283. package/src/components/global-styles/use-global-styles-output.js +188 -89
  284. package/src/components/global-styles/utils.js +3 -0
  285. package/src/components/iframe/index.js +1 -1
  286. package/src/components/image-size-control/index.js +4 -3
  287. package/src/components/image-size-control/test/index.js +2 -2
  288. package/src/components/image-size-control/use-dimension-handler.js +4 -3
  289. package/src/components/index.js +4 -1
  290. package/src/components/inner-blocks/README.md +1 -1
  291. package/src/components/inserter/block-patterns-tab.js +3 -1
  292. package/src/components/inspector-controls-tabs/position-controls-panel.js +40 -9
  293. package/src/components/inspector-controls-tabs/utils.js +4 -3
  294. package/src/components/line-height-control/index.js +10 -1
  295. package/src/components/list-view/README.md +2 -0
  296. package/src/components/list-view/appender.js +101 -0
  297. package/src/components/list-view/block.js +6 -4
  298. package/src/components/list-view/branch.js +30 -1
  299. package/src/components/list-view/index.js +60 -11
  300. package/src/components/list-view/style.scss +22 -1
  301. package/src/components/list-view/test/use-list-view-drop-zone.js +188 -0
  302. package/src/components/list-view/use-list-view-client-ids.js +5 -3
  303. package/src/components/list-view/use-list-view-drop-zone.js +9 -3
  304. package/src/components/media-replace-flow/index.js +36 -24
  305. package/src/components/media-replace-flow/style.scss +5 -2
  306. package/src/components/off-canvas-editor/block-contents.js +4 -0
  307. package/src/components/off-canvas-editor/index.js +15 -11
  308. package/src/components/resizable-box-popover/index.js +27 -0
  309. package/src/components/rich-text/format-edit.js +2 -32
  310. package/src/components/rich-text/index.js +0 -1
  311. package/src/components/rich-text/index.native.js +2 -5
  312. package/src/components/spacing-sizes-control/spacing-input-control.js +10 -0
  313. package/src/components/spacing-sizes-control/style.scss +7 -7
  314. package/src/components/writing-flow/use-input.js +4 -5
  315. package/src/hooks/anchor.js +1 -1
  316. package/src/hooks/border.js +1 -2
  317. package/src/hooks/color.js +120 -296
  318. package/src/hooks/content-lock-ui.js +6 -2
  319. package/src/hooks/{color-panel.js → contrast-checker.js} +10 -46
  320. package/src/hooks/dimensions.js +0 -1
  321. package/src/hooks/duotone.js +121 -76
  322. package/src/hooks/margin.js +31 -26
  323. package/src/hooks/padding.js +24 -18
  324. package/src/hooks/position.js +3 -3
  325. package/src/hooks/style.js +29 -28
  326. package/src/hooks/test/utils.js +0 -104
  327. package/src/hooks/typography.js +0 -1
  328. package/src/hooks/utils.js +31 -74
  329. package/src/layouts/grid.js +172 -0
  330. package/src/layouts/index.js +2 -1
  331. package/src/layouts/test/grid.js +21 -0
  332. package/src/layouts/utils.js +2 -2
  333. package/src/private-apis.js +4 -0
  334. package/src/store/actions.js +1 -1
  335. package/src/style.scss +1 -0
  336. package/src/utils/object.js +69 -0
  337. package/src/utils/test/object.js +145 -0
  338. package/tsconfig.tsbuildinfo +1 -1
  339. package/build/components/rich-text/use-native-props.js +0 -11
  340. package/build/components/rich-text/use-native-props.js.map +0 -1
  341. package/build/components/rich-text/use-native-props.native.js +0 -24
  342. package/build/components/rich-text/use-native-props.native.js.map +0 -1
  343. package/build/hooks/color-panel.js.map +0 -1
  344. package/build-module/components/rich-text/use-native-props.js +0 -4
  345. package/build-module/components/rich-text/use-native-props.js.map +0 -1
  346. package/build-module/components/rich-text/use-native-props.native.js +0 -15
  347. package/build-module/components/rich-text/use-native-props.native.js.map +0 -1
  348. package/build-module/hooks/color-panel.js.map +0 -1
  349. package/src/components/rich-text/use-native-props.js +0 -3
  350. package/src/components/rich-text/use-native-props.native.js +0 -17
@@ -1,3 +1,8 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
@@ -58,6 +63,7 @@ const MediaReplaceFlow = ( {
58
63
  const mediaUpload = useSelect( ( select ) => {
59
64
  return select( blockEditorStore ).getSettings().mediaUpload;
60
65
  }, [] );
66
+ const canUpload = !! mediaUpload;
61
67
  const editMediaButtonRef = useRef();
62
68
  const errorNoticeID = `block-editor/media-replace-flow/error-notice/${ ++uniqueId }`;
63
69
 
@@ -152,7 +158,7 @@ const MediaReplaceFlow = ( {
152
158
  renderContent={ ( { onClose } ) => (
153
159
  <>
154
160
  <NavigableMenu className="block-editor-media-replace-flow__media-upload-menu">
155
- <>
161
+ <MediaUploadCheck>
156
162
  <MediaUpload
157
163
  gallery={ gallery }
158
164
  addToGallery={ addToGallery }
@@ -171,28 +177,26 @@ const MediaReplaceFlow = ( {
171
177
  </MenuItem>
172
178
  ) }
173
179
  />
174
- <MediaUploadCheck>
175
- <FormFileUpload
176
- onChange={ ( event ) => {
177
- uploadFiles( event, onClose );
178
- } }
179
- accept={ accept }
180
- multiple={ multiple }
181
- render={ ( { openFileDialog } ) => {
182
- return (
183
- <MenuItem
184
- icon={ upload }
185
- onClick={ () => {
186
- openFileDialog();
187
- } }
188
- >
189
- { __( 'Upload' ) }
190
- </MenuItem>
191
- );
192
- } }
193
- />
194
- </MediaUploadCheck>
195
- </>
180
+ <FormFileUpload
181
+ onChange={ ( event ) => {
182
+ uploadFiles( event, onClose );
183
+ } }
184
+ accept={ accept }
185
+ multiple={ multiple }
186
+ render={ ( { openFileDialog } ) => {
187
+ return (
188
+ <MenuItem
189
+ icon={ upload }
190
+ onClick={ () => {
191
+ openFileDialog();
192
+ } }
193
+ >
194
+ { __( 'Upload' ) }
195
+ </MenuItem>
196
+ );
197
+ } }
198
+ />
199
+ </MediaUploadCheck>
196
200
  { onToggleFeaturedImage && (
197
201
  <MenuItem
198
202
  icon={ postFeaturedImage }
@@ -206,7 +210,15 @@ const MediaReplaceFlow = ( {
206
210
  </NavigableMenu>
207
211
  { onSelectURL && (
208
212
  // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
209
- <form className="block-editor-media-flow__url-input">
213
+ <form
214
+ className={ classnames(
215
+ 'block-editor-media-flow__url-input',
216
+ {
217
+ 'has-siblings':
218
+ canUpload || onToggleFeaturedImage,
219
+ }
220
+ ) }
221
+ >
210
222
  <span className="block-editor-media-replace-flow__image-url-label">
211
223
  { __( 'Current media URL:' ) }
212
224
  </span>
@@ -10,12 +10,15 @@
10
10
  }
11
11
 
12
12
  .block-editor-media-flow__url-input {
13
- border-top: $border-width solid $gray-900;
14
- margin-top: $grid-unit-10;
15
13
  margin-right: -$grid-unit-10;
16
14
  margin-left: -$grid-unit-10;
17
15
  padding: $grid-unit-20;
18
16
 
17
+ &.has-siblings {
18
+ border-top: $border-width solid $gray-900;
19
+ margin-top: $grid-unit-10;
20
+ }
21
+
19
22
  .block-editor-media-replace-flow__image-url-label {
20
23
  display: block;
21
24
  top: $grid-unit-20;
@@ -19,6 +19,7 @@ import { store as blockEditorStore } from '../../store';
19
19
  import { updateAttributes } from './update-attributes';
20
20
  import { LinkUI } from './link-ui';
21
21
  import { useInsertedBlock } from './use-inserted-block';
22
+ import { useListViewContext } from './context';
22
23
 
23
24
  const BLOCKS_WITH_LINK_UI_SUPPORT = [
24
25
  'core/navigation-link',
@@ -90,6 +91,8 @@ const ListViewBlockContents = forwardRef(
90
91
  hasExistingLinkValue,
91
92
  ] );
92
93
 
94
+ const { renderAdditionalBlockUI } = useListViewContext();
95
+
93
96
  const isBlockMoveTarget =
94
97
  blockMovingClientId && selectedBlockInBlockEditor === clientId;
95
98
 
@@ -107,6 +110,7 @@ const ListViewBlockContents = forwardRef(
107
110
 
108
111
  return (
109
112
  <>
113
+ { renderAdditionalBlockUI && renderAdditionalBlockUI( block ) }
110
114
  { isLinkUIOpen && (
111
115
  <LinkUI
112
116
  clientId={ lastInsertedBlockClientId }
@@ -54,17 +54,18 @@ export const BLOCK_LIST_ITEM_HEIGHT = 36;
54
54
  /**
55
55
  * Show a hierarchical list of blocks.
56
56
  *
57
- * @param {Object} props Components props.
58
- * @param {string} props.id An HTML element id for the root element of ListView.
59
- * @param {string} props.parentClientId The client id of the parent block.
60
- * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy.
61
- * @param {boolean} props.showBlockMovers Flag to enable block movers
62
- * @param {boolean} props.isExpanded Flag to determine whether nested levels are expanded by default.
63
- * @param {Object} props.LeafMoreMenu Optional more menu substitution.
64
- * @param {string} props.description Optional accessible description for the tree grid component.
65
- * @param {string} props.onSelect Optional callback to be invoked when a block is selected.
66
- * @param {string} props.showAppender Flag to show or hide the block appender.
67
- * @param {Object} ref Forwarded ref
57
+ * @param {Object} props Components props.
58
+ * @param {string} props.id An HTML element id for the root element of ListView.
59
+ * @param {string} props.parentClientId The client id of the parent block.
60
+ * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy.
61
+ * @param {boolean} props.showBlockMovers Flag to enable block movers
62
+ * @param {boolean} props.isExpanded Flag to determine whether nested levels are expanded by default.
63
+ * @param {Object} props.LeafMoreMenu Optional more menu substitution.
64
+ * @param {string} props.description Optional accessible description for the tree grid component.
65
+ * @param {string} props.onSelect Optional callback to be invoked when a block is selected.
66
+ * @param {string} props.showAppender Flag to show or hide the block appender.
67
+ * @param {Function} props.renderAdditionalBlockUI Function that renders additional block content UI.
68
+ * @param {Object} ref Forwarded ref.
68
69
  */
69
70
  function OffCanvasEditor(
70
71
  {
@@ -77,6 +78,7 @@ function OffCanvasEditor(
77
78
  LeafMoreMenu,
78
79
  description = __( 'Block navigation structure' ),
79
80
  onSelect,
81
+ renderAdditionalBlockUI,
80
82
  },
81
83
  ref
82
84
  ) {
@@ -200,6 +202,7 @@ function OffCanvasEditor(
200
202
  expand,
201
203
  collapse,
202
204
  LeafMoreMenu,
205
+ renderAdditionalBlockUI,
203
206
  } ),
204
207
  [
205
208
  isMounted.current,
@@ -208,6 +211,7 @@ function OffCanvasEditor(
208
211
  expand,
209
212
  collapse,
210
213
  LeafMoreMenu,
214
+ renderAdditionalBlockUI,
211
215
  ]
212
216
  );
213
217
 
@@ -0,0 +1,27 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { ResizableBox } from '@wordpress/components';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import BlockPopover from '../block-popover';
10
+
11
+ export default function ResizableBoxPopover( {
12
+ clientId,
13
+ resizableBoxProps,
14
+ ...props
15
+ } ) {
16
+ return (
17
+ <BlockPopover
18
+ clientId={ clientId }
19
+ __unstableCoverTarget
20
+ __unstablePopoverSlot="block-toolbar"
21
+ shift={ false }
22
+ { ...props }
23
+ >
24
+ <ResizableBox { ...resizableBoxProps } />
25
+ </BlockPopover>
26
+ );
27
+ }
@@ -1,11 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import {
5
- getActiveFormat,
6
- getActiveObject,
7
- isCollapsed,
8
- } from '@wordpress/rich-text';
4
+ import { getActiveFormat, getActiveObject } from '@wordpress/rich-text';
9
5
 
10
6
  export default function FormatEdit( {
11
7
  formatTypes,
@@ -22,37 +18,11 @@ export default function FormatEdit( {
22
18
  }
23
19
 
24
20
  const activeFormat = getActiveFormat( value, name );
25
- let isActive = activeFormat !== undefined;
21
+ const isActive = activeFormat !== undefined;
26
22
  const activeObject = getActiveObject( value );
27
23
  const isObjectActive =
28
24
  activeObject !== undefined && activeObject.type === name;
29
25
 
30
- // Edge case: un-collapsed link formats.
31
- // If there is a missing link format at either end of the selection
32
- // then we shouldn't show the Edit UI because the selection has exceeded
33
- // the bounds of the link format.
34
- // Also if the format objects don't match then we're dealing with two separate
35
- // links so we should not allow the link to be modified over the top.
36
- if ( name === 'core/link' && ! isCollapsed( value ) ) {
37
- const formats = value.formats;
38
-
39
- const linkFormatAtStart = formats[ value.start ]?.find(
40
- ( { type } ) => type === 'core/link'
41
- );
42
-
43
- const linkFormatAtEnd = formats[ value.end - 1 ]?.find(
44
- ( { type } ) => type === 'core/link'
45
- );
46
-
47
- if (
48
- ! linkFormatAtStart ||
49
- ! linkFormatAtEnd ||
50
- linkFormatAtStart !== linkFormatAtEnd
51
- ) {
52
- isActive = false;
53
- }
54
- }
55
-
56
26
  return (
57
27
  <Edit
58
28
  key={ name }
@@ -66,7 +66,6 @@ function removeNativeProps( props ) {
66
66
  textAlign,
67
67
  selectionColor,
68
68
  tagsToEliminate,
69
- rootTagsToEliminate,
70
69
  disableEditingMenu,
71
70
  fontSize,
72
71
  fontFamily,
@@ -46,7 +46,6 @@ import { useBlockEditContext } from '../block-edit';
46
46
  import { RemoveBrowserShortcuts } from './remove-browser-shortcuts';
47
47
  import { filePasteHandler } from './file-paste-handler';
48
48
  import FormatToolbarContainer from './format-toolbar-container';
49
- import { useNativeProps } from './use-native-props';
50
49
  import { store as blockEditorStore } from '../../store';
51
50
  import {
52
51
  addActiveFormats,
@@ -97,7 +96,6 @@ function RichTextWrapper(
97
96
  textAlign,
98
97
  selectionColor,
99
98
  tagsToEliminate,
100
- rootTagsToEliminate,
101
99
  disableEditingMenu,
102
100
  fontSize,
103
101
  fontFamily,
@@ -121,7 +119,6 @@ function RichTextWrapper(
121
119
 
122
120
  const fallbackRef = useRef();
123
121
  const { clientId, isSelected: blockIsSelected } = useBlockEditContext();
124
- const nativeProps = useNativeProps();
125
122
  const embedHandlerPickerRef = useRef();
126
123
  const selector = ( select ) => {
127
124
  const {
@@ -220,6 +217,7 @@ function RichTextWrapper(
220
217
  selectionChangeEnd
221
218
  );
222
219
  },
220
+ // eslint-disable-next-line react-hooks/exhaustive-deps
223
221
  [ clientId, identifier ]
224
222
  );
225
223
 
@@ -373,6 +371,7 @@ function RichTextWrapper(
373
371
  }
374
372
  }
375
373
  },
374
+ // eslint-disable-next-line react-hooks/exhaustive-deps
376
375
  [
377
376
  onReplace,
378
377
  onSplit,
@@ -615,7 +614,6 @@ function RichTextWrapper(
615
614
  }
616
615
  __unstableMultilineRootTag={ __unstableMultilineRootTag }
617
616
  // Native props.
618
- { ...nativeProps }
619
617
  blockIsSelected={
620
618
  originalIsSelected !== undefined
621
619
  ? originalIsSelected
@@ -628,7 +626,6 @@ function RichTextWrapper(
628
626
  textAlign={ textAlign }
629
627
  selectionColor={ selectionColor }
630
628
  tagsToEliminate={ tagsToEliminate }
631
- rootTagsToEliminate={ rootTagsToEliminate }
632
629
  disableEditingMenu={ disableEditingMenu }
633
630
  fontSize={ fontSize }
634
631
  fontFamily={ fontFamily }
@@ -20,6 +20,7 @@ import {
20
20
  } from '@wordpress/components';
21
21
  import { __, sprintf } from '@wordpress/i18n';
22
22
  import { settings } from '@wordpress/icons';
23
+ import { usePrevious } from '@wordpress/compose';
23
24
 
24
25
  /**
25
26
  * Internal dependencies
@@ -71,6 +72,15 @@ export default function SpacingInputControl( {
71
72
  ! isValueSpacingPreset( value )
72
73
  );
73
74
 
75
+ const previousValue = usePrevious( value );
76
+ if (
77
+ previousValue !== value &&
78
+ ! isValueSpacingPreset( value ) &&
79
+ showCustomValueControl !== true
80
+ ) {
81
+ setShowCustomValueControl( true );
82
+ }
83
+
74
84
  const units = useCustomUnits( {
75
85
  availableUnits: useSetting( 'spacing.units' ) || [ 'px', 'em', 'rem' ],
76
86
  } );
@@ -2,7 +2,7 @@
2
2
  display: grid;
3
3
  grid-template-columns: auto 1fr auto;
4
4
  align-items: center;
5
- grid-template-rows: 16px auto;
5
+ grid-template-rows: $grid-unit-30 auto;
6
6
  }
7
7
 
8
8
  .component-spacing-sizes-control {
@@ -19,7 +19,7 @@
19
19
  }
20
20
 
21
21
  .components-base-control__label {
22
- margin-bottom: 0;
22
+ margin-bottom: $grid-unit-10;
23
23
  height: $grid-unit-20;
24
24
  }
25
25
 
@@ -55,6 +55,7 @@
55
55
  grid-row: 1 / 1;
56
56
  align-self: center;
57
57
  margin-left: $grid-unit-05;
58
+ margin-bottom: $grid-unit-10;
58
59
  }
59
60
 
60
61
  .components-spacing-sizes-control__custom-toggle-all {
@@ -85,20 +86,20 @@
85
86
  .components-spacing-sizes-control__custom-value-range {
86
87
  grid-column: span 2;
87
88
  margin-left: $grid-unit-20;
88
- margin-top: 8px;
89
89
  }
90
90
 
91
- .components-spacing-sizes-control__custom-value-input {
91
+ .components-base-control.components-spacing-sizes-control__custom-value-input {
92
92
  width: 124px;
93
- margin-top: 8px;
94
93
  grid-column: 1;
94
+ margin-bottom: 0;
95
95
  }
96
96
 
97
- .components-range-control {
97
+ .components-base-control.components-range-control {
98
98
  height: 40px;
99
99
  /* Vertically center the RangeControl until it has true 40px height. */
100
100
  display: flex;
101
101
  align-items: center;
102
+ margin-bottom: 0;
102
103
 
103
104
  > .components-base-control__field {
104
105
  /* Fixes RangeControl contents when the outer wrapper is flex */
@@ -108,7 +109,6 @@
108
109
 
109
110
  .components-spacing-sizes-control__range-control {
110
111
  grid-column: span 3;
111
- margin-top: 8px;
112
112
  }
113
113
 
114
114
  .components-range-control__mark {
@@ -31,11 +31,10 @@ export default function useInput() {
31
31
 
32
32
  return useRefEffect( ( node ) => {
33
33
  function onBeforeInput( event ) {
34
- if ( ! hasMultiSelection() ) {
35
- return;
36
- }
37
- // Prevent the browser to format something when we have multiselection.
38
- if ( event.inputType?.startsWith( 'format' ) ) {
34
+ // If writing flow is editable, NEVER allow the browser to alter the
35
+ // DOM. This will cause React errors (and the DOM should only be
36
+ // altered in a controlled fashion).
37
+ if ( node.contentEditable === 'true' ) {
39
38
  event.preventDefault();
40
39
  }
41
40
  }
@@ -80,7 +80,7 @@ export const withInspectorControl = createHigherOrderComponent(
80
80
  { isWeb && (
81
81
  <ExternalLink
82
82
  href={ __(
83
- 'https://wordpress.org/support/article/page-jumps/'
83
+ 'https://wordpress.org/documentation/article/page-jumps/'
84
84
  ) }
85
85
  >
86
86
  { __( 'Learn more about anchors' ) }
@@ -84,7 +84,7 @@ function styleToAttributes( style ) {
84
84
 
85
85
  const borderColorValue = style?.border?.color;
86
86
  const borderColorSlug = borderColorValue?.startsWith( 'var:preset|color|' )
87
- ? borderColorSlug.substring( 'var:preset|color|'.length )
87
+ ? borderColorValue.substring( 'var:preset|color|'.length )
88
88
  : undefined;
89
89
  const updatedStyle = { ...style };
90
90
  updatedStyle.border = {
@@ -163,7 +163,6 @@ export function BorderPanel( props ) {
163
163
  <StylesBorderPanel
164
164
  as={ BordersInspectorControl }
165
165
  panelId={ clientId }
166
- name={ name }
167
166
  settings={ settings }
168
167
  value={ value }
169
168
  onChange={ onChange }