@wordpress/block-editor 14.0.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 (290) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +9 -14
  3. package/build/autocompleters/block.js +1 -1
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/components/block-list/use-block-props/index.js +2 -2
  6. package/build/components/block-list/use-block-props/index.js.map +1 -1
  7. package/build/components/block-list/use-in-between-inserter.js +11 -4
  8. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  9. package/build/components/block-settings-menu/block-mode-toggle.js +28 -34
  10. package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  11. package/build/components/block-tools/insertion-point.js +14 -3
  12. package/build/components/block-tools/insertion-point.js.map +1 -1
  13. package/build/components/block-tools/use-show-block-tools.js +2 -1
  14. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  15. package/build/components/block-tools/zoom-out-mode-inserters.js +8 -4
  16. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  17. package/build/components/border-radius-control/index.js +1 -0
  18. package/build/components/border-radius-control/index.js.map +1 -1
  19. package/build/components/convert-to-group-buttons/index.js +1 -1
  20. package/build/components/convert-to-group-buttons/index.js.map +1 -1
  21. package/build/components/date-format-picker/index.js +2 -0
  22. package/build/components/date-format-picker/index.js.map +1 -1
  23. package/build/components/font-appearance-control/index.js +3 -0
  24. package/build/components/font-appearance-control/index.js.map +1 -1
  25. package/build/components/font-family/index.js +3 -0
  26. package/build/components/font-family/index.js.map +1 -1
  27. package/build/components/global-styles/background-panel.js +114 -42
  28. package/build/components/global-styles/background-panel.js.map +1 -1
  29. package/build/components/global-styles/get-global-styles-changes.js +3 -1
  30. package/build/components/global-styles/get-global-styles-changes.js.map +1 -1
  31. package/build/components/global-styles/hooks.js +0 -7
  32. package/build/components/global-styles/hooks.js.map +1 -1
  33. package/build/components/global-styles/index.js +0 -6
  34. package/build/components/global-styles/index.js.map +1 -1
  35. package/build/components/global-styles/use-global-styles-output.js +3 -3
  36. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  37. package/build/components/global-styles/utils.js +8 -24
  38. package/build/components/global-styles/utils.js.map +1 -1
  39. package/build/components/grid/grid-visualizer.js +20 -5
  40. package/build/components/grid/grid-visualizer.js.map +1 -1
  41. package/build/components/height-control/index.js +1 -0
  42. package/build/components/height-control/index.js.map +1 -1
  43. package/build/components/iframe/index.js +4 -2
  44. package/build/components/iframe/index.js.map +1 -1
  45. package/build/components/image-editor/zoom-dropdown.js +11 -7
  46. package/build/components/image-editor/zoom-dropdown.js.map +1 -1
  47. package/build/components/inner-blocks/button-block-appender.js +8 -8
  48. package/build/components/inner-blocks/button-block-appender.js.map +1 -1
  49. package/build/components/inner-blocks/default-block-appender.js +7 -25
  50. package/build/components/inner-blocks/default-block-appender.js.map +1 -1
  51. package/build/components/inner-blocks/index.js +9 -11
  52. package/build/components/inner-blocks/index.js.map +1 -1
  53. package/build/components/inserter/library.js +4 -2
  54. package/build/components/inserter/library.js.map +1 -1
  55. package/build/components/inserter/menu.js +30 -12
  56. package/build/components/inserter/menu.js.map +1 -1
  57. package/build/components/inserter/quick-inserter.js +4 -0
  58. package/build/components/inserter/quick-inserter.js.map +1 -1
  59. package/build/components/line-height-control/index.js +3 -0
  60. package/build/components/line-height-control/index.js.map +1 -1
  61. package/build/components/media-placeholder/index.js +9 -4
  62. package/build/components/media-placeholder/index.js.map +1 -1
  63. package/build/components/media-upload/index.native.js +4 -1
  64. package/build/components/media-upload/index.native.js.map +1 -1
  65. package/build/components/multi-selection-inspector/index.js +12 -12
  66. package/build/components/multi-selection-inspector/index.js.map +1 -1
  67. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -2
  68. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  69. package/build/components/text-alignment-control/index.js +13 -8
  70. package/build/components/text-alignment-control/index.js.map +1 -1
  71. package/build/components/text-decoration-control/index.js +13 -8
  72. package/build/components/text-decoration-control/index.js.map +1 -1
  73. package/build/components/text-transform-control/index.js +13 -8
  74. package/build/components/text-transform-control/index.js.map +1 -1
  75. package/build/components/url-popover/image-url-input-ui.js +2 -0
  76. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  77. package/build/components/use-block-drop-zone/index.js +14 -2
  78. package/build/components/use-block-drop-zone/index.js.map +1 -1
  79. package/build/components/writing-mode-control/index.js +13 -8
  80. package/build/components/writing-mode-control/index.js.map +1 -1
  81. package/build/hooks/background.js +19 -23
  82. package/build/hooks/background.js.map +1 -1
  83. package/build/hooks/block-bindings.js +37 -79
  84. package/build/hooks/block-bindings.js.map +1 -1
  85. package/build/layouts/constrained.js +1 -0
  86. package/build/layouts/constrained.js.map +1 -1
  87. package/build/layouts/flex.js +2 -0
  88. package/build/layouts/flex.js.map +1 -1
  89. package/build/layouts/grid.js +3 -0
  90. package/build/layouts/grid.js.map +1 -1
  91. package/build/private-apis.js +3 -1
  92. package/build/private-apis.js.map +1 -1
  93. package/build/store/private-selectors.js +30 -0
  94. package/build/store/private-selectors.js.map +1 -1
  95. package/build/store/reducer.js +10 -1
  96. package/build/store/reducer.js.map +1 -1
  97. package/build/utils/block-bindings.js +112 -0
  98. package/build/utils/block-bindings.js.map +1 -0
  99. package/build-module/autocompleters/block.js +1 -1
  100. package/build-module/autocompleters/block.js.map +1 -1
  101. package/build-module/components/block-list/use-block-props/index.js +2 -2
  102. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  103. package/build-module/components/block-list/use-in-between-inserter.js +11 -4
  104. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  105. package/build-module/components/block-settings-menu/block-mode-toggle.js +29 -34
  106. package/build-module/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  107. package/build-module/components/block-tools/insertion-point.js +14 -3
  108. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  109. package/build-module/components/block-tools/use-show-block-tools.js +2 -1
  110. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  111. package/build-module/components/block-tools/zoom-out-mode-inserters.js +8 -4
  112. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  113. package/build-module/components/border-radius-control/index.js +1 -0
  114. package/build-module/components/border-radius-control/index.js.map +1 -1
  115. package/build-module/components/convert-to-group-buttons/index.js +1 -1
  116. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  117. package/build-module/components/date-format-picker/index.js +2 -0
  118. package/build-module/components/date-format-picker/index.js.map +1 -1
  119. package/build-module/components/font-appearance-control/index.js +3 -0
  120. package/build-module/components/font-appearance-control/index.js.map +1 -1
  121. package/build-module/components/font-family/index.js +3 -0
  122. package/build-module/components/font-family/index.js.map +1 -1
  123. package/build-module/components/global-styles/background-panel.js +117 -45
  124. package/build-module/components/global-styles/background-panel.js.map +1 -1
  125. package/build-module/components/global-styles/get-global-styles-changes.js +3 -1
  126. package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -1
  127. package/build-module/components/global-styles/hooks.js +0 -6
  128. package/build-module/components/global-styles/hooks.js.map +1 -1
  129. package/build-module/components/global-styles/index.js +1 -1
  130. package/build-module/components/global-styles/index.js.map +1 -1
  131. package/build-module/components/global-styles/use-global-styles-output.js +5 -5
  132. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  133. package/build-module/components/global-styles/utils.js +8 -23
  134. package/build-module/components/global-styles/utils.js.map +1 -1
  135. package/build-module/components/grid/grid-visualizer.js +20 -5
  136. package/build-module/components/grid/grid-visualizer.js.map +1 -1
  137. package/build-module/components/height-control/index.js +1 -0
  138. package/build-module/components/height-control/index.js.map +1 -1
  139. package/build-module/components/iframe/index.js +4 -2
  140. package/build-module/components/iframe/index.js.map +1 -1
  141. package/build-module/components/image-editor/zoom-dropdown.js +12 -8
  142. package/build-module/components/image-editor/zoom-dropdown.js.map +1 -1
  143. package/build-module/components/inner-blocks/button-block-appender.js +7 -6
  144. package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
  145. package/build-module/components/inner-blocks/default-block-appender.js +6 -23
  146. package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
  147. package/build-module/components/inner-blocks/index.js +9 -11
  148. package/build-module/components/inner-blocks/index.js.map +1 -1
  149. package/build-module/components/inserter/library.js +4 -2
  150. package/build-module/components/inserter/library.js.map +1 -1
  151. package/build-module/components/inserter/menu.js +30 -12
  152. package/build-module/components/inserter/menu.js.map +1 -1
  153. package/build-module/components/inserter/quick-inserter.js +5 -1
  154. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  155. package/build-module/components/line-height-control/index.js +3 -0
  156. package/build-module/components/line-height-control/index.js.map +1 -1
  157. package/build-module/components/media-placeholder/index.js +9 -4
  158. package/build-module/components/media-placeholder/index.js.map +1 -1
  159. package/build-module/components/media-upload/index.native.js +4 -1
  160. package/build-module/components/media-upload/index.native.js.map +1 -1
  161. package/build-module/components/multi-selection-inspector/index.js +12 -12
  162. package/build-module/components/multi-selection-inspector/index.js.map +1 -1
  163. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -2
  164. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  165. package/build-module/components/text-alignment-control/index.js +13 -8
  166. package/build-module/components/text-alignment-control/index.js.map +1 -1
  167. package/build-module/components/text-decoration-control/index.js +13 -8
  168. package/build-module/components/text-decoration-control/index.js.map +1 -1
  169. package/build-module/components/text-transform-control/index.js +13 -8
  170. package/build-module/components/text-transform-control/index.js.map +1 -1
  171. package/build-module/components/url-popover/image-url-input-ui.js +2 -0
  172. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  173. package/build-module/components/use-block-drop-zone/index.js +14 -2
  174. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  175. package/build-module/components/writing-mode-control/index.js +13 -8
  176. package/build-module/components/writing-mode-control/index.js.map +1 -1
  177. package/build-module/hooks/background.js +19 -23
  178. package/build-module/hooks/background.js.map +1 -1
  179. package/build-module/hooks/block-bindings.js +38 -80
  180. package/build-module/hooks/block-bindings.js.map +1 -1
  181. package/build-module/layouts/constrained.js +1 -0
  182. package/build-module/layouts/constrained.js.map +1 -1
  183. package/build-module/layouts/flex.js +2 -0
  184. package/build-module/layouts/flex.js.map +1 -1
  185. package/build-module/layouts/grid.js +3 -0
  186. package/build-module/layouts/grid.js.map +1 -1
  187. package/build-module/private-apis.js +3 -1
  188. package/build-module/private-apis.js.map +1 -1
  189. package/build-module/store/private-selectors.js +27 -0
  190. package/build-module/store/private-selectors.js.map +1 -1
  191. package/build-module/store/reducer.js +9 -1
  192. package/build-module/store/reducer.js.map +1 -1
  193. package/build-module/utils/block-bindings.js +105 -0
  194. package/build-module/utils/block-bindings.js.map +1 -0
  195. package/build-style/content-rtl.css +7 -14
  196. package/build-style/content.css +7 -14
  197. package/build-style/default-editor-styles-rtl.css +2 -2
  198. package/build-style/default-editor-styles.css +2 -2
  199. package/build-style/style-rtl.css +36 -38
  200. package/build-style/style.css +36 -38
  201. package/package.json +32 -32
  202. package/src/autocompleters/block.js +2 -1
  203. package/src/components/block-list/content.scss +5 -13
  204. package/src/components/block-list/use-block-props/index.js +2 -2
  205. package/src/components/block-list/use-in-between-inserter.js +17 -5
  206. package/src/components/block-settings-menu/block-mode-toggle.js +28 -31
  207. package/src/components/block-settings-menu/test/block-mode-toggle.js +26 -23
  208. package/src/components/block-tools/insertion-point.js +11 -0
  209. package/src/components/block-tools/style.scss +1 -1
  210. package/src/components/block-tools/use-show-block-tools.js +4 -1
  211. package/src/components/block-tools/zoom-out-mode-inserters.js +7 -1
  212. package/src/components/block-variation-transforms/style.scss +1 -1
  213. package/src/components/border-radius-control/index.js +1 -0
  214. package/src/components/border-radius-control/style.scss +0 -10
  215. package/src/components/convert-to-group-buttons/index.js +1 -1
  216. package/src/components/date-format-picker/index.js +2 -0
  217. package/src/components/font-appearance-control/index.js +3 -0
  218. package/src/components/font-family/README.md +11 -2
  219. package/src/components/font-family/index.js +3 -0
  220. package/src/components/global-styles/background-panel.js +132 -53
  221. package/src/components/global-styles/get-global-styles-changes.js +4 -1
  222. package/src/components/global-styles/hooks.js +0 -5
  223. package/src/components/global-styles/index.js +0 -1
  224. package/src/components/global-styles/style.scss +13 -2
  225. package/src/components/global-styles/test/use-global-styles-output.js +20 -4
  226. package/src/components/global-styles/use-global-styles-output.js +5 -6
  227. package/src/components/global-styles/utils.js +7 -29
  228. package/src/components/grid/grid-visualizer.js +22 -7
  229. package/src/components/height-control/index.js +1 -0
  230. package/src/components/iframe/index.js +4 -2
  231. package/src/components/image-editor/zoom-dropdown.js +17 -9
  232. package/src/components/inner-blocks/button-block-appender.js +5 -7
  233. package/src/components/inner-blocks/default-block-appender.js +4 -23
  234. package/src/components/inner-blocks/index.js +10 -9
  235. package/src/components/inserter/library.js +2 -0
  236. package/src/components/inserter/menu.js +32 -27
  237. package/src/components/inserter/quick-inserter.js +4 -1
  238. package/src/components/inserter/style.scss +1 -1
  239. package/src/components/inserter-list-item/style.scss +1 -0
  240. package/src/components/line-height-control/README.md +7 -0
  241. package/src/components/line-height-control/index.js +3 -0
  242. package/src/components/link-control/style.scss +1 -1
  243. package/src/components/media-placeholder/index.js +12 -7
  244. package/src/components/media-upload/README.md +2 -0
  245. package/src/components/media-upload/index.native.js +2 -0
  246. package/src/components/multi-selection-inspector/index.js +8 -9
  247. package/src/components/responsive-block-control/README.md +1 -0
  248. package/src/components/responsive-block-control/test/index.js +1 -0
  249. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +8 -4
  250. package/src/components/spacing-sizes-control/style.scss +16 -16
  251. package/src/components/text-alignment-control/index.js +20 -8
  252. package/src/components/text-decoration-control/index.js +20 -8
  253. package/src/components/text-decoration-control/stories/index.story.js +0 -4
  254. package/src/components/text-transform-control/index.js +20 -8
  255. package/src/components/text-transform-control/stories/index.story.js +0 -4
  256. package/src/components/url-input/style.scss +2 -2
  257. package/src/components/url-popover/image-url-input-ui.js +2 -0
  258. package/src/components/use-block-drop-zone/index.js +21 -3
  259. package/src/components/writing-mode-control/index.js +20 -8
  260. package/src/hooks/background.js +21 -27
  261. package/src/hooks/block-bindings.js +27 -84
  262. package/src/hooks/block-bindings.scss +1 -1
  263. package/src/hooks/test/background.js +60 -0
  264. package/src/layouts/constrained.js +1 -0
  265. package/src/layouts/flex.js +2 -0
  266. package/src/layouts/grid.js +3 -0
  267. package/src/private-apis.js +2 -0
  268. package/src/store/private-selectors.js +36 -0
  269. package/src/store/reducer.js +7 -0
  270. package/src/store/test/private-selectors.js +89 -0
  271. package/src/style.scss +0 -1
  272. package/src/utils/block-bindings.js +98 -0
  273. package/src/utils/test/transform-styles.js +49 -0
  274. package/build/components/global-styles/theme-file-uri-utils.js +0 -21
  275. package/build/components/global-styles/theme-file-uri-utils.js.map +0 -1
  276. package/build/components/inner-blocks/with-client-id.js +0 -28
  277. package/build/components/inner-blocks/with-client-id.js.map +0 -1
  278. package/build/components/segmented-text-control/index.js +0 -63
  279. package/build/components/segmented-text-control/index.js.map +0 -1
  280. package/build-module/components/global-styles/theme-file-uri-utils.js +0 -15
  281. package/build-module/components/global-styles/theme-file-uri-utils.js.map +0 -1
  282. package/build-module/components/inner-blocks/with-client-id.js +0 -21
  283. package/build-module/components/inner-blocks/with-client-id.js.map +0 -1
  284. package/build-module/components/segmented-text-control/index.js +0 -58
  285. package/build-module/components/segmented-text-control/index.js.map +0 -1
  286. package/src/components/global-styles/test/theme-file-uri-utils.js +0 -41
  287. package/src/components/global-styles/theme-file-uri-utils.js +0 -18
  288. package/src/components/inner-blocks/with-client-id.js +0 -19
  289. package/src/components/segmented-text-control/index.js +0 -63
  290. package/src/components/segmented-text-control/style.scss +0 -15
@@ -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, Dropdown, __experimentalDropdownContentWrapper as DropdownContentWrapper } 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, Placeholder, Spinner, __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, useState, useEffect } from '@wordpress/element';
13
+ import { useCallback, Platform, useRef, useState, useEffect, useMemo } 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,11 +18,11 @@ import { isBlobURL } from '@wordpress/blob';
18
18
  /**
19
19
  * Internal dependencies
20
20
  */
21
- import { useToolsPanelDropdownMenuProps } from './utils';
21
+ import { useToolsPanelDropdownMenuProps, getResolvedValue } 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';
25
- import { getResolvedThemeFilePath } from './theme-file-uri-utils';
25
+ import { globalStylesDataKey, globalStylesLinksDataKey } from '../../store/private-keys';
26
26
  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';
@@ -217,15 +217,25 @@ function BackgroundControlsPanel({
217
217
  })
218
218
  });
219
219
  }
220
+ function LoadingSpinner() {
221
+ return /*#__PURE__*/_jsx(Placeholder, {
222
+ className: "block-editor-global-styles-background-panel__loading",
223
+ children: /*#__PURE__*/_jsx(Spinner, {})
224
+ });
225
+ }
220
226
  function BackgroundImageControls({
221
227
  onChange,
222
228
  style,
223
229
  inheritedValue,
224
230
  onRemoveImage = noop,
231
+ onResetImage = noop,
225
232
  displayInPanel,
226
- themeFileURIs
233
+ defaultValues
227
234
  }) {
228
- const mediaUpload = useSelect(select => select(blockEditorStore).getSettings().mediaUpload, []);
235
+ const [isUploading, setIsUploading] = useState(false);
236
+ const {
237
+ getSettings
238
+ } = useSelect(blockEditorStore);
229
239
  const {
230
240
  id,
231
241
  title,
@@ -241,14 +251,17 @@ function BackgroundImageControls({
241
251
  createErrorNotice(message, {
242
252
  type: 'snackbar'
243
253
  });
254
+ setIsUploading(false);
244
255
  };
245
256
  const resetBackgroundImage = () => onChange(setImmutably(style, ['background', 'backgroundImage'], undefined));
246
257
  const onSelectMedia = media => {
247
258
  if (!media || !media.url) {
248
259
  resetBackgroundImage();
260
+ setIsUploading(false);
249
261
  return;
250
262
  }
251
263
  if (isBlobURL(media.url)) {
264
+ setIsUploading(true);
252
265
  return;
253
266
  }
254
267
 
@@ -257,8 +270,8 @@ function BackgroundImageControls({
257
270
  onUploadError(__('Only images can be used as a background image.'));
258
271
  return;
259
272
  }
260
- const sizeValue = style?.background?.backgroundSize || inheritedValue?.background?.backgroundSize;
261
- const positionValue = style?.background?.backgroundPosition || inheritedValue?.background?.backgroundPosition;
273
+ const sizeValue = style?.background?.backgroundSize || defaultValues?.backgroundSize;
274
+ const positionValue = style?.background?.backgroundPosition;
262
275
  onChange(setImmutably(style, ['background'], {
263
276
  ...style?.background,
264
277
  backgroundImage: {
@@ -267,18 +280,29 @@ function BackgroundImageControls({
267
280
  source: 'file',
268
281
  title: media.title || undefined
269
282
  },
270
- backgroundPosition: !positionValue && ('auto' === sizeValue || !sizeValue) ? '50% 0' : positionValue,
283
+ backgroundPosition:
284
+ /*
285
+ * A background image uploaded and set in the editor receives a default background position of '50% 0',
286
+ * when the background image size is the equivalent of "Tile".
287
+ * This is to increase the chance that the image's focus point is visible.
288
+ * This is in-editor only to assist with the user experience.
289
+ */
290
+ !positionValue && ('auto' === sizeValue || !sizeValue) ? '50% 0' : positionValue,
271
291
  backgroundSize: sizeValue
272
292
  }));
293
+ setIsUploading(false);
273
294
  };
295
+
296
+ // Drag and drop callback, restricting image to one.
274
297
  const onFilesDrop = filesList => {
275
- mediaUpload({
298
+ if (filesList?.length > 1) {
299
+ onUploadError(__('Only one image can be used as a background image.'));
300
+ return;
301
+ }
302
+ getSettings().mediaUpload({
276
303
  allowedTypes: [IMAGE_BACKGROUND_TYPE],
277
304
  filesList,
278
305
  onFileChange([image]) {
279
- if (isBlobURL(image?.url)) {
280
- return;
281
- }
282
306
  onSelectMedia(image);
283
307
  },
284
308
  onError: onUploadError
@@ -293,13 +317,15 @@ function BackgroundImageControls({
293
317
  toggleButton?.focus();
294
318
  toggleButton?.click();
295
319
  };
296
- const onRemove = () => onChange(setImmutably(style, ['background', 'backgroundImage'], 'none'));
320
+ const onRemove = () => onChange(setImmutably(style, ['background'], {
321
+ backgroundImage: 'none'
322
+ }));
297
323
  const canRemove = !hasValue && hasBackgroundImageValue(inheritedValue);
298
324
  const imgLabel = title || getFilename(url) || __('Add background image');
299
325
  return /*#__PURE__*/_jsxs("div", {
300
326
  ref: replaceContainerRef,
301
327
  className: "block-editor-global-styles-background-panel__image-tools-panel-item",
302
- children: [/*#__PURE__*/_jsxs(MediaReplaceFlow, {
328
+ children: [isUploading && /*#__PURE__*/_jsx(LoadingSpinner, {}), /*#__PURE__*/_jsxs(MediaReplaceFlow, {
303
329
  mediaId: id,
304
330
  mediaURL: url,
305
331
  allowedTypes: [IMAGE_BACKGROUND_TYPE],
@@ -312,23 +338,25 @@ function BackgroundImageControls({
312
338
  },
313
339
  name: /*#__PURE__*/_jsx(InspectorImagePreviewItem, {
314
340
  className: "block-editor-global-styles-background-panel__image-preview",
315
- imgUrl: getResolvedThemeFilePath(url, themeFileURIs),
341
+ imgUrl: url,
316
342
  filename: title,
317
343
  label: imgLabel
318
344
  }),
319
345
  variant: "secondary",
346
+ onError: onUploadError,
320
347
  children: [canRemove && /*#__PURE__*/_jsx(MenuItem, {
321
348
  onClick: () => {
322
349
  closeAndFocus();
323
350
  onRemove();
351
+ onRemoveImage();
324
352
  },
325
353
  children: __('Remove')
326
354
  }), hasValue && /*#__PURE__*/_jsx(MenuItem, {
327
355
  onClick: () => {
328
356
  closeAndFocus();
329
- onRemoveImage();
357
+ onResetImage();
330
358
  },
331
- children: __('Reset ')
359
+ children: __('Reset')
332
360
  })]
333
361
  }), /*#__PURE__*/_jsx(DropZone, {
334
362
  onFilesDrop: onFilesDrop,
@@ -340,13 +368,12 @@ function BackgroundSizeControls({
340
368
  onChange,
341
369
  style,
342
370
  inheritedValue,
343
- defaultValues,
344
- themeFileURIs
371
+ defaultValues
345
372
  }) {
346
373
  const sizeValue = style?.background?.backgroundSize || inheritedValue?.background?.backgroundSize;
347
374
  const repeatValue = style?.background?.backgroundRepeat || inheritedValue?.background?.backgroundRepeat;
348
375
  const imageValue = style?.background?.backgroundImage?.url || inheritedValue?.background?.backgroundImage?.url;
349
- const isUploadedImage = style?.background?.backgroundImage?.id || inheritedValue?.background?.backgroundImage?.id;
376
+ const isUploadedImage = style?.background?.backgroundImage?.id;
350
377
  const positionValue = style?.background?.backgroundPosition || inheritedValue?.background?.backgroundPosition;
351
378
  const attachmentValue = style?.background?.backgroundAttachment || inheritedValue?.background?.backgroundAttachment;
352
379
 
@@ -356,8 +383,12 @@ function BackgroundSizeControls({
356
383
  * Block-level controls may have different defaults to root-level controls.
357
384
  * A falsy value is treated by default as `auto` (Tile).
358
385
  */
359
- const currentValueForToggle = !sizeValue && isUploadedImage ? defaultValues?.backgroundSize : sizeValue || 'auto';
360
-
386
+ let currentValueForToggle = !sizeValue && isUploadedImage ? defaultValues?.backgroundSize : sizeValue || 'auto';
387
+ /*
388
+ * The incoming value could be a value + unit, e.g. '20px'.
389
+ * In this case set the value to 'tile'.
390
+ */
391
+ currentValueForToggle = !['cover', 'contain', 'auto'].includes(currentValueForToggle) ? 'auto' : currentValueForToggle;
361
392
  /*
362
393
  * If the current value is `cover` and the repeat value is `undefined`, then
363
394
  * the toggle should be unchecked as the default state. Otherwise, the toggle
@@ -383,6 +414,7 @@ function BackgroundSizeControls({
383
414
  * receives a default background position of '50% 0',
384
415
  * when the toggle switches to "Tile". This is to increase the chance that
385
416
  * the image's focus point is visible.
417
+ * This is in-editor only to assist with the user experience.
386
418
  */
387
419
  if (!!style?.background?.backgroundImage?.id) {
388
420
  nextPosition = '50% 0';
@@ -408,22 +440,23 @@ function BackgroundSizeControls({
408
440
  };
409
441
  const toggleIsRepeated = () => onChange(setImmutably(style, ['background', 'backgroundRepeat'], repeatCheckedValue === true ? 'no-repeat' : 'repeat'));
410
442
  const toggleScrollWithPage = () => onChange(setImmutably(style, ['background', 'backgroundAttachment'], attachmentValue === 'fixed' ? 'scroll' : 'fixed'));
443
+
444
+ // Set a default background position for non-site-wide, uploaded images with a size of 'contain'.
445
+ const backgroundPositionValue = !positionValue && isUploadedImage && 'contain' === sizeValue ? defaultValues?.backgroundPosition : positionValue;
411
446
  return /*#__PURE__*/_jsxs(VStack, {
412
- spacing: 4,
447
+ spacing: 3,
413
448
  className: "single-column",
414
449
  children: [/*#__PURE__*/_jsx(FocalPointPicker, {
415
- __next40pxDefaultSize: true,
416
450
  __nextHasNoMarginBottom: true,
417
451
  label: __('Focal point'),
418
- url: getResolvedThemeFilePath(imageValue, themeFileURIs),
419
- value: backgroundPositionToCoords(positionValue),
452
+ url: imageValue,
453
+ value: backgroundPositionToCoords(backgroundPositionValue),
420
454
  onChange: updateBackgroundPosition
421
455
  }), /*#__PURE__*/_jsx(ToggleControl, {
422
456
  __nextHasNoMarginBottom: true,
423
457
  label: __('Fixed background'),
424
458
  checked: attachmentValue === 'fixed',
425
- onChange: toggleScrollWithPage,
426
- help: __('Whether your image should scroll with the page or stay fixed in place.')
459
+ onChange: toggleScrollWithPage
427
460
  }), /*#__PURE__*/_jsxs(ToggleGroupControl, {
428
461
  __nextHasNoMarginBottom: true,
429
462
  size: "__unstable-large",
@@ -480,7 +513,7 @@ function BackgroundToolsPanel({
480
513
  };
481
514
  return /*#__PURE__*/_jsx(VStack, {
482
515
  as: ToolsPanel,
483
- spacing: 4,
516
+ spacing: 2,
484
517
  label: headerLabel,
485
518
  resetAll: resetAll,
486
519
  panelId: panelId,
@@ -497,9 +530,42 @@ export default function BackgroundPanel({
497
530
  panelId,
498
531
  defaultControls = DEFAULT_CONTROLS,
499
532
  defaultValues = {},
500
- headerLabel = __('Background image'),
501
- themeFileURIs
533
+ headerLabel = __('Background image')
502
534
  }) {
535
+ /*
536
+ * Resolve any inherited "ref" pointers.
537
+ * Should the block editor need resolved, inherited values
538
+ * across all controls, this could be abstracted into a hook,
539
+ * e.g., useResolveGlobalStyle
540
+ */
541
+ const {
542
+ globalStyles,
543
+ _links
544
+ } = useSelect(select => {
545
+ const {
546
+ getSettings
547
+ } = select(blockEditorStore);
548
+ const _settings = getSettings();
549
+ return {
550
+ globalStyles: _settings[globalStylesDataKey],
551
+ _links: _settings[globalStylesLinksDataKey]
552
+ };
553
+ }, []);
554
+ const resolvedInheritedValue = useMemo(() => {
555
+ const resolvedValues = {
556
+ background: {}
557
+ };
558
+ if (!inheritedValue?.background) {
559
+ return inheritedValue;
560
+ }
561
+ Object.entries(inheritedValue?.background).forEach(([key, backgroundValue]) => {
562
+ resolvedValues.background[key] = getResolvedValue(backgroundValue, {
563
+ styles: globalStyles,
564
+ _links
565
+ });
566
+ });
567
+ return resolvedValues;
568
+ }, [globalStyles, _links, inheritedValue]);
503
569
  const resetAllFilter = useCallback(previousValue => {
504
570
  return {
505
571
  ...previousValue,
@@ -511,10 +577,11 @@ export default function BackgroundPanel({
511
577
  title,
512
578
  url
513
579
  } = value?.background?.backgroundImage || {
514
- ...inheritedValue?.background?.backgroundImage
580
+ ...resolvedInheritedValue?.background?.backgroundImage
515
581
  };
516
- const hasImageValue = hasBackgroundImageValue(value) || hasBackgroundImageValue(inheritedValue);
517
- const shouldShowBackgroundImageControls = hasImageValue && (settings?.background?.backgroundSize || settings?.background?.backgroundPosition || settings?.background?.backgroundRepeat);
582
+ const hasImageValue = hasBackgroundImageValue(value) || hasBackgroundImageValue(resolvedInheritedValue);
583
+ const imageValue = value?.background?.backgroundImage || inheritedValue?.background?.backgroundImage;
584
+ const shouldShowBackgroundImageControls = hasImageValue && 'none' !== imageValue && (settings?.background?.backgroundSize || settings?.background?.backgroundPosition || settings?.background?.backgroundRepeat);
518
585
  const [isDropDownOpen, setIsDropDownOpen] = useState(false);
519
586
  return /*#__PURE__*/_jsx(Wrapper, {
520
587
  resetAllFilter: resetAllFilter,
@@ -527,7 +594,7 @@ export default function BackgroundPanel({
527
594
  'is-open': isDropDownOpen
528
595
  }),
529
596
  children: /*#__PURE__*/_jsx(ToolsPanelItem, {
530
- hasValue: () => hasImageValue,
597
+ hasValue: () => !!value?.background,
531
598
  label: __('Image'),
532
599
  onDeselect: resetBackground,
533
600
  isShownByDefault: defaultControls.backgroundImage,
@@ -535,7 +602,7 @@ export default function BackgroundPanel({
535
602
  children: shouldShowBackgroundImageControls ? /*#__PURE__*/_jsx(BackgroundControlsPanel, {
536
603
  label: title,
537
604
  filename: title,
538
- url: getResolvedThemeFilePath(url, themeFileURIs),
605
+ url: url,
539
606
  onToggle: setIsDropDownOpen,
540
607
  hasImageValue: hasImageValue,
541
608
  children: /*#__PURE__*/_jsxs(VStack, {
@@ -544,27 +611,32 @@ export default function BackgroundPanel({
544
611
  children: [/*#__PURE__*/_jsx(BackgroundImageControls, {
545
612
  onChange: onChange,
546
613
  style: value,
547
- inheritedValue: inheritedValue,
548
- themeFileURIs: themeFileURIs,
614
+ inheritedValue: resolvedInheritedValue,
549
615
  displayInPanel: true,
550
- onRemoveImage: () => {
616
+ onResetImage: () => {
551
617
  setIsDropDownOpen(false);
552
618
  resetBackground();
553
- }
619
+ },
620
+ onRemoveImage: () => setIsDropDownOpen(false),
621
+ defaultValues: defaultValues
554
622
  }), /*#__PURE__*/_jsx(BackgroundSizeControls, {
555
623
  onChange: onChange,
556
624
  panelId: panelId,
557
625
  style: value,
558
626
  defaultValues: defaultValues,
559
- inheritedValue: inheritedValue,
560
- themeFileURIs: themeFileURIs
627
+ inheritedValue: resolvedInheritedValue
561
628
  })]
562
629
  })
563
630
  }) : /*#__PURE__*/_jsx(BackgroundImageControls, {
564
631
  onChange: onChange,
565
632
  style: value,
566
- inheritedValue: inheritedValue,
567
- themeFileURIs: themeFileURIs
633
+ inheritedValue: resolvedInheritedValue,
634
+ defaultValues: defaultValues,
635
+ onResetImage: () => {
636
+ setIsDropDownOpen(false);
637
+ resetBackground();
638
+ },
639
+ onRemoveImage: () => setIsDropDownOpen(false)
568
640
  })
569
641
  })
570
642
  })
@@ -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","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","isUploadedImage","attachmentValue","backgroundAttachment","currentValueForToggle","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","toggleScrollWithPage","spacing","__next40pxDefaultSize","__nextHasNoMarginBottom","checked","help","size","isBlock","__unstableInputWidth","min","placeholder","disabled","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 =\n\t\t\tstyle?.background?.backgroundSize ||\n\t\t\tinheritedValue?.background?.backgroundSize;\n\t\tconst positionValue =\n\t\t\tstyle?.background?.backgroundPosition ||\n\t\t\tinheritedValue?.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\tbackgroundSize: sizeValue,\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 isUploadedImage =\n\t\tstyle?.background?.backgroundImage?.id ||\n\t\tinheritedValue?.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\tconst currentValueForToggle =\n\t\t! sizeValue && isUploadedImage\n\t\t\t? defaultValues?.backgroundSize\n\t\t\t: sizeValue || 'auto';\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\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\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\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={ 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<ToolsPanelItem\n\t\t\t\t\thasValue={ () => hasImageValue }\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={ 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\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={ inheritedValue }\n\t\t\t\t\t\t\t\t\tthemeFileURIs={ themeFileURIs }\n\t\t\t\t\t\t\t\t\tdisplayInPanel\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\tresetBackground();\n\t\t\t\t\t\t\t\t\t} }\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={ inheritedValue }\n\t\t\t\t\t\t\t\t\tthemeFileURIs={ themeFileURIs }\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={ inheritedValue }\n\t\t\t\t\t\t\tthemeFileURIs={ themeFileURIs }\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":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SACCC,wBAAwB,IAAIC,UAAU,EACtCC,4BAA4B,IAAIC,cAAc,EAC9CC,aAAa,EACbC,gCAAgC,IAAIC,kBAAkB,EACtDC,sCAAsC,IAAIC,wBAAwB,EAClEC,yBAAyB,IAAIC,WAAW,EACxCC,oBAAoB,IAAIC,MAAM,EAC9BC,QAAQ,EACRC,QAAQ,EACRC,gBAAgB,EAChBC,QAAQ,EACRC,cAAc,EACdC,uBAAuB,IAAIC,SAAS,EACpCC,oBAAoB,IAAIC,MAAM,EAC9BC,sBAAsB,IAAIC,QAAQ,EAClCC,QAAQ,EACRC,oCAAoC,IAAIC,sBAAsB,QACxD,uBAAuB;AAC9B,SAASC,EAAE,EAAEC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AACjD,SAASC,KAAK,IAAIC,YAAY,QAAQ,oBAAoB;AAC1D,SAASC,WAAW,QAAQ,gBAAgB;AAC5C,SACCC,WAAW,EACXC,QAAQ,EACRC,MAAM,EACNC,QAAQ,EACRC,SAAS,QACH,oBAAoB;AAC3B,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SAASC,KAAK,QAAQ,gBAAgB;AACtC,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,SAASC,8BAA8B,QAAQ,SAAS;AACxD,SAASC,YAAY,QAAQ,oBAAoB;AACjD,OAAOC,gBAAgB,MAAM,uBAAuB;AACpD,SAASd,KAAK,IAAIe,gBAAgB,QAAQ,aAAa;AACvD,SAASC,wBAAwB,QAAQ,wBAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAElE,MAAMC,qBAAqB,GAAG,OAAO;AACrC,MAAMC,gBAAgB,GAAG;EACxBC,eAAe,EAAE;AAClB,CAAC;AACD,MAAMC,wBAAwB,GAAG;EAChCC,SAAS,EAAE,YAAY;EACvBC,MAAM,EAAE,EAAE;EACVC,KAAK,EAAE,IAAI;EACXC,SAAS,EAAE;AACZ,CAAC;AACD,MAAMC,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CAAEC,QAAQ,EAAG;EACjD,OAAO3B,QAAQ,CAAC4B,EAAE,KAAK,KAAK,IAAID,QAAQ,EAAEE,UAAU,EAAEV,eAAe;AACtE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASW,sBAAsBA,CAAEC,KAAK,EAAG;EAC/C,OACCA,KAAK,EAAEF,UAAU,EAAEG,kBAAkB,KAAKC,SAAS,IACnDF,KAAK,EAAEF,UAAU,EAAEK,cAAc,KAAKD,SAAS;AAEjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,uBAAuBA,CAAEJ,KAAK,EAAG;EAChD,OACC,CAAC,CAAEA,KAAK,EAAEF,UAAU,EAAEV,eAAe,EAAEiB,EAAE;EACzC;EACA,QAAQ,KAAK,OAAOL,KAAK,EAAEF,UAAU,EAAEV,eAAe,IACtD,CAAC,CAAEY,KAAK,EAAEF,UAAU,EAAEV,eAAe,EAAEkB,GAAG;AAE5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,sBAAsBA,CAAEC,KAAK,EAAG;EACxC,IAAKA,KAAK,KAAK,OAAO,IAAIA,KAAK,KAAKN,SAAS,EAAG;IAC/C,OAAOxC,EAAE,CAAE,gCAAiC,CAAC;EAC9C;EACA,IAAK8C,KAAK,KAAK,SAAS,EAAG;IAC1B,OAAO9C,EAAE,CAAE,wCAAyC,CAAC;EACtD;EACA,OAAOA,EAAE,CAAE,0BAA2B,CAAC;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAM+C,0BAA0B,GAAKD,KAAK,IAAM;EACtD,IAAK,CAAEA,KAAK,IAAME,KAAK,CAAEF,KAAK,CAACG,CAAE,CAAC,IAAID,KAAK,CAAEF,KAAK,CAACI,CAAE,CAAG,EAAG;IAC1D,OAAOV,SAAS;EACjB;EAEA,MAAMS,CAAC,GAAGD,KAAK,CAAEF,KAAK,CAACG,CAAE,CAAC,GAAG,GAAG,GAAGH,KAAK,CAACG,CAAC;EAC1C,MAAMC,CAAC,GAAGF,KAAK,CAAEF,KAAK,CAACI,CAAE,CAAC,GAAG,GAAG,GAAGJ,KAAK,CAACI,CAAC;EAE1C,OAAQ,GAAGD,CAAC,GAAG,GAAK,KAAKC,CAAC,GAAG,GAAK,GAAE;AACrC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,0BAA0B,GAAKL,KAAK,IAAM;EACtD,IAAK,CAAEA,KAAK,EAAG;IACd,OAAO;MAAEG,CAAC,EAAET,SAAS;MAAEU,CAAC,EAAEV;IAAU,CAAC;EACtC;EAEA,IAAI,CAAES,CAAC,EAAEC,CAAC,CAAE,GAAGJ,KAAK,CAACM,KAAK,CAAE,GAAI,CAAC,CAACC,GAAG,CAAIC,CAAC,IAAMC,UAAU,CAAED,CAAE,CAAC,GAAG,GAAI,CAAC;EACvEL,CAAC,GAAGD,KAAK,CAAEC,CAAE,CAAC,GAAGT,SAAS,GAAGS,CAAC;EAC9BC,CAAC,GAAGF,KAAK,CAAEE,CAAE,CAAC,GAAGD,CAAC,GAAGC,CAAC;EAEtB,OAAO;IAAED,CAAC;IAAEC;EAAE,CAAC;AAChB,CAAC;AAED,SAASM,yBAAyBA,CAAE;EACnCC,EAAE,GAAG,MAAM;EACXC,MAAM;EACNC,WAAW,GAAG,CAAC,CAAC;EAChBC,QAAQ;EACRC,KAAK;EACL9B,SAAS;EACT+B,gBAAgB,GAAG9B;AACpB,CAAC,EAAG;EACHtB,SAAS,CAAE,MAAM;IAChB,IAAK,OAAOiD,WAAW,EAAEI,MAAM,KAAK,WAAW,EAAG;MACjDD,gBAAgB,CAAEH,WAAW,EAAEI,MAAO,CAAC;IACxC;EACD,CAAC,EAAE,CAAEJ,WAAW,EAAEI,MAAM,EAAED,gBAAgB,CAAG,CAAC;EAC9C,oBACCzC,IAAA,CAAC7B,SAAS;IAACiE,EAAE,EAAGA,EAAI;IAAC1B,SAAS,EAAGA,SAAW;IAAA,GAAM4B,WAAW;IAAAK,QAAA,eAC5DzC,KAAA,CAAC7B,MAAM;MACNuE,OAAO,EAAC,YAAY;MACpBR,EAAE,EAAC,MAAM;MACT1B,SAAS,EAAC,sEAAsE;MAAAiC,QAAA,GAE9EN,MAAM,iBACPrC,IAAA;QACCU,SAAS,EAAC,gFAAgF;QAC1F,mBAAW;QAAAiC,QAAA,eAEX3C,IAAA;UACCU,SAAS,EAAC,wEAAwE;UAClFO,KAAK,EAAG;YACPZ,eAAe,EAAG,OAAOgC,MAAQ;UAClC;QAAG,CACH;MAAC,CACG,CACN,eACDnC,KAAA,CAACpC,QAAQ;QAACsE,EAAE,EAAC,MAAM;QAACnB,KAAK,EAAGoB,MAAM,GAAG,CAAC,CAAC,GAAG;UAAEQ,QAAQ,EAAE;QAAE,CAAG;QAAAF,QAAA,gBAC1D3C,IAAA,CAACzB,QAAQ;UACRuE,aAAa,EAAG,CAAG;UACnBpC,SAAS,EAAC,4EAA4E;UAAAiC,QAAA,EAEpFH;QAAK,CACE,CAAC,eACXxC,IAAA,CAAC/B,cAAc;UAACmE,EAAE,EAAC,MAAM;UAAAO,QAAA,EACtBN,MAAM,GACLxD,OAAO,EACP;UACAF,EAAE,CAAE,sBAAuB,CAAC,EAC5B4D,QAAQ,IAAIC,KACZ,CAAC,GACD7D,EAAE,CAAE,8BAA+B;QAAC,CACxB,CAAC;MAAA,CACR,CAAC;IAAA,CACJ;EAAC,CACC,CAAC;AAEd;AAEA,SAASoE,uBAAuBA,CAAE;EACjCP,KAAK;EACLD,QAAQ;EACRhB,GAAG,EAAEc,MAAM;EACXM,QAAQ;EACRK,QAAQ,EAAEP,gBAAgB,GAAG9B,IAAI;EACjCsC;AACD,CAAC,EAAG;EACH,IAAK,CAAEA,aAAa,EAAG;IACtB;EACD;EAEA,MAAMC,QAAQ,GACbV,KAAK,IAAIxD,WAAW,CAAEqD,MAAO,CAAC,IAAI1D,EAAE,CAAE,sBAAuB,CAAC;EAE/D,oBACCqB,IAAA,CAACxB,QAAQ;IACR2E,YAAY,EAAG7C,wBAA0B;IACzC8C,YAAY,EAAGA,CAAE;MAAEJ,QAAQ;MAAEN;IAAO,CAAC,KAAM;MAC1C,MAAMJ,WAAW,GAAG;QACnBe,OAAO,EAAEL,QAAQ;QACjBtC,SAAS,EACR,8DAA8D;QAC/D,eAAe,EAAEgC,MAAM;QACvB,YAAY,EAAE/D,EAAE,CACf,+CACD,CAAC;QACD+D;MACD,CAAC;MACD,oBACC1C,IAAA,CAACmC,yBAAyB;QACzBE,MAAM,EAAGA,MAAQ;QACjBE,QAAQ,EAAGA,QAAU;QACrBC,KAAK,EAAGU,QAAU;QAClBZ,WAAW,EAAGA,WAAa;QAC3BF,EAAE,EAAC,QAAQ;QACXK,gBAAgB,EAAGA;MAAkB,CACrC,CAAC;IAEJ,CAAG;IACHa,aAAa,EAAGA,CAAA,kBACftD,IAAA,CAACtB,sBAAsB;MACtBgC,SAAS,EAAC,uEAAuE;MACjF6C,WAAW,EAAC,QAAQ;MAAAZ,QAAA,EAElBA;IAAQ,CACa;EACtB,CACH,CAAC;AAEJ;AAEA,SAASa,uBAAuBA,CAAE;EACjCC,QAAQ;EACRxC,KAAK;EACLyC,cAAc;EACdC,aAAa,GAAGhD,IAAI;EACpBiD,cAAc;EACdC;AACD,CAAC,EAAG;EACH,MAAMC,WAAW,GAAGvE,SAAS,CAC1BwE,MAAM,IAAMA,MAAM,CAAElE,gBAAiB,CAAC,CAACmE,WAAW,CAAC,CAAC,CAACF,WAAW,EAClE,EACD,CAAC;EAED,MAAM;IAAExC,EAAE;IAAE2C,KAAK;IAAE1C;EAAI,CAAC,GAAGN,KAAK,EAAEF,UAAU,EAAEV,eAAe,IAAI;IAChE,GAAGqD,cAAc,EAAE3C,UAAU,EAAEV;EAChC,CAAC;EACD,MAAM6D,mBAAmB,GAAG/E,MAAM,CAAC,CAAC;EACpC,MAAM;IAAEgF;EAAkB,CAAC,GAAG7E,WAAW,CAAEP,YAAa,CAAC;EACzD,MAAMqF,aAAa,GAAKC,OAAO,IAAM;IACpCF,iBAAiB,CAAEE,OAAO,EAAE;MAAEC,IAAI,EAAE;IAAW,CAAE,CAAC;EACnD,CAAC;EAED,MAAMC,oBAAoB,GAAGA,CAAA,KAC5Bd,QAAQ,CACP9D,YAAY,CACXsB,KAAK,EACL,CAAE,YAAY,EAAE,iBAAiB,CAAE,EACnCE,SACD,CACD,CAAC;EAEF,MAAMqD,aAAa,GAAKC,KAAK,IAAM;IAClC,IAAK,CAAEA,KAAK,IAAI,CAAEA,KAAK,CAAClD,GAAG,EAAG;MAC7BgD,oBAAoB,CAAC,CAAC;MACtB;IACD;IAEA,IAAK9E,SAAS,CAAEgF,KAAK,CAAClD,GAAI,CAAC,EAAG;MAC7B;IACD;;IAEA;IACA,IACGkD,KAAK,CAACC,UAAU,IACjBD,KAAK,CAACC,UAAU,KAAKvE,qBAAqB,IACzC,CAAEsE,KAAK,CAACC,UAAU,IACnBD,KAAK,CAACH,IAAI,IACVG,KAAK,CAACH,IAAI,KAAKnE,qBAAuB,EACtC;MACDiE,aAAa,CACZzF,EAAE,CAAE,gDAAiD,CACtD,CAAC;MACD;IACD;IAEA,MAAMgG,SAAS,GACd1D,KAAK,EAAEF,UAAU,EAAEK,cAAc,IACjCsC,cAAc,EAAE3C,UAAU,EAAEK,cAAc;IAC3C,MAAMwD,aAAa,GAClB3D,KAAK,EAAEF,UAAU,EAAEG,kBAAkB,IACrCwC,cAAc,EAAE3C,UAAU,EAAEG,kBAAkB;IAE/CuC,QAAQ,CACP9D,YAAY,CAAEsB,KAAK,EAAE,CAAE,YAAY,CAAE,EAAE;MACtC,GAAGA,KAAK,EAAEF,UAAU;MACpBV,eAAe,EAAE;QAChBkB,GAAG,EAAEkD,KAAK,CAAClD,GAAG;QACdD,EAAE,EAAEmD,KAAK,CAACnD,EAAE;QACZuD,MAAM,EAAE,MAAM;QACdZ,KAAK,EAAEQ,KAAK,CAACR,KAAK,IAAI9C;MACvB,CAAC;MACDD,kBAAkB,EACjB,CAAE0D,aAAa,KAAM,MAAM,KAAKD,SAAS,IAAI,CAAEA,SAAS,CAAE,GACvD,OAAO,GACPC,aAAa;MACjBxD,cAAc,EAAEuD;IACjB,CAAE,CACH,CAAC;EACF,CAAC;EAED,MAAMG,WAAW,GAAKC,SAAS,IAAM;IACpCjB,WAAW,CAAE;MACZkB,YAAY,EAAE,CAAE7E,qBAAqB,CAAE;MACvC4E,SAAS;MACTE,YAAYA,CAAE,CAAEC,KAAK,CAAE,EAAG;QACzB,IAAKzF,SAAS,CAAEyF,KAAK,EAAE3D,GAAI,CAAC,EAAG;UAC9B;QACD;QACAiD,aAAa,CAAEU,KAAM,CAAC;MACvB,CAAC;MACDC,OAAO,EAAEf;IACV,CAAE,CAAC;EACJ,CAAC;EAED,MAAMgB,QAAQ,GAAG/D,uBAAuB,CAAEJ,KAAM,CAAC;EAEjD,MAAMoE,aAAa,GAAGA,CAAA,KAAM;IAC3B,MAAM,CAAEC,YAAY,CAAE,GAAG9F,KAAK,CAAC+F,QAAQ,CAACC,IAAI,CAC3CtB,mBAAmB,CAACuB,OACrB,CAAC;IACD;IACA;IACA;IACAH,YAAY,EAAE9F,KAAK,CAAC,CAAC;IACrB8F,YAAY,EAAEI,KAAK,CAAC,CAAC;EACtB,CAAC;EAED,MAAMC,QAAQ,GAAGA,CAAA,KAChBlC,QAAQ,CACP9D,YAAY,CAAEsB,KAAK,EAAE,CAAE,YAAY,EAAE,iBAAiB,CAAE,EAAE,MAAO,CAClE,CAAC;EACF,MAAM2E,SAAS,GAAG,CAAER,QAAQ,IAAI/D,uBAAuB,CAAEqC,cAAe,CAAC;EACzE,MAAMR,QAAQ,GACbe,KAAK,IAAIjF,WAAW,CAAEuC,GAAI,CAAC,IAAI5C,EAAE,CAAE,sBAAuB,CAAC;EAE5D,oBACCuB,KAAA;IACC2F,GAAG,EAAG3B,mBAAqB;IAC3BxD,SAAS,EAAC,qEAAqE;IAAAiC,QAAA,gBAE/EzC,KAAA,CAACN,gBAAgB;MAChBkG,OAAO,EAAGxE,EAAI;MACdyE,QAAQ,EAAGxE,GAAK;MAChByD,YAAY,EAAG,CAAE7E,qBAAqB,CAAI;MAC1C6F,MAAM,EAAC,SAAS;MAChBC,QAAQ,EAAGzB,aAAe;MAC1BrB,YAAY,EAAG;QACdzC,SAAS,EAAE3D,IAAI,CAAE;UAChB,oEAAoE,EACnE6G;QACF,CAAE;MACH,CAAG;MACHsC,IAAI,eACHlG,IAAA,CAACmC,yBAAyB;QACzBzB,SAAS,EAAC,4DAA4D;QACtE2B,MAAM,EAAGvC,wBAAwB,CAChCyB,GAAG,EACHsC,aACD,CAAG;QACHtB,QAAQ,EAAG0B,KAAO;QAClBzB,KAAK,EAAGU;MAAU,CAClB,CACD;MACDiD,OAAO,EAAC,WAAW;MAAAxD,QAAA,GAEjBiD,SAAS,iBACV5F,IAAA,CAAChC,QAAQ;QACRqF,OAAO,EAAGA,CAAA,KAAM;UACfgC,aAAa,CAAC,CAAC;UACfM,QAAQ,CAAC,CAAC;QACX,CAAG;QAAAhD,QAAA,EAEDhE,EAAE,CAAE,QAAS;MAAC,CACP,CACV,EACCyG,QAAQ,iBACTpF,IAAA,CAAChC,QAAQ;QACRqF,OAAO,EAAGA,CAAA,KAAM;UACfgC,aAAa,CAAC,CAAC;UACf1B,aAAa,CAAC,CAAC;QAChB,CAAG;QAAAhB,QAAA,EAEDhE,EAAE,CAAE,QAAS;MAAC,CACP,CACV;IAAA,CACgB,CAAC,eACnBqB,IAAA,CAACnC,QAAQ;MACRiH,WAAW,EAAGA,WAAa;MAC3BtC,KAAK,EAAG7D,EAAE,CAAE,gBAAiB;IAAG,CAChC,CAAC;EAAA,CACE,CAAC;AAER;AAEA,SAASyH,sBAAsBA,CAAE;EAChC3C,QAAQ;EACRxC,KAAK;EACLyC,cAAc;EACd2C,aAAa;EACbxC;AACD,CAAC,EAAG;EACH,MAAMc,SAAS,GACd1D,KAAK,EAAEF,UAAU,EAAEK,cAAc,IACjCsC,cAAc,EAAE3C,UAAU,EAAEK,cAAc;EAC3C,MAAMkF,WAAW,GAChBrF,KAAK,EAAEF,UAAU,EAAEwF,gBAAgB,IACnC7C,cAAc,EAAE3C,UAAU,EAAEwF,gBAAgB;EAC7C,MAAMC,UAAU,GACfvF,KAAK,EAAEF,UAAU,EAAEV,eAAe,EAAEkB,GAAG,IACvCmC,cAAc,EAAE3C,UAAU,EAAEV,eAAe,EAAEkB,GAAG;EACjD,MAAMkF,eAAe,GACpBxF,KAAK,EAAEF,UAAU,EAAEV,eAAe,EAAEiB,EAAE,IACtCoC,cAAc,EAAE3C,UAAU,EAAEV,eAAe,EAAEiB,EAAE;EAChD,MAAMsD,aAAa,GAClB3D,KAAK,EAAEF,UAAU,EAAEG,kBAAkB,IACrCwC,cAAc,EAAE3C,UAAU,EAAEG,kBAAkB;EAC/C,MAAMwF,eAAe,GACpBzF,KAAK,EAAEF,UAAU,EAAE4F,oBAAoB,IACvCjD,cAAc,EAAE3C,UAAU,EAAE4F,oBAAoB;;EAEjD;AACD;AACA;AACA;AACA;AACA;EACC,MAAMC,qBAAqB,GAC1B,CAAEjC,SAAS,IAAI8B,eAAe,GAC3BJ,aAAa,EAAEjF,cAAc,GAC7BuD,SAAS,IAAI,MAAM;;EAEvB;AACD;AACA;AACA;AACA;EACC,MAAMkC,kBAAkB,GAAG,EAC1BP,WAAW,KAAK,WAAW,IACzBM,qBAAqB,KAAK,OAAO,IAAIN,WAAW,KAAKnF,SAAW,CAClE;EAED,MAAM2F,oBAAoB,GAAKC,IAAI,IAAM;IACxC;IACA,IAAIC,UAAU,GAAGV,WAAW;IAC5B,IAAIW,YAAY,GAAGrC,aAAa;IAEhC,IAAKmC,IAAI,KAAK,SAAS,EAAG;MACzBC,UAAU,GAAG,WAAW;MACxBC,YAAY,GAAG9F,SAAS;IACzB;IAEA,IAAK4F,IAAI,KAAK,OAAO,EAAG;MACvBC,UAAU,GAAG7F,SAAS;MACtB8F,YAAY,GAAG9F,SAAS;IACzB;IAEA,IACC,CAAEyF,qBAAqB,KAAK,OAAO,IAClCA,qBAAqB,KAAK,SAAS,KACpCG,IAAI,KAAK,MAAM,EACd;MACDC,UAAU,GAAG7F,SAAS;MACtB;AACH;AACA;AACA;AACA;AACA;MACG,IAAK,CAAC,CAAEF,KAAK,EAAEF,UAAU,EAAEV,eAAe,EAAEiB,EAAE,EAAG;QAChD2F,YAAY,GAAG,OAAO;MACvB;IACD;;IAEA;AACF;AACA;AACA;IACE,IAAK,CAAEF,IAAI,IAAIH,qBAAqB,KAAK,MAAM,EAAG;MACjDG,IAAI,GAAG,MAAM;IACd;IAEAtD,QAAQ,CACP9D,YAAY,CAAEsB,KAAK,EAAE,CAAE,YAAY,CAAE,EAAE;MACtC,GAAGA,KAAK,EAAEF,UAAU;MACpBG,kBAAkB,EAAE+F,YAAY;MAChCV,gBAAgB,EAAES,UAAU;MAC5B5F,cAAc,EAAE2F;IACjB,CAAE,CACH,CAAC;EACF,CAAC;EAED,MAAMG,wBAAwB,GAAKH,IAAI,IAAM;IAC5CtD,QAAQ,CACP9D,YAAY,CACXsB,KAAK,EACL,CAAE,YAAY,EAAE,oBAAoB,CAAE,EACtCS,0BAA0B,CAAEqF,IAAK,CAClC,CACD,CAAC;EACF,CAAC;EAED,MAAMI,gBAAgB,GAAGA,CAAA,KACxB1D,QAAQ,CACP9D,YAAY,CACXsB,KAAK,EACL,CAAE,YAAY,EAAE,kBAAkB,CAAE,EACpC4F,kBAAkB,KAAK,IAAI,GAAG,WAAW,GAAG,QAC7C,CACD,CAAC;EAEF,MAAMO,oBAAoB,GAAGA,CAAA,KAC5B3D,QAAQ,CACP9D,YAAY,CACXsB,KAAK,EACL,CAAE,YAAY,EAAE,sBAAsB,CAAE,EACxCyF,eAAe,KAAK,OAAO,GAAG,QAAQ,GAAG,OAC1C,CACD,CAAC;EAEF,oBACCxG,KAAA,CAACtC,MAAM;IAACyJ,OAAO,EAAG,CAAG;IAAC3G,SAAS,EAAC,eAAe;IAAAiC,QAAA,gBAC9C3C,IAAA,CAACjC,gBAAgB;MAChBuJ,qBAAqB;MACrBC,uBAAuB;MACvB/E,KAAK,EAAG7D,EAAE,CAAE,aAAc,CAAG;MAC7B4C,GAAG,EAAGzB,wBAAwB,CAAE0G,UAAU,EAAE3C,aAAc,CAAG;MAC7DpC,KAAK,EAAGK,0BAA0B,CAAE8C,aAAc,CAAG;MACrDnB,QAAQ,EAAGyD;IAA0B,CACrC,CAAC,eACFlH,IAAA,CAAC5C,aAAa;MACbmK,uBAAuB;MACvB/E,KAAK,EAAG7D,EAAE,CAAE,kBAAmB,CAAG;MAClC6I,OAAO,EAAGd,eAAe,KAAK,OAAS;MACvCjD,QAAQ,EAAG2D,oBAAsB;MACjCK,IAAI,EAAG9I,EAAE,CACR,wEACD;IAAG,CACH,CAAC,eACFuB,KAAA,CAAC5C,kBAAkB;MAClBiK,uBAAuB;MACvBG,IAAI,EAAC,kBAAkB;MACvBlF,KAAK,EAAG7D,EAAE,CAAE,MAAO,CAAG;MACtB8C,KAAK,EAAGmF,qBAAuB;MAC/BnD,QAAQ,EAAGqD,oBAAsB;MACjCa,OAAO;MACPF,IAAI,EAAGjG,sBAAsB,CAC5BmD,SAAS,IAAI0B,aAAa,EAAEjF,cAC7B,CAAG;MAAAuB,QAAA,gBAEH3C,IAAA,CAACxC,wBAAwB;QAExBiE,KAAK,EAAC,OAAO;QACbe,KAAK,EAAG5D,EAAE,CACT,OAAO,EACP,0CACD;MAAG,GALC,OAMJ,CAAC,eACFoB,IAAA,CAACxC,wBAAwB;QAExBiE,KAAK,EAAC,SAAS;QACfe,KAAK,EAAG5D,EAAE,CACT,SAAS,EACT,0CACD;MAAG,GALC,SAMJ,CAAC,eACFoB,IAAA,CAACxC,wBAAwB;QAExBiE,KAAK,EAAC,MAAM;QACZe,KAAK,EAAG5D,EAAE,CACT,MAAM,EACN,0CACD;MAAG,GALC,MAMJ,CAAC;IAAA,CACiB,CAAC,eACrBsB,KAAA,CAAC7B,MAAM;MAACuE,OAAO,EAAC,YAAY;MAACyE,OAAO,EAAG,CAAG;MAACjF,EAAE,EAAC,MAAM;MAAAO,QAAA,gBACnD3C,IAAA,CAACtC,WAAW;QACX,cAAaiB,EAAE,CAAE,wBAAyB,CAAG;QAC7C8E,QAAQ,EAAGqD,oBAAsB;QACjCrF,KAAK,EAAGkD,SAAW;QACnB+C,IAAI,EAAC,kBAAkB;QACvBE,oBAAoB,EAAC,OAAO;QAC5BC,GAAG,EAAG,CAAG;QACTC,WAAW,EAAGnJ,EAAE,CAAE,MAAO,CAAG;QAC5BoJ,QAAQ,EACPnB,qBAAqB,KAAK,MAAM,IAChCA,qBAAqB,KAAKzF;MAC1B,CACD,CAAC,eACFnB,IAAA,CAAC5C,aAAa;QACbmK,uBAAuB;QACvB/E,KAAK,EAAG7D,EAAE,CAAE,QAAS,CAAG;QACxB6I,OAAO,EAAGX,kBAAoB;QAC9BpD,QAAQ,EAAG0D,gBAAkB;QAC7BY,QAAQ,EAAGnB,qBAAqB,KAAK;MAAS,CAC9C,CAAC;IAAA,CACK,CAAC;EAAA,CACF,CAAC;AAEX;AAEA,SAASoB,oBAAoBA,CAAE;EAC9BC,cAAc;EACdxE,QAAQ;EACRhC,KAAK;EACLyG,OAAO;EACPvF,QAAQ;EACRwF;AACD,CAAC,EAAG;EACH,MAAMC,iBAAiB,GAAG1I,8BAA8B,CAAC,CAAC;EAC1D,MAAM2I,QAAQ,GAAGA,CAAA,KAAM;IACtB,MAAMC,YAAY,GAAGL,cAAc,CAAExG,KAAM,CAAC;IAC5CgC,QAAQ,CAAE6E,YAAa,CAAC;EACzB,CAAC;EAED,oBACCtI,IAAA,CAACpC,MAAM;IACNwE,EAAE,EAAGnF,UAAY;IACjBoK,OAAO,EAAG,CAAG;IACb7E,KAAK,EAAG2F,WAAa;IACrBE,QAAQ,EAAGA,QAAU;IACrBH,OAAO,EAAGA,OAAS;IACnBE,iBAAiB,EAAGA,iBAAmB;IAAAzF,QAAA,EAErCA;EAAQ,CACH,CAAC;AAEX;AAEA,eAAe,SAAS4F,eAAeA,CAAE;EACxCnG,EAAE,EAAEoG,OAAO,GAAGR,oBAAoB;EAClCvG,KAAK;EACLgC,QAAQ;EACRC,cAAc,GAAGjC,KAAK;EACtBZ,QAAQ;EACRqH,OAAO;EACPO,eAAe,GAAGrI,gBAAgB;EAClCiG,aAAa,GAAG,CAAC,CAAC;EAClB8B,WAAW,GAAGxJ,EAAE,CAAE,kBAAmB,CAAC;EACtCkF;AACD,CAAC,EAAG;EACH,MAAMoE,cAAc,GAAGhJ,WAAW,CAAIyJ,aAAa,IAAM;IACxD,OAAO;MACN,GAAGA,aAAa;MAChB3H,UAAU,EAAE,CAAC;IACd,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAM4H,eAAe,GAAGA,CAAA,KACvBlF,QAAQ,CAAE9D,YAAY,CAAE8B,KAAK,EAAE,CAAE,YAAY,CAAE,EAAE,CAAC,CAAE,CAAE,CAAC;EAExD,MAAM;IAAEwC,KAAK;IAAE1C;EAAI,CAAC,GAAGE,KAAK,EAAEV,UAAU,EAAEV,eAAe,IAAI;IAC5D,GAAGqD,cAAc,EAAE3C,UAAU,EAAEV;EAChC,CAAC;EACD,MAAM4C,aAAa,GAClB5B,uBAAuB,CAAEI,KAAM,CAAC,IAChCJ,uBAAuB,CAAEqC,cAAe,CAAC;EAE1C,MAAMkF,iCAAiC,GACtC3F,aAAa,KACXpC,QAAQ,EAAEE,UAAU,EAAEK,cAAc,IACrCP,QAAQ,EAAEE,UAAU,EAAEG,kBAAkB,IACxCL,QAAQ,EAAEE,UAAU,EAAEwF,gBAAgB,CAAE;EAE1C,MAAM,CAAEsC,cAAc,EAAEC,iBAAiB,CAAE,GAAG1J,QAAQ,CAAE,KAAM,CAAC;EAE/D,oBACCY,IAAA,CAACwI,OAAO;IACPP,cAAc,EAAGA,cAAgB;IACjCxG,KAAK,EAAGA,KAAO;IACfgC,QAAQ,EAAGA,QAAU;IACrByE,OAAO,EAAGA,OAAS;IACnBC,WAAW,EAAGA,WAAa;IAAAxF,QAAA,eAE3B3C,IAAA;MACCU,SAAS,EAAG3D,IAAI,CACf,gFAAgF,EAChF;QACC,SAAS,EAAE8L;MACZ,CACD,CAAG;MAAAlG,QAAA,eAEH3C,IAAA,CAAC7C,cAAc;QACdiI,QAAQ,EAAGA,CAAA,KAAMnC,aAAe;QAChCT,KAAK,EAAG7D,EAAE,CAAE,OAAQ,CAAG;QACvBoK,UAAU,EAAGJ,eAAiB;QAC9BK,gBAAgB,EAAGP,eAAe,CAACpI,eAAiB;QACpD6H,OAAO,EAAGA,OAAS;QAAAvF,QAAA,EAEjBiG,iCAAiC,gBAClC5I,IAAA,CAAC+C,uBAAuB;UACvBP,KAAK,EAAGyB,KAAO;UACf1B,QAAQ,EAAG0B,KAAO;UAClB1C,GAAG,EAAGzB,wBAAwB,CAC7ByB,GAAG,EACHsC,aACD,CAAG;UACHb,QAAQ,EAAG8F,iBAAmB;UAC9B7F,aAAa,EAAGA,aAAe;UAAAN,QAAA,eAE/BzC,KAAA,CAACtC,MAAM;YAACyJ,OAAO,EAAG,CAAG;YAAC3G,SAAS,EAAC,eAAe;YAAAiC,QAAA,gBAC9C3C,IAAA,CAACwD,uBAAuB;cACvBC,QAAQ,EAAGA,QAAU;cACrBxC,KAAK,EAAGQ,KAAO;cACfiC,cAAc,EAAGA,cAAgB;cACjCG,aAAa,EAAGA,aAAe;cAC/BD,cAAc;cACdD,aAAa,EAAGA,CAAA,KAAM;gBACrBmF,iBAAiB,CAAE,KAAM,CAAC;gBAC1BH,eAAe,CAAC,CAAC;cAClB;YAAG,CACH,CAAC,eACF3I,IAAA,CAACoG,sBAAsB;cACtB3C,QAAQ,EAAGA,QAAU;cACrByE,OAAO,EAAGA,OAAS;cACnBjH,KAAK,EAAGQ,KAAO;cACf4E,aAAa,EAAGA,aAAe;cAC/B3C,cAAc,EAAGA,cAAgB;cACjCG,aAAa,EAAGA;YAAe,CAC/B,CAAC;UAAA,CACK;QAAC,CACe,CAAC,gBAE1B7D,IAAA,CAACwD,uBAAuB;UACvBC,QAAQ,EAAGA,QAAU;UACrBxC,KAAK,EAAGQ,KAAO;UACfiC,cAAc,EAAGA,cAAgB;UACjCG,aAAa,EAAGA;QAAe,CAC/B;MACD,CACc;IAAC,CACb;EAAC,CACE,CAAC;AAEZ","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","Placeholder","Spinner","__experimentalDropdownContentWrapper","DropdownContentWrapper","__","_x","sprintf","store","noticesStore","getFilename","useCallback","Platform","useRef","useState","useEffect","useMemo","useDispatch","useSelect","focus","isBlobURL","useToolsPanelDropdownMenuProps","getResolvedValue","setImmutably","MediaReplaceFlow","blockEditorStore","globalStylesDataKey","globalStylesLinksDataKey","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","LoadingSpinner","BackgroundImageControls","onChange","inheritedValue","onRemoveImage","onResetImage","displayInPanel","defaultValues","isUploading","setIsUploading","getSettings","title","replaceContainerRef","createErrorNotice","onUploadError","message","type","resetBackgroundImage","onSelectMedia","media","media_type","sizeValue","positionValue","source","onFilesDrop","filesList","length","mediaUpload","allowedTypes","onFileChange","image","onError","hasValue","closeAndFocus","toggleButton","tabbable","find","current","click","onRemove","canRemove","ref","mediaId","mediaURL","accept","onSelect","name","variant","BackgroundSizeControls","repeatValue","backgroundRepeat","imageValue","isUploadedImage","attachmentValue","backgroundAttachment","currentValueForToggle","includes","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","toggleScrollWithPage","backgroundPositionValue","spacing","__nextHasNoMarginBottom","checked","size","isBlock","help","__unstableInputWidth","min","placeholder","disabled","BackgroundToolsPanel","resetAllFilter","panelId","headerLabel","dropdownMenuProps","resetAll","updatedValue","BackgroundPanel","Wrapper","defaultControls","globalStyles","_links","select","_settings","resolvedInheritedValue","resolvedValues","Object","entries","forEach","key","backgroundValue","styles","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\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":[]}
@@ -181,7 +181,9 @@ export default function getGlobalStylesChanges(next, previous, options = {}) {
181
181
  return acc;
182
182
  }, {})).map(([key, changeValues]) => {
183
183
  const changeValuesLength = changeValues.length;
184
- const joinedChangesValue = changeValues.join(__(', '));
184
+ const joinedChangesValue = changeValues.join( /* translators: Used between list items, there is a space after the comma. */
185
+ __(', ') // eslint-disable-line @wordpress/i18n-no-flanking-whitespace
186
+ );
185
187
  switch (key) {
186
188
  case 'blocks':
187
189
  {