@wordpress/block-editor 13.2.0 → 13.3.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 (367) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +0 -1
  3. package/build/components/block-breadcrumb/index.js +12 -1
  4. package/build/components/block-breadcrumb/index.js.map +1 -1
  5. package/build/components/block-lock/toolbar.js +0 -1
  6. package/build/components/block-lock/toolbar.js.map +1 -1
  7. package/build/components/block-mover/button.js +1 -1
  8. package/build/components/block-mover/button.js.map +1 -1
  9. package/build/components/block-mover/index.js +1 -1
  10. package/build/components/block-mover/index.js.map +1 -1
  11. package/build/components/block-pattern-setup/setup-toolbar.js +2 -2
  12. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  13. package/build/components/block-patterns-paging/index.js +5 -7
  14. package/build/components/block-patterns-paging/index.js.map +1 -1
  15. package/build/components/block-quick-navigation/index.js +20 -17
  16. package/build/components/block-quick-navigation/index.js.map +1 -1
  17. package/build/components/block-rename/modal.js +4 -12
  18. package/build/components/block-rename/modal.js.map +1 -1
  19. package/build/components/block-toolbar/shuffle.js +1 -0
  20. package/build/components/block-toolbar/shuffle.js.map +1 -1
  21. package/build/components/block-tools/block-selection-button.js +7 -58
  22. package/build/components/block-tools/block-selection-button.js.map +1 -1
  23. package/build/components/block-tools/block-toolbar-breadcrumb.js +9 -2
  24. package/build/components/block-tools/block-toolbar-breadcrumb.js.map +1 -1
  25. package/build/components/block-tools/index.js +14 -1
  26. package/build/components/block-tools/index.js.map +1 -1
  27. package/build/components/block-tools/use-show-block-tools.js +4 -2
  28. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  29. package/build/components/block-tools/zoom-out-mode-inserters.js +5 -4
  30. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  31. package/build/components/block-tools/zoom-out-popover.js +57 -0
  32. package/build/components/block-tools/zoom-out-popover.js.map +1 -0
  33. package/build/components/block-tools/zoom-out-toolbar.js +138 -0
  34. package/build/components/block-tools/zoom-out-toolbar.js.map +1 -0
  35. package/build/components/button-block-appender/index.js +3 -1
  36. package/build/components/button-block-appender/index.js.map +1 -1
  37. package/build/components/child-layout-control/index.js +26 -18
  38. package/build/components/child-layout-control/index.js.map +1 -1
  39. package/build/components/date-format-picker/index.js +10 -1
  40. package/build/components/date-format-picker/index.js.map +1 -1
  41. package/build/components/dimensions-tool/index.js +6 -4
  42. package/build/components/dimensions-tool/index.js.map +1 -1
  43. package/build/components/font-appearance-control/index.js +26 -61
  44. package/build/components/font-appearance-control/index.js.map +1 -1
  45. package/build/components/global-styles/background-panel.js +178 -116
  46. package/build/components/global-styles/background-panel.js.map +1 -1
  47. package/build/components/global-styles/border-panel.js +2 -1
  48. package/build/components/global-styles/border-panel.js.map +1 -1
  49. package/build/components/global-styles/color-panel.js +2 -1
  50. package/build/components/global-styles/color-panel.js.map +1 -1
  51. package/build/components/global-styles/dimensions-panel.js +2 -1
  52. package/build/components/global-styles/dimensions-panel.js.map +1 -1
  53. package/build/components/global-styles/filters-panel.js +2 -1
  54. package/build/components/global-styles/filters-panel.js.map +1 -1
  55. package/build/components/global-styles/hooks.js +8 -0
  56. package/build/components/global-styles/hooks.js.map +1 -1
  57. package/build/components/global-styles/image-settings-panel.js +2 -1
  58. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  59. package/build/components/global-styles/typography-panel.js +50 -12
  60. package/build/components/global-styles/typography-panel.js.map +1 -1
  61. package/build/components/global-styles/typography-utils.js +50 -0
  62. package/build/components/global-styles/typography-utils.js.map +1 -1
  63. package/build/components/global-styles/use-global-styles-output.js +23 -8
  64. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  65. package/build/components/global-styles/utils.js +17 -7
  66. package/build/components/global-styles/utils.js.map +1 -1
  67. package/build/components/grid/grid-item-movers.js +11 -14
  68. package/build/components/grid/grid-item-movers.js.map +1 -1
  69. package/build/components/grid/grid-item-resizer.js +2 -2
  70. package/build/components/grid/grid-item-resizer.js.map +1 -1
  71. package/build/components/grid/grid-visualizer.js +116 -36
  72. package/build/components/grid/grid-visualizer.js.map +1 -1
  73. package/build/components/grid/use-grid-layout-sync.js +29 -22
  74. package/build/components/grid/use-grid-layout-sync.js.map +1 -1
  75. package/build/components/inner-blocks/index.js +1 -1
  76. package/build/components/inner-blocks/index.js.map +1 -1
  77. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +1 -19
  78. package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
  79. package/build/components/inserter/menu.js +26 -4
  80. package/build/components/inserter/menu.js.map +1 -1
  81. package/build/components/inserter/quick-inserter.js +2 -1
  82. package/build/components/inserter/quick-inserter.js.map +1 -1
  83. package/build/components/inspector-controls/block-support-tools-panel.js +2 -1
  84. package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  85. package/build/components/link-control/link-preview.js +1 -1
  86. package/build/components/link-control/link-preview.js.map +1 -1
  87. package/build/components/media-placeholder/index.js +19 -23
  88. package/build/components/media-placeholder/index.js.map +1 -1
  89. package/build/components/navigable-toolbar/index.js +3 -1
  90. package/build/components/navigable-toolbar/index.js.map +1 -1
  91. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +5 -1
  92. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  93. package/build/components/tabbed-sidebar/index.js +66 -0
  94. package/build/components/tabbed-sidebar/index.js.map +1 -0
  95. package/build/components/url-popover/index.js +3 -0
  96. package/build/components/url-popover/index.js.map +1 -1
  97. package/build/hooks/background.js +26 -4
  98. package/build/hooks/background.js.map +1 -1
  99. package/build/hooks/block-hooks.js +11 -17
  100. package/build/hooks/block-hooks.js.map +1 -1
  101. package/build/hooks/block-style-variation.js +169 -4
  102. package/build/hooks/block-style-variation.js.map +1 -1
  103. package/build/hooks/duotone.js +16 -11
  104. package/build/hooks/duotone.js.map +1 -1
  105. package/build/hooks/grid-visualizer.js +65 -0
  106. package/build/hooks/grid-visualizer.js.map +1 -0
  107. package/build/hooks/index.js +15 -2
  108. package/build/hooks/index.js.map +1 -1
  109. package/build/hooks/layout-child.js +39 -22
  110. package/build/hooks/layout-child.js.map +1 -1
  111. package/build/hooks/position.js +2 -9
  112. package/build/hooks/position.js.map +1 -1
  113. package/build/hooks/use-bindings-attributes.js +16 -6
  114. package/build/hooks/use-bindings-attributes.js.map +1 -1
  115. package/build/hooks/utils.js +2 -0
  116. package/build/hooks/utils.js.map +1 -1
  117. package/build/layouts/constrained.js +44 -2
  118. package/build/layouts/constrained.js.map +1 -1
  119. package/build/layouts/grid.js +90 -51
  120. package/build/layouts/grid.js.map +1 -1
  121. package/build/private-apis.js +6 -1
  122. package/build/private-apis.js.map +1 -1
  123. package/build/store/defaults.js +0 -2
  124. package/build/store/defaults.js.map +1 -1
  125. package/build/store/defaults.native.js +0 -3
  126. package/build/store/defaults.native.js.map +1 -1
  127. package/build/store/private-keys.js +2 -1
  128. package/build/store/private-keys.js.map +1 -1
  129. package/build/utils/format-font-style.js +45 -0
  130. package/build/utils/format-font-style.js.map +1 -0
  131. package/build/utils/format-font-weight.js +68 -0
  132. package/build/utils/format-font-weight.js.map +1 -0
  133. package/build/utils/get-editor-region.js +34 -0
  134. package/build/utils/get-editor-region.js.map +1 -0
  135. package/build/utils/get-font-styles-and-weights.js +167 -0
  136. package/build/utils/get-font-styles-and-weights.js.map +1 -0
  137. package/build/utils/pasting.js +5 -13
  138. package/build/utils/pasting.js.map +1 -1
  139. package/build-module/components/block-breadcrumb/index.js +12 -1
  140. package/build-module/components/block-breadcrumb/index.js.map +1 -1
  141. package/build-module/components/block-lock/toolbar.js +0 -1
  142. package/build-module/components/block-lock/toolbar.js.map +1 -1
  143. package/build-module/components/block-mover/button.js +1 -1
  144. package/build-module/components/block-mover/button.js.map +1 -1
  145. package/build-module/components/block-mover/index.js +1 -1
  146. package/build-module/components/block-mover/index.js.map +1 -1
  147. package/build-module/components/block-pattern-setup/setup-toolbar.js +2 -2
  148. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  149. package/build-module/components/block-patterns-paging/index.js +5 -7
  150. package/build-module/components/block-patterns-paging/index.js.map +1 -1
  151. package/build-module/components/block-quick-navigation/index.js +20 -17
  152. package/build-module/components/block-quick-navigation/index.js.map +1 -1
  153. package/build-module/components/block-rename/modal.js +5 -13
  154. package/build-module/components/block-rename/modal.js.map +1 -1
  155. package/build-module/components/block-toolbar/shuffle.js +1 -0
  156. package/build-module/components/block-toolbar/shuffle.js.map +1 -1
  157. package/build-module/components/block-tools/block-selection-button.js +10 -61
  158. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  159. package/build-module/components/block-tools/block-toolbar-breadcrumb.js +9 -2
  160. package/build-module/components/block-tools/block-toolbar-breadcrumb.js.map +1 -1
  161. package/build-module/components/block-tools/index.js +14 -1
  162. package/build-module/components/block-tools/index.js.map +1 -1
  163. package/build-module/components/block-tools/use-show-block-tools.js +4 -2
  164. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  165. package/build-module/components/block-tools/zoom-out-mode-inserters.js +5 -4
  166. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  167. package/build-module/components/block-tools/zoom-out-popover.js +48 -0
  168. package/build-module/components/block-tools/zoom-out-popover.js.map +1 -0
  169. package/build-module/components/block-tools/zoom-out-toolbar.js +131 -0
  170. package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -0
  171. package/build-module/components/button-block-appender/index.js +3 -1
  172. package/build-module/components/button-block-appender/index.js.map +1 -1
  173. package/build-module/components/child-layout-control/index.js +27 -19
  174. package/build-module/components/child-layout-control/index.js.map +1 -1
  175. package/build-module/components/date-format-picker/index.js +11 -3
  176. package/build-module/components/date-format-picker/index.js.map +1 -1
  177. package/build-module/components/dimensions-tool/index.js +6 -4
  178. package/build-module/components/dimensions-tool/index.js.map +1 -1
  179. package/build-module/components/font-appearance-control/index.js +28 -63
  180. package/build-module/components/font-appearance-control/index.js.map +1 -1
  181. package/build-module/components/global-styles/background-panel.js +181 -119
  182. package/build-module/components/global-styles/background-panel.js.map +1 -1
  183. package/build-module/components/global-styles/border-panel.js +3 -2
  184. package/build-module/components/global-styles/border-panel.js.map +1 -1
  185. package/build-module/components/global-styles/color-panel.js +3 -2
  186. package/build-module/components/global-styles/color-panel.js.map +1 -1
  187. package/build-module/components/global-styles/dimensions-panel.js +3 -2
  188. package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
  189. package/build-module/components/global-styles/filters-panel.js +3 -2
  190. package/build-module/components/global-styles/filters-panel.js.map +1 -1
  191. package/build-module/components/global-styles/hooks.js +8 -0
  192. package/build-module/components/global-styles/hooks.js.map +1 -1
  193. package/build-module/components/global-styles/image-settings-panel.js +3 -2
  194. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  195. package/build-module/components/global-styles/typography-panel.js +52 -14
  196. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  197. package/build-module/components/global-styles/typography-utils.js +48 -0
  198. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  199. package/build-module/components/global-styles/use-global-styles-output.js +23 -8
  200. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  201. package/build-module/components/global-styles/utils.js +15 -6
  202. package/build-module/components/global-styles/utils.js.map +1 -1
  203. package/build-module/components/grid/grid-item-movers.js +11 -14
  204. package/build-module/components/grid/grid-item-movers.js.map +1 -1
  205. package/build-module/components/grid/grid-item-resizer.js +2 -2
  206. package/build-module/components/grid/grid-item-resizer.js.map +1 -1
  207. package/build-module/components/grid/grid-visualizer.js +117 -37
  208. package/build-module/components/grid/grid-visualizer.js.map +1 -1
  209. package/build-module/components/grid/use-grid-layout-sync.js +29 -22
  210. package/build-module/components/grid/use-grid-layout-sync.js.map +1 -1
  211. package/build-module/components/inner-blocks/index.js +1 -1
  212. package/build-module/components/inner-blocks/index.js.map +1 -1
  213. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +1 -19
  214. package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
  215. package/build-module/components/inserter/menu.js +26 -4
  216. package/build-module/components/inserter/menu.js.map +1 -1
  217. package/build-module/components/inserter/quick-inserter.js +2 -1
  218. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  219. package/build-module/components/inspector-controls/block-support-tools-panel.js +3 -2
  220. package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
  221. package/build-module/components/link-control/link-preview.js +1 -1
  222. package/build-module/components/link-control/link-preview.js.map +1 -1
  223. package/build-module/components/media-placeholder/index.js +19 -23
  224. package/build-module/components/media-placeholder/index.js.map +1 -1
  225. package/build-module/components/navigable-toolbar/index.js +3 -1
  226. package/build-module/components/navigable-toolbar/index.js.map +1 -1
  227. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +5 -1
  228. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  229. package/build-module/components/tabbed-sidebar/index.js +60 -0
  230. package/build-module/components/tabbed-sidebar/index.js.map +1 -0
  231. package/build-module/components/url-popover/index.js +3 -0
  232. package/build-module/components/url-popover/index.js.map +1 -1
  233. package/build-module/hooks/background.js +26 -4
  234. package/build-module/hooks/background.js.map +1 -1
  235. package/build-module/hooks/block-hooks.js +11 -17
  236. package/build-module/hooks/block-hooks.js.map +1 -1
  237. package/build-module/hooks/block-style-variation.js +168 -4
  238. package/build-module/hooks/block-style-variation.js.map +1 -1
  239. package/build-module/hooks/duotone.js +16 -11
  240. package/build-module/hooks/duotone.js.map +1 -1
  241. package/build-module/hooks/grid-visualizer.js +64 -0
  242. package/build-module/hooks/grid-visualizer.js.map +1 -0
  243. package/build-module/hooks/index.js +3 -0
  244. package/build-module/hooks/index.js.map +1 -1
  245. package/build-module/hooks/layout-child.js +39 -22
  246. package/build-module/hooks/layout-child.js.map +1 -1
  247. package/build-module/hooks/position.js +2 -9
  248. package/build-module/hooks/position.js.map +1 -1
  249. package/build-module/hooks/use-bindings-attributes.js +16 -6
  250. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  251. package/build-module/hooks/utils.js +2 -0
  252. package/build-module/hooks/utils.js.map +1 -1
  253. package/build-module/layouts/constrained.js +44 -2
  254. package/build-module/layouts/constrained.js.map +1 -1
  255. package/build-module/layouts/grid.js +90 -51
  256. package/build-module/layouts/grid.js.map +1 -1
  257. package/build-module/private-apis.js +8 -3
  258. package/build-module/private-apis.js.map +1 -1
  259. package/build-module/store/defaults.js +0 -2
  260. package/build-module/store/defaults.js.map +1 -1
  261. package/build-module/store/defaults.native.js +0 -3
  262. package/build-module/store/defaults.native.js.map +1 -1
  263. package/build-module/store/private-keys.js +1 -0
  264. package/build-module/store/private-keys.js.map +1 -1
  265. package/build-module/utils/format-font-style.js +39 -0
  266. package/build-module/utils/format-font-style.js.map +1 -0
  267. package/build-module/utils/format-font-weight.js +62 -0
  268. package/build-module/utils/format-font-weight.js.map +1 -0
  269. package/build-module/utils/get-editor-region.js +28 -0
  270. package/build-module/utils/get-editor-region.js.map +1 -0
  271. package/build-module/utils/get-font-styles-and-weights.js +160 -0
  272. package/build-module/utils/get-font-styles-and-weights.js.map +1 -0
  273. package/build-module/utils/pasting.js +5 -13
  274. package/build-module/utils/pasting.js.map +1 -1
  275. package/build-style/content-rtl.css +1 -0
  276. package/build-style/content.css +1 -0
  277. package/build-style/style-rtl.css +207 -96
  278. package/build-style/style.css +207 -96
  279. package/package.json +32 -32
  280. package/src/components/block-breadcrumb/index.js +16 -1
  281. package/src/components/block-lock/toolbar.js +0 -1
  282. package/src/components/block-mover/button.js +1 -1
  283. package/src/components/block-mover/index.js +1 -1
  284. package/src/components/block-pattern-setup/setup-toolbar.js +2 -2
  285. package/src/components/block-patterns-paging/index.js +8 -11
  286. package/src/components/block-patterns-paging/style.scss +18 -0
  287. package/src/components/block-quick-navigation/index.js +21 -28
  288. package/src/components/block-rename/modal.js +2 -8
  289. package/src/components/block-switcher/test/index.js +6 -6
  290. package/src/components/block-toolbar/shuffle.js +1 -0
  291. package/src/components/block-toolbar/style.scss +1 -11
  292. package/src/components/block-tools/block-selection-button.js +11 -83
  293. package/src/components/block-tools/block-toolbar-breadcrumb.js +9 -4
  294. package/src/components/block-tools/index.js +21 -1
  295. package/src/components/block-tools/style.scss +15 -0
  296. package/src/components/block-tools/use-show-block-tools.js +14 -6
  297. package/src/components/block-tools/zoom-out-mode-inserters.js +5 -4
  298. package/src/components/block-tools/zoom-out-popover.js +49 -0
  299. package/src/components/block-tools/zoom-out-toolbar.js +140 -0
  300. package/src/components/button-block-appender/index.js +2 -1
  301. package/src/components/child-layout-control/index.js +41 -23
  302. package/src/components/date-format-picker/index.js +10 -1
  303. package/src/components/date-format-picker/style.scss +0 -9
  304. package/src/components/dimensions-tool/index.js +97 -89
  305. package/src/components/font-appearance-control/index.js +29 -83
  306. package/src/components/font-appearance-control/style.scss +3 -5
  307. package/src/components/global-styles/background-panel.js +249 -170
  308. package/src/components/global-styles/border-panel.js +3 -2
  309. package/src/components/global-styles/color-panel.js +3 -2
  310. package/src/components/global-styles/dimensions-panel.js +3 -2
  311. package/src/components/global-styles/filters-panel.js +3 -2
  312. package/src/components/global-styles/hooks.js +9 -0
  313. package/src/components/global-styles/image-settings-panel.js +3 -2
  314. package/src/components/global-styles/style.scss +105 -20
  315. package/src/components/global-styles/test/typography-utils.js +269 -0
  316. package/src/components/global-styles/typography-panel.js +49 -12
  317. package/src/components/global-styles/typography-utils.js +63 -0
  318. package/src/components/global-styles/use-global-styles-output.js +23 -8
  319. package/src/components/global-styles/utils.js +17 -6
  320. package/src/components/grid/grid-item-movers.js +11 -27
  321. package/src/components/grid/grid-item-resizer.js +3 -2
  322. package/src/components/grid/grid-visualizer.js +171 -54
  323. package/src/components/grid/style.scss +43 -8
  324. package/src/components/grid/use-grid-layout-sync.js +31 -28
  325. package/src/components/iframe/content.scss +1 -0
  326. package/src/components/inner-blocks/index.js +2 -1
  327. package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +1 -16
  328. package/src/components/inserter/menu.js +47 -13
  329. package/src/components/inserter/quick-inserter.js +6 -1
  330. package/src/components/inserter/style.scss +1 -49
  331. package/src/components/inspector-controls/block-support-tools-panel.js +3 -3
  332. package/src/components/link-control/link-preview.js +1 -1
  333. package/src/components/media-placeholder/index.js +22 -32
  334. package/src/components/navigable-toolbar/index.js +3 -1
  335. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +6 -1
  336. package/src/components/tabbed-sidebar/README.md +76 -0
  337. package/src/components/tabbed-sidebar/index.js +70 -0
  338. package/src/components/tabbed-sidebar/style.scss +53 -0
  339. package/src/components/url-popover/index.js +3 -0
  340. package/src/hooks/background.js +25 -10
  341. package/src/hooks/block-hooks.js +9 -16
  342. package/src/hooks/block-style-variation.js +202 -3
  343. package/src/hooks/duotone.js +16 -12
  344. package/src/hooks/grid-visualizer.js +64 -0
  345. package/src/hooks/index.js +3 -0
  346. package/src/hooks/layout-child.js +53 -37
  347. package/src/hooks/position.js +3 -10
  348. package/src/hooks/test/get-variation-styles-with-ref-values.js +91 -0
  349. package/src/hooks/use-bindings-attributes.js +18 -4
  350. package/src/hooks/utils.js +2 -0
  351. package/src/layouts/constrained.js +43 -2
  352. package/src/layouts/grid.js +146 -51
  353. package/src/private-apis.js +12 -1
  354. package/src/store/defaults.js +0 -2
  355. package/src/store/defaults.native.js +0 -3
  356. package/src/store/private-keys.js +1 -0
  357. package/src/style.scss +1 -1
  358. package/src/utils/format-font-style.js +40 -0
  359. package/src/utils/format-font-weight.js +63 -0
  360. package/src/utils/get-editor-region.js +31 -0
  361. package/src/utils/get-font-styles-and-weights.js +191 -0
  362. package/src/utils/pasting.js +5 -12
  363. package/src/utils/test/format-font-style.js +34 -0
  364. package/src/utils/test/format-font-weight.js +66 -0
  365. package/src/utils/test/get-font-styles-and-weights.js +513 -0
  366. package/tsconfig.tsbuildinfo +1 -1
  367. package/src/hooks/position.scss +0 -18
@@ -6,11 +6,11 @@ import clsx from 'clsx';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { __experimentalToolsPanel as ToolsPanel, __experimentalToolsPanelItem as ToolsPanelItem, ToggleControl, __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOption as ToggleGroupControlOption, __experimentalUnitControl as UnitControl, __experimentalVStack as VStack, DropZone, FlexItem, FocalPointPicker, MenuItem, VisuallyHidden, __experimentalItemGroup as ItemGroup, __experimentalHStack as HStack, __experimentalTruncate as Truncate } from '@wordpress/components';
9
+ import { __experimentalToolsPanel as ToolsPanel, __experimentalToolsPanelItem as ToolsPanelItem, ToggleControl, __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOption as ToggleGroupControlOption, __experimentalUnitControl as UnitControl, __experimentalVStack as VStack, DropZone, FlexItem, FocalPointPicker, MenuItem, VisuallyHidden, __experimentalItemGroup as ItemGroup, __experimentalHStack as HStack, __experimentalTruncate as Truncate, Dropdown, __experimentalDropdownContentWrapper as DropdownContentWrapper } from '@wordpress/components';
10
10
  import { __, _x, sprintf } from '@wordpress/i18n';
11
11
  import { store as noticesStore } from '@wordpress/notices';
12
12
  import { getFilename } from '@wordpress/url';
13
- import { useCallback, Platform, useRef } from '@wordpress/element';
13
+ import { useCallback, Platform, useRef, useState, useEffect } from '@wordpress/element';
14
14
  import { useDispatch, useSelect } from '@wordpress/data';
15
15
  import { focus } from '@wordpress/dom';
16
16
  import { isBlobURL } from '@wordpress/blob';
@@ -18,7 +18,7 @@ import { isBlobURL } from '@wordpress/blob';
18
18
  /**
19
19
  * Internal dependencies
20
20
  */
21
- import { TOOLSPANEL_DROPDOWNMENU_PROPS } from './utils';
21
+ import { useToolsPanelDropdownMenuProps } from './utils';
22
22
  import { setImmutably } from '../../utils/object';
23
23
  import MediaReplaceFlow from '../media-replace-flow';
24
24
  import { store as blockEditorStore } from '../../store';
@@ -27,9 +27,15 @@ import { jsx as _jsx } from "react/jsx-runtime";
27
27
  import { jsxs as _jsxs } from "react/jsx-runtime";
28
28
  const IMAGE_BACKGROUND_TYPE = 'image';
29
29
  const DEFAULT_CONTROLS = {
30
- backgroundImage: true,
31
- backgroundSize: false
30
+ backgroundImage: true
32
31
  };
32
+ const BACKGROUND_POPOVER_PROPS = {
33
+ placement: 'left-start',
34
+ offset: 36,
35
+ shift: true,
36
+ className: 'block-editor-global-styles-background-panel__popover'
37
+ };
38
+ const noop = () => {};
33
39
 
34
40
  /**
35
41
  * Checks site settings to see if the background panel may be used.
@@ -121,21 +127,30 @@ export const backgroundPositionToCoords = value => {
121
127
  y
122
128
  };
123
129
  };
124
- function InspectorImagePreview({
125
- label,
130
+ function InspectorImagePreviewItem({
131
+ as = 'span',
132
+ imgUrl,
133
+ toggleProps = {},
126
134
  filename,
127
- url: imgUrl
135
+ label,
136
+ className,
137
+ onToggleCallback = noop
128
138
  }) {
129
- const imgLabel = label || getFilename(imgUrl) || __('Add background image');
139
+ useEffect(() => {
140
+ if (typeof toggleProps?.isOpen !== 'undefined') {
141
+ onToggleCallback(toggleProps?.isOpen);
142
+ }
143
+ }, [toggleProps?.isOpen, onToggleCallback]);
130
144
  return /*#__PURE__*/_jsx(ItemGroup, {
131
- as: "span",
145
+ as: as,
146
+ className: className,
147
+ ...toggleProps,
132
148
  children: /*#__PURE__*/_jsxs(HStack, {
133
- justify: imgUrl ? 'flex-start' : 'center',
149
+ justify: "flex-start",
134
150
  as: "span",
151
+ className: "block-editor-global-styles-background-panel__inspector-preview-inner",
135
152
  children: [imgUrl && /*#__PURE__*/_jsx("span", {
136
- className: clsx('block-editor-global-styles-background-panel__inspector-image-indicator-wrapper', {
137
- 'has-image': imgUrl
138
- }),
153
+ className: "block-editor-global-styles-background-panel__inspector-image-indicator-wrapper",
139
154
  "aria-hidden": true,
140
155
  children: /*#__PURE__*/_jsx("span", {
141
156
  className: "block-editor-global-styles-background-panel__inspector-image-indicator",
@@ -145,25 +160,69 @@ function InspectorImagePreview({
145
160
  })
146
161
  }), /*#__PURE__*/_jsxs(FlexItem, {
147
162
  as: "span",
163
+ style: imgUrl ? {} : {
164
+ flexGrow: 1
165
+ },
148
166
  children: [/*#__PURE__*/_jsx(Truncate, {
149
167
  numberOfLines: 1,
150
168
  className: "block-editor-global-styles-background-panel__inspector-media-replace-title",
151
- children: imgLabel
169
+ children: label
152
170
  }), /*#__PURE__*/_jsx(VisuallyHidden, {
153
171
  as: "span",
154
172
  children: imgUrl ? sprintf( /* translators: %s: file name */
155
- __('Background image: %s'), filename || imgLabel) : __('No background image selected')
173
+ __('Background image: %s'), filename || label) : __('No background image selected')
156
174
  })]
157
175
  })]
158
176
  })
159
177
  });
160
178
  }
161
- function BackgroundImageToolsPanelItem({
162
- panelId,
163
- isShownByDefault,
179
+ function BackgroundControlsPanel({
180
+ label,
181
+ filename,
182
+ url: imgUrl,
183
+ children,
184
+ onToggle: onToggleCallback = noop,
185
+ hasImageValue
186
+ }) {
187
+ if (!hasImageValue) {
188
+ return;
189
+ }
190
+ const imgLabel = label || getFilename(imgUrl) || __('Add background image');
191
+ return /*#__PURE__*/_jsx(Dropdown, {
192
+ popoverProps: BACKGROUND_POPOVER_PROPS,
193
+ renderToggle: ({
194
+ onToggle,
195
+ isOpen
196
+ }) => {
197
+ const toggleProps = {
198
+ onClick: onToggle,
199
+ className: 'block-editor-global-styles-background-panel__dropdown-toggle',
200
+ 'aria-expanded': isOpen,
201
+ 'aria-label': __('Background size, position and repeat options.'),
202
+ isOpen
203
+ };
204
+ return /*#__PURE__*/_jsx(InspectorImagePreviewItem, {
205
+ imgUrl: imgUrl,
206
+ filename: filename,
207
+ label: imgLabel,
208
+ toggleProps: toggleProps,
209
+ as: "button",
210
+ onToggleCallback: onToggleCallback
211
+ });
212
+ },
213
+ renderContent: () => /*#__PURE__*/_jsx(DropdownContentWrapper, {
214
+ className: "block-editor-global-styles-background-panel__dropdown-content-wrapper",
215
+ paddingSize: "medium",
216
+ children: children
217
+ })
218
+ });
219
+ }
220
+ function BackgroundImageControls({
164
221
  onChange,
165
222
  style,
166
223
  inheritedValue,
224
+ onRemoveImage = noop,
225
+ displayInPanel,
167
226
  themeFileURIs
168
227
  }) {
169
228
  const mediaUpload = useSelect(select => select(blockEditorStore).getSettings().mediaUpload, []);
@@ -224,15 +283,6 @@ function BackgroundImageToolsPanelItem({
224
283
  onError: onUploadError
225
284
  });
226
285
  };
227
- const resetAllFilter = useCallback(previousValue => {
228
- return {
229
- ...previousValue,
230
- style: {
231
- ...previousValue.style,
232
- background: undefined
233
- }
234
- };
235
- }, []);
236
286
  const hasValue = hasBackgroundImageValue(style);
237
287
  const closeAndFocus = () => {
238
288
  const [toggleButton] = focus.tabbable.find(replaceContainerRef.current);
@@ -244,52 +294,48 @@ function BackgroundImageToolsPanelItem({
244
294
  };
245
295
  const onRemove = () => onChange(setImmutably(style, ['background', 'backgroundImage'], 'none'));
246
296
  const canRemove = !hasValue && hasBackgroundImageValue(inheritedValue);
247
- return /*#__PURE__*/_jsx(ToolsPanelItem, {
248
- className: "single-column",
249
- hasValue: () => hasValue,
250
- label: __('Background image'),
251
- onDeselect: resetBackgroundImage,
252
- isShownByDefault: isShownByDefault,
253
- resetAllFilter: resetAllFilter,
254
- panelId: panelId,
255
- children: /*#__PURE__*/_jsxs("div", {
256
- className: "block-editor-global-styles-background-panel__inspector-media-replace-container",
257
- ref: replaceContainerRef,
258
- children: [/*#__PURE__*/_jsxs(MediaReplaceFlow, {
259
- mediaId: id,
260
- mediaURL: url,
261
- allowedTypes: [IMAGE_BACKGROUND_TYPE],
262
- accept: "image/*",
263
- onSelect: onSelectMedia,
264
- name: /*#__PURE__*/_jsx(InspectorImagePreview, {
265
- label: title,
266
- filename: title,
267
- url: getResolvedThemeFilePath(url, themeFileURIs)
268
- }),
269
- variant: "secondary",
270
- children: [canRemove && /*#__PURE__*/_jsx(MenuItem, {
271
- onClick: () => {
272
- closeAndFocus();
273
- onRemove();
274
- },
275
- children: __('Remove')
276
- }), hasValue && /*#__PURE__*/_jsx(MenuItem, {
277
- onClick: () => {
278
- closeAndFocus();
279
- resetBackgroundImage();
280
- },
281
- children: __('Reset ')
282
- })]
283
- }), /*#__PURE__*/_jsx(DropZone, {
284
- onFilesDrop: onFilesDrop,
285
- label: __('Drop to upload')
297
+ const imgLabel = title || getFilename(url) || __('Add background image');
298
+ return /*#__PURE__*/_jsxs("div", {
299
+ ref: replaceContainerRef,
300
+ className: "block-editor-global-styles-background-panel__image-tools-panel-item",
301
+ children: [/*#__PURE__*/_jsxs(MediaReplaceFlow, {
302
+ mediaId: id,
303
+ mediaURL: url,
304
+ allowedTypes: [IMAGE_BACKGROUND_TYPE],
305
+ accept: "image/*",
306
+ onSelect: onSelectMedia,
307
+ popoverProps: {
308
+ className: clsx({
309
+ 'block-editor-global-styles-background-panel__media-replace-popover': displayInPanel
310
+ })
311
+ },
312
+ name: /*#__PURE__*/_jsx(InspectorImagePreviewItem, {
313
+ className: "block-editor-global-styles-background-panel__image-preview",
314
+ imgUrl: getResolvedThemeFilePath(url, themeFileURIs),
315
+ filename: title,
316
+ label: imgLabel
317
+ }),
318
+ variant: "secondary",
319
+ children: [canRemove && /*#__PURE__*/_jsx(MenuItem, {
320
+ onClick: () => {
321
+ closeAndFocus();
322
+ onRemove();
323
+ },
324
+ children: __('Remove')
325
+ }), hasValue && /*#__PURE__*/_jsx(MenuItem, {
326
+ onClick: () => {
327
+ closeAndFocus();
328
+ onRemoveImage();
329
+ },
330
+ children: __('Reset ')
286
331
  })]
287
- })
332
+ }), /*#__PURE__*/_jsx(DropZone, {
333
+ onFilesDrop: onFilesDrop,
334
+ label: __('Drop to upload')
335
+ })]
288
336
  });
289
337
  }
290
- function BackgroundSizeToolsPanelItem({
291
- panelId,
292
- isShownByDefault,
338
+ function BackgroundSizeControls({
293
339
  onChange,
294
340
  style,
295
341
  inheritedValue,
@@ -316,20 +362,6 @@ function BackgroundSizeToolsPanelItem({
316
362
  * should reflect the current repeat value.
317
363
  */
318
364
  const repeatCheckedValue = !(repeatValue === 'no-repeat' || currentValueForToggle === 'cover' && repeatValue === undefined);
319
- const hasValue = hasBackgroundSizeValue(style);
320
- const resetAllFilter = useCallback(previousValue => {
321
- return {
322
- ...previousValue,
323
- style: {
324
- ...previousValue.style,
325
- background: {
326
- ...previousValue.style?.background,
327
- backgroundRepeat: undefined,
328
- backgroundSize: undefined
329
- }
330
- }
331
- };
332
- }, []);
333
365
  const updateBackgroundSize = next => {
334
366
  // When switching to 'contain' toggle the repeat off.
335
367
  let nextRepeat = repeatValue;
@@ -373,25 +405,13 @@ function BackgroundSizeToolsPanelItem({
373
405
  onChange(setImmutably(style, ['background', 'backgroundPosition'], coordsToBackgroundPosition(next)));
374
406
  };
375
407
  const toggleIsRepeated = () => onChange(setImmutably(style, ['background', 'backgroundRepeat'], repeatCheckedValue === true ? 'no-repeat' : 'repeat'));
376
- const resetBackgroundSize = () => onChange(setImmutably(style, ['background'], {
377
- ...style?.background,
378
- backgroundPosition: undefined,
379
- backgroundRepeat: undefined,
380
- backgroundSize: undefined
381
- }));
382
408
  return /*#__PURE__*/_jsxs(VStack, {
383
- as: ToolsPanelItem,
384
- spacing: 2,
409
+ spacing: 3,
385
410
  className: "single-column",
386
- hasValue: () => hasValue,
387
- label: __('Size'),
388
- onDeselect: resetBackgroundSize,
389
- isShownByDefault: isShownByDefault,
390
- resetAllFilter: resetAllFilter,
391
- panelId: panelId,
392
411
  children: [/*#__PURE__*/_jsx(FocalPointPicker, {
393
412
  __next40pxDefaultSize: true,
394
- label: __('Position'),
413
+ __nextHasNoMarginBottom: true,
414
+ label: __('Focal point'),
395
415
  url: getResolvedThemeFilePath(imageValue, themeFileURIs),
396
416
  value: backgroundPositionToCoords(positionValue),
397
417
  onChange: updateBackgroundPosition
@@ -416,18 +436,20 @@ function BackgroundSizeToolsPanelItem({
416
436
  justify: "flex-start",
417
437
  spacing: 2,
418
438
  as: "span",
419
- children: [currentValueForToggle !== undefined && currentValueForToggle !== 'cover' && currentValueForToggle !== 'contain' ? /*#__PURE__*/_jsx(UnitControl, {
439
+ children: [/*#__PURE__*/_jsx(UnitControl, {
420
440
  "aria-label": __('Background image width'),
421
441
  onChange: updateBackgroundSize,
422
442
  value: sizeValue,
423
443
  size: "__unstable-large",
424
444
  __unstableInputWidth: "100px",
425
445
  min: 0,
426
- placeholder: __('Auto')
427
- }) : null, currentValueForToggle !== 'cover' && /*#__PURE__*/_jsx(ToggleControl, {
446
+ placeholder: __('Auto'),
447
+ disabled: currentValueForToggle !== 'auto' || currentValueForToggle === undefined
448
+ }), /*#__PURE__*/_jsx(ToggleControl, {
428
449
  label: __('Repeat'),
429
450
  checked: repeatCheckedValue,
430
- onChange: toggleIsRepeated
451
+ onChange: toggleIsRepeated,
452
+ disabled: currentValueForToggle === 'cover'
431
453
  })]
432
454
  })]
433
455
  });
@@ -440,6 +462,7 @@ function BackgroundToolsPanel({
440
462
  children,
441
463
  headerLabel
442
464
  }) {
465
+ const dropdownMenuProps = useToolsPanelDropdownMenuProps();
443
466
  const resetAll = () => {
444
467
  const updatedValue = resetAllFilter(value);
445
468
  onChange(updatedValue);
@@ -450,7 +473,7 @@ function BackgroundToolsPanel({
450
473
  label: headerLabel,
451
474
  resetAll: resetAll,
452
475
  panelId: panelId,
453
- dropdownMenuProps: TOOLSPANEL_DROPDOWNMENU_PROPS,
476
+ dropdownMenuProps: dropdownMenuProps,
454
477
  children: children
455
478
  });
456
479
  }
@@ -472,28 +495,67 @@ export default function BackgroundPanel({
472
495
  background: {}
473
496
  };
474
497
  }, []);
475
- const shouldShowBackgroundSizeControls = settings?.background?.backgroundSize;
498
+ const resetBackground = () => onChange(setImmutably(value, ['background'], {}));
499
+ const {
500
+ title,
501
+ url
502
+ } = value?.background?.backgroundImage || {
503
+ ...inheritedValue?.background?.backgroundImage
504
+ };
505
+ const hasImageValue = hasBackgroundImageValue(value) || hasBackgroundImageValue(inheritedValue);
506
+ const shouldShowBackgroundImageControls = hasImageValue && (settings?.background?.backgroundSize || settings?.background?.backgroundPosition || settings?.background?.backgroundRepeat);
507
+ const [isDropDownOpen, setIsDropDownOpen] = useState(false);
476
508
  return /*#__PURE__*/_jsxs(Wrapper, {
477
509
  resetAllFilter: resetAllFilter,
478
510
  value: value,
479
511
  onChange: onChange,
480
512
  panelId: panelId,
481
513
  headerLabel: headerLabel,
482
- children: [/*#__PURE__*/_jsx(BackgroundImageToolsPanelItem, {
483
- onChange: onChange,
484
- panelId: panelId,
514
+ children: [/*#__PURE__*/_jsx("div", {
515
+ className: clsx('block-editor-global-styles-background-panel__inspector-media-replace-container', {
516
+ 'is-open': isDropDownOpen
517
+ }),
518
+ children: shouldShowBackgroundImageControls ? /*#__PURE__*/_jsx(BackgroundControlsPanel, {
519
+ label: title,
520
+ filename: title,
521
+ url: getResolvedThemeFilePath(url, themeFileURIs),
522
+ onToggle: setIsDropDownOpen,
523
+ hasImageValue: hasImageValue,
524
+ children: /*#__PURE__*/_jsxs(VStack, {
525
+ spacing: 3,
526
+ className: "single-column",
527
+ children: [/*#__PURE__*/_jsx(BackgroundImageControls, {
528
+ onChange: onChange,
529
+ style: value,
530
+ inheritedValue: inheritedValue,
531
+ themeFileURIs: themeFileURIs,
532
+ displayInPanel: true,
533
+ onRemoveImage: () => {
534
+ setIsDropDownOpen(false);
535
+ resetBackground();
536
+ }
537
+ }), /*#__PURE__*/_jsx(BackgroundSizeControls, {
538
+ onChange: onChange,
539
+ panelId: panelId,
540
+ style: value,
541
+ defaultValues: defaultValues,
542
+ inheritedValue: inheritedValue,
543
+ themeFileURIs: themeFileURIs
544
+ })]
545
+ })
546
+ }) : /*#__PURE__*/_jsx(BackgroundImageControls, {
547
+ onChange: onChange,
548
+ style: value,
549
+ inheritedValue: inheritedValue,
550
+ themeFileURIs: themeFileURIs
551
+ })
552
+ }), /*#__PURE__*/_jsx(ToolsPanelItem, {
553
+ hasValue: () => hasImageValue,
554
+ label: __('Image'),
555
+ onDeselect: resetBackground,
485
556
  isShownByDefault: defaultControls.backgroundImage,
486
- style: value,
487
- inheritedValue: inheritedValue,
488
- themeFileURIs: themeFileURIs
489
- }), shouldShowBackgroundSizeControls && /*#__PURE__*/_jsx(BackgroundSizeToolsPanelItem, {
490
- onChange: onChange,
491
557
  panelId: panelId,
492
- isShownByDefault: defaultControls.backgroundSize,
493
- style: value,
494
- inheritedValue: inheritedValue,
495
- defaultValues: defaultValues,
496
- themeFileURIs: themeFileURIs
558
+ className: "block-editor-global-styles-background-panel__hidden-tools-panel-item"
497
559
  })]
498
560
  });
499
561
  }
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","ToggleControl","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalUnitControl","UnitControl","__experimentalVStack","VStack","DropZone","FlexItem","FocalPointPicker","MenuItem","VisuallyHidden","__experimentalItemGroup","ItemGroup","__experimentalHStack","HStack","__experimentalTruncate","Truncate","__","_x","sprintf","store","noticesStore","getFilename","useCallback","Platform","useRef","useDispatch","useSelect","focus","isBlobURL","TOOLSPANEL_DROPDOWNMENU_PROPS","setImmutably","MediaReplaceFlow","blockEditorStore","getResolvedThemeFilePath","jsx","_jsx","jsxs","_jsxs","IMAGE_BACKGROUND_TYPE","DEFAULT_CONTROLS","backgroundImage","backgroundSize","useHasBackgroundPanel","settings","OS","background","hasBackgroundSizeValue","style","backgroundPosition","undefined","hasBackgroundImageValue","id","url","backgroundSizeHelpText","value","coordsToBackgroundPosition","isNaN","x","y","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreview","label","filename","imgUrl","imgLabel","as","children","justify","className","numberOfLines","BackgroundImageToolsPanelItem","panelId","isShownByDefault","onChange","inheritedValue","themeFileURIs","mediaUpload","select","getSettings","title","replaceContainerRef","createErrorNotice","onUploadError","message","type","resetBackgroundImage","onSelectMedia","media","media_type","sizeValue","positionValue","source","onFilesDrop","filesList","allowedTypes","onFileChange","image","onError","resetAllFilter","previousValue","hasValue","closeAndFocus","toggleButton","tabbable","find","current","click","onRemove","canRemove","onDeselect","ref","mediaId","mediaURL","accept","onSelect","name","variant","onClick","BackgroundSizeToolsPanelItem","defaultValues","repeatValue","backgroundRepeat","imageValue","currentValueForToggle","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","resetBackgroundSize","spacing","__next40pxDefaultSize","size","isBlock","help","__unstableInputWidth","min","placeholder","checked","BackgroundToolsPanel","headerLabel","resetAll","updatedValue","dropdownMenuProps","BackgroundPanel","Wrapper","defaultControls","shouldShowBackgroundSizeControls"],"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} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { getFilename } from '@wordpress/url';\nimport { useCallback, Platform, useRef } 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 { TOOLSPANEL_DROPDOWNMENU_PROPS } 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\tbackgroundSize: false,\n};\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 InspectorImagePreview( { label, filename, url: imgUrl } ) {\n\tconst imgLabel =\n\t\tlabel || getFilename( imgUrl ) || __( 'Add background image' );\n\n\treturn (\n\t\t<ItemGroup as=\"span\">\n\t\t\t<HStack justify={ imgUrl ? 'flex-start' : 'center' } as=\"span\">\n\t\t\t\t{ imgUrl && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'block-editor-global-styles-background-panel__inspector-image-indicator-wrapper',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'has-image': imgUrl,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\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\">\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{ imgLabel }\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 || imgLabel\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 BackgroundImageToolsPanelItem( {\n\tpanelId,\n\tisShownByDefault,\n\tonChange,\n\tstyle,\n\tinheritedValue,\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\n\tconst replaceContainerRef = useRef();\n\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 resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tstyle: {\n\t\t\t\t...previousValue.style,\n\t\t\t\tbackground: undefined,\n\t\t\t},\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\n\treturn (\n\t\t<ToolsPanelItem\n\t\t\tclassName=\"single-column\"\n\t\t\thasValue={ () => hasValue }\n\t\t\tlabel={ __( 'Background image' ) }\n\t\t\tonDeselect={ resetBackgroundImage }\n\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-media-replace-container\"\n\t\t\t\tref={ replaceContainerRef }\n\t\t\t>\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ url }\n\t\t\t\t\tallowedTypes={ [ IMAGE_BACKGROUND_TYPE ] }\n\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\t\tname={\n\t\t\t\t\t\t<InspectorImagePreview\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={ getResolvedThemeFilePath(\n\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t\tthemeFileURIs\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t>\n\t\t\t\t\t{ canRemove && (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\t\tonRemove();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t) }\n\t\t\t\t\t{ hasValue && (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\t\tresetBackgroundImage();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset ' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t) }\n\t\t\t\t</MediaReplaceFlow>\n\t\t\t\t<DropZone\n\t\t\t\t\tonFilesDrop={ onFilesDrop }\n\t\t\t\t\tlabel={ __( 'Drop to upload' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</ToolsPanelItem>\n\t);\n}\n\nfunction BackgroundSizeToolsPanelItem( {\n\tpanelId,\n\tisShownByDefault,\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\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 hasValue = hasBackgroundSizeValue( style );\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tstyle: {\n\t\t\t\t...previousValue.style,\n\t\t\t\tbackground: {\n\t\t\t\t\t...previousValue.style?.background,\n\t\t\t\t\tbackgroundRepeat: undefined,\n\t\t\t\t\tbackgroundSize: undefined,\n\t\t\t\t},\n\t\t\t},\n\t\t};\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 resetBackgroundSize = () =>\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundPosition: undefined,\n\t\t\t\tbackgroundRepeat: undefined,\n\t\t\t\tbackgroundSize: undefined,\n\t\t\t} )\n\t\t);\n\n\treturn (\n\t\t<VStack\n\t\t\tas={ ToolsPanelItem }\n\t\t\tspacing={ 2 }\n\t\t\tclassName=\"single-column\"\n\t\t\thasValue={ () => hasValue }\n\t\t\tlabel={ __( 'Size' ) }\n\t\t\tonDeselect={ resetBackgroundSize }\n\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t<FocalPointPicker\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tlabel={ __( 'Position' ) }\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<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{ currentValueForToggle !== undefined &&\n\t\t\t\tcurrentValueForToggle !== 'cover' &&\n\t\t\t\tcurrentValueForToggle !== 'contain' ? (\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\taria-label={ __( 'Background image width' ) }\n\t\t\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\t\t\tvalue={ sizeValue }\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t__unstableInputWidth=\"100px\"\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tplaceholder={ __( 'Auto' ) }\n\t\t\t\t\t/>\n\t\t\t\t) : null }\n\t\t\t\t{ currentValueForToggle !== 'cover' && (\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Repeat' ) }\n\t\t\t\t\t\tchecked={ repeatCheckedValue }\n\t\t\t\t\t\tonChange={ toggleIsRepeated }\n\t\t\t\t\t/>\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 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={ TOOLSPANEL_DROPDOWNMENU_PROPS }\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\tconst shouldShowBackgroundSizeControls =\n\t\tsettings?.background?.backgroundSize;\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<BackgroundImageToolsPanelItem\n\t\t\t\tonChange={ onChange }\n\t\t\t\tpanelId={ panelId }\n\t\t\t\tisShownByDefault={ defaultControls.backgroundImage }\n\t\t\t\tstyle={ value }\n\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t\tthemeFileURIs={ themeFileURIs }\n\t\t\t/>\n\t\t\t{ shouldShowBackgroundSizeControls && (\n\t\t\t\t<BackgroundSizeToolsPanelItem\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\tisShownByDefault={ defaultControls.backgroundSize }\n\t\t\t\t\tstyle={ value }\n\t\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\tthemeFileURIs={ themeFileURIs }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","ToggleControl","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalUnitControl","UnitControl","__experimentalVStack","VStack","DropZone","FlexItem","FocalPointPicker","MenuItem","VisuallyHidden","__experimentalItemGroup","ItemGroup","__experimentalHStack","HStack","__experimentalTruncate","Truncate","Dropdown","__experimentalDropdownContentWrapper","DropdownContentWrapper","__","_x","sprintf","store","noticesStore","getFilename","useCallback","Platform","useRef","useState","useEffect","useDispatch","useSelect","focus","isBlobURL","useToolsPanelDropdownMenuProps","setImmutably","MediaReplaceFlow","blockEditorStore","getResolvedThemeFilePath","jsx","_jsx","jsxs","_jsxs","IMAGE_BACKGROUND_TYPE","DEFAULT_CONTROLS","backgroundImage","BACKGROUND_POPOVER_PROPS","placement","offset","shift","className","noop","useHasBackgroundPanel","settings","OS","background","hasBackgroundSizeValue","style","backgroundPosition","undefined","backgroundSize","hasBackgroundImageValue","id","url","backgroundSizeHelpText","value","coordsToBackgroundPosition","isNaN","x","y","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreviewItem","as","imgUrl","toggleProps","filename","label","onToggleCallback","isOpen","children","justify","flexGrow","numberOfLines","BackgroundControlsPanel","onToggle","hasImageValue","imgLabel","popoverProps","renderToggle","onClick","renderContent","paddingSize","BackgroundImageControls","onChange","inheritedValue","onRemoveImage","displayInPanel","themeFileURIs","mediaUpload","select","getSettings","title","replaceContainerRef","createErrorNotice","onUploadError","message","type","resetBackgroundImage","onSelectMedia","media","media_type","sizeValue","positionValue","source","onFilesDrop","filesList","allowedTypes","onFileChange","image","onError","hasValue","closeAndFocus","toggleButton","tabbable","find","current","click","onRemove","canRemove","ref","mediaId","mediaURL","accept","onSelect","name","variant","BackgroundSizeControls","defaultValues","repeatValue","backgroundRepeat","imageValue","currentValueForToggle","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","spacing","__next40pxDefaultSize","__nextHasNoMarginBottom","size","isBlock","help","__unstableInputWidth","min","placeholder","disabled","checked","BackgroundToolsPanel","resetAllFilter","panelId","headerLabel","dropdownMenuProps","resetAll","updatedValue","BackgroundPanel","Wrapper","defaultControls","previousValue","resetBackground","shouldShowBackgroundImageControls","isDropDownOpen","setIsDropDownOpen","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\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\treturn (\n\t\t<VStack spacing={ 3 } 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<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":[]}
@@ -10,7 +10,7 @@ import { __ } from '@wordpress/i18n';
10
10
  */
11
11
  import BorderRadiusControl from '../border-radius-control';
12
12
  import { useColorsPerOrigin } from './hooks';
13
- import { getValueFromVariable, TOOLSPANEL_DROPDOWNMENU_PROPS } from './utils';
13
+ import { getValueFromVariable, useToolsPanelDropdownMenuProps } from './utils';
14
14
  import { setImmutably } from '../../utils/object';
15
15
  import { useBorderPanelLabel } from '../../hooks/border';
16
16
  import { ShadowPopover, useShadowPresets } from './shadow-panel-components';
@@ -54,6 +54,7 @@ function BorderToolsPanel({
54
54
  children,
55
55
  label
56
56
  }) {
57
+ const dropdownMenuProps = useToolsPanelDropdownMenuProps();
57
58
  const resetAll = () => {
58
59
  const updatedValue = resetAllFilter(value);
59
60
  onChange(updatedValue);
@@ -62,7 +63,7 @@ function BorderToolsPanel({
62
63
  label: label,
63
64
  resetAll: resetAll,
64
65
  panelId: panelId,
65
- dropdownMenuProps: TOOLSPANEL_DROPDOWNMENU_PROPS,
66
+ dropdownMenuProps: dropdownMenuProps,
66
67
  children: children
67
68
  });
68
69
  }