@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
@@ -22,7 +22,7 @@ var _utils = require("./utils");
22
22
  var _object = require("../../utils/object");
23
23
  var _mediaReplaceFlow = _interopRequireDefault(require("../media-replace-flow"));
24
24
  var _store = require("../../store");
25
- var _themeFileUriUtils = require("./theme-file-uri-utils");
25
+ var _privateKeys = require("../../store/private-keys");
26
26
  var _jsxRuntime = require("react/jsx-runtime");
27
27
  /**
28
28
  * External dependencies
@@ -230,15 +230,25 @@ function BackgroundControlsPanel({
230
230
  })
231
231
  });
232
232
  }
233
+ function LoadingSpinner() {
234
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Placeholder, {
235
+ className: "block-editor-global-styles-background-panel__loading",
236
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Spinner, {})
237
+ });
238
+ }
233
239
  function BackgroundImageControls({
234
240
  onChange,
235
241
  style,
236
242
  inheritedValue,
237
243
  onRemoveImage = noop,
244
+ onResetImage = noop,
238
245
  displayInPanel,
239
- themeFileURIs
246
+ defaultValues
240
247
  }) {
241
- const mediaUpload = (0, _data.useSelect)(select => select(_store.store).getSettings().mediaUpload, []);
248
+ const [isUploading, setIsUploading] = (0, _element.useState)(false);
249
+ const {
250
+ getSettings
251
+ } = (0, _data.useSelect)(_store.store);
242
252
  const {
243
253
  id,
244
254
  title,
@@ -254,14 +264,17 @@ function BackgroundImageControls({
254
264
  createErrorNotice(message, {
255
265
  type: 'snackbar'
256
266
  });
267
+ setIsUploading(false);
257
268
  };
258
269
  const resetBackgroundImage = () => onChange((0, _object.setImmutably)(style, ['background', 'backgroundImage'], undefined));
259
270
  const onSelectMedia = media => {
260
271
  if (!media || !media.url) {
261
272
  resetBackgroundImage();
273
+ setIsUploading(false);
262
274
  return;
263
275
  }
264
276
  if ((0, _blob.isBlobURL)(media.url)) {
277
+ setIsUploading(true);
265
278
  return;
266
279
  }
267
280
 
@@ -270,7 +283,7 @@ function BackgroundImageControls({
270
283
  onUploadError((0, _i18n.__)('Only images can be used as a background image.'));
271
284
  return;
272
285
  }
273
- const sizeValue = style?.background?.backgroundSize;
286
+ const sizeValue = style?.background?.backgroundSize || defaultValues?.backgroundSize;
274
287
  const positionValue = style?.background?.backgroundPosition;
275
288
  onChange((0, _object.setImmutably)(style, ['background'], {
276
289
  ...style?.background,
@@ -280,17 +293,29 @@ function BackgroundImageControls({
280
293
  source: 'file',
281
294
  title: media.title || undefined
282
295
  },
283
- backgroundPosition: !positionValue && ('auto' === sizeValue || !sizeValue) ? '50% 0' : positionValue
296
+ backgroundPosition:
297
+ /*
298
+ * A background image uploaded and set in the editor receives a default background position of '50% 0',
299
+ * when the background image size is the equivalent of "Tile".
300
+ * This is to increase the chance that the image's focus point is visible.
301
+ * This is in-editor only to assist with the user experience.
302
+ */
303
+ !positionValue && ('auto' === sizeValue || !sizeValue) ? '50% 0' : positionValue,
304
+ backgroundSize: sizeValue
284
305
  }));
306
+ setIsUploading(false);
285
307
  };
308
+
309
+ // Drag and drop callback, restricting image to one.
286
310
  const onFilesDrop = filesList => {
287
- mediaUpload({
311
+ if (filesList?.length > 1) {
312
+ onUploadError((0, _i18n.__)('Only one image can be used as a background image.'));
313
+ return;
314
+ }
315
+ getSettings().mediaUpload({
288
316
  allowedTypes: [IMAGE_BACKGROUND_TYPE],
289
317
  filesList,
290
318
  onFileChange([image]) {
291
- if ((0, _blob.isBlobURL)(image?.url)) {
292
- return;
293
- }
294
319
  onSelectMedia(image);
295
320
  },
296
321
  onError: onUploadError
@@ -305,13 +330,15 @@ function BackgroundImageControls({
305
330
  toggleButton?.focus();
306
331
  toggleButton?.click();
307
332
  };
308
- const onRemove = () => onChange((0, _object.setImmutably)(style, ['background', 'backgroundImage'], 'none'));
333
+ const onRemove = () => onChange((0, _object.setImmutably)(style, ['background'], {
334
+ backgroundImage: 'none'
335
+ }));
309
336
  const canRemove = !hasValue && hasBackgroundImageValue(inheritedValue);
310
337
  const imgLabel = title || (0, _url.getFilename)(url) || (0, _i18n.__)('Add background image');
311
338
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
312
339
  ref: replaceContainerRef,
313
340
  className: "block-editor-global-styles-background-panel__image-tools-panel-item",
314
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_mediaReplaceFlow.default, {
341
+ children: [isUploading && /*#__PURE__*/(0, _jsxRuntime.jsx)(LoadingSpinner, {}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_mediaReplaceFlow.default, {
315
342
  mediaId: id,
316
343
  mediaURL: url,
317
344
  allowedTypes: [IMAGE_BACKGROUND_TYPE],
@@ -324,23 +351,25 @@ function BackgroundImageControls({
324
351
  },
325
352
  name: /*#__PURE__*/(0, _jsxRuntime.jsx)(InspectorImagePreviewItem, {
326
353
  className: "block-editor-global-styles-background-panel__image-preview",
327
- imgUrl: (0, _themeFileUriUtils.getResolvedThemeFilePath)(url, themeFileURIs),
354
+ imgUrl: url,
328
355
  filename: title,
329
356
  label: imgLabel
330
357
  }),
331
358
  variant: "secondary",
359
+ onError: onUploadError,
332
360
  children: [canRemove && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuItem, {
333
361
  onClick: () => {
334
362
  closeAndFocus();
335
363
  onRemove();
364
+ onRemoveImage();
336
365
  },
337
366
  children: (0, _i18n.__)('Remove')
338
367
  }), hasValue && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuItem, {
339
368
  onClick: () => {
340
369
  closeAndFocus();
341
- onRemoveImage();
370
+ onResetImage();
342
371
  },
343
- children: (0, _i18n.__)('Reset ')
372
+ children: (0, _i18n.__)('Reset')
344
373
  })]
345
374
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.DropZone, {
346
375
  onFilesDrop: onFilesDrop,
@@ -352,24 +381,27 @@ function BackgroundSizeControls({
352
381
  onChange,
353
382
  style,
354
383
  inheritedValue,
355
- defaultValues,
356
- themeFileURIs
384
+ defaultValues
357
385
  }) {
358
386
  const sizeValue = style?.background?.backgroundSize || inheritedValue?.background?.backgroundSize;
359
387
  const repeatValue = style?.background?.backgroundRepeat || inheritedValue?.background?.backgroundRepeat;
360
388
  const imageValue = style?.background?.backgroundImage?.url || inheritedValue?.background?.backgroundImage?.url;
389
+ const isUploadedImage = style?.background?.backgroundImage?.id;
361
390
  const positionValue = style?.background?.backgroundPosition || inheritedValue?.background?.backgroundPosition;
362
391
  const attachmentValue = style?.background?.backgroundAttachment || inheritedValue?.background?.backgroundAttachment;
363
392
 
364
393
  /*
365
- * An `undefined` value is replaced with any supplied
366
- * default control value for the toggle group control.
367
- * An empty string is treated as `auto` - this allows a user
368
- * to select "Size" and then enter a custom value, with an
369
- * empty value being treated as `auto`.
394
+ * Set default values for uploaded images.
395
+ * The default values are passed by the consumer.
396
+ * Block-level controls may have different defaults to root-level controls.
397
+ * A falsy value is treated by default as `auto` (Tile).
370
398
  */
371
- const currentValueForToggle = sizeValue !== undefined && sizeValue !== 'cover' && sizeValue !== 'contain' || sizeValue === '' ? 'auto' : sizeValue || defaultValues?.backgroundSize;
372
-
399
+ let currentValueForToggle = !sizeValue && isUploadedImage ? defaultValues?.backgroundSize : sizeValue || 'auto';
400
+ /*
401
+ * The incoming value could be a value + unit, e.g. '20px'.
402
+ * In this case set the value to 'tile'.
403
+ */
404
+ currentValueForToggle = !['cover', 'contain', 'auto'].includes(currentValueForToggle) ? 'auto' : currentValueForToggle;
373
405
  /*
374
406
  * If the current value is `cover` and the repeat value is `undefined`, then
375
407
  * the toggle should be unchecked as the default state. Otherwise, the toggle
@@ -395,6 +427,7 @@ function BackgroundSizeControls({
395
427
  * receives a default background position of '50% 0',
396
428
  * when the toggle switches to "Tile". This is to increase the chance that
397
429
  * the image's focus point is visible.
430
+ * This is in-editor only to assist with the user experience.
398
431
  */
399
432
  if (!!style?.background?.backgroundImage?.id) {
400
433
  nextPosition = '50% 0';
@@ -420,22 +453,25 @@ function BackgroundSizeControls({
420
453
  };
421
454
  const toggleIsRepeated = () => onChange((0, _object.setImmutably)(style, ['background', 'backgroundRepeat'], repeatCheckedValue === true ? 'no-repeat' : 'repeat'));
422
455
  const toggleScrollWithPage = () => onChange((0, _object.setImmutably)(style, ['background', 'backgroundAttachment'], attachmentValue === 'fixed' ? 'scroll' : 'fixed'));
456
+
457
+ // Set a default background position for non-site-wide, uploaded images with a size of 'contain'.
458
+ const backgroundPositionValue = !positionValue && isUploadedImage && 'contain' === sizeValue ? defaultValues?.backgroundPosition : positionValue;
423
459
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
424
- spacing: 4,
460
+ spacing: 3,
425
461
  className: "single-column",
426
462
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.FocalPointPicker, {
427
- __next40pxDefaultSize: true,
428
463
  __nextHasNoMarginBottom: true,
429
464
  label: (0, _i18n.__)('Focal point'),
430
- url: (0, _themeFileUriUtils.getResolvedThemeFilePath)(imageValue, themeFileURIs),
431
- value: backgroundPositionToCoords(positionValue),
465
+ url: imageValue,
466
+ value: backgroundPositionToCoords(backgroundPositionValue),
432
467
  onChange: updateBackgroundPosition
433
468
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToggleControl, {
469
+ __nextHasNoMarginBottom: true,
434
470
  label: (0, _i18n.__)('Fixed background'),
435
471
  checked: attachmentValue === 'fixed',
436
- onChange: toggleScrollWithPage,
437
- help: (0, _i18n.__)('Whether your image should scroll with the page or stay fixed in place.')
472
+ onChange: toggleScrollWithPage
438
473
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalToggleGroupControl, {
474
+ __nextHasNoMarginBottom: true,
439
475
  size: "__unstable-large",
440
476
  label: (0, _i18n.__)('Size'),
441
477
  value: currentValueForToggle,
@@ -466,6 +502,7 @@ function BackgroundSizeControls({
466
502
  placeholder: (0, _i18n.__)('Auto'),
467
503
  disabled: currentValueForToggle !== 'auto' || currentValueForToggle === undefined
468
504
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToggleControl, {
505
+ __nextHasNoMarginBottom: true,
469
506
  label: (0, _i18n.__)('Repeat'),
470
507
  checked: repeatCheckedValue,
471
508
  onChange: toggleIsRepeated,
@@ -489,7 +526,7 @@ function BackgroundToolsPanel({
489
526
  };
490
527
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalVStack, {
491
528
  as: _components.__experimentalToolsPanel,
492
- spacing: 4,
529
+ spacing: 2,
493
530
  label: headerLabel,
494
531
  resetAll: resetAll,
495
532
  panelId: panelId,
@@ -506,9 +543,42 @@ function BackgroundPanel({
506
543
  panelId,
507
544
  defaultControls = DEFAULT_CONTROLS,
508
545
  defaultValues = {},
509
- headerLabel = (0, _i18n.__)('Background image'),
510
- themeFileURIs
546
+ headerLabel = (0, _i18n.__)('Background image')
511
547
  }) {
548
+ /*
549
+ * Resolve any inherited "ref" pointers.
550
+ * Should the block editor need resolved, inherited values
551
+ * across all controls, this could be abstracted into a hook,
552
+ * e.g., useResolveGlobalStyle
553
+ */
554
+ const {
555
+ globalStyles,
556
+ _links
557
+ } = (0, _data.useSelect)(select => {
558
+ const {
559
+ getSettings
560
+ } = select(_store.store);
561
+ const _settings = getSettings();
562
+ return {
563
+ globalStyles: _settings[_privateKeys.globalStylesDataKey],
564
+ _links: _settings[_privateKeys.globalStylesLinksDataKey]
565
+ };
566
+ }, []);
567
+ const resolvedInheritedValue = (0, _element.useMemo)(() => {
568
+ const resolvedValues = {
569
+ background: {}
570
+ };
571
+ if (!inheritedValue?.background) {
572
+ return inheritedValue;
573
+ }
574
+ Object.entries(inheritedValue?.background).forEach(([key, backgroundValue]) => {
575
+ resolvedValues.background[key] = (0, _utils.getResolvedValue)(backgroundValue, {
576
+ styles: globalStyles,
577
+ _links
578
+ });
579
+ });
580
+ return resolvedValues;
581
+ }, [globalStyles, _links, inheritedValue]);
512
582
  const resetAllFilter = (0, _element.useCallback)(previousValue => {
513
583
  return {
514
584
  ...previousValue,
@@ -520,63 +590,69 @@ function BackgroundPanel({
520
590
  title,
521
591
  url
522
592
  } = value?.background?.backgroundImage || {
523
- ...inheritedValue?.background?.backgroundImage
593
+ ...resolvedInheritedValue?.background?.backgroundImage
524
594
  };
525
- const hasImageValue = hasBackgroundImageValue(value) || hasBackgroundImageValue(inheritedValue);
526
- const shouldShowBackgroundImageControls = hasImageValue && (settings?.background?.backgroundSize || settings?.background?.backgroundPosition || settings?.background?.backgroundRepeat);
595
+ const hasImageValue = hasBackgroundImageValue(value) || hasBackgroundImageValue(resolvedInheritedValue);
596
+ const imageValue = value?.background?.backgroundImage || inheritedValue?.background?.backgroundImage;
597
+ const shouldShowBackgroundImageControls = hasImageValue && 'none' !== imageValue && (settings?.background?.backgroundSize || settings?.background?.backgroundPosition || settings?.background?.backgroundRepeat);
527
598
  const [isDropDownOpen, setIsDropDownOpen] = (0, _element.useState)(false);
528
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Wrapper, {
599
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Wrapper, {
529
600
  resetAllFilter: resetAllFilter,
530
601
  value: value,
531
602
  onChange: onChange,
532
603
  panelId: panelId,
533
604
  headerLabel: headerLabel,
534
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
605
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
535
606
  className: (0, _clsx.default)('block-editor-global-styles-background-panel__inspector-media-replace-container', {
536
607
  'is-open': isDropDownOpen
537
608
  }),
538
- children: shouldShowBackgroundImageControls ? /*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundControlsPanel, {
539
- label: title,
540
- filename: title,
541
- url: (0, _themeFileUriUtils.getResolvedThemeFilePath)(url, themeFileURIs),
542
- onToggle: setIsDropDownOpen,
543
- hasImageValue: hasImageValue,
544
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
545
- spacing: 3,
546
- className: "single-column",
547
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundImageControls, {
548
- onChange: onChange,
549
- style: value,
550
- inheritedValue: inheritedValue,
551
- themeFileURIs: themeFileURIs,
552
- displayInPanel: true,
553
- onRemoveImage: () => {
554
- setIsDropDownOpen(false);
555
- resetBackground();
556
- }
557
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundSizeControls, {
558
- onChange: onChange,
559
- panelId: panelId,
560
- style: value,
561
- defaultValues: defaultValues,
562
- inheritedValue: inheritedValue,
563
- themeFileURIs: themeFileURIs
564
- })]
609
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalToolsPanelItem, {
610
+ hasValue: () => !!value?.background,
611
+ label: (0, _i18n.__)('Image'),
612
+ onDeselect: resetBackground,
613
+ isShownByDefault: defaultControls.backgroundImage,
614
+ panelId: panelId,
615
+ children: shouldShowBackgroundImageControls ? /*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundControlsPanel, {
616
+ label: title,
617
+ filename: title,
618
+ url: url,
619
+ onToggle: setIsDropDownOpen,
620
+ hasImageValue: hasImageValue,
621
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
622
+ spacing: 3,
623
+ className: "single-column",
624
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundImageControls, {
625
+ onChange: onChange,
626
+ style: value,
627
+ inheritedValue: resolvedInheritedValue,
628
+ displayInPanel: true,
629
+ onResetImage: () => {
630
+ setIsDropDownOpen(false);
631
+ resetBackground();
632
+ },
633
+ onRemoveImage: () => setIsDropDownOpen(false),
634
+ defaultValues: defaultValues
635
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundSizeControls, {
636
+ onChange: onChange,
637
+ panelId: panelId,
638
+ style: value,
639
+ defaultValues: defaultValues,
640
+ inheritedValue: resolvedInheritedValue
641
+ })]
642
+ })
643
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundImageControls, {
644
+ onChange: onChange,
645
+ style: value,
646
+ inheritedValue: resolvedInheritedValue,
647
+ defaultValues: defaultValues,
648
+ onResetImage: () => {
649
+ setIsDropDownOpen(false);
650
+ resetBackground();
651
+ },
652
+ onRemoveImage: () => setIsDropDownOpen(false)
565
653
  })
566
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundImageControls, {
567
- onChange: onChange,
568
- style: value,
569
- inheritedValue: inheritedValue,
570
- themeFileURIs: themeFileURIs
571
654
  })
572
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalToolsPanelItem, {
573
- hasValue: () => hasImageValue,
574
- label: (0, _i18n.__)('Image'),
575
- onDeselect: resetBackground,
576
- isShownByDefault: defaultControls.backgroundImage,
577
- panelId: panelId,
578
- className: "block-editor-global-styles-background-panel__hidden-tools-panel-item"
579
- })]
655
+ })
580
656
  });
581
657
  }
582
658
  //# sourceMappingURL=background-panel.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_clsx","_interopRequireDefault","require","_components","_i18n","_notices","_url","_element","_data","_dom","_blob","_utils","_object","_mediaReplaceFlow","_store","_themeFileUriUtils","_jsxRuntime","IMAGE_BACKGROUND_TYPE","DEFAULT_CONTROLS","backgroundImage","BACKGROUND_POPOVER_PROPS","placement","offset","shift","className","noop","useHasBackgroundPanel","settings","Platform","OS","background","hasBackgroundSizeValue","style","backgroundPosition","undefined","backgroundSize","hasBackgroundImageValue","id","url","backgroundSizeHelpText","value","__","coordsToBackgroundPosition","isNaN","x","y","exports","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreviewItem","as","imgUrl","toggleProps","filename","label","onToggleCallback","useEffect","isOpen","jsx","__experimentalItemGroup","children","jsxs","__experimentalHStack","justify","FlexItem","flexGrow","__experimentalTruncate","numberOfLines","VisuallyHidden","sprintf","BackgroundControlsPanel","onToggle","hasImageValue","imgLabel","getFilename","Dropdown","popoverProps","renderToggle","onClick","renderContent","__experimentalDropdownContentWrapper","paddingSize","BackgroundImageControls","onChange","inheritedValue","onRemoveImage","displayInPanel","themeFileURIs","mediaUpload","useSelect","select","blockEditorStore","getSettings","title","replaceContainerRef","useRef","createErrorNotice","useDispatch","noticesStore","onUploadError","message","type","resetBackgroundImage","setImmutably","onSelectMedia","media","isBlobURL","media_type","sizeValue","positionValue","source","onFilesDrop","filesList","allowedTypes","onFileChange","image","onError","hasValue","closeAndFocus","toggleButton","focus","tabbable","find","current","click","onRemove","canRemove","ref","default","mediaId","mediaURL","accept","onSelect","clsx","name","getResolvedThemeFilePath","variant","MenuItem","DropZone","BackgroundSizeControls","defaultValues","repeatValue","backgroundRepeat","imageValue","attachmentValue","backgroundAttachment","currentValueForToggle","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","toggleScrollWithPage","__experimentalVStack","spacing","FocalPointPicker","__next40pxDefaultSize","__nextHasNoMarginBottom","ToggleControl","checked","help","__experimentalToggleGroupControl","size","isBlock","__experimentalToggleGroupControlOption","_x","__experimentalUnitControl","__unstableInputWidth","min","placeholder","disabled","BackgroundToolsPanel","resetAllFilter","panelId","headerLabel","dropdownMenuProps","useToolsPanelDropdownMenuProps","resetAll","updatedValue","ToolsPanel","BackgroundPanel","Wrapper","defaultControls","useCallback","previousValue","resetBackground","shouldShowBackgroundImageControls","isDropDownOpen","setIsDropDownOpen","useState","__experimentalToolsPanelItem","onDeselect","isShownByDefault"],"sources":["@wordpress/block-editor/src/components/global-styles/background-panel.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tToggleControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalVStack as VStack,\n\tDropZone,\n\tFlexItem,\n\tFocalPointPicker,\n\tMenuItem,\n\tVisuallyHidden,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tDropdown,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { getFilename } from '@wordpress/url';\nimport {\n\tuseCallback,\n\tPlatform,\n\tuseRef,\n\tuseState,\n\tuseEffect,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { focus } from '@wordpress/dom';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport MediaReplaceFlow from '../media-replace-flow';\nimport { store as blockEditorStore } from '../../store';\nimport { getResolvedThemeFilePath } from './theme-file-uri-utils';\n\nconst IMAGE_BACKGROUND_TYPE = 'image';\nconst DEFAULT_CONTROLS = {\n\tbackgroundImage: true,\n};\nconst BACKGROUND_POPOVER_PROPS = {\n\tplacement: 'left-start',\n\toffset: 36,\n\tshift: true,\n\tclassName: 'block-editor-global-styles-background-panel__popover',\n};\nconst noop = () => {};\n\n/**\n * Checks site settings to see if the background panel may be used.\n * `settings.background.backgroundSize` exists also,\n * but can only be used if settings?.background?.backgroundImage is `true`.\n *\n * @param {Object} settings Site settings\n * @return {boolean} Whether site settings has activated background panel.\n */\nexport function useHasBackgroundPanel( settings ) {\n\treturn Platform.OS === 'web' && settings?.background?.backgroundImage;\n}\n\n/**\n * Checks if there is a current value in the background size block support\n * attributes. Background size values include background size as well\n * as background position.\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background size value set.\n */\nexport function hasBackgroundSizeValue( style ) {\n\treturn (\n\t\tstyle?.background?.backgroundPosition !== undefined ||\n\t\tstyle?.background?.backgroundSize !== undefined\n\t);\n}\n\n/**\n * Checks if there is a current value in the background image block support\n * attributes.\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background image value set.\n */\nexport function hasBackgroundImageValue( style ) {\n\treturn (\n\t\t!! style?.background?.backgroundImage?.id ||\n\t\t// Supports url() string values in theme.json.\n\t\t'string' === typeof style?.background?.backgroundImage ||\n\t\t!! style?.background?.backgroundImage?.url\n\t);\n}\n\n/**\n * Get the help text for the background size control.\n *\n * @param {string} value backgroundSize value.\n * @return {string} Translated help text.\n */\nfunction backgroundSizeHelpText( value ) {\n\tif ( value === 'cover' || value === undefined ) {\n\t\treturn __( 'Image covers the space evenly.' );\n\t}\n\tif ( value === 'contain' ) {\n\t\treturn __( 'Image is contained without distortion.' );\n\t}\n\treturn __( 'Image has a fixed width.' );\n}\n\n/**\n * Converts decimal x and y coords from FocalPointPicker to percentage-based values\n * to use as backgroundPosition value.\n *\n * @param {{x?:number, y?:number}} value FocalPointPicker coords.\n * @return {string} \t\t\t\t backgroundPosition value.\n */\nexport const coordsToBackgroundPosition = ( value ) => {\n\tif ( ! value || ( isNaN( value.x ) && isNaN( value.y ) ) ) {\n\t\treturn undefined;\n\t}\n\n\tconst x = isNaN( value.x ) ? 0.5 : value.x;\n\tconst y = isNaN( value.y ) ? 0.5 : value.y;\n\n\treturn `${ x * 100 }% ${ y * 100 }%`;\n};\n\n/**\n * Converts backgroundPosition value to x and y coords for FocalPointPicker.\n *\n * @param {string} value backgroundPosition value.\n * @return {{x?:number, y?:number}} FocalPointPicker coords.\n */\nexport const backgroundPositionToCoords = ( value ) => {\n\tif ( ! value ) {\n\t\treturn { x: undefined, y: undefined };\n\t}\n\n\tlet [ x, y ] = value.split( ' ' ).map( ( v ) => parseFloat( v ) / 100 );\n\tx = isNaN( x ) ? undefined : x;\n\ty = isNaN( y ) ? x : y;\n\n\treturn { x, y };\n};\n\nfunction InspectorImagePreviewItem( {\n\tas = 'span',\n\timgUrl,\n\ttoggleProps = {},\n\tfilename,\n\tlabel,\n\tclassName,\n\tonToggleCallback = noop,\n} ) {\n\tuseEffect( () => {\n\t\tif ( typeof toggleProps?.isOpen !== 'undefined' ) {\n\t\t\tonToggleCallback( toggleProps?.isOpen );\n\t\t}\n\t}, [ toggleProps?.isOpen, onToggleCallback ] );\n\treturn (\n\t\t<ItemGroup as={ as } className={ className } { ...toggleProps }>\n\t\t\t<HStack\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t\tas=\"span\"\n\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-preview-inner\"\n\t\t\t>\n\t\t\t\t{ imgUrl && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator-wrapper\"\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\tbackgroundImage: `url(${ imgUrl })`,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<FlexItem as=\"span\" style={ imgUrl ? {} : { flexGrow: 1 } }>\n\t\t\t\t\t<Truncate\n\t\t\t\t\t\tnumberOfLines={ 1 }\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-media-replace-title\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Truncate>\n\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t{ imgUrl\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: file name */\n\t\t\t\t\t\t\t\t\t__( 'Background image: %s' ),\n\t\t\t\t\t\t\t\t\tfilename || label\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __( 'No background image selected' ) }\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t</ItemGroup>\n\t);\n}\n\nfunction BackgroundControlsPanel( {\n\tlabel,\n\tfilename,\n\turl: imgUrl,\n\tchildren,\n\tonToggle: onToggleCallback = noop,\n\thasImageValue,\n} ) {\n\tif ( ! hasImageValue ) {\n\t\treturn;\n\t}\n\n\tconst imgLabel =\n\t\tlabel || getFilename( imgUrl ) || __( 'Add background image' );\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ BACKGROUND_POPOVER_PROPS }\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst toggleProps = {\n\t\t\t\t\tonClick: onToggle,\n\t\t\t\t\tclassName:\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__dropdown-toggle',\n\t\t\t\t\t'aria-expanded': isOpen,\n\t\t\t\t\t'aria-label': __(\n\t\t\t\t\t\t'Background size, position and repeat options.'\n\t\t\t\t\t),\n\t\t\t\t\tisOpen,\n\t\t\t\t};\n\t\t\t\treturn (\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\timgUrl={ imgUrl }\n\t\t\t\t\t\tfilename={ filename }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t\ttoggleProps={ toggleProps }\n\t\t\t\t\t\tas=\"button\"\n\t\t\t\t\t\tonToggleCallback={ onToggleCallback }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper\n\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__dropdown-content-wrapper\"\n\t\t\t\t\tpaddingSize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction BackgroundImageControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tonRemoveImage = noop,\n\tdisplayInPanel,\n\tthemeFileURIs,\n} ) {\n\tconst mediaUpload = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings().mediaUpload,\n\t\t[]\n\t);\n\n\tconst { id, title, url } = style?.background?.backgroundImage || {\n\t\t...inheritedValue?.background?.backgroundImage,\n\t};\n\tconst replaceContainerRef = useRef();\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t};\n\n\tconst resetBackgroundImage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundImage' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\n\tconst onSelectMedia = ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tresetBackgroundImage();\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// For media selections originated from a file upload.\n\t\tif (\n\t\t\t( media.media_type &&\n\t\t\t\tmedia.media_type !== IMAGE_BACKGROUND_TYPE ) ||\n\t\t\t( ! media.media_type &&\n\t\t\t\tmedia.type &&\n\t\t\t\tmedia.type !== IMAGE_BACKGROUND_TYPE )\n\t\t) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only images can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst sizeValue = style?.background?.backgroundSize;\n\t\tconst positionValue = style?.background?.backgroundPosition;\n\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundImage: {\n\t\t\t\t\turl: media.url,\n\t\t\t\t\tid: media.id,\n\t\t\t\t\tsource: 'file',\n\t\t\t\t\ttitle: media.title || undefined,\n\t\t\t\t},\n\t\t\t\tbackgroundPosition:\n\t\t\t\t\t! positionValue && ( 'auto' === sizeValue || ! sizeValue )\n\t\t\t\t\t\t? '50% 0'\n\t\t\t\t\t\t: positionValue,\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst onFilesDrop = ( filesList ) => {\n\t\tmediaUpload( {\n\t\t\tallowedTypes: [ IMAGE_BACKGROUND_TYPE ],\n\t\t\tfilesList,\n\t\t\tonFileChange( [ image ] ) {\n\t\t\t\tif ( isBlobURL( image?.url ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tonSelectMedia( image );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst hasValue = hasBackgroundImageValue( style );\n\n\tconst closeAndFocus = () => {\n\t\tconst [ toggleButton ] = focus.tabbable.find(\n\t\t\treplaceContainerRef.current\n\t\t);\n\t\t// Focus the toggle button and close the dropdown menu.\n\t\t// This ensures similar behaviour as to selecting an image, where the dropdown is\n\t\t// closed and focus is redirected to the dropdown toggle button.\n\t\ttoggleButton?.focus();\n\t\ttoggleButton?.click();\n\t};\n\n\tconst onRemove = () =>\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background', 'backgroundImage' ], 'none' )\n\t\t);\n\tconst canRemove = ! hasValue && hasBackgroundImageValue( inheritedValue );\n\tconst imgLabel =\n\t\ttitle || getFilename( url ) || __( 'Add background image' );\n\n\treturn (\n\t\t<div\n\t\t\tref={ replaceContainerRef }\n\t\t\tclassName=\"block-editor-global-styles-background-panel__image-tools-panel-item\"\n\t\t>\n\t\t\t<MediaReplaceFlow\n\t\t\t\tmediaId={ id }\n\t\t\t\tmediaURL={ url }\n\t\t\t\tallowedTypes={ [ IMAGE_BACKGROUND_TYPE ] }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\tpopoverProps={ {\n\t\t\t\t\tclassName: clsx( {\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__media-replace-popover':\n\t\t\t\t\t\t\tdisplayInPanel,\n\t\t\t\t\t} ),\n\t\t\t\t} }\n\t\t\t\tname={\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__image-preview\"\n\t\t\t\t\t\timgUrl={ getResolvedThemeFilePath(\n\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\tthemeFileURIs\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tvariant=\"secondary\"\n\t\t\t>\n\t\t\t\t{ canRemove && (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\tonRemove();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) }\n\t\t\t\t{ hasValue && (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\tonRemoveImage();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Reset ' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) }\n\t\t\t</MediaReplaceFlow>\n\t\t\t<DropZone\n\t\t\t\tonFilesDrop={ onFilesDrop }\n\t\t\t\tlabel={ __( 'Drop to upload' ) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BackgroundSizeControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tdefaultValues,\n\tthemeFileURIs,\n} ) {\n\tconst sizeValue =\n\t\tstyle?.background?.backgroundSize ||\n\t\tinheritedValue?.background?.backgroundSize;\n\tconst repeatValue =\n\t\tstyle?.background?.backgroundRepeat ||\n\t\tinheritedValue?.background?.backgroundRepeat;\n\tconst imageValue =\n\t\tstyle?.background?.backgroundImage?.url ||\n\t\tinheritedValue?.background?.backgroundImage?.url;\n\tconst positionValue =\n\t\tstyle?.background?.backgroundPosition ||\n\t\tinheritedValue?.background?.backgroundPosition;\n\tconst attachmentValue =\n\t\tstyle?.background?.backgroundAttachment ||\n\t\tinheritedValue?.background?.backgroundAttachment;\n\n\t/*\n\t * An `undefined` value is replaced with any supplied\n\t * default control value for the toggle group control.\n\t * An empty string is treated as `auto` - this allows a user\n\t * to select \"Size\" and then enter a custom value, with an\n\t * empty value being treated as `auto`.\n\t */\n\tconst currentValueForToggle =\n\t\t( sizeValue !== undefined &&\n\t\t\tsizeValue !== 'cover' &&\n\t\t\tsizeValue !== 'contain' ) ||\n\t\tsizeValue === ''\n\t\t\t? 'auto'\n\t\t\t: sizeValue || defaultValues?.backgroundSize;\n\n\t/*\n\t * If the current value is `cover` and the repeat value is `undefined`, then\n\t * the toggle should be unchecked as the default state. Otherwise, the toggle\n\t * should reflect the current repeat value.\n\t */\n\tconst repeatCheckedValue = ! (\n\t\trepeatValue === 'no-repeat' ||\n\t\t( currentValueForToggle === 'cover' && repeatValue === undefined )\n\t);\n\n\tconst updateBackgroundSize = ( next ) => {\n\t\t// When switching to 'contain' toggle the repeat off.\n\t\tlet nextRepeat = repeatValue;\n\t\tlet nextPosition = positionValue;\n\n\t\tif ( next === 'contain' ) {\n\t\t\tnextRepeat = 'no-repeat';\n\t\t\tnextPosition = undefined;\n\t\t}\n\n\t\tif ( next === 'cover' ) {\n\t\t\tnextRepeat = undefined;\n\t\t\tnextPosition = undefined;\n\t\t}\n\n\t\tif (\n\t\t\t( currentValueForToggle === 'cover' ||\n\t\t\t\tcurrentValueForToggle === 'contain' ) &&\n\t\t\tnext === 'auto'\n\t\t) {\n\t\t\tnextRepeat = undefined;\n\t\t\t/*\n\t\t\t * A background image uploaded and set in the editor (an image with a record id),\n\t\t\t * receives a default background position of '50% 0',\n\t\t\t * when the toggle switches to \"Tile\". This is to increase the chance that\n\t\t\t * the image's focus point is visible.\n\t\t\t */\n\t\t\tif ( !! style?.background?.backgroundImage?.id ) {\n\t\t\t\tnextPosition = '50% 0';\n\t\t\t}\n\t\t}\n\n\t\t/*\n\t\t * Next will be null when the input is cleared,\n\t\t * in which case the value should be 'auto'.\n\t\t */\n\t\tif ( ! next && currentValueForToggle === 'auto' ) {\n\t\t\tnext = 'auto';\n\t\t}\n\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundPosition: nextPosition,\n\t\t\t\tbackgroundRepeat: nextRepeat,\n\t\t\t\tbackgroundSize: next,\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst updateBackgroundPosition = ( next ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundPosition' ],\n\t\t\t\tcoordsToBackgroundPosition( next )\n\t\t\t)\n\t\t);\n\t};\n\n\tconst toggleIsRepeated = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundRepeat' ],\n\t\t\t\trepeatCheckedValue === true ? 'no-repeat' : 'repeat'\n\t\t\t)\n\t\t);\n\n\tconst toggleScrollWithPage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundAttachment' ],\n\t\t\t\tattachmentValue === 'fixed' ? 'scroll' : 'fixed'\n\t\t\t)\n\t\t);\n\n\treturn (\n\t\t<VStack spacing={ 4 } className=\"single-column\">\n\t\t\t<FocalPointPicker\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Focal point' ) }\n\t\t\t\turl={ getResolvedThemeFilePath( imageValue, themeFileURIs ) }\n\t\t\t\tvalue={ backgroundPositionToCoords( positionValue ) }\n\t\t\t\tonChange={ updateBackgroundPosition }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\tlabel={ __( 'Fixed background' ) }\n\t\t\t\tchecked={ attachmentValue === 'fixed' }\n\t\t\t\tonChange={ toggleScrollWithPage }\n\t\t\t\thelp={ __(\n\t\t\t\t\t'Whether your image should scroll with the page or stay fixed in place.'\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t<ToggleGroupControl\n\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\tlabel={ __( 'Size' ) }\n\t\t\t\tvalue={ currentValueForToggle }\n\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\tisBlock\n\t\t\t\thelp={ backgroundSizeHelpText(\n\t\t\t\t\tsizeValue || defaultValues?.backgroundSize\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"cover\"\n\t\t\t\t\tvalue=\"cover\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Cover',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"contain\"\n\t\t\t\t\tvalue=\"contain\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Contain',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"tile\"\n\t\t\t\t\tvalue=\"auto\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Tile',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</ToggleGroupControl>\n\t\t\t<HStack justify=\"flex-start\" spacing={ 2 } as=\"span\">\n\t\t\t\t<UnitControl\n\t\t\t\t\taria-label={ __( 'Background image width' ) }\n\t\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\t\tvalue={ sizeValue }\n\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t__unstableInputWidth=\"100px\"\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tplaceholder={ __( 'Auto' ) }\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\tcurrentValueForToggle !== 'auto' ||\n\t\t\t\t\t\tcurrentValueForToggle === undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ __( 'Repeat' ) }\n\t\t\t\t\tchecked={ repeatCheckedValue }\n\t\t\t\t\tonChange={ toggleIsRepeated }\n\t\t\t\t\tdisabled={ currentValueForToggle === 'cover' }\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nfunction BackgroundToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n\theaderLabel,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<VStack\n\t\t\tas={ ToolsPanel }\n\t\t\tspacing={ 4 }\n\t\t\tlabel={ headerLabel }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t{ children }\n\t\t</VStack>\n\t);\n}\n\nexport default function BackgroundPanel( {\n\tas: Wrapper = BackgroundToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tdefaultValues = {},\n\theaderLabel = __( 'Background image' ),\n\tthemeFileURIs,\n} ) {\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tbackground: {},\n\t\t};\n\t}, [] );\n\n\tconst resetBackground = () =>\n\t\tonChange( setImmutably( value, [ 'background' ], {} ) );\n\n\tconst { title, url } = value?.background?.backgroundImage || {\n\t\t...inheritedValue?.background?.backgroundImage,\n\t};\n\tconst hasImageValue =\n\t\thasBackgroundImageValue( value ) ||\n\t\thasBackgroundImageValue( inheritedValue );\n\n\tconst shouldShowBackgroundImageControls =\n\t\thasImageValue &&\n\t\t( settings?.background?.backgroundSize ||\n\t\t\tsettings?.background?.backgroundPosition ||\n\t\t\tsettings?.background?.backgroundRepeat );\n\n\tconst [ isDropDownOpen, setIsDropDownOpen ] = useState( false );\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t\theaderLabel={ headerLabel }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'block-editor-global-styles-background-panel__inspector-media-replace-container',\n\t\t\t\t\t{\n\t\t\t\t\t\t'is-open': isDropDownOpen,\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t{ shouldShowBackgroundImageControls ? (\n\t\t\t\t\t<BackgroundControlsPanel\n\t\t\t\t\t\tlabel={ title }\n\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\turl={ getResolvedThemeFilePath( url, themeFileURIs ) }\n\t\t\t\t\t\tonToggle={ setIsDropDownOpen }\n\t\t\t\t\t\thasImageValue={ hasImageValue }\n\t\t\t\t\t>\n\t\t\t\t\t\t<VStack spacing={ 3 } className=\"single-column\">\n\t\t\t\t\t\t\t<BackgroundImageControls\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t\t\t\t\t\tthemeFileURIs={ themeFileURIs }\n\t\t\t\t\t\t\t\tdisplayInPanel\n\t\t\t\t\t\t\t\tonRemoveImage={ () => {\n\t\t\t\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<BackgroundSizeControls\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t\t\t\t\t\tthemeFileURIs={ themeFileURIs }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t</BackgroundControlsPanel>\n\t\t\t\t) : (\n\t\t\t\t\t<BackgroundImageControls\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t\t\t\tthemeFileURIs={ themeFileURIs }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\n\t\t\t{ /* Dummy ToolsPanel items, so we can control what's in the dropdown popover */ }\n\t\t\t<ToolsPanelItem\n\t\t\t\thasValue={ () => hasImageValue }\n\t\t\t\tlabel={ __( 'Image' ) }\n\t\t\t\tonDeselect={ resetBackground }\n\t\t\t\tisShownByDefault={ defaultControls.backgroundImage }\n\t\t\t\tpanelId={ panelId }\n\t\t\t\tclassName=\"block-editor-global-styles-background-panel__hidden-tools-panel-item\"\n\t\t\t/>\n\t\t</Wrapper>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_clsx","_interopRequireDefault","require","_components","_i18n","_notices","_url","_element","_data","_dom","_blob","_utils","_object","_mediaReplaceFlow","_store","_privateKeys","_jsxRuntime","IMAGE_BACKGROUND_TYPE","DEFAULT_CONTROLS","backgroundImage","BACKGROUND_POPOVER_PROPS","placement","offset","shift","className","noop","useHasBackgroundPanel","settings","Platform","OS","background","hasBackgroundSizeValue","style","backgroundPosition","undefined","backgroundSize","hasBackgroundImageValue","id","url","backgroundSizeHelpText","value","__","coordsToBackgroundPosition","isNaN","x","y","exports","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreviewItem","as","imgUrl","toggleProps","filename","label","onToggleCallback","useEffect","isOpen","jsx","__experimentalItemGroup","children","jsxs","__experimentalHStack","justify","FlexItem","flexGrow","__experimentalTruncate","numberOfLines","VisuallyHidden","sprintf","BackgroundControlsPanel","onToggle","hasImageValue","imgLabel","getFilename","Dropdown","popoverProps","renderToggle","onClick","renderContent","__experimentalDropdownContentWrapper","paddingSize","LoadingSpinner","Placeholder","Spinner","BackgroundImageControls","onChange","inheritedValue","onRemoveImage","onResetImage","displayInPanel","defaultValues","isUploading","setIsUploading","useState","getSettings","useSelect","blockEditorStore","title","replaceContainerRef","useRef","createErrorNotice","useDispatch","noticesStore","onUploadError","message","type","resetBackgroundImage","setImmutably","onSelectMedia","media","isBlobURL","media_type","sizeValue","positionValue","source","onFilesDrop","filesList","length","mediaUpload","allowedTypes","onFileChange","image","onError","hasValue","closeAndFocus","toggleButton","focus","tabbable","find","current","click","onRemove","canRemove","ref","default","mediaId","mediaURL","accept","onSelect","clsx","name","variant","MenuItem","DropZone","BackgroundSizeControls","repeatValue","backgroundRepeat","imageValue","isUploadedImage","attachmentValue","backgroundAttachment","currentValueForToggle","includes","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","toggleScrollWithPage","backgroundPositionValue","__experimentalVStack","spacing","FocalPointPicker","__nextHasNoMarginBottom","ToggleControl","checked","__experimentalToggleGroupControl","size","isBlock","help","__experimentalToggleGroupControlOption","_x","__experimentalUnitControl","__unstableInputWidth","min","placeholder","disabled","BackgroundToolsPanel","resetAllFilter","panelId","headerLabel","dropdownMenuProps","useToolsPanelDropdownMenuProps","resetAll","updatedValue","ToolsPanel","BackgroundPanel","Wrapper","defaultControls","globalStyles","_links","select","_settings","globalStylesDataKey","globalStylesLinksDataKey","resolvedInheritedValue","useMemo","resolvedValues","Object","entries","forEach","key","backgroundValue","getResolvedValue","styles","useCallback","previousValue","resetBackground","shouldShowBackgroundImageControls","isDropDownOpen","setIsDropDownOpen","__experimentalToolsPanelItem","onDeselect","isShownByDefault"],"sources":["@wordpress/block-editor/src/components/global-styles/background-panel.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tToggleControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalVStack as VStack,\n\tDropZone,\n\tFlexItem,\n\tFocalPointPicker,\n\tMenuItem,\n\tVisuallyHidden,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tDropdown,\n\tPlaceholder,\n\tSpinner,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { getFilename } from '@wordpress/url';\nimport {\n\tuseCallback,\n\tPlatform,\n\tuseRef,\n\tuseState,\n\tuseEffect,\n\tuseMemo,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { focus } from '@wordpress/dom';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps, getResolvedValue } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport MediaReplaceFlow from '../media-replace-flow';\nimport { store as blockEditorStore } from '../../store';\n\nimport {\n\tglobalStylesDataKey,\n\tglobalStylesLinksDataKey,\n} from '../../store/private-keys';\n\nconst IMAGE_BACKGROUND_TYPE = 'image';\nconst DEFAULT_CONTROLS = {\n\tbackgroundImage: true,\n};\nconst BACKGROUND_POPOVER_PROPS = {\n\tplacement: 'left-start',\n\toffset: 36,\n\tshift: true,\n\tclassName: 'block-editor-global-styles-background-panel__popover',\n};\nconst noop = () => {};\n\n/**\n * Checks site settings to see if the background panel may be used.\n * `settings.background.backgroundSize` exists also,\n * but can only be used if settings?.background?.backgroundImage is `true`.\n *\n * @param {Object} settings Site settings\n * @return {boolean} Whether site settings has activated background panel.\n */\nexport function useHasBackgroundPanel( settings ) {\n\treturn Platform.OS === 'web' && settings?.background?.backgroundImage;\n}\n\n/**\n * Checks if there is a current value in the background size block support\n * attributes. Background size values include background size as well\n * as background position.\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background size value set.\n */\nexport function hasBackgroundSizeValue( style ) {\n\treturn (\n\t\tstyle?.background?.backgroundPosition !== undefined ||\n\t\tstyle?.background?.backgroundSize !== undefined\n\t);\n}\n\n/**\n * Checks if there is a current value in the background image block support\n * attributes.\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background image value set.\n */\nexport function hasBackgroundImageValue( style ) {\n\treturn (\n\t\t!! style?.background?.backgroundImage?.id ||\n\t\t// Supports url() string values in theme.json.\n\t\t'string' === typeof style?.background?.backgroundImage ||\n\t\t!! style?.background?.backgroundImage?.url\n\t);\n}\n\n/**\n * Get the help text for the background size control.\n *\n * @param {string} value backgroundSize value.\n * @return {string} Translated help text.\n */\nfunction backgroundSizeHelpText( value ) {\n\tif ( value === 'cover' || value === undefined ) {\n\t\treturn __( 'Image covers the space evenly.' );\n\t}\n\tif ( value === 'contain' ) {\n\t\treturn __( 'Image is contained without distortion.' );\n\t}\n\treturn __( 'Image has a fixed width.' );\n}\n\n/**\n * Converts decimal x and y coords from FocalPointPicker to percentage-based values\n * to use as backgroundPosition value.\n *\n * @param {{x?:number, y?:number}} value FocalPointPicker coords.\n * @return {string} \t\t\t\t backgroundPosition value.\n */\nexport const coordsToBackgroundPosition = ( value ) => {\n\tif ( ! value || ( isNaN( value.x ) && isNaN( value.y ) ) ) {\n\t\treturn undefined;\n\t}\n\n\tconst x = isNaN( value.x ) ? 0.5 : value.x;\n\tconst y = isNaN( value.y ) ? 0.5 : value.y;\n\n\treturn `${ x * 100 }% ${ y * 100 }%`;\n};\n\n/**\n * Converts backgroundPosition value to x and y coords for FocalPointPicker.\n *\n * @param {string} value backgroundPosition value.\n * @return {{x?:number, y?:number}} FocalPointPicker coords.\n */\nexport const backgroundPositionToCoords = ( value ) => {\n\tif ( ! value ) {\n\t\treturn { x: undefined, y: undefined };\n\t}\n\n\tlet [ x, y ] = value.split( ' ' ).map( ( v ) => parseFloat( v ) / 100 );\n\tx = isNaN( x ) ? undefined : x;\n\ty = isNaN( y ) ? x : y;\n\n\treturn { x, y };\n};\n\nfunction InspectorImagePreviewItem( {\n\tas = 'span',\n\timgUrl,\n\ttoggleProps = {},\n\tfilename,\n\tlabel,\n\tclassName,\n\tonToggleCallback = noop,\n} ) {\n\tuseEffect( () => {\n\t\tif ( typeof toggleProps?.isOpen !== 'undefined' ) {\n\t\t\tonToggleCallback( toggleProps?.isOpen );\n\t\t}\n\t}, [ toggleProps?.isOpen, onToggleCallback ] );\n\treturn (\n\t\t<ItemGroup as={ as } className={ className } { ...toggleProps }>\n\t\t\t<HStack\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t\tas=\"span\"\n\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-preview-inner\"\n\t\t\t>\n\t\t\t\t{ imgUrl && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator-wrapper\"\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\tbackgroundImage: `url(${ imgUrl })`,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<FlexItem as=\"span\" style={ imgUrl ? {} : { flexGrow: 1 } }>\n\t\t\t\t\t<Truncate\n\t\t\t\t\t\tnumberOfLines={ 1 }\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-media-replace-title\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Truncate>\n\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t{ imgUrl\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: file name */\n\t\t\t\t\t\t\t\t\t__( 'Background image: %s' ),\n\t\t\t\t\t\t\t\t\tfilename || label\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __( 'No background image selected' ) }\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t</ItemGroup>\n\t);\n}\n\nfunction BackgroundControlsPanel( {\n\tlabel,\n\tfilename,\n\turl: imgUrl,\n\tchildren,\n\tonToggle: onToggleCallback = noop,\n\thasImageValue,\n} ) {\n\tif ( ! hasImageValue ) {\n\t\treturn;\n\t}\n\n\tconst imgLabel =\n\t\tlabel || getFilename( imgUrl ) || __( 'Add background image' );\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ BACKGROUND_POPOVER_PROPS }\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst toggleProps = {\n\t\t\t\t\tonClick: onToggle,\n\t\t\t\t\tclassName:\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__dropdown-toggle',\n\t\t\t\t\t'aria-expanded': isOpen,\n\t\t\t\t\t'aria-label': __(\n\t\t\t\t\t\t'Background size, position and repeat options.'\n\t\t\t\t\t),\n\t\t\t\t\tisOpen,\n\t\t\t\t};\n\t\t\t\treturn (\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\timgUrl={ imgUrl }\n\t\t\t\t\t\tfilename={ filename }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t\ttoggleProps={ toggleProps }\n\t\t\t\t\t\tas=\"button\"\n\t\t\t\t\t\tonToggleCallback={ onToggleCallback }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper\n\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__dropdown-content-wrapper\"\n\t\t\t\t\tpaddingSize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction LoadingSpinner() {\n\treturn (\n\t\t<Placeholder className=\"block-editor-global-styles-background-panel__loading\">\n\t\t\t<Spinner />\n\t\t</Placeholder>\n\t);\n}\n\nfunction BackgroundImageControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tonRemoveImage = noop,\n\tonResetImage = noop,\n\tdisplayInPanel,\n\tdefaultValues,\n} ) {\n\tconst [ isUploading, setIsUploading ] = useState( false );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\n\tconst { id, title, url } = style?.background?.backgroundImage || {\n\t\t...inheritedValue?.background?.backgroundImage,\n\t};\n\tconst replaceContainerRef = useRef();\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetIsUploading( false );\n\t};\n\n\tconst resetBackgroundImage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundImage' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\n\tconst onSelectMedia = ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tresetBackgroundImage();\n\t\t\tsetIsUploading( false );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetIsUploading( true );\n\t\t\treturn;\n\t\t}\n\n\t\t// For media selections originated from a file upload.\n\t\tif (\n\t\t\t( media.media_type &&\n\t\t\t\tmedia.media_type !== IMAGE_BACKGROUND_TYPE ) ||\n\t\t\t( ! media.media_type &&\n\t\t\t\tmedia.type &&\n\t\t\t\tmedia.type !== IMAGE_BACKGROUND_TYPE )\n\t\t) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only images can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst sizeValue =\n\t\t\tstyle?.background?.backgroundSize || defaultValues?.backgroundSize;\n\t\tconst positionValue = style?.background?.backgroundPosition;\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundImage: {\n\t\t\t\t\turl: media.url,\n\t\t\t\t\tid: media.id,\n\t\t\t\t\tsource: 'file',\n\t\t\t\t\ttitle: media.title || undefined,\n\t\t\t\t},\n\t\t\t\tbackgroundPosition:\n\t\t\t\t\t/*\n\t\t\t\t\t * A background image uploaded and set in the editor receives a default background position of '50% 0',\n\t\t\t\t\t * when the background image size is the equivalent of \"Tile\".\n\t\t\t\t\t * This is to increase the chance that the image's focus point is visible.\n\t\t\t\t\t * This is in-editor only to assist with the user experience.\n\t\t\t\t\t */\n\t\t\t\t\t! positionValue && ( 'auto' === sizeValue || ! sizeValue )\n\t\t\t\t\t\t? '50% 0'\n\t\t\t\t\t\t: positionValue,\n\t\t\t\tbackgroundSize: sizeValue,\n\t\t\t} )\n\t\t);\n\t\tsetIsUploading( false );\n\t};\n\n\t// Drag and drop callback, restricting image to one.\n\tconst onFilesDrop = ( filesList ) => {\n\t\tif ( filesList?.length > 1 ) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only one image can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tgetSettings().mediaUpload( {\n\t\t\tallowedTypes: [ IMAGE_BACKGROUND_TYPE ],\n\t\t\tfilesList,\n\t\t\tonFileChange( [ image ] ) {\n\t\t\t\tonSelectMedia( image );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst hasValue = hasBackgroundImageValue( style );\n\n\tconst closeAndFocus = () => {\n\t\tconst [ toggleButton ] = focus.tabbable.find(\n\t\t\treplaceContainerRef.current\n\t\t);\n\t\t// Focus the toggle button and close the dropdown menu.\n\t\t// This ensures similar behaviour as to selecting an image, where the dropdown is\n\t\t// closed and focus is redirected to the dropdown toggle button.\n\t\ttoggleButton?.focus();\n\t\ttoggleButton?.click();\n\t};\n\n\tconst onRemove = () =>\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\tbackgroundImage: 'none',\n\t\t\t} )\n\t\t);\n\tconst canRemove = ! hasValue && hasBackgroundImageValue( inheritedValue );\n\tconst imgLabel =\n\t\ttitle || getFilename( url ) || __( 'Add background image' );\n\n\treturn (\n\t\t<div\n\t\t\tref={ replaceContainerRef }\n\t\t\tclassName=\"block-editor-global-styles-background-panel__image-tools-panel-item\"\n\t\t>\n\t\t\t{ isUploading && <LoadingSpinner /> }\n\t\t\t<MediaReplaceFlow\n\t\t\t\tmediaId={ id }\n\t\t\t\tmediaURL={ url }\n\t\t\t\tallowedTypes={ [ IMAGE_BACKGROUND_TYPE ] }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\tpopoverProps={ {\n\t\t\t\t\tclassName: clsx( {\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__media-replace-popover':\n\t\t\t\t\t\t\tdisplayInPanel,\n\t\t\t\t\t} ),\n\t\t\t\t} }\n\t\t\t\tname={\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__image-preview\"\n\t\t\t\t\t\timgUrl={ url }\n\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tonError={ onUploadError }\n\t\t\t>\n\t\t\t\t{ canRemove && (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\tonRemove();\n\t\t\t\t\t\t\tonRemoveImage();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) }\n\t\t\t\t{ hasValue && (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\tonResetImage();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) }\n\t\t\t</MediaReplaceFlow>\n\t\t\t<DropZone\n\t\t\t\tonFilesDrop={ onFilesDrop }\n\t\t\t\tlabel={ __( 'Drop to upload' ) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BackgroundSizeControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tdefaultValues,\n} ) {\n\tconst sizeValue =\n\t\tstyle?.background?.backgroundSize ||\n\t\tinheritedValue?.background?.backgroundSize;\n\tconst repeatValue =\n\t\tstyle?.background?.backgroundRepeat ||\n\t\tinheritedValue?.background?.backgroundRepeat;\n\tconst imageValue =\n\t\tstyle?.background?.backgroundImage?.url ||\n\t\tinheritedValue?.background?.backgroundImage?.url;\n\tconst isUploadedImage = style?.background?.backgroundImage?.id;\n\tconst positionValue =\n\t\tstyle?.background?.backgroundPosition ||\n\t\tinheritedValue?.background?.backgroundPosition;\n\tconst attachmentValue =\n\t\tstyle?.background?.backgroundAttachment ||\n\t\tinheritedValue?.background?.backgroundAttachment;\n\n\t/*\n\t * Set default values for uploaded images.\n\t * The default values are passed by the consumer.\n\t * Block-level controls may have different defaults to root-level controls.\n\t * A falsy value is treated by default as `auto` (Tile).\n\t */\n\tlet currentValueForToggle =\n\t\t! sizeValue && isUploadedImage\n\t\t\t? defaultValues?.backgroundSize\n\t\t\t: sizeValue || 'auto';\n\t/*\n\t * The incoming value could be a value + unit, e.g. '20px'.\n\t * In this case set the value to 'tile'.\n\t */\n\tcurrentValueForToggle = ! [ 'cover', 'contain', 'auto' ].includes(\n\t\tcurrentValueForToggle\n\t)\n\t\t? 'auto'\n\t\t: currentValueForToggle;\n\t/*\n\t * If the current value is `cover` and the repeat value is `undefined`, then\n\t * the toggle should be unchecked as the default state. Otherwise, the toggle\n\t * should reflect the current repeat value.\n\t */\n\tconst repeatCheckedValue = ! (\n\t\trepeatValue === 'no-repeat' ||\n\t\t( currentValueForToggle === 'cover' && repeatValue === undefined )\n\t);\n\n\tconst updateBackgroundSize = ( next ) => {\n\t\t// When switching to 'contain' toggle the repeat off.\n\t\tlet nextRepeat = repeatValue;\n\t\tlet nextPosition = positionValue;\n\n\t\tif ( next === 'contain' ) {\n\t\t\tnextRepeat = 'no-repeat';\n\t\t\tnextPosition = undefined;\n\t\t}\n\n\t\tif ( next === 'cover' ) {\n\t\t\tnextRepeat = undefined;\n\t\t\tnextPosition = undefined;\n\t\t}\n\n\t\tif (\n\t\t\t( currentValueForToggle === 'cover' ||\n\t\t\t\tcurrentValueForToggle === 'contain' ) &&\n\t\t\tnext === 'auto'\n\t\t) {\n\t\t\tnextRepeat = undefined;\n\t\t\t/*\n\t\t\t * A background image uploaded and set in the editor (an image with a record id),\n\t\t\t * receives a default background position of '50% 0',\n\t\t\t * when the toggle switches to \"Tile\". This is to increase the chance that\n\t\t\t * the image's focus point is visible.\n\t\t\t * This is in-editor only to assist with the user experience.\n\t\t\t */\n\t\t\tif ( !! style?.background?.backgroundImage?.id ) {\n\t\t\t\tnextPosition = '50% 0';\n\t\t\t}\n\t\t}\n\n\t\t/*\n\t\t * Next will be null when the input is cleared,\n\t\t * in which case the value should be 'auto'.\n\t\t */\n\t\tif ( ! next && currentValueForToggle === 'auto' ) {\n\t\t\tnext = 'auto';\n\t\t}\n\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundPosition: nextPosition,\n\t\t\t\tbackgroundRepeat: nextRepeat,\n\t\t\t\tbackgroundSize: next,\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst updateBackgroundPosition = ( next ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundPosition' ],\n\t\t\t\tcoordsToBackgroundPosition( next )\n\t\t\t)\n\t\t);\n\t};\n\n\tconst toggleIsRepeated = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundRepeat' ],\n\t\t\t\trepeatCheckedValue === true ? 'no-repeat' : 'repeat'\n\t\t\t)\n\t\t);\n\n\tconst toggleScrollWithPage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundAttachment' ],\n\t\t\t\tattachmentValue === 'fixed' ? 'scroll' : 'fixed'\n\t\t\t)\n\t\t);\n\n\t// Set a default background position for non-site-wide, uploaded images with a size of 'contain'.\n\tconst backgroundPositionValue =\n\t\t! positionValue && isUploadedImage && 'contain' === sizeValue\n\t\t\t? defaultValues?.backgroundPosition\n\t\t\t: positionValue;\n\n\treturn (\n\t\t<VStack spacing={ 3 } className=\"single-column\">\n\t\t\t<FocalPointPicker\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Focal point' ) }\n\t\t\t\turl={ imageValue }\n\t\t\t\tvalue={ backgroundPositionToCoords( backgroundPositionValue ) }\n\t\t\t\tonChange={ updateBackgroundPosition }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Fixed background' ) }\n\t\t\t\tchecked={ attachmentValue === 'fixed' }\n\t\t\t\tonChange={ toggleScrollWithPage }\n\t\t\t/>\n\t\t\t<ToggleGroupControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\tlabel={ __( 'Size' ) }\n\t\t\t\tvalue={ currentValueForToggle }\n\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\tisBlock\n\t\t\t\thelp={ backgroundSizeHelpText(\n\t\t\t\t\tsizeValue || defaultValues?.backgroundSize\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"cover\"\n\t\t\t\t\tvalue=\"cover\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Cover',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"contain\"\n\t\t\t\t\tvalue=\"contain\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Contain',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"tile\"\n\t\t\t\t\tvalue=\"auto\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Tile',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</ToggleGroupControl>\n\t\t\t<HStack justify=\"flex-start\" spacing={ 2 } as=\"span\">\n\t\t\t\t<UnitControl\n\t\t\t\t\taria-label={ __( 'Background image width' ) }\n\t\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\t\tvalue={ sizeValue }\n\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t__unstableInputWidth=\"100px\"\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tplaceholder={ __( 'Auto' ) }\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\tcurrentValueForToggle !== 'auto' ||\n\t\t\t\t\t\tcurrentValueForToggle === undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Repeat' ) }\n\t\t\t\t\tchecked={ repeatCheckedValue }\n\t\t\t\t\tonChange={ toggleIsRepeated }\n\t\t\t\t\tdisabled={ currentValueForToggle === 'cover' }\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nfunction BackgroundToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n\theaderLabel,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<VStack\n\t\t\tas={ ToolsPanel }\n\t\t\tspacing={ 2 }\n\t\t\tlabel={ headerLabel }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t{ children }\n\t\t</VStack>\n\t);\n}\n\nexport default function BackgroundPanel( {\n\tas: Wrapper = BackgroundToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tdefaultValues = {},\n\theaderLabel = __( 'Background image' ),\n} ) {\n\t/*\n\t * Resolve any inherited \"ref\" pointers.\n\t * Should the block editor need resolved, inherited values\n\t * across all controls, this could be abstracted into a hook,\n\t * e.g., useResolveGlobalStyle\n\t */\n\tconst { globalStyles, _links } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst _settings = getSettings();\n\t\treturn {\n\t\t\tglobalStyles: _settings[ globalStylesDataKey ],\n\t\t\t_links: _settings[ globalStylesLinksDataKey ],\n\t\t};\n\t}, [] );\n\tconst resolvedInheritedValue = useMemo( () => {\n\t\tconst resolvedValues = {\n\t\t\tbackground: {},\n\t\t};\n\n\t\tif ( ! inheritedValue?.background ) {\n\t\t\treturn inheritedValue;\n\t\t}\n\n\t\tObject.entries( inheritedValue?.background ).forEach(\n\t\t\t( [ key, backgroundValue ] ) => {\n\t\t\t\tresolvedValues.background[ key ] = getResolvedValue(\n\t\t\t\t\tbackgroundValue,\n\t\t\t\t\t{\n\t\t\t\t\t\tstyles: globalStyles,\n\t\t\t\t\t\t_links,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\t\treturn resolvedValues;\n\t}, [ globalStyles, _links, inheritedValue ] );\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tbackground: {},\n\t\t};\n\t}, [] );\n\n\tconst resetBackground = () =>\n\t\tonChange( setImmutably( value, [ 'background' ], {} ) );\n\n\tconst { title, url } = value?.background?.backgroundImage || {\n\t\t...resolvedInheritedValue?.background?.backgroundImage,\n\t};\n\tconst hasImageValue =\n\t\thasBackgroundImageValue( value ) ||\n\t\thasBackgroundImageValue( resolvedInheritedValue );\n\n\tconst imageValue =\n\t\tvalue?.background?.backgroundImage ||\n\t\tinheritedValue?.background?.backgroundImage;\n\n\tconst shouldShowBackgroundImageControls =\n\t\thasImageValue &&\n\t\t'none' !== imageValue &&\n\t\t( settings?.background?.backgroundSize ||\n\t\t\tsettings?.background?.backgroundPosition ||\n\t\t\tsettings?.background?.backgroundRepeat );\n\n\tconst [ isDropDownOpen, setIsDropDownOpen ] = useState( false );\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t\theaderLabel={ headerLabel }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'block-editor-global-styles-background-panel__inspector-media-replace-container',\n\t\t\t\t\t{\n\t\t\t\t\t\t'is-open': isDropDownOpen,\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => !! value?.background }\n\t\t\t\t\tlabel={ __( 'Image' ) }\n\t\t\t\t\tonDeselect={ resetBackground }\n\t\t\t\t\tisShownByDefault={ defaultControls.backgroundImage }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ shouldShowBackgroundImageControls ? (\n\t\t\t\t\t\t<BackgroundControlsPanel\n\t\t\t\t\t\t\tlabel={ title }\n\t\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\tonToggle={ setIsDropDownOpen }\n\t\t\t\t\t\t\thasImageValue={ hasImageValue }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<VStack spacing={ 3 } className=\"single-column\">\n\t\t\t\t\t\t\t\t<BackgroundImageControls\n\t\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t\t\t\tdisplayInPanel\n\t\t\t\t\t\t\t\t\tonResetImage={ () => {\n\t\t\t\t\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tonRemoveImage={ () =>\n\t\t\t\t\t\t\t\t\t\tsetIsDropDownOpen( false )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<BackgroundSizeControls\n\t\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t</BackgroundControlsPanel>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<BackgroundImageControls\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\tonResetImage={ () => {\n\t\t\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonRemoveImage={ () => setIsDropDownOpen( false ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanelItem>\n\t\t\t</div>\n\t\t</Wrapper>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -190,7 +190,9 @@ function getGlobalStylesChanges(next, previous, options = {}) {
190
190
  return acc;
191
191
  }, {})).map(([key, changeValues]) => {
192
192
  const changeValuesLength = changeValues.length;
193
- const joinedChangesValue = changeValues.join((0, _i18n.__)(', '));
193
+ const joinedChangesValue = changeValues.join( /* translators: Used between list items, there is a space after the comma. */
194
+ (0, _i18n.__)(', ') // eslint-disable-line @wordpress/i18n-no-flanking-whitespace
195
+ );
194
196
  switch (key) {
195
197
  case 'blocks':
196
198
  {