@wordpress/block-library 8.28.4 → 8.28.6

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 (67) hide show
  1. package/build/block/deprecated.js +71 -11
  2. package/build/block/deprecated.js.map +1 -1
  3. package/build/block/edit.js +65 -31
  4. package/build/block/edit.js.map +1 -1
  5. package/build/code/save.js +3 -1
  6. package/build/code/save.js.map +1 -1
  7. package/build/image/edit.js +6 -3
  8. package/build/image/edit.js.map +1 -1
  9. package/build/image/image.js +11 -5
  10. package/build/image/image.js.map +1 -1
  11. package/build/list-item/edit.js +1 -3
  12. package/build/list-item/edit.js.map +1 -1
  13. package/build/list-item/hooks/index.js +0 -7
  14. package/build/list-item/hooks/index.js.map +1 -1
  15. package/build/list-item/index.js +4 -1
  16. package/build/list-item/index.js.map +1 -1
  17. package/build/navigation/edit/index.js +2 -2
  18. package/build/navigation/edit/index.js.map +1 -1
  19. package/build/navigation/edit/navigation-menu-selector.js +20 -19
  20. package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
  21. package/build/site-logo/edit.js +7 -2
  22. package/build/site-logo/edit.js.map +1 -1
  23. package/build-module/block/deprecated.js +71 -11
  24. package/build-module/block/deprecated.js.map +1 -1
  25. package/build-module/block/edit.js +66 -32
  26. package/build-module/block/edit.js.map +1 -1
  27. package/build-module/code/save.js +3 -1
  28. package/build-module/code/save.js.map +1 -1
  29. package/build-module/image/edit.js +7 -4
  30. package/build-module/image/edit.js.map +1 -1
  31. package/build-module/image/image.js +11 -5
  32. package/build-module/image/image.js.map +1 -1
  33. package/build-module/list-item/edit.js +2 -4
  34. package/build-module/list-item/edit.js.map +1 -1
  35. package/build-module/list-item/hooks/index.js +0 -1
  36. package/build-module/list-item/hooks/index.js.map +1 -1
  37. package/build-module/list-item/index.js +4 -1
  38. package/build-module/list-item/index.js.map +1 -1
  39. package/build-module/navigation/edit/index.js +2 -2
  40. package/build-module/navigation/edit/index.js.map +1 -1
  41. package/build-module/navigation/edit/navigation-menu-selector.js +20 -19
  42. package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
  43. package/build-module/site-logo/edit.js +7 -2
  44. package/build-module/site-logo/edit.js.map +1 -1
  45. package/build-style/common-rtl.css +1 -0
  46. package/build-style/common.css +1 -0
  47. package/package.json +13 -13
  48. package/src/block/deprecated.js +76 -11
  49. package/src/block/edit.js +100 -32
  50. package/src/block/index.php +21 -12
  51. package/src/code/save.js +7 -1
  52. package/src/image/edit.js +10 -3
  53. package/src/image/image.js +20 -16
  54. package/src/list-item/edit.js +1 -2
  55. package/src/list-item/hooks/index.js +0 -1
  56. package/src/list-item/index.js +3 -0
  57. package/src/navigation/edit/index.js +2 -2
  58. package/src/navigation/edit/navigation-menu-selector.js +34 -16
  59. package/src/navigation/edit/test/navigation-menu-selector.js +61 -39
  60. package/src/navigation/index.php +19 -13
  61. package/src/search/index.php +1 -1
  62. package/src/site-logo/edit.js +10 -5
  63. package/build/list-item/hooks/use-copy.js +0 -39
  64. package/build/list-item/hooks/use-copy.js.map +0 -1
  65. package/build-module/list-item/hooks/use-copy.js +0 -32
  66. package/build-module/list-item/hooks/use-copy.js.map +0 -1
  67. package/src/list-item/hooks/use-copy.js +0 -38
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","useRegistry","useSelect","useDispatch","useRef","useMemo","useEffect","useEntityRecord","store","coreStore","Placeholder","Spinner","ToolbarButton","ToolbarGroup","__","useInnerBlocksProps","RecursionProvider","useHasRecursion","InnerBlocks","useBlockProps","Warning","privateApis","blockEditorPrivateApis","blockEditorStore","BlockControls","patternsPrivateApis","parse","cloneBlock","RichTextData","name","patternBlockName","unlock","useLayoutClasses","PARTIAL_SYNCING_SUPPORTED_BLOCKS","fullAlignments","useInferredLayout","blocks","parentLayout","initialInferredAlignmentRef","length","alignment","current","undefined","isConstrained","type","hasFullAlignment","some","block","includes","attributes","align","layout","hasOverridableAttributes","Object","keys","metadata","bindings","values","binding","source","hasOverridableBlocks","innerBlocks","getOverridableAttributes","entries","filter","map","attributeKey","applyInitialContentValuesToInnerBlocks","content","defaultValues","blockId","id","newAttributes","_defaultValues$blockI","contentValues","isAttributeEqual","attribute1","attribute2","toString","getContentValuesFromInnerBlocks","assign","_content$blockId","blockName","setBlockEditMode","setEditMode","mode","forEach","editMode","clientId","ReusableBlockEdit","ref","__unstableParentLayout","patternClientId","setAttributes","registry","hasAlreadyRendered","record","editedRecord","hasResolved","isMissing","initialContent","defaultContent","replaceInnerBlocks","__unstableMarkNextChangeAsNotPersistent","setBlockEditingMode","syncDerivedUpdates","userCanEdit","getBlockEditingMode","onNavigateToEntityRecord","editingMode","select","canUser","getBlocks","getSettings","_getBlockEditingMode","canEdit","canOverrideBlocks","initialBlocks","_editedRecord$blocks$","originalEditingMode","batch","layoutClasses","blockProps","className","innerBlocksProps","templateLock","renderAppender","ButtonBlockAppender","prevBlocks","subscribe","handleEditOriginal","postId","postType","resetContent","children","createElement","uniqueId","onClick","disabled","__experimentalIsFocusable"],"sources":["@wordpress/block-library/src/block/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useRegistry, useSelect, useDispatch } from '@wordpress/data';\nimport { useRef, useMemo, useEffect } from '@wordpress/element';\nimport { useEntityRecord, store as coreStore } from '@wordpress/core-data';\nimport {\n\tPlaceholder,\n\tSpinner,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseInnerBlocksProps,\n\tRecursionProvider,\n\tuseHasRecursion,\n\tInnerBlocks,\n\tuseBlockProps,\n\tWarning,\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\nimport { parse, cloneBlock } from '@wordpress/blocks';\nimport { RichTextData } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport { name as patternBlockName } from './index';\nimport { unlock } from '../lock-unlock';\n\nconst { useLayoutClasses } = unlock( blockEditorPrivateApis );\nconst { PARTIAL_SYNCING_SUPPORTED_BLOCKS } = unlock( patternsPrivateApis );\n\nconst fullAlignments = [ 'full', 'wide', 'left', 'right' ];\n\nconst useInferredLayout = ( blocks, parentLayout ) => {\n\tconst initialInferredAlignmentRef = useRef();\n\n\treturn useMemo( () => {\n\t\t// Exit early if the pattern's blocks haven't loaded yet.\n\t\tif ( ! blocks?.length ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tlet alignment = initialInferredAlignmentRef.current;\n\n\t\t// Only track the initial alignment so that temporarily removed\n\t\t// alignments can be reapplied.\n\t\tif ( alignment === undefined ) {\n\t\t\tconst isConstrained = parentLayout?.type === 'constrained';\n\t\t\tconst hasFullAlignment = blocks.some( ( block ) =>\n\t\t\t\tfullAlignments.includes( block.attributes.align )\n\t\t\t);\n\n\t\t\talignment = isConstrained && hasFullAlignment ? 'full' : null;\n\t\t\tinitialInferredAlignmentRef.current = alignment;\n\t\t}\n\n\t\tconst layout = alignment ? parentLayout : undefined;\n\n\t\treturn { alignment, layout };\n\t}, [ blocks, parentLayout ] );\n};\n\nfunction hasOverridableAttributes( block ) {\n\treturn (\n\t\tObject.keys( PARTIAL_SYNCING_SUPPORTED_BLOCKS ).includes(\n\t\t\tblock.name\n\t\t) &&\n\t\t!! block.attributes.metadata?.bindings &&\n\t\tObject.values( block.attributes.metadata.bindings ).some(\n\t\t\t( binding ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t);\n}\n\nfunction hasOverridableBlocks( blocks ) {\n\treturn blocks.some( ( block ) => {\n\t\tif ( hasOverridableAttributes( block ) ) return true;\n\t\treturn hasOverridableBlocks( block.innerBlocks );\n\t} );\n}\n\nfunction getOverridableAttributes( block ) {\n\treturn Object.entries( block.attributes.metadata.bindings )\n\t\t.filter(\n\t\t\t( [ , binding ] ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t\t.map( ( [ attributeKey ] ) => attributeKey );\n}\n\nfunction applyInitialContentValuesToInnerBlocks(\n\tblocks,\n\tcontent = {},\n\tdefaultValues\n) {\n\treturn blocks.map( ( block ) => {\n\t\tconst innerBlocks = applyInitialContentValuesToInnerBlocks(\n\t\t\tblock.innerBlocks,\n\t\t\tcontent,\n\t\t\tdefaultValues\n\t\t);\n\t\tconst blockId = block.attributes.metadata?.id;\n\t\tif ( ! hasOverridableAttributes( block ) || ! blockId )\n\t\t\treturn { ...block, innerBlocks };\n\t\tconst attributes = getOverridableAttributes( block );\n\t\tconst newAttributes = { ...block.attributes };\n\t\tfor ( const attributeKey of attributes ) {\n\t\t\tdefaultValues[ blockId ] ??= {};\n\t\t\tdefaultValues[ blockId ][ attributeKey ] =\n\t\t\t\tblock.attributes[ attributeKey ];\n\n\t\t\tconst contentValues = content[ blockId ]?.values;\n\t\t\tif ( contentValues?.[ attributeKey ] !== undefined ) {\n\t\t\t\tnewAttributes[ attributeKey ] = contentValues[ attributeKey ];\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t...block,\n\t\t\tattributes: newAttributes,\n\t\t\tinnerBlocks,\n\t\t};\n\t} );\n}\n\nfunction isAttributeEqual( attribute1, attribute2 ) {\n\tif (\n\t\tattribute1 instanceof RichTextData &&\n\t\tattribute2 instanceof RichTextData\n\t) {\n\t\treturn attribute1.toString() === attribute2.toString();\n\t}\n\treturn attribute1 === attribute2;\n}\n\nfunction getContentValuesFromInnerBlocks( blocks, defaultValues ) {\n\t/** @type {Record<string, { values: Record<string, unknown>}>} */\n\tconst content = {};\n\tfor ( const block of blocks ) {\n\t\tif ( block.name === patternBlockName ) continue;\n\t\tObject.assign(\n\t\t\tcontent,\n\t\t\tgetContentValuesFromInnerBlocks( block.innerBlocks, defaultValues )\n\t\t);\n\t\tconst blockId = block.attributes.metadata?.id;\n\t\tif ( ! hasOverridableAttributes( block ) || ! blockId ) continue;\n\t\tconst attributes = getOverridableAttributes( block );\n\t\tfor ( const attributeKey of attributes ) {\n\t\t\tif (\n\t\t\t\t! isAttributeEqual(\n\t\t\t\t\tblock.attributes[ attributeKey ],\n\t\t\t\t\tdefaultValues[ blockId ][ attributeKey ]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcontent[ blockId ] ??= { values: {}, blockName: block.name };\n\t\t\t\t// TODO: We need a way to represent `undefined` in the serialized overrides.\n\t\t\t\t// Also see: https://github.com/WordPress/gutenberg/pull/57249#discussion_r1452987871\n\t\t\t\tcontent[ blockId ].values[ attributeKey ] =\n\t\t\t\t\tblock.attributes[ attributeKey ] === undefined\n\t\t\t\t\t\t? // TODO: We use an empty string to represent undefined for now until\n\t\t\t\t\t\t // we support a richer format for overrides and the block binding API.\n\t\t\t\t\t\t // Currently only the `linkTarget` attribute of `core/button` is affected.\n\t\t\t\t\t\t ''\n\t\t\t\t\t\t: block.attributes[ attributeKey ];\n\t\t\t}\n\t\t}\n\t}\n\treturn Object.keys( content ).length > 0 ? content : undefined;\n}\n\nfunction setBlockEditMode( setEditMode, blocks, mode ) {\n\tblocks.forEach( ( block ) => {\n\t\tconst editMode =\n\t\t\tmode ||\n\t\t\t( hasOverridableAttributes( block ) ? 'contentOnly' : 'disabled' );\n\t\tsetEditMode( block.clientId, editMode );\n\n\t\tsetBlockEditMode(\n\t\t\tsetEditMode,\n\t\t\tblock.innerBlocks,\n\t\t\t// Disable editing for nested patterns.\n\t\t\tblock.name === patternBlockName ? 'disabled' : mode\n\t\t);\n\t} );\n}\n\nexport default function ReusableBlockEdit( {\n\tname,\n\tattributes: { ref, content },\n\t__unstableParentLayout: parentLayout,\n\tclientId: patternClientId,\n\tsetAttributes,\n} ) {\n\tconst registry = useRegistry();\n\tconst hasAlreadyRendered = useHasRecursion( ref );\n\tconst { record, editedRecord, hasResolved } = useEntityRecord(\n\t\t'postType',\n\t\t'wp_block',\n\t\tref\n\t);\n\tconst isMissing = hasResolved && ! record;\n\n\t// The initial value of the `content` attribute.\n\tconst initialContent = useRef( content );\n\n\t// The default content values from the original pattern for overridable attributes.\n\t// Set by the `applyInitialContentValuesToInnerBlocks` function.\n\tconst defaultContent = useRef( {} );\n\n\tconst {\n\t\treplaceInnerBlocks,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tsetBlockEditingMode,\n\t} = useDispatch( blockEditorStore );\n\tconst { syncDerivedUpdates } = unlock( useDispatch( blockEditorStore ) );\n\n\tconst {\n\t\tinnerBlocks,\n\t\tuserCanEdit,\n\t\tgetBlockEditingMode,\n\t\tonNavigateToEntityRecord,\n\t\teditingMode,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst {\n\t\t\t\tgetBlocks,\n\t\t\t\tgetSettings,\n\t\t\t\tgetBlockEditingMode: _getBlockEditingMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst blocks = getBlocks( patternClientId );\n\t\t\tconst canEdit = canUser( 'update', 'blocks', ref );\n\n\t\t\t// For editing link to the site editor if the theme and user permissions support it.\n\t\t\treturn {\n\t\t\t\tinnerBlocks: blocks,\n\t\t\t\tuserCanEdit: canEdit,\n\t\t\t\tgetBlockEditingMode: _getBlockEditingMode,\n\t\t\t\tonNavigateToEntityRecord:\n\t\t\t\t\tgetSettings().onNavigateToEntityRecord,\n\t\t\t\teditingMode: _getBlockEditingMode( patternClientId ),\n\t\t\t};\n\t\t},\n\t\t[ patternClientId, ref ]\n\t);\n\n\t// Sync the editing mode of the pattern block with the inner blocks.\n\tuseEffect( () => {\n\t\tsetBlockEditMode(\n\t\t\tsetBlockEditingMode,\n\t\t\tinnerBlocks,\n\t\t\t// Disable editing if the pattern itself is disabled.\n\t\t\teditingMode === 'disabled' ? 'disabled' : undefined\n\t\t);\n\t}, [ editingMode, innerBlocks, setBlockEditingMode ] );\n\n\tconst canOverrideBlocks = useMemo(\n\t\t() => hasOverridableBlocks( innerBlocks ),\n\t\t[ innerBlocks ]\n\t);\n\n\tconst initialBlocks = useMemo(\n\t\t() =>\n\t\t\t// Clone the blocks to generate new client IDs.\n\t\t\teditedRecord.blocks?.map( ( block ) => cloneBlock( block ) ) ??\n\t\t\t( editedRecord.content && typeof editedRecord.content !== 'function'\n\t\t\t\t? parse( editedRecord.content )\n\t\t\t\t: [] ),\n\t\t[ editedRecord.blocks, editedRecord.content ]\n\t);\n\n\t// Apply the initial overrides from the pattern block to the inner blocks.\n\tuseEffect( () => {\n\t\tdefaultContent.current = {};\n\t\tconst originalEditingMode = getBlockEditingMode( patternClientId );\n\t\t// Replace the contents of the blocks with the overrides.\n\t\tregistry.batch( () => {\n\t\t\tsetBlockEditingMode( patternClientId, 'default' );\n\t\t\tsyncDerivedUpdates( () => {\n\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\tpatternClientId,\n\t\t\t\t\tapplyInitialContentValuesToInnerBlocks(\n\t\t\t\t\t\tinitialBlocks,\n\t\t\t\t\t\tinitialContent.current,\n\t\t\t\t\t\tdefaultContent.current\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} );\n\t\t\tsetBlockEditingMode( patternClientId, originalEditingMode );\n\t\t} );\n\t}, [\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tpatternClientId,\n\t\tinitialBlocks,\n\t\treplaceInnerBlocks,\n\t\tregistry,\n\t\tgetBlockEditingMode,\n\t\tsetBlockEditingMode,\n\t\tsyncDerivedUpdates,\n\t] );\n\n\tconst { alignment, layout } = useInferredLayout(\n\t\tinnerBlocks,\n\t\tparentLayout\n\t);\n\tconst layoutClasses = useLayoutClasses( { layout }, name );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames(\n\t\t\t'block-library-block__reusable-block-container',\n\t\t\tlayout && layoutClasses,\n\t\t\t{ [ `align${ alignment }` ]: alignment }\n\t\t),\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplateLock: 'all',\n\t\tlayout,\n\t\trenderAppender: innerBlocks?.length\n\t\t\t? undefined\n\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t} );\n\n\t// Sync the `content` attribute from the updated blocks to the pattern block.\n\t// `syncDerivedUpdates` is used here to avoid creating an additional undo level.\n\tuseEffect( () => {\n\t\tconst { getBlocks } = registry.select( blockEditorStore );\n\t\tlet prevBlocks = getBlocks( patternClientId );\n\t\treturn registry.subscribe( () => {\n\t\t\tconst blocks = getBlocks( patternClientId );\n\t\t\tif ( blocks !== prevBlocks ) {\n\t\t\t\tprevBlocks = blocks;\n\t\t\t\tsyncDerivedUpdates( () => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\tcontent: getContentValuesFromInnerBlocks(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\tdefaultContent.current\n\t\t\t\t\t\t),\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t}\n\t\t}, blockEditorStore );\n\t}, [ syncDerivedUpdates, patternClientId, registry, setAttributes ] );\n\n\tconst handleEditOriginal = () => {\n\t\tonNavigateToEntityRecord( {\n\t\t\tpostId: ref,\n\t\t\tpostType: 'wp_block',\n\t\t} );\n\t};\n\n\tconst resetContent = () => {\n\t\tif ( content ) {\n\t\t\treplaceInnerBlocks( patternClientId, initialBlocks );\n\t\t}\n\t};\n\n\tlet children = null;\n\n\tif ( hasAlreadyRendered ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( isMissing ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block has been deleted or is unavailable.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( ! hasResolved ) {\n\t\tchildren = (\n\t\t\t<Placeholder>\n\t\t\t\t<Spinner />\n\t\t\t</Placeholder>\n\t\t);\n\t}\n\n\treturn (\n\t\t<RecursionProvider uniqueId={ ref }>\n\t\t\t{ userCanEdit && onNavigateToEntityRecord && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ToolbarButton onClick={ handleEditOriginal }>\n\t\t\t\t\t\t\t{ __( 'Edit original' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\n\t\t\t{ canOverrideBlocks && (\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={ resetContent }\n\t\t\t\t\t\t\tdisabled={ ! content }\n\t\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\n\t\t\t{ children === null ? (\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t) : (\n\t\t\t\t<div { ...blockProps }>{ children }</div>\n\t\t\t) }\n\t\t</RecursionProvider>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","useRegistry","useSelect","useDispatch","useRef","useMemo","useEffect","useEntityRecord","store","coreStore","Placeholder","Spinner","ToolbarButton","ToolbarGroup","__","useInnerBlocksProps","RecursionProvider","useHasRecursion","InnerBlocks","useBlockProps","Warning","privateApis","blockEditorPrivateApis","blockEditorStore","BlockControls","patternsPrivateApis","parse","cloneBlock","blocksStore","RichTextData","name","patternBlockName","unlock","useLayoutClasses","PARTIAL_SYNCING_SUPPORTED_BLOCKS","fullAlignments","getLegacyIdMap","blocks","content","nameCount","idToClientIdMap","block","innerBlocks","length","id","attributes","metadata","clientId","useInferredLayout","parentLayout","initialInferredAlignmentRef","alignment","current","undefined","isConstrained","type","hasFullAlignment","some","includes","align","layout","hasOverridableAttributes","Object","keys","bindings","values","binding","source","hasOverridableBlocks","getOverridableAttributes","entries","filter","map","attributeKey","applyInitialContentValuesToInnerBlocks","defaultValues","legacyIdMap","_legacyIdMap$block$cl","metadataName","newAttributes","_defaultValues$metada","contentValues","isAttributeEqual","attribute1","attribute2","toString","getContentValuesFromInnerBlocks","_legacyIdMap$block$cl2","assign","_content$metadataName","setBlockEditMode","setEditMode","mode","forEach","editMode","ReusableBlockEdit","ref","__unstableParentLayout","patternClientId","setAttributes","registry","hasAlreadyRendered","record","editedRecord","hasResolved","isMissing","initialContent","defaultContent","replaceInnerBlocks","__unstableMarkNextChangeAsNotPersistent","setBlockEditingMode","syncDerivedUpdates","userCanEdit","getBlockEditingMode","onNavigateToEntityRecord","editingMode","hasPatternOverridesSource","select","canUser","getBlocks","getSettings","_getBlockEditingMode","getBlockBindingsSource","canEdit","canOverrideBlocks","initialBlocks","_editedRecord$blocks$","originalEditingMode","batch","layoutClasses","blockProps","className","innerBlocksProps","templateLock","renderAppender","ButtonBlockAppender","prevBlocks","subscribe","handleEditOriginal","postId","postType","resetContent","children","createElement","uniqueId","onClick","disabled","__experimentalIsFocusable"],"sources":["@wordpress/block-library/src/block/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useRegistry, useSelect, useDispatch } from '@wordpress/data';\nimport { useRef, useMemo, useEffect } from '@wordpress/element';\nimport { useEntityRecord, store as coreStore } from '@wordpress/core-data';\nimport {\n\tPlaceholder,\n\tSpinner,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseInnerBlocksProps,\n\tRecursionProvider,\n\tuseHasRecursion,\n\tInnerBlocks,\n\tuseBlockProps,\n\tWarning,\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\nimport { parse, cloneBlock, store as blocksStore } from '@wordpress/blocks';\nimport { RichTextData } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport { name as patternBlockName } from './index';\nimport { unlock } from '../lock-unlock';\n\nconst { useLayoutClasses } = unlock( blockEditorPrivateApis );\nconst { PARTIAL_SYNCING_SUPPORTED_BLOCKS } = unlock( patternsPrivateApis );\n\nconst fullAlignments = [ 'full', 'wide', 'left', 'right' ];\n\nfunction getLegacyIdMap( blocks, content, nameCount = {} ) {\n\tlet idToClientIdMap = {};\n\tfor ( const block of blocks ) {\n\t\tif ( block?.innerBlocks?.length ) {\n\t\t\tidToClientIdMap = {\n\t\t\t\t...idToClientIdMap,\n\t\t\t\t...getLegacyIdMap( block.innerBlocks, content, nameCount ),\n\t\t\t};\n\t\t}\n\n\t\tconst id = block.attributes.metadata?.id;\n\t\tconst clientId = block.clientId;\n\t\tif ( id && content?.[ id ] ) {\n\t\t\tidToClientIdMap[ clientId ] = id;\n\t\t}\n\t}\n\treturn idToClientIdMap;\n}\n\nconst useInferredLayout = ( blocks, parentLayout ) => {\n\tconst initialInferredAlignmentRef = useRef();\n\n\treturn useMemo( () => {\n\t\t// Exit early if the pattern's blocks haven't loaded yet.\n\t\tif ( ! blocks?.length ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tlet alignment = initialInferredAlignmentRef.current;\n\n\t\t// Only track the initial alignment so that temporarily removed\n\t\t// alignments can be reapplied.\n\t\tif ( alignment === undefined ) {\n\t\t\tconst isConstrained = parentLayout?.type === 'constrained';\n\t\t\tconst hasFullAlignment = blocks.some( ( block ) =>\n\t\t\t\tfullAlignments.includes( block.attributes.align )\n\t\t\t);\n\n\t\t\talignment = isConstrained && hasFullAlignment ? 'full' : null;\n\t\t\tinitialInferredAlignmentRef.current = alignment;\n\t\t}\n\n\t\tconst layout = alignment ? parentLayout : undefined;\n\n\t\treturn { alignment, layout };\n\t}, [ blocks, parentLayout ] );\n};\n\nfunction hasOverridableAttributes( block ) {\n\treturn (\n\t\tObject.keys( PARTIAL_SYNCING_SUPPORTED_BLOCKS ).includes(\n\t\t\tblock.name\n\t\t) &&\n\t\t!! block.attributes.metadata?.bindings &&\n\t\tObject.values( block.attributes.metadata.bindings ).some(\n\t\t\t( binding ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t);\n}\n\nfunction hasOverridableBlocks( blocks ) {\n\treturn blocks.some( ( block ) => {\n\t\tif ( hasOverridableAttributes( block ) ) return true;\n\t\treturn hasOverridableBlocks( block.innerBlocks );\n\t} );\n}\n\nfunction getOverridableAttributes( block ) {\n\treturn Object.entries( block.attributes.metadata.bindings )\n\t\t.filter(\n\t\t\t( [ , binding ] ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t\t.map( ( [ attributeKey ] ) => attributeKey );\n}\n\nfunction applyInitialContentValuesToInnerBlocks(\n\tblocks,\n\tcontent = {},\n\tdefaultValues,\n\tlegacyIdMap\n) {\n\treturn blocks.map( ( block ) => {\n\t\tconst innerBlocks = applyInitialContentValuesToInnerBlocks(\n\t\t\tblock.innerBlocks,\n\t\t\tcontent,\n\t\t\tdefaultValues,\n\t\t\tlegacyIdMap\n\t\t);\n\t\tconst metadataName =\n\t\t\tlegacyIdMap?.[ block.clientId ] ?? block.attributes.metadata?.name;\n\n\t\tif ( ! metadataName || ! hasOverridableAttributes( block ) ) {\n\t\t\treturn { ...block, innerBlocks };\n\t\t}\n\n\t\tconst attributes = getOverridableAttributes( block );\n\t\tconst newAttributes = { ...block.attributes };\n\t\tfor ( const attributeKey of attributes ) {\n\t\t\tdefaultValues[ metadataName ] ??= {};\n\t\t\tdefaultValues[ metadataName ][ attributeKey ] =\n\t\t\t\tblock.attributes[ attributeKey ];\n\n\t\t\tconst contentValues = content[ metadataName ];\n\t\t\tif ( contentValues?.[ attributeKey ] !== undefined ) {\n\t\t\t\tnewAttributes[ attributeKey ] = contentValues[ attributeKey ];\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t...block,\n\t\t\tattributes: newAttributes,\n\t\t\tinnerBlocks,\n\t\t};\n\t} );\n}\n\nfunction isAttributeEqual( attribute1, attribute2 ) {\n\tif (\n\t\tattribute1 instanceof RichTextData &&\n\t\tattribute2 instanceof RichTextData\n\t) {\n\t\treturn attribute1.toString() === attribute2.toString();\n\t}\n\treturn attribute1 === attribute2;\n}\n\nfunction getContentValuesFromInnerBlocks( blocks, defaultValues, legacyIdMap ) {\n\t/** @type {Record<string, { values: Record<string, unknown>}>} */\n\tconst content = {};\n\tfor ( const block of blocks ) {\n\t\tif ( block.name === patternBlockName ) continue;\n\t\tif ( block.innerBlocks.length ) {\n\t\t\tObject.assign(\n\t\t\t\tcontent,\n\t\t\t\tgetContentValuesFromInnerBlocks(\n\t\t\t\t\tblock.innerBlocks,\n\t\t\t\t\tdefaultValues,\n\t\t\t\t\tlegacyIdMap\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\tconst metadataName =\n\t\t\tlegacyIdMap?.[ block.clientId ] ?? block.attributes.metadata?.name;\n\t\tif ( ! metadataName || ! hasOverridableAttributes( block ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst attributes = getOverridableAttributes( block );\n\n\t\tfor ( const attributeKey of attributes ) {\n\t\t\tif (\n\t\t\t\t! isAttributeEqual(\n\t\t\t\t\tblock.attributes[ attributeKey ],\n\t\t\t\t\tdefaultValues?.[ metadataName ]?.[ attributeKey ]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcontent[ metadataName ] ??= {};\n\t\t\t\t// TODO: We need a way to represent `undefined` in the serialized overrides.\n\t\t\t\t// Also see: https://github.com/WordPress/gutenberg/pull/57249#discussion_r1452987871\n\t\t\t\tcontent[ metadataName ][ attributeKey ] =\n\t\t\t\t\tblock.attributes[ attributeKey ] === undefined\n\t\t\t\t\t\t? // TODO: We use an empty string to represent undefined for now until\n\t\t\t\t\t\t // we support a richer format for overrides and the block binding API.\n\t\t\t\t\t\t // Currently only the `linkTarget` attribute of `core/button` is affected.\n\t\t\t\t\t\t ''\n\t\t\t\t\t\t: block.attributes[ attributeKey ];\n\t\t\t}\n\t\t}\n\t}\n\treturn Object.keys( content ).length > 0 ? content : undefined;\n}\n\nfunction setBlockEditMode( setEditMode, blocks, mode ) {\n\tblocks.forEach( ( block ) => {\n\t\tconst editMode =\n\t\t\tmode ||\n\t\t\t( hasOverridableAttributes( block ) ? 'contentOnly' : 'disabled' );\n\t\tsetEditMode( block.clientId, editMode );\n\n\t\tsetBlockEditMode(\n\t\t\tsetEditMode,\n\t\t\tblock.innerBlocks,\n\t\t\t// Disable editing for nested patterns.\n\t\t\tblock.name === patternBlockName ? 'disabled' : mode\n\t\t);\n\t} );\n}\n\nexport default function ReusableBlockEdit( {\n\tname,\n\tattributes: { ref, content },\n\t__unstableParentLayout: parentLayout,\n\tclientId: patternClientId,\n\tsetAttributes,\n} ) {\n\tconst registry = useRegistry();\n\tconst hasAlreadyRendered = useHasRecursion( ref );\n\tconst { record, editedRecord, hasResolved } = useEntityRecord(\n\t\t'postType',\n\t\t'wp_block',\n\t\tref\n\t);\n\tconst isMissing = hasResolved && ! record;\n\n\t// The initial value of the `content` attribute.\n\tconst initialContent = useRef( content );\n\n\t// The default content values from the original pattern for overridable attributes.\n\t// Set by the `applyInitialContentValuesToInnerBlocks` function.\n\tconst defaultContent = useRef( {} );\n\n\tconst {\n\t\treplaceInnerBlocks,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tsetBlockEditingMode,\n\t} = useDispatch( blockEditorStore );\n\tconst { syncDerivedUpdates } = unlock( useDispatch( blockEditorStore ) );\n\n\tconst {\n\t\tinnerBlocks,\n\t\tuserCanEdit,\n\t\tgetBlockEditingMode,\n\t\tonNavigateToEntityRecord,\n\t\teditingMode,\n\t\thasPatternOverridesSource,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst {\n\t\t\t\tgetBlocks,\n\t\t\t\tgetSettings,\n\t\t\t\tgetBlockEditingMode: _getBlockEditingMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockBindingsSource } = unlock( select( blocksStore ) );\n\t\t\tconst blocks = getBlocks( patternClientId );\n\t\t\tconst canEdit = canUser( 'update', 'blocks', ref );\n\n\t\t\t// For editing link to the site editor if the theme and user permissions support it.\n\t\t\treturn {\n\t\t\t\tinnerBlocks: blocks,\n\t\t\t\tuserCanEdit: canEdit,\n\t\t\t\tgetBlockEditingMode: _getBlockEditingMode,\n\t\t\t\tonNavigateToEntityRecord:\n\t\t\t\t\tgetSettings().onNavigateToEntityRecord,\n\t\t\t\teditingMode: _getBlockEditingMode( patternClientId ),\n\t\t\t\thasPatternOverridesSource: !! getBlockBindingsSource(\n\t\t\t\t\t'core/pattern-overrides'\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ patternClientId, ref ]\n\t);\n\n\t// Sync the editing mode of the pattern block with the inner blocks.\n\tuseEffect( () => {\n\t\tsetBlockEditMode(\n\t\t\tsetBlockEditingMode,\n\t\t\tinnerBlocks,\n\t\t\t// Disable editing if the pattern itself is disabled.\n\t\t\teditingMode === 'disabled' || ! hasPatternOverridesSource\n\t\t\t\t? 'disabled'\n\t\t\t\t: undefined\n\t\t);\n\t}, [\n\t\teditingMode,\n\t\tinnerBlocks,\n\t\tsetBlockEditingMode,\n\t\thasPatternOverridesSource,\n\t] );\n\n\tconst canOverrideBlocks = useMemo(\n\t\t() => hasPatternOverridesSource && hasOverridableBlocks( innerBlocks ),\n\t\t[ hasPatternOverridesSource, innerBlocks ]\n\t);\n\n\tconst initialBlocks = useMemo(\n\t\t() =>\n\t\t\t// Clone the blocks to generate new client IDs.\n\t\t\teditedRecord.blocks?.map( ( block ) => cloneBlock( block ) ) ??\n\t\t\t( editedRecord.content && typeof editedRecord.content !== 'function'\n\t\t\t\t? parse( editedRecord.content )\n\t\t\t\t: [] ),\n\t\t[ editedRecord.blocks, editedRecord.content ]\n\t);\n\n\tconst legacyIdMap = useRef( {} );\n\n\t// Apply the initial overrides from the pattern block to the inner blocks.\n\tuseEffect( () => {\n\t\t// Build a map of clientIds to the old nano id system to provide back compat.\n\t\tlegacyIdMap.current = getLegacyIdMap(\n\t\t\tinitialBlocks,\n\t\t\tinitialContent.current\n\t\t);\n\t\tdefaultContent.current = {};\n\t\tconst originalEditingMode = getBlockEditingMode( patternClientId );\n\t\t// Replace the contents of the blocks with the overrides.\n\t\tregistry.batch( () => {\n\t\t\tsetBlockEditingMode( patternClientId, 'default' );\n\t\t\tsyncDerivedUpdates( () => {\n\t\t\t\tconst blocks = hasPatternOverridesSource\n\t\t\t\t\t? applyInitialContentValuesToInnerBlocks(\n\t\t\t\t\t\t\tinitialBlocks,\n\t\t\t\t\t\t\tinitialContent.current,\n\t\t\t\t\t\t\tdefaultContent.current,\n\t\t\t\t\t\t\tlegacyIdMap.current\n\t\t\t\t\t )\n\t\t\t\t\t: initialBlocks;\n\n\t\t\t\treplaceInnerBlocks( patternClientId, blocks );\n\t\t\t} );\n\t\t\tsetBlockEditingMode( patternClientId, originalEditingMode );\n\t\t} );\n\t}, [\n\t\thasPatternOverridesSource,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tpatternClientId,\n\t\tinitialBlocks,\n\t\treplaceInnerBlocks,\n\t\tregistry,\n\t\tgetBlockEditingMode,\n\t\tsetBlockEditingMode,\n\t\tsyncDerivedUpdates,\n\t] );\n\n\tconst { alignment, layout } = useInferredLayout(\n\t\tinnerBlocks,\n\t\tparentLayout\n\t);\n\tconst layoutClasses = useLayoutClasses( { layout }, name );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames(\n\t\t\t'block-library-block__reusable-block-container',\n\t\t\tlayout && layoutClasses,\n\t\t\t{ [ `align${ alignment }` ]: alignment }\n\t\t),\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplateLock: 'all',\n\t\tlayout,\n\t\trenderAppender: innerBlocks?.length\n\t\t\t? undefined\n\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t} );\n\n\t// Sync the `content` attribute from the updated blocks to the pattern block.\n\t// `syncDerivedUpdates` is used here to avoid creating an additional undo level.\n\tuseEffect( () => {\n\t\tif ( ! hasPatternOverridesSource ) {\n\t\t\treturn;\n\t\t}\n\t\tconst { getBlocks } = registry.select( blockEditorStore );\n\t\tlet prevBlocks = getBlocks( patternClientId );\n\t\treturn registry.subscribe( () => {\n\t\t\tconst blocks = getBlocks( patternClientId );\n\t\t\tif ( blocks !== prevBlocks ) {\n\t\t\t\tprevBlocks = blocks;\n\t\t\t\tsyncDerivedUpdates( () => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\tcontent: getContentValuesFromInnerBlocks(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\tdefaultContent.current,\n\t\t\t\t\t\t\tlegacyIdMap.current\n\t\t\t\t\t\t),\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t}\n\t\t}, blockEditorStore );\n\t}, [\n\t\thasPatternOverridesSource,\n\t\tsyncDerivedUpdates,\n\t\tpatternClientId,\n\t\tregistry,\n\t\tsetAttributes,\n\t] );\n\n\tconst handleEditOriginal = () => {\n\t\tonNavigateToEntityRecord( {\n\t\t\tpostId: ref,\n\t\t\tpostType: 'wp_block',\n\t\t} );\n\t};\n\n\tconst resetContent = () => {\n\t\tif ( content ) {\n\t\t\treplaceInnerBlocks( patternClientId, initialBlocks );\n\t\t}\n\t};\n\n\tlet children = null;\n\n\tif ( hasAlreadyRendered ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( isMissing ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block has been deleted or is unavailable.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( ! hasResolved ) {\n\t\tchildren = (\n\t\t\t<Placeholder>\n\t\t\t\t<Spinner />\n\t\t\t</Placeholder>\n\t\t);\n\t}\n\n\treturn (\n\t\t<RecursionProvider uniqueId={ ref }>\n\t\t\t{ userCanEdit && onNavigateToEntityRecord && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ToolbarButton onClick={ handleEditOriginal }>\n\t\t\t\t\t\t\t{ __( 'Edit original' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\n\t\t\t{ canOverrideBlocks && (\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={ resetContent }\n\t\t\t\t\t\t\tdisabled={ ! content }\n\t\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\n\t\t\t{ children === null ? (\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t) : (\n\t\t\t\t<div { ...blockProps }>{ children }</div>\n\t\t\t) }\n\t\t</RecursionProvider>\n\t);\n}\n"],"mappings":"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"}
@@ -19,7 +19,9 @@ export default function save({
19
19
  // prevent embedding in PHP. Ideally checks for the code block,
20
20
  // or pre/code tags, should be made on the PHP side?
21
21
  ,
22
- value: escape(attributes.content.toString())
22
+ value: escape(typeof attributes.content === 'string' ? attributes.content : attributes.content.toHTMLString({
23
+ preserveWhiteSpace: true
24
+ }))
23
25
  }));
24
26
  }
25
27
  //# sourceMappingURL=save.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["RichText","useBlockProps","escape","save","attributes","createElement","Content","tagName","value","content","toString"],"sources":["@wordpress/block-library/src/code/save.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { escape } from './utils';\n\nexport default function save( { attributes } ) {\n\treturn (\n\t\t<pre { ...useBlockProps.save() }>\n\t\t\t<RichText.Content\n\t\t\t\ttagName=\"code\"\n\t\t\t\t// To do: `escape` encodes characters in shortcodes and URLs to\n\t\t\t\t// prevent embedding in PHP. Ideally checks for the code block,\n\t\t\t\t// or pre/code tags, should be made on the PHP side?\n\t\t\t\tvalue={ escape( attributes.content.toString() ) }\n\t\t\t/>\n\t\t</pre>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,QAAQ,EAAEC,aAAa,QAAQ,yBAAyB;;AAEjE;AACA;AACA;AACA,SAASC,MAAM,QAAQ,SAAS;AAEhC,eAAe,SAASC,IAAIA,CAAE;EAAEC;AAAW,CAAC,EAAG;EAC9C,OACCC,aAAA;IAAA,GAAUJ,aAAa,CAACE,IAAI,CAAC;EAAC,GAC7BE,aAAA,CAACL,QAAQ,CAACM,OAAO;IAChBC,OAAO,EAAC;IACR;IACA;IACA;IAAA;IACAC,KAAK,EAAGN,MAAM,CAAEE,UAAU,CAACK,OAAO,CAACC,QAAQ,CAAC,CAAE;EAAG,CACjD,CACG,CAAC;AAER"}
1
+ {"version":3,"names":["RichText","useBlockProps","escape","save","attributes","createElement","Content","tagName","value","content","toHTMLString","preserveWhiteSpace"],"sources":["@wordpress/block-library/src/code/save.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { escape } from './utils';\n\nexport default function save( { attributes } ) {\n\treturn (\n\t\t<pre { ...useBlockProps.save() }>\n\t\t\t<RichText.Content\n\t\t\t\ttagName=\"code\"\n\t\t\t\t// To do: `escape` encodes characters in shortcodes and URLs to\n\t\t\t\t// prevent embedding in PHP. Ideally checks for the code block,\n\t\t\t\t// or pre/code tags, should be made on the PHP side?\n\t\t\t\tvalue={ escape(\n\t\t\t\t\ttypeof attributes.content === 'string'\n\t\t\t\t\t\t? attributes.content\n\t\t\t\t\t\t: attributes.content.toHTMLString( {\n\t\t\t\t\t\t\t\tpreserveWhiteSpace: true,\n\t\t\t\t\t\t } )\n\t\t\t\t) }\n\t\t\t/>\n\t\t</pre>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,QAAQ,EAAEC,aAAa,QAAQ,yBAAyB;;AAEjE;AACA;AACA;AACA,SAASC,MAAM,QAAQ,SAAS;AAEhC,eAAe,SAASC,IAAIA,CAAE;EAAEC;AAAW,CAAC,EAAG;EAC9C,OACCC,aAAA;IAAA,GAAUJ,aAAa,CAACE,IAAI,CAAC;EAAC,GAC7BE,aAAA,CAACL,QAAQ,CAACM,OAAO;IAChBC,OAAO,EAAC;IACR;IACA;IACA;IAAA;IACAC,KAAK,EAAGN,MAAM,CACb,OAAOE,UAAU,CAACK,OAAO,KAAK,QAAQ,GACnCL,UAAU,CAACK,OAAO,GAClBL,UAAU,CAACK,OAAO,CAACC,YAAY,CAAE;MACjCC,kBAAkB,EAAE;IACpB,CAAE,CACN;EAAG,CACH,CACG,CAAC;AAER"}
@@ -13,7 +13,7 @@ import { Placeholder } from '@wordpress/components';
13
13
  import { useDispatch, useSelect } from '@wordpress/data';
14
14
  import { BlockIcon, MediaPlaceholder, useBlockProps, store as blockEditorStore, __experimentalUseBorderProps as useBorderProps, __experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles, useBlockEditingMode } from '@wordpress/block-editor';
15
15
  import { useEffect, useRef, useState } from '@wordpress/element';
16
- import { __ } from '@wordpress/i18n';
16
+ import { __, sprintf } from '@wordpress/i18n';
17
17
  import { image as icon, plugins as pluginsIcon } from '@wordpress/icons';
18
18
  import { store as noticesStore } from '@wordpress/notices';
19
19
 
@@ -297,14 +297,17 @@ export function ImageEdit({
297
297
 
298
298
  // Much of this description is duplicated from MediaPlaceholder.
299
299
  const {
300
- lockUrlControls = false
300
+ lockUrlControls = false,
301
+ lockUrlControlsMessage
301
302
  } = useSelect(select => {
302
303
  if (!isSingleSelected) {
303
304
  return {};
304
305
  }
305
306
  const blockBindingsSource = unlock(select(blocksStore)).getBlockBindingsSource(metadata?.bindings?.url?.source);
306
307
  return {
307
- lockUrlControls: !!metadata?.bindings?.url && (!blockBindingsSource || blockBindingsSource?.lockAttributesEditing)
308
+ lockUrlControls: !!metadata?.bindings?.url && (!blockBindingsSource || blockBindingsSource?.lockAttributesEditing),
309
+ lockUrlControlsMessage: blockBindingsSource?.label ? sprintf( /* translators: %s: Label of the bindings source. */
310
+ __('Connected to %s'), blockBindingsSource.label) : __('Connected to dynamic data')
308
311
  };
309
312
  }, [isSingleSelected]);
310
313
  const placeholder = content => {
@@ -326,7 +329,7 @@ export function ImageEdit({
326
329
  }
327
330
  }, lockUrlControls ? createElement("span", {
328
331
  className: 'block-bindings-media-placeholder-message'
329
- }, __('Connected to a custom field')) : content);
332
+ }, lockUrlControlsMessage) : content);
330
333
  };
331
334
  return createElement("figure", {
332
335
  ...blockProps
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","getBlobByURL","isBlobURL","revokeBlobURL","store","blocksStore","Placeholder","useDispatch","useSelect","BlockIcon","MediaPlaceholder","useBlockProps","blockEditorStore","__experimentalUseBorderProps","useBorderProps","__experimentalGetShadowClassesAndStyles","getShadowClassesAndStyles","useBlockEditingMode","useEffect","useRef","useState","__","image","icon","plugins","pluginsIcon","noticesStore","unlock","Image","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_CUSTOM","LINK_DESTINATION_MEDIA","LINK_DESTINATION_NONE","ALLOWED_MEDIA_TYPES","pickRelevantMediaFiles","size","imageProps","Object","fromEntries","entries","filter","key","includes","url","sizes","media_details","source_url","isTemporaryImage","id","isExternalImage","hasSize","_image$sizes$size","_image$media_details$","ImageEdit","attributes","setAttributes","isSelected","isSingleSelected","className","insertBlocksAfter","onReplace","context","clientId","alt","caption","width","height","sizeSlug","aspectRatio","scale","align","metadata","temporaryURL","setTemporaryURL","altRef","current","captionRef","__unstableMarkNextChangeAsNotPersistent","undefined","ref","getSettings","blockEditingMode","createErrorNotice","onUploadError","message","type","src","onSelectImage","media","title","imageDefaultSize","newSize","mediaAttributes","omittedCaption","restMediaAttributes","additionalAttributes","linkDestination","window","wp","view","settings","defaultProps","link","href","onSelectURL","newURL","isTemp","file","mediaUpload","filesList","onFileChange","img","allowedTypes","onError","isExternal","mediaPreview","createElement","borderProps","shadowProps","classes","style","keys","length","blockProps","lockUrlControls","select","blockBindingsSource","getBlockBindingsSource","bindings","source","lockAttributesEditing","placeholder","content","withIllustration","label","instructions","objectFit","containerRef","onSelect","accept","value","disableMediaButtons"],"sources":["@wordpress/block-library/src/image/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { Placeholder } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tBlockIcon,\n\tMediaPlaceholder,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles,\n\tuseBlockEditingMode,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { image as icon, plugins as pluginsIcon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\nimport Image from './image';\n\n/**\n * Module constants\n */\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_CUSTOM,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n\tALLOWED_MEDIA_TYPES,\n} from './constants';\n\nexport const pickRelevantMediaFiles = ( image, size ) => {\n\tconst imageProps = Object.fromEntries(\n\t\tObject.entries( image ?? {} ).filter( ( [ key ] ) =>\n\t\t\t[ 'alt', 'id', 'link', 'caption' ].includes( key )\n\t\t)\n\t);\n\n\timageProps.url =\n\t\timage?.sizes?.[ size ]?.url ||\n\t\timage?.media_details?.sizes?.[ size ]?.source_url ||\n\t\timage.url;\n\treturn imageProps;\n};\n\n/**\n * Is the URL a temporary blob URL? A blob URL is one that is used temporarily\n * while the image is being uploaded and will not have an id yet allocated.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the URL a Blob URL\n */\nconst isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );\n\n/**\n * Is the url for the image hosted externally. An externally hosted image has no\n * id and is not a blob url.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the url an externally hosted url?\n */\nexport const isExternalImage = ( id, url ) => url && ! id && ! isBlobURL( url );\n\n/**\n * Checks if WP generated the specified image size. Size generation is skipped\n * when the image is smaller than the said size.\n *\n * @param {Object} image\n * @param {string} size\n *\n * @return {boolean} Whether or not it has default image size.\n */\nfunction hasSize( image, size ) {\n\treturn (\n\t\t'url' in ( image?.sizes?.[ size ] ?? {} ) ||\n\t\t'source_url' in ( image?.media_details?.sizes?.[ size ] ?? {} )\n\t);\n}\n\nexport function ImageEdit( {\n\tattributes,\n\tsetAttributes,\n\tisSelected: isSingleSelected,\n\tclassName,\n\tinsertBlocksAfter,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst {\n\t\turl = '',\n\t\talt,\n\t\tcaption,\n\t\tid,\n\t\twidth,\n\t\theight,\n\t\tsizeSlug,\n\t\taspectRatio,\n\t\tscale,\n\t\talign,\n\t\tmetadata,\n\t} = attributes;\n\tconst [ temporaryURL, setTemporaryURL ] = useState();\n\n\tconst altRef = useRef();\n\tuseEffect( () => {\n\t\taltRef.current = alt;\n\t}, [ alt ] );\n\n\tconst captionRef = useRef();\n\tuseEffect( () => {\n\t\tcaptionRef.current = caption;\n\t}, [ caption ] );\n\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\tif ( [ 'wide', 'full' ].includes( align ) ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\taspectRatio: undefined,\n\t\t\t\tscale: undefined,\n\t\t\t} );\n\t\t}\n\t}, [ align ] );\n\n\tconst ref = useRef();\n\tconst { getSettings } = useSelect( blockEditorStore );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetAttributes( {\n\t\t\tsrc: undefined,\n\t\t\tid: undefined,\n\t\t\turl: undefined,\n\t\t} );\n\t\tsetTemporaryURL( undefined );\n\t}\n\n\tfunction onSelectImage( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: undefined,\n\t\t\t\talt: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\ttitle: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetTemporaryURL( media.url );\n\t\t\treturn;\n\t\t}\n\n\t\tsetTemporaryURL();\n\n\t\tconst { imageDefaultSize } = getSettings();\n\n\t\t// Try to use the previous selected image size if its available\n\t\t// otherwise try the default image size or fallback to \"full\"\n\t\tlet newSize = 'full';\n\t\tif ( sizeSlug && hasSize( media, sizeSlug ) ) {\n\t\t\tnewSize = sizeSlug;\n\t\t} else if ( hasSize( media, imageDefaultSize ) ) {\n\t\t\tnewSize = imageDefaultSize;\n\t\t}\n\n\t\tlet mediaAttributes = pickRelevantMediaFiles( media, newSize );\n\n\t\t// If a caption text was meanwhile written by the user,\n\t\t// make sure the text is not overwritten by empty captions.\n\t\tif ( captionRef.current && ! mediaAttributes.caption ) {\n\t\t\tconst { caption: omittedCaption, ...restMediaAttributes } =\n\t\t\t\tmediaAttributes;\n\t\t\tmediaAttributes = restMediaAttributes;\n\t\t}\n\n\t\tlet additionalAttributes;\n\t\t// Reset the dimension attributes if changing to a different image.\n\t\tif ( ! media.id || media.id !== id ) {\n\t\t\tadditionalAttributes = {\n\t\t\t\tsizeSlug: newSize,\n\t\t\t};\n\t\t} else {\n\t\t\t// Keep the same url when selecting the same file, so \"Resolution\"\n\t\t\t// option is not changed.\n\t\t\tadditionalAttributes = { url };\n\t\t}\n\n\t\t// Check if default link setting should be used.\n\t\tlet linkDestination = attributes.linkDestination;\n\t\tif ( ! linkDestination ) {\n\t\t\t// Use the WordPress option to determine the proper default.\n\t\t\t// The constants used in Gutenberg do not match WP options so a little more complicated than ideal.\n\t\t\t// TODO: fix this in a follow up PR, requires updating media-text and ui component.\n\t\t\tswitch (\n\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\tLINK_DESTINATION_NONE\n\t\t\t) {\n\t\t\t\tcase 'file':\n\t\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_MEDIA;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'post':\n\t\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_CUSTOM:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_CUSTOM;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_NONE:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_NONE;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Check if the image is linked to it's media.\n\t\tlet href;\n\t\tswitch ( linkDestination ) {\n\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\thref = media.url;\n\t\t\t\tbreak;\n\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\thref = media.link;\n\t\t\t\tbreak;\n\t\t}\n\t\tmediaAttributes.href = href;\n\n\t\tsetAttributes( {\n\t\t\t...mediaAttributes,\n\t\t\t...additionalAttributes,\n\t\t\tlinkDestination,\n\t\t} );\n\t}\n\n\tfunction onSelectURL( newURL ) {\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: newURL,\n\t\t\t\tid: undefined,\n\t\t\t\tsizeSlug: getSettings().imageDefaultSize,\n\t\t\t} );\n\t\t}\n\t}\n\n\tlet isTemp = isTemporaryImage( id, url );\n\n\t// Upload a temporary image on mount.\n\tuseEffect( () => {\n\t\tif ( ! isTemp ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( url );\n\n\t\tif ( file ) {\n\t\t\tconst { mediaUpload } = getSettings();\n\t\t\tif ( ! mediaUpload ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList: [ file ],\n\t\t\t\tonFileChange: ( [ img ] ) => {\n\t\t\t\t\tonSelectImage( img );\n\t\t\t\t},\n\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\tonError: ( message ) => {\n\t\t\t\t\tisTemp = false;\n\t\t\t\t\tonUploadError( message );\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\t// If an image is temporary, revoke the Blob url when it is uploaded (and is\n\t// no longer temporary).\n\tuseEffect( () => {\n\t\tif ( isTemp ) {\n\t\t\tsetTemporaryURL( url );\n\t\t\treturn;\n\t\t}\n\t\trevokeBlobURL( temporaryURL );\n\t}, [ isTemp, url ] );\n\n\tconst isExternal = isExternalImage( id, url );\n\tconst src = isExternal ? url : undefined;\n\tconst mediaPreview = !! url && (\n\t\t<img\n\t\t\talt={ __( 'Edit image' ) }\n\t\t\ttitle={ __( 'Edit image' ) }\n\t\t\tclassName={ 'edit-image-preview' }\n\t\t\tsrc={ url }\n\t\t/>\n\t);\n\n\tconst borderProps = useBorderProps( attributes );\n\tconst shadowProps = getShadowClassesAndStyles( attributes );\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': temporaryURL,\n\t\t'is-resized': !! width || !! height,\n\t\t[ `size-${ sizeSlug }` ]: sizeSlug,\n\t\t'has-custom-border':\n\t\t\t!! borderProps.className ||\n\t\t\t( borderProps.style &&\n\t\t\t\tObject.keys( borderProps.style ).length > 0 ),\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tref,\n\t\tclassName: classes,\n\t} );\n\n\t// Much of this description is duplicated from MediaPlaceholder.\n\tconst { lockUrlControls = false } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! isSingleSelected ) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst blockBindingsSource = unlock(\n\t\t\t\tselect( blocksStore )\n\t\t\t).getBlockBindingsSource( metadata?.bindings?.url?.source );\n\n\t\t\treturn {\n\t\t\t\tlockUrlControls:\n\t\t\t\t\t!! metadata?.bindings?.url &&\n\t\t\t\t\t( ! blockBindingsSource ||\n\t\t\t\t\t\tblockBindingsSource?.lockAttributesEditing ),\n\t\t\t};\n\t\t},\n\t\t[ isSingleSelected ]\n\t);\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName={ classnames( 'block-editor-media-placeholder', {\n\t\t\t\t\t[ borderProps.className ]:\n\t\t\t\t\t\t!! borderProps.className && ! isSingleSelected,\n\t\t\t\t} ) }\n\t\t\t\twithIllustration={ true }\n\t\t\t\ticon={ lockUrlControls ? pluginsIcon : icon }\n\t\t\t\tlabel={ __( 'Image' ) }\n\t\t\t\tinstructions={\n\t\t\t\t\t! lockUrlControls &&\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Upload an image file, pick one from your media library, or add one with a URL.'\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tstyle={ {\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\twidth: height && aspectRatio ? '100%' : width,\n\t\t\t\t\theight: width && aspectRatio ? '100%' : height,\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\t{ lockUrlControls ? (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={ 'block-bindings-media-placeholder-message' }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Connected to a custom field' ) }\n\t\t\t\t\t</span>\n\t\t\t\t) : (\n\t\t\t\t\tcontent\n\t\t\t\t) }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\treturn (\n\t\t<figure { ...blockProps }>\n\t\t\t<Image\n\t\t\t\ttemporaryURL={ temporaryURL }\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tisSingleSelected={ isSingleSelected }\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\tonReplace={ onReplace }\n\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonUploadError={ onUploadError }\n\t\t\t\tcontainerRef={ ref }\n\t\t\t\tcontext={ context }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tblockEditingMode={ blockEditingMode }\n\t\t\t/>\n\t\t\t<MediaPlaceholder\n\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\tvalue={ { id, src } }\n\t\t\t\tmediaPreview={ mediaPreview }\n\t\t\t\tdisableMediaButtons={ temporaryURL || url }\n\t\t\t/>\n\t\t</figure>\n\t);\n}\n\nexport default ImageEdit;\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,YAAY,EAAEC,SAAS,EAAEC,aAAa,QAAQ,iBAAiB;AACxE,SAASC,KAAK,IAAIC,WAAW,QAAQ,mBAAmB;AACxD,SAASC,WAAW,QAAQ,uBAAuB;AACnD,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SACCC,SAAS,EACTC,gBAAgB,EAChBC,aAAa,EACbP,KAAK,IAAIQ,gBAAgB,EACzBC,4BAA4B,IAAIC,cAAc,EAC9CC,uCAAuC,IAAIC,yBAAyB,EACpEC,mBAAmB,QACb,yBAAyB;AAChC,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,oBAAoB;AAChE,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,KAAK,IAAIC,IAAI,EAAEC,OAAO,IAAIC,WAAW,QAAQ,kBAAkB;AACxE,SAASrB,KAAK,IAAIsB,YAAY,QAAQ,oBAAoB;;AAE1D;AACA;AACA;AACA,SAASC,MAAM,QAAQ,gBAAgB;AACvC,OAAOC,KAAK,MAAM,SAAS;;AAE3B;AACA;AACA;AACA,SACCC,2BAA2B,EAC3BC,uBAAuB,EACvBC,sBAAsB,EACtBC,qBAAqB,EACrBC,mBAAmB,QACb,aAAa;AAEpB,OAAO,MAAMC,sBAAsB,GAAGA,CAAEZ,KAAK,EAAEa,IAAI,KAAM;EACxD,MAAMC,UAAU,GAAGC,MAAM,CAACC,WAAW,CACpCD,MAAM,CAACE,OAAO,CAAEjB,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAE,CAAC,CAACkB,MAAM,CAAE,CAAE,CAAEC,GAAG,CAAE,KAC9C,CAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAE,CAACC,QAAQ,CAAED,GAAI,CAClD,CACD,CAAC;EAEDL,UAAU,CAACO,GAAG,GACbrB,KAAK,EAAEsB,KAAK,GAAIT,IAAI,CAAE,EAAEQ,GAAG,IAC3BrB,KAAK,EAAEuB,aAAa,EAAED,KAAK,GAAIT,IAAI,CAAE,EAAEW,UAAU,IACjDxB,KAAK,CAACqB,GAAG;EACV,OAAOP,UAAU;AAClB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMW,gBAAgB,GAAGA,CAAEC,EAAE,EAAEL,GAAG,KAAM,CAAEK,EAAE,IAAI9C,SAAS,CAAEyC,GAAI,CAAC;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMM,eAAe,GAAGA,CAAED,EAAE,EAAEL,GAAG,KAAMA,GAAG,IAAI,CAAEK,EAAE,IAAI,CAAE9C,SAAS,CAAEyC,GAAI,CAAC;;AAE/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASO,OAAOA,CAAE5B,KAAK,EAAEa,IAAI,EAAG;EAAA,IAAAgB,iBAAA,EAAAC,qBAAA;EAC/B,OACC,KAAK,MAAAD,iBAAA,GAAM7B,KAAK,EAAEsB,KAAK,GAAIT,IAAI,CAAE,cAAAgB,iBAAA,cAAAA,iBAAA,GAAI,CAAC,CAAC,CAAE,IACzC,YAAY,MAAAC,qBAAA,GAAM9B,KAAK,EAAEuB,aAAa,EAAED,KAAK,GAAIT,IAAI,CAAE,cAAAiB,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,CAAE;AAEjE;AAEA,OAAO,SAASC,SAASA,CAAE;EAC1BC,UAAU;EACVC,aAAa;EACbC,UAAU,EAAEC,gBAAgB;EAC5BC,SAAS;EACTC,iBAAiB;EACjBC,SAAS;EACTC,OAAO;EACPC;AACD,CAAC,EAAG;EACH,MAAM;IACLnB,GAAG,GAAG,EAAE;IACRoB,GAAG;IACHC,OAAO;IACPhB,EAAE;IACFiB,KAAK;IACLC,MAAM;IACNC,QAAQ;IACRC,WAAW;IACXC,KAAK;IACLC,KAAK;IACLC;EACD,CAAC,GAAGjB,UAAU;EACd,MAAM,CAAEkB,YAAY,EAAEC,eAAe,CAAE,GAAGrD,QAAQ,CAAC,CAAC;EAEpD,MAAMsD,MAAM,GAAGvD,MAAM,CAAC,CAAC;EACvBD,SAAS,CAAE,MAAM;IAChBwD,MAAM,CAACC,OAAO,GAAGZ,GAAG;EACrB,CAAC,EAAE,CAAEA,GAAG,CAAG,CAAC;EAEZ,MAAMa,UAAU,GAAGzD,MAAM,CAAC,CAAC;EAC3BD,SAAS,CAAE,MAAM;IAChB0D,UAAU,CAACD,OAAO,GAAGX,OAAO;EAC7B,CAAC,EAAE,CAAEA,OAAO,CAAG,CAAC;EAEhB,MAAM;IAAEa;EAAwC,CAAC,GAChDtE,WAAW,CAAEK,gBAAiB,CAAC;EAEhCM,SAAS,CAAE,MAAM;IAChB,IAAK,CAAE,MAAM,EAAE,MAAM,CAAE,CAACwB,QAAQ,CAAE4B,KAAM,CAAC,EAAG;MAC3CO,uCAAuC,CAAC,CAAC;MACzCtB,aAAa,CAAE;QACdU,KAAK,EAAEa,SAAS;QAChBZ,MAAM,EAAEY,SAAS;QACjBV,WAAW,EAAEU,SAAS;QACtBT,KAAK,EAAES;MACR,CAAE,CAAC;IACJ;EACD,CAAC,EAAE,CAAER,KAAK,CAAG,CAAC;EAEd,MAAMS,GAAG,GAAG5D,MAAM,CAAC,CAAC;EACpB,MAAM;IAAE6D;EAAY,CAAC,GAAGxE,SAAS,CAAEI,gBAAiB,CAAC;EACrD,MAAMqE,gBAAgB,GAAGhE,mBAAmB,CAAC,CAAC;EAE9C,MAAM;IAAEiE;EAAkB,CAAC,GAAG3E,WAAW,CAAEmB,YAAa,CAAC;EACzD,SAASyD,aAAaA,CAAEC,OAAO,EAAG;IACjCF,iBAAiB,CAAEE,OAAO,EAAE;MAAEC,IAAI,EAAE;IAAW,CAAE,CAAC;IAClD9B,aAAa,CAAE;MACd+B,GAAG,EAAER,SAAS;MACd9B,EAAE,EAAE8B,SAAS;MACbnC,GAAG,EAAEmC;IACN,CAAE,CAAC;IACHL,eAAe,CAAEK,SAAU,CAAC;EAC7B;EAEA,SAASS,aAAaA,CAAEC,KAAK,EAAG;IAC/B,IAAK,CAAEA,KAAK,IAAI,CAAEA,KAAK,CAAC7C,GAAG,EAAG;MAC7BY,aAAa,CAAE;QACdZ,GAAG,EAAEmC,SAAS;QACdf,GAAG,EAAEe,SAAS;QACd9B,EAAE,EAAE8B,SAAS;QACbW,KAAK,EAAEX,SAAS;QAChBd,OAAO,EAAEc;MACV,CAAE,CAAC;MAEH;IACD;IAEA,IAAK5E,SAAS,CAAEsF,KAAK,CAAC7C,GAAI,CAAC,EAAG;MAC7B8B,eAAe,CAAEe,KAAK,CAAC7C,GAAI,CAAC;MAC5B;IACD;IAEA8B,eAAe,CAAC,CAAC;IAEjB,MAAM;MAAEiB;IAAiB,CAAC,GAAGV,WAAW,CAAC,CAAC;;IAE1C;IACA;IACA,IAAIW,OAAO,GAAG,MAAM;IACpB,IAAKxB,QAAQ,IAAIjB,OAAO,CAAEsC,KAAK,EAAErB,QAAS,CAAC,EAAG;MAC7CwB,OAAO,GAAGxB,QAAQ;IACnB,CAAC,MAAM,IAAKjB,OAAO,CAAEsC,KAAK,EAAEE,gBAAiB,CAAC,EAAG;MAChDC,OAAO,GAAGD,gBAAgB;IAC3B;IAEA,IAAIE,eAAe,GAAG1D,sBAAsB,CAAEsD,KAAK,EAAEG,OAAQ,CAAC;;IAE9D;IACA;IACA,IAAKf,UAAU,CAACD,OAAO,IAAI,CAAEiB,eAAe,CAAC5B,OAAO,EAAG;MACtD,MAAM;QAAEA,OAAO,EAAE6B,cAAc;QAAE,GAAGC;MAAoB,CAAC,GACxDF,eAAe;MAChBA,eAAe,GAAGE,mBAAmB;IACtC;IAEA,IAAIC,oBAAoB;IACxB;IACA,IAAK,CAAEP,KAAK,CAACxC,EAAE,IAAIwC,KAAK,CAACxC,EAAE,KAAKA,EAAE,EAAG;MACpC+C,oBAAoB,GAAG;QACtB5B,QAAQ,EAAEwB;MACX,CAAC;IACF,CAAC,MAAM;MACN;MACA;MACAI,oBAAoB,GAAG;QAAEpD;MAAI,CAAC;IAC/B;;IAEA;IACA,IAAIqD,eAAe,GAAG1C,UAAU,CAAC0C,eAAe;IAChD,IAAK,CAAEA,eAAe,EAAG;MACxB;MACA;MACA;MACA,QACCC,MAAM,EAAEC,EAAE,EAAEV,KAAK,EAAEW,IAAI,EAAEC,QAAQ,EAAEC,YAAY,EAAEC,IAAI,IACrDtE,qBAAqB;QAErB,KAAK,MAAM;QACX,KAAKD,sBAAsB;UAC1BiE,eAAe,GAAGjE,sBAAsB;UACxC;QACD,KAAK,MAAM;QACX,KAAKF,2BAA2B;UAC/BmE,eAAe,GAAGnE,2BAA2B;UAC7C;QACD,KAAKC,uBAAuB;UAC3BkE,eAAe,GAAGlE,uBAAuB;UACzC;QACD,KAAKE,qBAAqB;UACzBgE,eAAe,GAAGhE,qBAAqB;UACvC;MACF;IACD;;IAEA;IACA,IAAIuE,IAAI;IACR,QAASP,eAAe;MACvB,KAAKjE,sBAAsB;QAC1BwE,IAAI,GAAGf,KAAK,CAAC7C,GAAG;QAChB;MACD,KAAKd,2BAA2B;QAC/B0E,IAAI,GAAGf,KAAK,CAACc,IAAI;QACjB;IACF;IACAV,eAAe,CAACW,IAAI,GAAGA,IAAI;IAE3BhD,aAAa,CAAE;MACd,GAAGqC,eAAe;MAClB,GAAGG,oBAAoB;MACvBC;IACD,CAAE,CAAC;EACJ;EAEA,SAASQ,WAAWA,CAAEC,MAAM,EAAG;IAC9B,IAAKA,MAAM,KAAK9D,GAAG,EAAG;MACrBY,aAAa,CAAE;QACdZ,GAAG,EAAE8D,MAAM;QACXzD,EAAE,EAAE8B,SAAS;QACbX,QAAQ,EAAEa,WAAW,CAAC,CAAC,CAACU;MACzB,CAAE,CAAC;IACJ;EACD;EAEA,IAAIgB,MAAM,GAAG3D,gBAAgB,CAAEC,EAAE,EAAEL,GAAI,CAAC;;EAExC;EACAzB,SAAS,CAAE,MAAM;IAChB,IAAK,CAAEwF,MAAM,EAAG;MACf;IACD;IAEA,MAAMC,IAAI,GAAG1G,YAAY,CAAE0C,GAAI,CAAC;IAEhC,IAAKgE,IAAI,EAAG;MACX,MAAM;QAAEC;MAAY,CAAC,GAAG5B,WAAW,CAAC,CAAC;MACrC,IAAK,CAAE4B,WAAW,EAAG;QACpB;MACD;MACAA,WAAW,CAAE;QACZC,SAAS,EAAE,CAAEF,IAAI,CAAE;QACnBG,YAAY,EAAEA,CAAE,CAAEC,GAAG,CAAE,KAAM;UAC5BxB,aAAa,CAAEwB,GAAI,CAAC;QACrB,CAAC;QACDC,YAAY,EAAE/E,mBAAmB;QACjCgF,OAAO,EAAI7B,OAAO,IAAM;UACvBsB,MAAM,GAAG,KAAK;UACdvB,aAAa,CAAEC,OAAQ,CAAC;QACzB;MACD,CAAE,CAAC;IACJ;EACD,CAAC,EAAE,EAAG,CAAC;;EAEP;EACA;EACAlE,SAAS,CAAE,MAAM;IAChB,IAAKwF,MAAM,EAAG;MACbjC,eAAe,CAAE9B,GAAI,CAAC;MACtB;IACD;IACAxC,aAAa,CAAEqE,YAAa,CAAC;EAC9B,CAAC,EAAE,CAAEkC,MAAM,EAAE/D,GAAG,CAAG,CAAC;EAEpB,MAAMuE,UAAU,GAAGjE,eAAe,CAAED,EAAE,EAAEL,GAAI,CAAC;EAC7C,MAAM2C,GAAG,GAAG4B,UAAU,GAAGvE,GAAG,GAAGmC,SAAS;EACxC,MAAMqC,YAAY,GAAG,CAAC,CAAExE,GAAG,IAC1ByE,aAAA;IACCrD,GAAG,EAAG1C,EAAE,CAAE,YAAa,CAAG;IAC1BoE,KAAK,EAAGpE,EAAE,CAAE,YAAa,CAAG;IAC5BqC,SAAS,EAAG,oBAAsB;IAClC4B,GAAG,EAAG3C;EAAK,CACX,CACD;EAED,MAAM0E,WAAW,GAAGvG,cAAc,CAAEwC,UAAW,CAAC;EAChD,MAAMgE,WAAW,GAAGtG,yBAAyB,CAAEsC,UAAW,CAAC;EAE3D,MAAMiE,OAAO,GAAGvH,UAAU,CAAE0D,SAAS,EAAE;IACtC,cAAc,EAAEc,YAAY;IAC5B,YAAY,EAAE,CAAC,CAAEP,KAAK,IAAI,CAAC,CAAEC,MAAM;IACnC,CAAG,QAAQC,QAAU,EAAC,GAAIA,QAAQ;IAClC,mBAAmB,EAClB,CAAC,CAAEkD,WAAW,CAAC3D,SAAS,IACtB2D,WAAW,CAACG,KAAK,IAClBnF,MAAM,CAACoF,IAAI,CAAEJ,WAAW,CAACG,KAAM,CAAC,CAACE,MAAM,GAAG;EAC7C,CAAE,CAAC;EAEH,MAAMC,UAAU,GAAGhH,aAAa,CAAE;IACjCoE,GAAG;IACHrB,SAAS,EAAE6D;EACZ,CAAE,CAAC;;EAEH;EACA,MAAM;IAAEK,eAAe,GAAG;EAAM,CAAC,GAAGpH,SAAS,CAC1CqH,MAAM,IAAM;IACb,IAAK,CAAEpE,gBAAgB,EAAG;MACzB,OAAO,CAAC,CAAC;IACV;IAEA,MAAMqE,mBAAmB,GAAGnG,MAAM,CACjCkG,MAAM,CAAExH,WAAY,CACrB,CAAC,CAAC0H,sBAAsB,CAAExD,QAAQ,EAAEyD,QAAQ,EAAErF,GAAG,EAAEsF,MAAO,CAAC;IAE3D,OAAO;MACNL,eAAe,EACd,CAAC,CAAErD,QAAQ,EAAEyD,QAAQ,EAAErF,GAAG,KACxB,CAAEmF,mBAAmB,IACtBA,mBAAmB,EAAEI,qBAAqB;IAC7C,CAAC;EACF,CAAC,EACD,CAAEzE,gBAAgB,CACnB,CAAC;EACD,MAAM0E,WAAW,GAAKC,OAAO,IAAM;IAClC,OACChB,aAAA,CAAC9G,WAAW;MACXoD,SAAS,EAAG1D,UAAU,CAAE,gCAAgC,EAAE;QACzD,CAAEqH,WAAW,CAAC3D,SAAS,GACtB,CAAC,CAAE2D,WAAW,CAAC3D,SAAS,IAAI,CAAED;MAChC,CAAE,CAAG;MACL4E,gBAAgB,EAAG,IAAM;MACzB9G,IAAI,EAAGqG,eAAe,GAAGnG,WAAW,GAAGF,IAAM;MAC7C+G,KAAK,EAAGjH,EAAE,CAAE,OAAQ,CAAG;MACvBkH,YAAY,EACX,CAAEX,eAAe,IACjBvG,EAAE,CACD,gFACD,CACA;MACDmG,KAAK,EAAG;QACPpD,WAAW,EACV,EAAIH,KAAK,IAAIC,MAAM,CAAE,IAAIE,WAAW,GACjCA,WAAW,GACXU,SAAS;QACbb,KAAK,EAAEC,MAAM,IAAIE,WAAW,GAAG,MAAM,GAAGH,KAAK;QAC7CC,MAAM,EAAED,KAAK,IAAIG,WAAW,GAAG,MAAM,GAAGF,MAAM;QAC9CsE,SAAS,EAAEnE,KAAK;QAChB,GAAGgD,WAAW,CAACG,KAAK;QACpB,GAAGF,WAAW,CAACE;MAChB;IAAG,GAEDI,eAAe,GAChBR,aAAA;MACC1D,SAAS,EAAG;IAA4C,GAEtDrC,EAAE,CAAE,6BAA8B,CAC/B,CAAC,GAEP+G,OAEW,CAAC;EAEhB,CAAC;EAED,OACChB,aAAA;IAAA,GAAaO;EAAU,GACtBP,aAAA,CAACxF,KAAK;IACL4C,YAAY,EAAGA,YAAc;IAC7BlB,UAAU,EAAGA,UAAY;IACzBC,aAAa,EAAGA,aAAe;IAC/BE,gBAAgB,EAAGA,gBAAkB;IACrCE,iBAAiB,EAAGA,iBAAmB;IACvCC,SAAS,EAAGA,SAAW;IACvB2B,aAAa,EAAGA,aAAe;IAC/BiB,WAAW,EAAGA,WAAa;IAC3BrB,aAAa,EAAGA,aAAe;IAC/BsD,YAAY,EAAG1D,GAAK;IACpBlB,OAAO,EAAGA,OAAS;IACnBC,QAAQ,EAAGA,QAAU;IACrBmB,gBAAgB,EAAGA;EAAkB,CACrC,CAAC,EACFmC,aAAA,CAAC1G,gBAAgB;IAChBa,IAAI,EAAG6F,aAAA,CAAC3G,SAAS;MAACc,IAAI,EAAGA;IAAM,CAAE,CAAG;IACpCmH,QAAQ,EAAGnD,aAAe;IAC1BiB,WAAW,EAAGA,WAAa;IAC3BS,OAAO,EAAG9B,aAAe;IACzBgD,WAAW,EAAGA,WAAa;IAC3BQ,MAAM,EAAC,SAAS;IAChB3B,YAAY,EAAG/E,mBAAqB;IACpC2G,KAAK,EAAG;MAAE5F,EAAE;MAAEsC;IAAI,CAAG;IACrB6B,YAAY,EAAGA,YAAc;IAC7B0B,mBAAmB,EAAGrE,YAAY,IAAI7B;EAAK,CAC3C,CACM,CAAC;AAEX;AAEA,eAAeU,SAAS"}
1
+ {"version":3,"names":["classnames","getBlobByURL","isBlobURL","revokeBlobURL","store","blocksStore","Placeholder","useDispatch","useSelect","BlockIcon","MediaPlaceholder","useBlockProps","blockEditorStore","__experimentalUseBorderProps","useBorderProps","__experimentalGetShadowClassesAndStyles","getShadowClassesAndStyles","useBlockEditingMode","useEffect","useRef","useState","__","sprintf","image","icon","plugins","pluginsIcon","noticesStore","unlock","Image","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_CUSTOM","LINK_DESTINATION_MEDIA","LINK_DESTINATION_NONE","ALLOWED_MEDIA_TYPES","pickRelevantMediaFiles","size","imageProps","Object","fromEntries","entries","filter","key","includes","url","sizes","media_details","source_url","isTemporaryImage","id","isExternalImage","hasSize","_image$sizes$size","_image$media_details$","ImageEdit","attributes","setAttributes","isSelected","isSingleSelected","className","insertBlocksAfter","onReplace","context","clientId","alt","caption","width","height","sizeSlug","aspectRatio","scale","align","metadata","temporaryURL","setTemporaryURL","altRef","current","captionRef","__unstableMarkNextChangeAsNotPersistent","undefined","ref","getSettings","blockEditingMode","createErrorNotice","onUploadError","message","type","src","onSelectImage","media","title","imageDefaultSize","newSize","mediaAttributes","omittedCaption","restMediaAttributes","additionalAttributes","linkDestination","window","wp","view","settings","defaultProps","link","href","onSelectURL","newURL","isTemp","file","mediaUpload","filesList","onFileChange","img","allowedTypes","onError","isExternal","mediaPreview","createElement","borderProps","shadowProps","classes","style","keys","length","blockProps","lockUrlControls","lockUrlControlsMessage","select","blockBindingsSource","getBlockBindingsSource","bindings","source","lockAttributesEditing","label","placeholder","content","withIllustration","instructions","objectFit","containerRef","onSelect","accept","value","disableMediaButtons"],"sources":["@wordpress/block-library/src/image/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { Placeholder } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tBlockIcon,\n\tMediaPlaceholder,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles,\n\tuseBlockEditingMode,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { image as icon, plugins as pluginsIcon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\nimport Image from './image';\n\n/**\n * Module constants\n */\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_CUSTOM,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n\tALLOWED_MEDIA_TYPES,\n} from './constants';\n\nexport const pickRelevantMediaFiles = ( image, size ) => {\n\tconst imageProps = Object.fromEntries(\n\t\tObject.entries( image ?? {} ).filter( ( [ key ] ) =>\n\t\t\t[ 'alt', 'id', 'link', 'caption' ].includes( key )\n\t\t)\n\t);\n\n\timageProps.url =\n\t\timage?.sizes?.[ size ]?.url ||\n\t\timage?.media_details?.sizes?.[ size ]?.source_url ||\n\t\timage.url;\n\treturn imageProps;\n};\n\n/**\n * Is the URL a temporary blob URL? A blob URL is one that is used temporarily\n * while the image is being uploaded and will not have an id yet allocated.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the URL a Blob URL\n */\nconst isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );\n\n/**\n * Is the url for the image hosted externally. An externally hosted image has no\n * id and is not a blob url.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the url an externally hosted url?\n */\nexport const isExternalImage = ( id, url ) => url && ! id && ! isBlobURL( url );\n\n/**\n * Checks if WP generated the specified image size. Size generation is skipped\n * when the image is smaller than the said size.\n *\n * @param {Object} image\n * @param {string} size\n *\n * @return {boolean} Whether or not it has default image size.\n */\nfunction hasSize( image, size ) {\n\treturn (\n\t\t'url' in ( image?.sizes?.[ size ] ?? {} ) ||\n\t\t'source_url' in ( image?.media_details?.sizes?.[ size ] ?? {} )\n\t);\n}\n\nexport function ImageEdit( {\n\tattributes,\n\tsetAttributes,\n\tisSelected: isSingleSelected,\n\tclassName,\n\tinsertBlocksAfter,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst {\n\t\turl = '',\n\t\talt,\n\t\tcaption,\n\t\tid,\n\t\twidth,\n\t\theight,\n\t\tsizeSlug,\n\t\taspectRatio,\n\t\tscale,\n\t\talign,\n\t\tmetadata,\n\t} = attributes;\n\tconst [ temporaryURL, setTemporaryURL ] = useState();\n\n\tconst altRef = useRef();\n\tuseEffect( () => {\n\t\taltRef.current = alt;\n\t}, [ alt ] );\n\n\tconst captionRef = useRef();\n\tuseEffect( () => {\n\t\tcaptionRef.current = caption;\n\t}, [ caption ] );\n\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\tif ( [ 'wide', 'full' ].includes( align ) ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\taspectRatio: undefined,\n\t\t\t\tscale: undefined,\n\t\t\t} );\n\t\t}\n\t}, [ align ] );\n\n\tconst ref = useRef();\n\tconst { getSettings } = useSelect( blockEditorStore );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetAttributes( {\n\t\t\tsrc: undefined,\n\t\t\tid: undefined,\n\t\t\turl: undefined,\n\t\t} );\n\t\tsetTemporaryURL( undefined );\n\t}\n\n\tfunction onSelectImage( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: undefined,\n\t\t\t\talt: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\ttitle: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetTemporaryURL( media.url );\n\t\t\treturn;\n\t\t}\n\n\t\tsetTemporaryURL();\n\n\t\tconst { imageDefaultSize } = getSettings();\n\n\t\t// Try to use the previous selected image size if its available\n\t\t// otherwise try the default image size or fallback to \"full\"\n\t\tlet newSize = 'full';\n\t\tif ( sizeSlug && hasSize( media, sizeSlug ) ) {\n\t\t\tnewSize = sizeSlug;\n\t\t} else if ( hasSize( media, imageDefaultSize ) ) {\n\t\t\tnewSize = imageDefaultSize;\n\t\t}\n\n\t\tlet mediaAttributes = pickRelevantMediaFiles( media, newSize );\n\n\t\t// If a caption text was meanwhile written by the user,\n\t\t// make sure the text is not overwritten by empty captions.\n\t\tif ( captionRef.current && ! mediaAttributes.caption ) {\n\t\t\tconst { caption: omittedCaption, ...restMediaAttributes } =\n\t\t\t\tmediaAttributes;\n\t\t\tmediaAttributes = restMediaAttributes;\n\t\t}\n\n\t\tlet additionalAttributes;\n\t\t// Reset the dimension attributes if changing to a different image.\n\t\tif ( ! media.id || media.id !== id ) {\n\t\t\tadditionalAttributes = {\n\t\t\t\tsizeSlug: newSize,\n\t\t\t};\n\t\t} else {\n\t\t\t// Keep the same url when selecting the same file, so \"Resolution\"\n\t\t\t// option is not changed.\n\t\t\tadditionalAttributes = { url };\n\t\t}\n\n\t\t// Check if default link setting should be used.\n\t\tlet linkDestination = attributes.linkDestination;\n\t\tif ( ! linkDestination ) {\n\t\t\t// Use the WordPress option to determine the proper default.\n\t\t\t// The constants used in Gutenberg do not match WP options so a little more complicated than ideal.\n\t\t\t// TODO: fix this in a follow up PR, requires updating media-text and ui component.\n\t\t\tswitch (\n\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\tLINK_DESTINATION_NONE\n\t\t\t) {\n\t\t\t\tcase 'file':\n\t\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_MEDIA;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'post':\n\t\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_CUSTOM:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_CUSTOM;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_NONE:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_NONE;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Check if the image is linked to it's media.\n\t\tlet href;\n\t\tswitch ( linkDestination ) {\n\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\thref = media.url;\n\t\t\t\tbreak;\n\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\thref = media.link;\n\t\t\t\tbreak;\n\t\t}\n\t\tmediaAttributes.href = href;\n\n\t\tsetAttributes( {\n\t\t\t...mediaAttributes,\n\t\t\t...additionalAttributes,\n\t\t\tlinkDestination,\n\t\t} );\n\t}\n\n\tfunction onSelectURL( newURL ) {\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: newURL,\n\t\t\t\tid: undefined,\n\t\t\t\tsizeSlug: getSettings().imageDefaultSize,\n\t\t\t} );\n\t\t}\n\t}\n\n\tlet isTemp = isTemporaryImage( id, url );\n\n\t// Upload a temporary image on mount.\n\tuseEffect( () => {\n\t\tif ( ! isTemp ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( url );\n\n\t\tif ( file ) {\n\t\t\tconst { mediaUpload } = getSettings();\n\t\t\tif ( ! mediaUpload ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList: [ file ],\n\t\t\t\tonFileChange: ( [ img ] ) => {\n\t\t\t\t\tonSelectImage( img );\n\t\t\t\t},\n\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\tonError: ( message ) => {\n\t\t\t\t\tisTemp = false;\n\t\t\t\t\tonUploadError( message );\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\t// If an image is temporary, revoke the Blob url when it is uploaded (and is\n\t// no longer temporary).\n\tuseEffect( () => {\n\t\tif ( isTemp ) {\n\t\t\tsetTemporaryURL( url );\n\t\t\treturn;\n\t\t}\n\t\trevokeBlobURL( temporaryURL );\n\t}, [ isTemp, url ] );\n\n\tconst isExternal = isExternalImage( id, url );\n\tconst src = isExternal ? url : undefined;\n\tconst mediaPreview = !! url && (\n\t\t<img\n\t\t\talt={ __( 'Edit image' ) }\n\t\t\ttitle={ __( 'Edit image' ) }\n\t\t\tclassName={ 'edit-image-preview' }\n\t\t\tsrc={ url }\n\t\t/>\n\t);\n\n\tconst borderProps = useBorderProps( attributes );\n\tconst shadowProps = getShadowClassesAndStyles( attributes );\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': temporaryURL,\n\t\t'is-resized': !! width || !! height,\n\t\t[ `size-${ sizeSlug }` ]: sizeSlug,\n\t\t'has-custom-border':\n\t\t\t!! borderProps.className ||\n\t\t\t( borderProps.style &&\n\t\t\t\tObject.keys( borderProps.style ).length > 0 ),\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tref,\n\t\tclassName: classes,\n\t} );\n\n\t// Much of this description is duplicated from MediaPlaceholder.\n\tconst { lockUrlControls = false, lockUrlControlsMessage } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! isSingleSelected ) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst blockBindingsSource = unlock(\n\t\t\t\tselect( blocksStore )\n\t\t\t).getBlockBindingsSource( metadata?.bindings?.url?.source );\n\n\t\t\treturn {\n\t\t\t\tlockUrlControls:\n\t\t\t\t\t!! metadata?.bindings?.url &&\n\t\t\t\t\t( ! blockBindingsSource ||\n\t\t\t\t\t\tblockBindingsSource?.lockAttributesEditing ),\n\t\t\t\tlockUrlControlsMessage: blockBindingsSource?.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\tblockBindingsSource.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[ isSingleSelected ]\n\t);\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName={ classnames( 'block-editor-media-placeholder', {\n\t\t\t\t\t[ borderProps.className ]:\n\t\t\t\t\t\t!! borderProps.className && ! isSingleSelected,\n\t\t\t\t} ) }\n\t\t\t\twithIllustration={ true }\n\t\t\t\ticon={ lockUrlControls ? pluginsIcon : icon }\n\t\t\t\tlabel={ __( 'Image' ) }\n\t\t\t\tinstructions={\n\t\t\t\t\t! lockUrlControls &&\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Upload an image file, pick one from your media library, or add one with a URL.'\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tstyle={ {\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\twidth: height && aspectRatio ? '100%' : width,\n\t\t\t\t\theight: width && aspectRatio ? '100%' : height,\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\t{ lockUrlControls ? (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={ 'block-bindings-media-placeholder-message' }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ lockUrlControlsMessage }\n\t\t\t\t\t</span>\n\t\t\t\t) : (\n\t\t\t\t\tcontent\n\t\t\t\t) }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\treturn (\n\t\t<figure { ...blockProps }>\n\t\t\t<Image\n\t\t\t\ttemporaryURL={ temporaryURL }\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tisSingleSelected={ isSingleSelected }\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\tonReplace={ onReplace }\n\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonUploadError={ onUploadError }\n\t\t\t\tcontainerRef={ ref }\n\t\t\t\tcontext={ context }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tblockEditingMode={ blockEditingMode }\n\t\t\t/>\n\t\t\t<MediaPlaceholder\n\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\tvalue={ { id, src } }\n\t\t\t\tmediaPreview={ mediaPreview }\n\t\t\t\tdisableMediaButtons={ temporaryURL || url }\n\t\t\t/>\n\t\t</figure>\n\t);\n}\n\nexport default ImageEdit;\n"],"mappings":"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"}
@@ -355,7 +355,9 @@ export default function Image({
355
355
  lockUrlControls = false,
356
356
  lockHrefControls = false,
357
357
  lockAltControls = false,
358
+ lockAltControlsMessage,
358
359
  lockTitleControls = false,
360
+ lockTitleControlsMessage,
359
361
  lockCaption = false
360
362
  } = useSelect(select => {
361
363
  if (!isSingleSelected) {
@@ -387,7 +389,11 @@ export default function Image({
387
389
  // This is a temporary solution until we support overriding the caption on the frontend.
388
390
  hasParentPattern,
389
391
  lockAltControls: !!altBinding && (!altBindingSource || altBindingSource?.lockAttributesEditing),
390
- lockTitleControls: !!titleBinding && (!titleBindingSource || titleBindingSource?.lockAttributesEditing)
392
+ lockAltControlsMessage: altBindingSource?.label ? sprintf( /* translators: %s: Label of the bindings source. */
393
+ __('Connected to %s'), altBindingSource.label) : __('Connected to dynamic data'),
394
+ lockTitleControls: !!titleBinding && (!titleBindingSource || titleBindingSource?.lockAttributesEditing),
395
+ lockTitleControlsMessage: titleBindingSource?.label ? sprintf( /* translators: %s: Label of the bindings source. */
396
+ __('Connected to %s'), titleBindingSource.label) : __('Connected to dynamic data')
391
397
  };
392
398
  }, [clientId, isSingleSelected, metadata?.bindings]);
393
399
  const controls = createElement(Fragment, null, createElement(BlockControls, {
@@ -456,7 +462,7 @@ export default function Image({
456
462
  value: alt || '',
457
463
  onChange: updateAlt,
458
464
  disabled: lockAltControls,
459
- help: lockAltControls ? createElement(Fragment, null, __('Connected to a custom field')) : createElement(Fragment, null, createElement(ExternalLink, {
465
+ help: lockAltControls ? createElement(Fragment, null, lockAltControlsMessage) : createElement(Fragment, null, createElement(ExternalLink, {
460
466
  href: "https://www.w3.org/WAI/tutorials/images/decision-tree"
461
467
  }, __('Describe the purpose of the image.')), createElement("br", null), __('Leave empty if decorative.')),
462
468
  __nextHasNoMarginBottom: true
@@ -486,7 +492,7 @@ export default function Image({
486
492
  value: title || '',
487
493
  onChange: onSetTitle,
488
494
  disabled: lockTitleControls,
489
- help: lockTitleControls ? createElement(Fragment, null, __('Connected to a custom field')) : createElement(Fragment, null, __('Describe the role of this image on the page.'), createElement(ExternalLink, {
495
+ help: lockTitleControls ? createElement(Fragment, null, lockTitleControlsMessage) : createElement(Fragment, null, __('Describe the role of this image on the page.'), createElement(ExternalLink, {
490
496
  href: "https://www.w3.org/TR/html52/dom.html#the-title-attribute"
491
497
  }, __('(Note: many devices and browsers do not display this text.)')))
492
498
  })
@@ -506,7 +512,7 @@ export default function Image({
506
512
  value: alt || '',
507
513
  onChange: updateAlt,
508
514
  readOnly: lockAltControls,
509
- help: lockAltControls ? createElement(Fragment, null, __('Connected to a custom field')) : createElement(Fragment, null, createElement(ExternalLink, {
515
+ help: lockAltControls ? createElement(Fragment, null, lockAltControlsMessage) : createElement(Fragment, null, createElement(ExternalLink, {
510
516
  href: "https://www.w3.org/WAI/tutorials/images/decision-tree"
511
517
  }, __('Describe the purpose of the image.')), createElement("br", null), __('Leave empty if decorative.')),
512
518
  __nextHasNoMarginBottom: true
@@ -522,7 +528,7 @@ export default function Image({
522
528
  value: title || '',
523
529
  onChange: onSetTitle,
524
530
  readOnly: lockTitleControls,
525
- help: lockTitleControls ? createElement(Fragment, null, __('Connected to a custom field')) : createElement(Fragment, null, __('Describe the role of this image on the page.'), createElement(ExternalLink, {
531
+ help: lockTitleControls ? createElement(Fragment, null, lockTitleControlsMessage) : createElement(Fragment, null, __('Describe the role of this image on the page.'), createElement(ExternalLink, {
526
532
  href: "https://www.w3.org/TR/html52/dom.html#the-title-attribute"
527
533
  }, __('(Note: many devices and browsers do not display this text.)')))
528
534
  })));