@wordpress/block-editor 14.18.0 → 14.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/background-image-control/index.js +21 -11
  3. package/build/components/background-image-control/index.js.map +1 -1
  4. package/build/components/html-element-control/index.js +1 -1
  5. package/build/components/html-element-control/index.js.map +1 -1
  6. package/build/components/html-element-control/messages.js +2 -0
  7. package/build/components/html-element-control/messages.js.map +1 -1
  8. package/build/components/image-size-control/index.js +5 -6
  9. package/build/components/image-size-control/index.js.map +1 -1
  10. package/build/components/media-placeholder/index.js +3 -4
  11. package/build/components/media-placeholder/index.js.map +1 -1
  12. package/build/layouts/flex.js +5 -1
  13. package/build/layouts/flex.js.map +1 -1
  14. package/build/store/selectors.js +3 -3
  15. package/build/store/selectors.js.map +1 -1
  16. package/build-module/components/background-image-control/index.js +21 -11
  17. package/build-module/components/background-image-control/index.js.map +1 -1
  18. package/build-module/components/html-element-control/index.js +1 -1
  19. package/build-module/components/html-element-control/index.js.map +1 -1
  20. package/build-module/components/html-element-control/messages.js +2 -0
  21. package/build-module/components/html-element-control/messages.js.map +1 -1
  22. package/build-module/components/image-size-control/index.js +6 -7
  23. package/build-module/components/image-size-control/index.js.map +1 -1
  24. package/build-module/components/media-placeholder/index.js +3 -4
  25. package/build-module/components/media-placeholder/index.js.map +1 -1
  26. package/build-module/layouts/flex.js +5 -1
  27. package/build-module/layouts/flex.js.map +1 -1
  28. package/build-module/store/selectors.js +3 -3
  29. package/build-module/store/selectors.js.map +1 -1
  30. package/build-style/content-rtl.css +130 -9
  31. package/build-style/content.css +130 -9
  32. package/build-style/default-editor-styles-rtl.css +130 -9
  33. package/build-style/default-editor-styles.css +130 -9
  34. package/build-style/style-rtl.css +134 -19
  35. package/build-style/style.css +134 -19
  36. package/package.json +34 -34
  37. package/src/components/background-image-control/index.js +21 -13
  38. package/src/components/block-inspector/style.scss +4 -2
  39. package/src/components/html-element-control/index.js +1 -1
  40. package/src/components/html-element-control/messages.js +6 -0
  41. package/src/components/image-size-control/index.js +6 -7
  42. package/src/components/media-placeholder/index.js +4 -4
  43. package/src/components/rich-text/README.md +1 -1
  44. package/src/components/url-popover/stories/index.story.js +9 -1
  45. package/src/layouts/flex.js +7 -2
  46. package/src/store/selectors.js +3 -3
  47. package/src/style.scss +0 -1
  48. package/src/components/image-size-control/style.scss +0 -8
@@ -198,7 +198,8 @@ function BackgroundImageControls({
198
198
  onRemoveImage = noop,
199
199
  onResetImage = noop,
200
200
  displayInPanel,
201
- defaultValues
201
+ defaultValues,
202
+ containerRef
202
203
  }) {
203
204
  const [isUploading, setIsUploading] = useState(false);
204
205
  const {
@@ -211,7 +212,6 @@ function BackgroundImageControls({
211
212
  } = style?.background?.backgroundImage || {
212
213
  ...inheritedValue?.background?.backgroundImage
213
214
  };
214
- const replaceContainerRef = useRef();
215
215
  const {
216
216
  createErrorNotice
217
217
  } = useDispatch(noticesStore);
@@ -259,6 +259,8 @@ function BackgroundImageControls({
259
259
  backgroundSize: sizeValue
260
260
  }));
261
261
  setIsUploading(false);
262
+ // Close the dropdown and focus the toggle button.
263
+ closeAndFocus();
262
264
  };
263
265
 
264
266
  // Drag and drop callback, restricting image to one.
@@ -275,12 +277,17 @@ function BackgroundImageControls({
275
277
  };
276
278
  const hasValue = hasBackgroundImageValue(style);
277
279
  const closeAndFocus = () => {
278
- const [toggleButton] = focus.tabbable.find(replaceContainerRef.current);
279
- // Focus the toggle button and close the dropdown menu.
280
- // This ensures similar behaviour as to selecting an image, where the dropdown is
281
- // closed and focus is redirected to the dropdown toggle button.
282
- toggleButton?.focus();
283
- toggleButton?.click();
280
+ // Use requestAnimationFrame to ensure DOM updates are complete
281
+ window.requestAnimationFrame(() => {
282
+ const [toggleButton] = focus.tabbable.find(containerRef?.current);
283
+ if (!toggleButton) {
284
+ return;
285
+ }
286
+ // Focus the toggle button and close the dropdown menu.
287
+ // This ensures similar behaviour as to selecting an image, where the dropdown is
288
+ // closed and focus is redirected to the dropdown toggle button.
289
+ toggleButton.focus();
290
+ });
284
291
  };
285
292
  const onRemove = () => onChange(setImmutably(style, ['background'], {
286
293
  backgroundImage: 'none'
@@ -288,7 +295,6 @@ function BackgroundImageControls({
288
295
  const canRemove = !hasValue && hasBackgroundImageValue(inheritedValue);
289
296
  const imgLabel = title || getFilename(url) || __('Add background image');
290
297
  return /*#__PURE__*/_jsxs("div", {
291
- ref: replaceContainerRef,
292
298
  className: "block-editor-global-styles-background-panel__image-tools-panel-item",
293
299
  children: [isUploading && /*#__PURE__*/_jsx(LoadingSpinner, {}), /*#__PURE__*/_jsx(MediaReplaceFlow, {
294
300
  mediaId: id,
@@ -516,7 +522,9 @@ export default function BackgroundImagePanel({
516
522
  const imageValue = value?.background?.backgroundImage || inheritedValue?.background?.backgroundImage;
517
523
  const shouldShowBackgroundImageControls = hasImageValue && 'none' !== imageValue && (settings?.background?.backgroundSize || settings?.background?.backgroundPosition || settings?.background?.backgroundRepeat);
518
524
  const [isDropDownOpen, setIsDropDownOpen] = useState(false);
525
+ const containerRef = useRef();
519
526
  return /*#__PURE__*/_jsx("div", {
527
+ ref: containerRef,
520
528
  className: clsx('block-editor-global-styles-background-panel__inspector-media-replace-container', {
521
529
  'is-open': isDropDownOpen
522
530
  }),
@@ -539,7 +547,8 @@ export default function BackgroundImagePanel({
539
547
  resetBackground();
540
548
  },
541
549
  onRemoveImage: () => setIsDropDownOpen(false),
542
- defaultValues: defaultValues
550
+ defaultValues: defaultValues,
551
+ containerRef: containerRef
543
552
  }), /*#__PURE__*/_jsx(BackgroundSizeControls, {
544
553
  onChange: onChange,
545
554
  style: value,
@@ -556,7 +565,8 @@ export default function BackgroundImagePanel({
556
565
  setIsDropDownOpen(false);
557
566
  resetBackground();
558
567
  },
559
- onRemoveImage: () => setIsDropDownOpen(false)
568
+ onRemoveImage: () => setIsDropDownOpen(false),
569
+ containerRef: containerRef
560
570
  })
561
571
  });
562
572
  }
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","ToggleControl","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalUnitControl","UnitControl","__experimentalVStack","VStack","DropZone","FlexItem","FocalPointPicker","MenuItem","VisuallyHidden","__experimentalHStack","HStack","__experimentalTruncate","Truncate","Dropdown","Placeholder","Spinner","__experimentalDropdownContentWrapper","DropdownContentWrapper","Button","__","_x","sprintf","store","noticesStore","getFilename","useRef","useState","useEffect","useMemo","useDispatch","useSelect","focus","isBlobURL","getResolvedValue","hasBackgroundImageValue","setImmutably","MediaReplaceFlow","blockEditorStore","globalStylesDataKey","globalStylesLinksDataKey","jsx","_jsx","jsxs","_jsxs","IMAGE_BACKGROUND_TYPE","BACKGROUND_POPOVER_PROPS","placement","offset","shift","className","noop","backgroundSizeHelpText","value","undefined","coordsToBackgroundPosition","isNaN","x","y","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreviewItem","as","imgUrl","toggleProps","filename","label","onToggleCallback","isOpen","restToggleProps","renderPreviewContent","justify","children","style","backgroundImage","flexGrow","numberOfLines","__next40pxDefaultSize","BackgroundControlsPanel","url","onToggle","hasImageValue","imgLabel","popoverProps","renderToggle","onClick","renderContent","paddingSize","LoadingSpinner","BackgroundImageControls","onChange","inheritedValue","onRemoveImage","onResetImage","displayInPanel","defaultValues","isUploading","setIsUploading","getSettings","id","title","background","replaceContainerRef","createErrorNotice","onUploadError","message","type","resetBackgroundImage","onSelectMedia","media","media_type","sizeValue","backgroundSize","positionValue","backgroundPosition","source","onFilesDrop","filesList","mediaUpload","allowedTypes","onFileChange","image","onError","multiple","hasValue","closeAndFocus","toggleButton","tabbable","find","current","click","onRemove","canRemove","ref","mediaId","mediaURL","accept","onSelect","name","props","onReset","BackgroundSizeControls","repeatValue","backgroundRepeat","imageValue","isUploadedImage","attachmentValue","backgroundAttachment","currentValueForToggle","includes","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","toggleScrollWithPage","backgroundPositionValue","spacing","__nextHasNoMarginBottom","checked","size","isBlock","help","__unstableInputWidth","min","placeholder","disabled","BackgroundImagePanel","settings","globalStyles","_links","select","_settings","resolvedInheritedValue","resolvedValues","Object","entries","forEach","key","backgroundValue","styles","resetBackground","shouldShowBackgroundImageControls","isDropDownOpen","setIsDropDownOpen"],"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\tclassName,\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\n\t\t\t__next40pxDefaultSize\n\t\t\tclassName={ className }\n\t\t\t{ ...restToggleProps }\n\t\t\taria-expanded={ isOpen }\n\t\t>\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} ) {\n\tconst [ isUploading, setIsUploading ] = useState( false );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\n\tconst { id, title, url } = style?.background?.backgroundImage || {\n\t\t...inheritedValue?.background?.backgroundImage,\n\t};\n\tconst replaceContainerRef = useRef();\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetIsUploading( false );\n\t};\n\n\tconst resetBackgroundImage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundImage' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\n\tconst onSelectMedia = ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tresetBackgroundImage();\n\t\t\tsetIsUploading( false );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetIsUploading( true );\n\t\t\treturn;\n\t\t}\n\n\t\t// For media selections originated from a file upload.\n\t\tif (\n\t\t\t( media.media_type &&\n\t\t\t\tmedia.media_type !== IMAGE_BACKGROUND_TYPE ) ||\n\t\t\t( ! media.media_type &&\n\t\t\t\tmedia.type &&\n\t\t\t\tmedia.type !== IMAGE_BACKGROUND_TYPE )\n\t\t) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only images can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst sizeValue =\n\t\t\tstyle?.background?.backgroundSize || defaultValues?.backgroundSize;\n\t\tconst positionValue = style?.background?.backgroundPosition;\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundImage: {\n\t\t\t\t\turl: media.url,\n\t\t\t\t\tid: media.id,\n\t\t\t\t\tsource: 'file',\n\t\t\t\t\ttitle: media.title || undefined,\n\t\t\t\t},\n\t\t\t\tbackgroundPosition:\n\t\t\t\t\t/*\n\t\t\t\t\t * A background image uploaded and set in the editor receives a default background position of '50% 0',\n\t\t\t\t\t * when the background image size is the equivalent of \"Tile\".\n\t\t\t\t\t * This is to increase the chance that the image's focus point is visible.\n\t\t\t\t\t * This is in-editor only to assist with the user experience.\n\t\t\t\t\t */\n\t\t\t\t\t! positionValue && ( 'auto' === sizeValue || ! sizeValue )\n\t\t\t\t\t\t? '50% 0'\n\t\t\t\t\t\t: positionValue,\n\t\t\t\tbackgroundSize: sizeValue,\n\t\t\t} )\n\t\t);\n\t\tsetIsUploading( false );\n\t};\n\n\t// Drag and drop callback, restricting image to one.\n\tconst onFilesDrop = ( filesList ) => {\n\t\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\tconst [ toggleButton ] = focus.tabbable.find(\n\t\t\treplaceContainerRef.current\n\t\t);\n\t\t// Focus the toggle button and close the dropdown menu.\n\t\t// This ensures similar behaviour as to selecting an image, where the dropdown is\n\t\t// closed and focus is redirected to the dropdown toggle button.\n\t\ttoggleButton?.focus();\n\t\ttoggleButton?.click();\n\t};\n\n\tconst onRemove = () =>\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\tbackgroundImage: 'none',\n\t\t\t} )\n\t\t);\n\tconst canRemove = ! hasValue && hasBackgroundImageValue( inheritedValue );\n\tconst imgLabel =\n\t\ttitle || getFilename( url ) || __( 'Add background image' );\n\n\treturn (\n\t\t<div\n\t\t\tref={ replaceContainerRef }\n\t\t\tclassName=\"block-editor-global-styles-background-panel__image-tools-panel-item\"\n\t\t>\n\t\t\t{ isUploading && <LoadingSpinner /> }\n\t\t\t<MediaReplaceFlow\n\t\t\t\tmediaId={ id }\n\t\t\t\tmediaURL={ url }\n\t\t\t\tallowedTypes={ [ IMAGE_BACKGROUND_TYPE ] }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\tpopoverProps={ {\n\t\t\t\t\tclassName: clsx( {\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__media-replace-popover':\n\t\t\t\t\t\t\tdisplayInPanel,\n\t\t\t\t\t} ),\n\t\t\t\t} }\n\t\t\t\tname={\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__image-preview\"\n\t\t\t\t\t\timgUrl={ url }\n\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\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\n\treturn (\n\t\t<div\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/>\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/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","ToggleControl","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalUnitControl","UnitControl","__experimentalVStack","VStack","DropZone","FlexItem","FocalPointPicker","MenuItem","VisuallyHidden","__experimentalHStack","HStack","__experimentalTruncate","Truncate","Dropdown","Placeholder","Spinner","__experimentalDropdownContentWrapper","DropdownContentWrapper","Button","__","_x","sprintf","store","noticesStore","getFilename","useRef","useState","useEffect","useMemo","useDispatch","useSelect","focus","isBlobURL","getResolvedValue","hasBackgroundImageValue","setImmutably","MediaReplaceFlow","blockEditorStore","globalStylesDataKey","globalStylesLinksDataKey","jsx","_jsx","jsxs","_jsxs","IMAGE_BACKGROUND_TYPE","BACKGROUND_POPOVER_PROPS","placement","offset","shift","className","noop","backgroundSizeHelpText","value","undefined","coordsToBackgroundPosition","isNaN","x","y","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreviewItem","as","imgUrl","toggleProps","filename","label","onToggleCallback","isOpen","restToggleProps","renderPreviewContent","justify","children","style","backgroundImage","flexGrow","numberOfLines","__next40pxDefaultSize","BackgroundControlsPanel","url","onToggle","hasImageValue","imgLabel","popoverProps","renderToggle","onClick","renderContent","paddingSize","LoadingSpinner","BackgroundImageControls","onChange","inheritedValue","onRemoveImage","onResetImage","displayInPanel","defaultValues","containerRef","isUploading","setIsUploading","getSettings","id","title","background","createErrorNotice","onUploadError","message","type","resetBackgroundImage","onSelectMedia","media","media_type","sizeValue","backgroundSize","positionValue","backgroundPosition","source","closeAndFocus","onFilesDrop","filesList","mediaUpload","allowedTypes","onFileChange","image","onError","multiple","hasValue","window","requestAnimationFrame","toggleButton","tabbable","find","current","onRemove","canRemove","mediaId","mediaURL","accept","onSelect","name","props","onReset","BackgroundSizeControls","repeatValue","backgroundRepeat","imageValue","isUploadedImage","attachmentValue","backgroundAttachment","currentValueForToggle","includes","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","toggleScrollWithPage","backgroundPositionValue","spacing","__nextHasNoMarginBottom","checked","size","isBlock","help","__unstableInputWidth","min","placeholder","disabled","BackgroundImagePanel","settings","globalStyles","_links","select","_settings","resolvedInheritedValue","resolvedValues","Object","entries","forEach","key","backgroundValue","styles","resetBackground","shouldShowBackgroundImageControls","isDropDownOpen","setIsDropDownOpen","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\tclassName,\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\n\t\t\t__next40pxDefaultSize\n\t\t\tclassName={ className }\n\t\t\t{ ...restToggleProps }\n\t\t\taria-expanded={ isOpen }\n\t\t>\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\tclassName=\"block-editor-global-styles-background-panel__image-preview\"\n\t\t\t\t\t\timgUrl={ url }\n\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\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":[]}
@@ -18,7 +18,7 @@ import { htmlElementMessages } from './messages';
18
18
  * @param {Object} props Component props.
19
19
  * @param {string} props.tagName The current HTML tag name.
20
20
  * @param {Function} props.onChange Function to call when the tag is changed.
21
- * @param {string} props.clientId The client ID of the current block.
21
+ * @param {string} props.clientId Optional. The client ID of the block. Used to check for existing <main> elements.
22
22
  * @param {Array} props.options SelectControl options (optional).
23
23
  *
24
24
  * @return {Component} The HTML element select control with validation.
@@ -1 +1 @@
1
- {"version":3,"names":["__","sprintf","SelectControl","Notice","__experimentalVStack","VStack","useSelect","store","blockEditorStore","htmlElementMessages","jsx","_jsx","jsxs","_jsxs","HTMLElementControl","tagName","onChange","clientId","options","label","value","checkForMainTag","some","option","hasMainElementElsewhere","select","getClientIdsWithDescendants","getBlockAttributes","id","modifiedOptions","map","disabled","spacing","className","children","__nextHasNoMarginBottom","__next40pxDefaultSize","help","status","isDismissible"],"sources":["@wordpress/block-editor/src/components/html-element-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tSelectControl,\n\tNotice,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { htmlElementMessages } from './messages';\n\n/**\n * Renders a SelectControl for choosing HTML elements with validation\n * to prevent duplicate <main> elements.\n *\n * @param {Object} props Component props.\n * @param {string} props.tagName The current HTML tag name.\n * @param {Function} props.onChange Function to call when the tag is changed.\n * @param {string} props.clientId The client ID of the current block.\n * @param {Array} props.options SelectControl options (optional).\n *\n * @return {Component} The HTML element select control with validation.\n */\nexport default function HTMLElementControl( {\n\ttagName,\n\tonChange,\n\tclientId,\n\toptions = [\n\t\t{ label: __( 'Default (<div>)' ), value: 'div' },\n\t\t{ label: '<header>', value: 'header' },\n\t\t{ label: '<main>', value: 'main' },\n\t\t{ label: '<section>', value: 'section' },\n\t\t{ label: '<article>', value: 'article' },\n\t\t{ label: '<aside>', value: 'aside' },\n\t\t{ label: '<footer>', value: 'footer' },\n\t],\n} ) {\n\tconst checkForMainTag =\n\t\t!! clientId && options.some( ( option ) => option.value === 'main' );\n\n\tconst hasMainElementElsewhere = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! checkForMainTag ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst { getClientIdsWithDescendants, getBlockAttributes } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\treturn getClientIdsWithDescendants().some( ( id ) => {\n\t\t\t\t// Skip the current block.\n\t\t\t\tif ( id === clientId ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn getBlockAttributes( id )?.tagName === 'main';\n\t\t\t} );\n\t\t},\n\t\t[ clientId, checkForMainTag ]\n\t);\n\n\t// Create a modified options array that disables the main option if needed.\n\tconst modifiedOptions = options.map( ( option ) => {\n\t\tif (\n\t\t\toption.value === 'main' &&\n\t\t\thasMainElementElsewhere &&\n\t\t\ttagName !== 'main'\n\t\t) {\n\t\t\treturn {\n\t\t\t\t...option,\n\t\t\t\tdisabled: true,\n\t\t\t\tlabel: sprintf(\n\t\t\t\t\t/* translators: %s: HTML element name */\n\t\t\t\t\t__( '%s (Already in use)' ),\n\t\t\t\t\toption.label\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\t\treturn option;\n\t} );\n\n\treturn (\n\t\t<VStack spacing={ 2 } className=\"block-editor-html-element-control\">\n\t\t\t<SelectControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tlabel={ __( 'HTML element' ) }\n\t\t\t\toptions={ modifiedOptions }\n\t\t\t\tvalue={ tagName }\n\t\t\t\tonChange={ onChange }\n\t\t\t\thelp={ htmlElementMessages[ tagName ] }\n\t\t\t/>\n\n\t\t\t{ tagName === 'main' && hasMainElementElsewhere && (\n\t\t\t\t<Notice status=\"warning\" isDismissible={ false }>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Multiple <main> elements detected. The duplicate may be in your content or template. This is not valid HTML and may cause accessibility issues. Please change this HTML element.'\n\t\t\t\t\t) }\n\t\t\t\t</Notice>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__","sprintf","SelectControl","Notice","__experimentalVStack","VStack","useSelect","store","blockEditorStore","htmlElementMessages","jsx","_jsx","jsxs","_jsxs","HTMLElementControl","tagName","onChange","clientId","options","label","value","checkForMainTag","some","option","hasMainElementElsewhere","select","getClientIdsWithDescendants","getBlockAttributes","id","modifiedOptions","map","disabled","spacing","className","children","__nextHasNoMarginBottom","__next40pxDefaultSize","help","status","isDismissible"],"sources":["@wordpress/block-editor/src/components/html-element-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tSelectControl,\n\tNotice,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { htmlElementMessages } from './messages';\n\n/**\n * Renders a SelectControl for choosing HTML elements with validation\n * to prevent duplicate <main> elements.\n *\n * @param {Object} props Component props.\n * @param {string} props.tagName The current HTML tag name.\n * @param {Function} props.onChange Function to call when the tag is changed.\n * @param {string} props.clientId Optional. The client ID of the block. Used to check for existing <main> elements.\n * @param {Array} props.options SelectControl options (optional).\n *\n * @return {Component} The HTML element select control with validation.\n */\nexport default function HTMLElementControl( {\n\ttagName,\n\tonChange,\n\tclientId,\n\toptions = [\n\t\t{ label: __( 'Default (<div>)' ), value: 'div' },\n\t\t{ label: '<header>', value: 'header' },\n\t\t{ label: '<main>', value: 'main' },\n\t\t{ label: '<section>', value: 'section' },\n\t\t{ label: '<article>', value: 'article' },\n\t\t{ label: '<aside>', value: 'aside' },\n\t\t{ label: '<footer>', value: 'footer' },\n\t],\n} ) {\n\tconst checkForMainTag =\n\t\t!! clientId && options.some( ( option ) => option.value === 'main' );\n\n\tconst hasMainElementElsewhere = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! checkForMainTag ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst { getClientIdsWithDescendants, getBlockAttributes } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\treturn getClientIdsWithDescendants().some( ( id ) => {\n\t\t\t\t// Skip the current block.\n\t\t\t\tif ( id === clientId ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn getBlockAttributes( id )?.tagName === 'main';\n\t\t\t} );\n\t\t},\n\t\t[ clientId, checkForMainTag ]\n\t);\n\n\t// Create a modified options array that disables the main option if needed.\n\tconst modifiedOptions = options.map( ( option ) => {\n\t\tif (\n\t\t\toption.value === 'main' &&\n\t\t\thasMainElementElsewhere &&\n\t\t\ttagName !== 'main'\n\t\t) {\n\t\t\treturn {\n\t\t\t\t...option,\n\t\t\t\tdisabled: true,\n\t\t\t\tlabel: sprintf(\n\t\t\t\t\t/* translators: %s: HTML element name */\n\t\t\t\t\t__( '%s (Already in use)' ),\n\t\t\t\t\toption.label\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\t\treturn option;\n\t} );\n\n\treturn (\n\t\t<VStack spacing={ 2 } className=\"block-editor-html-element-control\">\n\t\t\t<SelectControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tlabel={ __( 'HTML element' ) }\n\t\t\t\toptions={ modifiedOptions }\n\t\t\t\tvalue={ tagName }\n\t\t\t\tonChange={ onChange }\n\t\t\t\thelp={ htmlElementMessages[ tagName ] }\n\t\t\t/>\n\n\t\t\t{ tagName === 'main' && hasMainElementElsewhere && (\n\t\t\t\t<Notice status=\"warning\" isDismissible={ false }>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Multiple <main> elements detected. The duplicate may be in your content or template. This is not valid HTML and may cause accessibility issues. Please change this HTML element.'\n\t\t\t\t\t) }\n\t\t\t\t</Notice>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -7,8 +7,10 @@ import { __ } from '@wordpress/i18n';
7
7
  * Messages providing helpful descriptions for HTML elements.
8
8
  */
9
9
  export const htmlElementMessages = {
10
+ a: __('The <a> element should be used for links that navigate to a different page or to a different section within the same page.'),
10
11
  article: __('The <article> element should represent a self-contained, syndicatable portion of the document.'),
11
12
  aside: __("The <aside> element should represent a portion of a document whose content is only indirectly related to the document's main content."),
13
+ button: __('The <button> element should be used for interactive controls that perform an action on the current page, such as opening a modal or toggling content visibility.'),
12
14
  div: __('The <div> element should only be used if the block is a design element with no semantic meaning.'),
13
15
  footer: __('The <footer> element should represent a footer for its nearest sectioning element (e.g.: <section>, <article>, <main> etc.).'),
14
16
  header: __('The <header> element should represent introductory content, typically a group of introductory or navigational aids.'),
@@ -1 +1 @@
1
- {"version":3,"names":["__","htmlElementMessages","article","aside","div","footer","header","main","nav","section"],"sources":["@wordpress/block-editor/src/components/html-element-control/messages.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Messages providing helpful descriptions for HTML elements.\n */\nexport const htmlElementMessages = {\n\tarticle: __(\n\t\t'The <article> element should represent a self-contained, syndicatable portion of the document.'\n\t),\n\taside: __(\n\t\t\"The <aside> element should represent a portion of a document whose content is only indirectly related to the document's main content.\"\n\t),\n\tdiv: __(\n\t\t'The <div> element should only be used if the block is a design element with no semantic meaning.'\n\t),\n\tfooter: __(\n\t\t'The <footer> element should represent a footer for its nearest sectioning element (e.g.: <section>, <article>, <main> etc.).'\n\t),\n\theader: __(\n\t\t'The <header> element should represent introductory content, typically a group of introductory or navigational aids.'\n\t),\n\tmain: __(\n\t\t'The <main> element should be used for the primary content of your document only.'\n\t),\n\tnav: __(\n\t\t'The <nav> element should be used to identify groups of links that are intended to be used for website or page content navigation.'\n\t),\n\tsection: __(\n\t\t\"The <section> element should represent a standalone portion of the document that can't be better represented by another element.\"\n\t),\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,OAAO,MAAMC,mBAAmB,GAAG;EAClCC,OAAO,EAAEF,EAAE,CACV,gGACD,CAAC;EACDG,KAAK,EAAEH,EAAE,CACR,uIACD,CAAC;EACDI,GAAG,EAAEJ,EAAE,CACN,kGACD,CAAC;EACDK,MAAM,EAAEL,EAAE,CACT,8HACD,CAAC;EACDM,MAAM,EAAEN,EAAE,CACT,qHACD,CAAC;EACDO,IAAI,EAAEP,EAAE,CACP,kFACD,CAAC;EACDQ,GAAG,EAAER,EAAE,CACN,mIACD,CAAC;EACDS,OAAO,EAAET,EAAE,CACV,kIACD;AACD,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["__","htmlElementMessages","a","article","aside","button","div","footer","header","main","nav","section"],"sources":["@wordpress/block-editor/src/components/html-element-control/messages.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Messages providing helpful descriptions for HTML elements.\n */\nexport const htmlElementMessages = {\n\ta: __(\n\t\t'The <a> element should be used for links that navigate to a different page or to a different section within the same page.'\n\t),\n\tarticle: __(\n\t\t'The <article> element should represent a self-contained, syndicatable portion of the document.'\n\t),\n\taside: __(\n\t\t\"The <aside> element should represent a portion of a document whose content is only indirectly related to the document's main content.\"\n\t),\n\tbutton: __(\n\t\t'The <button> element should be used for interactive controls that perform an action on the current page, such as opening a modal or toggling content visibility.'\n\t),\n\tdiv: __(\n\t\t'The <div> element should only be used if the block is a design element with no semantic meaning.'\n\t),\n\tfooter: __(\n\t\t'The <footer> element should represent a footer for its nearest sectioning element (e.g.: <section>, <article>, <main> etc.).'\n\t),\n\theader: __(\n\t\t'The <header> element should represent introductory content, typically a group of introductory or navigational aids.'\n\t),\n\tmain: __(\n\t\t'The <main> element should be used for the primary content of your document only.'\n\t),\n\tnav: __(\n\t\t'The <nav> element should be used to identify groups of links that are intended to be used for website or page content navigation.'\n\t),\n\tsection: __(\n\t\t\"The <section> element should represent a standalone portion of the document that can't be better represented by another element.\"\n\t),\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,OAAO,MAAMC,mBAAmB,GAAG;EAClCC,CAAC,EAAEF,EAAE,CACJ,4HACD,CAAC;EACDG,OAAO,EAAEH,EAAE,CACV,gGACD,CAAC;EACDI,KAAK,EAAEJ,EAAE,CACR,uIACD,CAAC;EACDK,MAAM,EAAEL,EAAE,CACT,kKACD,CAAC;EACDM,GAAG,EAAEN,EAAE,CACN,kGACD,CAAC;EACDO,MAAM,EAAEP,EAAE,CACT,8HACD,CAAC;EACDQ,MAAM,EAAER,EAAE,CACT,qHACD,CAAC;EACDS,IAAI,EAAET,EAAE,CACP,kFACD,CAAC;EACDU,GAAG,EAAEV,EAAE,CACN,mIACD,CAAC;EACDW,OAAO,EAAEX,EAAE,CACV,kIACD;AACD,CAAC","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { SelectControl, __experimentalNumberControl as NumberControl, __experimentalHStack as HStack, __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOption as ToggleGroupControlOption } from '@wordpress/components';
4
+ import { SelectControl, __experimentalNumberControl as NumberControl, __experimentalHStack as HStack, __experimentalVStack as VStack, __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOption as ToggleGroupControlOption } from '@wordpress/components';
5
5
  import { __, sprintf } from '@wordpress/i18n';
6
6
 
7
7
  /**
@@ -76,7 +76,9 @@ export default function ImageSizeControl({
76
76
  } = getScaledWidthAndHeight(scale, imageWidth, imageHeight);
77
77
  return currentWidth === scaledWidth && currentHeight === scaledHeight;
78
78
  });
79
- return /*#__PURE__*/_jsxs(_Fragment, {
79
+ return /*#__PURE__*/_jsxs(VStack, {
80
+ className: "block-editor-image-size-control",
81
+ spacing: "4",
80
82
  children: [imageSizeOptions && imageSizeOptions.length > 0 && /*#__PURE__*/_jsx(SelectControl, {
81
83
  __nextHasNoMarginBottom: true,
82
84
  label: __('Resolution'),
@@ -85,20 +87,17 @@ export default function ImageSizeControl({
85
87
  onChange: onChangeImage,
86
88
  help: imageSizeHelp,
87
89
  size: "__unstable-large"
88
- }), isResizable && /*#__PURE__*/_jsxs("div", {
89
- className: "block-editor-image-size-control",
90
+ }), isResizable && /*#__PURE__*/_jsxs(_Fragment, {
90
91
  children: [/*#__PURE__*/_jsxs(HStack, {
91
92
  align: "baseline",
92
- spacing: "3",
93
+ spacing: "4",
93
94
  children: [/*#__PURE__*/_jsx(NumberControl, {
94
- className: "block-editor-image-size-control__width",
95
95
  label: __('Width'),
96
96
  value: currentWidth,
97
97
  min: 1,
98
98
  onChange: value => updateDimension('width', value),
99
99
  size: "__unstable-large"
100
100
  }), /*#__PURE__*/_jsx(NumberControl, {
101
- className: "block-editor-image-size-control__height",
102
101
  label: __('Height'),
103
102
  value: currentHeight,
104
103
  min: 1,
@@ -1 +1 @@
1
- {"version":3,"names":["SelectControl","__experimentalNumberControl","NumberControl","__experimentalHStack","HStack","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__","sprintf","useDimensionHandler","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","IMAGE_SIZE_PRESETS","noop","getScaledWidthAndHeight","scale","imageWidth","imageHeight","scaledWidth","Math","round","scaledHeight","ImageSizeControl","imageSizeHelp","imageSizeOptions","isResizable","slug","width","height","onChange","onChangeImage","currentHeight","currentWidth","updateDimension","updateDimensions","handleUpdateDimensions","undefined","selectedValue","find","children","length","__nextHasNoMarginBottom","label","value","options","help","size","className","align","spacing","min","hideLabelFromVision","isBlock","__next40pxDefaultSize","map"],"sources":["@wordpress/block-editor/src/components/image-size-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tSelectControl,\n\t__experimentalNumberControl as NumberControl,\n\t__experimentalHStack as HStack,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useDimensionHandler from './use-dimension-handler';\n\nconst IMAGE_SIZE_PRESETS = [ 25, 50, 75, 100 ];\nconst noop = () => {};\n\n/**\n * Get scaled width and height for the given scale.\n *\n * @param {number} scale The scale to get the scaled width and height for.\n * @param {number} imageWidth The image width.\n * @param {number} imageHeight The image height.\n *\n * @return {Object} The scaled width and height.\n */\nfunction getScaledWidthAndHeight( scale, imageWidth, imageHeight ) {\n\tconst scaledWidth = Math.round( imageWidth * ( scale / 100 ) );\n\tconst scaledHeight = Math.round( imageHeight * ( scale / 100 ) );\n\n\treturn {\n\t\tscaledWidth,\n\t\tscaledHeight,\n\t};\n}\n\nexport default function ImageSizeControl( {\n\timageSizeHelp,\n\timageWidth,\n\timageHeight,\n\timageSizeOptions = [],\n\tisResizable = true,\n\tslug,\n\twidth,\n\theight,\n\tonChange,\n\tonChangeImage = noop,\n} ) {\n\tconst { currentHeight, currentWidth, updateDimension, updateDimensions } =\n\t\tuseDimensionHandler( height, width, imageHeight, imageWidth, onChange );\n\n\t/**\n\t * Updates the dimensions for the given scale.\n\t * Handler for toggle group control change.\n\t *\n\t * @param {number} scale The scale to update the dimensions for.\n\t */\n\tconst handleUpdateDimensions = ( scale ) => {\n\t\tif ( undefined === scale ) {\n\t\t\tupdateDimensions();\n\t\t\treturn;\n\t\t}\n\n\t\tconst { scaledWidth, scaledHeight } = getScaledWidthAndHeight(\n\t\t\tscale,\n\t\t\timageWidth,\n\t\t\timageHeight\n\t\t);\n\n\t\tupdateDimensions( scaledHeight, scaledWidth );\n\t};\n\n\t/**\n\t * Add the stored image preset value to toggle group control.\n\t */\n\tconst selectedValue = IMAGE_SIZE_PRESETS.find( ( scale ) => {\n\t\tconst { scaledWidth, scaledHeight } = getScaledWidthAndHeight(\n\t\t\tscale,\n\t\t\timageWidth,\n\t\t\timageHeight\n\t\t);\n\n\t\treturn currentWidth === scaledWidth && currentHeight === scaledHeight;\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t{ imageSizeOptions && imageSizeOptions.length > 0 && (\n\t\t\t\t<SelectControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Resolution' ) }\n\t\t\t\t\tvalue={ slug }\n\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\tonChange={ onChangeImage }\n\t\t\t\t\thelp={ imageSizeHelp }\n\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isResizable && (\n\t\t\t\t<div className=\"block-editor-image-size-control\">\n\t\t\t\t\t<HStack align=\"baseline\" spacing=\"3\">\n\t\t\t\t\t\t<NumberControl\n\t\t\t\t\t\t\tclassName=\"block-editor-image-size-control__width\"\n\t\t\t\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\t\t\t\tvalue={ currentWidth }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tupdateDimension( 'width', value )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<NumberControl\n\t\t\t\t\t\t\tclassName=\"block-editor-image-size-control__height\"\n\t\t\t\t\t\t\tlabel={ __( 'Height' ) }\n\t\t\t\t\t\t\tvalue={ currentHeight }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tupdateDimension( 'height', value )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</HStack>\n\t\t\t\t\t<ToggleGroupControl\n\t\t\t\t\t\tlabel={ __( 'Image size presets' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\tonChange={ handleUpdateDimensions }\n\t\t\t\t\t\tvalue={ selectedValue }\n\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t>\n\t\t\t\t\t\t{ IMAGE_SIZE_PRESETS.map( ( scale ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\t\tkey={ scale }\n\t\t\t\t\t\t\t\t\tvalue={ scale }\n\t\t\t\t\t\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: Percentage value. */\n\t\t\t\t\t\t\t\t\t\t__( '%d%%' ),\n\t\t\t\t\t\t\t\t\t\tscale\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["SelectControl","__experimentalNumberControl","NumberControl","__experimentalHStack","HStack","__experimentalVStack","VStack","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__","sprintf","useDimensionHandler","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","IMAGE_SIZE_PRESETS","noop","getScaledWidthAndHeight","scale","imageWidth","imageHeight","scaledWidth","Math","round","scaledHeight","ImageSizeControl","imageSizeHelp","imageSizeOptions","isResizable","slug","width","height","onChange","onChangeImage","currentHeight","currentWidth","updateDimension","updateDimensions","handleUpdateDimensions","undefined","selectedValue","find","className","spacing","children","length","__nextHasNoMarginBottom","label","value","options","help","size","align","min","hideLabelFromVision","isBlock","__next40pxDefaultSize","map"],"sources":["@wordpress/block-editor/src/components/image-size-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tSelectControl,\n\t__experimentalNumberControl as NumberControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useDimensionHandler from './use-dimension-handler';\n\nconst IMAGE_SIZE_PRESETS = [ 25, 50, 75, 100 ];\nconst noop = () => {};\n\n/**\n * Get scaled width and height for the given scale.\n *\n * @param {number} scale The scale to get the scaled width and height for.\n * @param {number} imageWidth The image width.\n * @param {number} imageHeight The image height.\n *\n * @return {Object} The scaled width and height.\n */\nfunction getScaledWidthAndHeight( scale, imageWidth, imageHeight ) {\n\tconst scaledWidth = Math.round( imageWidth * ( scale / 100 ) );\n\tconst scaledHeight = Math.round( imageHeight * ( scale / 100 ) );\n\n\treturn {\n\t\tscaledWidth,\n\t\tscaledHeight,\n\t};\n}\n\nexport default function ImageSizeControl( {\n\timageSizeHelp,\n\timageWidth,\n\timageHeight,\n\timageSizeOptions = [],\n\tisResizable = true,\n\tslug,\n\twidth,\n\theight,\n\tonChange,\n\tonChangeImage = noop,\n} ) {\n\tconst { currentHeight, currentWidth, updateDimension, updateDimensions } =\n\t\tuseDimensionHandler( height, width, imageHeight, imageWidth, onChange );\n\n\t/**\n\t * Updates the dimensions for the given scale.\n\t * Handler for toggle group control change.\n\t *\n\t * @param {number} scale The scale to update the dimensions for.\n\t */\n\tconst handleUpdateDimensions = ( scale ) => {\n\t\tif ( undefined === scale ) {\n\t\t\tupdateDimensions();\n\t\t\treturn;\n\t\t}\n\n\t\tconst { scaledWidth, scaledHeight } = getScaledWidthAndHeight(\n\t\t\tscale,\n\t\t\timageWidth,\n\t\t\timageHeight\n\t\t);\n\n\t\tupdateDimensions( scaledHeight, scaledWidth );\n\t};\n\n\t/**\n\t * Add the stored image preset value to toggle group control.\n\t */\n\tconst selectedValue = IMAGE_SIZE_PRESETS.find( ( scale ) => {\n\t\tconst { scaledWidth, scaledHeight } = getScaledWidthAndHeight(\n\t\t\tscale,\n\t\t\timageWidth,\n\t\t\timageHeight\n\t\t);\n\n\t\treturn currentWidth === scaledWidth && currentHeight === scaledHeight;\n\t} );\n\n\treturn (\n\t\t<VStack className=\"block-editor-image-size-control\" spacing=\"4\">\n\t\t\t{ imageSizeOptions && imageSizeOptions.length > 0 && (\n\t\t\t\t<SelectControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Resolution' ) }\n\t\t\t\t\tvalue={ slug }\n\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\tonChange={ onChangeImage }\n\t\t\t\t\thelp={ imageSizeHelp }\n\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isResizable && (\n\t\t\t\t<>\n\t\t\t\t\t<HStack align=\"baseline\" spacing=\"4\">\n\t\t\t\t\t\t<NumberControl\n\t\t\t\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\t\t\t\tvalue={ currentWidth }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tupdateDimension( 'width', value )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<NumberControl\n\t\t\t\t\t\t\tlabel={ __( 'Height' ) }\n\t\t\t\t\t\t\tvalue={ currentHeight }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tupdateDimension( 'height', value )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</HStack>\n\t\t\t\t\t<ToggleGroupControl\n\t\t\t\t\t\tlabel={ __( 'Image size presets' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\tonChange={ handleUpdateDimensions }\n\t\t\t\t\t\tvalue={ selectedValue }\n\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t>\n\t\t\t\t\t\t{ IMAGE_SIZE_PRESETS.map( ( scale ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\t\tkey={ scale }\n\t\t\t\t\t\t\t\t\tvalue={ scale }\n\t\t\t\t\t\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: Percentage value. */\n\t\t\t\t\t\t\t\t\t\t__( '%d%%' ),\n\t\t\t\t\t\t\t\t\t\tscale\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -242,11 +242,10 @@ export function MediaPlaceholder({
242
242
  })).catch(() => resolve(block.attributes.url));
243
243
  });
244
244
  })).catch(err => onError(err));
245
- if (multiple) {
246
- onSelect(uploadedMediaList);
247
- } else {
248
- onSelect(uploadedMediaList[0]);
245
+ if (!uploadedMediaList?.length) {
246
+ return;
249
247
  }
248
+ onSelect(multiple ? uploadedMediaList : uploadedMediaList[0]);
250
249
  }
251
250
  const onUpload = event => {
252
251
  onFilesUpload(event.target.files);