@wordpress/block-editor 15.4.1-next.233ccab9b.0 → 15.5.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/build/components/background-image-control/index.js +51 -24
- package/build/components/background-image-control/index.js.map +1 -1
- package/build/components/block-edit/edit.js +13 -5
- package/build/components/block-edit/edit.js.map +1 -1
- package/build/components/block-list/block.js +14 -4
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +5 -4
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +10 -2
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-toolbar/index.js +5 -0
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-visibility/index.js +21 -0
- package/build/components/block-visibility/index.js.map +1 -0
- package/build/components/block-visibility/menu-item.js +52 -0
- package/build/components/block-visibility/menu-item.js.map +1 -0
- package/build/components/block-visibility/toolbar.js +88 -0
- package/build/components/block-visibility/toolbar.js.map +1 -0
- package/build/components/inspector-controls-tabs/index.js +23 -0
- package/build/components/inspector-controls-tabs/index.js.map +1 -1
- package/build/components/link-control/index.js +1 -1
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/list-view/block-select-button.js +23 -4
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +9 -3
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/rich-text/index.js +4 -2
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +5 -1
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/hooks/block-bindings.js +9 -4
- package/build/hooks/block-bindings.js.map +1 -1
- package/build/store/private-selectors.js +19 -1
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +1 -5
- package/build/store/reducer.js.map +1 -1
- package/build/utils/block-bindings.js +3 -48
- package/build/utils/block-bindings.js.map +1 -1
- package/build-module/components/background-image-control/index.js +52 -25
- package/build-module/components/background-image-control/index.js.map +1 -1
- package/build-module/components/block-edit/edit.js +14 -6
- package/build-module/components/block-edit/edit.js.map +1 -1
- package/build-module/components/block-list/block.js +14 -4
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +5 -4
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +10 -2
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +5 -0
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-visibility/index.js +3 -0
- package/build-module/components/block-visibility/index.js.map +1 -0
- package/build-module/components/block-visibility/menu-item.js +45 -0
- package/build-module/components/block-visibility/menu-item.js.map +1 -0
- package/build-module/components/block-visibility/toolbar.js +81 -0
- package/build-module/components/block-visibility/toolbar.js.map +1 -0
- package/build-module/components/inspector-controls-tabs/index.js +23 -0
- package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
- package/build-module/components/link-control/index.js +1 -1
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +24 -5
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +9 -3
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/rich-text/index.js +4 -2
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +6 -2
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/hooks/block-bindings.js +10 -5
- package/build-module/hooks/block-bindings.js.map +1 -1
- package/build-module/store/private-selectors.js +18 -1
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +1 -5
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/utils/block-bindings.js +3 -45
- package/build-module/utils/block-bindings.js.map +1 -1
- package/build-style/content-rtl.css +13 -0
- package/build-style/content.css +13 -0
- package/build-style/style-rtl.css +27 -0
- package/build-style/style.css +27 -0
- package/package.json +34 -34
- package/src/components/background-image-control/index.js +54 -27
- package/src/components/background-image-control/style.scss +28 -0
- package/src/components/block-edit/edit.js +23 -5
- package/src/components/block-list/block.js +16 -0
- package/src/components/block-list/content.scss +19 -0
- package/src/components/block-list/use-block-props/index.js +9 -9
- package/src/components/block-settings-menu-controls/index.js +21 -1
- package/src/components/block-toolbar/index.js +9 -0
- package/src/components/block-visibility/index.js +2 -0
- package/src/components/block-visibility/menu-item.js +53 -0
- package/src/components/block-visibility/toolbar.js +88 -0
- package/src/components/inspector-controls-tabs/index.js +33 -1
- package/src/components/link-control/index.js +1 -1
- package/src/components/link-control/test/index.js +4 -4
- package/src/components/list-view/block-select-button.js +32 -9
- package/src/components/list-view/block.js +24 -14
- package/src/components/list-view/style.scss +1 -0
- package/src/components/media-replace-flow/test/index.js +1 -1
- package/src/components/rich-text/index.js +6 -2
- package/src/components/use-block-drop-zone/index.js +14 -1
- package/src/hooks/block-bindings.js +49 -43
- package/src/store/private-selectors.js +21 -1
- package/src/store/reducer.js +1 -6
- package/src/utils/block-bindings.js +6 -48
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,7 @@ exports.coordsToBackgroundPosition = exports.backgroundPositionToCoords = void 0
|
|
|
8
8
|
exports.default = BackgroundImagePanel;
|
|
9
9
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
10
10
|
var _components = require("@wordpress/components");
|
|
11
|
+
var _icons = require("@wordpress/icons");
|
|
11
12
|
var _i18n = require("@wordpress/i18n");
|
|
12
13
|
var _notices = require("@wordpress/notices");
|
|
13
14
|
var _url = require("@wordpress/url");
|
|
@@ -43,6 +44,24 @@ const BACKGROUND_POPOVER_PROPS = {
|
|
|
43
44
|
};
|
|
44
45
|
const noop = () => {};
|
|
45
46
|
|
|
47
|
+
/**
|
|
48
|
+
* Focuses the toggle button.
|
|
49
|
+
* @param {Object} containerRef - ref object containing current element
|
|
50
|
+
*/
|
|
51
|
+
const focusToggleButton = containerRef => {
|
|
52
|
+
// Use requestAnimationFrame to ensure DOM updates are complete
|
|
53
|
+
window.requestAnimationFrame(() => {
|
|
54
|
+
const [toggleButton] = _dom.focus.tabbable.find(containerRef?.current);
|
|
55
|
+
if (!toggleButton) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// Focus the toggle button and close the dropdown menu.
|
|
59
|
+
// This ensures similar behaviour as to selecting an image, where the dropdown is
|
|
60
|
+
// closed and focus is redirected to the dropdown toggle button.
|
|
61
|
+
toggleButton.focus();
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
|
|
46
65
|
/**
|
|
47
66
|
* Get the help text for the background size control.
|
|
48
67
|
*
|
|
@@ -158,7 +177,9 @@ function BackgroundControlsPanel({
|
|
|
158
177
|
url: imgUrl,
|
|
159
178
|
children,
|
|
160
179
|
onToggle: onToggleCallback = noop,
|
|
161
|
-
hasImageValue
|
|
180
|
+
hasImageValue,
|
|
181
|
+
onReset,
|
|
182
|
+
containerRef
|
|
162
183
|
}) {
|
|
163
184
|
if (!hasImageValue) {
|
|
164
185
|
return;
|
|
@@ -177,13 +198,30 @@ function BackgroundControlsPanel({
|
|
|
177
198
|
'aria-label': (0, _i18n.__)('Background size, position and repeat options.'),
|
|
178
199
|
isOpen
|
|
179
200
|
};
|
|
180
|
-
return /*#__PURE__*/(0, _jsxRuntime.
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
201
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
202
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(InspectorImagePreviewItem, {
|
|
203
|
+
imgUrl: imgUrl,
|
|
204
|
+
filename: filename,
|
|
205
|
+
label: imgLabel,
|
|
206
|
+
toggleProps: toggleProps,
|
|
207
|
+
as: "button",
|
|
208
|
+
onToggleCallback: onToggleCallback
|
|
209
|
+
}), onReset && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
|
|
210
|
+
__next40pxDefaultSize: true,
|
|
211
|
+
label: (0, _i18n.__)('Reset'),
|
|
212
|
+
className: "block-editor-global-styles-background-panel__reset",
|
|
213
|
+
size: "small",
|
|
214
|
+
icon: _icons.reset,
|
|
215
|
+
onClick: () => {
|
|
216
|
+
onReset();
|
|
217
|
+
// Close the dropdown if open.
|
|
218
|
+
if (isOpen) {
|
|
219
|
+
onToggle();
|
|
220
|
+
}
|
|
221
|
+
// Focus the toggle button.
|
|
222
|
+
focusToggleButton(containerRef);
|
|
223
|
+
}
|
|
224
|
+
})]
|
|
187
225
|
});
|
|
188
226
|
},
|
|
189
227
|
renderContent: () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__experimentalDropdownContentWrapper, {
|
|
@@ -268,7 +306,7 @@ function BackgroundImageControls({
|
|
|
268
306
|
}));
|
|
269
307
|
setIsUploading(false);
|
|
270
308
|
// Close the dropdown and focus the toggle button.
|
|
271
|
-
|
|
309
|
+
focusToggleButton(containerRef);
|
|
272
310
|
};
|
|
273
311
|
|
|
274
312
|
// Drag and drop callback, restricting image to one.
|
|
@@ -284,19 +322,6 @@ function BackgroundImageControls({
|
|
|
284
322
|
});
|
|
285
323
|
};
|
|
286
324
|
const hasValue = (0, _backgroundPanel.hasBackgroundImageValue)(style);
|
|
287
|
-
const closeAndFocus = () => {
|
|
288
|
-
// Use requestAnimationFrame to ensure DOM updates are complete
|
|
289
|
-
window.requestAnimationFrame(() => {
|
|
290
|
-
const [toggleButton] = _dom.focus.tabbable.find(containerRef?.current);
|
|
291
|
-
if (!toggleButton) {
|
|
292
|
-
return;
|
|
293
|
-
}
|
|
294
|
-
// Focus the toggle button and close the dropdown menu.
|
|
295
|
-
// This ensures similar behaviour as to selecting an image, where the dropdown is
|
|
296
|
-
// closed and focus is redirected to the dropdown toggle button.
|
|
297
|
-
toggleButton.focus();
|
|
298
|
-
});
|
|
299
|
-
};
|
|
300
325
|
const onRemove = () => onChange((0, _object.setImmutably)(style, ['background'], {
|
|
301
326
|
backgroundImage: 'none'
|
|
302
327
|
}));
|
|
@@ -326,12 +351,12 @@ function BackgroundImageControls({
|
|
|
326
351
|
}),
|
|
327
352
|
onError: onUploadError,
|
|
328
353
|
onReset: () => {
|
|
329
|
-
|
|
354
|
+
focusToggleButton(containerRef);
|
|
330
355
|
onResetImage();
|
|
331
356
|
},
|
|
332
357
|
children: canRemove && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuItem, {
|
|
333
358
|
onClick: () => {
|
|
334
|
-
|
|
359
|
+
focusToggleButton(containerRef);
|
|
335
360
|
onRemove();
|
|
336
361
|
onRemoveImage();
|
|
337
362
|
},
|
|
@@ -541,6 +566,8 @@ function BackgroundImagePanel({
|
|
|
541
566
|
url: url,
|
|
542
567
|
onToggle: setIsDropDownOpen,
|
|
543
568
|
hasImageValue: hasImageValue,
|
|
569
|
+
onReset: resetBackground,
|
|
570
|
+
containerRef: containerRef,
|
|
544
571
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalVStack, {
|
|
545
572
|
spacing: 3,
|
|
546
573
|
className: "single-column",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_components","_i18n","_notices","_url","_element","_data","_dom","_blob","_utils","_backgroundPanel","_object","_mediaReplaceFlow","_store","_privateKeys","_jsxRuntime","IMAGE_BACKGROUND_TYPE","BACKGROUND_POPOVER_PROPS","placement","offset","shift","className","noop","backgroundSizeHelpText","value","undefined","__","coordsToBackgroundPosition","isNaN","x","y","exports","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreviewItem","as","imgUrl","toggleProps","filename","label","onToggleCallback","isOpen","restToggleProps","useEffect","renderPreviewContent","jsxs","__experimentalHStack","justify","children","jsx","style","backgroundImage","FlexItem","flexGrow","__experimentalTruncate","numberOfLines","VisuallyHidden","sprintf","Button","__next40pxDefaultSize","BackgroundControlsPanel","url","onToggle","hasImageValue","imgLabel","getFilename","Dropdown","popoverProps","renderToggle","onClick","renderContent","__experimentalDropdownContentWrapper","paddingSize","LoadingSpinner","Placeholder","Spinner","BackgroundImageControls","onChange","inheritedValue","onRemoveImage","onResetImage","displayInPanel","defaultValues","containerRef","isUploading","setIsUploading","useState","getSettings","useSelect","blockEditorStore","id","title","background","createErrorNotice","useDispatch","noticesStore","onUploadError","message","type","resetBackgroundImage","setImmutably","onSelectMedia","media","isBlobURL","media_type","sizeValue","backgroundSize","positionValue","backgroundPosition","source","closeAndFocus","onFilesDrop","filesList","mediaUpload","allowedTypes","onFileChange","image","onError","multiple","hasValue","hasBackgroundImageValue","window","requestAnimationFrame","toggleButton","focus","tabbable","find","current","onRemove","canRemove","default","mediaId","mediaURL","accept","onSelect","clsx","name","props","onReset","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","BackgroundImagePanel","settings","globalStyles","_links","select","_settings","globalStylesDataKey","globalStylesLinksDataKey","resolvedInheritedValue","useMemo","resolvedValues","Object","entries","forEach","key","backgroundValue","getResolvedValue","styles","resetBackground","shouldShowBackgroundImageControls","isDropDownOpen","setIsDropDownOpen","useRef","ref"],"sources":["@wordpress/block-editor/src/components/background-image-control/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\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__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tDropdown,\n\tPlaceholder,\n\tSpinner,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n\tButton,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { getFilename } from '@wordpress/url';\nimport { useRef, useState, useEffect, useMemo } 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 { getResolvedValue } from '../global-styles/utils';\nimport { hasBackgroundImageValue } from '../global-styles/background-panel';\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';\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 * 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\tonToggleCallback = noop,\n} ) {\n\tconst { isOpen, ...restToggleProps } = toggleProps;\n\n\tuseEffect( () => {\n\t\tif ( typeof isOpen !== 'undefined' ) {\n\t\t\tonToggleCallback( isOpen );\n\t\t}\n\t}, [ isOpen, onToggleCallback ] );\n\n\tconst renderPreviewContent = () => {\n\t\treturn (\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);\n\t};\n\n\treturn as === 'button' ? (\n\t\t<Button __next40pxDefaultSize { ...restToggleProps }>\n\t\t\t{ renderPreviewContent() }\n\t\t</Button>\n\t) : (\n\t\trenderPreviewContent()\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\tcontainerRef,\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 { 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\t// Close the dropdown and focus the toggle button.\n\t\tcloseAndFocus();\n\t};\n\n\t// Drag and drop callback, restricting image to one.\n\tconst onFilesDrop = ( filesList ) => {\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\tmultiple: false,\n\t\t} );\n\t};\n\n\tconst hasValue = hasBackgroundImageValue( style );\n\n\tconst closeAndFocus = () => {\n\t\t// Use requestAnimationFrame to ensure DOM updates are complete\n\t\twindow.requestAnimationFrame( () => {\n\t\t\tconst [ toggleButton ] = focus.tabbable.find(\n\t\t\t\tcontainerRef?.current\n\t\t\t);\n\t\t\tif ( ! toggleButton ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Focus the toggle button and close the dropdown menu.\n\t\t\t// This ensures similar behaviour as to selecting an image, where the dropdown is\n\t\t\t// closed and focus is redirected to the dropdown toggle button.\n\t\t\ttoggleButton.focus();\n\t\t} );\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 className=\"block-editor-global-styles-background-panel__image-tools-panel-item\">\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\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\trenderToggle={ ( props ) => (\n\t\t\t\t\t<Button { ...props } __next40pxDefaultSize />\n\t\t\t\t) }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tonReset={ () => {\n\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\tonResetImage();\n\t\t\t\t} }\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</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\nexport default function BackgroundImagePanel( {\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tdefaultValues = {},\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 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\tconst containerRef = useRef();\n\n\treturn (\n\t\t<div\n\t\t\tref={ containerRef }\n\t\t\tclassName={ clsx(\n\t\t\t\t'block-editor-global-styles-background-panel__inspector-media-replace-container',\n\t\t\t\t{\n\t\t\t\t\t'is-open': isDropDownOpen,\n\t\t\t\t}\n\t\t\t) }\n\t\t>\n\t\t\t{ shouldShowBackgroundImageControls ? (\n\t\t\t\t<BackgroundControlsPanel\n\t\t\t\t\tlabel={ title }\n\t\t\t\t\tfilename={ title }\n\t\t\t\t\turl={ url }\n\t\t\t\t\tonToggle={ setIsDropDownOpen }\n\t\t\t\t\thasImageValue={ hasImageValue }\n\t\t\t\t>\n\t\t\t\t\t<VStack spacing={ 3 } className=\"single-column\">\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\tdisplayInPanel\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\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\tcontainerRef={ containerRef }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BackgroundSizeControls\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\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</VStack>\n\t\t\t\t</BackgroundControlsPanel>\n\t\t\t) : (\n\t\t\t\t<BackgroundImageControls\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tstyle={ value }\n\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\tonResetImage={ () => {\n\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t} }\n\t\t\t\t\tonRemoveImage={ () => setIsDropDownOpen( false ) }\n\t\t\t\t\tcontainerRef={ containerRef }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_clsx","_interopRequireDefault","require","_components","_icons","_i18n","_notices","_url","_element","_data","_dom","_blob","_utils","_backgroundPanel","_object","_mediaReplaceFlow","_store","_privateKeys","_jsxRuntime","IMAGE_BACKGROUND_TYPE","BACKGROUND_POPOVER_PROPS","placement","offset","shift","className","noop","focusToggleButton","containerRef","window","requestAnimationFrame","toggleButton","focus","tabbable","find","current","backgroundSizeHelpText","value","undefined","__","coordsToBackgroundPosition","isNaN","x","y","exports","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreviewItem","as","imgUrl","toggleProps","filename","label","onToggleCallback","isOpen","restToggleProps","useEffect","renderPreviewContent","jsxs","__experimentalHStack","justify","children","jsx","style","backgroundImage","FlexItem","flexGrow","__experimentalTruncate","numberOfLines","VisuallyHidden","sprintf","Button","__next40pxDefaultSize","BackgroundControlsPanel","url","onToggle","hasImageValue","onReset","imgLabel","getFilename","Dropdown","popoverProps","renderToggle","onClick","Fragment","size","icon","resetIcon","renderContent","__experimentalDropdownContentWrapper","paddingSize","LoadingSpinner","Placeholder","Spinner","BackgroundImageControls","onChange","inheritedValue","onRemoveImage","onResetImage","displayInPanel","defaultValues","isUploading","setIsUploading","useState","getSettings","useSelect","blockEditorStore","id","title","background","createErrorNotice","useDispatch","noticesStore","onUploadError","message","type","resetBackgroundImage","setImmutably","onSelectMedia","media","isBlobURL","media_type","sizeValue","backgroundSize","positionValue","backgroundPosition","source","onFilesDrop","filesList","mediaUpload","allowedTypes","onFileChange","image","onError","multiple","hasValue","hasBackgroundImageValue","onRemove","canRemove","default","mediaId","mediaURL","accept","onSelect","clsx","name","props","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","isBlock","help","__experimentalToggleGroupControlOption","_x","__experimentalUnitControl","__unstableInputWidth","min","placeholder","disabled","BackgroundImagePanel","settings","globalStyles","_links","select","_settings","globalStylesDataKey","globalStylesLinksDataKey","resolvedInheritedValue","useMemo","resolvedValues","Object","entries","forEach","key","backgroundValue","getResolvedValue","styles","resetBackground","shouldShowBackgroundImageControls","isDropDownOpen","setIsDropDownOpen","useRef","ref"],"sources":["@wordpress/block-editor/src/components/background-image-control/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\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__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tDropdown,\n\tPlaceholder,\n\tSpinner,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n\tButton,\n} from '@wordpress/components';\nimport { reset as resetIcon } from '@wordpress/icons';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { getFilename } from '@wordpress/url';\nimport { useRef, useState, useEffect, useMemo } 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 { getResolvedValue } from '../global-styles/utils';\nimport { hasBackgroundImageValue } from '../global-styles/background-panel';\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';\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 * Focuses the toggle button.\n * @param {Object} containerRef - ref object containing current element\n */\nconst focusToggleButton = ( containerRef ) => {\n\t// Use requestAnimationFrame to ensure DOM updates are complete\n\twindow.requestAnimationFrame( () => {\n\t\tconst [ toggleButton ] = focus.tabbable.find( containerRef?.current );\n\t\tif ( ! toggleButton ) {\n\t\t\treturn;\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} );\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\tonToggleCallback = noop,\n} ) {\n\tconst { isOpen, ...restToggleProps } = toggleProps;\n\n\tuseEffect( () => {\n\t\tif ( typeof isOpen !== 'undefined' ) {\n\t\t\tonToggleCallback( isOpen );\n\t\t}\n\t}, [ isOpen, onToggleCallback ] );\n\n\tconst renderPreviewContent = () => {\n\t\treturn (\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);\n\t};\n\n\treturn as === 'button' ? (\n\t\t<Button __next40pxDefaultSize { ...restToggleProps }>\n\t\t\t{ renderPreviewContent() }\n\t\t</Button>\n\t) : (\n\t\trenderPreviewContent()\n\t);\n}\n\nfunction BackgroundControlsPanel( {\n\tlabel,\n\tfilename,\n\turl: imgUrl,\n\tchildren,\n\tonToggle: onToggleCallback = noop,\n\thasImageValue,\n\tonReset,\n\tcontainerRef,\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<>\n\t\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\t\timgUrl={ imgUrl }\n\t\t\t\t\t\t\tfilename={ filename }\n\t\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t\t\ttoggleProps={ toggleProps }\n\t\t\t\t\t\t\tas=\"button\"\n\t\t\t\t\t\t\tonToggleCallback={ onToggleCallback }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ onReset && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tlabel={ __( 'Reset' ) }\n\t\t\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__reset\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\ticon={ resetIcon }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tonReset();\n\t\t\t\t\t\t\t\t\t// Close the dropdown if open.\n\t\t\t\t\t\t\t\t\tif ( isOpen ) {\n\t\t\t\t\t\t\t\t\t\tonToggle();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// Focus the toggle button.\n\t\t\t\t\t\t\t\t\tfocusToggleButton( containerRef );\n\t\t\t\t\t\t\t\t} }\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);\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\tcontainerRef,\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 { 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\t// Close the dropdown and focus the toggle button.\n\t\tfocusToggleButton( containerRef );\n\t};\n\n\t// Drag and drop callback, restricting image to one.\n\tconst onFilesDrop = ( filesList ) => {\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\tmultiple: false,\n\t\t} );\n\t};\n\n\tconst hasValue = hasBackgroundImageValue( style );\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 className=\"block-editor-global-styles-background-panel__image-tools-panel-item\">\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\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\trenderToggle={ ( props ) => (\n\t\t\t\t\t<Button { ...props } __next40pxDefaultSize />\n\t\t\t\t) }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tonReset={ () => {\n\t\t\t\t\tfocusToggleButton( containerRef );\n\t\t\t\t\tonResetImage();\n\t\t\t\t} }\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\tfocusToggleButton( containerRef );\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</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\nexport default function BackgroundImagePanel( {\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tdefaultValues = {},\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 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\tconst containerRef = useRef();\n\n\treturn (\n\t\t<div\n\t\t\tref={ containerRef }\n\t\t\tclassName={ clsx(\n\t\t\t\t'block-editor-global-styles-background-panel__inspector-media-replace-container',\n\t\t\t\t{\n\t\t\t\t\t'is-open': isDropDownOpen,\n\t\t\t\t}\n\t\t\t) }\n\t\t>\n\t\t\t{ shouldShowBackgroundImageControls ? (\n\t\t\t\t<BackgroundControlsPanel\n\t\t\t\t\tlabel={ title }\n\t\t\t\t\tfilename={ title }\n\t\t\t\t\turl={ url }\n\t\t\t\t\tonToggle={ setIsDropDownOpen }\n\t\t\t\t\thasImageValue={ hasImageValue }\n\t\t\t\t\tonReset={ resetBackground }\n\t\t\t\t\tcontainerRef={ containerRef }\n\t\t\t\t>\n\t\t\t\t\t<VStack spacing={ 3 } className=\"single-column\">\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\tdisplayInPanel\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\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\tcontainerRef={ containerRef }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BackgroundSizeControls\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\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</VStack>\n\t\t\t\t</BackgroundControlsPanel>\n\t\t\t) : (\n\t\t\t\t<BackgroundImageControls\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tstyle={ value }\n\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\tonResetImage={ () => {\n\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t} }\n\t\t\t\t\tonRemoveImage={ () => setIsDropDownOpen( false ) }\n\t\t\t\t\tcontainerRef={ containerRef }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,6 +13,7 @@ var _element = require("@wordpress/element");
|
|
|
13
13
|
var _blockContext = _interopRequireDefault(require("../block-context"));
|
|
14
14
|
var _isUrlLike = _interopRequireDefault(require("../link-control/is-url-like"));
|
|
15
15
|
var _blockBindings = require("../../utils/block-bindings");
|
|
16
|
+
var _store = require("../../store");
|
|
16
17
|
var _lockUnlock = require("../../lock-unlock");
|
|
17
18
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
19
|
/**
|
|
@@ -53,6 +54,7 @@ const Edit = props => {
|
|
|
53
54
|
});
|
|
54
55
|
};
|
|
55
56
|
const EditWithFilters = (0, _components.withFilters)('editor.BlockEdit')(Edit);
|
|
57
|
+
const EMPTY_ARRAY = [];
|
|
56
58
|
const EditWithGeneratedProps = props => {
|
|
57
59
|
const {
|
|
58
60
|
name,
|
|
@@ -64,6 +66,12 @@ const EditWithGeneratedProps = props => {
|
|
|
64
66
|
const blockType = (0, _blocks.getBlockType)(name);
|
|
65
67
|
const blockContext = (0, _element.useContext)(_blockContext.default);
|
|
66
68
|
const registeredSources = (0, _data.useSelect)(select => (0, _lockUnlock.unlock)(select(_blocks.store)).getAllBlockBindingsSources(), []);
|
|
69
|
+
const bindableAttributes = (0, _data.useSelect)(select => {
|
|
70
|
+
const {
|
|
71
|
+
__experimentalBlockBindingsSupportedAttributes
|
|
72
|
+
} = select(_store.store).getSettings();
|
|
73
|
+
return __experimentalBlockBindingsSupportedAttributes?.[name] || EMPTY_ARRAY;
|
|
74
|
+
}, [name]);
|
|
67
75
|
const {
|
|
68
76
|
blockBindings,
|
|
69
77
|
context,
|
|
@@ -80,7 +88,7 @@ const EditWithGeneratedProps = props => {
|
|
|
80
88
|
});
|
|
81
89
|
}
|
|
82
90
|
return {
|
|
83
|
-
blockBindings: (0, _blockBindings.replacePatternOverridesDefaultBinding)(
|
|
91
|
+
blockBindings: (0, _blockBindings.replacePatternOverridesDefaultBinding)(attributes?.metadata?.bindings, bindableAttributes),
|
|
84
92
|
context: computedContext,
|
|
85
93
|
hasPatternOverrides: (0, _blockBindings.hasPatternOverridesDefaultBinding)(attributes?.metadata?.bindings)
|
|
86
94
|
};
|
|
@@ -97,7 +105,7 @@ const EditWithGeneratedProps = props => {
|
|
|
97
105
|
args: sourceArgs
|
|
98
106
|
} = binding;
|
|
99
107
|
const source = registeredSources[sourceName];
|
|
100
|
-
if (!source || !
|
|
108
|
+
if (!source || !bindableAttributes.includes(attributeName)) {
|
|
101
109
|
continue;
|
|
102
110
|
}
|
|
103
111
|
blockBindingsBySource.set(source, {
|
|
@@ -138,7 +146,7 @@ const EditWithGeneratedProps = props => {
|
|
|
138
146
|
...attributes,
|
|
139
147
|
...attributesFromSources
|
|
140
148
|
};
|
|
141
|
-
}, [attributes, blockBindings, clientId, context, name, registeredSources]);
|
|
149
|
+
}, [attributes, bindableAttributes, blockBindings, clientId, context, name, registeredSources]);
|
|
142
150
|
const setBoundAttributes = (0, _element.useCallback)(nextAttributes => {
|
|
143
151
|
if (!blockBindings) {
|
|
144
152
|
setAttributes(nextAttributes);
|
|
@@ -152,7 +160,7 @@ const EditWithGeneratedProps = props => {
|
|
|
152
160
|
|
|
153
161
|
// Loop only over the updated attributes to avoid modifying the bound ones that haven't changed.
|
|
154
162
|
for (const [attributeName, newValue] of Object.entries(keptAttributes)) {
|
|
155
|
-
if (!blockBindings[attributeName] || !
|
|
163
|
+
if (!blockBindings[attributeName] || !bindableAttributes.includes(attributeName)) {
|
|
156
164
|
continue;
|
|
157
165
|
}
|
|
158
166
|
const binding = blockBindings[attributeName];
|
|
@@ -193,7 +201,7 @@ const EditWithGeneratedProps = props => {
|
|
|
193
201
|
setAttributes(keptAttributes);
|
|
194
202
|
}
|
|
195
203
|
});
|
|
196
|
-
}, [blockBindings, clientId, context, hasPatternOverrides, setAttributes, registeredSources, name, registry]);
|
|
204
|
+
}, [bindableAttributes, blockBindings, clientId, context, hasPatternOverrides, setAttributes, registeredSources, name, registry]);
|
|
197
205
|
if (!blockType) {
|
|
198
206
|
return null;
|
|
199
207
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_blocks","_components","_data","_element","_blockContext","_isUrlLike","_blockBindings","_lockUnlock","_jsxRuntime","DEFAULT_BLOCK_CONTEXT","Edit","props","name","blockType","getBlockType","Component","edit","save","jsx","EditWithFilters","withFilters","EditWithGeneratedProps","clientId","attributes","setAttributes","registry","useRegistry","blockContext","useContext","BlockContext","registeredSources","useSelect","select","unlock","blocksStore","getAllBlockBindingsSources","blockBindings","context","hasPatternOverrides","useMemo","computedContext","usesContext","Object","fromEntries","entries","filter","key","includes","metadata","bindings","values","forEach","binding","source","replacePatternOverridesDefaultBinding","hasPatternOverridesDefaultBinding","computedAttributes","attributesFromSources","blockBindingsBySource","Map","attributeName","sourceName","args","sourceArgs","canBindAttribute","set","get","size","getValues","keys","attr","label","value","isURLLike","setBoundAttributes","useCallback","nextAttributes","batch","keptAttributes","newValue","setValues","dispatch","hasParentPattern","length","caption","href","apiVersion","generatedClassName","hasBlockSupport","getBlockDefaultClassName","className","clsx","_default","exports","default"],"sources":["@wordpress/block-editor/src/components/block-edit/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockDefaultClassName,\n\tgetBlockType,\n\thasBlockSupport,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport { useRegistry, useSelect } from '@wordpress/data';\nimport { useCallback, useContext, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockContext from '../block-context';\nimport isURLLike from '../link-control/is-url-like';\nimport {\n\tcanBindAttribute,\n\thasPatternOverridesDefaultBinding,\n\treplacePatternOverridesDefaultBinding,\n} from '../../utils/block-bindings';\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Default value used for blocks which do not define their own context needs,\n * used to guarantee that a block's `context` prop will always be an object. It\n * is assigned as a constant since it is always expected to be an empty object,\n * and in order to avoid unnecessary React reconciliations of a changing object.\n *\n * @type {{}}\n */\nconst DEFAULT_BLOCK_CONTEXT = {};\n\nconst Edit = ( props ) => {\n\tconst { name } = props;\n\tconst blockType = getBlockType( name );\n\n\tif ( ! blockType ) {\n\t\treturn null;\n\t}\n\n\t// `edit` and `save` are functions or components describing the markup\n\t// with which a block is displayed. If `blockType` is valid, assign\n\t// them preferentially as the render value for the block.\n\tconst Component = blockType.edit || blockType.save;\n\n\treturn <Component { ...props } />;\n};\n\nconst EditWithFilters = withFilters( 'editor.BlockEdit' )( Edit );\n\nconst EditWithGeneratedProps = ( props ) => {\n\tconst { name, clientId, attributes, setAttributes } = props;\n\tconst registry = useRegistry();\n\tconst blockType = getBlockType( name );\n\tconst blockContext = useContext( BlockContext );\n\tconst registeredSources = useSelect(\n\t\t( select ) =>\n\t\t\tunlock( select( blocksStore ) ).getAllBlockBindingsSources(),\n\t\t[]\n\t);\n\n\tconst { blockBindings, context, hasPatternOverrides } = useMemo( () => {\n\t\t// Assign context values using the block type's declared context needs.\n\t\tconst computedContext = blockType?.usesContext\n\t\t\t? Object.fromEntries(\n\t\t\t\t\tObject.entries( blockContext ).filter( ( [ key ] ) =>\n\t\t\t\t\t\tblockType.usesContext.includes( key )\n\t\t\t\t\t)\n\t\t\t )\n\t\t\t: DEFAULT_BLOCK_CONTEXT;\n\t\t// Add context requested by Block Bindings sources.\n\t\tif ( attributes?.metadata?.bindings ) {\n\t\t\tObject.values( attributes?.metadata?.bindings || {} ).forEach(\n\t\t\t\t( binding ) => {\n\t\t\t\t\tregisteredSources[ binding?.source ]?.usesContext?.forEach(\n\t\t\t\t\t\t( key ) => {\n\t\t\t\t\t\t\tcomputedContext[ key ] = blockContext[ key ];\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\treturn {\n\t\t\tblockBindings: replacePatternOverridesDefaultBinding(\n\t\t\t\tname,\n\t\t\t\tattributes?.metadata?.bindings\n\t\t\t),\n\t\t\tcontext: computedContext,\n\t\t\thasPatternOverrides: hasPatternOverridesDefaultBinding(\n\t\t\t\tattributes?.metadata?.bindings\n\t\t\t),\n\t\t};\n\t}, [\n\t\tname,\n\t\tblockType?.usesContext,\n\t\tblockContext,\n\t\tattributes?.metadata?.bindings,\n\t\tregisteredSources,\n\t] );\n\n\tconst computedAttributes = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! blockBindings ) {\n\t\t\t\treturn attributes;\n\t\t\t}\n\n\t\t\tconst attributesFromSources = {};\n\t\t\tconst blockBindingsBySource = new Map();\n\n\t\t\tfor ( const [ attributeName, binding ] of Object.entries(\n\t\t\t\tblockBindings\n\t\t\t) ) {\n\t\t\t\tconst { source: sourceName, args: sourceArgs } = binding;\n\t\t\t\tconst source = registeredSources[ sourceName ];\n\t\t\t\tif ( ! source || ! canBindAttribute( name, attributeName ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tblockBindingsBySource.set( source, {\n\t\t\t\t\t...blockBindingsBySource.get( source ),\n\t\t\t\t\t[ attributeName ]: {\n\t\t\t\t\t\targs: sourceArgs,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( blockBindingsBySource.size ) {\n\t\t\t\tfor ( const [ source, bindings ] of blockBindingsBySource ) {\n\t\t\t\t\t// Get values in batch if the source supports it.\n\t\t\t\t\tlet values = {};\n\t\t\t\t\tif ( ! source.getValues ) {\n\t\t\t\t\t\tObject.keys( bindings ).forEach( ( attr ) => {\n\t\t\t\t\t\t\t// Default to the the source label when `getValues` doesn't exist.\n\t\t\t\t\t\t\tvalues[ attr ] = source.label;\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalues = source.getValues( {\n\t\t\t\t\t\t\tselect,\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tbindings,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t\tfor ( const [ attributeName, value ] of Object.entries(\n\t\t\t\t\t\tvalues\n\t\t\t\t\t) ) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tattributeName === 'url' &&\n\t\t\t\t\t\t\t( ! value || ! isURLLike( value ) )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// Return null if value is not a valid URL.\n\t\t\t\t\t\t\tattributesFromSources[ attributeName ] = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tattributesFromSources[ attributeName ] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...attributes,\n\t\t\t\t...attributesFromSources,\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tattributes,\n\t\t\tblockBindings,\n\t\t\tclientId,\n\t\t\tcontext,\n\t\t\tname,\n\t\t\tregisteredSources,\n\t\t]\n\t);\n\n\tconst setBoundAttributes = useCallback(\n\t\t( nextAttributes ) => {\n\t\t\tif ( ! blockBindings ) {\n\t\t\t\tsetAttributes( nextAttributes );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tregistry.batch( () => {\n\t\t\t\tconst keptAttributes = { ...nextAttributes };\n\t\t\t\tconst blockBindingsBySource = new Map();\n\n\t\t\t\t// Loop only over the updated attributes to avoid modifying the bound ones that haven't changed.\n\t\t\t\tfor ( const [ attributeName, newValue ] of Object.entries(\n\t\t\t\t\tkeptAttributes\n\t\t\t\t) ) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t! blockBindings[ attributeName ] ||\n\t\t\t\t\t\t! canBindAttribute( name, attributeName )\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst binding = blockBindings[ attributeName ];\n\t\t\t\t\tconst source = registeredSources[ binding?.source ];\n\t\t\t\t\tif ( ! source?.setValues ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tblockBindingsBySource.set( source, {\n\t\t\t\t\t\t...blockBindingsBySource.get( source ),\n\t\t\t\t\t\t[ attributeName ]: {\n\t\t\t\t\t\t\targs: binding.args,\n\t\t\t\t\t\t\tnewValue,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t\tdelete keptAttributes[ attributeName ];\n\t\t\t\t}\n\n\t\t\t\tif ( blockBindingsBySource.size ) {\n\t\t\t\t\tfor ( const [\n\t\t\t\t\t\tsource,\n\t\t\t\t\t\tbindings,\n\t\t\t\t\t] of blockBindingsBySource ) {\n\t\t\t\t\t\tsource.setValues( {\n\t\t\t\t\t\t\tselect: registry.select,\n\t\t\t\t\t\t\tdispatch: registry.dispatch,\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tbindings,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst hasParentPattern = !! context[ 'pattern/overrides' ];\n\n\t\t\t\tif (\n\t\t\t\t\t// Don't update non-connected attributes if the block is using pattern overrides\n\t\t\t\t\t// and the editing is happening while overriding the pattern (not editing the original).\n\t\t\t\t\t! ( hasPatternOverrides && hasParentPattern ) &&\n\t\t\t\t\tObject.keys( keptAttributes ).length\n\t\t\t\t) {\n\t\t\t\t\t// Don't update caption and href until they are supported.\n\t\t\t\t\tif ( hasPatternOverrides ) {\n\t\t\t\t\t\tdelete keptAttributes.caption;\n\t\t\t\t\t\tdelete keptAttributes.href;\n\t\t\t\t\t}\n\t\t\t\t\tsetAttributes( keptAttributes );\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\t\t[\n\t\t\tblockBindings,\n\t\t\tclientId,\n\t\t\tcontext,\n\t\t\thasPatternOverrides,\n\t\t\tsetAttributes,\n\t\t\tregisteredSources,\n\t\t\tname,\n\t\t\tregistry,\n\t\t]\n\t);\n\n\tif ( ! blockType ) {\n\t\treturn null;\n\t}\n\n\tif ( blockType.apiVersion > 1 ) {\n\t\treturn (\n\t\t\t<EditWithFilters\n\t\t\t\t{ ...props }\n\t\t\t\tattributes={ computedAttributes }\n\t\t\t\tcontext={ context }\n\t\t\t\tsetAttributes={ setBoundAttributes }\n\t\t\t/>\n\t\t);\n\t}\n\n\t// Generate a class name for the block's editable form.\n\tconst generatedClassName = hasBlockSupport( blockType, 'className', true )\n\t\t? getBlockDefaultClassName( name )\n\t\t: null;\n\tconst className = clsx(\n\t\tgeneratedClassName,\n\t\tattributes?.className,\n\t\tprops.className\n\t);\n\n\treturn (\n\t\t<EditWithFilters\n\t\t\t{ ...props }\n\t\t\tattributes={ computedAttributes }\n\t\t\tclassName={ className }\n\t\t\tcontext={ context }\n\t\t\tsetAttributes={ setBoundAttributes }\n\t\t/>\n\t);\n};\n\nexport default EditWithGeneratedProps;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_clsx","_interopRequireDefault","require","_blocks","_components","_data","_element","_blockContext","_isUrlLike","_blockBindings","_store","_lockUnlock","_jsxRuntime","DEFAULT_BLOCK_CONTEXT","Edit","props","name","blockType","getBlockType","Component","edit","save","jsx","EditWithFilters","withFilters","EMPTY_ARRAY","EditWithGeneratedProps","clientId","attributes","setAttributes","registry","useRegistry","blockContext","useContext","BlockContext","registeredSources","useSelect","select","unlock","blocksStore","getAllBlockBindingsSources","bindableAttributes","__experimentalBlockBindingsSupportedAttributes","blockEditorStore","getSettings","blockBindings","context","hasPatternOverrides","useMemo","computedContext","usesContext","Object","fromEntries","entries","filter","key","includes","metadata","bindings","values","forEach","binding","source","replacePatternOverridesDefaultBinding","hasPatternOverridesDefaultBinding","computedAttributes","attributesFromSources","blockBindingsBySource","Map","attributeName","sourceName","args","sourceArgs","set","get","size","getValues","keys","attr","label","value","isURLLike","setBoundAttributes","useCallback","nextAttributes","batch","keptAttributes","newValue","setValues","dispatch","hasParentPattern","length","caption","href","apiVersion","generatedClassName","hasBlockSupport","getBlockDefaultClassName","className","clsx","_default","exports","default"],"sources":["@wordpress/block-editor/src/components/block-edit/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetBlockDefaultClassName,\n\tgetBlockType,\n\thasBlockSupport,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport { useRegistry, useSelect } from '@wordpress/data';\nimport { useCallback, useContext, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockContext from '../block-context';\nimport isURLLike from '../link-control/is-url-like';\nimport {\n\thasPatternOverridesDefaultBinding,\n\treplacePatternOverridesDefaultBinding,\n} from '../../utils/block-bindings';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Default value used for blocks which do not define their own context needs,\n * used to guarantee that a block's `context` prop will always be an object. It\n * is assigned as a constant since it is always expected to be an empty object,\n * and in order to avoid unnecessary React reconciliations of a changing object.\n *\n * @type {{}}\n */\nconst DEFAULT_BLOCK_CONTEXT = {};\n\nconst Edit = ( props ) => {\n\tconst { name } = props;\n\tconst blockType = getBlockType( name );\n\n\tif ( ! blockType ) {\n\t\treturn null;\n\t}\n\n\t// `edit` and `save` are functions or components describing the markup\n\t// with which a block is displayed. If `blockType` is valid, assign\n\t// them preferentially as the render value for the block.\n\tconst Component = blockType.edit || blockType.save;\n\n\treturn <Component { ...props } />;\n};\n\nconst EditWithFilters = withFilters( 'editor.BlockEdit' )( Edit );\n\nconst EMPTY_ARRAY = [];\n\nconst EditWithGeneratedProps = ( props ) => {\n\tconst { name, clientId, attributes, setAttributes } = props;\n\tconst registry = useRegistry();\n\tconst blockType = getBlockType( name );\n\tconst blockContext = useContext( BlockContext );\n\tconst registeredSources = useSelect(\n\t\t( select ) =>\n\t\t\tunlock( select( blocksStore ) ).getAllBlockBindingsSources(),\n\t\t[]\n\t);\n\tconst bindableAttributes = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __experimentalBlockBindingsSupportedAttributes } =\n\t\t\t\tselect( blockEditorStore ).getSettings();\n\t\t\treturn (\n\t\t\t\t__experimentalBlockBindingsSupportedAttributes?.[ name ] ||\n\t\t\t\tEMPTY_ARRAY\n\t\t\t);\n\t\t},\n\t\t[ name ]\n\t);\n\n\tconst { blockBindings, context, hasPatternOverrides } = useMemo( () => {\n\t\t// Assign context values using the block type's declared context needs.\n\t\tconst computedContext = blockType?.usesContext\n\t\t\t? Object.fromEntries(\n\t\t\t\t\tObject.entries( blockContext ).filter( ( [ key ] ) =>\n\t\t\t\t\t\tblockType.usesContext.includes( key )\n\t\t\t\t\t)\n\t\t\t )\n\t\t\t: DEFAULT_BLOCK_CONTEXT;\n\t\t// Add context requested by Block Bindings sources.\n\t\tif ( attributes?.metadata?.bindings ) {\n\t\t\tObject.values( attributes?.metadata?.bindings || {} ).forEach(\n\t\t\t\t( binding ) => {\n\t\t\t\t\tregisteredSources[ binding?.source ]?.usesContext?.forEach(\n\t\t\t\t\t\t( key ) => {\n\t\t\t\t\t\t\tcomputedContext[ key ] = blockContext[ key ];\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\treturn {\n\t\t\tblockBindings: replacePatternOverridesDefaultBinding(\n\t\t\t\tattributes?.metadata?.bindings,\n\t\t\t\tbindableAttributes\n\t\t\t),\n\t\t\tcontext: computedContext,\n\t\t\thasPatternOverrides: hasPatternOverridesDefaultBinding(\n\t\t\t\tattributes?.metadata?.bindings\n\t\t\t),\n\t\t};\n\t}, [\n\t\tname,\n\t\tblockType?.usesContext,\n\t\tblockContext,\n\t\tattributes?.metadata?.bindings,\n\t\tregisteredSources,\n\t] );\n\n\tconst computedAttributes = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! blockBindings ) {\n\t\t\t\treturn attributes;\n\t\t\t}\n\n\t\t\tconst attributesFromSources = {};\n\t\t\tconst blockBindingsBySource = new Map();\n\n\t\t\tfor ( const [ attributeName, binding ] of Object.entries(\n\t\t\t\tblockBindings\n\t\t\t) ) {\n\t\t\t\tconst { source: sourceName, args: sourceArgs } = binding;\n\t\t\t\tconst source = registeredSources[ sourceName ];\n\t\t\t\tif (\n\t\t\t\t\t! source ||\n\t\t\t\t\t! bindableAttributes.includes( attributeName )\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tblockBindingsBySource.set( source, {\n\t\t\t\t\t...blockBindingsBySource.get( source ),\n\t\t\t\t\t[ attributeName ]: {\n\t\t\t\t\t\targs: sourceArgs,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( blockBindingsBySource.size ) {\n\t\t\t\tfor ( const [ source, bindings ] of blockBindingsBySource ) {\n\t\t\t\t\t// Get values in batch if the source supports it.\n\t\t\t\t\tlet values = {};\n\t\t\t\t\tif ( ! source.getValues ) {\n\t\t\t\t\t\tObject.keys( bindings ).forEach( ( attr ) => {\n\t\t\t\t\t\t\t// Default to the the source label when `getValues` doesn't exist.\n\t\t\t\t\t\t\tvalues[ attr ] = source.label;\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalues = source.getValues( {\n\t\t\t\t\t\t\tselect,\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tbindings,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t\tfor ( const [ attributeName, value ] of Object.entries(\n\t\t\t\t\t\tvalues\n\t\t\t\t\t) ) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tattributeName === 'url' &&\n\t\t\t\t\t\t\t( ! value || ! isURLLike( value ) )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// Return null if value is not a valid URL.\n\t\t\t\t\t\t\tattributesFromSources[ attributeName ] = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tattributesFromSources[ attributeName ] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...attributes,\n\t\t\t\t...attributesFromSources,\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tattributes,\n\t\t\tbindableAttributes,\n\t\t\tblockBindings,\n\t\t\tclientId,\n\t\t\tcontext,\n\t\t\tname,\n\t\t\tregisteredSources,\n\t\t]\n\t);\n\n\tconst setBoundAttributes = useCallback(\n\t\t( nextAttributes ) => {\n\t\t\tif ( ! blockBindings ) {\n\t\t\t\tsetAttributes( nextAttributes );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tregistry.batch( () => {\n\t\t\t\tconst keptAttributes = { ...nextAttributes };\n\t\t\t\tconst blockBindingsBySource = new Map();\n\n\t\t\t\t// Loop only over the updated attributes to avoid modifying the bound ones that haven't changed.\n\t\t\t\tfor ( const [ attributeName, newValue ] of Object.entries(\n\t\t\t\t\tkeptAttributes\n\t\t\t\t) ) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t! blockBindings[ attributeName ] ||\n\t\t\t\t\t\t! bindableAttributes.includes( attributeName )\n\t\t\t\t\t) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst binding = blockBindings[ attributeName ];\n\t\t\t\t\tconst source = registeredSources[ binding?.source ];\n\t\t\t\t\tif ( ! source?.setValues ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tblockBindingsBySource.set( source, {\n\t\t\t\t\t\t...blockBindingsBySource.get( source ),\n\t\t\t\t\t\t[ attributeName ]: {\n\t\t\t\t\t\t\targs: binding.args,\n\t\t\t\t\t\t\tnewValue,\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t\t\tdelete keptAttributes[ attributeName ];\n\t\t\t\t}\n\n\t\t\t\tif ( blockBindingsBySource.size ) {\n\t\t\t\t\tfor ( const [\n\t\t\t\t\t\tsource,\n\t\t\t\t\t\tbindings,\n\t\t\t\t\t] of blockBindingsBySource ) {\n\t\t\t\t\t\tsource.setValues( {\n\t\t\t\t\t\t\tselect: registry.select,\n\t\t\t\t\t\t\tdispatch: registry.dispatch,\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tbindings,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst hasParentPattern = !! context[ 'pattern/overrides' ];\n\n\t\t\t\tif (\n\t\t\t\t\t// Don't update non-connected attributes if the block is using pattern overrides\n\t\t\t\t\t// and the editing is happening while overriding the pattern (not editing the original).\n\t\t\t\t\t! ( hasPatternOverrides && hasParentPattern ) &&\n\t\t\t\t\tObject.keys( keptAttributes ).length\n\t\t\t\t) {\n\t\t\t\t\t// Don't update caption and href until they are supported.\n\t\t\t\t\tif ( hasPatternOverrides ) {\n\t\t\t\t\t\tdelete keptAttributes.caption;\n\t\t\t\t\t\tdelete keptAttributes.href;\n\t\t\t\t\t}\n\t\t\t\t\tsetAttributes( keptAttributes );\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\t\t[\n\t\t\tbindableAttributes,\n\t\t\tblockBindings,\n\t\t\tclientId,\n\t\t\tcontext,\n\t\t\thasPatternOverrides,\n\t\t\tsetAttributes,\n\t\t\tregisteredSources,\n\t\t\tname,\n\t\t\tregistry,\n\t\t]\n\t);\n\n\tif ( ! blockType ) {\n\t\treturn null;\n\t}\n\n\tif ( blockType.apiVersion > 1 ) {\n\t\treturn (\n\t\t\t<EditWithFilters\n\t\t\t\t{ ...props }\n\t\t\t\tattributes={ computedAttributes }\n\t\t\t\tcontext={ context }\n\t\t\t\tsetAttributes={ setBoundAttributes }\n\t\t\t/>\n\t\t);\n\t}\n\n\t// Generate a class name for the block's editable form.\n\tconst generatedClassName = hasBlockSupport( blockType, 'className', true )\n\t\t? getBlockDefaultClassName( name )\n\t\t: null;\n\tconst className = clsx(\n\t\tgeneratedClassName,\n\t\tattributes?.className,\n\t\tprops.className\n\t);\n\n\treturn (\n\t\t<EditWithFilters\n\t\t\t{ ...props }\n\t\t\tattributes={ computedAttributes }\n\t\t\tclassName={ className }\n\t\t\tcontext={ context }\n\t\t\tsetAttributes={ setBoundAttributes }\n\t\t/>\n\t);\n};\n\nexport default EditWithGeneratedProps;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -502,7 +502,8 @@ function BlockListBlockProvider(props) {
|
|
|
502
502
|
isReusable: (0, _blocks.isReusableBlock)(blockType),
|
|
503
503
|
className: hasLightBlockWrapper ? attributes.className : undefined,
|
|
504
504
|
defaultClassName: hasLightBlockWrapper ? (0, _blocks.getBlockDefaultClassName)(blockName) : undefined,
|
|
505
|
-
blockTitle: blockType?.title
|
|
505
|
+
blockTitle: blockType?.title,
|
|
506
|
+
isBlockHidden: attributes?.metadata?.blockVisibility === false
|
|
506
507
|
};
|
|
507
508
|
|
|
508
509
|
// When in preview mode, we can avoid a lot of selection and
|
|
@@ -510,6 +511,9 @@ function BlockListBlockProvider(props) {
|
|
|
510
511
|
if (isPreviewMode) {
|
|
511
512
|
return previewContext;
|
|
512
513
|
}
|
|
514
|
+
const {
|
|
515
|
+
isBlockHidden: _isBlockHidden
|
|
516
|
+
} = (0, _lockUnlock.unlock)(select(_store.store));
|
|
513
517
|
const _isSelected = isBlockSelected(clientId);
|
|
514
518
|
const canRemove = canRemoveBlock(clientId);
|
|
515
519
|
const canMove = canMoveBlock(clientId);
|
|
@@ -549,7 +553,8 @@ function BlockListBlockProvider(props) {
|
|
|
549
553
|
hasChildSelected: isAncestorOfSelectedBlock,
|
|
550
554
|
isEditingDisabled: blockEditingMode === 'disabled',
|
|
551
555
|
hasEditableOutline: blockEditingMode !== 'disabled' && getBlockEditingMode(rootClientId) === 'disabled',
|
|
552
|
-
originalBlockClientId: isInvalid ? blocksWithSameName[0] : false
|
|
556
|
+
originalBlockClientId: isInvalid ? blocksWithSameName[0] : false,
|
|
557
|
+
isBlockHidden: _isBlockHidden(clientId)
|
|
553
558
|
};
|
|
554
559
|
}, [clientId, rootClientId]);
|
|
555
560
|
const {
|
|
@@ -588,7 +593,8 @@ function BlockListBlockProvider(props) {
|
|
|
588
593
|
hasEditableOutline,
|
|
589
594
|
className,
|
|
590
595
|
defaultClassName,
|
|
591
|
-
originalBlockClientId
|
|
596
|
+
originalBlockClientId,
|
|
597
|
+
isBlockHidden
|
|
592
598
|
} = selectedProps;
|
|
593
599
|
|
|
594
600
|
// Users of the editor.BlockListBlock filter used to be able to
|
|
@@ -635,8 +641,12 @@ function BlockListBlockProvider(props) {
|
|
|
635
641
|
mayDisplayParentControls,
|
|
636
642
|
originalBlockClientId,
|
|
637
643
|
themeSupportsLayout,
|
|
638
|
-
canMove
|
|
644
|
+
canMove,
|
|
645
|
+
isBlockHidden
|
|
639
646
|
};
|
|
647
|
+
if (isBlockHidden && !isSelected && !isMultiSelected && !hasChildSelected) {
|
|
648
|
+
return null;
|
|
649
|
+
}
|
|
640
650
|
|
|
641
651
|
// Here we separate between the props passed to BlockListBlock and any other
|
|
642
652
|
// information we selected for internal use. BlockListBlock is a filtered
|