@wordpress/block-editor 13.4.0 → 14.1.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 (533) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +20 -15
  3. package/build/autocompleters/block.js +1 -1
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/components/block-breadcrumb/index.js +3 -1
  6. package/build/components/block-breadcrumb/index.js.map +1 -1
  7. package/build/components/block-draggable/index.js +2 -2
  8. package/build/components/block-draggable/index.js.map +1 -1
  9. package/build/components/block-list/use-block-props/index.js +2 -2
  10. package/build/components/block-list/use-block-props/index.js.map +1 -1
  11. package/build/components/block-list/use-block-props/use-block-refs.js +24 -32
  12. package/build/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  13. package/build/components/block-list/use-in-between-inserter.js +11 -4
  14. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  15. package/build/components/block-mover/index.js +1 -2
  16. package/build/components/block-mover/index.js.map +1 -1
  17. package/build/components/block-popover/cover.js +1 -1
  18. package/build/components/block-popover/cover.js.map +1 -1
  19. package/build/components/block-popover/inbetween.js +2 -2
  20. package/build/components/block-popover/inbetween.js.map +1 -1
  21. package/build/components/block-popover/index.js +2 -2
  22. package/build/components/block-popover/index.js.map +1 -1
  23. package/build/components/block-settings-menu/block-mode-toggle.js +28 -34
  24. package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  25. package/build/components/block-tools/block-selection-button.js +1 -2
  26. package/build/components/block-tools/block-selection-button.js.map +1 -1
  27. package/build/components/block-tools/index.js +1 -1
  28. package/build/components/block-tools/index.js.map +1 -1
  29. package/build/components/block-tools/insertion-point.js +14 -3
  30. package/build/components/block-tools/insertion-point.js.map +1 -1
  31. package/build/components/block-tools/use-block-toolbar-popover-props.js +1 -1
  32. package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  33. package/build/components/block-tools/use-show-block-tools.js +2 -1
  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 +22 -19
  36. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  37. package/build/components/block-tools/zoom-out-toolbar.js +0 -1
  38. package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
  39. package/build/components/border-radius-control/index.js +1 -0
  40. package/build/components/border-radius-control/index.js.map +1 -1
  41. package/build/components/child-layout-control/index.js +3 -1
  42. package/build/components/child-layout-control/index.js.map +1 -1
  43. package/build/components/convert-to-group-buttons/index.js +1 -1
  44. package/build/components/convert-to-group-buttons/index.js.map +1 -1
  45. package/build/components/date-format-picker/index.js +2 -0
  46. package/build/components/date-format-picker/index.js.map +1 -1
  47. package/build/components/dimensions-tool/scale-tool.js +1 -0
  48. package/build/components/dimensions-tool/scale-tool.js.map +1 -1
  49. package/build/components/font-appearance-control/index.js +3 -0
  50. package/build/components/font-appearance-control/index.js.map +1 -1
  51. package/build/components/font-family/index.js +15 -0
  52. package/build/components/font-family/index.js.map +1 -1
  53. package/build/components/global-styles/background-panel.js +153 -77
  54. package/build/components/global-styles/background-panel.js.map +1 -1
  55. package/build/components/global-styles/get-global-styles-changes.js +3 -1
  56. package/build/components/global-styles/get-global-styles-changes.js.map +1 -1
  57. package/build/components/global-styles/hooks.js +0 -7
  58. package/build/components/global-styles/hooks.js.map +1 -1
  59. package/build/components/global-styles/image-settings-panel.js +1 -0
  60. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  61. package/build/components/global-styles/index.js +0 -6
  62. package/build/components/global-styles/index.js.map +1 -1
  63. package/build/components/global-styles/typography-panel.js +0 -1
  64. package/build/components/global-styles/typography-panel.js.map +1 -1
  65. package/build/components/global-styles/use-global-styles-output.js +59 -40
  66. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  67. package/build/components/global-styles/utils.js +80 -0
  68. package/build/components/global-styles/utils.js.map +1 -1
  69. package/build/components/grid/grid-item-movers.js +30 -26
  70. package/build/components/grid/grid-item-movers.js.map +1 -1
  71. package/build/components/grid/grid-item-resizer.js +14 -15
  72. package/build/components/grid/grid-item-resizer.js.map +1 -1
  73. package/build/components/grid/grid-visualizer.js +21 -6
  74. package/build/components/grid/grid-visualizer.js.map +1 -1
  75. package/build/components/grid/use-grid-layout-sync.js +56 -20
  76. package/build/components/grid/use-grid-layout-sync.js.map +1 -1
  77. package/build/components/height-control/index.js +1 -0
  78. package/build/components/height-control/index.js.map +1 -1
  79. package/build/components/iframe/index.js +2 -4
  80. package/build/components/iframe/index.js.map +1 -1
  81. package/build/components/image-editor/zoom-dropdown.js +11 -7
  82. package/build/components/image-editor/zoom-dropdown.js.map +1 -1
  83. package/build/components/inner-blocks/button-block-appender.js +8 -8
  84. package/build/components/inner-blocks/button-block-appender.js.map +1 -1
  85. package/build/components/inner-blocks/default-block-appender.js +7 -25
  86. package/build/components/inner-blocks/default-block-appender.js.map +1 -1
  87. package/build/components/inner-blocks/index.js +9 -11
  88. package/build/components/inner-blocks/index.js.map +1 -1
  89. package/build/components/inserter/category-tabs/index.js +29 -2
  90. package/build/components/inserter/category-tabs/index.js.map +1 -1
  91. package/build/components/inserter/library.js +4 -2
  92. package/build/components/inserter/library.js.map +1 -1
  93. package/build/components/inserter/menu.js +32 -14
  94. package/build/components/inserter/menu.js.map +1 -1
  95. package/build/components/inserter/quick-inserter.js +4 -0
  96. package/build/components/inserter/quick-inserter.js.map +1 -1
  97. package/build/components/line-height-control/index.js +3 -15
  98. package/build/components/line-height-control/index.js.map +1 -1
  99. package/build/components/link-control/search-input.js +0 -1
  100. package/build/components/link-control/search-input.js.map +1 -1
  101. package/build/components/media-placeholder/index.js +9 -4
  102. package/build/components/media-placeholder/index.js.map +1 -1
  103. package/build/components/media-replace-flow/index.js +3 -1
  104. package/build/components/media-replace-flow/index.js.map +1 -1
  105. package/build/components/media-upload/index.native.js +4 -1
  106. package/build/components/media-upload/index.native.js.map +1 -1
  107. package/build/components/multi-selection-inspector/index.js +12 -12
  108. package/build/components/multi-selection-inspector/index.js.map +1 -1
  109. package/build/components/resolution-tool/index.js +1 -0
  110. package/build/components/resolution-tool/index.js.map +1 -1
  111. package/build/components/skip-to-selected-block/index.js +4 -2
  112. package/build/components/skip-to-selected-block/index.js.map +1 -1
  113. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +8 -8
  114. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  115. package/build/components/text-alignment-control/index.js +13 -8
  116. package/build/components/text-alignment-control/index.js.map +1 -1
  117. package/build/components/text-decoration-control/index.js +13 -8
  118. package/build/components/text-decoration-control/index.js.map +1 -1
  119. package/build/components/text-transform-control/index.js +13 -8
  120. package/build/components/text-transform-control/index.js.map +1 -1
  121. package/build/components/url-input/button.js +0 -1
  122. package/build/components/url-input/button.js.map +1 -1
  123. package/build/components/url-input/index.js +1 -11
  124. package/build/components/url-input/index.js.map +1 -1
  125. package/build/components/url-popover/image-url-input-ui.js +2 -0
  126. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  127. package/build/components/url-popover/link-editor.js +0 -1
  128. package/build/components/url-popover/link-editor.js.map +1 -1
  129. package/build/components/use-block-drop-zone/index.js +42 -4
  130. package/build/components/use-block-drop-zone/index.js.map +1 -1
  131. package/build/components/use-on-block-drop/index.js +3 -6
  132. package/build/components/use-on-block-drop/index.js.map +1 -1
  133. package/build/components/use-resize-canvas/index.js +1 -3
  134. package/build/components/use-resize-canvas/index.js.map +1 -1
  135. package/build/components/use-settings/index.js +2 -1
  136. package/build/components/use-settings/index.js.map +1 -1
  137. package/build/components/writing-mode-control/index.js +13 -8
  138. package/build/components/writing-mode-control/index.js.map +1 -1
  139. package/build/hooks/background.js +19 -23
  140. package/build/hooks/background.js.map +1 -1
  141. package/build/hooks/block-bindings.js +209 -39
  142. package/build/hooks/block-bindings.js.map +1 -1
  143. package/build/hooks/block-hooks.js +1 -0
  144. package/build/hooks/block-hooks.js.map +1 -1
  145. package/build/hooks/block-style-variation.js +2 -2
  146. package/build/hooks/block-style-variation.js.map +1 -1
  147. package/build/hooks/contrast-checker.js +6 -6
  148. package/build/hooks/contrast-checker.js.map +1 -1
  149. package/build/hooks/duotone.js +3 -3
  150. package/build/hooks/duotone.js.map +1 -1
  151. package/build/hooks/index.js +7 -1
  152. package/build/hooks/index.js.map +1 -1
  153. package/build/hooks/line-height.js +0 -1
  154. package/build/hooks/line-height.js.map +1 -1
  155. package/build/hooks/spacing-visualizer.js +1 -1
  156. package/build/hooks/spacing-visualizer.js.map +1 -1
  157. package/build/hooks/use-bindings-attributes.js +4 -0
  158. package/build/hooks/use-bindings-attributes.js.map +1 -1
  159. package/build/hooks/use-zoom-out.js +1 -1
  160. package/build/hooks/use-zoom-out.js.map +1 -1
  161. package/build/hooks/utils.js +20 -0
  162. package/build/hooks/utils.js.map +1 -1
  163. package/build/index.js +7 -0
  164. package/build/index.js.map +1 -1
  165. package/build/layouts/constrained.js +1 -0
  166. package/build/layouts/constrained.js.map +1 -1
  167. package/build/layouts/flex.js +2 -0
  168. package/build/layouts/flex.js.map +1 -1
  169. package/build/layouts/grid.js +3 -0
  170. package/build/layouts/grid.js.map +1 -1
  171. package/build/private-apis.js +3 -2
  172. package/build/private-apis.js.map +1 -1
  173. package/build/store/actions.js +9 -1
  174. package/build/store/actions.js.map +1 -1
  175. package/build/store/private-selectors.js +30 -0
  176. package/build/store/private-selectors.js.map +1 -1
  177. package/build/store/reducer.js +10 -1
  178. package/build/store/reducer.js.map +1 -1
  179. package/build/store/selectors.js +4 -4
  180. package/build/store/selectors.js.map +1 -1
  181. package/build/utils/block-bindings.js +112 -0
  182. package/build/utils/block-bindings.js.map +1 -0
  183. package/build/utils/get-editor-region.js +1 -1
  184. package/build/utils/get-editor-region.js.map +1 -1
  185. package/build/utils/get-px-from-css-unit.js +1 -1
  186. package/build/utils/get-px-from-css-unit.js.map +1 -1
  187. package/build-module/autocompleters/block.js +1 -1
  188. package/build-module/autocompleters/block.js.map +1 -1
  189. package/build-module/components/block-breadcrumb/index.js +4 -2
  190. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  191. package/build-module/components/block-draggable/index.js +3 -3
  192. package/build-module/components/block-draggable/index.js.map +1 -1
  193. package/build-module/components/block-list/use-block-props/index.js +2 -2
  194. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  195. package/build-module/components/block-list/use-block-props/use-block-refs.js +24 -34
  196. package/build-module/components/block-list/use-block-props/use-block-refs.js.map +1 -1
  197. package/build-module/components/block-list/use-in-between-inserter.js +11 -4
  198. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  199. package/build-module/components/block-mover/index.js +1 -2
  200. package/build-module/components/block-mover/index.js.map +1 -1
  201. package/build-module/components/block-popover/cover.js +1 -1
  202. package/build-module/components/block-popover/cover.js.map +1 -1
  203. package/build-module/components/block-popover/inbetween.js +1 -1
  204. package/build-module/components/block-popover/inbetween.js.map +1 -1
  205. package/build-module/components/block-popover/index.js +1 -1
  206. package/build-module/components/block-popover/index.js.map +1 -1
  207. package/build-module/components/block-settings-menu/block-mode-toggle.js +29 -34
  208. package/build-module/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  209. package/build-module/components/block-tools/block-selection-button.js +1 -2
  210. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  211. package/build-module/components/block-tools/index.js +1 -1
  212. package/build-module/components/block-tools/index.js.map +1 -1
  213. package/build-module/components/block-tools/insertion-point.js +14 -3
  214. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  215. package/build-module/components/block-tools/use-block-toolbar-popover-props.js +1 -1
  216. package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
  217. package/build-module/components/block-tools/use-show-block-tools.js +2 -1
  218. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  219. package/build-module/components/block-tools/zoom-out-mode-inserters.js +23 -20
  220. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  221. package/build-module/components/block-tools/zoom-out-toolbar.js +0 -1
  222. package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
  223. package/build-module/components/border-radius-control/index.js +1 -0
  224. package/build-module/components/border-radius-control/index.js.map +1 -1
  225. package/build-module/components/child-layout-control/index.js +3 -1
  226. package/build-module/components/child-layout-control/index.js.map +1 -1
  227. package/build-module/components/convert-to-group-buttons/index.js +1 -1
  228. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  229. package/build-module/components/date-format-picker/index.js +2 -0
  230. package/build-module/components/date-format-picker/index.js.map +1 -1
  231. package/build-module/components/dimensions-tool/scale-tool.js +1 -0
  232. package/build-module/components/dimensions-tool/scale-tool.js.map +1 -1
  233. package/build-module/components/font-appearance-control/index.js +3 -0
  234. package/build-module/components/font-appearance-control/index.js.map +1 -1
  235. package/build-module/components/font-family/index.js +14 -0
  236. package/build-module/components/font-family/index.js.map +1 -1
  237. package/build-module/components/global-styles/background-panel.js +156 -80
  238. package/build-module/components/global-styles/background-panel.js.map +1 -1
  239. package/build-module/components/global-styles/get-global-styles-changes.js +3 -1
  240. package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -1
  241. package/build-module/components/global-styles/hooks.js +0 -6
  242. package/build-module/components/global-styles/hooks.js.map +1 -1
  243. package/build-module/components/global-styles/image-settings-panel.js +1 -0
  244. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  245. package/build-module/components/global-styles/index.js +1 -1
  246. package/build-module/components/global-styles/index.js.map +1 -1
  247. package/build-module/components/global-styles/typography-panel.js +0 -1
  248. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  249. package/build-module/components/global-styles/use-global-styles-output.js +61 -42
  250. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  251. package/build-module/components/global-styles/utils.js +77 -0
  252. package/build-module/components/global-styles/utils.js.map +1 -1
  253. package/build-module/components/grid/grid-item-movers.js +30 -26
  254. package/build-module/components/grid/grid-item-movers.js.map +1 -1
  255. package/build-module/components/grid/grid-item-resizer.js +14 -15
  256. package/build-module/components/grid/grid-item-resizer.js.map +1 -1
  257. package/build-module/components/grid/grid-visualizer.js +21 -6
  258. package/build-module/components/grid/grid-visualizer.js.map +1 -1
  259. package/build-module/components/grid/use-grid-layout-sync.js +56 -20
  260. package/build-module/components/grid/use-grid-layout-sync.js.map +1 -1
  261. package/build-module/components/height-control/index.js +1 -0
  262. package/build-module/components/height-control/index.js.map +1 -1
  263. package/build-module/components/iframe/index.js +2 -4
  264. package/build-module/components/iframe/index.js.map +1 -1
  265. package/build-module/components/image-editor/zoom-dropdown.js +12 -8
  266. package/build-module/components/image-editor/zoom-dropdown.js.map +1 -1
  267. package/build-module/components/inner-blocks/button-block-appender.js +7 -6
  268. package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
  269. package/build-module/components/inner-blocks/default-block-appender.js +6 -23
  270. package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
  271. package/build-module/components/inner-blocks/index.js +9 -11
  272. package/build-module/components/inner-blocks/index.js.map +1 -1
  273. package/build-module/components/inserter/category-tabs/index.js +30 -3
  274. package/build-module/components/inserter/category-tabs/index.js.map +1 -1
  275. package/build-module/components/inserter/library.js +4 -2
  276. package/build-module/components/inserter/library.js.map +1 -1
  277. package/build-module/components/inserter/menu.js +32 -14
  278. package/build-module/components/inserter/menu.js.map +1 -1
  279. package/build-module/components/inserter/quick-inserter.js +5 -1
  280. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  281. package/build-module/components/line-height-control/index.js +3 -14
  282. package/build-module/components/line-height-control/index.js.map +1 -1
  283. package/build-module/components/link-control/search-input.js +0 -1
  284. package/build-module/components/link-control/search-input.js.map +1 -1
  285. package/build-module/components/media-placeholder/index.js +9 -4
  286. package/build-module/components/media-placeholder/index.js.map +1 -1
  287. package/build-module/components/media-replace-flow/index.js +3 -1
  288. package/build-module/components/media-replace-flow/index.js.map +1 -1
  289. package/build-module/components/media-upload/index.native.js +4 -1
  290. package/build-module/components/media-upload/index.native.js.map +1 -1
  291. package/build-module/components/multi-selection-inspector/index.js +12 -12
  292. package/build-module/components/multi-selection-inspector/index.js.map +1 -1
  293. package/build-module/components/resolution-tool/index.js +1 -0
  294. package/build-module/components/resolution-tool/index.js.map +1 -1
  295. package/build-module/components/skip-to-selected-block/index.js +5 -3
  296. package/build-module/components/skip-to-selected-block/index.js.map +1 -1
  297. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +8 -8
  298. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  299. package/build-module/components/text-alignment-control/index.js +13 -8
  300. package/build-module/components/text-alignment-control/index.js.map +1 -1
  301. package/build-module/components/text-decoration-control/index.js +13 -8
  302. package/build-module/components/text-decoration-control/index.js.map +1 -1
  303. package/build-module/components/text-transform-control/index.js +13 -8
  304. package/build-module/components/text-transform-control/index.js.map +1 -1
  305. package/build-module/components/url-input/button.js +0 -1
  306. package/build-module/components/url-input/button.js.map +1 -1
  307. package/build-module/components/url-input/index.js +1 -11
  308. package/build-module/components/url-input/index.js.map +1 -1
  309. package/build-module/components/url-popover/image-url-input-ui.js +2 -0
  310. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  311. package/build-module/components/url-popover/link-editor.js +0 -1
  312. package/build-module/components/url-popover/link-editor.js.map +1 -1
  313. package/build-module/components/use-block-drop-zone/index.js +42 -4
  314. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  315. package/build-module/components/use-on-block-drop/index.js +3 -6
  316. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  317. package/build-module/components/use-resize-canvas/index.js +1 -3
  318. package/build-module/components/use-resize-canvas/index.js.map +1 -1
  319. package/build-module/components/use-settings/index.js +2 -1
  320. package/build-module/components/use-settings/index.js.map +1 -1
  321. package/build-module/components/writing-mode-control/index.js +13 -8
  322. package/build-module/components/writing-mode-control/index.js.map +1 -1
  323. package/build-module/hooks/background.js +19 -23
  324. package/build-module/hooks/background.js.map +1 -1
  325. package/build-module/hooks/block-bindings.js +214 -43
  326. package/build-module/hooks/block-bindings.js.map +1 -1
  327. package/build-module/hooks/block-hooks.js +1 -0
  328. package/build-module/hooks/block-hooks.js.map +1 -1
  329. package/build-module/hooks/block-style-variation.js +3 -3
  330. package/build-module/hooks/block-style-variation.js.map +1 -1
  331. package/build-module/hooks/contrast-checker.js +7 -7
  332. package/build-module/hooks/contrast-checker.js.map +1 -1
  333. package/build-module/hooks/duotone.js +4 -4
  334. package/build-module/hooks/duotone.js.map +1 -1
  335. package/build-module/hooks/index.js +2 -1
  336. package/build-module/hooks/index.js.map +1 -1
  337. package/build-module/hooks/line-height.js +0 -1
  338. package/build-module/hooks/line-height.js.map +1 -1
  339. package/build-module/hooks/spacing-visualizer.js +1 -1
  340. package/build-module/hooks/spacing-visualizer.js.map +1 -1
  341. package/build-module/hooks/use-bindings-attributes.js +3 -0
  342. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  343. package/build-module/hooks/use-zoom-out.js +1 -1
  344. package/build-module/hooks/use-zoom-out.js.map +1 -1
  345. package/build-module/hooks/utils.js +19 -0
  346. package/build-module/hooks/utils.js.map +1 -1
  347. package/build-module/index.js +1 -1
  348. package/build-module/index.js.map +1 -1
  349. package/build-module/layouts/constrained.js +1 -0
  350. package/build-module/layouts/constrained.js.map +1 -1
  351. package/build-module/layouts/flex.js +2 -0
  352. package/build-module/layouts/flex.js.map +1 -1
  353. package/build-module/layouts/grid.js +3 -0
  354. package/build-module/layouts/grid.js.map +1 -1
  355. package/build-module/private-apis.js +4 -3
  356. package/build-module/private-apis.js.map +1 -1
  357. package/build-module/store/actions.js +9 -1
  358. package/build-module/store/actions.js.map +1 -1
  359. package/build-module/store/private-selectors.js +27 -0
  360. package/build-module/store/private-selectors.js.map +1 -1
  361. package/build-module/store/reducer.js +9 -1
  362. package/build-module/store/reducer.js.map +1 -1
  363. package/build-module/store/selectors.js +4 -4
  364. package/build-module/store/selectors.js.map +1 -1
  365. package/build-module/utils/block-bindings.js +105 -0
  366. package/build-module/utils/block-bindings.js.map +1 -0
  367. package/build-module/utils/get-editor-region.js +1 -1
  368. package/build-module/utils/get-editor-region.js.map +1 -1
  369. package/build-module/utils/get-px-from-css-unit.js +1 -1
  370. package/build-module/utils/get-px-from-css-unit.js.map +1 -1
  371. package/build-style/content-rtl.css +12 -26
  372. package/build-style/content.css +12 -26
  373. package/build-style/default-editor-styles-rtl.css +5 -2
  374. package/build-style/default-editor-styles.css +5 -2
  375. package/build-style/style-rtl.css +123 -83
  376. package/build-style/style.css +123 -83
  377. package/package.json +32 -32
  378. package/src/autocompleters/block.js +2 -1
  379. package/src/autocompleters/style.scss +4 -0
  380. package/src/components/block-breadcrumb/index.js +4 -2
  381. package/src/components/block-canvas/style.scss +1 -0
  382. package/src/components/block-draggable/index.js +3 -3
  383. package/src/components/block-list/content.scss +5 -13
  384. package/src/components/block-list/use-block-props/index.js +2 -2
  385. package/src/components/block-list/use-block-props/use-block-refs.js +27 -43
  386. package/src/components/block-list/use-in-between-inserter.js +17 -5
  387. package/src/components/block-mover/index.js +5 -2
  388. package/src/components/block-popover/cover.js +1 -1
  389. package/src/components/block-popover/inbetween.js +1 -1
  390. package/src/components/block-popover/index.js +1 -1
  391. package/src/components/block-settings-menu/block-mode-toggle.js +28 -31
  392. package/src/components/block-settings-menu/test/block-mode-toggle.js +26 -23
  393. package/src/components/block-tools/block-selection-button.js +1 -2
  394. package/src/components/block-tools/index.js +5 -6
  395. package/src/components/block-tools/insertion-point.js +11 -0
  396. package/src/components/block-tools/style.scss +1 -1
  397. package/src/components/block-tools/use-block-toolbar-popover-props.js +1 -1
  398. package/src/components/block-tools/use-show-block-tools.js +4 -1
  399. package/src/components/block-tools/zoom-out-mode-inserters.js +21 -19
  400. package/src/components/block-tools/zoom-out-toolbar.js +0 -1
  401. package/src/components/block-variation-transforms/style.scss +1 -1
  402. package/src/components/border-radius-control/index.js +1 -0
  403. package/src/components/border-radius-control/style.scss +0 -10
  404. package/src/components/button-block-appender/content.scss +1 -1
  405. package/src/components/child-layout-control/index.js +2 -0
  406. package/src/components/color-palette/test/__snapshots__/control.js.snap +2 -2
  407. package/src/components/colors-gradients/test/control.js +3 -2
  408. package/src/components/convert-to-group-buttons/index.js +1 -1
  409. package/src/components/date-format-picker/index.js +2 -0
  410. package/src/components/dimensions-tool/scale-tool.js +1 -0
  411. package/src/components/font-appearance-control/index.js +3 -0
  412. package/src/components/font-family/README.md +17 -0
  413. package/src/components/font-family/index.js +19 -0
  414. package/src/components/font-family/stories/index.story.js +54 -0
  415. package/src/components/global-styles/background-panel.js +180 -93
  416. package/src/components/global-styles/get-global-styles-changes.js +4 -1
  417. package/src/components/global-styles/hooks.js +0 -5
  418. package/src/components/global-styles/image-settings-panel.js +1 -0
  419. package/src/components/global-styles/index.js +0 -1
  420. package/src/components/global-styles/style.scss +13 -12
  421. package/src/components/global-styles/test/use-global-styles-output.js +68 -7
  422. package/src/components/global-styles/test/utils.js +120 -0
  423. package/src/components/global-styles/typography-panel.js +0 -1
  424. package/src/components/global-styles/use-global-styles-output.js +71 -53
  425. package/src/components/global-styles/utils.js +90 -0
  426. package/src/components/grid/grid-item-movers.js +46 -44
  427. package/src/components/grid/grid-item-resizer.js +11 -17
  428. package/src/components/grid/grid-visualizer.js +23 -8
  429. package/src/components/grid/style.scss +60 -10
  430. package/src/components/grid/use-grid-layout-sync.js +68 -14
  431. package/src/components/height-control/index.js +1 -0
  432. package/src/components/iframe/content.scss +2 -2
  433. package/src/components/iframe/index.js +1 -3
  434. package/src/components/image-editor/zoom-dropdown.js +17 -9
  435. package/src/components/inner-blocks/button-block-appender.js +5 -7
  436. package/src/components/inner-blocks/default-block-appender.js +4 -23
  437. package/src/components/inner-blocks/index.js +10 -9
  438. package/src/components/inserter/category-tabs/index.js +35 -2
  439. package/src/components/inserter/library.js +2 -0
  440. package/src/components/inserter/menu.js +34 -29
  441. package/src/components/inserter/quick-inserter.js +4 -1
  442. package/src/components/inserter/style.scss +17 -12
  443. package/src/components/inserter-list-item/style.scss +1 -0
  444. package/src/components/inspector-controls/README.md +5 -0
  445. package/src/components/line-height-control/README.md +4 -5
  446. package/src/components/line-height-control/index.js +4 -21
  447. package/src/components/line-height-control/stories/index.story.js +0 -1
  448. package/src/components/line-height-control/test/index.js +1 -7
  449. package/src/components/link-control/search-input.js +0 -1
  450. package/src/components/link-control/style.scss +1 -1
  451. package/src/components/media-placeholder/index.js +12 -7
  452. package/src/components/media-replace-flow/README.md +7 -0
  453. package/src/components/media-replace-flow/index.js +3 -1
  454. package/src/components/media-upload/README.md +2 -0
  455. package/src/components/media-upload/index.native.js +2 -0
  456. package/src/components/multi-selection-inspector/index.js +8 -9
  457. package/src/components/resolution-tool/index.js +1 -0
  458. package/src/components/responsive-block-control/README.md +1 -0
  459. package/src/components/responsive-block-control/test/index.js +6 -1
  460. package/src/components/skip-to-selected-block/index.js +5 -3
  461. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +11 -10
  462. package/src/components/spacing-sizes-control/style.scss +16 -16
  463. package/src/components/tabbed-sidebar/style.scss +1 -19
  464. package/src/components/text-alignment-control/index.js +20 -8
  465. package/src/components/text-decoration-control/index.js +20 -8
  466. package/src/components/text-decoration-control/stories/index.story.js +0 -4
  467. package/src/components/text-transform-control/index.js +20 -8
  468. package/src/components/text-transform-control/stories/index.story.js +0 -4
  469. package/src/components/url-input/README.md +0 -5
  470. package/src/components/url-input/button.js +0 -1
  471. package/src/components/url-input/index.js +1 -15
  472. package/src/components/url-input/style.scss +2 -2
  473. package/src/components/url-popover/image-url-input-ui.js +2 -0
  474. package/src/components/url-popover/link-editor.js +0 -1
  475. package/src/components/use-block-drop-zone/index.js +86 -16
  476. package/src/components/use-on-block-drop/index.js +1 -9
  477. package/src/components/use-resize-canvas/index.js +1 -3
  478. package/src/components/use-settings/index.js +2 -1
  479. package/src/components/writing-mode-control/index.js +20 -8
  480. package/src/hooks/background.js +21 -27
  481. package/src/hooks/block-bindings.js +248 -54
  482. package/src/hooks/block-bindings.scss +13 -2
  483. package/src/hooks/block-hooks.js +1 -0
  484. package/src/hooks/block-hooks.scss +1 -0
  485. package/src/hooks/block-style-variation.js +3 -3
  486. package/src/hooks/contrast-checker.js +7 -7
  487. package/src/hooks/duotone.js +4 -4
  488. package/src/hooks/index.js +2 -1
  489. package/src/hooks/line-height.js +0 -1
  490. package/src/hooks/spacing-visualizer.js +1 -1
  491. package/src/hooks/test/background.js +60 -0
  492. package/src/hooks/use-bindings-attributes.js +4 -0
  493. package/src/hooks/use-editor-wrapper-styles.native.scss +1 -0
  494. package/src/hooks/use-zoom-out.js +1 -1
  495. package/src/hooks/utils.js +14 -1
  496. package/src/index.js +1 -0
  497. package/src/layouts/constrained.js +1 -0
  498. package/src/layouts/flex.js +2 -0
  499. package/src/layouts/grid.js +3 -0
  500. package/src/private-apis.js +3 -2
  501. package/src/store/actions.js +13 -5
  502. package/src/store/private-selectors.js +36 -0
  503. package/src/store/reducer.js +7 -0
  504. package/src/store/selectors.js +4 -4
  505. package/src/store/test/private-selectors.js +89 -0
  506. package/src/style.scss +1 -2
  507. package/src/utils/block-bindings.js +98 -0
  508. package/src/utils/get-editor-region.js +1 -1
  509. package/src/utils/get-px-from-css-unit.js +1 -1
  510. package/src/utils/test/transform-styles.js +49 -0
  511. package/tsconfig.tsbuildinfo +1 -1
  512. package/build/components/global-styles/theme-file-uri-utils.js +0 -80
  513. package/build/components/global-styles/theme-file-uri-utils.js.map +0 -1
  514. package/build/components/inner-blocks/with-client-id.js +0 -28
  515. package/build/components/inner-blocks/with-client-id.js.map +0 -1
  516. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +0 -30
  517. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +0 -1
  518. package/build/components/segmented-text-control/index.js +0 -63
  519. package/build/components/segmented-text-control/index.js.map +0 -1
  520. package/build-module/components/global-styles/theme-file-uri-utils.js +0 -73
  521. package/build-module/components/global-styles/theme-file-uri-utils.js.map +0 -1
  522. package/build-module/components/inner-blocks/with-client-id.js +0 -21
  523. package/build-module/components/inner-blocks/with-client-id.js.map +0 -1
  524. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +0 -23
  525. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +0 -1
  526. package/build-module/components/segmented-text-control/index.js +0 -58
  527. package/build-module/components/segmented-text-control/index.js.map +0 -1
  528. package/src/components/global-styles/test/theme-file-uri-utils.js +0 -66
  529. package/src/components/global-styles/theme-file-uri-utils.js +0 -77
  530. package/src/components/inner-blocks/with-client-id.js +0 -19
  531. package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +0 -25
  532. package/src/components/segmented-text-control/index.js +0 -63
  533. package/src/components/segmented-text-control/style.scss +0 -15
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render, screen } from '@testing-library/react';
4
+ import { screen } from '@testing-library/react';
5
+ import { render } from '@ariakit/test/react';
5
6
 
6
7
  /**
7
8
  * Internal dependencies
@@ -12,7 +13,7 @@ const noop = () => {};
12
13
 
13
14
  describe( 'ColorPaletteControl', () => {
14
15
  it( 'renders tabs if it is possible to select a color and a gradient rendering a color picker at the start', async () => {
15
- render(
16
+ await render(
16
17
  <ColorGradientControl
17
18
  label="Test Color Gradient"
18
19
  colorValue="#f00"
@@ -82,7 +82,7 @@ function ConvertToGroupButton( {
82
82
  >
83
83
  { _x(
84
84
  'Ungroup',
85
- 'Ungrouping blocks from within a grouping block back into individual blocks within the Editor '
85
+ 'Ungrouping blocks from within a grouping block back into individual blocks within the Editor'
86
86
  ) }
87
87
  </MenuItem>
88
88
  ) }
@@ -129,6 +129,7 @@ function NonDefaultControls( { format, onChange } ) {
129
129
  return (
130
130
  <VStack>
131
131
  <CustomSelectControl
132
+ __next40pxDefaultSize
132
133
  label={ __( 'Choose a format' ) }
133
134
  options={ [ ...suggestedOptions, customOption ] }
134
135
  value={
@@ -149,6 +150,7 @@ function NonDefaultControls( { format, onChange } ) {
149
150
  />
150
151
  { isCustom && (
151
152
  <TextControl
153
+ __next40pxDefaultSize
152
154
  __nextHasNoMarginBottom
153
155
  label={ __( 'Custom format' ) }
154
156
  hideLabelFromVision
@@ -105,6 +105,7 @@ export default function ScaleTool( {
105
105
  panelId={ panelId }
106
106
  >
107
107
  <ToggleGroupControl
108
+ __nextHasNoMarginBottom
108
109
  label={ __( 'Scale' ) }
109
110
  isBlock
110
111
  help={ scaleHelp[ displayValue ] }
@@ -39,6 +39,8 @@ const getFontAppearanceLabel = ( hasFontStyles, hasFontWeights ) => {
39
39
  */
40
40
  export default function FontAppearanceControl( props ) {
41
41
  const {
42
+ /** Start opting into the larger default height that will become the default size in a future version. */
43
+ __next40pxDefaultSize = false,
42
44
  onChange,
43
45
  hasFontStyles = true,
44
46
  hasFontWeights = true,
@@ -150,6 +152,7 @@ export default function FontAppearanceControl( props ) {
150
152
  <CustomSelectControl
151
153
  { ...otherProps }
152
154
  className="components-font-appearance-control"
155
+ __next40pxDefaultSize={ __next40pxDefaultSize }
153
156
  label={ label }
154
157
  describedBy={ getDescribedBy() }
155
158
  options={ selectOptions }
@@ -24,6 +24,7 @@ const MyFontFamilyControl = () => {
24
24
  onChange={ ( newFontFamily ) => {
25
25
  setFontFamily( newFontFamily );
26
26
  } }
27
+ __nextHasNoMarginBottom
27
28
  />
28
29
  );
29
30
  };
@@ -69,3 +70,19 @@ The current font family value.
69
70
  - Default: ''
70
71
 
71
72
  The rest of the props are passed down to the underlying `<SelectControl />` instance.
73
+
74
+ #### `__next40pxDefaultSize`
75
+
76
+ - Type: `boolean`
77
+ - Required: No
78
+ - Default: `false`
79
+
80
+ Start opting into the larger default height that will become the default size in a future version.
81
+
82
+ #### `__nextHasNoMarginBottom`
83
+
84
+ - Type: `boolean`
85
+ - Required: No
86
+ - Default: `false`
87
+
88
+ Start opting into the new margin-free styles that will become the default in a future version.
@@ -2,6 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { SelectControl } from '@wordpress/components';
5
+ import deprecated from '@wordpress/deprecated';
5
6
  import { __ } from '@wordpress/i18n';
6
7
 
7
8
  /**
@@ -10,6 +11,10 @@ import { __ } from '@wordpress/i18n';
10
11
  import { useSettings } from '../use-settings';
11
12
 
12
13
  export default function FontFamilyControl( {
14
+ /** Start opting into the larger default height that will become the default size in a future version. */
15
+ __next40pxDefaultSize = false,
16
+ /** Start opting into the new margin-free styles that will become the default in a future version. */
17
+ __nextHasNoMarginBottom = false,
13
18
  value = '',
14
19
  onChange,
15
20
  fontFamilies,
@@ -33,8 +38,22 @@ export default function FontFamilyControl( {
33
38
  };
34
39
  } ),
35
40
  ];
41
+
42
+ if ( ! __nextHasNoMarginBottom ) {
43
+ deprecated(
44
+ 'Bottom margin styles for wp.blockEditor.FontFamilyControl',
45
+ {
46
+ since: '6.7',
47
+ version: '7.0',
48
+ hint: 'Set the `__nextHasNoMarginBottom` prop to true to start opting into the new styles, which will become the default in a future version',
49
+ }
50
+ );
51
+ }
52
+
36
53
  return (
37
54
  <SelectControl
55
+ __next40pxDefaultSize={ __next40pxDefaultSize }
56
+ __nextHasNoMarginBottom={ __nextHasNoMarginBottom }
38
57
  label={ __( 'Font' ) }
39
58
  options={ options }
40
59
  value={ value }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useState } from '@wordpress/element';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import FontFamilyControl from '..';
10
+
11
+ export default {
12
+ component: FontFamilyControl,
13
+ title: 'BlockEditor/FontFamilyControl',
14
+ };
15
+
16
+ export const Default = {
17
+ render: function Template( props ) {
18
+ const [ value, setValue ] = useState();
19
+ return (
20
+ <FontFamilyControl
21
+ onChange={ setValue }
22
+ value={ value }
23
+ { ...props }
24
+ />
25
+ );
26
+ },
27
+ args: {
28
+ fontFamilies: [
29
+ {
30
+ fontFace: [
31
+ {
32
+ fontFamily: 'Inter',
33
+ fontStretch: 'normal',
34
+ fontStyle: 'normal',
35
+ fontWeight: '200 900',
36
+ src: [
37
+ 'file:./assets/fonts/inter/Inter-VariableFont_slnt,wght.ttf',
38
+ ],
39
+ },
40
+ ],
41
+ fontFamily: '"Inter", sans-serif',
42
+ name: 'Inter',
43
+ slug: 'inter',
44
+ },
45
+ {
46
+ fontFamily:
47
+ '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif',
48
+ name: 'System Font',
49
+ slug: 'system-font',
50
+ },
51
+ ],
52
+ __nextHasNoMarginBottom: true,
53
+ },
54
+ };
@@ -23,6 +23,8 @@ import {
23
23
  __experimentalHStack as HStack,
24
24
  __experimentalTruncate as Truncate,
25
25
  Dropdown,
26
+ Placeholder,
27
+ Spinner,
26
28
  __experimentalDropdownContentWrapper as DropdownContentWrapper,
27
29
  } from '@wordpress/components';
28
30
  import { __, _x, sprintf } from '@wordpress/i18n';
@@ -34,6 +36,7 @@ import {
34
36
  useRef,
35
37
  useState,
36
38
  useEffect,
39
+ useMemo,
37
40
  } from '@wordpress/element';
38
41
  import { useDispatch, useSelect } from '@wordpress/data';
39
42
  import { focus } from '@wordpress/dom';
@@ -42,11 +45,15 @@ import { isBlobURL } from '@wordpress/blob';
42
45
  /**
43
46
  * Internal dependencies
44
47
  */
45
- import { useToolsPanelDropdownMenuProps } from './utils';
48
+ import { useToolsPanelDropdownMenuProps, getResolvedValue } from './utils';
46
49
  import { setImmutably } from '../../utils/object';
47
50
  import MediaReplaceFlow from '../media-replace-flow';
48
51
  import { store as blockEditorStore } from '../../store';
49
- import { getResolvedThemeFilePath } from './theme-file-uri-utils';
52
+
53
+ import {
54
+ globalStylesDataKey,
55
+ globalStylesLinksDataKey,
56
+ } from '../../store/private-keys';
50
57
 
51
58
  const IMAGE_BACKGROUND_TYPE = 'image';
52
59
  const DEFAULT_CONTROLS = {
@@ -263,18 +270,25 @@ function BackgroundControlsPanel( {
263
270
  );
264
271
  }
265
272
 
273
+ function LoadingSpinner() {
274
+ return (
275
+ <Placeholder className="block-editor-global-styles-background-panel__loading">
276
+ <Spinner />
277
+ </Placeholder>
278
+ );
279
+ }
280
+
266
281
  function BackgroundImageControls( {
267
282
  onChange,
268
283
  style,
269
284
  inheritedValue,
270
285
  onRemoveImage = noop,
286
+ onResetImage = noop,
271
287
  displayInPanel,
272
- themeFileURIs,
288
+ defaultValues,
273
289
  } ) {
274
- const mediaUpload = useSelect(
275
- ( select ) => select( blockEditorStore ).getSettings().mediaUpload,
276
- []
277
- );
290
+ const [ isUploading, setIsUploading ] = useState( false );
291
+ const { getSettings } = useSelect( blockEditorStore );
278
292
 
279
293
  const { id, title, url } = style?.background?.backgroundImage || {
280
294
  ...inheritedValue?.background?.backgroundImage,
@@ -283,6 +297,7 @@ function BackgroundImageControls( {
283
297
  const { createErrorNotice } = useDispatch( noticesStore );
284
298
  const onUploadError = ( message ) => {
285
299
  createErrorNotice( message, { type: 'snackbar' } );
300
+ setIsUploading( false );
286
301
  };
287
302
 
288
303
  const resetBackgroundImage = () =>
@@ -297,10 +312,12 @@ function BackgroundImageControls( {
297
312
  const onSelectMedia = ( media ) => {
298
313
  if ( ! media || ! media.url ) {
299
314
  resetBackgroundImage();
315
+ setIsUploading( false );
300
316
  return;
301
317
  }
302
318
 
303
319
  if ( isBlobURL( media.url ) ) {
320
+ setIsUploading( true );
304
321
  return;
305
322
  }
306
323
 
@@ -318,9 +335,9 @@ function BackgroundImageControls( {
318
335
  return;
319
336
  }
320
337
 
321
- const sizeValue = style?.background?.backgroundSize;
338
+ const sizeValue =
339
+ style?.background?.backgroundSize || defaultValues?.backgroundSize;
322
340
  const positionValue = style?.background?.backgroundPosition;
323
-
324
341
  onChange(
325
342
  setImmutably( style, [ 'background' ], {
326
343
  ...style?.background,
@@ -331,21 +348,33 @@ function BackgroundImageControls( {
331
348
  title: media.title || undefined,
332
349
  },
333
350
  backgroundPosition:
351
+ /*
352
+ * A background image uploaded and set in the editor receives a default background position of '50% 0',
353
+ * when the background image size is the equivalent of "Tile".
354
+ * This is to increase the chance that the image's focus point is visible.
355
+ * This is in-editor only to assist with the user experience.
356
+ */
334
357
  ! positionValue && ( 'auto' === sizeValue || ! sizeValue )
335
358
  ? '50% 0'
336
359
  : positionValue,
360
+ backgroundSize: sizeValue,
337
361
  } )
338
362
  );
363
+ setIsUploading( false );
339
364
  };
340
365
 
366
+ // Drag and drop callback, restricting image to one.
341
367
  const onFilesDrop = ( filesList ) => {
342
- mediaUpload( {
368
+ if ( filesList?.length > 1 ) {
369
+ onUploadError(
370
+ __( 'Only one image can be used as a background image.' )
371
+ );
372
+ return;
373
+ }
374
+ getSettings().mediaUpload( {
343
375
  allowedTypes: [ IMAGE_BACKGROUND_TYPE ],
344
376
  filesList,
345
377
  onFileChange( [ image ] ) {
346
- if ( isBlobURL( image?.url ) ) {
347
- return;
348
- }
349
378
  onSelectMedia( image );
350
379
  },
351
380
  onError: onUploadError,
@@ -367,7 +396,9 @@ function BackgroundImageControls( {
367
396
 
368
397
  const onRemove = () =>
369
398
  onChange(
370
- setImmutably( style, [ 'background', 'backgroundImage' ], 'none' )
399
+ setImmutably( style, [ 'background' ], {
400
+ backgroundImage: 'none',
401
+ } )
371
402
  );
372
403
  const canRemove = ! hasValue && hasBackgroundImageValue( inheritedValue );
373
404
  const imgLabel =
@@ -378,6 +409,7 @@ function BackgroundImageControls( {
378
409
  ref={ replaceContainerRef }
379
410
  className="block-editor-global-styles-background-panel__image-tools-panel-item"
380
411
  >
412
+ { isUploading && <LoadingSpinner /> }
381
413
  <MediaReplaceFlow
382
414
  mediaId={ id }
383
415
  mediaURL={ url }
@@ -393,21 +425,20 @@ function BackgroundImageControls( {
393
425
  name={
394
426
  <InspectorImagePreviewItem
395
427
  className="block-editor-global-styles-background-panel__image-preview"
396
- imgUrl={ getResolvedThemeFilePath(
397
- url,
398
- themeFileURIs
399
- ) }
428
+ imgUrl={ url }
400
429
  filename={ title }
401
430
  label={ imgLabel }
402
431
  />
403
432
  }
404
433
  variant="secondary"
434
+ onError={ onUploadError }
405
435
  >
406
436
  { canRemove && (
407
437
  <MenuItem
408
438
  onClick={ () => {
409
439
  closeAndFocus();
410
440
  onRemove();
441
+ onRemoveImage();
411
442
  } }
412
443
  >
413
444
  { __( 'Remove' ) }
@@ -417,10 +448,10 @@ function BackgroundImageControls( {
417
448
  <MenuItem
418
449
  onClick={ () => {
419
450
  closeAndFocus();
420
- onRemoveImage();
451
+ onResetImage();
421
452
  } }
422
453
  >
423
- { __( 'Reset ' ) }
454
+ { __( 'Reset' ) }
424
455
  </MenuItem>
425
456
  ) }
426
457
  </MediaReplaceFlow>
@@ -437,7 +468,6 @@ function BackgroundSizeControls( {
437
468
  style,
438
469
  inheritedValue,
439
470
  defaultValues,
440
- themeFileURIs,
441
471
  } ) {
442
472
  const sizeValue =
443
473
  style?.background?.backgroundSize ||
@@ -448,6 +478,7 @@ function BackgroundSizeControls( {
448
478
  const imageValue =
449
479
  style?.background?.backgroundImage?.url ||
450
480
  inheritedValue?.background?.backgroundImage?.url;
481
+ const isUploadedImage = style?.background?.backgroundImage?.id;
451
482
  const positionValue =
452
483
  style?.background?.backgroundPosition ||
453
484
  inheritedValue?.background?.backgroundPosition;
@@ -456,20 +487,24 @@ function BackgroundSizeControls( {
456
487
  inheritedValue?.background?.backgroundAttachment;
457
488
 
458
489
  /*
459
- * An `undefined` value is replaced with any supplied
460
- * default control value for the toggle group control.
461
- * An empty string is treated as `auto` - this allows a user
462
- * to select "Size" and then enter a custom value, with an
463
- * empty value being treated as `auto`.
490
+ * Set default values for uploaded images.
491
+ * The default values are passed by the consumer.
492
+ * Block-level controls may have different defaults to root-level controls.
493
+ * A falsy value is treated by default as `auto` (Tile).
464
494
  */
465
- const currentValueForToggle =
466
- ( sizeValue !== undefined &&
467
- sizeValue !== 'cover' &&
468
- sizeValue !== 'contain' ) ||
469
- sizeValue === ''
470
- ? 'auto'
471
- : sizeValue || defaultValues?.backgroundSize;
472
-
495
+ let currentValueForToggle =
496
+ ! sizeValue && isUploadedImage
497
+ ? defaultValues?.backgroundSize
498
+ : sizeValue || 'auto';
499
+ /*
500
+ * The incoming value could be a value + unit, e.g. '20px'.
501
+ * In this case set the value to 'tile'.
502
+ */
503
+ currentValueForToggle = ! [ 'cover', 'contain', 'auto' ].includes(
504
+ currentValueForToggle
505
+ )
506
+ ? 'auto'
507
+ : currentValueForToggle;
473
508
  /*
474
509
  * If the current value is `cover` and the repeat value is `undefined`, then
475
510
  * the toggle should be unchecked as the default state. Otherwise, the toggle
@@ -506,6 +541,7 @@ function BackgroundSizeControls( {
506
541
  * receives a default background position of '50% 0',
507
542
  * when the toggle switches to "Tile". This is to increase the chance that
508
543
  * the image's focus point is visible.
544
+ * This is in-editor only to assist with the user experience.
509
545
  */
510
546
  if ( !! style?.background?.backgroundImage?.id ) {
511
547
  nextPosition = '50% 0';
@@ -558,25 +594,29 @@ function BackgroundSizeControls( {
558
594
  )
559
595
  );
560
596
 
597
+ // Set a default background position for non-site-wide, uploaded images with a size of 'contain'.
598
+ const backgroundPositionValue =
599
+ ! positionValue && isUploadedImage && 'contain' === sizeValue
600
+ ? defaultValues?.backgroundPosition
601
+ : positionValue;
602
+
561
603
  return (
562
- <VStack spacing={ 4 } className="single-column">
604
+ <VStack spacing={ 3 } className="single-column">
563
605
  <FocalPointPicker
564
- __next40pxDefaultSize
565
606
  __nextHasNoMarginBottom
566
607
  label={ __( 'Focal point' ) }
567
- url={ getResolvedThemeFilePath( imageValue, themeFileURIs ) }
568
- value={ backgroundPositionToCoords( positionValue ) }
608
+ url={ imageValue }
609
+ value={ backgroundPositionToCoords( backgroundPositionValue ) }
569
610
  onChange={ updateBackgroundPosition }
570
611
  />
571
612
  <ToggleControl
613
+ __nextHasNoMarginBottom
572
614
  label={ __( 'Fixed background' ) }
573
615
  checked={ attachmentValue === 'fixed' }
574
616
  onChange={ toggleScrollWithPage }
575
- help={ __(
576
- 'Whether your image should scroll with the page or stay fixed in place.'
577
- ) }
578
617
  />
579
618
  <ToggleGroupControl
619
+ __nextHasNoMarginBottom
580
620
  size="__unstable-large"
581
621
  label={ __( 'Size' ) }
582
622
  value={ currentValueForToggle }
@@ -626,6 +666,7 @@ function BackgroundSizeControls( {
626
666
  }
627
667
  />
628
668
  <ToggleControl
669
+ __nextHasNoMarginBottom
629
670
  label={ __( 'Repeat' ) }
630
671
  checked={ repeatCheckedValue }
631
672
  onChange={ toggleIsRepeated }
@@ -653,7 +694,7 @@ function BackgroundToolsPanel( {
653
694
  return (
654
695
  <VStack
655
696
  as={ ToolsPanel }
656
- spacing={ 4 }
697
+ spacing={ 2 }
657
698
  label={ headerLabel }
658
699
  resetAll={ resetAll }
659
700
  panelId={ panelId }
@@ -674,8 +715,44 @@ export default function BackgroundPanel( {
674
715
  defaultControls = DEFAULT_CONTROLS,
675
716
  defaultValues = {},
676
717
  headerLabel = __( 'Background image' ),
677
- themeFileURIs,
678
718
  } ) {
719
+ /*
720
+ * Resolve any inherited "ref" pointers.
721
+ * Should the block editor need resolved, inherited values
722
+ * across all controls, this could be abstracted into a hook,
723
+ * e.g., useResolveGlobalStyle
724
+ */
725
+ const { globalStyles, _links } = useSelect( ( select ) => {
726
+ const { getSettings } = select( blockEditorStore );
727
+ const _settings = getSettings();
728
+ return {
729
+ globalStyles: _settings[ globalStylesDataKey ],
730
+ _links: _settings[ globalStylesLinksDataKey ],
731
+ };
732
+ }, [] );
733
+ const resolvedInheritedValue = useMemo( () => {
734
+ const resolvedValues = {
735
+ background: {},
736
+ };
737
+
738
+ if ( ! inheritedValue?.background ) {
739
+ return inheritedValue;
740
+ }
741
+
742
+ Object.entries( inheritedValue?.background ).forEach(
743
+ ( [ key, backgroundValue ] ) => {
744
+ resolvedValues.background[ key ] = getResolvedValue(
745
+ backgroundValue,
746
+ {
747
+ styles: globalStyles,
748
+ _links,
749
+ }
750
+ );
751
+ }
752
+ );
753
+ return resolvedValues;
754
+ }, [ globalStyles, _links, inheritedValue ] );
755
+
679
756
  const resetAllFilter = useCallback( ( previousValue ) => {
680
757
  return {
681
758
  ...previousValue,
@@ -687,14 +764,19 @@ export default function BackgroundPanel( {
687
764
  onChange( setImmutably( value, [ 'background' ], {} ) );
688
765
 
689
766
  const { title, url } = value?.background?.backgroundImage || {
690
- ...inheritedValue?.background?.backgroundImage,
767
+ ...resolvedInheritedValue?.background?.backgroundImage,
691
768
  };
692
769
  const hasImageValue =
693
770
  hasBackgroundImageValue( value ) ||
694
- hasBackgroundImageValue( inheritedValue );
771
+ hasBackgroundImageValue( resolvedInheritedValue );
772
+
773
+ const imageValue =
774
+ value?.background?.backgroundImage ||
775
+ inheritedValue?.background?.backgroundImage;
695
776
 
696
777
  const shouldShowBackgroundImageControls =
697
778
  hasImageValue &&
779
+ 'none' !== imageValue &&
698
780
  ( settings?.background?.backgroundSize ||
699
781
  settings?.background?.backgroundPosition ||
700
782
  settings?.background?.backgroundRepeat );
@@ -717,55 +799,60 @@ export default function BackgroundPanel( {
717
799
  }
718
800
  ) }
719
801
  >
720
- { shouldShowBackgroundImageControls ? (
721
- <BackgroundControlsPanel
722
- label={ title }
723
- filename={ title }
724
- url={ getResolvedThemeFilePath( url, themeFileURIs ) }
725
- onToggle={ setIsDropDownOpen }
726
- hasImageValue={ hasImageValue }
727
- >
728
- <VStack spacing={ 3 } className="single-column">
729
- <BackgroundImageControls
730
- onChange={ onChange }
731
- style={ value }
732
- inheritedValue={ inheritedValue }
733
- themeFileURIs={ themeFileURIs }
734
- displayInPanel
735
- onRemoveImage={ () => {
736
- setIsDropDownOpen( false );
737
- resetBackground();
738
- } }
739
- />
740
- <BackgroundSizeControls
741
- onChange={ onChange }
742
- panelId={ panelId }
743
- style={ value }
744
- defaultValues={ defaultValues }
745
- inheritedValue={ inheritedValue }
746
- themeFileURIs={ themeFileURIs }
747
- />
748
- </VStack>
749
- </BackgroundControlsPanel>
750
- ) : (
751
- <BackgroundImageControls
752
- onChange={ onChange }
753
- style={ value }
754
- inheritedValue={ inheritedValue }
755
- themeFileURIs={ themeFileURIs }
756
- />
757
- ) }
802
+ <ToolsPanelItem
803
+ hasValue={ () => !! value?.background }
804
+ label={ __( 'Image' ) }
805
+ onDeselect={ resetBackground }
806
+ isShownByDefault={ defaultControls.backgroundImage }
807
+ panelId={ panelId }
808
+ >
809
+ { shouldShowBackgroundImageControls ? (
810
+ <BackgroundControlsPanel
811
+ label={ title }
812
+ filename={ title }
813
+ url={ url }
814
+ onToggle={ setIsDropDownOpen }
815
+ hasImageValue={ hasImageValue }
816
+ >
817
+ <VStack spacing={ 3 } className="single-column">
818
+ <BackgroundImageControls
819
+ onChange={ onChange }
820
+ style={ value }
821
+ inheritedValue={ resolvedInheritedValue }
822
+ displayInPanel
823
+ onResetImage={ () => {
824
+ setIsDropDownOpen( false );
825
+ resetBackground();
826
+ } }
827
+ onRemoveImage={ () =>
828
+ setIsDropDownOpen( false )
829
+ }
830
+ defaultValues={ defaultValues }
831
+ />
832
+ <BackgroundSizeControls
833
+ onChange={ onChange }
834
+ panelId={ panelId }
835
+ style={ value }
836
+ defaultValues={ defaultValues }
837
+ inheritedValue={ resolvedInheritedValue }
838
+ />
839
+ </VStack>
840
+ </BackgroundControlsPanel>
841
+ ) : (
842
+ <BackgroundImageControls
843
+ onChange={ onChange }
844
+ style={ value }
845
+ inheritedValue={ resolvedInheritedValue }
846
+ defaultValues={ defaultValues }
847
+ onResetImage={ () => {
848
+ setIsDropDownOpen( false );
849
+ resetBackground();
850
+ } }
851
+ onRemoveImage={ () => setIsDropDownOpen( false ) }
852
+ />
853
+ ) }
854
+ </ToolsPanelItem>
758
855
  </div>
759
-
760
- { /* Dummy ToolsPanel items, so we can control what's in the dropdown popover */ }
761
- <ToolsPanelItem
762
- hasValue={ () => hasImageValue }
763
- label={ __( 'Image' ) }
764
- onDeselect={ resetBackground }
765
- isShownByDefault={ defaultControls.backgroundImage }
766
- panelId={ panelId }
767
- className="block-editor-global-styles-background-panel__hidden-tools-panel-item"
768
- />
769
856
  </Wrapper>
770
857
  );
771
858
  }
@@ -202,7 +202,10 @@ export default function getGlobalStylesChanges( next, previous, options = {} ) {
202
202
  }, {} )
203
203
  ).map( ( [ key, changeValues ] ) => {
204
204
  const changeValuesLength = changeValues.length;
205
- const joinedChangesValue = changeValues.join( __( ', ' ) );
205
+ const joinedChangesValue = changeValues.join(
206
+ /* translators: Used between list items, there is a space after the comma. */
207
+ __( ', ' ) // eslint-disable-line @wordpress/i18n-no-flanking-whitespace
208
+ );
206
209
  switch ( key ) {
207
210
  case 'blocks': {
208
211
  return sprintf(