@wordpress/block-editor 12.22.0 → 12.23.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 +4 -0
- package/build/components/block-list/block.js +11 -3
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-mover/button.js +4 -1
- package/build/components/block-mover/button.js.map +1 -1
- package/build/components/block-mover/index.js +5 -1
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-patterns-list/index.js +4 -1
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +7 -3
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-switcher/index.js +4 -3
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-toolbar/index.js +5 -4
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-toolbar/shuffle.js +18 -9
- package/build/components/block-toolbar/shuffle.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +48 -8
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/index.js +14 -2
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/global-styles/advanced-panel.js +9 -2
- package/build/components/global-styles/advanced-panel.js.map +1 -1
- package/build/components/global-styles/background-panel.js +444 -0
- package/build/components/global-styles/background-panel.js.map +1 -0
- package/build/components/global-styles/color-panel.js +2 -1
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/get-global-styles-changes.js +3 -0
- package/build/components/global-styles/get-global-styles-changes.js.map +1 -1
- package/build/components/global-styles/hooks.js +1 -1
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/index.js +13 -0
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +15 -14
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +2 -1
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/iframe/index.js +9 -4
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +5 -0
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
- package/build/components/inserter/library.js +2 -0
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/menu.js +8 -2
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/search-items.js +36 -15
- package/build/components/inserter/search-items.js.map +1 -1
- package/build/components/keyboard-shortcuts/index.js +11 -0
- package/build/components/keyboard-shortcuts/index.js.map +1 -1
- package/build/components/list-view/block-select-button.js +16 -0
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +1 -1
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/index.js +17 -2
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-list-view-collapse-items.js +47 -0
- package/build/components/list-view/use-list-view-collapse-items.js.map +1 -0
- package/build/components/rich-text/index.js +14 -11
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +17 -11
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/native/get-format-colors.native.js +1 -1
- package/build/components/rich-text/native/get-format-colors.native.js.map +1 -1
- package/build/components/rich-text/native/index.native.js +2 -2
- package/build/components/rich-text/native/index.native.js.map +1 -1
- package/build/components/rich-text/with-deprecations.js +0 -3
- package/build/components/rich-text/with-deprecations.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +50 -36
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/use-block-display-information/index.js +4 -6
- package/build/components/use-block-display-information/index.js.map +1 -1
- package/build/hooks/anchor.js +2 -2
- package/build/hooks/anchor.js.map +1 -1
- package/build/hooks/background.js +70 -424
- package/build/hooks/background.js.map +1 -1
- package/build/hooks/index.js +7 -0
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/use-zoom-out.js +47 -0
- package/build/hooks/use-zoom-out.js.map +1 -0
- package/build/index.js +7 -0
- package/build/index.js.map +1 -1
- package/build/private-apis.js +6 -1
- package/build/private-apis.js.map +1 -1
- package/build/private-apis.native.js +3 -1
- package/build/private-apis.native.js.map +1 -1
- package/build/store/private-actions.js +13 -0
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-keys.js +2 -1
- package/build/store/private-keys.js.map +1 -1
- package/build/store/private-selectors.js +24 -3
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +22 -0
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +34 -32
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils.js +7 -1
- package/build/store/utils.js.map +1 -1
- package/build/utils/transform-styles/index.js +2 -1
- package/build/utils/transform-styles/index.js.map +1 -1
- package/build-module/components/block-list/block.js +11 -3
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-mover/button.js +4 -1
- package/build-module/components/block-mover/button.js.map +1 -1
- package/build-module/components/block-mover/index.js +5 -1
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +4 -1
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +7 -3
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-switcher/index.js +4 -3
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +5 -4
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-toolbar/shuffle.js +18 -9
- package/build-module/components/block-toolbar/shuffle.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +50 -10
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/index.js +14 -2
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/global-styles/advanced-panel.js +9 -2
- package/build-module/components/global-styles/advanced-panel.js.map +1 -1
- package/build-module/components/global-styles/background-panel.js +430 -0
- package/build-module/components/global-styles/background-panel.js.map +1 -0
- package/build-module/components/global-styles/color-panel.js +2 -1
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/get-global-styles-changes.js +3 -0
- package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +1 -1
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/index.js +1 -0
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +16 -15
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +1 -0
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/iframe/index.js +9 -4
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +5 -0
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
- package/build-module/components/inserter/library.js +2 -0
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/menu.js +8 -2
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/search-items.js +33 -15
- package/build-module/components/inserter/search-items.js.map +1 -1
- package/build-module/components/keyboard-shortcuts/index.js +11 -0
- package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +16 -0
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +1 -1
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/index.js +17 -2
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-list-view-collapse-items.js +40 -0
- package/build-module/components/list-view/use-list-view-collapse-items.js.map +1 -0
- package/build-module/components/rich-text/index.js +15 -12
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +16 -11
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/native/get-format-colors.native.js +1 -1
- package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -1
- package/build-module/components/rich-text/native/index.native.js +2 -2
- package/build-module/components/rich-text/native/index.native.js.map +1 -1
- package/build-module/components/rich-text/with-deprecations.js +0 -3
- package/build-module/components/rich-text/with-deprecations.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +50 -36
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/use-block-display-information/index.js +5 -7
- package/build-module/components/use-block-display-information/index.js.map +1 -1
- package/build-module/hooks/anchor.js +2 -2
- package/build-module/hooks/anchor.js.map +1 -1
- package/build-module/hooks/background.js +67 -419
- package/build-module/hooks/background.js.map +1 -1
- package/build-module/hooks/index.js +1 -0
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/use-zoom-out.js +41 -0
- package/build-module/hooks/use-zoom-out.js.map +1 -0
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/private-apis.js +7 -2
- package/build-module/private-apis.js.map +1 -1
- package/build-module/private-apis.native.js +3 -1
- package/build-module/private-apis.native.js.map +1 -1
- package/build-module/store/private-actions.js +12 -0
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-keys.js +1 -0
- package/build-module/store/private-keys.js.map +1 -1
- package/build-module/store/private-selectors.js +22 -4
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +21 -0
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +35 -33
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils.js +6 -1
- package/build-module/store/utils.js.map +1 -1
- package/build-module/utils/transform-styles/index.js +2 -1
- package/build-module/utils/transform-styles/index.js.map +1 -1
- package/build-style/content-rtl.css +4 -1
- package/build-style/content.css +4 -1
- package/build-style/style-rtl.css +84 -79
- package/build-style/style.css +84 -79
- package/package.json +31 -31
- package/src/components/block-list/block.js +19 -3
- package/src/components/block-mover/button.js +4 -1
- package/src/components/block-mover/index.js +8 -1
- package/src/components/block-patterns-list/index.js +22 -17
- package/src/components/block-preview/style.scss +28 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +8 -2
- package/src/components/block-switcher/index.js +5 -3
- package/src/components/block-switcher/style.scss +1 -1
- package/src/components/block-toolbar/index.js +22 -19
- package/src/components/block-toolbar/shuffle.js +19 -13
- package/src/components/block-toolbar/style.scss +1 -1
- package/src/components/block-tools/block-selection-button.js +66 -9
- package/src/components/block-tools/index.js +18 -1
- package/src/components/button-block-appender/content.scss +5 -1
- package/src/components/default-block-appender/content.scss +2 -2
- package/src/components/global-styles/advanced-panel.js +8 -2
- package/src/components/global-styles/background-panel.js +591 -0
- package/src/components/global-styles/color-panel.js +2 -1
- package/src/components/global-styles/get-global-styles-changes.js +3 -0
- package/src/components/global-styles/hooks.js +1 -0
- package/src/components/global-styles/index.js +4 -0
- package/src/components/global-styles/style.scss +78 -1
- package/src/{hooks/test/background.js → components/global-styles/test/background-panel.js} +36 -1
- package/src/components/global-styles/test/get-global-styles-changes.js +22 -3
- package/src/components/global-styles/test/use-global-styles-output.js +9 -9
- package/src/components/global-styles/use-global-styles-output.js +27 -16
- package/src/components/global-styles/utils.js +1 -0
- package/src/components/iframe/index.js +19 -9
- package/src/components/inserter/block-patterns-tab/index.js +1 -0
- package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +5 -0
- package/src/components/inserter/library.js +4 -0
- package/src/components/inserter/menu.js +8 -1
- package/src/components/inserter/search-items.js +37 -15
- package/src/components/inserter/style.scss +6 -12
- package/src/components/keyboard-shortcuts/index.js +11 -0
- package/src/components/list-view/block-select-button.js +13 -1
- package/src/components/list-view/block.js +1 -1
- package/src/components/list-view/index.js +18 -1
- package/src/components/list-view/style.scss +4 -4
- package/src/components/list-view/use-list-view-collapse-items.js +33 -0
- package/src/components/rich-text/index.js +30 -13
- package/src/components/rich-text/index.native.js +14 -11
- package/src/components/rich-text/native/get-format-colors.native.js +1 -1
- package/src/components/rich-text/native/index.native.js +2 -2
- package/src/components/rich-text/with-deprecations.js +0 -3
- package/src/components/url-popover/image-url-input-ui.js +68 -51
- package/src/components/use-block-display-information/index.js +8 -10
- package/src/hooks/anchor.js +11 -9
- package/src/hooks/background.js +77 -538
- package/src/hooks/index.js +1 -0
- package/src/hooks/use-zoom-out.js +36 -0
- package/src/index.js +1 -0
- package/src/private-apis.js +13 -1
- package/src/private-apis.native.js +2 -0
- package/src/store/private-actions.js +12 -0
- package/src/store/private-keys.js +1 -0
- package/src/store/private-selectors.js +54 -27
- package/src/store/reducer.js +22 -0
- package/src/store/selectors.js +195 -180
- package/src/store/test/private-actions.js +10 -0
- package/src/store/test/private-selectors.js +13 -0
- package/src/store/test/reducer.js +26 -0
- package/src/store/test/selectors.js +90 -199
- package/src/store/utils.js +13 -0
- package/src/style.scss +0 -2
- package/src/utils/transform-styles/index.js +2 -1
- package/src/hooks/anchor.scss +0 -4
- package/src/hooks/background.scss +0 -75
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.coordsToBackgroundPosition = exports.backgroundPositionToCoords = void 0;
|
|
8
|
+
exports.default = BackgroundPanel;
|
|
9
|
+
exports.hasBackgroundImageValue = hasBackgroundImageValue;
|
|
10
|
+
exports.hasBackgroundSizeValue = hasBackgroundSizeValue;
|
|
11
|
+
exports.useHasBackgroundPanel = useHasBackgroundPanel;
|
|
12
|
+
var _react = require("react");
|
|
13
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
14
|
+
var _components = require("@wordpress/components");
|
|
15
|
+
var _i18n = require("@wordpress/i18n");
|
|
16
|
+
var _notices = require("@wordpress/notices");
|
|
17
|
+
var _url = require("@wordpress/url");
|
|
18
|
+
var _element = require("@wordpress/element");
|
|
19
|
+
var _data = require("@wordpress/data");
|
|
20
|
+
var _dom = require("@wordpress/dom");
|
|
21
|
+
var _blob = require("@wordpress/blob");
|
|
22
|
+
var _utils = require("./utils");
|
|
23
|
+
var _object = require("../../utils/object");
|
|
24
|
+
var _mediaReplaceFlow = _interopRequireDefault(require("../media-replace-flow"));
|
|
25
|
+
var _store = require("../../store");
|
|
26
|
+
/**
|
|
27
|
+
* External dependencies
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* WordPress dependencies
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Internal dependencies
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
const IMAGE_BACKGROUND_TYPE = 'image';
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Checks site settings to see if the background panel may be used.
|
|
42
|
+
* `settings.background.backgroundSize` exists also,
|
|
43
|
+
* but can only be used if settings?.background?.backgroundImage is `true`.
|
|
44
|
+
*
|
|
45
|
+
* @param {Object} settings Site settings
|
|
46
|
+
* @return {boolean} Whether site settings has activated background panel.
|
|
47
|
+
*/
|
|
48
|
+
function useHasBackgroundPanel(settings) {
|
|
49
|
+
return _element.Platform.OS === 'web' && settings?.background?.backgroundImage;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Checks if there is a current value in the background size block support
|
|
54
|
+
* attributes. Background size values include background size as well
|
|
55
|
+
* as background position.
|
|
56
|
+
*
|
|
57
|
+
* @param {Object} style Style attribute.
|
|
58
|
+
* @return {boolean} Whether the block has a background size value set.
|
|
59
|
+
*/
|
|
60
|
+
function hasBackgroundSizeValue(style) {
|
|
61
|
+
return style?.background?.backgroundPosition !== undefined || style?.background?.backgroundSize !== undefined;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Checks if there is a current value in the background image block support
|
|
66
|
+
* attributes.
|
|
67
|
+
*
|
|
68
|
+
* @param {Object} style Style attribute.
|
|
69
|
+
* @return {boolean} Whether the block has a background image value set.
|
|
70
|
+
*/
|
|
71
|
+
function hasBackgroundImageValue(style) {
|
|
72
|
+
return !!style?.background?.backgroundImage?.id || !!style?.background?.backgroundImage?.url;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Get the help text for the background size control.
|
|
77
|
+
*
|
|
78
|
+
* @param {string} value backgroundSize value.
|
|
79
|
+
* @return {string} Translated help text.
|
|
80
|
+
*/
|
|
81
|
+
function backgroundSizeHelpText(value) {
|
|
82
|
+
if (value === 'cover' || value === undefined) {
|
|
83
|
+
return (0, _i18n.__)('Image covers the space evenly.');
|
|
84
|
+
}
|
|
85
|
+
if (value === 'contain') {
|
|
86
|
+
return (0, _i18n.__)('Image is contained without distortion.');
|
|
87
|
+
}
|
|
88
|
+
return (0, _i18n.__)('Specify a fixed width.');
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Converts decimal x and y coords from FocalPointPicker to percentage-based values
|
|
93
|
+
* to use as backgroundPosition value.
|
|
94
|
+
*
|
|
95
|
+
* @param {{x?:number, y?:number}} value FocalPointPicker coords.
|
|
96
|
+
* @return {string} backgroundPosition value.
|
|
97
|
+
*/
|
|
98
|
+
const coordsToBackgroundPosition = value => {
|
|
99
|
+
if (!value || isNaN(value.x) && isNaN(value.y)) {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
const x = isNaN(value.x) ? 0.5 : value.x;
|
|
103
|
+
const y = isNaN(value.y) ? 0.5 : value.y;
|
|
104
|
+
return `${x * 100}% ${y * 100}%`;
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Converts backgroundPosition value to x and y coords for FocalPointPicker.
|
|
109
|
+
*
|
|
110
|
+
* @param {string} value backgroundPosition value.
|
|
111
|
+
* @return {{x?:number, y?:number}} FocalPointPicker coords.
|
|
112
|
+
*/
|
|
113
|
+
exports.coordsToBackgroundPosition = coordsToBackgroundPosition;
|
|
114
|
+
const backgroundPositionToCoords = value => {
|
|
115
|
+
if (!value) {
|
|
116
|
+
return {
|
|
117
|
+
x: undefined,
|
|
118
|
+
y: undefined
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
let [x, y] = value.split(' ').map(v => parseFloat(v) / 100);
|
|
122
|
+
x = isNaN(x) ? undefined : x;
|
|
123
|
+
y = isNaN(y) ? x : y;
|
|
124
|
+
return {
|
|
125
|
+
x,
|
|
126
|
+
y
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
exports.backgroundPositionToCoords = backgroundPositionToCoords;
|
|
130
|
+
function InspectorImagePreview({
|
|
131
|
+
label,
|
|
132
|
+
filename,
|
|
133
|
+
url: imgUrl
|
|
134
|
+
}) {
|
|
135
|
+
const imgLabel = label || (0, _url.getFilename)(imgUrl);
|
|
136
|
+
return (0, _react.createElement)(_components.__experimentalItemGroup, {
|
|
137
|
+
as: "span"
|
|
138
|
+
}, (0, _react.createElement)(_components.__experimentalHStack, {
|
|
139
|
+
justify: "flex-start",
|
|
140
|
+
as: "span"
|
|
141
|
+
}, (0, _react.createElement)("span", {
|
|
142
|
+
className: (0, _classnames.default)('block-editor-global-styles-background-panel__inspector-image-indicator-wrapper', {
|
|
143
|
+
'has-image': imgUrl
|
|
144
|
+
}),
|
|
145
|
+
"aria-hidden": true
|
|
146
|
+
}, imgUrl && (0, _react.createElement)("span", {
|
|
147
|
+
className: "block-editor-global-styles-background-panel__inspector-image-indicator",
|
|
148
|
+
style: {
|
|
149
|
+
backgroundImage: `url(${imgUrl})`
|
|
150
|
+
}
|
|
151
|
+
})), (0, _react.createElement)(_components.FlexItem, {
|
|
152
|
+
as: "span"
|
|
153
|
+
}, (0, _react.createElement)(_components.__experimentalTruncate, {
|
|
154
|
+
numberOfLines: 1,
|
|
155
|
+
className: "block-editor-global-styles-background-panel__inspector-media-replace-title"
|
|
156
|
+
}, imgLabel), (0, _react.createElement)(_components.VisuallyHidden, {
|
|
157
|
+
as: "span"
|
|
158
|
+
}, filename ? (0, _i18n.sprintf)( /* translators: %s: file name */
|
|
159
|
+
(0, _i18n.__)('Selected image: %s'), filename) : (0, _i18n.__)('No image selected')))));
|
|
160
|
+
}
|
|
161
|
+
function BackgroundImageToolsPanelItem({
|
|
162
|
+
panelId,
|
|
163
|
+
isShownByDefault,
|
|
164
|
+
onChange,
|
|
165
|
+
style,
|
|
166
|
+
inheritedValue
|
|
167
|
+
}) {
|
|
168
|
+
const mediaUpload = (0, _data.useSelect)(select => select(_store.store).getSettings().mediaUpload, []);
|
|
169
|
+
const {
|
|
170
|
+
id,
|
|
171
|
+
title,
|
|
172
|
+
url
|
|
173
|
+
} = style?.background?.backgroundImage || {
|
|
174
|
+
...inheritedValue?.background?.backgroundImage
|
|
175
|
+
};
|
|
176
|
+
const replaceContainerRef = (0, _element.useRef)();
|
|
177
|
+
const {
|
|
178
|
+
createErrorNotice
|
|
179
|
+
} = (0, _data.useDispatch)(_notices.store);
|
|
180
|
+
const onUploadError = message => {
|
|
181
|
+
createErrorNotice(message, {
|
|
182
|
+
type: 'snackbar'
|
|
183
|
+
});
|
|
184
|
+
};
|
|
185
|
+
const resetBackgroundImage = () => onChange((0, _object.setImmutably)(style, ['background', 'backgroundImage'], undefined));
|
|
186
|
+
const onSelectMedia = media => {
|
|
187
|
+
if (!media || !media.url) {
|
|
188
|
+
resetBackgroundImage();
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
if ((0, _blob.isBlobURL)(media.url)) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// For media selections originated from a file upload.
|
|
196
|
+
if (media.media_type && media.media_type !== IMAGE_BACKGROUND_TYPE || !media.media_type && media.type && media.type !== IMAGE_BACKGROUND_TYPE) {
|
|
197
|
+
onUploadError((0, _i18n.__)('Only images can be used as a background image.'));
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
onChange((0, _object.setImmutably)(style, ['background', 'backgroundImage'], {
|
|
201
|
+
url: media.url,
|
|
202
|
+
id: media.id,
|
|
203
|
+
source: 'file',
|
|
204
|
+
title: media.title || undefined
|
|
205
|
+
}));
|
|
206
|
+
};
|
|
207
|
+
const onFilesDrop = filesList => {
|
|
208
|
+
mediaUpload({
|
|
209
|
+
allowedTypes: ['image'],
|
|
210
|
+
filesList,
|
|
211
|
+
onFileChange([image]) {
|
|
212
|
+
if ((0, _blob.isBlobURL)(image?.url)) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
onSelectMedia(image);
|
|
216
|
+
},
|
|
217
|
+
onError: onUploadError
|
|
218
|
+
});
|
|
219
|
+
};
|
|
220
|
+
const resetAllFilter = (0, _element.useCallback)(previousValue => {
|
|
221
|
+
return {
|
|
222
|
+
...previousValue,
|
|
223
|
+
style: {
|
|
224
|
+
...previousValue.style,
|
|
225
|
+
background: undefined
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
}, []);
|
|
229
|
+
const hasValue = hasBackgroundImageValue(style) || hasBackgroundImageValue(inheritedValue);
|
|
230
|
+
return (0, _react.createElement)(_components.__experimentalToolsPanelItem, {
|
|
231
|
+
className: "single-column",
|
|
232
|
+
hasValue: () => hasValue,
|
|
233
|
+
label: (0, _i18n.__)('Background image'),
|
|
234
|
+
onDeselect: resetBackgroundImage,
|
|
235
|
+
isShownByDefault: isShownByDefault,
|
|
236
|
+
resetAllFilter: resetAllFilter,
|
|
237
|
+
panelId: panelId
|
|
238
|
+
}, (0, _react.createElement)("div", {
|
|
239
|
+
className: "block-editor-global-styles-background-panel__inspector-media-replace-container",
|
|
240
|
+
ref: replaceContainerRef
|
|
241
|
+
}, (0, _react.createElement)(_mediaReplaceFlow.default, {
|
|
242
|
+
mediaId: id,
|
|
243
|
+
mediaURL: url,
|
|
244
|
+
allowedTypes: [IMAGE_BACKGROUND_TYPE],
|
|
245
|
+
accept: "image/*",
|
|
246
|
+
onSelect: onSelectMedia,
|
|
247
|
+
name: (0, _react.createElement)(InspectorImagePreview, {
|
|
248
|
+
label: (0, _i18n.__)('Background image'),
|
|
249
|
+
filename: title || (0, _i18n.__)('Untitled'),
|
|
250
|
+
url: url
|
|
251
|
+
}),
|
|
252
|
+
variant: "secondary"
|
|
253
|
+
}, hasValue && (0, _react.createElement)(_components.MenuItem, {
|
|
254
|
+
onClick: () => {
|
|
255
|
+
const [toggleButton] = _dom.focus.tabbable.find(replaceContainerRef.current);
|
|
256
|
+
// Focus the toggle button and close the dropdown menu.
|
|
257
|
+
// This ensures similar behaviour as to selecting an image, where the dropdown is
|
|
258
|
+
// closed and focus is redirected to the dropdown toggle button.
|
|
259
|
+
toggleButton?.focus();
|
|
260
|
+
toggleButton?.click();
|
|
261
|
+
resetBackgroundImage();
|
|
262
|
+
}
|
|
263
|
+
}, (0, _i18n.__)('Reset '))), (0, _react.createElement)(_components.DropZone, {
|
|
264
|
+
onFilesDrop: onFilesDrop,
|
|
265
|
+
label: (0, _i18n.__)('Drop to upload')
|
|
266
|
+
})));
|
|
267
|
+
}
|
|
268
|
+
function BackgroundSizeToolsPanelItem({
|
|
269
|
+
panelId,
|
|
270
|
+
isShownByDefault,
|
|
271
|
+
onChange,
|
|
272
|
+
style,
|
|
273
|
+
inheritedValue,
|
|
274
|
+
defaultValues
|
|
275
|
+
}) {
|
|
276
|
+
const sizeValue = style?.background?.backgroundSize || inheritedValue?.background?.backgroundSize;
|
|
277
|
+
const repeatValue = style?.background?.backgroundRepeat || inheritedValue?.background?.backgroundRepeat;
|
|
278
|
+
const imageValue = style?.background?.backgroundImage?.url || inheritedValue?.background?.backgroundImage?.url;
|
|
279
|
+
const positionValue = style?.background?.backgroundPosition || inheritedValue?.background?.backgroundPosition;
|
|
280
|
+
|
|
281
|
+
/*
|
|
282
|
+
* An `undefined` value is replaced with any supplied
|
|
283
|
+
* default control value for the toggle group control.
|
|
284
|
+
* An empty string is treated as `auto` - this allows a user
|
|
285
|
+
* to select "Size" and then enter a custom value, with an
|
|
286
|
+
* empty value being treated as `auto`.
|
|
287
|
+
*/
|
|
288
|
+
const currentValueForToggle = sizeValue !== undefined && sizeValue !== 'cover' && sizeValue !== 'contain' || sizeValue === '' ? 'auto' : sizeValue || defaultValues?.backgroundSize;
|
|
289
|
+
|
|
290
|
+
/*
|
|
291
|
+
* If the current value is `cover` and the repeat value is `undefined`, then
|
|
292
|
+
* the toggle should be unchecked as the default state. Otherwise, the toggle
|
|
293
|
+
* should reflect the current repeat value.
|
|
294
|
+
*/
|
|
295
|
+
const repeatCheckedValue = !(repeatValue === 'no-repeat' || currentValueForToggle === 'cover' && repeatValue === undefined);
|
|
296
|
+
const hasValue = hasBackgroundSizeValue(style);
|
|
297
|
+
const resetAllFilter = (0, _element.useCallback)(previousValue => {
|
|
298
|
+
return {
|
|
299
|
+
...previousValue,
|
|
300
|
+
style: {
|
|
301
|
+
...previousValue.style,
|
|
302
|
+
background: {
|
|
303
|
+
...previousValue.style?.background,
|
|
304
|
+
backgroundRepeat: undefined,
|
|
305
|
+
backgroundSize: undefined
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
};
|
|
309
|
+
}, []);
|
|
310
|
+
const updateBackgroundSize = next => {
|
|
311
|
+
// When switching to 'contain' toggle the repeat off.
|
|
312
|
+
let nextRepeat = repeatValue;
|
|
313
|
+
if (next === 'contain') {
|
|
314
|
+
nextRepeat = 'no-repeat';
|
|
315
|
+
}
|
|
316
|
+
if (next === 'cover') {
|
|
317
|
+
nextRepeat = undefined;
|
|
318
|
+
}
|
|
319
|
+
if ((currentValueForToggle === 'cover' || currentValueForToggle === 'contain') && next === 'auto') {
|
|
320
|
+
nextRepeat = undefined;
|
|
321
|
+
}
|
|
322
|
+
onChange((0, _object.setImmutably)(style, ['background'], {
|
|
323
|
+
...style?.background,
|
|
324
|
+
backgroundRepeat: nextRepeat,
|
|
325
|
+
backgroundSize: next
|
|
326
|
+
}));
|
|
327
|
+
};
|
|
328
|
+
const updateBackgroundPosition = next => {
|
|
329
|
+
onChange((0, _object.setImmutably)(style, ['background', 'backgroundPosition'], coordsToBackgroundPosition(next)));
|
|
330
|
+
};
|
|
331
|
+
const toggleIsRepeated = () => onChange((0, _object.setImmutably)(style, ['background', 'backgroundRepeat'], repeatCheckedValue === true ? 'no-repeat' : undefined));
|
|
332
|
+
const resetBackgroundSize = () => onChange((0, _object.setImmutably)(style, ['background'], {
|
|
333
|
+
...style?.background,
|
|
334
|
+
backgroundPosition: undefined,
|
|
335
|
+
backgroundRepeat: undefined,
|
|
336
|
+
backgroundSize: undefined
|
|
337
|
+
}));
|
|
338
|
+
return (0, _react.createElement)(_components.__experimentalVStack, {
|
|
339
|
+
as: _components.__experimentalToolsPanelItem,
|
|
340
|
+
spacing: 2,
|
|
341
|
+
className: "single-column",
|
|
342
|
+
hasValue: () => hasValue,
|
|
343
|
+
label: (0, _i18n.__)('Size'),
|
|
344
|
+
onDeselect: resetBackgroundSize,
|
|
345
|
+
isShownByDefault: isShownByDefault,
|
|
346
|
+
resetAllFilter: resetAllFilter,
|
|
347
|
+
panelId: panelId
|
|
348
|
+
}, (0, _react.createElement)(_components.FocalPointPicker, {
|
|
349
|
+
__next40pxDefaultSize: true,
|
|
350
|
+
label: (0, _i18n.__)('Position'),
|
|
351
|
+
url: imageValue,
|
|
352
|
+
value: backgroundPositionToCoords(positionValue),
|
|
353
|
+
onChange: updateBackgroundPosition
|
|
354
|
+
}), (0, _react.createElement)(_components.__experimentalToggleGroupControl, {
|
|
355
|
+
size: '__unstable-large',
|
|
356
|
+
label: (0, _i18n.__)('Size'),
|
|
357
|
+
value: currentValueForToggle,
|
|
358
|
+
onChange: updateBackgroundSize,
|
|
359
|
+
isBlock: true,
|
|
360
|
+
help: backgroundSizeHelpText(sizeValue)
|
|
361
|
+
}, (0, _react.createElement)(_components.__experimentalToggleGroupControlOption, {
|
|
362
|
+
key: 'cover',
|
|
363
|
+
value: 'cover',
|
|
364
|
+
label: (0, _i18n.__)('Cover')
|
|
365
|
+
}), (0, _react.createElement)(_components.__experimentalToggleGroupControlOption, {
|
|
366
|
+
key: 'contain',
|
|
367
|
+
value: 'contain',
|
|
368
|
+
label: (0, _i18n.__)('Contain')
|
|
369
|
+
}), (0, _react.createElement)(_components.__experimentalToggleGroupControlOption, {
|
|
370
|
+
key: 'fixed',
|
|
371
|
+
value: 'auto',
|
|
372
|
+
label: (0, _i18n.__)('Fixed')
|
|
373
|
+
})), sizeValue !== undefined && sizeValue !== 'cover' && sizeValue !== 'contain' ? (0, _react.createElement)(_components.__experimentalUnitControl, {
|
|
374
|
+
size: '__unstable-large',
|
|
375
|
+
onChange: updateBackgroundSize,
|
|
376
|
+
value: sizeValue
|
|
377
|
+
}) : null, currentValueForToggle !== 'cover' && (0, _react.createElement)(_components.ToggleControl, {
|
|
378
|
+
label: (0, _i18n.__)('Repeat'),
|
|
379
|
+
checked: repeatCheckedValue,
|
|
380
|
+
onChange: toggleIsRepeated
|
|
381
|
+
}));
|
|
382
|
+
}
|
|
383
|
+
function BackgroundToolsPanel({
|
|
384
|
+
resetAllFilter,
|
|
385
|
+
onChange,
|
|
386
|
+
value,
|
|
387
|
+
panelId,
|
|
388
|
+
children
|
|
389
|
+
}) {
|
|
390
|
+
const resetAll = () => {
|
|
391
|
+
const updatedValue = resetAllFilter(value);
|
|
392
|
+
onChange(updatedValue);
|
|
393
|
+
};
|
|
394
|
+
return (0, _react.createElement)(_components.__experimentalVStack, {
|
|
395
|
+
as: _components.__experimentalToolsPanel,
|
|
396
|
+
spacing: 6,
|
|
397
|
+
label: (0, _i18n.__)('Background'),
|
|
398
|
+
resetAll: resetAll,
|
|
399
|
+
panelId: panelId,
|
|
400
|
+
dropdownMenuProps: _utils.TOOLSPANEL_DROPDOWNMENU_PROPS
|
|
401
|
+
}, children);
|
|
402
|
+
}
|
|
403
|
+
const DEFAULT_CONTROLS = {
|
|
404
|
+
backgroundImage: true,
|
|
405
|
+
backgroundSize: true
|
|
406
|
+
};
|
|
407
|
+
function BackgroundPanel({
|
|
408
|
+
as: Wrapper = BackgroundToolsPanel,
|
|
409
|
+
value,
|
|
410
|
+
onChange,
|
|
411
|
+
inheritedValue = value,
|
|
412
|
+
settings,
|
|
413
|
+
panelId,
|
|
414
|
+
defaultControls = DEFAULT_CONTROLS,
|
|
415
|
+
defaultValues = {}
|
|
416
|
+
}) {
|
|
417
|
+
const resetAllFilter = (0, _element.useCallback)(previousValue => {
|
|
418
|
+
return {
|
|
419
|
+
...previousValue,
|
|
420
|
+
background: {}
|
|
421
|
+
};
|
|
422
|
+
}, []);
|
|
423
|
+
const shouldShowBackgroundSizeControls = settings?.background?.backgroundSize;
|
|
424
|
+
return (0, _react.createElement)(Wrapper, {
|
|
425
|
+
resetAllFilter: resetAllFilter,
|
|
426
|
+
value: value,
|
|
427
|
+
onChange: onChange,
|
|
428
|
+
panelId: panelId
|
|
429
|
+
}, (0, _react.createElement)(BackgroundImageToolsPanelItem, {
|
|
430
|
+
onChange: onChange,
|
|
431
|
+
panelId: panelId,
|
|
432
|
+
isShownByDefault: defaultControls.backgroundImage,
|
|
433
|
+
style: value,
|
|
434
|
+
inheritedValue: inheritedValue
|
|
435
|
+
}), shouldShowBackgroundSizeControls && (0, _react.createElement)(BackgroundSizeToolsPanelItem, {
|
|
436
|
+
onChange: onChange,
|
|
437
|
+
panelId: panelId,
|
|
438
|
+
isShownByDefault: defaultControls.backgroundSize,
|
|
439
|
+
style: value,
|
|
440
|
+
inheritedValue: inheritedValue,
|
|
441
|
+
defaultValues: defaultValues
|
|
442
|
+
}));
|
|
443
|
+
}
|
|
444
|
+
//# sourceMappingURL=background-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_classnames","_interopRequireDefault","require","_components","_i18n","_notices","_url","_element","_data","_dom","_blob","_utils","_object","_mediaReplaceFlow","_store","IMAGE_BACKGROUND_TYPE","useHasBackgroundPanel","settings","Platform","OS","background","backgroundImage","hasBackgroundSizeValue","style","backgroundPosition","undefined","backgroundSize","hasBackgroundImageValue","id","url","backgroundSizeHelpText","value","__","coordsToBackgroundPosition","isNaN","x","y","exports","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreview","label","filename","imgUrl","imgLabel","getFilename","_react","createElement","__experimentalItemGroup","as","__experimentalHStack","justify","className","classnames","FlexItem","__experimentalTruncate","numberOfLines","VisuallyHidden","sprintf","BackgroundImageToolsPanelItem","panelId","isShownByDefault","onChange","inheritedValue","mediaUpload","useSelect","select","blockEditorStore","getSettings","title","replaceContainerRef","useRef","createErrorNotice","useDispatch","noticesStore","onUploadError","message","type","resetBackgroundImage","setImmutably","onSelectMedia","media","isBlobURL","media_type","source","onFilesDrop","filesList","allowedTypes","onFileChange","image","onError","resetAllFilter","useCallback","previousValue","hasValue","__experimentalToolsPanelItem","onDeselect","ref","default","mediaId","mediaURL","accept","onSelect","name","variant","MenuItem","onClick","toggleButton","focus","tabbable","find","current","click","DropZone","BackgroundSizeToolsPanelItem","defaultValues","sizeValue","repeatValue","backgroundRepeat","imageValue","positionValue","currentValueForToggle","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","updateBackgroundPosition","toggleIsRepeated","resetBackgroundSize","__experimentalVStack","ToolsPanelItem","spacing","FocalPointPicker","__next40pxDefaultSize","__experimentalToggleGroupControl","size","isBlock","help","__experimentalToggleGroupControlOption","key","__experimentalUnitControl","ToggleControl","checked","BackgroundToolsPanel","children","resetAll","updatedValue","ToolsPanel","dropdownMenuProps","TOOLSPANEL_DROPDOWNMENU_PROPS","DEFAULT_CONTROLS","BackgroundPanel","Wrapper","defaultControls","shouldShowBackgroundSizeControls"],"sources":["@wordpress/block-editor/src/components/global-styles/background-panel.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tToggleControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalVStack as VStack,\n\tDropZone,\n\tFlexItem,\n\tFocalPointPicker,\n\tMenuItem,\n\tVisuallyHidden,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { getFilename } from '@wordpress/url';\nimport { useCallback, Platform, useRef } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { focus } from '@wordpress/dom';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport { TOOLSPANEL_DROPDOWNMENU_PROPS } from './utils';\nimport { setImmutably } from '../../utils/object';\nimport MediaReplaceFlow from '../media-replace-flow';\nimport { store as blockEditorStore } from '../../store';\n\nconst IMAGE_BACKGROUND_TYPE = 'image';\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!! 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 __( 'Specify a fixed width.' );\n}\n\n/**\n * Converts decimal x and y coords from FocalPointPicker to percentage-based values\n * to use as backgroundPosition value.\n *\n * @param {{x?:number, y?:number}} value FocalPointPicker coords.\n * @return {string} \t\t\t\t backgroundPosition value.\n */\nexport const coordsToBackgroundPosition = ( value ) => {\n\tif ( ! value || ( isNaN( value.x ) && isNaN( value.y ) ) ) {\n\t\treturn undefined;\n\t}\n\n\tconst x = isNaN( value.x ) ? 0.5 : value.x;\n\tconst y = isNaN( value.y ) ? 0.5 : value.y;\n\n\treturn `${ x * 100 }% ${ y * 100 }%`;\n};\n\n/**\n * Converts backgroundPosition value to x and y coords for FocalPointPicker.\n *\n * @param {string} value backgroundPosition value.\n * @return {{x?:number, y?:number}} FocalPointPicker coords.\n */\nexport const backgroundPositionToCoords = ( value ) => {\n\tif ( ! value ) {\n\t\treturn { x: undefined, y: undefined };\n\t}\n\n\tlet [ x, y ] = value.split( ' ' ).map( ( v ) => parseFloat( v ) / 100 );\n\tx = isNaN( x ) ? undefined : x;\n\ty = isNaN( y ) ? x : y;\n\n\treturn { x, y };\n};\n\nfunction InspectorImagePreview( { label, filename, url: imgUrl } ) {\n\tconst imgLabel = label || getFilename( imgUrl );\n\treturn (\n\t\t<ItemGroup as=\"span\">\n\t\t\t<HStack justify=\"flex-start\" as=\"span\">\n\t\t\t\t<span\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__inspector-image-indicator-wrapper',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'has-image': imgUrl,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\taria-hidden\n\t\t\t\t>\n\t\t\t\t\t{ imgUrl && (\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) }\n\t\t\t\t</span>\n\t\t\t\t<FlexItem as=\"span\">\n\t\t\t\t\t<Truncate\n\t\t\t\t\t\tnumberOfLines={ 1 }\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-media-replace-title\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ imgLabel }\n\t\t\t\t\t</Truncate>\n\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t{ filename\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__( 'Selected image: %s' ),\n\t\t\t\t\t\t\t\t\tfilename\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __( 'No image selected' ) }\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t</ItemGroup>\n\t);\n}\n\nfunction BackgroundImageToolsPanelItem( {\n\tpanelId,\n\tisShownByDefault,\n\tonChange,\n\tstyle,\n\tinheritedValue,\n} ) {\n\tconst mediaUpload = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings().mediaUpload,\n\t\t[]\n\t);\n\n\tconst { id, title, url } = style?.background?.backgroundImage || {\n\t\t...inheritedValue?.background?.backgroundImage,\n\t};\n\n\tconst replaceContainerRef = useRef();\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t};\n\n\tconst resetBackgroundImage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundImage' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\n\tconst onSelectMedia = ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tresetBackgroundImage();\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// For media selections originated from a file upload.\n\t\tif (\n\t\t\t( media.media_type &&\n\t\t\t\tmedia.media_type !== IMAGE_BACKGROUND_TYPE ) ||\n\t\t\t( ! media.media_type &&\n\t\t\t\tmedia.type &&\n\t\t\t\tmedia.type !== IMAGE_BACKGROUND_TYPE )\n\t\t) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only images can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background', 'backgroundImage' ], {\n\t\t\t\turl: media.url,\n\t\t\t\tid: media.id,\n\t\t\t\tsource: 'file',\n\t\t\t\ttitle: media.title || undefined,\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst onFilesDrop = ( filesList ) => {\n\t\tmediaUpload( {\n\t\t\tallowedTypes: [ 'image' ],\n\t\t\tfilesList,\n\t\t\tonFileChange( [ image ] ) {\n\t\t\t\tif ( isBlobURL( image?.url ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tonSelectMedia( image );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tstyle: {\n\t\t\t\t...previousValue.style,\n\t\t\t\tbackground: undefined,\n\t\t\t},\n\t\t};\n\t}, [] );\n\n\tconst hasValue =\n\t\thasBackgroundImageValue( style ) ||\n\t\thasBackgroundImageValue( inheritedValue );\n\n\treturn (\n\t\t<ToolsPanelItem\n\t\t\tclassName=\"single-column\"\n\t\t\thasValue={ () => hasValue }\n\t\t\tlabel={ __( 'Background image' ) }\n\t\t\tonDeselect={ resetBackgroundImage }\n\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-media-replace-container\"\n\t\t\t\tref={ replaceContainerRef }\n\t\t\t>\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ url }\n\t\t\t\t\tallowedTypes={ [ IMAGE_BACKGROUND_TYPE ] }\n\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\t\tname={\n\t\t\t\t\t\t<InspectorImagePreview\n\t\t\t\t\t\t\tlabel={ __( 'Background image' ) }\n\t\t\t\t\t\t\tfilename={ title || __( 'Untitled' ) }\n\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t>\n\t\t\t\t\t{ hasValue && (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tconst [ toggleButton ] = focus.tabbable.find(\n\t\t\t\t\t\t\t\t\treplaceContainerRef.current\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t// Focus the toggle button and close the dropdown menu.\n\t\t\t\t\t\t\t\t// This ensures similar behaviour as to selecting an image, where the dropdown is\n\t\t\t\t\t\t\t\t// closed and focus is redirected to the dropdown toggle button.\n\t\t\t\t\t\t\t\ttoggleButton?.focus();\n\t\t\t\t\t\t\t\ttoggleButton?.click();\n\t\t\t\t\t\t\t\tresetBackgroundImage();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset ' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t) }\n\t\t\t\t</MediaReplaceFlow>\n\t\t\t\t<DropZone\n\t\t\t\t\tonFilesDrop={ onFilesDrop }\n\t\t\t\t\tlabel={ __( 'Drop to upload' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</ToolsPanelItem>\n\t);\n}\n\nfunction BackgroundSizeToolsPanelItem( {\n\tpanelId,\n\tisShownByDefault,\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tdefaultValues,\n} ) {\n\tconst sizeValue =\n\t\tstyle?.background?.backgroundSize ||\n\t\tinheritedValue?.background?.backgroundSize;\n\tconst repeatValue =\n\t\tstyle?.background?.backgroundRepeat ||\n\t\tinheritedValue?.background?.backgroundRepeat;\n\tconst imageValue =\n\t\tstyle?.background?.backgroundImage?.url ||\n\t\tinheritedValue?.background?.backgroundImage?.url;\n\tconst positionValue =\n\t\tstyle?.background?.backgroundPosition ||\n\t\tinheritedValue?.background?.backgroundPosition;\n\n\t/*\n\t * An `undefined` value is replaced with any supplied\n\t * default control value for the toggle group control.\n\t * An empty string is treated as `auto` - this allows a user\n\t * to select \"Size\" and then enter a custom value, with an\n\t * empty value being treated as `auto`.\n\t */\n\tconst currentValueForToggle =\n\t\t( sizeValue !== undefined &&\n\t\t\tsizeValue !== 'cover' &&\n\t\t\tsizeValue !== 'contain' ) ||\n\t\tsizeValue === ''\n\t\t\t? 'auto'\n\t\t\t: sizeValue || defaultValues?.backgroundSize;\n\n\t/*\n\t * If the current value is `cover` and the repeat value is `undefined`, then\n\t * the toggle should be unchecked as the default state. Otherwise, the toggle\n\t * should reflect the current repeat value.\n\t */\n\tconst repeatCheckedValue = ! (\n\t\trepeatValue === 'no-repeat' ||\n\t\t( currentValueForToggle === 'cover' && repeatValue === undefined )\n\t);\n\n\tconst hasValue = hasBackgroundSizeValue( style );\n\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tstyle: {\n\t\t\t\t...previousValue.style,\n\t\t\t\tbackground: {\n\t\t\t\t\t...previousValue.style?.background,\n\t\t\t\t\tbackgroundRepeat: undefined,\n\t\t\t\t\tbackgroundSize: undefined,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}, [] );\n\n\tconst updateBackgroundSize = ( next ) => {\n\t\t// When switching to 'contain' toggle the repeat off.\n\t\tlet nextRepeat = repeatValue;\n\n\t\tif ( next === 'contain' ) {\n\t\t\tnextRepeat = 'no-repeat';\n\t\t}\n\n\t\tif ( next === 'cover' ) {\n\t\t\tnextRepeat = 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}\n\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\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' : undefined\n\t\t\t)\n\t\t);\n\n\tconst resetBackgroundSize = () =>\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundPosition: undefined,\n\t\t\t\tbackgroundRepeat: undefined,\n\t\t\t\tbackgroundSize: undefined,\n\t\t\t} )\n\t\t);\n\n\treturn (\n\t\t<VStack\n\t\t\tas={ ToolsPanelItem }\n\t\t\tspacing={ 2 }\n\t\t\tclassName=\"single-column\"\n\t\t\thasValue={ () => hasValue }\n\t\t\tlabel={ __( 'Size' ) }\n\t\t\tonDeselect={ resetBackgroundSize }\n\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t<FocalPointPicker\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tlabel={ __( 'Position' ) }\n\t\t\t\turl={ imageValue }\n\t\t\t\tvalue={ backgroundPositionToCoords( positionValue ) }\n\t\t\t\tonChange={ updateBackgroundPosition }\n\t\t\t/>\n\t\t\t<ToggleGroupControl\n\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\tlabel={ __( 'Size' ) }\n\t\t\t\tvalue={ currentValueForToggle }\n\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\tisBlock\n\t\t\t\thelp={ backgroundSizeHelpText( sizeValue ) }\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={ __( 'Cover' ) }\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={ __( 'Contain' ) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey={ 'fixed' }\n\t\t\t\t\tvalue={ 'auto' }\n\t\t\t\t\tlabel={ __( 'Fixed' ) }\n\t\t\t\t/>\n\t\t\t</ToggleGroupControl>\n\t\t\t{ sizeValue !== undefined &&\n\t\t\tsizeValue !== 'cover' &&\n\t\t\tsizeValue !== 'contain' ? (\n\t\t\t\t<UnitControl\n\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\t\tvalue={ sizeValue }\n\t\t\t\t/>\n\t\t\t) : null }\n\t\t\t{ currentValueForToggle !== 'cover' && (\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ __( 'Repeat' ) }\n\t\t\t\t\tchecked={ repeatCheckedValue }\n\t\t\t\t\tonChange={ toggleIsRepeated }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nfunction BackgroundToolsPanel( {\n\tresetAllFilter,\n\tonChange,\n\tvalue,\n\tpanelId,\n\tchildren,\n} ) {\n\tconst resetAll = () => {\n\t\tconst updatedValue = resetAllFilter( value );\n\t\tonChange( updatedValue );\n\t};\n\n\treturn (\n\t\t<VStack\n\t\t\tas={ ToolsPanel }\n\t\t\tspacing={ 6 }\n\t\t\tlabel={ __( 'Background' ) }\n\t\t\tresetAll={ resetAll }\n\t\t\tpanelId={ panelId }\n\t\t\tdropdownMenuProps={ TOOLSPANEL_DROPDOWNMENU_PROPS }\n\t\t>\n\t\t\t{ children }\n\t\t</VStack>\n\t);\n}\n\nconst DEFAULT_CONTROLS = {\n\tbackgroundImage: true,\n\tbackgroundSize: true,\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} ) {\n\tconst resetAllFilter = useCallback( ( previousValue ) => {\n\t\treturn {\n\t\t\t...previousValue,\n\t\t\tbackground: {},\n\t\t};\n\t}, [] );\n\tconst shouldShowBackgroundSizeControls =\n\t\tsettings?.background?.backgroundSize;\n\n\treturn (\n\t\t<Wrapper\n\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tpanelId={ panelId }\n\t\t>\n\t\t\t<BackgroundImageToolsPanelItem\n\t\t\t\tonChange={ onChange }\n\t\t\t\tpanelId={ panelId }\n\t\t\t\tisShownByDefault={ defaultControls.backgroundImage }\n\t\t\t\tstyle={ value }\n\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t/>\n\t\t\t{ shouldShowBackgroundSizeControls && (\n\t\t\t\t<BackgroundSizeToolsPanelItem\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\tisShownByDefault={ defaultControls.backgroundSize }\n\t\t\t\t\tstyle={ value }\n\t\t\t\t\tinheritedValue={ inheritedValue }\n\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Wrapper>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -82,10 +82,11 @@ function ColorToolsPanel({
|
|
|
82
82
|
onChange(updatedValue);
|
|
83
83
|
};
|
|
84
84
|
return (0, _react.createElement)(_components.__experimentalToolsPanel, {
|
|
85
|
-
label: (0, _i18n.__)('
|
|
85
|
+
label: (0, _i18n.__)('Elements'),
|
|
86
86
|
resetAll: resetAll,
|
|
87
87
|
panelId: panelId,
|
|
88
88
|
hasInnerWrapper: true,
|
|
89
|
+
headingLevel: 3,
|
|
89
90
|
className: "color-block-support-panel",
|
|
90
91
|
__experimentalFirstVisibleItemClass: "first",
|
|
91
92
|
__experimentalLastVisibleItemClass: "last",
|