@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.
- package/CHANGELOG.md +2 -0
- package/README.md +9 -14
- package/build/autocompleters/block.js +1 -1
- package/build/autocompleters/block.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +2 -2
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +11 -4
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-settings-menu/block-mode-toggle.js +28 -34
- package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +14 -3
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-tools/use-show-block-tools.js +2 -1
- package/build/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +8 -4
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build/components/border-radius-control/index.js +1 -0
- package/build/components/border-radius-control/index.js.map +1 -1
- package/build/components/convert-to-group-buttons/index.js +1 -1
- package/build/components/convert-to-group-buttons/index.js.map +1 -1
- package/build/components/date-format-picker/index.js +2 -0
- package/build/components/date-format-picker/index.js.map +1 -1
- package/build/components/font-appearance-control/index.js +3 -0
- package/build/components/font-appearance-control/index.js.map +1 -1
- package/build/components/font-family/index.js +3 -0
- package/build/components/font-family/index.js.map +1 -1
- package/build/components/global-styles/background-panel.js +114 -42
- package/build/components/global-styles/background-panel.js.map +1 -1
- package/build/components/global-styles/get-global-styles-changes.js +3 -1
- package/build/components/global-styles/get-global-styles-changes.js.map +1 -1
- package/build/components/global-styles/hooks.js +0 -7
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/index.js +0 -6
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +3 -3
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +8 -24
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/grid/grid-visualizer.js +20 -5
- package/build/components/grid/grid-visualizer.js.map +1 -1
- package/build/components/height-control/index.js +1 -0
- package/build/components/height-control/index.js.map +1 -1
- package/build/components/iframe/index.js +4 -2
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-editor/zoom-dropdown.js +11 -7
- package/build/components/image-editor/zoom-dropdown.js.map +1 -1
- package/build/components/inner-blocks/button-block-appender.js +8 -8
- package/build/components/inner-blocks/button-block-appender.js.map +1 -1
- package/build/components/inner-blocks/default-block-appender.js +7 -25
- package/build/components/inner-blocks/default-block-appender.js.map +1 -1
- package/build/components/inner-blocks/index.js +9 -11
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inserter/library.js +4 -2
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/menu.js +30 -12
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +4 -0
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/line-height-control/index.js +3 -0
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/media-placeholder/index.js +9 -4
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-upload/index.native.js +4 -1
- package/build/components/media-upload/index.native.js.map +1 -1
- package/build/components/multi-selection-inspector/index.js +12 -12
- package/build/components/multi-selection-inspector/index.js.map +1 -1
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -2
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build/components/text-alignment-control/index.js +13 -8
- package/build/components/text-alignment-control/index.js.map +1 -1
- package/build/components/text-decoration-control/index.js +13 -8
- package/build/components/text-decoration-control/index.js.map +1 -1
- package/build/components/text-transform-control/index.js +13 -8
- package/build/components/text-transform-control/index.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +2 -0
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +14 -2
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/writing-mode-control/index.js +13 -8
- package/build/components/writing-mode-control/index.js.map +1 -1
- package/build/hooks/background.js +19 -23
- package/build/hooks/background.js.map +1 -1
- package/build/hooks/block-bindings.js +37 -79
- package/build/hooks/block-bindings.js.map +1 -1
- package/build/layouts/constrained.js +1 -0
- package/build/layouts/constrained.js.map +1 -1
- package/build/layouts/flex.js +2 -0
- package/build/layouts/flex.js.map +1 -1
- package/build/layouts/grid.js +3 -0
- package/build/layouts/grid.js.map +1 -1
- package/build/private-apis.js +3 -1
- package/build/private-apis.js.map +1 -1
- package/build/store/private-selectors.js +30 -0
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +10 -1
- package/build/store/reducer.js.map +1 -1
- package/build/utils/block-bindings.js +112 -0
- package/build/utils/block-bindings.js.map +1 -0
- package/build-module/autocompleters/block.js +1 -1
- package/build-module/autocompleters/block.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +2 -2
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +11 -4
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-settings-menu/block-mode-toggle.js +29 -34
- package/build-module/components/block-settings-menu/block-mode-toggle.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +14 -3
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-tools/use-show-block-tools.js +2 -1
- package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js +8 -4
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build-module/components/border-radius-control/index.js +1 -0
- package/build-module/components/border-radius-control/index.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/index.js +1 -1
- package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +2 -0
- package/build-module/components/date-format-picker/index.js.map +1 -1
- package/build-module/components/font-appearance-control/index.js +3 -0
- package/build-module/components/font-appearance-control/index.js.map +1 -1
- package/build-module/components/font-family/index.js +3 -0
- package/build-module/components/font-family/index.js.map +1 -1
- package/build-module/components/global-styles/background-panel.js +117 -45
- package/build-module/components/global-styles/background-panel.js.map +1 -1
- package/build-module/components/global-styles/get-global-styles-changes.js +3 -1
- package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +0 -6
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/index.js +1 -1
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +5 -5
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +8 -23
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/grid/grid-visualizer.js +20 -5
- package/build-module/components/grid/grid-visualizer.js.map +1 -1
- package/build-module/components/height-control/index.js +1 -0
- package/build-module/components/height-control/index.js.map +1 -1
- package/build-module/components/iframe/index.js +4 -2
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-editor/zoom-dropdown.js +12 -8
- package/build-module/components/image-editor/zoom-dropdown.js.map +1 -1
- package/build-module/components/inner-blocks/button-block-appender.js +7 -6
- package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
- package/build-module/components/inner-blocks/default-block-appender.js +6 -23
- package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +9 -11
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inserter/library.js +4 -2
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/menu.js +30 -12
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +5 -1
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/line-height-control/index.js +3 -0
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +9 -4
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-upload/index.native.js +4 -1
- package/build-module/components/media-upload/index.native.js.map +1 -1
- package/build-module/components/multi-selection-inspector/index.js +12 -12
- package/build-module/components/multi-selection-inspector/index.js.map +1 -1
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -2
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build-module/components/text-alignment-control/index.js +13 -8
- package/build-module/components/text-alignment-control/index.js.map +1 -1
- package/build-module/components/text-decoration-control/index.js +13 -8
- package/build-module/components/text-decoration-control/index.js.map +1 -1
- package/build-module/components/text-transform-control/index.js +13 -8
- package/build-module/components/text-transform-control/index.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +2 -0
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +14 -2
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/writing-mode-control/index.js +13 -8
- package/build-module/components/writing-mode-control/index.js.map +1 -1
- package/build-module/hooks/background.js +19 -23
- package/build-module/hooks/background.js.map +1 -1
- package/build-module/hooks/block-bindings.js +38 -80
- package/build-module/hooks/block-bindings.js.map +1 -1
- package/build-module/layouts/constrained.js +1 -0
- package/build-module/layouts/constrained.js.map +1 -1
- package/build-module/layouts/flex.js +2 -0
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/layouts/grid.js +3 -0
- package/build-module/layouts/grid.js.map +1 -1
- package/build-module/private-apis.js +3 -1
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/private-selectors.js +27 -0
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +9 -1
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/utils/block-bindings.js +105 -0
- package/build-module/utils/block-bindings.js.map +1 -0
- package/build-style/content-rtl.css +7 -14
- package/build-style/content.css +7 -14
- package/build-style/default-editor-styles-rtl.css +2 -2
- package/build-style/default-editor-styles.css +2 -2
- package/build-style/style-rtl.css +36 -38
- package/build-style/style.css +36 -38
- package/package.json +32 -32
- package/src/autocompleters/block.js +2 -1
- package/src/components/block-list/content.scss +5 -13
- package/src/components/block-list/use-block-props/index.js +2 -2
- package/src/components/block-list/use-in-between-inserter.js +17 -5
- package/src/components/block-settings-menu/block-mode-toggle.js +28 -31
- package/src/components/block-settings-menu/test/block-mode-toggle.js +26 -23
- package/src/components/block-tools/insertion-point.js +11 -0
- package/src/components/block-tools/style.scss +1 -1
- package/src/components/block-tools/use-show-block-tools.js +4 -1
- package/src/components/block-tools/zoom-out-mode-inserters.js +7 -1
- package/src/components/block-variation-transforms/style.scss +1 -1
- package/src/components/border-radius-control/index.js +1 -0
- package/src/components/border-radius-control/style.scss +0 -10
- package/src/components/convert-to-group-buttons/index.js +1 -1
- package/src/components/date-format-picker/index.js +2 -0
- package/src/components/font-appearance-control/index.js +3 -0
- package/src/components/font-family/README.md +11 -2
- package/src/components/font-family/index.js +3 -0
- package/src/components/global-styles/background-panel.js +132 -53
- package/src/components/global-styles/get-global-styles-changes.js +4 -1
- package/src/components/global-styles/hooks.js +0 -5
- package/src/components/global-styles/index.js +0 -1
- package/src/components/global-styles/style.scss +13 -2
- package/src/components/global-styles/test/use-global-styles-output.js +20 -4
- package/src/components/global-styles/use-global-styles-output.js +5 -6
- package/src/components/global-styles/utils.js +7 -29
- package/src/components/grid/grid-visualizer.js +22 -7
- package/src/components/height-control/index.js +1 -0
- package/src/components/iframe/index.js +4 -2
- package/src/components/image-editor/zoom-dropdown.js +17 -9
- package/src/components/inner-blocks/button-block-appender.js +5 -7
- package/src/components/inner-blocks/default-block-appender.js +4 -23
- package/src/components/inner-blocks/index.js +10 -9
- package/src/components/inserter/library.js +2 -0
- package/src/components/inserter/menu.js +32 -27
- package/src/components/inserter/quick-inserter.js +4 -1
- package/src/components/inserter/style.scss +1 -1
- package/src/components/inserter-list-item/style.scss +1 -0
- package/src/components/line-height-control/README.md +7 -0
- package/src/components/line-height-control/index.js +3 -0
- package/src/components/link-control/style.scss +1 -1
- package/src/components/media-placeholder/index.js +12 -7
- package/src/components/media-upload/README.md +2 -0
- package/src/components/media-upload/index.native.js +2 -0
- package/src/components/multi-selection-inspector/index.js +8 -9
- package/src/components/responsive-block-control/README.md +1 -0
- package/src/components/responsive-block-control/test/index.js +1 -0
- package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +8 -4
- package/src/components/spacing-sizes-control/style.scss +16 -16
- package/src/components/text-alignment-control/index.js +20 -8
- package/src/components/text-decoration-control/index.js +20 -8
- package/src/components/text-decoration-control/stories/index.story.js +0 -4
- package/src/components/text-transform-control/index.js +20 -8
- package/src/components/text-transform-control/stories/index.story.js +0 -4
- package/src/components/url-input/style.scss +2 -2
- package/src/components/url-popover/image-url-input-ui.js +2 -0
- package/src/components/use-block-drop-zone/index.js +21 -3
- package/src/components/writing-mode-control/index.js +20 -8
- package/src/hooks/background.js +21 -27
- package/src/hooks/block-bindings.js +27 -84
- package/src/hooks/block-bindings.scss +1 -1
- package/src/hooks/test/background.js +60 -0
- package/src/layouts/constrained.js +1 -0
- package/src/layouts/flex.js +2 -0
- package/src/layouts/grid.js +3 -0
- package/src/private-apis.js +2 -0
- package/src/store/private-selectors.js +36 -0
- package/src/store/reducer.js +7 -0
- package/src/store/test/private-selectors.js +89 -0
- package/src/style.scss +0 -1
- package/src/utils/block-bindings.js +98 -0
- package/src/utils/test/transform-styles.js +49 -0
- package/build/components/global-styles/theme-file-uri-utils.js +0 -21
- package/build/components/global-styles/theme-file-uri-utils.js.map +0 -1
- package/build/components/inner-blocks/with-client-id.js +0 -28
- package/build/components/inner-blocks/with-client-id.js.map +0 -1
- package/build/components/segmented-text-control/index.js +0 -63
- package/build/components/segmented-text-control/index.js.map +0 -1
- package/build-module/components/global-styles/theme-file-uri-utils.js +0 -15
- package/build-module/components/global-styles/theme-file-uri-utils.js.map +0 -1
- package/build-module/components/inner-blocks/with-client-id.js +0 -21
- package/build-module/components/inner-blocks/with-client-id.js.map +0 -1
- package/build-module/components/segmented-text-control/index.js +0 -58
- package/build-module/components/segmented-text-control/index.js.map +0 -1
- package/src/components/global-styles/test/theme-file-uri-utils.js +0 -41
- package/src/components/global-styles/theme-file-uri-utils.js +0 -18
- package/src/components/inner-blocks/with-client-id.js +0 -19
- package/src/components/segmented-text-control/index.js +0 -63
- package/src/components/segmented-text-control/style.scss +0 -15
|
@@ -22,7 +22,7 @@ var _utils = require("./utils");
|
|
|
22
22
|
var _object = require("../../utils/object");
|
|
23
23
|
var _mediaReplaceFlow = _interopRequireDefault(require("../media-replace-flow"));
|
|
24
24
|
var _store = require("../../store");
|
|
25
|
-
var
|
|
25
|
+
var _privateKeys = require("../../store/private-keys");
|
|
26
26
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
27
27
|
/**
|
|
28
28
|
* External dependencies
|
|
@@ -230,15 +230,25 @@ function BackgroundControlsPanel({
|
|
|
230
230
|
})
|
|
231
231
|
});
|
|
232
232
|
}
|
|
233
|
+
function LoadingSpinner() {
|
|
234
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Placeholder, {
|
|
235
|
+
className: "block-editor-global-styles-background-panel__loading",
|
|
236
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Spinner, {})
|
|
237
|
+
});
|
|
238
|
+
}
|
|
233
239
|
function BackgroundImageControls({
|
|
234
240
|
onChange,
|
|
235
241
|
style,
|
|
236
242
|
inheritedValue,
|
|
237
243
|
onRemoveImage = noop,
|
|
244
|
+
onResetImage = noop,
|
|
238
245
|
displayInPanel,
|
|
239
|
-
|
|
246
|
+
defaultValues
|
|
240
247
|
}) {
|
|
241
|
-
const
|
|
248
|
+
const [isUploading, setIsUploading] = (0, _element.useState)(false);
|
|
249
|
+
const {
|
|
250
|
+
getSettings
|
|
251
|
+
} = (0, _data.useSelect)(_store.store);
|
|
242
252
|
const {
|
|
243
253
|
id,
|
|
244
254
|
title,
|
|
@@ -254,14 +264,17 @@ function BackgroundImageControls({
|
|
|
254
264
|
createErrorNotice(message, {
|
|
255
265
|
type: 'snackbar'
|
|
256
266
|
});
|
|
267
|
+
setIsUploading(false);
|
|
257
268
|
};
|
|
258
269
|
const resetBackgroundImage = () => onChange((0, _object.setImmutably)(style, ['background', 'backgroundImage'], undefined));
|
|
259
270
|
const onSelectMedia = media => {
|
|
260
271
|
if (!media || !media.url) {
|
|
261
272
|
resetBackgroundImage();
|
|
273
|
+
setIsUploading(false);
|
|
262
274
|
return;
|
|
263
275
|
}
|
|
264
276
|
if ((0, _blob.isBlobURL)(media.url)) {
|
|
277
|
+
setIsUploading(true);
|
|
265
278
|
return;
|
|
266
279
|
}
|
|
267
280
|
|
|
@@ -270,8 +283,8 @@ function BackgroundImageControls({
|
|
|
270
283
|
onUploadError((0, _i18n.__)('Only images can be used as a background image.'));
|
|
271
284
|
return;
|
|
272
285
|
}
|
|
273
|
-
const sizeValue = style?.background?.backgroundSize ||
|
|
274
|
-
const positionValue = style?.background?.backgroundPosition
|
|
286
|
+
const sizeValue = style?.background?.backgroundSize || defaultValues?.backgroundSize;
|
|
287
|
+
const positionValue = style?.background?.backgroundPosition;
|
|
275
288
|
onChange((0, _object.setImmutably)(style, ['background'], {
|
|
276
289
|
...style?.background,
|
|
277
290
|
backgroundImage: {
|
|
@@ -280,18 +293,29 @@ function BackgroundImageControls({
|
|
|
280
293
|
source: 'file',
|
|
281
294
|
title: media.title || undefined
|
|
282
295
|
},
|
|
283
|
-
backgroundPosition:
|
|
296
|
+
backgroundPosition:
|
|
297
|
+
/*
|
|
298
|
+
* A background image uploaded and set in the editor receives a default background position of '50% 0',
|
|
299
|
+
* when the background image size is the equivalent of "Tile".
|
|
300
|
+
* This is to increase the chance that the image's focus point is visible.
|
|
301
|
+
* This is in-editor only to assist with the user experience.
|
|
302
|
+
*/
|
|
303
|
+
!positionValue && ('auto' === sizeValue || !sizeValue) ? '50% 0' : positionValue,
|
|
284
304
|
backgroundSize: sizeValue
|
|
285
305
|
}));
|
|
306
|
+
setIsUploading(false);
|
|
286
307
|
};
|
|
308
|
+
|
|
309
|
+
// Drag and drop callback, restricting image to one.
|
|
287
310
|
const onFilesDrop = filesList => {
|
|
288
|
-
|
|
311
|
+
if (filesList?.length > 1) {
|
|
312
|
+
onUploadError((0, _i18n.__)('Only one image can be used as a background image.'));
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
getSettings().mediaUpload({
|
|
289
316
|
allowedTypes: [IMAGE_BACKGROUND_TYPE],
|
|
290
317
|
filesList,
|
|
291
318
|
onFileChange([image]) {
|
|
292
|
-
if ((0, _blob.isBlobURL)(image?.url)) {
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
319
|
onSelectMedia(image);
|
|
296
320
|
},
|
|
297
321
|
onError: onUploadError
|
|
@@ -306,13 +330,15 @@ function BackgroundImageControls({
|
|
|
306
330
|
toggleButton?.focus();
|
|
307
331
|
toggleButton?.click();
|
|
308
332
|
};
|
|
309
|
-
const onRemove = () => onChange((0, _object.setImmutably)(style, ['background'
|
|
333
|
+
const onRemove = () => onChange((0, _object.setImmutably)(style, ['background'], {
|
|
334
|
+
backgroundImage: 'none'
|
|
335
|
+
}));
|
|
310
336
|
const canRemove = !hasValue && hasBackgroundImageValue(inheritedValue);
|
|
311
337
|
const imgLabel = title || (0, _url.getFilename)(url) || (0, _i18n.__)('Add background image');
|
|
312
338
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
313
339
|
ref: replaceContainerRef,
|
|
314
340
|
className: "block-editor-global-styles-background-panel__image-tools-panel-item",
|
|
315
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_mediaReplaceFlow.default, {
|
|
341
|
+
children: [isUploading && /*#__PURE__*/(0, _jsxRuntime.jsx)(LoadingSpinner, {}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_mediaReplaceFlow.default, {
|
|
316
342
|
mediaId: id,
|
|
317
343
|
mediaURL: url,
|
|
318
344
|
allowedTypes: [IMAGE_BACKGROUND_TYPE],
|
|
@@ -325,23 +351,25 @@ function BackgroundImageControls({
|
|
|
325
351
|
},
|
|
326
352
|
name: /*#__PURE__*/(0, _jsxRuntime.jsx)(InspectorImagePreviewItem, {
|
|
327
353
|
className: "block-editor-global-styles-background-panel__image-preview",
|
|
328
|
-
imgUrl:
|
|
354
|
+
imgUrl: url,
|
|
329
355
|
filename: title,
|
|
330
356
|
label: imgLabel
|
|
331
357
|
}),
|
|
332
358
|
variant: "secondary",
|
|
359
|
+
onError: onUploadError,
|
|
333
360
|
children: [canRemove && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuItem, {
|
|
334
361
|
onClick: () => {
|
|
335
362
|
closeAndFocus();
|
|
336
363
|
onRemove();
|
|
364
|
+
onRemoveImage();
|
|
337
365
|
},
|
|
338
366
|
children: (0, _i18n.__)('Remove')
|
|
339
367
|
}), hasValue && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuItem, {
|
|
340
368
|
onClick: () => {
|
|
341
369
|
closeAndFocus();
|
|
342
|
-
|
|
370
|
+
onResetImage();
|
|
343
371
|
},
|
|
344
|
-
children: (0, _i18n.__)('Reset
|
|
372
|
+
children: (0, _i18n.__)('Reset')
|
|
345
373
|
})]
|
|
346
374
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.DropZone, {
|
|
347
375
|
onFilesDrop: onFilesDrop,
|
|
@@ -353,13 +381,12 @@ function BackgroundSizeControls({
|
|
|
353
381
|
onChange,
|
|
354
382
|
style,
|
|
355
383
|
inheritedValue,
|
|
356
|
-
defaultValues
|
|
357
|
-
themeFileURIs
|
|
384
|
+
defaultValues
|
|
358
385
|
}) {
|
|
359
386
|
const sizeValue = style?.background?.backgroundSize || inheritedValue?.background?.backgroundSize;
|
|
360
387
|
const repeatValue = style?.background?.backgroundRepeat || inheritedValue?.background?.backgroundRepeat;
|
|
361
388
|
const imageValue = style?.background?.backgroundImage?.url || inheritedValue?.background?.backgroundImage?.url;
|
|
362
|
-
const isUploadedImage = style?.background?.backgroundImage?.id
|
|
389
|
+
const isUploadedImage = style?.background?.backgroundImage?.id;
|
|
363
390
|
const positionValue = style?.background?.backgroundPosition || inheritedValue?.background?.backgroundPosition;
|
|
364
391
|
const attachmentValue = style?.background?.backgroundAttachment || inheritedValue?.background?.backgroundAttachment;
|
|
365
392
|
|
|
@@ -369,8 +396,12 @@ function BackgroundSizeControls({
|
|
|
369
396
|
* Block-level controls may have different defaults to root-level controls.
|
|
370
397
|
* A falsy value is treated by default as `auto` (Tile).
|
|
371
398
|
*/
|
|
372
|
-
|
|
373
|
-
|
|
399
|
+
let currentValueForToggle = !sizeValue && isUploadedImage ? defaultValues?.backgroundSize : sizeValue || 'auto';
|
|
400
|
+
/*
|
|
401
|
+
* The incoming value could be a value + unit, e.g. '20px'.
|
|
402
|
+
* In this case set the value to 'tile'.
|
|
403
|
+
*/
|
|
404
|
+
currentValueForToggle = !['cover', 'contain', 'auto'].includes(currentValueForToggle) ? 'auto' : currentValueForToggle;
|
|
374
405
|
/*
|
|
375
406
|
* If the current value is `cover` and the repeat value is `undefined`, then
|
|
376
407
|
* the toggle should be unchecked as the default state. Otherwise, the toggle
|
|
@@ -396,6 +427,7 @@ function BackgroundSizeControls({
|
|
|
396
427
|
* receives a default background position of '50% 0',
|
|
397
428
|
* when the toggle switches to "Tile". This is to increase the chance that
|
|
398
429
|
* the image's focus point is visible.
|
|
430
|
+
* This is in-editor only to assist with the user experience.
|
|
399
431
|
*/
|
|
400
432
|
if (!!style?.background?.backgroundImage?.id) {
|
|
401
433
|
nextPosition = '50% 0';
|
|
@@ -421,22 +453,23 @@ function BackgroundSizeControls({
|
|
|
421
453
|
};
|
|
422
454
|
const toggleIsRepeated = () => onChange((0, _object.setImmutably)(style, ['background', 'backgroundRepeat'], repeatCheckedValue === true ? 'no-repeat' : 'repeat'));
|
|
423
455
|
const toggleScrollWithPage = () => onChange((0, _object.setImmutably)(style, ['background', 'backgroundAttachment'], attachmentValue === 'fixed' ? 'scroll' : 'fixed'));
|
|
456
|
+
|
|
457
|
+
// Set a default background position for non-site-wide, uploaded images with a size of 'contain'.
|
|
458
|
+
const backgroundPositionValue = !positionValue && isUploadedImage && 'contain' === sizeValue ? defaultValues?.backgroundPosition : positionValue;
|
|
424
459
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
|
|
425
|
-
spacing:
|
|
460
|
+
spacing: 3,
|
|
426
461
|
className: "single-column",
|
|
427
462
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.FocalPointPicker, {
|
|
428
|
-
__next40pxDefaultSize: true,
|
|
429
463
|
__nextHasNoMarginBottom: true,
|
|
430
464
|
label: (0, _i18n.__)('Focal point'),
|
|
431
|
-
url:
|
|
432
|
-
value: backgroundPositionToCoords(
|
|
465
|
+
url: imageValue,
|
|
466
|
+
value: backgroundPositionToCoords(backgroundPositionValue),
|
|
433
467
|
onChange: updateBackgroundPosition
|
|
434
468
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToggleControl, {
|
|
435
469
|
__nextHasNoMarginBottom: true,
|
|
436
470
|
label: (0, _i18n.__)('Fixed background'),
|
|
437
471
|
checked: attachmentValue === 'fixed',
|
|
438
|
-
onChange: toggleScrollWithPage
|
|
439
|
-
help: (0, _i18n.__)('Whether your image should scroll with the page or stay fixed in place.')
|
|
472
|
+
onChange: toggleScrollWithPage
|
|
440
473
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalToggleGroupControl, {
|
|
441
474
|
__nextHasNoMarginBottom: true,
|
|
442
475
|
size: "__unstable-large",
|
|
@@ -493,7 +526,7 @@ function BackgroundToolsPanel({
|
|
|
493
526
|
};
|
|
494
527
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalVStack, {
|
|
495
528
|
as: _components.__experimentalToolsPanel,
|
|
496
|
-
spacing:
|
|
529
|
+
spacing: 2,
|
|
497
530
|
label: headerLabel,
|
|
498
531
|
resetAll: resetAll,
|
|
499
532
|
panelId: panelId,
|
|
@@ -510,9 +543,42 @@ function BackgroundPanel({
|
|
|
510
543
|
panelId,
|
|
511
544
|
defaultControls = DEFAULT_CONTROLS,
|
|
512
545
|
defaultValues = {},
|
|
513
|
-
headerLabel = (0, _i18n.__)('Background image')
|
|
514
|
-
themeFileURIs
|
|
546
|
+
headerLabel = (0, _i18n.__)('Background image')
|
|
515
547
|
}) {
|
|
548
|
+
/*
|
|
549
|
+
* Resolve any inherited "ref" pointers.
|
|
550
|
+
* Should the block editor need resolved, inherited values
|
|
551
|
+
* across all controls, this could be abstracted into a hook,
|
|
552
|
+
* e.g., useResolveGlobalStyle
|
|
553
|
+
*/
|
|
554
|
+
const {
|
|
555
|
+
globalStyles,
|
|
556
|
+
_links
|
|
557
|
+
} = (0, _data.useSelect)(select => {
|
|
558
|
+
const {
|
|
559
|
+
getSettings
|
|
560
|
+
} = select(_store.store);
|
|
561
|
+
const _settings = getSettings();
|
|
562
|
+
return {
|
|
563
|
+
globalStyles: _settings[_privateKeys.globalStylesDataKey],
|
|
564
|
+
_links: _settings[_privateKeys.globalStylesLinksDataKey]
|
|
565
|
+
};
|
|
566
|
+
}, []);
|
|
567
|
+
const resolvedInheritedValue = (0, _element.useMemo)(() => {
|
|
568
|
+
const resolvedValues = {
|
|
569
|
+
background: {}
|
|
570
|
+
};
|
|
571
|
+
if (!inheritedValue?.background) {
|
|
572
|
+
return inheritedValue;
|
|
573
|
+
}
|
|
574
|
+
Object.entries(inheritedValue?.background).forEach(([key, backgroundValue]) => {
|
|
575
|
+
resolvedValues.background[key] = (0, _utils.getResolvedValue)(backgroundValue, {
|
|
576
|
+
styles: globalStyles,
|
|
577
|
+
_links
|
|
578
|
+
});
|
|
579
|
+
});
|
|
580
|
+
return resolvedValues;
|
|
581
|
+
}, [globalStyles, _links, inheritedValue]);
|
|
516
582
|
const resetAllFilter = (0, _element.useCallback)(previousValue => {
|
|
517
583
|
return {
|
|
518
584
|
...previousValue,
|
|
@@ -524,10 +590,11 @@ function BackgroundPanel({
|
|
|
524
590
|
title,
|
|
525
591
|
url
|
|
526
592
|
} = value?.background?.backgroundImage || {
|
|
527
|
-
...
|
|
593
|
+
...resolvedInheritedValue?.background?.backgroundImage
|
|
528
594
|
};
|
|
529
|
-
const hasImageValue = hasBackgroundImageValue(value) || hasBackgroundImageValue(
|
|
530
|
-
const
|
|
595
|
+
const hasImageValue = hasBackgroundImageValue(value) || hasBackgroundImageValue(resolvedInheritedValue);
|
|
596
|
+
const imageValue = value?.background?.backgroundImage || inheritedValue?.background?.backgroundImage;
|
|
597
|
+
const shouldShowBackgroundImageControls = hasImageValue && 'none' !== imageValue && (settings?.background?.backgroundSize || settings?.background?.backgroundPosition || settings?.background?.backgroundRepeat);
|
|
531
598
|
const [isDropDownOpen, setIsDropDownOpen] = (0, _element.useState)(false);
|
|
532
599
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Wrapper, {
|
|
533
600
|
resetAllFilter: resetAllFilter,
|
|
@@ -540,7 +607,7 @@ function BackgroundPanel({
|
|
|
540
607
|
'is-open': isDropDownOpen
|
|
541
608
|
}),
|
|
542
609
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalToolsPanelItem, {
|
|
543
|
-
hasValue: () =>
|
|
610
|
+
hasValue: () => !!value?.background,
|
|
544
611
|
label: (0, _i18n.__)('Image'),
|
|
545
612
|
onDeselect: resetBackground,
|
|
546
613
|
isShownByDefault: defaultControls.backgroundImage,
|
|
@@ -548,7 +615,7 @@ function BackgroundPanel({
|
|
|
548
615
|
children: shouldShowBackgroundImageControls ? /*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundControlsPanel, {
|
|
549
616
|
label: title,
|
|
550
617
|
filename: title,
|
|
551
|
-
url:
|
|
618
|
+
url: url,
|
|
552
619
|
onToggle: setIsDropDownOpen,
|
|
553
620
|
hasImageValue: hasImageValue,
|
|
554
621
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
|
|
@@ -557,27 +624,32 @@ function BackgroundPanel({
|
|
|
557
624
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundImageControls, {
|
|
558
625
|
onChange: onChange,
|
|
559
626
|
style: value,
|
|
560
|
-
inheritedValue:
|
|
561
|
-
themeFileURIs: themeFileURIs,
|
|
627
|
+
inheritedValue: resolvedInheritedValue,
|
|
562
628
|
displayInPanel: true,
|
|
563
|
-
|
|
629
|
+
onResetImage: () => {
|
|
564
630
|
setIsDropDownOpen(false);
|
|
565
631
|
resetBackground();
|
|
566
|
-
}
|
|
632
|
+
},
|
|
633
|
+
onRemoveImage: () => setIsDropDownOpen(false),
|
|
634
|
+
defaultValues: defaultValues
|
|
567
635
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundSizeControls, {
|
|
568
636
|
onChange: onChange,
|
|
569
637
|
panelId: panelId,
|
|
570
638
|
style: value,
|
|
571
639
|
defaultValues: defaultValues,
|
|
572
|
-
inheritedValue:
|
|
573
|
-
themeFileURIs: themeFileURIs
|
|
640
|
+
inheritedValue: resolvedInheritedValue
|
|
574
641
|
})]
|
|
575
642
|
})
|
|
576
643
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundImageControls, {
|
|
577
644
|
onChange: onChange,
|
|
578
645
|
style: value,
|
|
579
|
-
inheritedValue:
|
|
580
|
-
|
|
646
|
+
inheritedValue: resolvedInheritedValue,
|
|
647
|
+
defaultValues: defaultValues,
|
|
648
|
+
onResetImage: () => {
|
|
649
|
+
setIsDropDownOpen(false);
|
|
650
|
+
resetBackground();
|
|
651
|
+
},
|
|
652
|
+
onRemoveImage: () => setIsDropDownOpen(false)
|
|
581
653
|
})
|
|
582
654
|
})
|
|
583
655
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_components","_i18n","_notices","_url","_element","_data","_dom","_blob","_utils","_object","_mediaReplaceFlow","_store","_themeFileUriUtils","_jsxRuntime","IMAGE_BACKGROUND_TYPE","DEFAULT_CONTROLS","backgroundImage","BACKGROUND_POPOVER_PROPS","placement","offset","shift","className","noop","useHasBackgroundPanel","settings","Platform","OS","background","hasBackgroundSizeValue","style","backgroundPosition","undefined","backgroundSize","hasBackgroundImageValue","id","url","backgroundSizeHelpText","value","__","coordsToBackgroundPosition","isNaN","x","y","exports","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreviewItem","as","imgUrl","toggleProps","filename","label","onToggleCallback","useEffect","isOpen","jsx","__experimentalItemGroup","children","jsxs","__experimentalHStack","justify","FlexItem","flexGrow","__experimentalTruncate","numberOfLines","VisuallyHidden","sprintf","BackgroundControlsPanel","onToggle","hasImageValue","imgLabel","getFilename","Dropdown","popoverProps","renderToggle","onClick","renderContent","__experimentalDropdownContentWrapper","paddingSize","BackgroundImageControls","onChange","inheritedValue","onRemoveImage","displayInPanel","themeFileURIs","mediaUpload","useSelect","select","blockEditorStore","getSettings","title","replaceContainerRef","useRef","createErrorNotice","useDispatch","noticesStore","onUploadError","message","type","resetBackgroundImage","setImmutably","onSelectMedia","media","isBlobURL","media_type","sizeValue","positionValue","source","onFilesDrop","filesList","allowedTypes","onFileChange","image","onError","hasValue","closeAndFocus","toggleButton","focus","tabbable","find","current","click","onRemove","canRemove","ref","default","mediaId","mediaURL","accept","onSelect","clsx","name","getResolvedThemeFilePath","variant","MenuItem","DropZone","BackgroundSizeControls","defaultValues","repeatValue","backgroundRepeat","imageValue","isUploadedImage","attachmentValue","backgroundAttachment","currentValueForToggle","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","toggleScrollWithPage","__experimentalVStack","spacing","FocalPointPicker","__next40pxDefaultSize","__nextHasNoMarginBottom","ToggleControl","checked","help","__experimentalToggleGroupControl","size","isBlock","__experimentalToggleGroupControlOption","_x","__experimentalUnitControl","__unstableInputWidth","min","placeholder","disabled","BackgroundToolsPanel","resetAllFilter","panelId","headerLabel","dropdownMenuProps","useToolsPanelDropdownMenuProps","resetAll","updatedValue","ToolsPanel","BackgroundPanel","Wrapper","defaultControls","useCallback","previousValue","resetBackground","shouldShowBackgroundImageControls","isDropDownOpen","setIsDropDownOpen","useState","__experimentalToolsPanelItem","onDeselect","isShownByDefault"],"sources":["@wordpress/block-editor/src/components/global-styles/background-panel.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tToggleControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalVStack as VStack,\n\tDropZone,\n\tFlexItem,\n\tFocalPointPicker,\n\tMenuItem,\n\tVisuallyHidden,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tDropdown,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { getFilename } from '@wordpress/url';\nimport {\n\tuseCallback,\n\tPlatform,\n\tuseRef,\n\tuseState,\n\tuseEffect,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { focus } from '@wordpress/dom';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport MediaReplaceFlow from '../media-replace-flow';\nimport { store as blockEditorStore } from '../../store';\nimport { getResolvedThemeFilePath } from './theme-file-uri-utils';\n\nconst IMAGE_BACKGROUND_TYPE = 'image';\nconst DEFAULT_CONTROLS = {\n\tbackgroundImage: true,\n};\nconst BACKGROUND_POPOVER_PROPS = {\n\tplacement: 'left-start',\n\toffset: 36,\n\tshift: true,\n\tclassName: 'block-editor-global-styles-background-panel__popover',\n};\nconst noop = () => {};\n\n/**\n * Checks site settings to see if the background panel may be used.\n * `settings.background.backgroundSize` exists also,\n * but can only be used if settings?.background?.backgroundImage is `true`.\n *\n * @param {Object} settings Site settings\n * @return {boolean} Whether site settings has activated background panel.\n */\nexport function useHasBackgroundPanel( settings ) {\n\treturn Platform.OS === 'web' && settings?.background?.backgroundImage;\n}\n\n/**\n * Checks if there is a current value in the background size block support\n * attributes. Background size values include background size as well\n * as background position.\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background size value set.\n */\nexport function hasBackgroundSizeValue( style ) {\n\treturn (\n\t\tstyle?.background?.backgroundPosition !== undefined ||\n\t\tstyle?.background?.backgroundSize !== undefined\n\t);\n}\n\n/**\n * Checks if there is a current value in the background image block support\n * attributes.\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background image value set.\n */\nexport function hasBackgroundImageValue( style ) {\n\treturn (\n\t\t!! style?.background?.backgroundImage?.id ||\n\t\t// Supports url() string values in theme.json.\n\t\t'string' === typeof style?.background?.backgroundImage ||\n\t\t!! style?.background?.backgroundImage?.url\n\t);\n}\n\n/**\n * Get the help text for the background size control.\n *\n * @param {string} value backgroundSize value.\n * @return {string} Translated help text.\n */\nfunction backgroundSizeHelpText( value ) {\n\tif ( value === 'cover' || value === undefined ) {\n\t\treturn __( 'Image covers the space evenly.' );\n\t}\n\tif ( value === 'contain' ) {\n\t\treturn __( 'Image is contained without distortion.' );\n\t}\n\treturn __( 'Image has a fixed width.' );\n}\n\n/**\n * Converts decimal x and y coords from FocalPointPicker to percentage-based values\n * to use as backgroundPosition value.\n *\n * @param {{x?:number, y?:number}} value FocalPointPicker coords.\n * @return {string} \t\t\t\t backgroundPosition value.\n */\nexport const coordsToBackgroundPosition = ( value ) => {\n\tif ( ! value || ( isNaN( value.x ) && isNaN( value.y ) ) ) {\n\t\treturn undefined;\n\t}\n\n\tconst x = isNaN( value.x ) ? 0.5 : value.x;\n\tconst y = isNaN( value.y ) ? 0.5 : value.y;\n\n\treturn `${ x * 100 }% ${ y * 100 }%`;\n};\n\n/**\n * Converts backgroundPosition value to x and y coords for FocalPointPicker.\n *\n * @param {string} value backgroundPosition value.\n * @return {{x?:number, y?:number}} FocalPointPicker coords.\n */\nexport const backgroundPositionToCoords = ( value ) => {\n\tif ( ! value ) {\n\t\treturn { x: undefined, y: undefined };\n\t}\n\n\tlet [ x, y ] = value.split( ' ' ).map( ( v ) => parseFloat( v ) / 100 );\n\tx = isNaN( x ) ? undefined : x;\n\ty = isNaN( y ) ? x : y;\n\n\treturn { x, y };\n};\n\nfunction InspectorImagePreviewItem( {\n\tas = 'span',\n\timgUrl,\n\ttoggleProps = {},\n\tfilename,\n\tlabel,\n\tclassName,\n\tonToggleCallback = noop,\n} ) {\n\tuseEffect( () => {\n\t\tif ( typeof toggleProps?.isOpen !== 'undefined' ) {\n\t\t\tonToggleCallback( toggleProps?.isOpen );\n\t\t}\n\t}, [ toggleProps?.isOpen, onToggleCallback ] );\n\treturn (\n\t\t<ItemGroup as={ as } className={ className } { ...toggleProps }>\n\t\t\t<HStack\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t\tas=\"span\"\n\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-preview-inner\"\n\t\t\t>\n\t\t\t\t{ imgUrl && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator-wrapper\"\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\tbackgroundImage: `url(${ imgUrl })`,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<FlexItem as=\"span\" style={ imgUrl ? {} : { flexGrow: 1 } }>\n\t\t\t\t\t<Truncate\n\t\t\t\t\t\tnumberOfLines={ 1 }\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-media-replace-title\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Truncate>\n\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t{ imgUrl\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: file name */\n\t\t\t\t\t\t\t\t\t__( 'Background image: %s' ),\n\t\t\t\t\t\t\t\t\tfilename || label\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __( 'No background image selected' ) }\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t</ItemGroup>\n\t);\n}\n\nfunction BackgroundControlsPanel( {\n\tlabel,\n\tfilename,\n\turl: imgUrl,\n\tchildren,\n\tonToggle: onToggleCallback = noop,\n\thasImageValue,\n} ) {\n\tif ( ! hasImageValue ) {\n\t\treturn;\n\t}\n\n\tconst imgLabel =\n\t\tlabel || getFilename( imgUrl ) || __( 'Add background image' );\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ BACKGROUND_POPOVER_PROPS }\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst toggleProps = {\n\t\t\t\t\tonClick: onToggle,\n\t\t\t\t\tclassName:\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__dropdown-toggle',\n\t\t\t\t\t'aria-expanded': isOpen,\n\t\t\t\t\t'aria-label': __(\n\t\t\t\t\t\t'Background size, position and repeat options.'\n\t\t\t\t\t),\n\t\t\t\t\tisOpen,\n\t\t\t\t};\n\t\t\t\treturn (\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\timgUrl={ imgUrl }\n\t\t\t\t\t\tfilename={ filename }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t\ttoggleProps={ toggleProps }\n\t\t\t\t\t\tas=\"button\"\n\t\t\t\t\t\tonToggleCallback={ onToggleCallback }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper\n\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__dropdown-content-wrapper\"\n\t\t\t\t\tpaddingSize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction BackgroundImageControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tonRemoveImage = noop,\n\tdisplayInPanel,\n\tthemeFileURIs,\n} ) {\n\tconst mediaUpload = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings().mediaUpload,\n\t\t[]\n\t);\n\n\tconst { id, title, url } = style?.background?.backgroundImage || {\n\t\t...inheritedValue?.background?.backgroundImage,\n\t};\n\tconst replaceContainerRef = useRef();\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t};\n\n\tconst resetBackgroundImage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundImage' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\n\tconst onSelectMedia = ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tresetBackgroundImage();\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// For media selections originated from a file upload.\n\t\tif (\n\t\t\t( media.media_type &&\n\t\t\t\tmedia.media_type !== IMAGE_BACKGROUND_TYPE ) ||\n\t\t\t( ! media.media_type &&\n\t\t\t\tmedia.type &&\n\t\t\t\tmedia.type !== IMAGE_BACKGROUND_TYPE )\n\t\t) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only images can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst sizeValue =\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":";;;;;;;;;;;AAGA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,WAAA,GAAAD,OAAA;AAmBA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,IAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AAOA,IAAAM,KAAA,GAAAN,OAAA;AACA,IAAAO,IAAA,GAAAP,OAAA;AACA,IAAAQ,KAAA,GAAAR,OAAA;AAKA,IAAAS,MAAA,GAAAT,OAAA;AACA,IAAAU,OAAA,GAAAV,OAAA;AACA,IAAAW,iBAAA,GAAAZ,sBAAA,CAAAC,OAAA;AACA,IAAAY,MAAA,GAAAZ,OAAA;AACA,IAAAa,kBAAA,GAAAb,OAAA;AAAkE,IAAAc,WAAA,GAAAd,OAAA;AAhDlE;AACA;AACA;;AAGA;AACA;AACA;;AAkCA;AACA;AACA;;AAOA,MAAMe,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;AACO,SAASC,qBAAqBA,CAAEC,QAAQ,EAAG;EACjD,OAAOC,iBAAQ,CAACC,EAAE,KAAK,KAAK,IAAIF,QAAQ,EAAEG,UAAU,EAAEX,eAAe;AACtE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASY,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;AACO,SAASE,uBAAuBA,CAAEJ,KAAK,EAAG;EAChD,OACC,CAAC,CAAEA,KAAK,EAAEF,UAAU,EAAEX,eAAe,EAAEkB,EAAE;EACzC;EACA,QAAQ,KAAK,OAAOL,KAAK,EAAEF,UAAU,EAAEX,eAAe,IACtD,CAAC,CAAEa,KAAK,EAAEF,UAAU,EAAEX,eAAe,EAAEmB,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,OAAO,IAAAO,QAAE,EAAE,gCAAiC,CAAC;EAC9C;EACA,IAAKD,KAAK,KAAK,SAAS,EAAG;IAC1B,OAAO,IAAAC,QAAE,EAAE,wCAAyC,CAAC;EACtD;EACA,OAAO,IAAAA,QAAE,EAAE,0BAA2B,CAAC;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,0BAA0B,GAAKF,KAAK,IAAM;EACtD,IAAK,CAAEA,KAAK,IAAMG,KAAK,CAAEH,KAAK,CAACI,CAAE,CAAC,IAAID,KAAK,CAAEH,KAAK,CAACK,CAAE,CAAG,EAAG;IAC1D,OAAOX,SAAS;EACjB;EAEA,MAAMU,CAAC,GAAGD,KAAK,CAAEH,KAAK,CAACI,CAAE,CAAC,GAAG,GAAG,GAAGJ,KAAK,CAACI,CAAC;EAC1C,MAAMC,CAAC,GAAGF,KAAK,CAAEH,KAAK,CAACK,CAAE,CAAC,GAAG,GAAG,GAAGL,KAAK,CAACK,CAAC;EAE1C,OAAQ,GAAGD,CAAC,GAAG,GAAK,KAAKC,CAAC,GAAG,GAAK,GAAE;AACrC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AALAC,OAAA,CAAAJ,0BAAA,GAAAA,0BAAA;AAMO,MAAMK,0BAA0B,GAAKP,KAAK,IAAM;EACtD,IAAK,CAAEA,KAAK,EAAG;IACd,OAAO;MAAEI,CAAC,EAAEV,SAAS;MAAEW,CAAC,EAAEX;IAAU,CAAC;EACtC;EAEA,IAAI,CAAEU,CAAC,EAAEC,CAAC,CAAE,GAAGL,KAAK,CAACQ,KAAK,CAAE,GAAI,CAAC,CAACC,GAAG,CAAIC,CAAC,IAAMC,UAAU,CAAED,CAAE,CAAC,GAAG,GAAI,CAAC;EACvEN,CAAC,GAAGD,KAAK,CAAEC,CAAE,CAAC,GAAGV,SAAS,GAAGU,CAAC;EAC9BC,CAAC,GAAGF,KAAK,CAAEE,CAAE,CAAC,GAAGD,CAAC,GAAGC,CAAC;EAEtB,OAAO;IAAED,CAAC;IAAEC;EAAE,CAAC;AAChB,CAAC;AAACC,OAAA,CAAAC,0BAAA,GAAAA,0BAAA;AAEF,SAASK,yBAAyBA,CAAE;EACnCC,EAAE,GAAG,MAAM;EACXC,MAAM;EACNC,WAAW,GAAG,CAAC,CAAC;EAChBC,QAAQ;EACRC,KAAK;EACLjC,SAAS;EACTkC,gBAAgB,GAAGjC;AACpB,CAAC,EAAG;EACH,IAAAkC,kBAAS,EAAE,MAAM;IAChB,IAAK,OAAOJ,WAAW,EAAEK,MAAM,KAAK,WAAW,EAAG;MACjDF,gBAAgB,CAAEH,WAAW,EAAEK,MAAO,CAAC;IACxC;EACD,CAAC,EAAE,CAAEL,WAAW,EAAEK,MAAM,EAAEF,gBAAgB,CAAG,CAAC;EAC9C,oBACC,IAAA1C,WAAA,CAAA6C,GAAA,EAAC1D,WAAA,CAAA2D,uBAAS;IAACT,EAAE,EAAGA,EAAI;IAAC7B,SAAS,EAAGA,SAAW;IAAA,GAAM+B,WAAW;IAAAQ,QAAA,eAC5D,IAAA/C,WAAA,CAAAgD,IAAA,EAAC7D,WAAA,CAAA8D,oBAAM;MACNC,OAAO,EAAC,YAAY;MACpBb,EAAE,EAAC,MAAM;MACT7B,SAAS,EAAC,sEAAsE;MAAAuC,QAAA,GAE9ET,MAAM,iBACP,IAAAtC,WAAA,CAAA6C,GAAA;QACCrC,SAAS,EAAC,gFAAgF;QAC1F,mBAAW;QAAAuC,QAAA,eAEX,IAAA/C,WAAA,CAAA6C,GAAA;UACCrC,SAAS,EAAC,wEAAwE;UAClFQ,KAAK,EAAG;YACPb,eAAe,EAAG,OAAOmC,MAAQ;UAClC;QAAG,CACH;MAAC,CACG,CACN,eACD,IAAAtC,WAAA,CAAAgD,IAAA,EAAC7D,WAAA,CAAAgE,QAAQ;QAACd,EAAE,EAAC,MAAM;QAACrB,KAAK,EAAGsB,MAAM,GAAG,CAAC,CAAC,GAAG;UAAEc,QAAQ,EAAE;QAAE,CAAG;QAAAL,QAAA,gBAC1D,IAAA/C,WAAA,CAAA6C,GAAA,EAAC1D,WAAA,CAAAkE,sBAAQ;UACRC,aAAa,EAAG,CAAG;UACnB9C,SAAS,EAAC,4EAA4E;UAAAuC,QAAA,EAEpFN;QAAK,CACE,CAAC,eACX,IAAAzC,WAAA,CAAA6C,GAAA,EAAC1D,WAAA,CAAAoE,cAAc;UAAClB,EAAE,EAAC,MAAM;UAAAU,QAAA,EACtBT,MAAM,GACL,IAAAkB,aAAO,GACP;UACA,IAAA/B,QAAE,EAAE,sBAAuB,CAAC,EAC5Be,QAAQ,IAAIC,KACZ,CAAC,GACD,IAAAhB,QAAE,EAAE,8BAA+B;QAAC,CACxB,CAAC;MAAA,CACR,CAAC;IAAA,CACJ;EAAC,CACC,CAAC;AAEd;AAEA,SAASgC,uBAAuBA,CAAE;EACjChB,KAAK;EACLD,QAAQ;EACRlB,GAAG,EAAEgB,MAAM;EACXS,QAAQ;EACRW,QAAQ,EAAEhB,gBAAgB,GAAGjC,IAAI;EACjCkD;AACD,CAAC,EAAG;EACH,IAAK,CAAEA,aAAa,EAAG;IACtB;EACD;EAEA,MAAMC,QAAQ,GACbnB,KAAK,IAAI,IAAAoB,gBAAW,EAAEvB,MAAO,CAAC,IAAI,IAAAb,QAAE,EAAE,sBAAuB,CAAC;EAE/D,oBACC,IAAAzB,WAAA,CAAA6C,GAAA,EAAC1D,WAAA,CAAA2E,QAAQ;IACRC,YAAY,EAAG3D,wBAA0B;IACzC4D,YAAY,EAAGA,CAAE;MAAEN,QAAQ;MAAEd;IAAO,CAAC,KAAM;MAC1C,MAAML,WAAW,GAAG;QACnB0B,OAAO,EAAEP,QAAQ;QACjBlD,SAAS,EACR,8DAA8D;QAC/D,eAAe,EAAEoC,MAAM;QACvB,YAAY,EAAE,IAAAnB,QAAE,EACf,+CACD,CAAC;QACDmB;MACD,CAAC;MACD,oBACC,IAAA5C,WAAA,CAAA6C,GAAA,EAACT,yBAAyB;QACzBE,MAAM,EAAGA,MAAQ;QACjBE,QAAQ,EAAGA,QAAU;QACrBC,KAAK,EAAGmB,QAAU;QAClBrB,WAAW,EAAGA,WAAa;QAC3BF,EAAE,EAAC,QAAQ;QACXK,gBAAgB,EAAGA;MAAkB,CACrC,CAAC;IAEJ,CAAG;IACHwB,aAAa,EAAGA,CAAA,kBACf,IAAAlE,WAAA,CAAA6C,GAAA,EAAC1D,WAAA,CAAAgF,oCAAsB;MACtB3D,SAAS,EAAC,uEAAuE;MACjF4D,WAAW,EAAC,QAAQ;MAAArB,QAAA,EAElBA;IAAQ,CACa;EACtB,CACH,CAAC;AAEJ;AAEA,SAASsB,uBAAuBA,CAAE;EACjCC,QAAQ;EACRtD,KAAK;EACLuD,cAAc;EACdC,aAAa,GAAG/D,IAAI;EACpBgE,cAAc;EACdC;AACD,CAAC,EAAG;EACH,MAAMC,WAAW,GAAG,IAAAC,eAAS,EAC1BC,MAAM,IAAMA,MAAM,CAAEC,YAAiB,CAAC,CAACC,WAAW,CAAC,CAAC,CAACJ,WAAW,EAClE,EACD,CAAC;EAED,MAAM;IAAEtD,EAAE;IAAE2D,KAAK;IAAE1D;EAAI,CAAC,GAAGN,KAAK,EAAEF,UAAU,EAAEX,eAAe,IAAI;IAChE,GAAGoE,cAAc,EAAEzD,UAAU,EAAEX;EAChC,CAAC;EACD,MAAM8E,mBAAmB,GAAG,IAAAC,eAAM,EAAC,CAAC;EACpC,MAAM;IAAEC;EAAkB,CAAC,GAAG,IAAAC,iBAAW,EAAEC,cAAa,CAAC;EACzD,MAAMC,aAAa,GAAKC,OAAO,IAAM;IACpCJ,iBAAiB,CAAEI,OAAO,EAAE;MAAEC,IAAI,EAAE;IAAW,CAAE,CAAC;EACnD,CAAC;EAED,MAAMC,oBAAoB,GAAGA,CAAA,KAC5BnB,QAAQ,CACP,IAAAoB,oBAAY,EACX1E,KAAK,EACL,CAAE,YAAY,EAAE,iBAAiB,CAAE,EACnCE,SACD,CACD,CAAC;EAEF,MAAMyE,aAAa,GAAKC,KAAK,IAAM;IAClC,IAAK,CAAEA,KAAK,IAAI,CAAEA,KAAK,CAACtE,GAAG,EAAG;MAC7BmE,oBAAoB,CAAC,CAAC;MACtB;IACD;IAEA,IAAK,IAAAI,eAAS,EAAED,KAAK,CAACtE,GAAI,CAAC,EAAG;MAC7B;IACD;;IAEA;IACA,IACGsE,KAAK,CAACE,UAAU,IACjBF,KAAK,CAACE,UAAU,KAAK7F,qBAAqB,IACzC,CAAE2F,KAAK,CAACE,UAAU,IACnBF,KAAK,CAACJ,IAAI,IACVI,KAAK,CAACJ,IAAI,KAAKvF,qBAAuB,EACtC;MACDqF,aAAa,CACZ,IAAA7D,QAAE,EAAE,gDAAiD,CACtD,CAAC;MACD;IACD;IAEA,MAAMsE,SAAS,GACd/E,KAAK,EAAEF,UAAU,EAAEK,cAAc,IACjCoD,cAAc,EAAEzD,UAAU,EAAEK,cAAc;IAC3C,MAAM6E,aAAa,GAClBhF,KAAK,EAAEF,UAAU,EAAEG,kBAAkB,IACrCsD,cAAc,EAAEzD,UAAU,EAAEG,kBAAkB;IAE/CqD,QAAQ,CACP,IAAAoB,oBAAY,EAAE1E,KAAK,EAAE,CAAE,YAAY,CAAE,EAAE;MACtC,GAAGA,KAAK,EAAEF,UAAU;MACpBX,eAAe,EAAE;QAChBmB,GAAG,EAAEsE,KAAK,CAACtE,GAAG;QACdD,EAAE,EAAEuE,KAAK,CAACvE,EAAE;QACZ4E,MAAM,EAAE,MAAM;QACdjB,KAAK,EAAEY,KAAK,CAACZ,KAAK,IAAI9D;MACvB,CAAC;MACDD,kBAAkB,EACjB,CAAE+E,aAAa,KAAM,MAAM,KAAKD,SAAS,IAAI,CAAEA,SAAS,CAAE,GACvD,OAAO,GACPC,aAAa;MACjB7E,cAAc,EAAE4E;IACjB,CAAE,CACH,CAAC;EACF,CAAC;EAED,MAAMG,WAAW,GAAKC,SAAS,IAAM;IACpCxB,WAAW,CAAE;MACZyB,YAAY,EAAE,CAAEnG,qBAAqB,CAAE;MACvCkG,SAAS;MACTE,YAAYA,CAAE,CAAEC,KAAK,CAAE,EAAG;QACzB,IAAK,IAAAT,eAAS,EAAES,KAAK,EAAEhF,GAAI,CAAC,EAAG;UAC9B;QACD;QACAqE,aAAa,CAAEW,KAAM,CAAC;MACvB,CAAC;MACDC,OAAO,EAAEjB;IACV,CAAE,CAAC;EACJ,CAAC;EAED,MAAMkB,QAAQ,GAAGpF,uBAAuB,CAAEJ,KAAM,CAAC;EAEjD,MAAMyF,aAAa,GAAGA,CAAA,KAAM;IAC3B,MAAM,CAAEC,YAAY,CAAE,GAAGC,UAAK,CAACC,QAAQ,CAACC,IAAI,CAC3C5B,mBAAmB,CAAC6B,OACrB,CAAC;IACD;IACA;IACA;IACAJ,YAAY,EAAEC,KAAK,CAAC,CAAC;IACrBD,YAAY,EAAEK,KAAK,CAAC,CAAC;EACtB,CAAC;EAED,MAAMC,QAAQ,GAAGA,CAAA,KAChB1C,QAAQ,CACP,IAAAoB,oBAAY,EAAE1E,KAAK,EAAE,CAAE,YAAY,EAAE,iBAAiB,CAAE,EAAE,MAAO,CAClE,CAAC;EACF,MAAMiG,SAAS,GAAG,CAAET,QAAQ,IAAIpF,uBAAuB,CAAEmD,cAAe,CAAC;EACzE,MAAMX,QAAQ,GACboB,KAAK,IAAI,IAAAnB,gBAAW,EAAEvC,GAAI,CAAC,IAAI,IAAAG,QAAE,EAAE,sBAAuB,CAAC;EAE5D,oBACC,IAAAzB,WAAA,CAAAgD,IAAA;IACCkE,GAAG,EAAGjC,mBAAqB;IAC3BzE,SAAS,EAAC,qEAAqE;IAAAuC,QAAA,gBAE/E,IAAA/C,WAAA,CAAAgD,IAAA,EAACnD,iBAAA,CAAAsH,OAAgB;MAChBC,OAAO,EAAG/F,EAAI;MACdgG,QAAQ,EAAG/F,GAAK;MAChB8E,YAAY,EAAG,CAAEnG,qBAAqB,CAAI;MAC1CqH,MAAM,EAAC,SAAS;MAChBC,QAAQ,EAAG5B,aAAe;MAC1B5B,YAAY,EAAG;QACdvD,SAAS,EAAE,IAAAgH,aAAI,EAAE;UAChB,oEAAoE,EACnE/C;QACF,CAAE;MACH,CAAG;MACHgD,IAAI,eACH,IAAAzH,WAAA,CAAA6C,GAAA,EAACT,yBAAyB;QACzB5B,SAAS,EAAC,4DAA4D;QACtE8B,MAAM,EAAG,IAAAoF,2CAAwB,EAChCpG,GAAG,EACHoD,aACD,CAAG;QACHlC,QAAQ,EAAGwC,KAAO;QAClBvC,KAAK,EAAGmB;MAAU,CAClB,CACD;MACD+D,OAAO,EAAC,WAAW;MAAA5E,QAAA,GAEjBkE,SAAS,iBACV,IAAAjH,WAAA,CAAA6C,GAAA,EAAC1D,WAAA,CAAAyI,QAAQ;QACR3D,OAAO,EAAGA,CAAA,KAAM;UACfwC,aAAa,CAAC,CAAC;UACfO,QAAQ,CAAC,CAAC;QACX,CAAG;QAAAjE,QAAA,EAED,IAAAtB,QAAE,EAAE,QAAS;MAAC,CACP,CACV,EACC+E,QAAQ,iBACT,IAAAxG,WAAA,CAAA6C,GAAA,EAAC1D,WAAA,CAAAyI,QAAQ;QACR3D,OAAO,EAAGA,CAAA,KAAM;UACfwC,aAAa,CAAC,CAAC;UACfjC,aAAa,CAAC,CAAC;QAChB,CAAG;QAAAzB,QAAA,EAED,IAAAtB,QAAE,EAAE,QAAS;MAAC,CACP,CACV;IAAA,CACgB,CAAC,eACnB,IAAAzB,WAAA,CAAA6C,GAAA,EAAC1D,WAAA,CAAA0I,QAAQ;MACR3B,WAAW,EAAGA,WAAa;MAC3BzD,KAAK,EAAG,IAAAhB,QAAE,EAAE,gBAAiB;IAAG,CAChC,CAAC;EAAA,CACE,CAAC;AAER;AAEA,SAASqG,sBAAsBA,CAAE;EAChCxD,QAAQ;EACRtD,KAAK;EACLuD,cAAc;EACdwD,aAAa;EACbrD;AACD,CAAC,EAAG;EACH,MAAMqB,SAAS,GACd/E,KAAK,EAAEF,UAAU,EAAEK,cAAc,IACjCoD,cAAc,EAAEzD,UAAU,EAAEK,cAAc;EAC3C,MAAM6G,WAAW,GAChBhH,KAAK,EAAEF,UAAU,EAAEmH,gBAAgB,IACnC1D,cAAc,EAAEzD,UAAU,EAAEmH,gBAAgB;EAC7C,MAAMC,UAAU,GACflH,KAAK,EAAEF,UAAU,EAAEX,eAAe,EAAEmB,GAAG,IACvCiD,cAAc,EAAEzD,UAAU,EAAEX,eAAe,EAAEmB,GAAG;EACjD,MAAM6G,eAAe,GACpBnH,KAAK,EAAEF,UAAU,EAAEX,eAAe,EAAEkB,EAAE,IACtCkD,cAAc,EAAEzD,UAAU,EAAEX,eAAe,EAAEkB,EAAE;EAChD,MAAM2E,aAAa,GAClBhF,KAAK,EAAEF,UAAU,EAAEG,kBAAkB,IACrCsD,cAAc,EAAEzD,UAAU,EAAEG,kBAAkB;EAC/C,MAAMmH,eAAe,GACpBpH,KAAK,EAAEF,UAAU,EAAEuH,oBAAoB,IACvC9D,cAAc,EAAEzD,UAAU,EAAEuH,oBAAoB;;EAEjD;AACD;AACA;AACA;AACA;AACA;EACC,MAAMC,qBAAqB,GAC1B,CAAEvC,SAAS,IAAIoC,eAAe,GAC3BJ,aAAa,EAAE5G,cAAc,GAC7B4E,SAAS,IAAI,MAAM;;EAEvB;AACD;AACA;AACA;AACA;EACC,MAAMwC,kBAAkB,GAAG,EAC1BP,WAAW,KAAK,WAAW,IACzBM,qBAAqB,KAAK,OAAO,IAAIN,WAAW,KAAK9G,SAAW,CAClE;EAED,MAAMsH,oBAAoB,GAAKC,IAAI,IAAM;IACxC;IACA,IAAIC,UAAU,GAAGV,WAAW;IAC5B,IAAIW,YAAY,GAAG3C,aAAa;IAEhC,IAAKyC,IAAI,KAAK,SAAS,EAAG;MACzBC,UAAU,GAAG,WAAW;MACxBC,YAAY,GAAGzH,SAAS;IACzB;IAEA,IAAKuH,IAAI,KAAK,OAAO,EAAG;MACvBC,UAAU,GAAGxH,SAAS;MACtByH,YAAY,GAAGzH,SAAS;IACzB;IAEA,IACC,CAAEoH,qBAAqB,KAAK,OAAO,IAClCA,qBAAqB,KAAK,SAAS,KACpCG,IAAI,KAAK,MAAM,EACd;MACDC,UAAU,GAAGxH,SAAS;MACtB;AACH;AACA;AACA;AACA;AACA;MACG,IAAK,CAAC,CAAEF,KAAK,EAAEF,UAAU,EAAEX,eAAe,EAAEkB,EAAE,EAAG;QAChDsH,YAAY,GAAG,OAAO;MACvB;IACD;;IAEA;AACF;AACA;AACA;IACE,IAAK,CAAEF,IAAI,IAAIH,qBAAqB,KAAK,MAAM,EAAG;MACjDG,IAAI,GAAG,MAAM;IACd;IAEAnE,QAAQ,CACP,IAAAoB,oBAAY,EAAE1E,KAAK,EAAE,CAAE,YAAY,CAAE,EAAE;MACtC,GAAGA,KAAK,EAAEF,UAAU;MACpBG,kBAAkB,EAAE0H,YAAY;MAChCV,gBAAgB,EAAES,UAAU;MAC5BvH,cAAc,EAAEsH;IACjB,CAAE,CACH,CAAC;EACF,CAAC;EAED,MAAMG,wBAAwB,GAAKH,IAAI,IAAM;IAC5CnE,QAAQ,CACP,IAAAoB,oBAAY,EACX1E,KAAK,EACL,CAAE,YAAY,EAAE,oBAAoB,CAAE,EACtCU,0BAA0B,CAAE+G,IAAK,CAClC,CACD,CAAC;EACF,CAAC;EAED,MAAMI,gBAAgB,GAAGA,CAAA,KACxBvE,QAAQ,CACP,IAAAoB,oBAAY,EACX1E,KAAK,EACL,CAAE,YAAY,EAAE,kBAAkB,CAAE,EACpCuH,kBAAkB,KAAK,IAAI,GAAG,WAAW,GAAG,QAC7C,CACD,CAAC;EAEF,MAAMO,oBAAoB,GAAGA,CAAA,KAC5BxE,QAAQ,CACP,IAAAoB,oBAAY,EACX1E,KAAK,EACL,CAAE,YAAY,EAAE,sBAAsB,CAAE,EACxCoH,eAAe,KAAK,OAAO,GAAG,QAAQ,GAAG,OAC1C,CACD,CAAC;EAEF,oBACC,IAAApI,WAAA,CAAAgD,IAAA,EAAC7D,WAAA,CAAA4J,oBAAM;IAACC,OAAO,EAAG,CAAG;IAACxI,SAAS,EAAC,eAAe;IAAAuC,QAAA,gBAC9C,IAAA/C,WAAA,CAAA6C,GAAA,EAAC1D,WAAA,CAAA8J,gBAAgB;MAChBC,qBAAqB;MACrBC,uBAAuB;MACvB1G,KAAK,EAAG,IAAAhB,QAAE,EAAE,aAAc,CAAG;MAC7BH,GAAG,EAAG,IAAAoG,2CAAwB,EAAEQ,UAAU,EAAExD,aAAc,CAAG;MAC7DlD,KAAK,EAAGO,0BAA0B,CAAEiE,aAAc,CAAG;MACrD1B,QAAQ,EAAGsE;IAA0B,CACrC,CAAC,eACF,IAAA5I,WAAA,CAAA6C,GAAA,EAAC1D,WAAA,CAAAiK,aAAa;MACbD,uBAAuB;MACvB1G,KAAK,EAAG,IAAAhB,QAAE,EAAE,kBAAmB,CAAG;MAClC4H,OAAO,EAAGjB,eAAe,KAAK,OAAS;MACvC9D,QAAQ,EAAGwE,oBAAsB;MACjCQ,IAAI,EAAG,IAAA7H,QAAE,EACR,wEACD;IAAG,CACH,CAAC,eACF,IAAAzB,WAAA,CAAAgD,IAAA,EAAC7D,WAAA,CAAAoK,gCAAkB;MAClBJ,uBAAuB;MACvBK,IAAI,EAAC,kBAAkB;MACvB/G,KAAK,EAAG,IAAAhB,QAAE,EAAE,MAAO,CAAG;MACtBD,KAAK,EAAG8G,qBAAuB;MAC/BhE,QAAQ,EAAGkE,oBAAsB;MACjCiB,OAAO;MACPH,IAAI,EAAG/H,sBAAsB,CAC5BwE,SAAS,IAAIgC,aAAa,EAAE5G,cAC7B,CAAG;MAAA4B,QAAA,gBAEH,IAAA/C,WAAA,CAAA6C,GAAA,EAAC1D,WAAA,CAAAuK,sCAAwB;QAExBlI,KAAK,EAAC,OAAO;QACbiB,KAAK,EAAG,IAAAkH,QAAE,EACT,OAAO,EACP,0CACD;MAAG,GALC,OAMJ,CAAC,eACF,IAAA3J,WAAA,CAAA6C,GAAA,EAAC1D,WAAA,CAAAuK,sCAAwB;QAExBlI,KAAK,EAAC,SAAS;QACfiB,KAAK,EAAG,IAAAkH,QAAE,EACT,SAAS,EACT,0CACD;MAAG,GALC,SAMJ,CAAC,eACF,IAAA3J,WAAA,CAAA6C,GAAA,EAAC1D,WAAA,CAAAuK,sCAAwB;QAExBlI,KAAK,EAAC,MAAM;QACZiB,KAAK,EAAG,IAAAkH,QAAE,EACT,MAAM,EACN,0CACD;MAAG,GALC,MAMJ,CAAC;IAAA,CACiB,CAAC,eACrB,IAAA3J,WAAA,CAAAgD,IAAA,EAAC7D,WAAA,CAAA8D,oBAAM;MAACC,OAAO,EAAC,YAAY;MAAC8F,OAAO,EAAG,CAAG;MAAC3G,EAAE,EAAC,MAAM;MAAAU,QAAA,gBACnD,IAAA/C,WAAA,CAAA6C,GAAA,EAAC1D,WAAA,CAAAyK,yBAAW;QACX,cAAa,IAAAnI,QAAE,EAAE,wBAAyB,CAAG;QAC7C6C,QAAQ,EAAGkE,oBAAsB;QACjChH,KAAK,EAAGuE,SAAW;QACnByD,IAAI,EAAC,kBAAkB;QACvBK,oBAAoB,EAAC,OAAO;QAC5BC,GAAG,EAAG,CAAG;QACTC,WAAW,EAAG,IAAAtI,QAAE,EAAE,MAAO,CAAG;QAC5BuI,QAAQ,EACP1B,qBAAqB,KAAK,MAAM,IAChCA,qBAAqB,KAAKpH;MAC1B,CACD,CAAC,eACF,IAAAlB,WAAA,CAAA6C,GAAA,EAAC1D,WAAA,CAAAiK,aAAa;QACbD,uBAAuB;QACvB1G,KAAK,EAAG,IAAAhB,QAAE,EAAE,QAAS,CAAG;QACxB4H,OAAO,EAAGd,kBAAoB;QAC9BjE,QAAQ,EAAGuE,gBAAkB;QAC7BmB,QAAQ,EAAG1B,qBAAqB,KAAK;MAAS,CAC9C,CAAC;IAAA,CACK,CAAC;EAAA,CACF,CAAC;AAEX;AAEA,SAAS2B,oBAAoBA,CAAE;EAC9BC,cAAc;EACd5F,QAAQ;EACR9C,KAAK;EACL2I,OAAO;EACPpH,QAAQ;EACRqH;AACD,CAAC,EAAG;EACH,MAAMC,iBAAiB,GAAG,IAAAC,qCAA8B,EAAC,CAAC;EAC1D,MAAMC,QAAQ,GAAGA,CAAA,KAAM;IACtB,MAAMC,YAAY,GAAGN,cAAc,CAAE1I,KAAM,CAAC;IAC5C8C,QAAQ,CAAEkG,YAAa,CAAC;EACzB,CAAC;EAED,oBACC,IAAAxK,WAAA,CAAA6C,GAAA,EAAC1D,WAAA,CAAA4J,oBAAM;IACN1G,EAAE,EAAGoI,oCAAY;IACjBzB,OAAO,EAAG,CAAG;IACbvG,KAAK,EAAG2H,WAAa;IACrBG,QAAQ,EAAGA,QAAU;IACrBJ,OAAO,EAAGA,OAAS;IACnBE,iBAAiB,EAAGA,iBAAmB;IAAAtH,QAAA,EAErCA;EAAQ,CACH,CAAC;AAEX;AAEe,SAAS2H,eAAeA,CAAE;EACxCrI,EAAE,EAAEsI,OAAO,GAAGV,oBAAoB;EAClCzI,KAAK;EACL8C,QAAQ;EACRC,cAAc,GAAG/C,KAAK;EACtBb,QAAQ;EACRwJ,OAAO;EACPS,eAAe,GAAG1K,gBAAgB;EAClC6H,aAAa,GAAG,CAAC,CAAC;EAClBqC,WAAW,GAAG,IAAA3I,QAAE,EAAE,kBAAmB,CAAC;EACtCiD;AACD,CAAC,EAAG;EACH,MAAMwF,cAAc,GAAG,IAAAW,oBAAW,EAAIC,aAAa,IAAM;IACxD,OAAO;MACN,GAAGA,aAAa;MAChBhK,UAAU,EAAE,CAAC;IACd,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAMiK,eAAe,GAAGA,CAAA,KACvBzG,QAAQ,CAAE,IAAAoB,oBAAY,EAAElE,KAAK,EAAE,CAAE,YAAY,CAAE,EAAE,CAAC,CAAE,CAAE,CAAC;EAExD,MAAM;IAAEwD,KAAK;IAAE1D;EAAI,CAAC,GAAGE,KAAK,EAAEV,UAAU,EAAEX,eAAe,IAAI;IAC5D,GAAGoE,cAAc,EAAEzD,UAAU,EAAEX;EAChC,CAAC;EACD,MAAMwD,aAAa,GAClBvC,uBAAuB,CAAEI,KAAM,CAAC,IAChCJ,uBAAuB,CAAEmD,cAAe,CAAC;EAE1C,MAAMyG,iCAAiC,GACtCrH,aAAa,KACXhD,QAAQ,EAAEG,UAAU,EAAEK,cAAc,IACrCR,QAAQ,EAAEG,UAAU,EAAEG,kBAAkB,IACxCN,QAAQ,EAAEG,UAAU,EAAEmH,gBAAgB,CAAE;EAE1C,MAAM,CAAEgD,cAAc,EAAEC,iBAAiB,CAAE,GAAG,IAAAC,iBAAQ,EAAE,KAAM,CAAC;EAE/D,oBACC,IAAAnL,WAAA,CAAA6C,GAAA,EAAC8H,OAAO;IACPT,cAAc,EAAGA,cAAgB;IACjC1I,KAAK,EAAGA,KAAO;IACf8C,QAAQ,EAAGA,QAAU;IACrB6F,OAAO,EAAGA,OAAS;IACnBC,WAAW,EAAGA,WAAa;IAAArH,QAAA,eAE3B,IAAA/C,WAAA,CAAA6C,GAAA;MACCrC,SAAS,EAAG,IAAAgH,aAAI,EACf,gFAAgF,EAChF;QACC,SAAS,EAAEyD;MACZ,CACD,CAAG;MAAAlI,QAAA,eAEH,IAAA/C,WAAA,CAAA6C,GAAA,EAAC1D,WAAA,CAAAiM,4BAAc;QACd5E,QAAQ,EAAGA,CAAA,KAAM7C,aAAe;QAChClB,KAAK,EAAG,IAAAhB,QAAE,EAAE,OAAQ,CAAG;QACvB4J,UAAU,EAAGN,eAAiB;QAC9BO,gBAAgB,EAAGV,eAAe,CAACzK,eAAiB;QACpDgK,OAAO,EAAGA,OAAS;QAAApH,QAAA,EAEjBiI,iCAAiC,gBAClC,IAAAhL,WAAA,CAAA6C,GAAA,EAACY,uBAAuB;UACvBhB,KAAK,EAAGuC,KAAO;UACfxC,QAAQ,EAAGwC,KAAO;UAClB1D,GAAG,EAAG,IAAAoG,2CAAwB,EAC7BpG,GAAG,EACHoD,aACD,CAAG;UACHhB,QAAQ,EAAGwH,iBAAmB;UAC9BvH,aAAa,EAAGA,aAAe;UAAAZ,QAAA,eAE/B,IAAA/C,WAAA,CAAAgD,IAAA,EAAC7D,WAAA,CAAA4J,oBAAM;YAACC,OAAO,EAAG,CAAG;YAACxI,SAAS,EAAC,eAAe;YAAAuC,QAAA,gBAC9C,IAAA/C,WAAA,CAAA6C,GAAA,EAACwB,uBAAuB;cACvBC,QAAQ,EAAGA,QAAU;cACrBtD,KAAK,EAAGQ,KAAO;cACf+C,cAAc,EAAGA,cAAgB;cACjCG,aAAa,EAAGA,aAAe;cAC/BD,cAAc;cACdD,aAAa,EAAGA,CAAA,KAAM;gBACrB0G,iBAAiB,CAAE,KAAM,CAAC;gBAC1BH,eAAe,CAAC,CAAC;cAClB;YAAG,CACH,CAAC,eACF,IAAA/K,WAAA,CAAA6C,GAAA,EAACiF,sBAAsB;cACtBxD,QAAQ,EAAGA,QAAU;cACrB6F,OAAO,EAAGA,OAAS;cACnBnJ,KAAK,EAAGQ,KAAO;cACfuG,aAAa,EAAGA,aAAe;cAC/BxD,cAAc,EAAGA,cAAgB;cACjCG,aAAa,EAAGA;YAAe,CAC/B,CAAC;UAAA,CACK;QAAC,CACe,CAAC,gBAE1B,IAAA1E,WAAA,CAAA6C,GAAA,EAACwB,uBAAuB;UACvBC,QAAQ,EAAGA,QAAU;UACrBtD,KAAK,EAAGQ,KAAO;UACf+C,cAAc,EAAGA,cAAgB;UACjCG,aAAa,EAAGA;QAAe,CAC/B;MACD,CACc;IAAC,CACb;EAAC,CACE,CAAC;AAEZ","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_clsx","_interopRequireDefault","require","_components","_i18n","_notices","_url","_element","_data","_dom","_blob","_utils","_object","_mediaReplaceFlow","_store","_privateKeys","_jsxRuntime","IMAGE_BACKGROUND_TYPE","DEFAULT_CONTROLS","backgroundImage","BACKGROUND_POPOVER_PROPS","placement","offset","shift","className","noop","useHasBackgroundPanel","settings","Platform","OS","background","hasBackgroundSizeValue","style","backgroundPosition","undefined","backgroundSize","hasBackgroundImageValue","id","url","backgroundSizeHelpText","value","__","coordsToBackgroundPosition","isNaN","x","y","exports","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreviewItem","as","imgUrl","toggleProps","filename","label","onToggleCallback","useEffect","isOpen","jsx","__experimentalItemGroup","children","jsxs","__experimentalHStack","justify","FlexItem","flexGrow","__experimentalTruncate","numberOfLines","VisuallyHidden","sprintf","BackgroundControlsPanel","onToggle","hasImageValue","imgLabel","getFilename","Dropdown","popoverProps","renderToggle","onClick","renderContent","__experimentalDropdownContentWrapper","paddingSize","LoadingSpinner","Placeholder","Spinner","BackgroundImageControls","onChange","inheritedValue","onRemoveImage","onResetImage","displayInPanel","defaultValues","isUploading","setIsUploading","useState","getSettings","useSelect","blockEditorStore","title","replaceContainerRef","useRef","createErrorNotice","useDispatch","noticesStore","onUploadError","message","type","resetBackgroundImage","setImmutably","onSelectMedia","media","isBlobURL","media_type","sizeValue","positionValue","source","onFilesDrop","filesList","length","mediaUpload","allowedTypes","onFileChange","image","onError","hasValue","closeAndFocus","toggleButton","focus","tabbable","find","current","click","onRemove","canRemove","ref","default","mediaId","mediaURL","accept","onSelect","clsx","name","variant","MenuItem","DropZone","BackgroundSizeControls","repeatValue","backgroundRepeat","imageValue","isUploadedImage","attachmentValue","backgroundAttachment","currentValueForToggle","includes","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","toggleScrollWithPage","backgroundPositionValue","__experimentalVStack","spacing","FocalPointPicker","__nextHasNoMarginBottom","ToggleControl","checked","__experimentalToggleGroupControl","size","isBlock","help","__experimentalToggleGroupControlOption","_x","__experimentalUnitControl","__unstableInputWidth","min","placeholder","disabled","BackgroundToolsPanel","resetAllFilter","panelId","headerLabel","dropdownMenuProps","useToolsPanelDropdownMenuProps","resetAll","updatedValue","ToolsPanel","BackgroundPanel","Wrapper","defaultControls","globalStyles","_links","select","_settings","globalStylesDataKey","globalStylesLinksDataKey","resolvedInheritedValue","useMemo","resolvedValues","Object","entries","forEach","key","backgroundValue","getResolvedValue","styles","useCallback","previousValue","resetBackground","shouldShowBackgroundImageControls","isDropDownOpen","setIsDropDownOpen","__experimentalToolsPanelItem","onDeselect","isShownByDefault"],"sources":["@wordpress/block-editor/src/components/global-styles/background-panel.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tToggleControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalVStack as VStack,\n\tDropZone,\n\tFlexItem,\n\tFocalPointPicker,\n\tMenuItem,\n\tVisuallyHidden,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tDropdown,\n\tPlaceholder,\n\tSpinner,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { getFilename } from '@wordpress/url';\nimport {\n\tuseCallback,\n\tPlatform,\n\tuseRef,\n\tuseState,\n\tuseEffect,\n\tuseMemo,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { focus } from '@wordpress/dom';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps, getResolvedValue } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport MediaReplaceFlow from '../media-replace-flow';\nimport { store as blockEditorStore } from '../../store';\n\nimport {\n\tglobalStylesDataKey,\n\tglobalStylesLinksDataKey,\n} from '../../store/private-keys';\n\nconst IMAGE_BACKGROUND_TYPE = 'image';\nconst DEFAULT_CONTROLS = {\n\tbackgroundImage: true,\n};\nconst BACKGROUND_POPOVER_PROPS = {\n\tplacement: 'left-start',\n\toffset: 36,\n\tshift: true,\n\tclassName: 'block-editor-global-styles-background-panel__popover',\n};\nconst noop = () => {};\n\n/**\n * Checks site settings to see if the background panel may be used.\n * `settings.background.backgroundSize` exists also,\n * but can only be used if settings?.background?.backgroundImage is `true`.\n *\n * @param {Object} settings Site settings\n * @return {boolean} Whether site settings has activated background panel.\n */\nexport function useHasBackgroundPanel( settings ) {\n\treturn Platform.OS === 'web' && settings?.background?.backgroundImage;\n}\n\n/**\n * Checks if there is a current value in the background size block support\n * attributes. Background size values include background size as well\n * as background position.\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background size value set.\n */\nexport function hasBackgroundSizeValue( style ) {\n\treturn (\n\t\tstyle?.background?.backgroundPosition !== undefined ||\n\t\tstyle?.background?.backgroundSize !== undefined\n\t);\n}\n\n/**\n * Checks if there is a current value in the background image block support\n * attributes.\n *\n * @param {Object} style Style attribute.\n * @return {boolean} Whether the block has a background image value set.\n */\nexport function hasBackgroundImageValue( style ) {\n\treturn (\n\t\t!! style?.background?.backgroundImage?.id ||\n\t\t// Supports url() string values in theme.json.\n\t\t'string' === typeof style?.background?.backgroundImage ||\n\t\t!! style?.background?.backgroundImage?.url\n\t);\n}\n\n/**\n * Get the help text for the background size control.\n *\n * @param {string} value backgroundSize value.\n * @return {string} Translated help text.\n */\nfunction backgroundSizeHelpText( value ) {\n\tif ( value === 'cover' || value === undefined ) {\n\t\treturn __( 'Image covers the space evenly.' );\n\t}\n\tif ( value === 'contain' ) {\n\t\treturn __( 'Image is contained without distortion.' );\n\t}\n\treturn __( 'Image has a fixed width.' );\n}\n\n/**\n * Converts decimal x and y coords from FocalPointPicker to percentage-based values\n * to use as backgroundPosition value.\n *\n * @param {{x?:number, y?:number}} value FocalPointPicker coords.\n * @return {string} \t\t\t\t backgroundPosition value.\n */\nexport const coordsToBackgroundPosition = ( value ) => {\n\tif ( ! value || ( isNaN( value.x ) && isNaN( value.y ) ) ) {\n\t\treturn undefined;\n\t}\n\n\tconst x = isNaN( value.x ) ? 0.5 : value.x;\n\tconst y = isNaN( value.y ) ? 0.5 : value.y;\n\n\treturn `${ x * 100 }% ${ y * 100 }%`;\n};\n\n/**\n * Converts backgroundPosition value to x and y coords for FocalPointPicker.\n *\n * @param {string} value backgroundPosition value.\n * @return {{x?:number, y?:number}} FocalPointPicker coords.\n */\nexport const backgroundPositionToCoords = ( value ) => {\n\tif ( ! value ) {\n\t\treturn { x: undefined, y: undefined };\n\t}\n\n\tlet [ x, y ] = value.split( ' ' ).map( ( v ) => parseFloat( v ) / 100 );\n\tx = isNaN( x ) ? undefined : x;\n\ty = isNaN( y ) ? x : y;\n\n\treturn { x, y };\n};\n\nfunction InspectorImagePreviewItem( {\n\tas = 'span',\n\timgUrl,\n\ttoggleProps = {},\n\tfilename,\n\tlabel,\n\tclassName,\n\tonToggleCallback = noop,\n} ) {\n\tuseEffect( () => {\n\t\tif ( typeof toggleProps?.isOpen !== 'undefined' ) {\n\t\t\tonToggleCallback( toggleProps?.isOpen );\n\t\t}\n\t}, [ toggleProps?.isOpen, onToggleCallback ] );\n\treturn (\n\t\t<ItemGroup as={ as } className={ className } { ...toggleProps }>\n\t\t\t<HStack\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t\tas=\"span\"\n\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-preview-inner\"\n\t\t\t>\n\t\t\t\t{ imgUrl && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator-wrapper\"\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\tbackgroundImage: `url(${ imgUrl })`,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<FlexItem as=\"span\" style={ imgUrl ? {} : { flexGrow: 1 } }>\n\t\t\t\t\t<Truncate\n\t\t\t\t\t\tnumberOfLines={ 1 }\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-media-replace-title\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Truncate>\n\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t{ imgUrl\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: file name */\n\t\t\t\t\t\t\t\t\t__( 'Background image: %s' ),\n\t\t\t\t\t\t\t\t\tfilename || label\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __( 'No background image selected' ) }\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t</ItemGroup>\n\t);\n}\n\nfunction BackgroundControlsPanel( {\n\tlabel,\n\tfilename,\n\turl: imgUrl,\n\tchildren,\n\tonToggle: onToggleCallback = noop,\n\thasImageValue,\n} ) {\n\tif ( ! hasImageValue ) {\n\t\treturn;\n\t}\n\n\tconst imgLabel =\n\t\tlabel || getFilename( imgUrl ) || __( 'Add background image' );\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ BACKGROUND_POPOVER_PROPS }\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst toggleProps = {\n\t\t\t\t\tonClick: onToggle,\n\t\t\t\t\tclassName:\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__dropdown-toggle',\n\t\t\t\t\t'aria-expanded': isOpen,\n\t\t\t\t\t'aria-label': __(\n\t\t\t\t\t\t'Background size, position and repeat options.'\n\t\t\t\t\t),\n\t\t\t\t\tisOpen,\n\t\t\t\t};\n\t\t\t\treturn (\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\timgUrl={ imgUrl }\n\t\t\t\t\t\tfilename={ filename }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t\ttoggleProps={ toggleProps }\n\t\t\t\t\t\tas=\"button\"\n\t\t\t\t\t\tonToggleCallback={ onToggleCallback }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper\n\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__dropdown-content-wrapper\"\n\t\t\t\t\tpaddingSize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction LoadingSpinner() {\n\treturn (\n\t\t<Placeholder className=\"block-editor-global-styles-background-panel__loading\">\n\t\t\t<Spinner />\n\t\t</Placeholder>\n\t);\n}\n\nfunction BackgroundImageControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tonRemoveImage = noop,\n\tonResetImage = noop,\n\tdisplayInPanel,\n\tdefaultValues,\n} ) {\n\tconst [ isUploading, setIsUploading ] = useState( false );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\n\tconst { id, title, url } = style?.background?.backgroundImage || {\n\t\t...inheritedValue?.background?.backgroundImage,\n\t};\n\tconst replaceContainerRef = useRef();\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetIsUploading( false );\n\t};\n\n\tconst resetBackgroundImage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundImage' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\n\tconst onSelectMedia = ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tresetBackgroundImage();\n\t\t\tsetIsUploading( false );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetIsUploading( true );\n\t\t\treturn;\n\t\t}\n\n\t\t// For media selections originated from a file upload.\n\t\tif (\n\t\t\t( media.media_type &&\n\t\t\t\tmedia.media_type !== IMAGE_BACKGROUND_TYPE ) ||\n\t\t\t( ! media.media_type &&\n\t\t\t\tmedia.type &&\n\t\t\t\tmedia.type !== IMAGE_BACKGROUND_TYPE )\n\t\t) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only images can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst sizeValue =\n\t\t\tstyle?.background?.backgroundSize || defaultValues?.backgroundSize;\n\t\tconst positionValue = style?.background?.backgroundPosition;\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundImage: {\n\t\t\t\t\turl: media.url,\n\t\t\t\t\tid: media.id,\n\t\t\t\t\tsource: 'file',\n\t\t\t\t\ttitle: media.title || undefined,\n\t\t\t\t},\n\t\t\t\tbackgroundPosition:\n\t\t\t\t\t/*\n\t\t\t\t\t * A background image uploaded and set in the editor receives a default background position of '50% 0',\n\t\t\t\t\t * when the background image size is the equivalent of \"Tile\".\n\t\t\t\t\t * This is to increase the chance that the image's focus point is visible.\n\t\t\t\t\t * This is in-editor only to assist with the user experience.\n\t\t\t\t\t */\n\t\t\t\t\t! positionValue && ( 'auto' === sizeValue || ! sizeValue )\n\t\t\t\t\t\t? '50% 0'\n\t\t\t\t\t\t: positionValue,\n\t\t\t\tbackgroundSize: sizeValue,\n\t\t\t} )\n\t\t);\n\t\tsetIsUploading( false );\n\t};\n\n\t// Drag and drop callback, restricting image to one.\n\tconst onFilesDrop = ( filesList ) => {\n\t\tif ( filesList?.length > 1 ) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only one image can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tgetSettings().mediaUpload( {\n\t\t\tallowedTypes: [ IMAGE_BACKGROUND_TYPE ],\n\t\t\tfilesList,\n\t\t\tonFileChange( [ image ] ) {\n\t\t\t\tonSelectMedia( image );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst hasValue = hasBackgroundImageValue( style );\n\n\tconst closeAndFocus = () => {\n\t\tconst [ toggleButton ] = focus.tabbable.find(\n\t\t\treplaceContainerRef.current\n\t\t);\n\t\t// Focus the toggle button and close the dropdown menu.\n\t\t// This ensures similar behaviour as to selecting an image, where the dropdown is\n\t\t// closed and focus is redirected to the dropdown toggle button.\n\t\ttoggleButton?.focus();\n\t\ttoggleButton?.click();\n\t};\n\n\tconst onRemove = () =>\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\tbackgroundImage: 'none',\n\t\t\t} )\n\t\t);\n\tconst canRemove = ! hasValue && hasBackgroundImageValue( inheritedValue );\n\tconst imgLabel =\n\t\ttitle || getFilename( url ) || __( 'Add background image' );\n\n\treturn (\n\t\t<div\n\t\t\tref={ replaceContainerRef }\n\t\t\tclassName=\"block-editor-global-styles-background-panel__image-tools-panel-item\"\n\t\t>\n\t\t\t{ isUploading && <LoadingSpinner /> }\n\t\t\t<MediaReplaceFlow\n\t\t\t\tmediaId={ id }\n\t\t\t\tmediaURL={ url }\n\t\t\t\tallowedTypes={ [ IMAGE_BACKGROUND_TYPE ] }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\tpopoverProps={ {\n\t\t\t\t\tclassName: clsx( {\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__media-replace-popover':\n\t\t\t\t\t\t\tdisplayInPanel,\n\t\t\t\t\t} ),\n\t\t\t\t} }\n\t\t\t\tname={\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__image-preview\"\n\t\t\t\t\t\timgUrl={ url }\n\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tonError={ onUploadError }\n\t\t\t>\n\t\t\t\t{ canRemove && (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\tonRemove();\n\t\t\t\t\t\t\tonRemoveImage();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) }\n\t\t\t\t{ hasValue && (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\tonResetImage();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) }\n\t\t\t</MediaReplaceFlow>\n\t\t\t<DropZone\n\t\t\t\tonFilesDrop={ onFilesDrop }\n\t\t\t\tlabel={ __( 'Drop to upload' ) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BackgroundSizeControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tdefaultValues,\n} ) {\n\tconst sizeValue =\n\t\tstyle?.background?.backgroundSize ||\n\t\tinheritedValue?.background?.backgroundSize;\n\tconst repeatValue =\n\t\tstyle?.background?.backgroundRepeat ||\n\t\tinheritedValue?.background?.backgroundRepeat;\n\tconst imageValue =\n\t\tstyle?.background?.backgroundImage?.url ||\n\t\tinheritedValue?.background?.backgroundImage?.url;\n\tconst isUploadedImage = style?.background?.backgroundImage?.id;\n\tconst positionValue =\n\t\tstyle?.background?.backgroundPosition ||\n\t\tinheritedValue?.background?.backgroundPosition;\n\tconst attachmentValue =\n\t\tstyle?.background?.backgroundAttachment ||\n\t\tinheritedValue?.background?.backgroundAttachment;\n\n\t/*\n\t * Set default values for uploaded images.\n\t * The default values are passed by the consumer.\n\t * Block-level controls may have different defaults to root-level controls.\n\t * A falsy value is treated by default as `auto` (Tile).\n\t */\n\tlet currentValueForToggle =\n\t\t! sizeValue && isUploadedImage\n\t\t\t? defaultValues?.backgroundSize\n\t\t\t: sizeValue || 'auto';\n\t/*\n\t * The incoming value could be a value + unit, e.g. '20px'.\n\t * In this case set the value to 'tile'.\n\t */\n\tcurrentValueForToggle = ! [ 'cover', 'contain', 'auto' ].includes(\n\t\tcurrentValueForToggle\n\t)\n\t\t? 'auto'\n\t\t: currentValueForToggle;\n\t/*\n\t * If the current value is `cover` and the repeat value is `undefined`, then\n\t * the toggle should be unchecked as the default state. Otherwise, the toggle\n\t * should reflect the current repeat value.\n\t */\n\tconst repeatCheckedValue = ! (\n\t\trepeatValue === 'no-repeat' ||\n\t\t( currentValueForToggle === 'cover' && repeatValue === undefined )\n\t);\n\n\tconst updateBackgroundSize = ( next ) => {\n\t\t// When switching to 'contain' toggle the repeat off.\n\t\tlet nextRepeat = repeatValue;\n\t\tlet nextPosition = positionValue;\n\n\t\tif ( next === 'contain' ) {\n\t\t\tnextRepeat = 'no-repeat';\n\t\t\tnextPosition = undefined;\n\t\t}\n\n\t\tif ( next === 'cover' ) {\n\t\t\tnextRepeat = undefined;\n\t\t\tnextPosition = undefined;\n\t\t}\n\n\t\tif (\n\t\t\t( currentValueForToggle === 'cover' ||\n\t\t\t\tcurrentValueForToggle === 'contain' ) &&\n\t\t\tnext === 'auto'\n\t\t) {\n\t\t\tnextRepeat = undefined;\n\t\t\t/*\n\t\t\t * A background image uploaded and set in the editor (an image with a record id),\n\t\t\t * receives a default background position of '50% 0',\n\t\t\t * when the toggle switches to \"Tile\". This is to increase the chance that\n\t\t\t * the image's focus point is visible.\n\t\t\t * This is in-editor only to assist with the user experience.\n\t\t\t */\n\t\t\tif ( !! style?.background?.backgroundImage?.id ) {\n\t\t\t\tnextPosition = '50% 0';\n\t\t\t}\n\t\t}\n\n\t\t/*\n\t\t * Next will be null when the input is cleared,\n\t\t * in which case the value should be 'auto'.\n\t\t */\n\t\tif ( ! next && currentValueForToggle === 'auto' ) {\n\t\t\tnext = 'auto';\n\t\t}\n\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundPosition: nextPosition,\n\t\t\t\tbackgroundRepeat: nextRepeat,\n\t\t\t\tbackgroundSize: next,\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst updateBackgroundPosition = ( next ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundPosition' ],\n\t\t\t\tcoordsToBackgroundPosition( next )\n\t\t\t)\n\t\t);\n\t};\n\n\tconst toggleIsRepeated = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundRepeat' ],\n\t\t\t\trepeatCheckedValue === true ? 'no-repeat' : 'repeat'\n\t\t\t)\n\t\t);\n\n\tconst toggleScrollWithPage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundAttachment' ],\n\t\t\t\tattachmentValue === 'fixed' ? 'scroll' : 'fixed'\n\t\t\t)\n\t\t);\n\n\t// Set a default background position for non-site-wide, uploaded images with a size of 'contain'.\n\tconst backgroundPositionValue =\n\t\t! positionValue && isUploadedImage && 'contain' === sizeValue\n\t\t\t? defaultValues?.backgroundPosition\n\t\t\t: positionValue;\n\n\treturn (\n\t\t<VStack spacing={ 3 } className=\"single-column\">\n\t\t\t<FocalPointPicker\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Focal point' ) }\n\t\t\t\turl={ imageValue }\n\t\t\t\tvalue={ backgroundPositionToCoords( backgroundPositionValue ) }\n\t\t\t\tonChange={ updateBackgroundPosition }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Fixed background' ) }\n\t\t\t\tchecked={ attachmentValue === 'fixed' }\n\t\t\t\tonChange={ toggleScrollWithPage }\n\t\t\t/>\n\t\t\t<ToggleGroupControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\tlabel={ __( 'Size' ) }\n\t\t\t\tvalue={ currentValueForToggle }\n\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\tisBlock\n\t\t\t\thelp={ backgroundSizeHelpText(\n\t\t\t\t\tsizeValue || defaultValues?.backgroundSize\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"cover\"\n\t\t\t\t\tvalue=\"cover\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Cover',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"contain\"\n\t\t\t\t\tvalue=\"contain\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Contain',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"tile\"\n\t\t\t\t\tvalue=\"auto\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Tile',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</ToggleGroupControl>\n\t\t\t<HStack justify=\"flex-start\" spacing={ 2 } as=\"span\">\n\t\t\t\t<UnitControl\n\t\t\t\t\taria-label={ __( 'Background image width' ) }\n\t\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\t\tvalue={ sizeValue }\n\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t__unstableInputWidth=\"100px\"\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tplaceholder={ __( 'Auto' ) }\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\tcurrentValueForToggle !== 'auto' ||\n\t\t\t\t\t\tcurrentValueForToggle === undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Repeat' ) }\n\t\t\t\t\tchecked={ repeatCheckedValue }\n\t\t\t\t\tonChange={ toggleIsRepeated }\n\t\t\t\t\tdisabled={ currentValueForToggle === 'cover' }\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nfunction BackgroundToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n\theaderLabel,\n} ) {\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<VStack\n\t\t\tas={ ToolsPanel }\n\t\t\tspacing={ 2 }\n\t\t\tlabel={ headerLabel }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t{ children }\n\t\t</VStack>\n\t);\n}\n\nexport default function BackgroundPanel( {\n\tas: Wrapper = BackgroundToolsPanel,\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tpanelId,\n\tdefaultControls = DEFAULT_CONTROLS,\n\tdefaultValues = {},\n\theaderLabel = __( 'Background image' ),\n} ) {\n\t/*\n\t * Resolve any inherited \"ref\" pointers.\n\t * Should the block editor need resolved, inherited values\n\t * across all controls, this could be abstracted into a hook,\n\t * e.g., useResolveGlobalStyle\n\t */\n\tconst { globalStyles, _links } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst _settings = getSettings();\n\t\treturn {\n\t\t\tglobalStyles: _settings[ globalStylesDataKey ],\n\t\t\t_links: _settings[ globalStylesLinksDataKey ],\n\t\t};\n\t}, [] );\n\tconst resolvedInheritedValue = useMemo( () => {\n\t\tconst resolvedValues = {\n\t\t\tbackground: {},\n\t\t};\n\n\t\tif ( ! inheritedValue?.background ) {\n\t\t\treturn inheritedValue;\n\t\t}\n\n\t\tObject.entries( inheritedValue?.background ).forEach(\n\t\t\t( [ key, backgroundValue ] ) => {\n\t\t\t\tresolvedValues.background[ key ] = getResolvedValue(\n\t\t\t\t\tbackgroundValue,\n\t\t\t\t\t{\n\t\t\t\t\t\tstyles: globalStyles,\n\t\t\t\t\t\t_links,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\t\treturn resolvedValues;\n\t}, [ globalStyles, _links, inheritedValue ] );\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tbackground: {},\n\t\t};\n\t}, [] );\n\n\tconst resetBackground = () =>\n\t\tonChange( setImmutably( value, [ 'background' ], {} ) );\n\n\tconst { title, url } = value?.background?.backgroundImage || {\n\t\t...resolvedInheritedValue?.background?.backgroundImage,\n\t};\n\tconst hasImageValue =\n\t\thasBackgroundImageValue( value ) ||\n\t\thasBackgroundImageValue( resolvedInheritedValue );\n\n\tconst imageValue =\n\t\tvalue?.background?.backgroundImage ||\n\t\tinheritedValue?.background?.backgroundImage;\n\n\tconst shouldShowBackgroundImageControls =\n\t\thasImageValue &&\n\t\t'none' !== imageValue &&\n\t\t( settings?.background?.backgroundSize ||\n\t\t\tsettings?.background?.backgroundPosition ||\n\t\t\tsettings?.background?.backgroundRepeat );\n\n\tconst [ isDropDownOpen, setIsDropDownOpen ] = useState( false );\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t\theaderLabel={ headerLabel }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'block-editor-global-styles-background-panel__inspector-media-replace-container',\n\t\t\t\t\t{\n\t\t\t\t\t\t'is-open': isDropDownOpen,\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => !! value?.background }\n\t\t\t\t\tlabel={ __( 'Image' ) }\n\t\t\t\t\tonDeselect={ resetBackground }\n\t\t\t\t\tisShownByDefault={ defaultControls.backgroundImage }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t{ shouldShowBackgroundImageControls ? (\n\t\t\t\t\t\t<BackgroundControlsPanel\n\t\t\t\t\t\t\tlabel={ title }\n\t\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\tonToggle={ setIsDropDownOpen }\n\t\t\t\t\t\t\thasImageValue={ hasImageValue }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<VStack spacing={ 3 } className=\"single-column\">\n\t\t\t\t\t\t\t\t<BackgroundImageControls\n\t\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t\t\t\tdisplayInPanel\n\t\t\t\t\t\t\t\t\tonResetImage={ () => {\n\t\t\t\t\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tonRemoveImage={ () =>\n\t\t\t\t\t\t\t\t\t\tsetIsDropDownOpen( false )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<BackgroundSizeControls\n\t\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t</BackgroundControlsPanel>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<BackgroundImageControls\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\tonResetImage={ () => {\n\t\t\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonRemoveImage={ () => setIsDropDownOpen( false ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanelItem>\n\t\t\t</div>\n\t\t</Wrapper>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -190,7 +190,9 @@ function getGlobalStylesChanges(next, previous, options = {}) {
|
|
|
190
190
|
return acc;
|
|
191
191
|
}, {})).map(([key, changeValues]) => {
|
|
192
192
|
const changeValuesLength = changeValues.length;
|
|
193
|
-
const joinedChangesValue = changeValues.join(
|
|
193
|
+
const joinedChangesValue = changeValues.join( /* translators: Used between list items, there is a space after the comma. */
|
|
194
|
+
(0, _i18n.__)(', ') // eslint-disable-line @wordpress/i18n-no-flanking-whitespace
|
|
195
|
+
);
|
|
194
196
|
switch (key) {
|
|
195
197
|
case 'blocks':
|
|
196
198
|
{
|