@wordpress/block-library 9.11.0 → 9.12.1-next.082ed6819.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/build/block-keyboard-shortcuts/index.js +7 -7
- package/build/block-keyboard-shortcuts/index.js.map +1 -1
- package/build/button/index.js +1 -1
- package/build/button/index.js.map +1 -1
- package/build/cover/deprecated.js +140 -4
- package/build/cover/deprecated.js.map +1 -1
- package/build/cover/edit/block-controls.js +1 -1
- package/build/cover/edit/block-controls.js.map +1 -1
- package/build/cover/edit/cover-placeholder.js +1 -2
- package/build/cover/edit/cover-placeholder.js.map +1 -1
- package/build/cover/edit/index.js +23 -23
- package/build/cover/edit/index.js.map +1 -1
- package/build/cover/index.js +10 -10
- package/build/cover/index.js.map +1 -1
- package/build/cover/save.js +13 -13
- package/build/cover/save.js.map +1 -1
- package/build/cover/shared.js +6 -7
- package/build/cover/shared.js.map +1 -1
- package/build/details/index.js +20 -0
- package/build/details/index.js.map +1 -1
- package/build/file/edit.js +8 -4
- package/build/file/edit.js.map +1 -1
- package/build/freeform/modal.js +1 -1
- package/build/freeform/modal.js.map +1 -1
- package/build/gallery/edit.js +1 -1
- package/build/gallery/edit.js.map +1 -1
- package/build/heading/index.js +1 -7
- package/build/heading/index.js.map +1 -1
- package/build/home-link/edit.js +20 -36
- package/build/home-link/edit.js.map +1 -1
- package/build/image/edit.js +1 -1
- package/build/image/edit.js.map +1 -1
- package/build/image/image.js +144 -78
- package/build/image/image.js.map +1 -1
- package/build/image/index.js +1 -1
- package/build/latest-posts/edit.js +0 -1
- package/build/latest-posts/edit.js.map +1 -1
- package/build/lock-unlock.js.map +1 -1
- package/build/navigation/edit/index.js +2 -23
- package/build/navigation/edit/index.js.map +1 -1
- package/build/navigation/use-template-part-area-label.js +6 -8
- package/build/navigation/use-template-part-area-label.js.map +1 -1
- package/build/page-list/index.js +14 -0
- package/build/page-list/index.js.map +1 -1
- package/build/paragraph/edit.js +26 -25
- package/build/paragraph/edit.js.map +1 -1
- package/build/post-content/index.js +13 -0
- package/build/post-content/index.js.map +1 -1
- package/build/post-template/edit.js +11 -0
- package/build/post-template/edit.js.map +1 -1
- package/build/post-template/index.js +1 -1
- package/build/query/edit/inspector-controls/enhanced-pagination-control.js +1 -3
- package/build/query/edit/inspector-controls/enhanced-pagination-control.js.map +1 -1
- package/build/query/edit/inspector-controls/index.js +3 -13
- package/build/query/edit/inspector-controls/index.js.map +1 -1
- package/build/query/edit/pattern-selection-modal.js +0 -3
- package/build/query/edit/pattern-selection-modal.js.map +1 -1
- package/build/query/edit/query-content.js +10 -12
- package/build/query/edit/query-content.js.map +1 -1
- package/build/query/index.js +1 -1
- package/build/query/utils.js +38 -9
- package/build/query/utils.js.map +1 -1
- package/build/social-link/edit.js +22 -9
- package/build/social-link/edit.js.map +1 -1
- package/build/template-part/edit/advanced-controls.js +2 -7
- package/build/template-part/edit/advanced-controls.js.map +1 -1
- package/build/template-part/edit/index.js +1 -4
- package/build/template-part/edit/index.js.map +1 -1
- package/build/template-part/edit/selection-modal.js +0 -3
- package/build/template-part/edit/selection-modal.js.map +1 -1
- package/build/template-part/edit/utils/get-template-part-icon.js +23 -0
- package/build/template-part/edit/utils/get-template-part-icon.js.map +1 -0
- package/build/template-part/edit/utils/hooks.js +1 -6
- package/build/template-part/edit/utils/hooks.js.map +1 -1
- package/build/template-part/variations.js +6 -12
- package/build/template-part/variations.js.map +1 -1
- package/build/video/edit.js +1 -1
- package/build/video/edit.js.map +1 -1
- package/build/video/tracks-editor.js +135 -123
- package/build/video/tracks-editor.js.map +1 -1
- package/build-module/block-keyboard-shortcuts/index.js +7 -7
- package/build-module/block-keyboard-shortcuts/index.js.map +1 -1
- package/build-module/button/index.js +1 -1
- package/build-module/button/index.js.map +1 -1
- package/build-module/cover/deprecated.js +140 -4
- package/build-module/cover/deprecated.js.map +1 -1
- package/build-module/cover/edit/block-controls.js +1 -1
- package/build-module/cover/edit/block-controls.js.map +1 -1
- package/build-module/cover/edit/cover-placeholder.js +1 -2
- package/build-module/cover/edit/cover-placeholder.js.map +1 -1
- package/build-module/cover/edit/index.js +23 -23
- package/build-module/cover/edit/index.js.map +1 -1
- package/build-module/cover/index.js +10 -10
- package/build-module/cover/index.js.map +1 -1
- package/build-module/cover/save.js +13 -13
- package/build-module/cover/save.js.map +1 -1
- package/build-module/cover/shared.js +6 -7
- package/build-module/cover/shared.js.map +1 -1
- package/build-module/details/index.js +21 -1
- package/build-module/details/index.js.map +1 -1
- package/build-module/file/edit.js +8 -4
- package/build-module/file/edit.js.map +1 -1
- package/build-module/freeform/modal.js +1 -1
- package/build-module/freeform/modal.js.map +1 -1
- package/build-module/gallery/edit.js +1 -1
- package/build-module/gallery/edit.js.map +1 -1
- package/build-module/heading/index.js +1 -7
- package/build-module/heading/index.js.map +1 -1
- package/build-module/home-link/edit.js +23 -39
- package/build-module/home-link/edit.js.map +1 -1
- package/build-module/image/edit.js +1 -1
- package/build-module/image/edit.js.map +1 -1
- package/build-module/image/image.js +149 -83
- package/build-module/image/image.js.map +1 -1
- package/build-module/image/index.js +1 -1
- package/build-module/latest-posts/edit.js +0 -1
- package/build-module/latest-posts/edit.js.map +1 -1
- package/build-module/lock-unlock.js.map +1 -1
- package/build-module/navigation/edit/index.js +2 -23
- package/build-module/navigation/edit/index.js.map +1 -1
- package/build-module/navigation/use-template-part-area-label.js +6 -8
- package/build-module/navigation/use-template-part-area-label.js.map +1 -1
- package/build-module/page-list/index.js +14 -0
- package/build-module/page-list/index.js.map +1 -1
- package/build-module/paragraph/edit.js +26 -25
- package/build-module/paragraph/edit.js.map +1 -1
- package/build-module/post-content/index.js +13 -0
- package/build-module/post-content/index.js.map +1 -1
- package/build-module/post-template/edit.js +11 -0
- package/build-module/post-template/edit.js.map +1 -1
- package/build-module/post-template/index.js +1 -1
- package/build-module/query/edit/inspector-controls/enhanced-pagination-control.js +1 -3
- package/build-module/query/edit/inspector-controls/enhanced-pagination-control.js.map +1 -1
- package/build-module/query/edit/inspector-controls/index.js +3 -13
- package/build-module/query/edit/inspector-controls/index.js.map +1 -1
- package/build-module/query/edit/pattern-selection-modal.js +0 -3
- package/build-module/query/edit/pattern-selection-modal.js.map +1 -1
- package/build-module/query/edit/query-content.js +10 -12
- package/build-module/query/edit/query-content.js.map +1 -1
- package/build-module/query/index.js +1 -1
- package/build-module/query/utils.js +35 -8
- package/build-module/query/utils.js.map +1 -1
- package/build-module/social-link/edit.js +24 -11
- package/build-module/social-link/edit.js.map +1 -1
- package/build-module/template-part/edit/advanced-controls.js +3 -8
- package/build-module/template-part/edit/advanced-controls.js.map +1 -1
- package/build-module/template-part/edit/index.js +1 -4
- package/build-module/template-part/edit/index.js.map +1 -1
- package/build-module/template-part/edit/selection-modal.js +0 -3
- package/build-module/template-part/edit/selection-modal.js.map +1 -1
- package/build-module/template-part/edit/utils/get-template-part-icon.js +15 -0
- package/build-module/template-part/edit/utils/get-template-part-icon.js.map +1 -0
- package/build-module/template-part/edit/utils/hooks.js +1 -6
- package/build-module/template-part/edit/utils/hooks.js.map +1 -1
- package/build-module/template-part/variations.js +5 -11
- package/build-module/template-part/variations.js.map +1 -1
- package/build-module/video/edit.js +1 -1
- package/build-module/video/edit.js.map +1 -1
- package/build-module/video/tracks-editor.js +136 -124
- package/build-module/video/tracks-editor.js.map +1 -1
- package/build-style/cover/editor-rtl.css +3 -5
- package/build-style/cover/editor.css +3 -5
- package/build-style/cover/style-rtl.css +19 -15
- package/build-style/cover/style.css +19 -15
- package/build-style/editor-rtl.css +19 -30
- package/build-style/editor.css +19 -30
- package/build-style/group/editor-rtl.css +0 -10
- package/build-style/group/editor.css +0 -10
- package/build-style/image/editor-rtl.css +4 -0
- package/build-style/image/editor.css +4 -0
- package/build-style/image/style-rtl.css +0 -2
- package/build-style/image/style.css +0 -2
- package/build-style/latest-posts/editor-rtl.css +0 -7
- package/build-style/latest-posts/editor.css +0 -7
- package/build-style/media-text/style-rtl.css +1 -1
- package/build-style/media-text/style.css +1 -1
- package/build-style/navigation/style-rtl.css +1 -1
- package/build-style/navigation/style.css +1 -1
- package/build-style/page-list/style-rtl.css +4 -0
- package/build-style/page-list/style.css +4 -0
- package/build-style/query/editor-rtl.css +0 -4
- package/build-style/query/editor.css +0 -4
- package/build-style/search/style-rtl.css +3 -3
- package/build-style/search/style.css +3 -3
- package/build-style/social-link/editor-rtl.css +4 -4
- package/build-style/social-link/editor.css +4 -4
- package/build-style/style-rtl.css +28 -22
- package/build-style/style.css +28 -22
- package/build-style/video/editor-rtl.css +8 -0
- package/build-style/video/editor.css +8 -0
- package/build-types/lock-unlock.d.ts +2 -0
- package/build-types/lock-unlock.d.ts.map +1 -0
- package/package.json +39 -39
- package/src/block-keyboard-shortcuts/index.js +25 -11
- package/src/button/index.js +1 -1
- package/src/comments/block.json +3 -9
- package/src/cover/deprecated.js +182 -4
- package/src/cover/edit/block-controls.js +1 -1
- package/src/cover/edit/cover-placeholder.js +0 -3
- package/src/cover/edit/index.js +42 -27
- package/src/cover/editor.scss +4 -5
- package/src/cover/index.js +8 -8
- package/src/cover/save.js +27 -20
- package/src/cover/shared.js +10 -10
- package/src/cover/style.scss +40 -16
- package/src/cover/test/__snapshots__/edit.native.js.snap +9 -9
- package/src/cover/test/__snapshots__/transforms.native.js.snap +4 -4
- package/src/cover/test/edit.js +2 -2
- package/src/cover/test/edit.native.js +4 -4
- package/src/cover/test/transforms.native.js +4 -4
- package/src/details/block.json +1 -0
- package/src/details/index.js +23 -1
- package/src/file/edit.js +9 -3
- package/src/freeform/modal.js +1 -1
- package/src/gallery/edit.js +1 -1
- package/src/group/editor.scss +0 -12
- package/src/heading/block.json +1 -7
- package/src/home-link/edit.js +27 -45
- package/src/home-link/index.php +0 -3
- package/src/image/block.json +1 -1
- package/src/image/edit.js +1 -1
- package/src/image/editor.scss +4 -0
- package/src/image/image.js +200 -109
- package/src/image/style.scss +0 -1
- package/src/image/test/__snapshots__/transforms.native.js.snap +1 -1
- package/src/latest-posts/edit.js +0 -1
- package/src/latest-posts/editor.scss +0 -11
- package/src/media-text/style.scss +1 -1
- package/src/media-text/test/__snapshots__/transforms.native.js.snap +2 -2
- package/src/navigation/edit/index.js +3 -30
- package/src/navigation/index.php +5 -151
- package/src/navigation/style.scss +1 -1
- package/src/navigation/use-template-part-area-label.js +10 -10
- package/src/page-list/block.json +14 -0
- package/src/page-list/style.scss +4 -0
- package/src/paragraph/edit.js +20 -17
- package/src/pattern/index.php +0 -7
- package/src/post-content/block.json +14 -1
- package/src/post-template/block.json +2 -1
- package/src/post-template/edit.js +19 -0
- package/src/query/block.json +1 -1
- package/src/query/edit/inspector-controls/enhanced-pagination-control.js +3 -5
- package/src/query/edit/inspector-controls/index.js +2 -12
- package/src/query/edit/pattern-selection-modal.js +0 -3
- package/src/query/edit/query-content.js +9 -17
- package/src/query/editor.scss +0 -4
- package/src/query/index.php +1 -1
- package/src/query/test/utils.js +59 -1
- package/src/query/utils.js +43 -15
- package/src/rss/index.php +11 -8
- package/src/search/index.php +2 -2
- package/src/search/style.scss +3 -5
- package/src/social-link/edit.js +47 -19
- package/src/social-link/editor.scss +6 -7
- package/src/template-part/edit/advanced-controls.js +13 -13
- package/src/template-part/edit/index.js +1 -4
- package/src/template-part/edit/selection-modal.js +0 -3
- package/src/template-part/edit/utils/get-template-part-icon.js +20 -0
- package/src/template-part/edit/utils/hooks.js +2 -7
- package/src/template-part/variations.js +4 -16
- package/src/video/edit.js +1 -1
- package/src/video/editor.scss +9 -0
- package/src/video/test/__snapshots__/transforms.native.js.snap +1 -1
- package/src/video/tracks-editor.js +157 -141
- package/tsconfig.tsbuildinfo +1 -1
- package/build/query/edit/inspector-controls/create-new-post-link.js +0 -40
- package/build/query/edit/inspector-controls/create-new-post-link.js.map +0 -1
- package/build-module/query/edit/inspector-controls/create-new-post-link.js +0 -33
- package/build-module/query/edit/inspector-controls/create-new-post-link.js.map +0 -1
- package/src/query/edit/inspector-controls/create-new-post-link.js +0 -32
- /package/src/{lock-unlock.js → lock-unlock.ts} +0 -0
package/build/image/edit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_blob","_blocks","_components","_data","_blockEditor","_element","_i18n","_icons","_notices","_compose","_hooks","_image","_utils","_useMaxWidthObserver","_constants","_jsxRuntime","pickRelevantMediaFiles","image","size","imageProps","Object","fromEntries","entries","filter","key","includes","url","sizes","media_details","source_url","exports","isExternalImage","id","isBlobURL","hasSize","_image$sizes$size","_image$media_details$","ImageEdit","attributes","setAttributes","isSelected","isSingleSelected","className","insertBlocksAfter","onReplace","context","clientId","__unstableParentLayout","parentLayout","alt","caption","width","height","sizeSlug","aspectRatio","scale","align","metadata","temporaryURL","setTemporaryURL","useState","blob","containerRef","useRef","isMaxWidthContainerWidth","type","maxWidthObserver","maxContentWidth","useMaxWidthObserver","placeholderResizeListener","placeholderWidth","useResizeObserver","isSmallContainer","altRef","useEffect","current","captionRef","__unstableMarkNextChangeAsNotPersistent","replaceBlock","useDispatch","blockEditorStore","undefined","getSettings","getBlockRootClientId","getBlockName","canInsertBlockType","useSelect","blockEditingMode","useBlockEditingMode","createErrorNotice","noticesStore","onUploadError","message","src","onSelectImagesList","images","win","ownerDocument","defaultView","every","file","File","files","rootClientId","some","isValidFileType","__","imageBlocks","map","createBlock","createBlobURL","galleryBlock","onSelectImage","media","Array","isArray","title","imageDefaultSize","newSize","mediaAttributes","omittedCaption","restMediaAttributes","additionalAttributes","linkDestination","window","wp","view","settings","defaultProps","link","LINK_DESTINATION_NONE","LINK_DESTINATION_MEDIA","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_CUSTOM","href","onSelectURL","newURL","useUploadMediaFromBlobURL","allowedTypes","ALLOWED_MEDIA_TYPES","onChange","onError","isExternal","mediaPreview","jsx","borderProps","useBorderProps","shadowProps","getShadowClassesAndStyles","classes","clsx","style","keys","length","blockProps","useBlockProps","ref","lockUrlControls","lockUrlControlsMessage","select","blockBindingsSource","getBlockBindingsSource","bindings","source","canUserEditValue","args","label","sprintf","placeholder","content","jsxs","Placeholder","icon","pluginsIcon","withIllustration","instructions","objectFit","children","Fragment","default","parentLayoutType","MediaPlaceholder","BlockIcon","onSelect","accept","handleUpload","value","disableMediaButtons","_default"],"sources":["@wordpress/block-library/src/image/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { isBlobURL, createBlobURL } from '@wordpress/blob';\nimport { createBlock, getBlockBindingsSource } from '@wordpress/blocks';\nimport { Placeholder } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tBlockIcon,\n\tuseBlockProps,\n\tMediaPlaceholder,\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';\nimport { useResizeObserver } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { useUploadMediaFromBlobURL } from '../utils/hooks';\nimport Image from './image';\nimport { isValidFileType } from './utils';\nimport { useMaxWidthObserver } from './use-max-width-observer';\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 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\t__unstableParentLayout: parentLayout,\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\n\tconst [ temporaryURL, setTemporaryURL ] = useState( attributes.blob );\n\n\tconst containerRef = useRef();\n\t// Only observe the max width from the parent container when the parent layout is not flex nor grid.\n\t// This won't work for them because the container width changes with the image.\n\t// TODO: Find a way to observe the container width for flex and grid layouts.\n\tconst isMaxWidthContainerWidth =\n\t\t! parentLayout ||\n\t\t( parentLayout.type !== 'flex' && parentLayout.type !== 'grid' );\n\tconst [ maxWidthObserver, maxContentWidth ] = useMaxWidthObserver();\n\n\tconst [ placeholderResizeListener, { width: placeholderWidth } ] =\n\t\tuseResizeObserver();\n\n\tconst isSmallContainer = placeholderWidth && placeholderWidth < 160;\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, replaceBlock } =\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}, [ __unstableMarkNextChangeAsNotPersistent, align, setAttributes ] );\n\n\tconst {\n\t\tgetSettings,\n\t\tgetBlockRootClientId,\n\t\tgetBlockName,\n\t\tcanInsertBlockType,\n\t} = 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\tblob: undefined,\n\t\t} );\n\t}\n\n\tfunction onSelectImagesList( images ) {\n\t\tconst win = containerRef.current?.ownerDocument.defaultView;\n\n\t\tif ( images.every( ( file ) => file instanceof win.File ) ) {\n\t\t\t/** @type {File[]} */\n\t\t\tconst files = images;\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\n\t\t\tif ( files.some( ( file ) => ! isValidFileType( file ) ) ) {\n\t\t\t\t// Copied from the same notice in the gallery block.\n\t\t\t\tcreateErrorNotice(\n\t\t\t\t\t__(\n\t\t\t\t\t\t'If uploading to a gallery all files need to be image formats'\n\t\t\t\t\t),\n\t\t\t\t\t{ id: 'gallery-upload-invalid-file', type: 'snackbar' }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst imageBlocks = files\n\t\t\t\t.filter( ( file ) => isValidFileType( file ) )\n\t\t\t\t.map( ( file ) =>\n\t\t\t\t\tcreateBlock( 'core/image', {\n\t\t\t\t\t\tblob: createBlobURL( file ),\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\tif ( getBlockName( rootClientId ) === 'core/gallery' ) {\n\t\t\t\treplaceBlock( clientId, imageBlocks );\n\t\t\t} else if ( canInsertBlockType( 'core/gallery', rootClientId ) ) {\n\t\t\t\tconst galleryBlock = createBlock(\n\t\t\t\t\t'core/gallery',\n\t\t\t\t\t{},\n\t\t\t\t\timageBlocks\n\t\t\t\t);\n\n\t\t\t\treplaceBlock( clientId, galleryBlock );\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction onSelectImage( media ) {\n\t\tif ( Array.isArray( media ) ) {\n\t\t\tonSelectImagesList( media );\n\t\t\treturn;\n\t\t}\n\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\tblob: undefined,\n\t\t\t} );\n\t\t\tsetTemporaryURL();\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\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\tblob: undefined,\n\t\t\t...mediaAttributes,\n\t\t\t...additionalAttributes,\n\t\t\tlinkDestination,\n\t\t} );\n\t\tsetTemporaryURL();\n\t}\n\n\tfunction onSelectURL( newURL ) {\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\tblob: undefined,\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\tsetTemporaryURL();\n\t\t}\n\t}\n\n\tuseUploadMediaFromBlobURL( {\n\t\turl: temporaryURL,\n\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\tonChange: onSelectImage,\n\t\tonError: onUploadError,\n\t} );\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 = clsx( 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: containerRef,\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 = getBlockBindingsSource(\n\t\t\t\tmetadata?.bindings?.url?.source\n\t\t\t);\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?.canUserEditValue?.( {\n\t\t\t\t\t\tselect,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\targs: metadata?.bindings?.url?.args,\n\t\t\t\t\t} ),\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[ context, isSingleSelected, metadata?.bindings?.url ]\n\t);\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName={ clsx( '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\ticon={\n\t\t\t\t\t! isSmallContainer &&\n\t\t\t\t\t( lockUrlControls ? pluginsIcon : icon )\n\t\t\t\t}\n\t\t\t\twithIllustration={ ! isSingleSelected || isSmallContainer }\n\t\t\t\tlabel={ ! isSmallContainer && __( 'Image' ) }\n\t\t\t\tinstructions={\n\t\t\t\t\t! lockUrlControls &&\n\t\t\t\t\t! isSmallContainer &&\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Upload or drag an image file here, or pick one from your library.'\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! isSmallContainer &&\n\t\t\t\t\tlockUrlControlsMessage }\n\n\t\t\t\t{ ! lockUrlControls && ! isSmallContainer && content }\n\t\t\t\t{ placeholderResizeListener }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<figure { ...blockProps }>\n\t\t\t\t<Image\n\t\t\t\t\ttemporaryURL={ temporaryURL }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tisSingleSelected={ isSingleSelected }\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\tonUploadError={ onUploadError }\n\t\t\t\t\tcontext={ context }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tblockEditingMode={ blockEditingMode }\n\t\t\t\t\tparentLayoutType={ parentLayout?.type }\n\t\t\t\t\tmaxContentWidth={ maxContentWidth }\n\t\t\t\t/>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\thandleUpload={ ( files ) => files.length === 1 }\n\t\t\t\t\tvalue={ { id, src } }\n\t\t\t\t\tmediaPreview={ mediaPreview }\n\t\t\t\t\tdisableMediaButtons={ temporaryURL || url }\n\t\t\t\t/>\n\t\t\t</figure>\n\t\t\t{\n\t\t\t\t// The listener cannot be placed as the first element as it will break the in-between inserter.\n\t\t\t\t// See https://github.com/WordPress/gutenberg/blob/71134165868298fc15e22896d0c28b41b3755ff7/packages/block-editor/src/components/block-list/use-in-between-inserter.js#L120\n\t\t\t\tisSingleSelected && isMaxWidthContainerWidth && maxWidthObserver\n\t\t\t}\n\t\t</>\n\t);\n}\n\nexport default ImageEdit;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_clsx","_interopRequireDefault","require","_blob","_blocks","_components","_data","_blockEditor","_element","_i18n","_icons","_notices","_compose","_hooks","_image","_utils","_useMaxWidthObserver","_constants","_jsxRuntime","pickRelevantMediaFiles","image","size","imageProps","Object","fromEntries","entries","filter","key","includes","url","sizes","media_details","source_url","exports","isExternalImage","id","isBlobURL","hasSize","_image$sizes$size","_image$media_details$","ImageEdit","attributes","setAttributes","isSelected","isSingleSelected","className","insertBlocksAfter","onReplace","context","clientId","__unstableParentLayout","parentLayout","alt","caption","width","height","sizeSlug","aspectRatio","scale","align","metadata","temporaryURL","setTemporaryURL","useState","blob","containerRef","useRef","isMaxWidthContainerWidth","type","maxWidthObserver","maxContentWidth","useMaxWidthObserver","placeholderResizeListener","placeholderWidth","useResizeObserver","isSmallContainer","altRef","useEffect","current","captionRef","__unstableMarkNextChangeAsNotPersistent","replaceBlock","useDispatch","blockEditorStore","undefined","getSettings","getBlockRootClientId","getBlockName","canInsertBlockType","useSelect","blockEditingMode","useBlockEditingMode","createErrorNotice","noticesStore","onUploadError","message","src","onSelectImagesList","images","win","ownerDocument","defaultView","every","file","File","files","rootClientId","some","isValidFileType","__","imageBlocks","map","createBlock","createBlobURL","galleryBlock","onSelectImage","media","Array","isArray","title","imageDefaultSize","newSize","mediaAttributes","omittedCaption","restMediaAttributes","additionalAttributes","linkDestination","window","wp","view","settings","defaultProps","link","LINK_DESTINATION_NONE","LINK_DESTINATION_MEDIA","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_CUSTOM","href","onSelectURL","newURL","useUploadMediaFromBlobURL","allowedTypes","ALLOWED_MEDIA_TYPES","onChange","onError","isExternal","mediaPreview","jsx","borderProps","useBorderProps","shadowProps","getShadowClassesAndStyles","classes","clsx","style","keys","length","blockProps","useBlockProps","ref","lockUrlControls","lockUrlControlsMessage","select","blockBindingsSource","getBlockBindingsSource","bindings","source","canUserEditValue","args","label","sprintf","placeholder","content","jsxs","Placeholder","icon","pluginsIcon","withIllustration","instructions","objectFit","children","Fragment","default","parentLayoutType","MediaPlaceholder","BlockIcon","onSelect","accept","handleUpload","value","disableMediaButtons","_default"],"sources":["@wordpress/block-library/src/image/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { isBlobURL, createBlobURL } from '@wordpress/blob';\nimport { createBlock, getBlockBindingsSource } from '@wordpress/blocks';\nimport { Placeholder } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tBlockIcon,\n\tuseBlockProps,\n\tMediaPlaceholder,\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';\nimport { useResizeObserver } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { useUploadMediaFromBlobURL } from '../utils/hooks';\nimport Image from './image';\nimport { isValidFileType } from './utils';\nimport { useMaxWidthObserver } from './use-max-width-observer';\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 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\t__unstableParentLayout: parentLayout,\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\n\tconst [ temporaryURL, setTemporaryURL ] = useState( attributes.blob );\n\n\tconst containerRef = useRef();\n\t// Only observe the max width from the parent container when the parent layout is not flex nor grid.\n\t// This won't work for them because the container width changes with the image.\n\t// TODO: Find a way to observe the container width for flex and grid layouts.\n\tconst isMaxWidthContainerWidth =\n\t\t! parentLayout ||\n\t\t( parentLayout.type !== 'flex' && parentLayout.type !== 'grid' );\n\tconst [ maxWidthObserver, maxContentWidth ] = useMaxWidthObserver();\n\n\tconst [ placeholderResizeListener, { width: placeholderWidth } ] =\n\t\tuseResizeObserver();\n\n\tconst isSmallContainer = placeholderWidth && placeholderWidth < 160;\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, replaceBlock } =\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}, [ __unstableMarkNextChangeAsNotPersistent, align, setAttributes ] );\n\n\tconst {\n\t\tgetSettings,\n\t\tgetBlockRootClientId,\n\t\tgetBlockName,\n\t\tcanInsertBlockType,\n\t} = 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\tblob: undefined,\n\t\t} );\n\t}\n\n\tfunction onSelectImagesList( images ) {\n\t\tconst win = containerRef.current?.ownerDocument.defaultView;\n\n\t\tif ( images.every( ( file ) => file instanceof win.File ) ) {\n\t\t\t/** @type {File[]} */\n\t\t\tconst files = images;\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\n\t\t\tif ( files.some( ( file ) => ! isValidFileType( file ) ) ) {\n\t\t\t\t// Copied from the same notice in the gallery block.\n\t\t\t\tcreateErrorNotice(\n\t\t\t\t\t__(\n\t\t\t\t\t\t'If uploading to a gallery all files need to be image formats'\n\t\t\t\t\t),\n\t\t\t\t\t{ id: 'gallery-upload-invalid-file', type: 'snackbar' }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst imageBlocks = files\n\t\t\t\t.filter( ( file ) => isValidFileType( file ) )\n\t\t\t\t.map( ( file ) =>\n\t\t\t\t\tcreateBlock( 'core/image', {\n\t\t\t\t\t\tblob: createBlobURL( file ),\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\tif ( getBlockName( rootClientId ) === 'core/gallery' ) {\n\t\t\t\treplaceBlock( clientId, imageBlocks );\n\t\t\t} else if ( canInsertBlockType( 'core/gallery', rootClientId ) ) {\n\t\t\t\tconst galleryBlock = createBlock(\n\t\t\t\t\t'core/gallery',\n\t\t\t\t\t{},\n\t\t\t\t\timageBlocks\n\t\t\t\t);\n\n\t\t\t\treplaceBlock( clientId, galleryBlock );\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction onSelectImage( media ) {\n\t\tif ( Array.isArray( media ) ) {\n\t\t\tonSelectImagesList( media );\n\t\t\treturn;\n\t\t}\n\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\tblob: undefined,\n\t\t\t} );\n\t\t\tsetTemporaryURL();\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\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\tblob: undefined,\n\t\t\t...mediaAttributes,\n\t\t\t...additionalAttributes,\n\t\t\tlinkDestination,\n\t\t} );\n\t\tsetTemporaryURL();\n\t}\n\n\tfunction onSelectURL( newURL ) {\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\tblob: undefined,\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\tsetTemporaryURL();\n\t\t}\n\t}\n\n\tuseUploadMediaFromBlobURL( {\n\t\turl: temporaryURL,\n\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\tonChange: onSelectImage,\n\t\tonError: onUploadError,\n\t} );\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 = clsx( 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: containerRef,\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 = getBlockBindingsSource(\n\t\t\t\tmetadata?.bindings?.url?.source\n\t\t\t);\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?.canUserEditValue?.( {\n\t\t\t\t\t\tselect,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\targs: metadata?.bindings?.url?.args,\n\t\t\t\t\t} ),\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[ context, isSingleSelected, metadata?.bindings?.url ]\n\t);\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName={ clsx( '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\ticon={\n\t\t\t\t\t! isSmallContainer &&\n\t\t\t\t\t( lockUrlControls ? pluginsIcon : icon )\n\t\t\t\t}\n\t\t\t\twithIllustration={ ! isSingleSelected || isSmallContainer }\n\t\t\t\tlabel={ ! isSmallContainer && __( 'Image' ) }\n\t\t\t\tinstructions={\n\t\t\t\t\t! lockUrlControls &&\n\t\t\t\t\t! isSmallContainer &&\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Drag and drop an image, upload, or choose from your library.'\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! isSmallContainer &&\n\t\t\t\t\tlockUrlControlsMessage }\n\n\t\t\t\t{ ! lockUrlControls && ! isSmallContainer && content }\n\t\t\t\t{ placeholderResizeListener }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<figure { ...blockProps }>\n\t\t\t\t<Image\n\t\t\t\t\ttemporaryURL={ temporaryURL }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tisSingleSelected={ isSingleSelected }\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\tonUploadError={ onUploadError }\n\t\t\t\t\tcontext={ context }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tblockEditingMode={ blockEditingMode }\n\t\t\t\t\tparentLayoutType={ parentLayout?.type }\n\t\t\t\t\tmaxContentWidth={ maxContentWidth }\n\t\t\t\t/>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\thandleUpload={ ( files ) => files.length === 1 }\n\t\t\t\t\tvalue={ { id, src } }\n\t\t\t\t\tmediaPreview={ mediaPreview }\n\t\t\t\t\tdisableMediaButtons={ temporaryURL || url }\n\t\t\t\t/>\n\t\t\t</figure>\n\t\t\t{\n\t\t\t\t// The listener cannot be placed as the first element as it will break the in-between inserter.\n\t\t\t\t// See https://github.com/WordPress/gutenberg/blob/71134165868298fc15e22896d0c28b41b3755ff7/packages/block-editor/src/components/block-list/use-in-between-inserter.js#L120\n\t\t\t\tisSingleSelected && isMaxWidthContainerWidth && maxWidthObserver\n\t\t\t}\n\t\t</>\n\t);\n}\n\nexport default ImageEdit;\n"],"mappings":"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","ignoreList":[]}
|
package/build/image/image.js
CHANGED
|
@@ -11,7 +11,6 @@ var _data = require("@wordpress/data");
|
|
|
11
11
|
var _blockEditor = require("@wordpress/block-editor");
|
|
12
12
|
var _element = require("@wordpress/element");
|
|
13
13
|
var _i18n = require("@wordpress/i18n");
|
|
14
|
-
var _keycodes = require("@wordpress/keycodes");
|
|
15
14
|
var _url = require("@wordpress/url");
|
|
16
15
|
var _blocks = require("@wordpress/blocks");
|
|
17
16
|
var _icons = require("@wordpress/icons");
|
|
@@ -50,6 +49,9 @@ const scaleOptions = [{
|
|
|
50
49
|
label: (0, _i18n._x)('Contain', 'Scale option for dimensions control'),
|
|
51
50
|
help: (0, _i18n.__)('Image is contained without distortion.')
|
|
52
51
|
}];
|
|
52
|
+
const WRITEMODE_POPOVER_PROPS = {
|
|
53
|
+
placement: 'bottom-start'
|
|
54
|
+
};
|
|
53
55
|
|
|
54
56
|
// If the image has a href, wrap in an <a /> tag to trigger any inherited link element styles.
|
|
55
57
|
const ImageWrapper = ({
|
|
@@ -75,6 +77,111 @@ const ImageWrapper = ({
|
|
|
75
77
|
children: children
|
|
76
78
|
});
|
|
77
79
|
};
|
|
80
|
+
function ContentOnlyControls({
|
|
81
|
+
attributes,
|
|
82
|
+
setAttributes,
|
|
83
|
+
lockAltControls,
|
|
84
|
+
lockAltControlsMessage,
|
|
85
|
+
lockTitleControls,
|
|
86
|
+
lockTitleControlsMessage
|
|
87
|
+
}) {
|
|
88
|
+
// Use internal state instead of a ref to make sure that the component
|
|
89
|
+
// re-renders when the popover's anchor updates.
|
|
90
|
+
const [popoverAnchor, setPopoverAnchor] = (0, _element.useState)(null);
|
|
91
|
+
const [isAltDialogOpen, setIsAltDialogOpen] = (0, _element.useState)(false);
|
|
92
|
+
const [isTitleDialogOpen, setIsTitleDialogOpen] = (0, _element.useState)(false);
|
|
93
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
94
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToolbarItem, {
|
|
95
|
+
ref: setPopoverAnchor,
|
|
96
|
+
children: toggleProps => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.DropdownMenu, {
|
|
97
|
+
icon: _icons.chevronDown
|
|
98
|
+
/* translators: button label text should, if possible, be under 16 characters. */,
|
|
99
|
+
label: (0, _i18n.__)('More'),
|
|
100
|
+
toggleProps: {
|
|
101
|
+
...toggleProps,
|
|
102
|
+
description: (0, _i18n.__)('Displays more controls.')
|
|
103
|
+
},
|
|
104
|
+
popoverProps: WRITEMODE_POPOVER_PROPS,
|
|
105
|
+
children: ({
|
|
106
|
+
onClose
|
|
107
|
+
}) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
108
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuItem, {
|
|
109
|
+
onClick: () => {
|
|
110
|
+
setIsAltDialogOpen(true);
|
|
111
|
+
onClose();
|
|
112
|
+
},
|
|
113
|
+
"aria-haspopup": "dialog",
|
|
114
|
+
children: (0, _i18n._x)('Alternative text', 'Alternative text for an image. Block toolbar label, a low character count is preferred.')
|
|
115
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuItem, {
|
|
116
|
+
onClick: () => {
|
|
117
|
+
setIsTitleDialogOpen(true);
|
|
118
|
+
onClose();
|
|
119
|
+
},
|
|
120
|
+
"aria-haspopup": "dialog",
|
|
121
|
+
children: (0, _i18n.__)('Title text')
|
|
122
|
+
})]
|
|
123
|
+
})
|
|
124
|
+
})
|
|
125
|
+
}), isAltDialogOpen && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Popover, {
|
|
126
|
+
placement: "bottom-start",
|
|
127
|
+
anchor: popoverAnchor,
|
|
128
|
+
onClose: () => setIsAltDialogOpen(false),
|
|
129
|
+
offset: 13,
|
|
130
|
+
variant: "toolbar",
|
|
131
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
132
|
+
className: "wp-block-image__toolbar_content_textarea__container",
|
|
133
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.TextareaControl, {
|
|
134
|
+
className: "wp-block-image__toolbar_content_textarea",
|
|
135
|
+
label: (0, _i18n.__)('Alternative text'),
|
|
136
|
+
value: attributes.alt || '',
|
|
137
|
+
onChange: value => setAttributes({
|
|
138
|
+
alt: value
|
|
139
|
+
}),
|
|
140
|
+
disabled: lockAltControls,
|
|
141
|
+
help: lockAltControls ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
142
|
+
children: lockAltControlsMessage
|
|
143
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
144
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ExternalLink, {
|
|
145
|
+
href:
|
|
146
|
+
// translators: Localized tutorial, if one exists. W3C Web Accessibility Initiative link has list of existing translations.
|
|
147
|
+
(0, _i18n.__)('https://www.w3.org/WAI/tutorials/images/decision-tree/'),
|
|
148
|
+
children: (0, _i18n.__)('Describe the purpose of the image.')
|
|
149
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("br", {}), (0, _i18n.__)('Leave empty if decorative.')]
|
|
150
|
+
}),
|
|
151
|
+
__nextHasNoMarginBottom: true
|
|
152
|
+
})
|
|
153
|
+
})
|
|
154
|
+
}), isTitleDialogOpen && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Popover, {
|
|
155
|
+
placement: "bottom-start",
|
|
156
|
+
anchor: popoverAnchor,
|
|
157
|
+
onClose: () => setIsTitleDialogOpen(false),
|
|
158
|
+
offset: 13,
|
|
159
|
+
variant: "toolbar",
|
|
160
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
161
|
+
className: "wp-block-image__toolbar_content_textarea__container",
|
|
162
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.TextControl, {
|
|
163
|
+
__next40pxDefaultSize: true,
|
|
164
|
+
className: "wp-block-image__toolbar_content_textarea",
|
|
165
|
+
__nextHasNoMarginBottom: true,
|
|
166
|
+
label: (0, _i18n.__)('Title attribute'),
|
|
167
|
+
value: attributes.title || '',
|
|
168
|
+
onChange: value => setAttributes({
|
|
169
|
+
title: value
|
|
170
|
+
}),
|
|
171
|
+
disabled: lockTitleControls,
|
|
172
|
+
help: lockTitleControls ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
173
|
+
children: lockTitleControlsMessage
|
|
174
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
175
|
+
children: [(0, _i18n.__)('Describe the role of this image on the page.'), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ExternalLink, {
|
|
176
|
+
href: "https://www.w3.org/TR/html52/dom.html#the-title-attribute",
|
|
177
|
+
children: (0, _i18n.__)('(Note: many devices and browsers do not display this text.)')
|
|
178
|
+
})]
|
|
179
|
+
})
|
|
180
|
+
})
|
|
181
|
+
})
|
|
182
|
+
})]
|
|
183
|
+
});
|
|
184
|
+
}
|
|
78
185
|
function Image({
|
|
79
186
|
temporaryURL,
|
|
80
187
|
attributes,
|
|
@@ -519,82 +626,16 @@ function Image({
|
|
|
519
626
|
// Add some extra controls for content attributes when content only mode is active.
|
|
520
627
|
// With content only mode active, the inspector is hidden, so users need another way
|
|
521
628
|
// to edit these attributes.
|
|
522
|
-
(0, _jsxRuntime.
|
|
523
|
-
group: "
|
|
524
|
-
children:
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
onClick: onToggle,
|
|
533
|
-
"aria-haspopup": "true",
|
|
534
|
-
"aria-expanded": isOpen,
|
|
535
|
-
onKeyDown: event => {
|
|
536
|
-
if (!isOpen && event.keyCode === _keycodes.DOWN) {
|
|
537
|
-
event.preventDefault();
|
|
538
|
-
onToggle();
|
|
539
|
-
}
|
|
540
|
-
},
|
|
541
|
-
children: (0, _i18n._x)('Alternative text', 'Alternative text for an image. Block toolbar label, a low character count is preferred.')
|
|
542
|
-
}),
|
|
543
|
-
renderContent: () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.TextareaControl, {
|
|
544
|
-
className: "wp-block-image__toolbar_content_textarea",
|
|
545
|
-
label: (0, _i18n.__)('Alternative text'),
|
|
546
|
-
value: alt || '',
|
|
547
|
-
onChange: updateAlt,
|
|
548
|
-
disabled: lockAltControls,
|
|
549
|
-
help: lockAltControls ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
550
|
-
children: lockAltControlsMessage
|
|
551
|
-
}) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
552
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ExternalLink, {
|
|
553
|
-
href:
|
|
554
|
-
// translators: Localized tutorial, if one exists. W3C Web Accessibility Initiative link has list of existing translations.
|
|
555
|
-
(0, _i18n.__)('https://www.w3.org/WAI/tutorials/images/decision-tree/'),
|
|
556
|
-
children: (0, _i18n.__)('Describe the purpose of the image.')
|
|
557
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("br", {}), (0, _i18n.__)('Leave empty if decorative.')]
|
|
558
|
-
}),
|
|
559
|
-
__nextHasNoMarginBottom: true
|
|
560
|
-
})
|
|
561
|
-
}), title && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Dropdown, {
|
|
562
|
-
popoverProps: {
|
|
563
|
-
position: 'bottom right'
|
|
564
|
-
},
|
|
565
|
-
renderToggle: ({
|
|
566
|
-
isOpen,
|
|
567
|
-
onToggle
|
|
568
|
-
}) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToolbarButton, {
|
|
569
|
-
onClick: onToggle,
|
|
570
|
-
"aria-haspopup": "true",
|
|
571
|
-
"aria-expanded": isOpen,
|
|
572
|
-
onKeyDown: event => {
|
|
573
|
-
if (!isOpen && event.keyCode === _keycodes.DOWN) {
|
|
574
|
-
event.preventDefault();
|
|
575
|
-
onToggle();
|
|
576
|
-
}
|
|
577
|
-
},
|
|
578
|
-
children: (0, _i18n.__)('Title')
|
|
579
|
-
}),
|
|
580
|
-
renderContent: () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.TextControl, {
|
|
581
|
-
__next40pxDefaultSize: true,
|
|
582
|
-
className: "wp-block-image__toolbar_content_textarea",
|
|
583
|
-
__nextHasNoMarginBottom: true,
|
|
584
|
-
label: (0, _i18n.__)('Title attribute'),
|
|
585
|
-
value: title || '',
|
|
586
|
-
onChange: onSetTitle,
|
|
587
|
-
disabled: lockTitleControls,
|
|
588
|
-
help: lockTitleControls ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
589
|
-
children: lockTitleControlsMessage
|
|
590
|
-
}) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
591
|
-
children: [(0, _i18n.__)('Describe the role of this image on the page.'), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ExternalLink, {
|
|
592
|
-
href: "https://www.w3.org/TR/html52/dom.html#the-title-attribute",
|
|
593
|
-
children: (0, _i18n.__)('(Note: many devices and browsers do not display this text.)')
|
|
594
|
-
})]
|
|
595
|
-
})
|
|
596
|
-
})
|
|
597
|
-
})]
|
|
629
|
+
(0, _jsxRuntime.jsx)(_blockEditor.BlockControls, {
|
|
630
|
+
group: "block",
|
|
631
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContentOnlyControls, {
|
|
632
|
+
attributes: attributes,
|
|
633
|
+
setAttributes: setAttributes,
|
|
634
|
+
lockAltControls: lockAltControls,
|
|
635
|
+
lockAltControlsMessage: lockAltControlsMessage,
|
|
636
|
+
lockTitleControls: lockTitleControls,
|
|
637
|
+
lockTitleControlsMessage: lockTitleControlsMessage
|
|
638
|
+
})
|
|
598
639
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.InspectorControls, {
|
|
599
640
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.__experimentalToolsPanel, {
|
|
600
641
|
label: (0, _i18n.__)('Settings'),
|
|
@@ -663,6 +704,13 @@ function Image({
|
|
|
663
704
|
const borderProps = (0, _blockEditor.__experimentalUseBorderProps)(attributes);
|
|
664
705
|
const shadowProps = (0, _blockEditor.__experimentalGetShadowClassesAndStyles)(attributes);
|
|
665
706
|
const isRounded = attributes.className?.includes('is-style-rounded');
|
|
707
|
+
const {
|
|
708
|
+
postType,
|
|
709
|
+
postId,
|
|
710
|
+
queryId
|
|
711
|
+
} = context;
|
|
712
|
+
const isDescendentOfQueryLoop = Number.isFinite(queryId);
|
|
713
|
+
const [, setFeaturedImage] = (0, _coreData.useEntityProp)('postType', postType, 'featured_media', postId);
|
|
666
714
|
let img = temporaryURL && hasImageErrored ?
|
|
667
715
|
/*#__PURE__*/
|
|
668
716
|
// Show a placeholder during upload when the blob URL can't be loaded. This can
|
|
@@ -832,8 +880,26 @@ function Image({
|
|
|
832
880
|
children: [mediaReplaceFlow, metadata?.bindings ? controls : sizeControls]
|
|
833
881
|
});
|
|
834
882
|
}
|
|
883
|
+
|
|
884
|
+
/**
|
|
885
|
+
* Set the post's featured image with the current image.
|
|
886
|
+
*/
|
|
887
|
+
const setPostFeatureImage = () => {
|
|
888
|
+
setFeaturedImage(id);
|
|
889
|
+
createSuccessNotice((0, _i18n.__)('Post featured image updated.'), {
|
|
890
|
+
type: 'snackbar'
|
|
891
|
+
});
|
|
892
|
+
};
|
|
893
|
+
const featuredImageControl = /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.BlockSettingsMenuControls, {
|
|
894
|
+
children: ({
|
|
895
|
+
selectedClientIds
|
|
896
|
+
}) => selectedClientIds.length === 1 && !isDescendentOfQueryLoop && postId && id && clientId === selectedClientIds[0] && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuItem, {
|
|
897
|
+
onClick: setPostFeatureImage,
|
|
898
|
+
children: (0, _i18n.__)('Set featured image')
|
|
899
|
+
})
|
|
900
|
+
});
|
|
835
901
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
836
|
-
children: [mediaReplaceFlow, controls, img, /*#__PURE__*/(0, _jsxRuntime.jsx)(_caption.Caption, {
|
|
902
|
+
children: [mediaReplaceFlow, controls, featuredImageControl, img, /*#__PURE__*/(0, _jsxRuntime.jsx)(_caption.Caption, {
|
|
837
903
|
attributes: attributes,
|
|
838
904
|
setAttributes: setAttributes,
|
|
839
905
|
isSelected: isSingleSelected,
|