@wordpress/block-library 9.0.3 → 9.0.4

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 (47) hide show
  1. package/build/image/image.js +3 -2
  2. package/build/image/image.js.map +1 -1
  3. package/build-module/image/image.js +3 -2
  4. package/build-module/image/image.js.map +1 -1
  5. package/build-style/audio/style-rtl.css +1 -1
  6. package/build-style/audio/style.css +1 -1
  7. package/build-style/audio/theme-rtl.css +2 -2
  8. package/build-style/audio/theme.css +2 -2
  9. package/build-style/editor-rtl.css +0 -12
  10. package/build-style/editor.css +0 -12
  11. package/build-style/embed/style-rtl.css +1 -1
  12. package/build-style/embed/style.css +1 -1
  13. package/build-style/embed/theme-rtl.css +2 -2
  14. package/build-style/embed/theme.css +2 -2
  15. package/build-style/image/editor-rtl.css +0 -12
  16. package/build-style/image/editor.css +0 -12
  17. package/build-style/image/style-rtl.css +1 -1
  18. package/build-style/image/style.css +1 -1
  19. package/build-style/navigation/style-rtl.css +1 -0
  20. package/build-style/navigation/style.css +1 -0
  21. package/build-style/reset-rtl.css +1 -5
  22. package/build-style/reset.css +1 -5
  23. package/build-style/style-rtl.css +5 -4
  24. package/build-style/style.css +5 -4
  25. package/build-style/table/theme-rtl.css +2 -2
  26. package/build-style/table/theme.css +2 -2
  27. package/build-style/theme-rtl.css +8 -8
  28. package/build-style/theme.css +8 -8
  29. package/build-style/video/style-rtl.css +1 -1
  30. package/build-style/video/style.css +1 -1
  31. package/build-style/video/theme-rtl.css +2 -2
  32. package/build-style/video/theme.css +2 -2
  33. package/package.json +12 -12
  34. package/src/audio/style.scss +1 -1
  35. package/src/audio/theme.scss +1 -1
  36. package/src/embed/style.scss +1 -1
  37. package/src/embed/theme.scss +1 -1
  38. package/src/image/editor.scss +0 -13
  39. package/src/image/image.js +9 -2
  40. package/src/image/style.scss +1 -1
  41. package/src/media-text/index.php +68 -18
  42. package/src/navigation/index.php +5 -3
  43. package/src/navigation/style.scss +1 -0
  44. package/src/reset.scss +11 -12
  45. package/src/table/theme.scss +1 -1
  46. package/src/video/style.scss +1 -1
  47. package/src/video/theme.scss +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["isBlobURL","ExternalLink","ResizableBox","Spinner","TextareaControl","TextControl","ToolbarButton","ToolbarGroup","Dropdown","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","__experimentalUseCustomUnits","useCustomUnits","useViewportMatch","useSelect","useDispatch","BlockControls","InspectorControls","__experimentalImageURLInputUI","ImageURLInputUI","MediaReplaceFlow","store","blockEditorStore","useSettings","__experimentalImageEditor","ImageEditor","__experimentalUseBorderProps","useBorderProps","__experimentalGetShadowClassesAndStyles","getShadowClassesAndStyles","privateApis","blockEditorPrivateApis","useEffect","useMemo","useState","useRef","__","_x","sprintf","isRTL","DOWN","getFilename","switchToBlockType","blocksStore","crop","overlayText","upload","noticesStore","coreStore","unlock","createUpgradedEmbedBlock","isExternalImage","Caption","TOOLSPANEL_DROPDOWNMENU_PROPS","MIN_SIZE","ALLOWED_MEDIA_TYPES","evalAspectRatio","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DimensionsTool","ResolutionTool","scaleOptions","value","label","help","ImageWrapper","href","children","onClick","event","preventDefault","style","pointerEvents","cursor","display","Image","temporaryURL","attributes","setAttributes","isSingleSelected","insertBlocksAfter","onReplace","onSelectImage","onSelectURL","onUploadError","context","clientId","blockEditingMode","parentLayoutType","url","alt","align","id","rel","linkClass","linkDestination","title","width","height","aspectRatio","scale","linkTarget","sizeSlug","lightbox","metadata","numericWidth","parseInt","undefined","numericHeight","imageRef","allowResize","getBlock","getSettings","image","select","getMedia","canInsertCover","imageEditing","imageSizes","maxWidth","getBlockRootClientId","canInsertBlockType","rootClientId","settings","replaceBlocks","toggleSelection","createErrorNotice","createSuccessNotice","isLargeViewport","isWideAligned","includes","loadedNaturalWidth","loadedNaturalHeight","setLoadedNaturalSize","isEditingImage","setIsEditingImage","externalBlob","setExternalBlob","hasNonContentControls","isContentOnlyMode","isResizable","imageSizeOptions","filter","slug","media_details","sizes","source_url","map","name","mediaUpload","window","fetch","then","response","blob","catch","naturalWidth","naturalHeight","current","complete","onResizeStart","onResizeStop","onImageError","embedBlock","onSetHref","props","onSetLightbox","enable","lightboxSetting","enabled","resetLightbox","allowEditing","onSetTitle","updateAlt","newAlt","updateImage","newSizeSlug","newUrl","uploadExternal","filesList","onFileChange","img","type","allowedTypes","onError","message","canEditImage","allowCrop","switchToCover","dimensionsUnitsOptions","availableUnits","showLightboxSetting","lightboxChecked","dimensionsControl","onChange","newWidth","newHeight","newScale","newAspectRatio","defaultScale","defaultAspectRatio","unitsOptions","resetAll","sizeControls","dropdownMenuProps","lockUrlControls","lockHrefControls","lockAltControls","lockAltControlsMessage","lockTitleControls","lockTitleControlsMessage","lockCaption","getBlockBindingsSource","getBlockParentsByBlockName","urlBinding","altBinding","titleBinding","bindings","hasParentPattern","length","urlBindingSource","source","altBindingSource","titleBindingSource","canUserEditValue","args","showUrlInput","showCoverControls","showBlockControls","controls","group","onChangeUrl","mediaUrl","mediaLink","link","lightboxEnabled","icon","mediaId","mediaURL","accept","onSelect","popoverProps","position","renderToggle","isOpen","onToggle","onKeyDown","keyCode","renderContent","className","disabled","__nextHasNoMarginBottom","isShownByDefault","hasValue","onDeselect","readOnly","options","__next40pxDefaultSize","filename","defaultedAlt","borderProps","shadowProps","isRounded","src","onLoad","target","ref","objectFit","onSaveImage","imageAttributes","onFinishEditing","numericRatio","customRatio","naturalRatio","ratio","currentWidth","currentHeight","minWidth","minHeight","maxWidthBuffer","showRightHandle","showLeftHandle","size","showHandle","maxHeight","lockAspectRatio","top","right","bottom","left","direction","elt","offsetWidth","String","resizeRatio","isSelected","showToolbarButton"],"sources":["@wordpress/block-library/src/image/image.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { isBlobURL } from '@wordpress/blob';\nimport {\n\tExternalLink,\n\tResizableBox,\n\tSpinner,\n\tTextareaControl,\n\tTextControl,\n\tToolbarButton,\n\tToolbarGroup,\n\tDropdown,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalUseCustomUnits as useCustomUnits,\n} from '@wordpress/components';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tBlockControls,\n\tInspectorControls,\n\t__experimentalImageURLInputUI as ImageURLInputUI,\n\tMediaReplaceFlow,\n\tstore as blockEditorStore,\n\tuseSettings,\n\t__experimentalImageEditor as ImageEditor,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { useEffect, useMemo, useState, useRef } from '@wordpress/element';\nimport { __, _x, sprintf, isRTL } from '@wordpress/i18n';\nimport { DOWN } from '@wordpress/keycodes';\nimport { getFilename } from '@wordpress/url';\nimport { switchToBlockType, store as blocksStore } from '@wordpress/blocks';\nimport { crop, overlayText, upload } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\nimport { createUpgradedEmbedBlock } from '../embed/util';\nimport { isExternalImage } from './edit';\nimport { Caption } from '../utils/caption';\n\n/**\n * Module constants\n */\nimport { TOOLSPANEL_DROPDOWNMENU_PROPS } from '../utils/constants';\nimport { MIN_SIZE, ALLOWED_MEDIA_TYPES } from './constants';\nimport { evalAspectRatio } from './utils';\n\nconst { DimensionsTool, ResolutionTool } = unlock( blockEditorPrivateApis );\n\nconst scaleOptions = [\n\t{\n\t\tvalue: 'cover',\n\t\tlabel: _x( 'Cover', 'Scale option for dimensions control' ),\n\t\thelp: __( 'Image covers the space evenly.' ),\n\t},\n\t{\n\t\tvalue: 'contain',\n\t\tlabel: _x( 'Contain', 'Scale option for dimensions control' ),\n\t\thelp: __( 'Image is contained without distortion.' ),\n\t},\n];\n\n// If the image has a href, wrap in an <a /> tag to trigger any inherited link element styles.\nconst ImageWrapper = ( { href, children } ) => {\n\tif ( ! href ) {\n\t\treturn children;\n\t}\n\treturn (\n\t\t<a\n\t\t\thref={ href }\n\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\taria-disabled\n\t\t\tstyle={ {\n\t\t\t\t// When the Image block is linked,\n\t\t\t\t// it's wrapped with a disabled <a /> tag.\n\t\t\t\t// Restore cursor style so it doesn't appear 'clickable'\n\t\t\t\t// and remove pointer events. Safari needs the display property.\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\tcursor: 'default',\n\t\t\t\tdisplay: 'inline',\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</a>\n\t);\n};\n\nexport default function Image( {\n\ttemporaryURL,\n\tattributes,\n\tsetAttributes,\n\tisSingleSelected,\n\tinsertBlocksAfter,\n\tonReplace,\n\tonSelectImage,\n\tonSelectURL,\n\tonUploadError,\n\tcontext,\n\tclientId,\n\tblockEditingMode,\n\tparentLayoutType,\n} ) {\n\tconst {\n\t\turl = '',\n\t\talt,\n\t\talign,\n\t\tid,\n\t\thref,\n\t\trel,\n\t\tlinkClass,\n\t\tlinkDestination,\n\t\ttitle,\n\t\twidth,\n\t\theight,\n\t\taspectRatio,\n\t\tscale,\n\t\tlinkTarget,\n\t\tsizeSlug,\n\t\tlightbox,\n\t\tmetadata,\n\t} = attributes;\n\n\t// The only supported unit is px, so we can parseInt to strip the px here.\n\tconst numericWidth = width ? parseInt( width, 10 ) : undefined;\n\tconst numericHeight = height ? parseInt( height, 10 ) : undefined;\n\n\tconst imageRef = useRef();\n\tconst { allowResize = true } = context;\n\tconst { getBlock, getSettings } = useSelect( blockEditorStore );\n\n\tconst image = useSelect(\n\t\t( select ) =>\n\t\t\tid && isSingleSelected\n\t\t\t\t? select( coreStore ).getMedia( id, { context: 'view' } )\n\t\t\t\t: null,\n\t\t[ id, isSingleSelected ]\n\t);\n\n\tconst { canInsertCover, imageEditing, imageSizes, maxWidth } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockRootClientId, canInsertBlockType } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\tconst settings = getSettings();\n\n\t\t\treturn {\n\t\t\t\timageEditing: settings.imageEditing,\n\t\t\t\timageSizes: settings.imageSizes,\n\t\t\t\tmaxWidth: settings.maxWidth,\n\t\t\t\tcanInsertCover: canInsertBlockType(\n\t\t\t\t\t'core/cover',\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { replaceBlocks, toggleSelection } = useDispatch( blockEditorStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst isWideAligned = [ 'wide', 'full' ].includes( align );\n\tconst [\n\t\t{ loadedNaturalWidth, loadedNaturalHeight },\n\t\tsetLoadedNaturalSize,\n\t] = useState( {} );\n\tconst [ isEditingImage, setIsEditingImage ] = useState( false );\n\tconst [ externalBlob, setExternalBlob ] = useState();\n\tconst hasNonContentControls = blockEditingMode === 'default';\n\tconst isContentOnlyMode = blockEditingMode === 'contentOnly';\n\tconst isResizable =\n\t\tallowResize &&\n\t\thasNonContentControls &&\n\t\t! isWideAligned &&\n\t\tisLargeViewport &&\n\t\tparentLayoutType !== 'grid';\n\tconst imageSizeOptions = imageSizes\n\t\t.filter(\n\t\t\t( { slug } ) => image?.media_details?.sizes?.[ slug ]?.source_url\n\t\t)\n\t\t.map( ( { name, slug } ) => ( { value: slug, label: name } ) );\n\n\t// If an image is externally hosted, try to fetch the image data. This may\n\t// fail if the image host doesn't allow CORS with the domain. If it works,\n\t// we can enable a button in the toolbar to upload the image.\n\tuseEffect( () => {\n\t\tif (\n\t\t\t! isExternalImage( id, url ) ||\n\t\t\t! isSingleSelected ||\n\t\t\t! getSettings().mediaUpload\n\t\t) {\n\t\t\tsetExternalBlob();\n\t\t\treturn;\n\t\t}\n\n\t\tif ( externalBlob ) {\n\t\t\treturn;\n\t\t}\n\n\t\twindow\n\t\t\t// Avoid cache, which seems to help avoid CORS problems.\n\t\t\t.fetch( url.includes( '?' ) ? url : url + '?' )\n\t\t\t.then( ( response ) => response.blob() )\n\t\t\t.then( ( blob ) => setExternalBlob( blob ) )\n\t\t\t// Do nothing, cannot upload.\n\t\t\t.catch( () => {} );\n\t}, [ id, url, isSingleSelected, externalBlob ] );\n\n\t// Get naturalWidth and naturalHeight from image ref, and fall back to loaded natural\n\t// width and height. This resolves an issue in Safari where the loaded natural\n\t// width and height is otherwise lost when switching between alignments.\n\t// See: https://github.com/WordPress/gutenberg/pull/37210.\n\tconst { naturalWidth, naturalHeight } = useMemo( () => {\n\t\treturn {\n\t\t\tnaturalWidth:\n\t\t\t\timageRef.current?.naturalWidth ||\n\t\t\t\tloadedNaturalWidth ||\n\t\t\t\tundefined,\n\t\t\tnaturalHeight:\n\t\t\t\timageRef.current?.naturalHeight ||\n\t\t\t\tloadedNaturalHeight ||\n\t\t\t\tundefined,\n\t\t};\n\t}, [\n\t\tloadedNaturalWidth,\n\t\tloadedNaturalHeight,\n\t\timageRef.current?.complete,\n\t] );\n\n\tfunction onResizeStart() {\n\t\ttoggleSelection( false );\n\t}\n\n\tfunction onResizeStop() {\n\t\ttoggleSelection( true );\n\t}\n\n\tfunction onImageError() {\n\t\t// Check if there's an embed block that handles this URL, e.g., instagram URL.\n\t\t// See: https://github.com/WordPress/gutenberg/pull/11472\n\t\tconst embedBlock = createUpgradedEmbedBlock( { attributes: { url } } );\n\n\t\tif ( undefined !== embedBlock ) {\n\t\t\tonReplace( embedBlock );\n\t\t}\n\t}\n\n\tfunction onSetHref( props ) {\n\t\tsetAttributes( props );\n\t}\n\n\tfunction onSetLightbox( enable ) {\n\t\tif ( enable && ! lightboxSetting?.enabled ) {\n\t\t\tsetAttributes( {\n\t\t\t\tlightbox: { enabled: true },\n\t\t\t} );\n\t\t} else if ( ! enable && lightboxSetting?.enabled ) {\n\t\t\tsetAttributes( {\n\t\t\t\tlightbox: { enabled: false },\n\t\t\t} );\n\t\t} else {\n\t\t\tsetAttributes( {\n\t\t\t\tlightbox: undefined,\n\t\t\t} );\n\t\t}\n\t}\n\n\tfunction resetLightbox() {\n\t\t// When deleting a link from an image while lightbox settings\n\t\t// are enabled by default, we should disable the lightbox,\n\t\t// otherwise the resulting UX looks like a mistake.\n\t\t// See https://github.com/WordPress/gutenberg/pull/59890/files#r1532286123.\n\t\tif ( lightboxSetting?.enabled && lightboxSetting?.allowEditing ) {\n\t\t\tsetAttributes( {\n\t\t\t\tlightbox: { enabled: false },\n\t\t\t} );\n\t\t} else {\n\t\t\tsetAttributes( {\n\t\t\t\tlightbox: undefined,\n\t\t\t} );\n\t\t}\n\t}\n\n\tfunction onSetTitle( value ) {\n\t\t// This is the HTML title attribute, separate from the media object\n\t\t// title.\n\t\tsetAttributes( { title: value } );\n\t}\n\n\tfunction updateAlt( newAlt ) {\n\t\tsetAttributes( { alt: newAlt } );\n\t}\n\n\tfunction updateImage( newSizeSlug ) {\n\t\tconst newUrl = image?.media_details?.sizes?.[ newSizeSlug ]?.source_url;\n\t\tif ( ! newUrl ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\turl: newUrl,\n\t\t\tsizeSlug: newSizeSlug,\n\t\t} );\n\t}\n\n\tfunction uploadExternal() {\n\t\tconst { mediaUpload } = getSettings();\n\t\tif ( ! mediaUpload ) {\n\t\t\treturn;\n\t\t}\n\t\tmediaUpload( {\n\t\t\tfilesList: [ externalBlob ],\n\t\t\tonFileChange( [ img ] ) {\n\t\t\t\tonSelectImage( img );\n\n\t\t\t\tif ( isBlobURL( img.url ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsetExternalBlob();\n\t\t\t\tcreateSuccessNotice( __( 'Image uploaded.' ), {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t},\n\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\tonError( message ) {\n\t\t\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\t\t},\n\t\t} );\n\t}\n\n\tuseEffect( () => {\n\t\tif ( ! isSingleSelected ) {\n\t\t\tsetIsEditingImage( false );\n\t\t}\n\t}, [ isSingleSelected ] );\n\n\tconst canEditImage = id && naturalWidth && naturalHeight && imageEditing;\n\tconst allowCrop = isSingleSelected && canEditImage && ! isEditingImage;\n\n\tfunction switchToCover() {\n\t\treplaceBlocks(\n\t\t\tclientId,\n\t\t\tswitchToBlockType( getBlock( clientId ), 'core/cover' )\n\t\t);\n\t}\n\n\t// TODO: Can allow more units after figuring out how they should interact\n\t// with the ResizableBox and ImageEditor components. Calculations later on\n\t// for those components are currently assuming px units.\n\tconst dimensionsUnitsOptions = useCustomUnits( {\n\t\tavailableUnits: [ 'px' ],\n\t} );\n\n\tconst [ lightboxSetting ] = useSettings( 'lightbox' );\n\n\tconst showLightboxSetting =\n\t\t// If a block-level override is set, we should give users the option to\n\t\t// remove that override, even if the lightbox UI is disabled in the settings.\n\t\t( !! lightbox && lightbox?.enabled !== lightboxSetting?.enabled ) ||\n\t\tlightboxSetting?.allowEditing;\n\n\tconst lightboxChecked =\n\t\t!! lightbox?.enabled || ( ! lightbox && !! lightboxSetting?.enabled );\n\n\tconst dimensionsControl = (\n\t\t<DimensionsTool\n\t\t\tvalue={ { width, height, scale, aspectRatio } }\n\t\t\tonChange={ ( {\n\t\t\t\twidth: newWidth,\n\t\t\t\theight: newHeight,\n\t\t\t\tscale: newScale,\n\t\t\t\taspectRatio: newAspectRatio,\n\t\t\t} ) => {\n\t\t\t\t// Rebuilding the object forces setting `undefined`\n\t\t\t\t// for values that are removed since setAttributes\n\t\t\t\t// doesn't do anything with keys that aren't set.\n\t\t\t\tsetAttributes( {\n\t\t\t\t\t// CSS includes `height: auto`, but we need\n\t\t\t\t\t// `width: auto` to fix the aspect ratio when\n\t\t\t\t\t// only height is set due to the width and\n\t\t\t\t\t// height attributes set via the server.\n\t\t\t\t\twidth: ! newWidth && newHeight ? 'auto' : newWidth,\n\t\t\t\t\theight: newHeight,\n\t\t\t\t\tscale: newScale,\n\t\t\t\t\taspectRatio: newAspectRatio,\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tdefaultScale=\"cover\"\n\t\t\tdefaultAspectRatio=\"auto\"\n\t\t\tscaleOptions={ scaleOptions }\n\t\t\tunitsOptions={ dimensionsUnitsOptions }\n\t\t/>\n\t);\n\n\tconst resetAll = () => {\n\t\tsetAttributes( {\n\t\t\talt: undefined,\n\t\t\twidth: undefined,\n\t\t\theight: undefined,\n\t\t\tscale: undefined,\n\t\t\taspectRatio: undefined,\n\t\t\tlightbox: undefined,\n\t\t} );\n\t};\n\n\tconst sizeControls = (\n\t\t<InspectorControls>\n\t\t\t<ToolsPanel\n\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\tresetAll={ resetAll }\n\t\t\t\tdropdownMenuProps={ TOOLSPANEL_DROPDOWNMENU_PROPS }\n\t\t\t>\n\t\t\t\t{ isResizable && dimensionsControl }\n\t\t\t</ToolsPanel>\n\t\t</InspectorControls>\n\t);\n\n\tconst {\n\t\tlockUrlControls = false,\n\t\tlockHrefControls = false,\n\t\tlockAltControls = false,\n\t\tlockAltControlsMessage,\n\t\tlockTitleControls = false,\n\t\tlockTitleControlsMessage,\n\t\tlockCaption = false,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! isSingleSelected ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tconst { getBlockBindingsSource } = unlock( select( blocksStore ) );\n\t\t\tconst { getBlockParentsByBlockName } = unlock(\n\t\t\t\tselect( blockEditorStore )\n\t\t\t);\n\t\t\tconst {\n\t\t\t\turl: urlBinding,\n\t\t\t\talt: altBinding,\n\t\t\t\ttitle: titleBinding,\n\t\t\t} = metadata?.bindings || {};\n\t\t\tconst hasParentPattern =\n\t\t\t\tgetBlockParentsByBlockName( clientId, 'core/block' ).length > 0;\n\t\t\tconst urlBindingSource = getBlockBindingsSource(\n\t\t\t\turlBinding?.source\n\t\t\t);\n\t\t\tconst altBindingSource = getBlockBindingsSource(\n\t\t\t\taltBinding?.source\n\t\t\t);\n\t\t\tconst titleBindingSource = getBlockBindingsSource(\n\t\t\t\ttitleBinding?.source\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tlockUrlControls:\n\t\t\t\t\t!! urlBinding &&\n\t\t\t\t\t! urlBindingSource?.canUserEditValue( {\n\t\t\t\t\t\tselect,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\targs: urlBinding?.args,\n\t\t\t\t\t} ),\n\t\t\t\tlockHrefControls:\n\t\t\t\t\t// Disable editing the link of the URL if the image is inside a pattern instance.\n\t\t\t\t\t// This is a temporary solution until we support overriding the link on the frontend.\n\t\t\t\t\thasParentPattern,\n\t\t\t\tlockCaption:\n\t\t\t\t\t// Disable editing the caption if the image is inside a pattern instance.\n\t\t\t\t\t// This is a temporary solution until we support overriding the caption on the frontend.\n\t\t\t\t\thasParentPattern,\n\t\t\t\tlockAltControls:\n\t\t\t\t\t!! altBinding &&\n\t\t\t\t\t! altBindingSource?.canUserEditValue( {\n\t\t\t\t\t\tselect,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\targs: altBinding?.args,\n\t\t\t\t\t} ),\n\t\t\t\tlockAltControlsMessage: altBindingSource?.label\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t/* translators: %s: Label of the bindings source. */\n\t\t\t\t\t\t\t__( 'Connected to %s' ),\n\t\t\t\t\t\t\taltBindingSource.label\n\t\t\t\t\t )\n\t\t\t\t\t: __( 'Connected to dynamic data' ),\n\t\t\t\tlockTitleControls:\n\t\t\t\t\t!! titleBinding &&\n\t\t\t\t\t! titleBindingSource?.canUserEditValue( {\n\t\t\t\t\t\tselect,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\targs: titleBinding?.args,\n\t\t\t\t\t} ),\n\t\t\t\tlockTitleControlsMessage: titleBindingSource?.label\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t/* translators: %s: Label of the bindings source. */\n\t\t\t\t\t\t\t__( 'Connected to %s' ),\n\t\t\t\t\t\t\ttitleBindingSource.label\n\t\t\t\t\t )\n\t\t\t\t\t: __( 'Connected to dynamic data' ),\n\t\t\t};\n\t\t},\n\t\t[ clientId, isSingleSelected, metadata?.bindings ]\n\t);\n\n\tconst showUrlInput =\n\t\tisSingleSelected &&\n\t\t! isEditingImage &&\n\t\t! lockHrefControls &&\n\t\t! lockUrlControls;\n\n\tconst showCoverControls = isSingleSelected && canInsertCover;\n\n\tconst showBlockControls = showUrlInput || allowCrop || showCoverControls;\n\n\tconst controls = (\n\t\t<>\n\t\t\t{ showBlockControls && (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t{ showUrlInput && (\n\t\t\t\t\t\t<ImageURLInputUI\n\t\t\t\t\t\t\turl={ href || '' }\n\t\t\t\t\t\t\tonChangeUrl={ onSetHref }\n\t\t\t\t\t\t\tlinkDestination={ linkDestination }\n\t\t\t\t\t\t\tmediaUrl={ ( image && image.source_url ) || url }\n\t\t\t\t\t\t\tmediaLink={ image && image.link }\n\t\t\t\t\t\t\tlinkTarget={ linkTarget }\n\t\t\t\t\t\t\tlinkClass={ linkClass }\n\t\t\t\t\t\t\trel={ rel }\n\t\t\t\t\t\t\tshowLightboxSetting={ showLightboxSetting }\n\t\t\t\t\t\t\tlightboxEnabled={ lightboxChecked }\n\t\t\t\t\t\t\tonSetLightbox={ onSetLightbox }\n\t\t\t\t\t\t\tresetLightbox={ resetLightbox }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ allowCrop && (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tonClick={ () => setIsEditingImage( true ) }\n\t\t\t\t\t\t\ticon={ crop }\n\t\t\t\t\t\t\tlabel={ __( 'Crop' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showCoverControls && (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\ticon={ overlayText }\n\t\t\t\t\t\t\tlabel={ __( 'Add text over image' ) }\n\t\t\t\t\t\t\tonClick={ switchToCover }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t{ isSingleSelected && ! isEditingImage && ! lockUrlControls && (\n\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\tmediaId={ id }\n\t\t\t\t\t\tmediaURL={ url }\n\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t{ isSingleSelected && externalBlob && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tonClick={ uploadExternal }\n\t\t\t\t\t\t\ticon={ upload }\n\t\t\t\t\t\t\tlabel={ __( 'Upload to Media Library' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t{ isContentOnlyMode && (\n\t\t\t\t// Add some extra controls for content attributes when content only mode is active.\n\t\t\t\t// With content only mode active, the inspector is hidden, so users need another way\n\t\t\t\t// to edit these attributes.\n\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t<Dropdown\n\t\t\t\t\t\tpopoverProps={ { position: 'bottom right' } }\n\t\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\t\tif ( ! isOpen && event.keyCode === DOWN ) {\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\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} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ _x(\n\t\t\t\t\t\t\t\t\t'Alt',\n\t\t\t\t\t\t\t\t\t'Alternative text for an image. Block toolbar label, a low character count is preferred.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\trenderContent={ () => (\n\t\t\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\t\t\tclassName=\"wp-block-image__toolbar_content_textarea\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Alternative text' ) }\n\t\t\t\t\t\t\t\tvalue={ alt || '' }\n\t\t\t\t\t\t\t\tonChange={ updateAlt }\n\t\t\t\t\t\t\t\tdisabled={ lockAltControls }\n\t\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\t\tlockAltControls ? (\n\t\t\t\t\t\t\t\t\t\t<>{ lockAltControlsMessage }</>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\t\t\t\thref={\n\t\t\t\t\t\t\t\t\t\t\t\t\t// translators: Localized tutorial, if one exists. W3C Web Accessibility Initiative link has list of existing translations.\n\t\t\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'https://www.w3.org/WAI/tutorials/images/decision-tree/'\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Describe the purpose of the image.'\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Leave empty if decorative.'\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\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\t<Dropdown\n\t\t\t\t\t\tpopoverProps={ { position: 'bottom right' } }\n\t\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\t\tif ( ! isOpen && event.keyCode === DOWN ) {\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\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} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Title' ) }\n\t\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\trenderContent={ () => (\n\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\tclassName=\"wp-block-image__toolbar_content_textarea\"\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Title attribute' ) }\n\t\t\t\t\t\t\t\tvalue={ title || '' }\n\t\t\t\t\t\t\t\tonChange={ onSetTitle }\n\t\t\t\t\t\t\t\tdisabled={ lockTitleControls }\n\t\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\t\tlockTitleControls ? (\n\t\t\t\t\t\t\t\t\t\t<>{ lockTitleControlsMessage }</>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Describe the role of this image on the page.'\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t<ExternalLink href=\"https://www.w3.org/TR/html52/dom.html#the-title-attribute\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'(Note: many devices and browsers do not display this text.)'\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t\t\t\t</>\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/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<InspectorControls>\n\t\t\t\t<ToolsPanel\n\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\tresetAll={ resetAll }\n\t\t\t\t\tdropdownMenuProps={ TOOLSPANEL_DROPDOWNMENU_PROPS }\n\t\t\t\t>\n\t\t\t\t\t{ isSingleSelected && (\n\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\tlabel={ __( 'Alternative text' ) }\n\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\thasValue={ () => !! alt }\n\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { alt: undefined } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Alternative text' ) }\n\t\t\t\t\t\t\t\tvalue={ alt || '' }\n\t\t\t\t\t\t\t\tonChange={ updateAlt }\n\t\t\t\t\t\t\t\treadOnly={ lockAltControls }\n\t\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\t\tlockAltControls ? (\n\t\t\t\t\t\t\t\t\t\t<>{ lockAltControlsMessage }</>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\t\t\t\thref={\n\t\t\t\t\t\t\t\t\t\t\t\t\t// translators: Localized tutorial, if one exists. W3C Web Accessibility Initiative link has list of existing translations.\n\t\t\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'https://www.w3.org/WAI/tutorials/images/decision-tree/'\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Describe the purpose of the image.'\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Leave empty if decorative.'\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isResizable && dimensionsControl }\n\t\t\t\t\t{ !! imageSizeOptions.length && (\n\t\t\t\t\t\t<ResolutionTool\n\t\t\t\t\t\t\tvalue={ sizeSlug }\n\t\t\t\t\t\t\tonChange={ updateImage }\n\t\t\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<TextControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ __( 'Title attribute' ) }\n\t\t\t\t\tvalue={ title || '' }\n\t\t\t\t\tonChange={ onSetTitle }\n\t\t\t\t\treadOnly={ lockTitleControls }\n\t\t\t\t\thelp={\n\t\t\t\t\t\tlockTitleControls ? (\n\t\t\t\t\t\t\t<>{ lockTitleControlsMessage }</>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'Describe the role of this image on the page.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<ExternalLink href=\"https://www.w3.org/TR/html52/dom.html#the-title-attribute\">\n\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t'(Note: many devices and browsers do not display this text.)'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</ExternalLink>\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</InspectorControls>\n\t\t</>\n\t);\n\n\tconst filename = getFilename( url );\n\tlet defaultedAlt;\n\n\tif ( alt ) {\n\t\tdefaultedAlt = alt;\n\t} else if ( filename ) {\n\t\tdefaultedAlt = sprintf(\n\t\t\t/* translators: %s: file name */\n\t\t\t__( 'This image has an empty alt attribute; its file name is %s' ),\n\t\t\tfilename\n\t\t);\n\t} else {\n\t\tdefaultedAlt = __( 'This image has an empty alt attribute' );\n\t}\n\n\tconst borderProps = useBorderProps( attributes );\n\tconst shadowProps = getShadowClassesAndStyles( attributes );\n\tconst isRounded = attributes.className?.includes( 'is-style-rounded' );\n\n\tlet img = (\n\t\t// Disable reason: Image itself is not meant to be interactive, but\n\t\t// should direct focus to block.\n\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t<>\n\t\t\t<img\n\t\t\t\tsrc={ temporaryURL || url }\n\t\t\t\talt={ defaultedAlt }\n\t\t\t\tonError={ () => onImageError() }\n\t\t\t\tonLoad={ ( event ) => {\n\t\t\t\t\tsetLoadedNaturalSize( {\n\t\t\t\t\t\tloadedNaturalWidth: event.target?.naturalWidth,\n\t\t\t\t\t\tloadedNaturalHeight: event.target?.naturalHeight,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tref={ imageRef }\n\t\t\t\tclassName={ borderProps.className }\n\t\t\t\tstyle={ {\n\t\t\t\t\twidth:\n\t\t\t\t\t\t( width && height ) || aspectRatio ? '100%' : undefined,\n\t\t\t\t\theight:\n\t\t\t\t\t\t( width && height ) || aspectRatio ? '100%' : undefined,\n\t\t\t\t\tobjectFit: scale,\n\t\t\t\t\t...borderProps.style,\n\t\t\t\t\t...shadowProps.style,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t{ temporaryURL && <Spinner /> }\n\t\t</>\n\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t);\n\n\tif ( canEditImage && isEditingImage ) {\n\t\timg = (\n\t\t\t<ImageWrapper href={ href }>\n\t\t\t\t<ImageEditor\n\t\t\t\t\tid={ id }\n\t\t\t\t\turl={ url }\n\t\t\t\t\twidth={ numericWidth }\n\t\t\t\t\theight={ numericHeight }\n\t\t\t\t\tnaturalHeight={ naturalHeight }\n\t\t\t\t\tnaturalWidth={ naturalWidth }\n\t\t\t\t\tonSaveImage={ ( imageAttributes ) =>\n\t\t\t\t\t\tsetAttributes( imageAttributes )\n\t\t\t\t\t}\n\t\t\t\t\tonFinishEditing={ () => {\n\t\t\t\t\t\tsetIsEditingImage( false );\n\t\t\t\t\t} }\n\t\t\t\t\tborderProps={ isRounded ? undefined : borderProps }\n\t\t\t\t/>\n\t\t\t</ImageWrapper>\n\t\t);\n\t} else if ( ! isResizable ) {\n\t\timg = (\n\t\t\t<div style={ { width, height, aspectRatio } }>\n\t\t\t\t<ImageWrapper href={ href }>{ img }</ImageWrapper>\n\t\t\t</div>\n\t\t);\n\t} else {\n\t\tconst numericRatio = aspectRatio && evalAspectRatio( aspectRatio );\n\t\tconst customRatio = numericWidth / numericHeight;\n\t\tconst naturalRatio = naturalWidth / naturalHeight;\n\t\tconst ratio = numericRatio || customRatio || naturalRatio || 1;\n\t\tconst currentWidth =\n\t\t\t! numericWidth && numericHeight\n\t\t\t\t? numericHeight * ratio\n\t\t\t\t: numericWidth;\n\t\tconst currentHeight =\n\t\t\t! numericHeight && numericWidth\n\t\t\t\t? numericWidth / ratio\n\t\t\t\t: numericHeight;\n\n\t\tconst minWidth =\n\t\t\tnaturalWidth < naturalHeight ? MIN_SIZE : MIN_SIZE * ratio;\n\t\tconst minHeight =\n\t\t\tnaturalHeight < naturalWidth ? MIN_SIZE : MIN_SIZE / ratio;\n\n\t\t// With the current implementation of ResizableBox, an image needs an\n\t\t// explicit pixel value for the max-width. In absence of being able to\n\t\t// set the content-width, this max-width is currently dictated by the\n\t\t// vanilla editor style. The following variable adds a buffer to this\n\t\t// vanilla style, so 3rd party themes have some wiggleroom. This does,\n\t\t// in most cases, allow you to scale the image beyond the width of the\n\t\t// main column, though not infinitely.\n\t\t// @todo It would be good to revisit this once a content-width variable\n\t\t// becomes available.\n\t\tconst maxWidthBuffer = maxWidth * 2.5;\n\n\t\tlet showRightHandle = false;\n\t\tlet showLeftHandle = false;\n\n\t\t/* eslint-disable no-lonely-if */\n\t\t// See https://github.com/WordPress/gutenberg/issues/7584.\n\t\tif ( align === 'center' ) {\n\t\t\t// When the image is centered, show both handles.\n\t\t\tshowRightHandle = true;\n\t\t\tshowLeftHandle = true;\n\t\t} else if ( isRTL() ) {\n\t\t\t// In RTL mode the image is on the right by default.\n\t\t\t// Show the right handle and hide the left handle only when it is\n\t\t\t// aligned left. Otherwise always show the left handle.\n\t\t\tif ( align === 'left' ) {\n\t\t\t\tshowRightHandle = true;\n\t\t\t} else {\n\t\t\t\tshowLeftHandle = true;\n\t\t\t}\n\t\t} else {\n\t\t\t// Show the left handle and hide the right handle only when the\n\t\t\t// image is aligned right. Otherwise always show the right handle.\n\t\t\tif ( align === 'right' ) {\n\t\t\t\tshowLeftHandle = true;\n\t\t\t} else {\n\t\t\t\tshowRightHandle = true;\n\t\t\t}\n\t\t}\n\t\t/* eslint-enable no-lonely-if */\n\t\timg = (\n\t\t\t<ResizableBox\n\t\t\t\tstyle={ {\n\t\t\t\t\tdisplay: 'block',\n\t\t\t\t\tobjectFit: scale,\n\t\t\t\t\taspectRatio:\n\t\t\t\t\t\t! width && ! height && aspectRatio\n\t\t\t\t\t\t\t? aspectRatio\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t} }\n\t\t\t\tsize={ {\n\t\t\t\t\twidth: currentWidth ?? 'auto',\n\t\t\t\t\theight: currentHeight ?? 'auto',\n\t\t\t\t} }\n\t\t\t\tshowHandle={ isSingleSelected }\n\t\t\t\tminWidth={ minWidth }\n\t\t\t\tmaxWidth={ maxWidthBuffer }\n\t\t\t\tminHeight={ minHeight }\n\t\t\t\tmaxHeight={ maxWidthBuffer / ratio }\n\t\t\t\tlockAspectRatio={ ratio }\n\t\t\t\tenable={ {\n\t\t\t\t\ttop: false,\n\t\t\t\t\tright: showRightHandle,\n\t\t\t\t\tbottom: true,\n\t\t\t\t\tleft: showLeftHandle,\n\t\t\t\t} }\n\t\t\t\tonResizeStart={ onResizeStart }\n\t\t\t\tonResizeStop={ ( event, direction, elt ) => {\n\t\t\t\t\tonResizeStop();\n\t\t\t\t\t// Since the aspect ratio is locked when resizing, we can\n\t\t\t\t\t// use the width of the resized element to calculate the\n\t\t\t\t\t// height in CSS to prevent stretching when the max-width\n\t\t\t\t\t// is reached.\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\twidth: `${ elt.offsetWidth }px`,\n\t\t\t\t\t\theight: 'auto',\n\t\t\t\t\t\taspectRatio:\n\t\t\t\t\t\t\tratio === naturalRatio\n\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t: String( ratio ),\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tresizeRatio={ align === 'center' ? 2 : 1 }\n\t\t\t>\n\t\t\t\t<ImageWrapper href={ href }>{ img }</ImageWrapper>\n\t\t\t</ResizableBox>\n\t\t);\n\t}\n\n\tif ( ! url && ! temporaryURL ) {\n\t\t// Add all controls if the image attributes are connected.\n\t\treturn metadata?.bindings ? controls : sizeControls;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ controls }\n\t\t\t{ img }\n\n\t\t\t<Caption\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tisSelected={ isSingleSelected }\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\tlabel={ __( 'Image caption text' ) }\n\t\t\t\tshowToolbarButton={ isSingleSelected && hasNonContentControls }\n\t\t\t\treadOnly={ lockCaption }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isBlobURL","ExternalLink","ResizableBox","Spinner","TextareaControl","TextControl","ToolbarButton","ToolbarGroup","Dropdown","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","__experimentalUseCustomUnits","useCustomUnits","useViewportMatch","useSelect","useDispatch","BlockControls","InspectorControls","__experimentalImageURLInputUI","ImageURLInputUI","MediaReplaceFlow","store","blockEditorStore","useSettings","__experimentalImageEditor","ImageEditor","__experimentalUseBorderProps","useBorderProps","__experimentalGetShadowClassesAndStyles","getShadowClassesAndStyles","privateApis","blockEditorPrivateApis","useEffect","useMemo","useState","useRef","__","_x","sprintf","isRTL","DOWN","getFilename","switchToBlockType","blocksStore","crop","overlayText","upload","noticesStore","coreStore","unlock","createUpgradedEmbedBlock","isExternalImage","Caption","TOOLSPANEL_DROPDOWNMENU_PROPS","MIN_SIZE","ALLOWED_MEDIA_TYPES","evalAspectRatio","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DimensionsTool","ResolutionTool","scaleOptions","value","label","help","ImageWrapper","href","children","onClick","event","preventDefault","style","pointerEvents","cursor","display","Image","temporaryURL","attributes","setAttributes","isSingleSelected","insertBlocksAfter","onReplace","onSelectImage","onSelectURL","onUploadError","context","clientId","blockEditingMode","parentLayoutType","url","alt","align","id","rel","linkClass","linkDestination","title","width","height","aspectRatio","scale","linkTarget","sizeSlug","lightbox","metadata","numericWidth","parseInt","undefined","numericHeight","imageRef","allowResize","getBlock","getSettings","image","select","getMedia","canInsertCover","imageEditing","imageSizes","maxWidth","getBlockRootClientId","canInsertBlockType","rootClientId","settings","replaceBlocks","toggleSelection","createErrorNotice","createSuccessNotice","isLargeViewport","isWideAligned","includes","loadedNaturalWidth","loadedNaturalHeight","setLoadedNaturalSize","isEditingImage","setIsEditingImage","externalBlob","setExternalBlob","hasNonContentControls","isContentOnlyMode","isResizable","imageSizeOptions","filter","slug","media_details","sizes","source_url","map","name","mediaUpload","window","fetch","then","response","blob","catch","naturalWidth","naturalHeight","current","complete","onResizeStart","onResizeStop","onImageError","embedBlock","onSetHref","props","onSetLightbox","enable","lightboxSetting","enabled","resetLightbox","allowEditing","onSetTitle","updateAlt","newAlt","updateImage","newSizeSlug","newUrl","uploadExternal","filesList","onFileChange","img","type","allowedTypes","onError","message","canEditImage","allowCrop","switchToCover","dimensionsUnitsOptions","availableUnits","showLightboxSetting","lightboxChecked","dimensionsControl","onChange","newWidth","newHeight","newScale","newAspectRatio","defaultScale","defaultAspectRatio","unitsOptions","resetAll","sizeControls","dropdownMenuProps","arePatternOverridesEnabled","bindings","__default","source","lockUrlControls","lockHrefControls","lockAltControls","lockAltControlsMessage","lockTitleControls","lockTitleControlsMessage","lockCaption","getBlockBindingsSource","getBlockParentsByBlockName","urlBinding","altBinding","titleBinding","hasParentPattern","length","urlBindingSource","altBindingSource","titleBindingSource","canUserEditValue","args","showUrlInput","showCoverControls","showBlockControls","controls","group","onChangeUrl","mediaUrl","mediaLink","link","lightboxEnabled","icon","mediaId","mediaURL","accept","onSelect","popoverProps","position","renderToggle","isOpen","onToggle","onKeyDown","keyCode","renderContent","className","disabled","__nextHasNoMarginBottom","isShownByDefault","hasValue","onDeselect","readOnly","options","__next40pxDefaultSize","filename","defaultedAlt","borderProps","shadowProps","isRounded","src","onLoad","target","ref","objectFit","onSaveImage","imageAttributes","onFinishEditing","numericRatio","customRatio","naturalRatio","ratio","currentWidth","currentHeight","minWidth","minHeight","maxWidthBuffer","showRightHandle","showLeftHandle","size","showHandle","maxHeight","lockAspectRatio","top","right","bottom","left","direction","elt","offsetWidth","String","resizeRatio","isSelected","showToolbarButton"],"sources":["@wordpress/block-library/src/image/image.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { isBlobURL } from '@wordpress/blob';\nimport {\n\tExternalLink,\n\tResizableBox,\n\tSpinner,\n\tTextareaControl,\n\tTextControl,\n\tToolbarButton,\n\tToolbarGroup,\n\tDropdown,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalUseCustomUnits as useCustomUnits,\n} from '@wordpress/components';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tBlockControls,\n\tInspectorControls,\n\t__experimentalImageURLInputUI as ImageURLInputUI,\n\tMediaReplaceFlow,\n\tstore as blockEditorStore,\n\tuseSettings,\n\t__experimentalImageEditor as ImageEditor,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { useEffect, useMemo, useState, useRef } from '@wordpress/element';\nimport { __, _x, sprintf, isRTL } from '@wordpress/i18n';\nimport { DOWN } from '@wordpress/keycodes';\nimport { getFilename } from '@wordpress/url';\nimport { switchToBlockType, store as blocksStore } from '@wordpress/blocks';\nimport { crop, overlayText, upload } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\nimport { createUpgradedEmbedBlock } from '../embed/util';\nimport { isExternalImage } from './edit';\nimport { Caption } from '../utils/caption';\n\n/**\n * Module constants\n */\nimport { TOOLSPANEL_DROPDOWNMENU_PROPS } from '../utils/constants';\nimport { MIN_SIZE, ALLOWED_MEDIA_TYPES } from './constants';\nimport { evalAspectRatio } from './utils';\n\nconst { DimensionsTool, ResolutionTool } = unlock( blockEditorPrivateApis );\n\nconst scaleOptions = [\n\t{\n\t\tvalue: 'cover',\n\t\tlabel: _x( 'Cover', 'Scale option for dimensions control' ),\n\t\thelp: __( 'Image covers the space evenly.' ),\n\t},\n\t{\n\t\tvalue: 'contain',\n\t\tlabel: _x( 'Contain', 'Scale option for dimensions control' ),\n\t\thelp: __( 'Image is contained without distortion.' ),\n\t},\n];\n\n// If the image has a href, wrap in an <a /> tag to trigger any inherited link element styles.\nconst ImageWrapper = ( { href, children } ) => {\n\tif ( ! href ) {\n\t\treturn children;\n\t}\n\treturn (\n\t\t<a\n\t\t\thref={ href }\n\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\taria-disabled\n\t\t\tstyle={ {\n\t\t\t\t// When the Image block is linked,\n\t\t\t\t// it's wrapped with a disabled <a /> tag.\n\t\t\t\t// Restore cursor style so it doesn't appear 'clickable'\n\t\t\t\t// and remove pointer events. Safari needs the display property.\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\tcursor: 'default',\n\t\t\t\tdisplay: 'inline',\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</a>\n\t);\n};\n\nexport default function Image( {\n\ttemporaryURL,\n\tattributes,\n\tsetAttributes,\n\tisSingleSelected,\n\tinsertBlocksAfter,\n\tonReplace,\n\tonSelectImage,\n\tonSelectURL,\n\tonUploadError,\n\tcontext,\n\tclientId,\n\tblockEditingMode,\n\tparentLayoutType,\n} ) {\n\tconst {\n\t\turl = '',\n\t\talt,\n\t\talign,\n\t\tid,\n\t\thref,\n\t\trel,\n\t\tlinkClass,\n\t\tlinkDestination,\n\t\ttitle,\n\t\twidth,\n\t\theight,\n\t\taspectRatio,\n\t\tscale,\n\t\tlinkTarget,\n\t\tsizeSlug,\n\t\tlightbox,\n\t\tmetadata,\n\t} = attributes;\n\n\t// The only supported unit is px, so we can parseInt to strip the px here.\n\tconst numericWidth = width ? parseInt( width, 10 ) : undefined;\n\tconst numericHeight = height ? parseInt( height, 10 ) : undefined;\n\n\tconst imageRef = useRef();\n\tconst { allowResize = true } = context;\n\tconst { getBlock, getSettings } = useSelect( blockEditorStore );\n\n\tconst image = useSelect(\n\t\t( select ) =>\n\t\t\tid && isSingleSelected\n\t\t\t\t? select( coreStore ).getMedia( id, { context: 'view' } )\n\t\t\t\t: null,\n\t\t[ id, isSingleSelected ]\n\t);\n\n\tconst { canInsertCover, imageEditing, imageSizes, maxWidth } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockRootClientId, canInsertBlockType } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\tconst settings = getSettings();\n\n\t\t\treturn {\n\t\t\t\timageEditing: settings.imageEditing,\n\t\t\t\timageSizes: settings.imageSizes,\n\t\t\t\tmaxWidth: settings.maxWidth,\n\t\t\t\tcanInsertCover: canInsertBlockType(\n\t\t\t\t\t'core/cover',\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { replaceBlocks, toggleSelection } = useDispatch( blockEditorStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst isWideAligned = [ 'wide', 'full' ].includes( align );\n\tconst [\n\t\t{ loadedNaturalWidth, loadedNaturalHeight },\n\t\tsetLoadedNaturalSize,\n\t] = useState( {} );\n\tconst [ isEditingImage, setIsEditingImage ] = useState( false );\n\tconst [ externalBlob, setExternalBlob ] = useState();\n\tconst hasNonContentControls = blockEditingMode === 'default';\n\tconst isContentOnlyMode = blockEditingMode === 'contentOnly';\n\tconst isResizable =\n\t\tallowResize &&\n\t\thasNonContentControls &&\n\t\t! isWideAligned &&\n\t\tisLargeViewport &&\n\t\tparentLayoutType !== 'grid';\n\tconst imageSizeOptions = imageSizes\n\t\t.filter(\n\t\t\t( { slug } ) => image?.media_details?.sizes?.[ slug ]?.source_url\n\t\t)\n\t\t.map( ( { name, slug } ) => ( { value: slug, label: name } ) );\n\n\t// If an image is externally hosted, try to fetch the image data. This may\n\t// fail if the image host doesn't allow CORS with the domain. If it works,\n\t// we can enable a button in the toolbar to upload the image.\n\tuseEffect( () => {\n\t\tif (\n\t\t\t! isExternalImage( id, url ) ||\n\t\t\t! isSingleSelected ||\n\t\t\t! getSettings().mediaUpload\n\t\t) {\n\t\t\tsetExternalBlob();\n\t\t\treturn;\n\t\t}\n\n\t\tif ( externalBlob ) {\n\t\t\treturn;\n\t\t}\n\n\t\twindow\n\t\t\t// Avoid cache, which seems to help avoid CORS problems.\n\t\t\t.fetch( url.includes( '?' ) ? url : url + '?' )\n\t\t\t.then( ( response ) => response.blob() )\n\t\t\t.then( ( blob ) => setExternalBlob( blob ) )\n\t\t\t// Do nothing, cannot upload.\n\t\t\t.catch( () => {} );\n\t}, [ id, url, isSingleSelected, externalBlob ] );\n\n\t// Get naturalWidth and naturalHeight from image ref, and fall back to loaded natural\n\t// width and height. This resolves an issue in Safari where the loaded natural\n\t// width and height is otherwise lost when switching between alignments.\n\t// See: https://github.com/WordPress/gutenberg/pull/37210.\n\tconst { naturalWidth, naturalHeight } = useMemo( () => {\n\t\treturn {\n\t\t\tnaturalWidth:\n\t\t\t\timageRef.current?.naturalWidth ||\n\t\t\t\tloadedNaturalWidth ||\n\t\t\t\tundefined,\n\t\t\tnaturalHeight:\n\t\t\t\timageRef.current?.naturalHeight ||\n\t\t\t\tloadedNaturalHeight ||\n\t\t\t\tundefined,\n\t\t};\n\t}, [\n\t\tloadedNaturalWidth,\n\t\tloadedNaturalHeight,\n\t\timageRef.current?.complete,\n\t] );\n\n\tfunction onResizeStart() {\n\t\ttoggleSelection( false );\n\t}\n\n\tfunction onResizeStop() {\n\t\ttoggleSelection( true );\n\t}\n\n\tfunction onImageError() {\n\t\t// Check if there's an embed block that handles this URL, e.g., instagram URL.\n\t\t// See: https://github.com/WordPress/gutenberg/pull/11472\n\t\tconst embedBlock = createUpgradedEmbedBlock( { attributes: { url } } );\n\n\t\tif ( undefined !== embedBlock ) {\n\t\t\tonReplace( embedBlock );\n\t\t}\n\t}\n\n\tfunction onSetHref( props ) {\n\t\tsetAttributes( props );\n\t}\n\n\tfunction onSetLightbox( enable ) {\n\t\tif ( enable && ! lightboxSetting?.enabled ) {\n\t\t\tsetAttributes( {\n\t\t\t\tlightbox: { enabled: true },\n\t\t\t} );\n\t\t} else if ( ! enable && lightboxSetting?.enabled ) {\n\t\t\tsetAttributes( {\n\t\t\t\tlightbox: { enabled: false },\n\t\t\t} );\n\t\t} else {\n\t\t\tsetAttributes( {\n\t\t\t\tlightbox: undefined,\n\t\t\t} );\n\t\t}\n\t}\n\n\tfunction resetLightbox() {\n\t\t// When deleting a link from an image while lightbox settings\n\t\t// are enabled by default, we should disable the lightbox,\n\t\t// otherwise the resulting UX looks like a mistake.\n\t\t// See https://github.com/WordPress/gutenberg/pull/59890/files#r1532286123.\n\t\tif ( lightboxSetting?.enabled && lightboxSetting?.allowEditing ) {\n\t\t\tsetAttributes( {\n\t\t\t\tlightbox: { enabled: false },\n\t\t\t} );\n\t\t} else {\n\t\t\tsetAttributes( {\n\t\t\t\tlightbox: undefined,\n\t\t\t} );\n\t\t}\n\t}\n\n\tfunction onSetTitle( value ) {\n\t\t// This is the HTML title attribute, separate from the media object\n\t\t// title.\n\t\tsetAttributes( { title: value } );\n\t}\n\n\tfunction updateAlt( newAlt ) {\n\t\tsetAttributes( { alt: newAlt } );\n\t}\n\n\tfunction updateImage( newSizeSlug ) {\n\t\tconst newUrl = image?.media_details?.sizes?.[ newSizeSlug ]?.source_url;\n\t\tif ( ! newUrl ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\turl: newUrl,\n\t\t\tsizeSlug: newSizeSlug,\n\t\t} );\n\t}\n\n\tfunction uploadExternal() {\n\t\tconst { mediaUpload } = getSettings();\n\t\tif ( ! mediaUpload ) {\n\t\t\treturn;\n\t\t}\n\t\tmediaUpload( {\n\t\t\tfilesList: [ externalBlob ],\n\t\t\tonFileChange( [ img ] ) {\n\t\t\t\tonSelectImage( img );\n\n\t\t\t\tif ( isBlobURL( img.url ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsetExternalBlob();\n\t\t\t\tcreateSuccessNotice( __( 'Image uploaded.' ), {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t},\n\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\tonError( message ) {\n\t\t\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\t\t},\n\t\t} );\n\t}\n\n\tuseEffect( () => {\n\t\tif ( ! isSingleSelected ) {\n\t\t\tsetIsEditingImage( false );\n\t\t}\n\t}, [ isSingleSelected ] );\n\n\tconst canEditImage = id && naturalWidth && naturalHeight && imageEditing;\n\tconst allowCrop = isSingleSelected && canEditImage && ! isEditingImage;\n\n\tfunction switchToCover() {\n\t\treplaceBlocks(\n\t\t\tclientId,\n\t\t\tswitchToBlockType( getBlock( clientId ), 'core/cover' )\n\t\t);\n\t}\n\n\t// TODO: Can allow more units after figuring out how they should interact\n\t// with the ResizableBox and ImageEditor components. Calculations later on\n\t// for those components are currently assuming px units.\n\tconst dimensionsUnitsOptions = useCustomUnits( {\n\t\tavailableUnits: [ 'px' ],\n\t} );\n\n\tconst [ lightboxSetting ] = useSettings( 'lightbox' );\n\n\tconst showLightboxSetting =\n\t\t// If a block-level override is set, we should give users the option to\n\t\t// remove that override, even if the lightbox UI is disabled in the settings.\n\t\t( !! lightbox && lightbox?.enabled !== lightboxSetting?.enabled ) ||\n\t\tlightboxSetting?.allowEditing;\n\n\tconst lightboxChecked =\n\t\t!! lightbox?.enabled || ( ! lightbox && !! lightboxSetting?.enabled );\n\n\tconst dimensionsControl = (\n\t\t<DimensionsTool\n\t\t\tvalue={ { width, height, scale, aspectRatio } }\n\t\t\tonChange={ ( {\n\t\t\t\twidth: newWidth,\n\t\t\t\theight: newHeight,\n\t\t\t\tscale: newScale,\n\t\t\t\taspectRatio: newAspectRatio,\n\t\t\t} ) => {\n\t\t\t\t// Rebuilding the object forces setting `undefined`\n\t\t\t\t// for values that are removed since setAttributes\n\t\t\t\t// doesn't do anything with keys that aren't set.\n\t\t\t\tsetAttributes( {\n\t\t\t\t\t// CSS includes `height: auto`, but we need\n\t\t\t\t\t// `width: auto` to fix the aspect ratio when\n\t\t\t\t\t// only height is set due to the width and\n\t\t\t\t\t// height attributes set via the server.\n\t\t\t\t\twidth: ! newWidth && newHeight ? 'auto' : newWidth,\n\t\t\t\t\theight: newHeight,\n\t\t\t\t\tscale: newScale,\n\t\t\t\t\taspectRatio: newAspectRatio,\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tdefaultScale=\"cover\"\n\t\t\tdefaultAspectRatio=\"auto\"\n\t\t\tscaleOptions={ scaleOptions }\n\t\t\tunitsOptions={ dimensionsUnitsOptions }\n\t\t/>\n\t);\n\n\tconst resetAll = () => {\n\t\tsetAttributes( {\n\t\t\talt: undefined,\n\t\t\twidth: undefined,\n\t\t\theight: undefined,\n\t\t\tscale: undefined,\n\t\t\taspectRatio: undefined,\n\t\t\tlightbox: undefined,\n\t\t} );\n\t};\n\n\tconst sizeControls = (\n\t\t<InspectorControls>\n\t\t\t<ToolsPanel\n\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\tresetAll={ resetAll }\n\t\t\t\tdropdownMenuProps={ TOOLSPANEL_DROPDOWNMENU_PROPS }\n\t\t\t>\n\t\t\t\t{ isResizable && dimensionsControl }\n\t\t\t</ToolsPanel>\n\t\t</InspectorControls>\n\t);\n\n\tconst arePatternOverridesEnabled =\n\t\tmetadata?.bindings?.__default?.source === 'core/pattern-overrides';\n\n\tconst {\n\t\tlockUrlControls = false,\n\t\tlockHrefControls = false,\n\t\tlockAltControls = false,\n\t\tlockAltControlsMessage,\n\t\tlockTitleControls = false,\n\t\tlockTitleControlsMessage,\n\t\tlockCaption = false,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! isSingleSelected ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tconst { getBlockBindingsSource } = unlock( select( blocksStore ) );\n\t\t\tconst { getBlockParentsByBlockName } = unlock(\n\t\t\t\tselect( blockEditorStore )\n\t\t\t);\n\t\t\tconst {\n\t\t\t\turl: urlBinding,\n\t\t\t\talt: altBinding,\n\t\t\t\ttitle: titleBinding,\n\t\t\t} = metadata?.bindings || {};\n\t\t\tconst hasParentPattern =\n\t\t\t\tgetBlockParentsByBlockName( clientId, 'core/block' ).length > 0;\n\t\t\tconst urlBindingSource = getBlockBindingsSource(\n\t\t\t\turlBinding?.source\n\t\t\t);\n\t\t\tconst altBindingSource = getBlockBindingsSource(\n\t\t\t\taltBinding?.source\n\t\t\t);\n\t\t\tconst titleBindingSource = getBlockBindingsSource(\n\t\t\t\ttitleBinding?.source\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tlockUrlControls:\n\t\t\t\t\t!! urlBinding &&\n\t\t\t\t\t! urlBindingSource?.canUserEditValue( {\n\t\t\t\t\t\tselect,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\targs: urlBinding?.args,\n\t\t\t\t\t} ),\n\t\t\t\tlockHrefControls:\n\t\t\t\t\t// Disable editing the link of the URL if the image is inside a pattern instance.\n\t\t\t\t\t// This is a temporary solution until we support overriding the link on the frontend.\n\t\t\t\t\thasParentPattern || arePatternOverridesEnabled,\n\t\t\t\tlockCaption:\n\t\t\t\t\t// Disable editing the caption if the image is inside a pattern instance.\n\t\t\t\t\t// This is a temporary solution until we support overriding the caption on the frontend.\n\t\t\t\t\thasParentPattern,\n\t\t\t\tlockAltControls:\n\t\t\t\t\t!! altBinding &&\n\t\t\t\t\t! altBindingSource?.canUserEditValue( {\n\t\t\t\t\t\tselect,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\targs: altBinding?.args,\n\t\t\t\t\t} ),\n\t\t\t\tlockAltControlsMessage: altBindingSource?.label\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t/* translators: %s: Label of the bindings source. */\n\t\t\t\t\t\t\t__( 'Connected to %s' ),\n\t\t\t\t\t\t\taltBindingSource.label\n\t\t\t\t\t )\n\t\t\t\t\t: __( 'Connected to dynamic data' ),\n\t\t\t\tlockTitleControls:\n\t\t\t\t\t!! titleBinding &&\n\t\t\t\t\t! titleBindingSource?.canUserEditValue( {\n\t\t\t\t\t\tselect,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\targs: titleBinding?.args,\n\t\t\t\t\t} ),\n\t\t\t\tlockTitleControlsMessage: titleBindingSource?.label\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t/* translators: %s: Label of the bindings source. */\n\t\t\t\t\t\t\t__( 'Connected to %s' ),\n\t\t\t\t\t\t\ttitleBindingSource.label\n\t\t\t\t\t )\n\t\t\t\t\t: __( 'Connected to dynamic data' ),\n\t\t\t};\n\t\t},\n\t\t[ clientId, isSingleSelected, metadata?.bindings ]\n\t);\n\n\tconst showUrlInput =\n\t\tisSingleSelected &&\n\t\t! isEditingImage &&\n\t\t! lockHrefControls &&\n\t\t! lockUrlControls;\n\n\tconst showCoverControls = isSingleSelected && canInsertCover;\n\n\tconst showBlockControls = showUrlInput || allowCrop || showCoverControls;\n\n\tconst controls = (\n\t\t<>\n\t\t\t{ showBlockControls && (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t{ showUrlInput && (\n\t\t\t\t\t\t<ImageURLInputUI\n\t\t\t\t\t\t\turl={ href || '' }\n\t\t\t\t\t\t\tonChangeUrl={ onSetHref }\n\t\t\t\t\t\t\tlinkDestination={ linkDestination }\n\t\t\t\t\t\t\tmediaUrl={ ( image && image.source_url ) || url }\n\t\t\t\t\t\t\tmediaLink={ image && image.link }\n\t\t\t\t\t\t\tlinkTarget={ linkTarget }\n\t\t\t\t\t\t\tlinkClass={ linkClass }\n\t\t\t\t\t\t\trel={ rel }\n\t\t\t\t\t\t\tshowLightboxSetting={ showLightboxSetting }\n\t\t\t\t\t\t\tlightboxEnabled={ lightboxChecked }\n\t\t\t\t\t\t\tonSetLightbox={ onSetLightbox }\n\t\t\t\t\t\t\tresetLightbox={ resetLightbox }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ allowCrop && (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tonClick={ () => setIsEditingImage( true ) }\n\t\t\t\t\t\t\ticon={ crop }\n\t\t\t\t\t\t\tlabel={ __( 'Crop' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showCoverControls && (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\ticon={ overlayText }\n\t\t\t\t\t\t\tlabel={ __( 'Add text over image' ) }\n\t\t\t\t\t\t\tonClick={ switchToCover }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t{ isSingleSelected && ! isEditingImage && ! lockUrlControls && (\n\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\tmediaId={ id }\n\t\t\t\t\t\tmediaURL={ url }\n\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t{ isSingleSelected && externalBlob && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tonClick={ uploadExternal }\n\t\t\t\t\t\t\ticon={ upload }\n\t\t\t\t\t\t\tlabel={ __( 'Upload to Media Library' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t{ isContentOnlyMode && (\n\t\t\t\t// Add some extra controls for content attributes when content only mode is active.\n\t\t\t\t// With content only mode active, the inspector is hidden, so users need another way\n\t\t\t\t// to edit these attributes.\n\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t<Dropdown\n\t\t\t\t\t\tpopoverProps={ { position: 'bottom right' } }\n\t\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\t\tif ( ! isOpen && event.keyCode === DOWN ) {\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\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} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ _x(\n\t\t\t\t\t\t\t\t\t'Alt',\n\t\t\t\t\t\t\t\t\t'Alternative text for an image. Block toolbar label, a low character count is preferred.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\trenderContent={ () => (\n\t\t\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\t\t\tclassName=\"wp-block-image__toolbar_content_textarea\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Alternative text' ) }\n\t\t\t\t\t\t\t\tvalue={ alt || '' }\n\t\t\t\t\t\t\t\tonChange={ updateAlt }\n\t\t\t\t\t\t\t\tdisabled={ lockAltControls }\n\t\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\t\tlockAltControls ? (\n\t\t\t\t\t\t\t\t\t\t<>{ lockAltControlsMessage }</>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\t\t\t\thref={\n\t\t\t\t\t\t\t\t\t\t\t\t\t// translators: Localized tutorial, if one exists. W3C Web Accessibility Initiative link has list of existing translations.\n\t\t\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'https://www.w3.org/WAI/tutorials/images/decision-tree/'\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Describe the purpose of the image.'\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Leave empty if decorative.'\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\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\t<Dropdown\n\t\t\t\t\t\tpopoverProps={ { position: 'bottom right' } }\n\t\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\t\tif ( ! isOpen && event.keyCode === DOWN ) {\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\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} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Title' ) }\n\t\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\trenderContent={ () => (\n\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\tclassName=\"wp-block-image__toolbar_content_textarea\"\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tlabel={ __( 'Title attribute' ) }\n\t\t\t\t\t\t\t\tvalue={ title || '' }\n\t\t\t\t\t\t\t\tonChange={ onSetTitle }\n\t\t\t\t\t\t\t\tdisabled={ lockTitleControls }\n\t\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\t\tlockTitleControls ? (\n\t\t\t\t\t\t\t\t\t\t<>{ lockTitleControlsMessage }</>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Describe the role of this image on the page.'\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t<ExternalLink href=\"https://www.w3.org/TR/html52/dom.html#the-title-attribute\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'(Note: many devices and browsers do not display this text.)'\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t\t\t\t</>\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/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<InspectorControls>\n\t\t\t\t<ToolsPanel\n\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\tresetAll={ resetAll }\n\t\t\t\t\tdropdownMenuProps={ TOOLSPANEL_DROPDOWNMENU_PROPS }\n\t\t\t\t>\n\t\t\t\t\t{ isSingleSelected && (\n\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\tlabel={ __( 'Alternative text' ) }\n\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\thasValue={ () => !! alt }\n\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { alt: undefined } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Alternative text' ) }\n\t\t\t\t\t\t\t\tvalue={ alt || '' }\n\t\t\t\t\t\t\t\tonChange={ updateAlt }\n\t\t\t\t\t\t\t\treadOnly={ lockAltControls }\n\t\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\t\tlockAltControls ? (\n\t\t\t\t\t\t\t\t\t\t<>{ lockAltControlsMessage }</>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\t\t\t\thref={\n\t\t\t\t\t\t\t\t\t\t\t\t\t// translators: Localized tutorial, if one exists. W3C Web Accessibility Initiative link has list of existing translations.\n\t\t\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'https://www.w3.org/WAI/tutorials/images/decision-tree/'\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Describe the purpose of the image.'\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Leave empty if decorative.'\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isResizable && dimensionsControl }\n\t\t\t\t\t{ !! imageSizeOptions.length && (\n\t\t\t\t\t\t<ResolutionTool\n\t\t\t\t\t\t\tvalue={ sizeSlug }\n\t\t\t\t\t\t\tonChange={ updateImage }\n\t\t\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<TextControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ __( 'Title attribute' ) }\n\t\t\t\t\tvalue={ title || '' }\n\t\t\t\t\tonChange={ onSetTitle }\n\t\t\t\t\treadOnly={ lockTitleControls }\n\t\t\t\t\thelp={\n\t\t\t\t\t\tlockTitleControls ? (\n\t\t\t\t\t\t\t<>{ lockTitleControlsMessage }</>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'Describe the role of this image on the page.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<ExternalLink href=\"https://www.w3.org/TR/html52/dom.html#the-title-attribute\">\n\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t'(Note: many devices and browsers do not display this text.)'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</ExternalLink>\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</InspectorControls>\n\t\t</>\n\t);\n\n\tconst filename = getFilename( url );\n\tlet defaultedAlt;\n\n\tif ( alt ) {\n\t\tdefaultedAlt = alt;\n\t} else if ( filename ) {\n\t\tdefaultedAlt = sprintf(\n\t\t\t/* translators: %s: file name */\n\t\t\t__( 'This image has an empty alt attribute; its file name is %s' ),\n\t\t\tfilename\n\t\t);\n\t} else {\n\t\tdefaultedAlt = __( 'This image has an empty alt attribute' );\n\t}\n\n\tconst borderProps = useBorderProps( attributes );\n\tconst shadowProps = getShadowClassesAndStyles( attributes );\n\tconst isRounded = attributes.className?.includes( 'is-style-rounded' );\n\n\tlet img = (\n\t\t// Disable reason: Image itself is not meant to be interactive, but\n\t\t// should direct focus to block.\n\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t<>\n\t\t\t<img\n\t\t\t\tsrc={ temporaryURL || url }\n\t\t\t\talt={ defaultedAlt }\n\t\t\t\tonError={ () => onImageError() }\n\t\t\t\tonLoad={ ( event ) => {\n\t\t\t\t\tsetLoadedNaturalSize( {\n\t\t\t\t\t\tloadedNaturalWidth: event.target?.naturalWidth,\n\t\t\t\t\t\tloadedNaturalHeight: event.target?.naturalHeight,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tref={ imageRef }\n\t\t\t\tclassName={ borderProps.className }\n\t\t\t\tstyle={ {\n\t\t\t\t\twidth:\n\t\t\t\t\t\t( width && height ) || aspectRatio ? '100%' : undefined,\n\t\t\t\t\theight:\n\t\t\t\t\t\t( width && height ) || aspectRatio ? '100%' : undefined,\n\t\t\t\t\tobjectFit: scale,\n\t\t\t\t\t...borderProps.style,\n\t\t\t\t\t...shadowProps.style,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t{ temporaryURL && <Spinner /> }\n\t\t</>\n\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t);\n\n\tif ( canEditImage && isEditingImage ) {\n\t\timg = (\n\t\t\t<ImageWrapper href={ href }>\n\t\t\t\t<ImageEditor\n\t\t\t\t\tid={ id }\n\t\t\t\t\turl={ url }\n\t\t\t\t\twidth={ numericWidth }\n\t\t\t\t\theight={ numericHeight }\n\t\t\t\t\tnaturalHeight={ naturalHeight }\n\t\t\t\t\tnaturalWidth={ naturalWidth }\n\t\t\t\t\tonSaveImage={ ( imageAttributes ) =>\n\t\t\t\t\t\tsetAttributes( imageAttributes )\n\t\t\t\t\t}\n\t\t\t\t\tonFinishEditing={ () => {\n\t\t\t\t\t\tsetIsEditingImage( false );\n\t\t\t\t\t} }\n\t\t\t\t\tborderProps={ isRounded ? undefined : borderProps }\n\t\t\t\t/>\n\t\t\t</ImageWrapper>\n\t\t);\n\t} else if ( ! isResizable ) {\n\t\timg = (\n\t\t\t<div style={ { width, height, aspectRatio } }>\n\t\t\t\t<ImageWrapper href={ href }>{ img }</ImageWrapper>\n\t\t\t</div>\n\t\t);\n\t} else {\n\t\tconst numericRatio = aspectRatio && evalAspectRatio( aspectRatio );\n\t\tconst customRatio = numericWidth / numericHeight;\n\t\tconst naturalRatio = naturalWidth / naturalHeight;\n\t\tconst ratio = numericRatio || customRatio || naturalRatio || 1;\n\t\tconst currentWidth =\n\t\t\t! numericWidth && numericHeight\n\t\t\t\t? numericHeight * ratio\n\t\t\t\t: numericWidth;\n\t\tconst currentHeight =\n\t\t\t! numericHeight && numericWidth\n\t\t\t\t? numericWidth / ratio\n\t\t\t\t: numericHeight;\n\n\t\tconst minWidth =\n\t\t\tnaturalWidth < naturalHeight ? MIN_SIZE : MIN_SIZE * ratio;\n\t\tconst minHeight =\n\t\t\tnaturalHeight < naturalWidth ? MIN_SIZE : MIN_SIZE / ratio;\n\n\t\t// With the current implementation of ResizableBox, an image needs an\n\t\t// explicit pixel value for the max-width. In absence of being able to\n\t\t// set the content-width, this max-width is currently dictated by the\n\t\t// vanilla editor style. The following variable adds a buffer to this\n\t\t// vanilla style, so 3rd party themes have some wiggleroom. This does,\n\t\t// in most cases, allow you to scale the image beyond the width of the\n\t\t// main column, though not infinitely.\n\t\t// @todo It would be good to revisit this once a content-width variable\n\t\t// becomes available.\n\t\tconst maxWidthBuffer = maxWidth * 2.5;\n\n\t\tlet showRightHandle = false;\n\t\tlet showLeftHandle = false;\n\n\t\t/* eslint-disable no-lonely-if */\n\t\t// See https://github.com/WordPress/gutenberg/issues/7584.\n\t\tif ( align === 'center' ) {\n\t\t\t// When the image is centered, show both handles.\n\t\t\tshowRightHandle = true;\n\t\t\tshowLeftHandle = true;\n\t\t} else if ( isRTL() ) {\n\t\t\t// In RTL mode the image is on the right by default.\n\t\t\t// Show the right handle and hide the left handle only when it is\n\t\t\t// aligned left. Otherwise always show the left handle.\n\t\t\tif ( align === 'left' ) {\n\t\t\t\tshowRightHandle = true;\n\t\t\t} else {\n\t\t\t\tshowLeftHandle = true;\n\t\t\t}\n\t\t} else {\n\t\t\t// Show the left handle and hide the right handle only when the\n\t\t\t// image is aligned right. Otherwise always show the right handle.\n\t\t\tif ( align === 'right' ) {\n\t\t\t\tshowLeftHandle = true;\n\t\t\t} else {\n\t\t\t\tshowRightHandle = true;\n\t\t\t}\n\t\t}\n\t\t/* eslint-enable no-lonely-if */\n\t\timg = (\n\t\t\t<ResizableBox\n\t\t\t\tstyle={ {\n\t\t\t\t\tdisplay: 'block',\n\t\t\t\t\tobjectFit: scale,\n\t\t\t\t\taspectRatio:\n\t\t\t\t\t\t! width && ! height && aspectRatio\n\t\t\t\t\t\t\t? aspectRatio\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t} }\n\t\t\t\tsize={ {\n\t\t\t\t\twidth: currentWidth ?? 'auto',\n\t\t\t\t\theight: currentHeight ?? 'auto',\n\t\t\t\t} }\n\t\t\t\tshowHandle={ isSingleSelected }\n\t\t\t\tminWidth={ minWidth }\n\t\t\t\tmaxWidth={ maxWidthBuffer }\n\t\t\t\tminHeight={ minHeight }\n\t\t\t\tmaxHeight={ maxWidthBuffer / ratio }\n\t\t\t\tlockAspectRatio={ ratio }\n\t\t\t\tenable={ {\n\t\t\t\t\ttop: false,\n\t\t\t\t\tright: showRightHandle,\n\t\t\t\t\tbottom: true,\n\t\t\t\t\tleft: showLeftHandle,\n\t\t\t\t} }\n\t\t\t\tonResizeStart={ onResizeStart }\n\t\t\t\tonResizeStop={ ( event, direction, elt ) => {\n\t\t\t\t\tonResizeStop();\n\t\t\t\t\t// Since the aspect ratio is locked when resizing, we can\n\t\t\t\t\t// use the width of the resized element to calculate the\n\t\t\t\t\t// height in CSS to prevent stretching when the max-width\n\t\t\t\t\t// is reached.\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\twidth: `${ elt.offsetWidth }px`,\n\t\t\t\t\t\theight: 'auto',\n\t\t\t\t\t\taspectRatio:\n\t\t\t\t\t\t\tratio === naturalRatio\n\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t: String( ratio ),\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tresizeRatio={ align === 'center' ? 2 : 1 }\n\t\t\t>\n\t\t\t\t<ImageWrapper href={ href }>{ img }</ImageWrapper>\n\t\t\t</ResizableBox>\n\t\t);\n\t}\n\n\tif ( ! url && ! temporaryURL ) {\n\t\t// Add all controls if the image attributes are connected.\n\t\treturn metadata?.bindings ? controls : sizeControls;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ controls }\n\t\t\t{ img }\n\n\t\t\t<Caption\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tisSelected={ isSingleSelected }\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\tlabel={ __( 'Image caption text' ) }\n\t\t\t\tshowToolbarButton={\n\t\t\t\t\tisSingleSelected &&\n\t\t\t\t\thasNonContentControls &&\n\t\t\t\t\t! arePatternOverridesEnabled\n\t\t\t\t}\n\t\t\t\treadOnly={ lockCaption }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -89,7 +89,7 @@
89
89
  .wp-block-audio {
90
90
  box-sizing: border-box;
91
91
  }
92
- .wp-block-audio figcaption {
92
+ .wp-block-audio :where(figcaption) {
93
93
  margin-top: 0.5em;
94
94
  margin-bottom: 1em;
95
95
  }
@@ -89,7 +89,7 @@
89
89
  .wp-block-audio {
90
90
  box-sizing: border-box;
91
91
  }
92
- .wp-block-audio figcaption {
92
+ .wp-block-audio :where(figcaption) {
93
93
  margin-top: 0.5em;
94
94
  margin-bottom: 1em;
95
95
  }
@@ -86,12 +86,12 @@
86
86
  /**
87
87
  * Reset the WP Admin page styles for Gutenberg-like pages.
88
88
  */
89
- .wp-block-audio figcaption {
89
+ .wp-block-audio :where(figcaption) {
90
90
  color: #555;
91
91
  font-size: 13px;
92
92
  text-align: center;
93
93
  }
94
- .is-dark-theme .wp-block-audio figcaption {
94
+ .is-dark-theme .wp-block-audio :where(figcaption) {
95
95
  color: rgba(255, 255, 255, 0.65);
96
96
  }
97
97
 
@@ -86,12 +86,12 @@
86
86
  /**
87
87
  * Reset the WP Admin page styles for Gutenberg-like pages.
88
88
  */
89
- .wp-block-audio figcaption {
89
+ .wp-block-audio :where(figcaption) {
90
90
  color: #555;
91
91
  font-size: 13px;
92
92
  text-align: center;
93
93
  }
94
- .is-dark-theme .wp-block-audio figcaption {
94
+ .is-dark-theme .wp-block-audio :where(figcaption) {
95
95
  color: rgba(255, 255, 255, 0.65);
96
96
  }
97
97
 
@@ -1359,18 +1359,6 @@ figure.wp-block-image:not(.wp-block) {
1359
1359
  overflow: visible !important;
1360
1360
  }
1361
1361
 
1362
- .wp-block-image__aspect-ratio {
1363
- height: 46px;
1364
- margin-bottom: -8px;
1365
- display: flex;
1366
- align-items: center;
1367
- }
1368
- .wp-block-image__aspect-ratio .components-button {
1369
- width: 36px;
1370
- padding-right: 0;
1371
- padding-left: 0;
1372
- }
1373
-
1374
1362
  .wp-block-image__toolbar_content_textarea {
1375
1363
  width: 250px;
1376
1364
  }
@@ -1368,18 +1368,6 @@ figure.wp-block-image:not(.wp-block) {
1368
1368
  overflow: visible !important;
1369
1369
  }
1370
1370
 
1371
- .wp-block-image__aspect-ratio {
1372
- height: 46px;
1373
- margin-bottom: -8px;
1374
- display: flex;
1375
- align-items: center;
1376
- }
1377
- .wp-block-image__aspect-ratio .components-button {
1378
- width: 36px;
1379
- padding-left: 0;
1380
- padding-right: 0;
1381
- }
1382
-
1383
1371
  .wp-block-image__toolbar_content_textarea {
1384
1372
  width: 250px;
1385
1373
  }
@@ -108,7 +108,7 @@
108
108
  .wp-block-embed {
109
109
  overflow-wrap: break-word;
110
110
  }
111
- .wp-block-embed figcaption {
111
+ .wp-block-embed :where(figcaption) {
112
112
  margin-top: 0.5em;
113
113
  margin-bottom: 1em;
114
114
  }
@@ -108,7 +108,7 @@
108
108
  .wp-block-embed {
109
109
  overflow-wrap: break-word;
110
110
  }
111
- .wp-block-embed figcaption {
111
+ .wp-block-embed :where(figcaption) {
112
112
  margin-top: 0.5em;
113
113
  margin-bottom: 1em;
114
114
  }
@@ -86,12 +86,12 @@
86
86
  /**
87
87
  * Reset the WP Admin page styles for Gutenberg-like pages.
88
88
  */
89
- .wp-block-embed figcaption {
89
+ .wp-block-embed :where(figcaption) {
90
90
  color: #555;
91
91
  font-size: 13px;
92
92
  text-align: center;
93
93
  }
94
- .is-dark-theme .wp-block-embed figcaption {
94
+ .is-dark-theme .wp-block-embed :where(figcaption) {
95
95
  color: rgba(255, 255, 255, 0.65);
96
96
  }
97
97
 
@@ -86,12 +86,12 @@
86
86
  /**
87
87
  * Reset the WP Admin page styles for Gutenberg-like pages.
88
88
  */
89
- .wp-block-embed figcaption {
89
+ .wp-block-embed :where(figcaption) {
90
90
  color: #555;
91
91
  font-size: 13px;
92
92
  text-align: center;
93
93
  }
94
- .is-dark-theme .wp-block-embed figcaption {
94
+ .is-dark-theme .wp-block-embed :where(figcaption) {
95
95
  color: rgba(255, 255, 255, 0.65);
96
96
  }
97
97
 
@@ -224,18 +224,6 @@ figure.wp-block-image:not(.wp-block) {
224
224
  overflow: visible !important;
225
225
  }
226
226
 
227
- .wp-block-image__aspect-ratio {
228
- height: 46px;
229
- margin-bottom: -8px;
230
- display: flex;
231
- align-items: center;
232
- }
233
- .wp-block-image__aspect-ratio .components-button {
234
- width: 36px;
235
- padding-right: 0;
236
- padding-left: 0;
237
- }
238
-
239
227
  .wp-block-image__toolbar_content_textarea {
240
228
  width: 250px;
241
229
  }
@@ -224,18 +224,6 @@ figure.wp-block-image:not(.wp-block) {
224
224
  overflow: visible !important;
225
225
  }
226
226
 
227
- .wp-block-image__aspect-ratio {
228
- height: 46px;
229
- margin-bottom: -8px;
230
- display: flex;
231
- align-items: center;
232
- }
233
- .wp-block-image__aspect-ratio .components-button {
234
- width: 36px;
235
- padding-left: 0;
236
- padding-right: 0;
237
- }
238
-
239
227
  .wp-block-image__toolbar_content_textarea {
240
228
  width: 250px;
241
229
  }
@@ -137,7 +137,7 @@
137
137
  margin-right: auto;
138
138
  margin-left: auto;
139
139
  }
140
- .wp-block-image figcaption {
140
+ .wp-block-image :where(figcaption) {
141
141
  margin-top: 0.5em;
142
142
  margin-bottom: 1em;
143
143
  }
@@ -143,7 +143,7 @@
143
143
  margin-left: auto;
144
144
  margin-right: auto;
145
145
  }
146
- .wp-block-image figcaption {
146
+ .wp-block-image :where(figcaption) {
147
147
  margin-top: 0.5em;
148
148
  margin-bottom: 1em;
149
149
  }
@@ -284,6 +284,7 @@ button.wp-block-navigation-item__content {
284
284
  color: currentColor;
285
285
  font-size: inherit;
286
286
  font-family: inherit;
287
+ letter-spacing: inherit;
287
288
  line-height: inherit;
288
289
  font-style: inherit;
289
290
  font-weight: inherit;
@@ -284,6 +284,7 @@ button.wp-block-navigation-item__content {
284
284
  color: currentColor;
285
285
  font-size: inherit;
286
286
  font-family: inherit;
287
+ letter-spacing: inherit;
287
288
  line-height: inherit;
288
289
  font-style: inherit;
289
290
  font-weight: inherit;
@@ -92,11 +92,7 @@
92
92
  * These are only output in the editor, but styles here are prefixed .editor-styles-wrapper and affect the theming
93
93
  * of the editor by themes.
94
94
  */
95
- :where(.editor-styles-wrapper) {
96
- /**
97
- * The following styles revert to the browser defaults overriding the WPAdmin styles.
98
- * This is only needed while the block editor is not being loaded in an iframe.
99
- */
95
+ html :where(.editor-styles-wrapper) {
100
96
  font-family: serif;
101
97
  font-size: initial;
102
98
  line-height: initial;
@@ -92,11 +92,7 @@
92
92
  * These are only output in the editor, but styles here are prefixed .editor-styles-wrapper and affect the theming
93
93
  * of the editor by themes.
94
94
  */
95
- :where(.editor-styles-wrapper) {
96
- /**
97
- * The following styles revert to the browser defaults overriding the WPAdmin styles.
98
- * This is only needed while the block editor is not being loaded in an iframe.
99
- */
95
+ html :where(.editor-styles-wrapper) {
100
96
  font-family: serif;
101
97
  font-size: initial;
102
98
  line-height: initial;
@@ -109,7 +109,7 @@
109
109
  .wp-block-audio {
110
110
  box-sizing: border-box;
111
111
  }
112
- .wp-block-audio figcaption {
112
+ .wp-block-audio :where(figcaption) {
113
113
  margin-top: 0.5em;
114
114
  margin-bottom: 1em;
115
115
  }
@@ -1010,7 +1010,7 @@ section.wp-block-cover-image > h2,
1010
1010
  .wp-block-embed {
1011
1011
  overflow-wrap: break-word;
1012
1012
  }
1013
- .wp-block-embed figcaption {
1013
+ .wp-block-embed :where(figcaption) {
1014
1014
  margin-top: 0.5em;
1015
1015
  margin-bottom: 1em;
1016
1016
  }
@@ -1572,7 +1572,7 @@ h6.has-text-align-left[style*=writing-mode]:where([style*="vertical-lr"]) {
1572
1572
  margin-right: auto;
1573
1573
  margin-left: auto;
1574
1574
  }
1575
- .wp-block-image figcaption {
1575
+ .wp-block-image :where(figcaption) {
1576
1576
  margin-top: 0.5em;
1577
1577
  margin-bottom: 1em;
1578
1578
  }
@@ -2275,6 +2275,7 @@ button.wp-block-navigation-item__content {
2275
2275
  color: currentColor;
2276
2276
  font-size: inherit;
2277
2277
  font-family: inherit;
2278
+ letter-spacing: inherit;
2278
2279
  line-height: inherit;
2279
2280
  font-style: inherit;
2280
2281
  font-weight: inherit;
@@ -3977,7 +3978,7 @@ pre.wp-block-verse {
3977
3978
  .wp-block-video.aligncenter {
3978
3979
  text-align: center;
3979
3980
  }
3980
- .wp-block-video figcaption {
3981
+ .wp-block-video :where(figcaption) {
3981
3982
  margin-top: 0.5em;
3982
3983
  margin-bottom: 1em;
3983
3984
  }
@@ -109,7 +109,7 @@
109
109
  .wp-block-audio {
110
110
  box-sizing: border-box;
111
111
  }
112
- .wp-block-audio figcaption {
112
+ .wp-block-audio :where(figcaption) {
113
113
  margin-top: 0.5em;
114
114
  margin-bottom: 1em;
115
115
  }
@@ -1017,7 +1017,7 @@ section.wp-block-cover-image > h2,
1017
1017
  .wp-block-embed {
1018
1018
  overflow-wrap: break-word;
1019
1019
  }
1020
- .wp-block-embed figcaption {
1020
+ .wp-block-embed :where(figcaption) {
1021
1021
  margin-top: 0.5em;
1022
1022
  margin-bottom: 1em;
1023
1023
  }
@@ -1586,7 +1586,7 @@ h6.has-text-align-left[style*=writing-mode]:where([style*="vertical-lr"]) {
1586
1586
  margin-left: auto;
1587
1587
  margin-right: auto;
1588
1588
  }
1589
- .wp-block-image figcaption {
1589
+ .wp-block-image :where(figcaption) {
1590
1590
  margin-top: 0.5em;
1591
1591
  margin-bottom: 1em;
1592
1592
  }
@@ -2305,6 +2305,7 @@ button.wp-block-navigation-item__content {
2305
2305
  color: currentColor;
2306
2306
  font-size: inherit;
2307
2307
  font-family: inherit;
2308
+ letter-spacing: inherit;
2308
2309
  line-height: inherit;
2309
2310
  font-style: inherit;
2310
2311
  font-weight: inherit;
@@ -4012,7 +4013,7 @@ pre.wp-block-verse {
4012
4013
  .wp-block-video.aligncenter {
4013
4014
  text-align: center;
4014
4015
  }
4015
- .wp-block-video figcaption {
4016
+ .wp-block-video :where(figcaption) {
4016
4017
  margin-top: 0.5em;
4017
4018
  margin-bottom: 1em;
4018
4019
  }