@wordpress/block-library 9.7.0 → 9.7.1-next.5368f64a9.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/build/archives/edit.js +1 -1
- package/build/archives/edit.js.map +1 -1
- package/build/block/edit.js +2 -3
- package/build/block/edit.js.map +1 -1
- package/build/buttons/index.js +1 -1
- package/build/comments/edit/comments-legacy.js +2 -4
- package/build/comments/edit/comments-legacy.js.map +1 -1
- package/build/cover/deprecated.js +1 -1
- package/build/cover/deprecated.js.map +1 -1
- package/build/cover/edit/index.js +4 -2
- package/build/cover/edit/index.js.map +1 -1
- package/build/embed/edit.js +5 -11
- package/build/embed/edit.js.map +1 -1
- package/build/embed/embed-placeholder.js +4 -8
- package/build/embed/embed-placeholder.js.map +1 -1
- package/build/embed/embed-preview.js +16 -4
- package/build/embed/embed-preview.js.map +1 -1
- package/build/file/transforms.js +18 -4
- package/build/file/transforms.js.map +1 -1
- package/build/freeform/modal.js +6 -12
- package/build/freeform/modal.js.map +1 -1
- package/build/image/edit.js +55 -15
- package/build/image/edit.js.map +1 -1
- package/build/image/image.js +23 -20
- package/build/image/image.js.map +1 -1
- package/build/image/transforms.js +0 -13
- package/build/image/transforms.js.map +1 -1
- package/build/image/use-max-width-observer.js +35 -0
- package/build/image/use-max-width-observer.js.map +1 -0
- package/build/image/utils.js +11 -0
- package/build/image/utils.js.map +1 -1
- package/build/latest-posts/edit.js +1 -1
- package/build/latest-posts/edit.js.map +1 -1
- package/build/missing/edit.js +2 -4
- package/build/missing/edit.js.map +1 -1
- package/build/navigation/edit/deleted-navigation-warning.js +14 -10
- package/build/navigation/edit/deleted-navigation-warning.js.map +1 -1
- package/build/navigation/edit/index.js +2 -4
- package/build/navigation/edit/index.js.map +1 -1
- package/build/navigation/edit/menu-inspector-controls.js +2 -1
- package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
- package/build/navigation/edit/navigation-menu-delete-control.js +2 -4
- package/build/navigation/edit/navigation-menu-delete-control.js.map +1 -1
- package/build/navigation/edit/placeholder/index.js +2 -4
- package/build/navigation/edit/placeholder/index.js.map +1 -1
- package/build/navigation/edit/responsive-wrapper.js +4 -8
- package/build/navigation/edit/responsive-wrapper.js.map +1 -1
- package/build/navigation-link/link-ui.js +2 -4
- package/build/navigation-link/link-ui.js.map +1 -1
- package/build/page-list/convert-to-links-modal.js +4 -8
- package/build/page-list/convert-to-links-modal.js.map +1 -1
- package/build/page-list/edit.js +2 -4
- package/build/page-list/edit.js.map +1 -1
- package/build/post-comments-form/form.js +2 -4
- package/build/post-comments-form/form.js.map +1 -1
- package/build/post-featured-image/edit.js +2 -4
- package/build/post-featured-image/edit.js.map +1 -1
- package/build/post-title/index.js +4 -1
- package/build/post-title/index.js.map +1 -1
- package/build/query/edit/enhanced-pagination-modal.js +4 -6
- package/build/query/edit/enhanced-pagination-modal.js.map +1 -1
- package/build/query/edit/inspector-controls/enhanced-pagination-control.js +3 -3
- package/build/query/edit/inspector-controls/enhanced-pagination-control.js.map +1 -1
- package/build/query/edit/inspector-controls/index.js +2 -10
- package/build/query/edit/inspector-controls/index.js.map +1 -1
- package/build/query/edit/query-content.js +9 -3
- package/build/query/edit/query-content.js.map +1 -1
- package/build/query/edit/query-placeholder.js +4 -8
- package/build/query/edit/query-placeholder.js.map +1 -1
- package/build/site-logo/edit.js +4 -8
- package/build/site-logo/edit.js.map +1 -1
- package/build/site-title/index.js +4 -1
- package/build/site-title/index.js.map +1 -1
- package/build/social-link/edit.js +1 -1
- package/build/social-link/edit.js.map +1 -1
- package/build/template-part/edit/inner-blocks.js +10 -1
- package/build/template-part/edit/inner-blocks.js.map +1 -1
- package/build/template-part/edit/placeholder.js +4 -8
- package/build/template-part/edit/placeholder.js.map +1 -1
- package/build/video/edit.js +4 -8
- package/build/video/edit.js.map +1 -1
- package/build/video/tracks-editor.js +6 -12
- package/build/video/tracks-editor.js.map +1 -1
- package/build-module/archives/edit.js +1 -1
- package/build-module/archives/edit.js.map +1 -1
- package/build-module/block/edit.js +2 -3
- package/build-module/block/edit.js.map +1 -1
- package/build-module/buttons/index.js +1 -1
- package/build-module/comments/edit/comments-legacy.js +2 -4
- package/build-module/comments/edit/comments-legacy.js.map +1 -1
- package/build-module/cover/deprecated.js +1 -1
- package/build-module/cover/deprecated.js.map +1 -1
- package/build-module/cover/edit/index.js +4 -2
- package/build-module/cover/edit/index.js.map +1 -1
- package/build-module/embed/edit.js +6 -12
- package/build-module/embed/edit.js.map +1 -1
- package/build-module/embed/embed-placeholder.js +4 -8
- package/build-module/embed/embed-placeholder.js.map +1 -1
- package/build-module/embed/embed-preview.js +16 -4
- package/build-module/embed/embed-preview.js.map +1 -1
- package/build-module/file/transforms.js +18 -4
- package/build-module/file/transforms.js.map +1 -1
- package/build-module/freeform/modal.js +6 -12
- package/build-module/freeform/modal.js.map +1 -1
- package/build-module/image/edit.js +58 -18
- package/build-module/image/edit.js.map +1 -1
- package/build-module/image/image.js +23 -20
- package/build-module/image/image.js.map +1 -1
- package/build-module/image/transforms.js +0 -13
- package/build-module/image/transforms.js.map +1 -1
- package/build-module/image/use-max-width-observer.js +29 -0
- package/build-module/image/use-max-width-observer.js.map +1 -0
- package/build-module/image/utils.js +11 -1
- package/build-module/image/utils.js.map +1 -1
- package/build-module/latest-posts/edit.js +1 -1
- package/build-module/latest-posts/edit.js.map +1 -1
- package/build-module/missing/edit.js +2 -4
- package/build-module/missing/edit.js.map +1 -1
- package/build-module/navigation/edit/deleted-navigation-warning.js +15 -11
- package/build-module/navigation/edit/deleted-navigation-warning.js.map +1 -1
- package/build-module/navigation/edit/index.js +2 -4
- package/build-module/navigation/edit/index.js.map +1 -1
- package/build-module/navigation/edit/menu-inspector-controls.js +2 -1
- package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
- package/build-module/navigation/edit/navigation-menu-delete-control.js +2 -4
- package/build-module/navigation/edit/navigation-menu-delete-control.js.map +1 -1
- package/build-module/navigation/edit/placeholder/index.js +2 -4
- package/build-module/navigation/edit/placeholder/index.js.map +1 -1
- package/build-module/navigation/edit/responsive-wrapper.js +4 -8
- package/build-module/navigation/edit/responsive-wrapper.js.map +1 -1
- package/build-module/navigation-link/link-ui.js +2 -4
- package/build-module/navigation-link/link-ui.js.map +1 -1
- package/build-module/page-list/convert-to-links-modal.js +4 -8
- package/build-module/page-list/convert-to-links-modal.js.map +1 -1
- package/build-module/page-list/edit.js +2 -4
- package/build-module/page-list/edit.js.map +1 -1
- package/build-module/post-comments-form/form.js +2 -4
- package/build-module/post-comments-form/form.js.map +1 -1
- package/build-module/post-featured-image/edit.js +2 -4
- package/build-module/post-featured-image/edit.js.map +1 -1
- package/build-module/post-title/index.js +4 -1
- package/build-module/post-title/index.js.map +1 -1
- package/build-module/query/edit/enhanced-pagination-modal.js +4 -6
- package/build-module/query/edit/enhanced-pagination-modal.js.map +1 -1
- package/build-module/query/edit/inspector-controls/enhanced-pagination-control.js +3 -3
- package/build-module/query/edit/inspector-controls/enhanced-pagination-control.js.map +1 -1
- package/build-module/query/edit/inspector-controls/index.js +2 -10
- package/build-module/query/edit/inspector-controls/index.js.map +1 -1
- package/build-module/query/edit/query-content.js +10 -4
- package/build-module/query/edit/query-content.js.map +1 -1
- package/build-module/query/edit/query-placeholder.js +4 -8
- package/build-module/query/edit/query-placeholder.js.map +1 -1
- package/build-module/site-logo/edit.js +4 -8
- package/build-module/site-logo/edit.js.map +1 -1
- package/build-module/site-title/index.js +4 -1
- package/build-module/site-title/index.js.map +1 -1
- package/build-module/social-link/edit.js +1 -1
- package/build-module/social-link/edit.js.map +1 -1
- package/build-module/template-part/edit/inner-blocks.js +10 -1
- package/build-module/template-part/edit/inner-blocks.js.map +1 -1
- package/build-module/template-part/edit/placeholder.js +4 -8
- package/build-module/template-part/edit/placeholder.js.map +1 -1
- package/build-module/video/edit.js +4 -8
- package/build-module/video/edit.js.map +1 -1
- package/build-module/video/tracks-editor.js +6 -12
- package/build-module/video/tracks-editor.js.map +1 -1
- package/build-style/buttons/editor-rtl.css +2 -2
- package/build-style/buttons/editor.css +2 -2
- package/build-style/buttons/style-rtl.css +2 -2
- package/build-style/buttons/style.css +2 -2
- package/build-style/common-rtl.css +2 -2
- package/build-style/common.css +2 -2
- package/build-style/editor-rtl.css +11 -31
- package/build-style/editor.css +11 -31
- package/build-style/image/editor-rtl.css +6 -26
- package/build-style/image/editor.css +6 -26
- package/build-style/navigation/editor-rtl.css +1 -1
- package/build-style/navigation/editor.css +1 -1
- package/build-style/post-title/style-rtl.css +21 -0
- package/build-style/post-title/style.css +21 -0
- package/build-style/site-title/style-rtl.css +21 -0
- package/build-style/site-title/style.css +21 -0
- package/build-style/style-rtl.css +46 -4
- package/build-style/style.css +46 -4
- package/package.json +42 -35
- package/src/archives/edit.js +1 -1
- package/src/block/edit.js +3 -7
- package/src/buttons/block.json +1 -1
- package/src/buttons/editor.scss +2 -2
- package/src/buttons/style.scss +2 -2
- package/src/comments/edit/comments-legacy.js +1 -2
- package/src/cover/deprecated.js +3 -2
- package/src/cover/edit/index.js +5 -1
- package/src/embed/edit.js +0 -7
- package/src/embed/embed-placeholder.js +2 -4
- package/src/embed/embed-preview.js +22 -2
- package/src/file/index.php +1 -1
- package/src/file/transforms.js +26 -6
- package/src/freeform/modal.js +3 -6
- package/src/image/edit.js +91 -20
- package/src/image/editor.scss +7 -38
- package/src/image/image.js +31 -20
- package/src/image/index.php +1 -1
- package/src/image/transforms.js +0 -23
- package/src/image/use-max-width-observer.js +32 -0
- package/src/image/utils.js +13 -1
- package/src/latest-posts/edit.js +1 -1
- package/src/missing/edit.js +1 -2
- package/src/navigation/edit/deleted-navigation-warning.js +23 -20
- package/src/navigation/edit/index.js +1 -2
- package/src/navigation/edit/menu-inspector-controls.js +3 -1
- package/src/navigation/edit/navigation-menu-delete-control.js +1 -2
- package/src/navigation/edit/placeholder/index.js +1 -2
- package/src/navigation/edit/responsive-wrapper.js +2 -4
- package/src/navigation/editor.scss +5 -1
- package/src/navigation/index.php +1 -1
- package/src/navigation-link/link-ui.js +1 -2
- package/src/page-list/convert-to-links-modal.js +2 -4
- package/src/page-list/edit.js +1 -2
- package/src/post-comments-form/form.js +1 -2
- package/src/post-featured-image/edit.js +1 -2
- package/src/post-title/block.json +4 -1
- package/src/post-title/style.scss +24 -0
- package/src/query/edit/enhanced-pagination-modal.js +3 -4
- package/src/query/edit/inspector-controls/enhanced-pagination-control.js +3 -3
- package/src/query/edit/inspector-controls/index.js +2 -9
- package/src/query/edit/query-content.js +7 -0
- package/src/query/edit/query-placeholder.js +2 -4
- package/src/query/index.php +1 -1
- package/src/search/index.php +1 -1
- package/src/site-logo/edit.js +2 -4
- package/src/site-title/block.json +4 -1
- package/src/site-title/style.scss +24 -0
- package/src/social-link/edit.js +1 -1
- package/src/template-part/edit/inner-blocks.js +20 -1
- package/src/template-part/edit/placeholder.js +2 -4
- package/src/video/edit.js +2 -4
- package/src/video/tracks-editor.js +3 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BlockControls","store","ToolbarGroup","ToolbarButton","Modal","Button","Flex","FlexItem","useEffect","useState","RawHTML","__","useSelect","fullscreen","useViewportMatch","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ModalAuxiliaryActions","onClick","isModalFullScreen","isMobileViewport","
|
|
1
|
+
{"version":3,"names":["BlockControls","store","ToolbarGroup","ToolbarButton","Modal","Button","Flex","FlexItem","useEffect","useState","RawHTML","__","useSelect","fullscreen","useViewportMatch","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ModalAuxiliaryActions","onClick","isModalFullScreen","isMobileViewport","size","icon","isPressed","label","ClassicEdit","props","styles","select","getSettings","baseURL","suffix","settings","window","wpEditorL10n","tinymce","EditorManager","overrideDefaults","base_url","wp","oldEditor","initialize","id","setup","editor","on","doc","getDoc","forEach","css","styleEl","createElement","innerHTML","head","appendChild","remove","ModalEdit","clientId","attributes","content","setAttributes","onReplace","isOpen","setOpen","setIsModalFullScreen","onClose","children","title","onRequestClose","shouldCloseOnClickOutside","overlayClassName","isFullScreen","className","headerActions","defaultValue","justify","expanded","__next40pxDefaultSize","variant","getContent"],"sources":["@wordpress/block-library/src/freeform/modal.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { BlockControls, store } from '@wordpress/block-editor';\nimport {\n\tToolbarGroup,\n\tToolbarButton,\n\tModal,\n\tButton,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { useEffect, useState, RawHTML } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { fullscreen } from '@wordpress/icons';\nimport { useViewportMatch } from '@wordpress/compose';\n\nfunction ModalAuxiliaryActions( { onClick, isModalFullScreen } ) {\n\t// 'small' to match the rules in editor.scss.\n\tconst isMobileViewport = useViewportMatch( 'small', '<' );\n\tif ( isMobileViewport ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Button\n\t\t\tsize=\"small\"\n\t\t\tonClick={ onClick }\n\t\t\ticon={ fullscreen }\n\t\t\tisPressed={ isModalFullScreen }\n\t\t\tlabel={\n\t\t\t\tisModalFullScreen\n\t\t\t\t\t? __( 'Exit fullscreen' )\n\t\t\t\t\t: __( 'Enter fullscreen' )\n\t\t\t}\n\t\t/>\n\t);\n}\n\nfunction ClassicEdit( props ) {\n\tconst styles = useSelect(\n\t\t( select ) => select( store ).getSettings().styles\n\t);\n\tuseEffect( () => {\n\t\tconst { baseURL, suffix, settings } = window.wpEditorL10n.tinymce;\n\n\t\twindow.tinymce.EditorManager.overrideDefaults( {\n\t\t\tbase_url: baseURL,\n\t\t\tsuffix,\n\t\t} );\n\n\t\twindow.wp.oldEditor.initialize( props.id, {\n\t\t\ttinymce: {\n\t\t\t\t...settings,\n\t\t\t\tsetup( editor ) {\n\t\t\t\t\teditor.on( 'init', () => {\n\t\t\t\t\t\tconst doc = editor.getDoc();\n\t\t\t\t\t\tstyles.forEach( ( { css } ) => {\n\t\t\t\t\t\t\tconst styleEl = doc.createElement( 'style' );\n\t\t\t\t\t\t\tstyleEl.innerHTML = css;\n\t\t\t\t\t\t\tdoc.head.appendChild( styleEl );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t},\n\t\t} );\n\n\t\treturn () => {\n\t\t\twindow.wp.oldEditor.remove( props.id );\n\t\t};\n\t}, [] );\n\n\treturn <textarea { ...props } />;\n}\n\nexport default function ModalEdit( props ) {\n\tconst {\n\t\tclientId,\n\t\tattributes: { content },\n\t\tsetAttributes,\n\t\tonReplace,\n\t} = props;\n\tconst [ isOpen, setOpen ] = useState( false );\n\tconst [ isModalFullScreen, setIsModalFullScreen ] = useState( false );\n\tconst id = `editor-${ clientId }`;\n\n\tconst onClose = () => ( content ? setOpen( false ) : onReplace( [] ) );\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<ToolbarButton onClick={ () => setOpen( true ) }>\n\t\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t\t</ToolbarButton>\n\t\t\t\t</ToolbarGroup>\n\t\t\t</BlockControls>\n\t\t\t{ content && <RawHTML>{ content }</RawHTML> }\n\t\t\t{ ( isOpen || ! content ) && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ __( 'Classic Editor' ) }\n\t\t\t\t\tonRequestClose={ onClose }\n\t\t\t\t\tshouldCloseOnClickOutside={ false }\n\t\t\t\t\toverlayClassName=\"block-editor-freeform-modal\"\n\t\t\t\t\tisFullScreen={ isModalFullScreen }\n\t\t\t\t\tclassName=\"block-editor-freeform-modal__content\"\n\t\t\t\t\theaderActions={\n\t\t\t\t\t\t<ModalAuxiliaryActions\n\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\tsetIsModalFullScreen( ! isModalFullScreen )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tisModalFullScreen={ isModalFullScreen }\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<ClassicEdit id={ id } defaultValue={ content } />\n\t\t\t\t\t<Flex\n\t\t\t\t\t\tclassName=\"block-editor-freeform-modal__actions\"\n\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t>\n\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tcontent:\n\t\t\t\t\t\t\t\t\t\t\twindow.wp.oldEditor.getContent(\n\t\t\t\t\t\t\t\t\t\t\t\tid\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\tsetOpen( false );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t</Flex>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,11 +6,11 @@ import clsx from 'clsx';
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
|
-
import { isBlobURL } from '@wordpress/blob';
|
|
10
|
-
import { store as blocksStore } from '@wordpress/blocks';
|
|
9
|
+
import { isBlobURL, createBlobURL } from '@wordpress/blob';
|
|
10
|
+
import { store as blocksStore, createBlock } from '@wordpress/blocks';
|
|
11
11
|
import { Placeholder } from '@wordpress/components';
|
|
12
12
|
import { useDispatch, useSelect } from '@wordpress/data';
|
|
13
|
-
import { BlockIcon,
|
|
13
|
+
import { BlockIcon, useBlockProps, MediaPlaceholder, store as blockEditorStore, __experimentalUseBorderProps as useBorderProps, __experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles, useBlockEditingMode } from '@wordpress/block-editor';
|
|
14
14
|
import { useEffect, useRef, useState } from '@wordpress/element';
|
|
15
15
|
import { __, sprintf } from '@wordpress/i18n';
|
|
16
16
|
import { image as icon, plugins as pluginsIcon } from '@wordpress/icons';
|
|
@@ -23,6 +23,8 @@ import { useResizeObserver } from '@wordpress/compose';
|
|
|
23
23
|
import { unlock } from '../lock-unlock';
|
|
24
24
|
import { useUploadMediaFromBlobURL } from '../utils/hooks';
|
|
25
25
|
import Image from './image';
|
|
26
|
+
import { isValidFileType } from './utils';
|
|
27
|
+
import { useMaxWidthObserver } from './use-max-width-observer';
|
|
26
28
|
|
|
27
29
|
/**
|
|
28
30
|
* Module constants
|
|
@@ -86,9 +88,16 @@ export function ImageEdit({
|
|
|
86
88
|
metadata
|
|
87
89
|
} = attributes;
|
|
88
90
|
const [temporaryURL, setTemporaryURL] = useState(attributes.blob);
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
+
const containerRef = useRef();
|
|
92
|
+
// Only observe the max width from the parent container when the parent layout is not flex nor grid.
|
|
93
|
+
// This won't work for them because the container width changes with the image.
|
|
94
|
+
// TODO: Find a way to observe the container width for flex and grid layouts.
|
|
95
|
+
const isMaxWidthContainerWidth = !parentLayout || parentLayout.type !== 'flex' && parentLayout.type !== 'grid';
|
|
96
|
+
const [maxWidthObserver, maxContentWidth] = useMaxWidthObserver();
|
|
97
|
+
const [placeholderResizeListener, {
|
|
98
|
+
width: placeholderWidth
|
|
91
99
|
}] = useResizeObserver();
|
|
100
|
+
const isSmallContainer = placeholderWidth && placeholderWidth < 160;
|
|
92
101
|
const altRef = useRef();
|
|
93
102
|
useEffect(() => {
|
|
94
103
|
altRef.current = alt;
|
|
@@ -98,7 +107,8 @@ export function ImageEdit({
|
|
|
98
107
|
captionRef.current = caption;
|
|
99
108
|
}, [caption]);
|
|
100
109
|
const {
|
|
101
|
-
__unstableMarkNextChangeAsNotPersistent
|
|
110
|
+
__unstableMarkNextChangeAsNotPersistent,
|
|
111
|
+
replaceBlock
|
|
102
112
|
} = useDispatch(blockEditorStore);
|
|
103
113
|
useEffect(() => {
|
|
104
114
|
if (['wide', 'full'].includes(align)) {
|
|
@@ -112,7 +122,10 @@ export function ImageEdit({
|
|
|
112
122
|
}
|
|
113
123
|
}, [__unstableMarkNextChangeAsNotPersistent, align, setAttributes]);
|
|
114
124
|
const {
|
|
115
|
-
getSettings
|
|
125
|
+
getSettings,
|
|
126
|
+
getBlockRootClientId,
|
|
127
|
+
getBlockName,
|
|
128
|
+
canInsertBlockType
|
|
116
129
|
} = useSelect(blockEditorStore);
|
|
117
130
|
const blockEditingMode = useBlockEditingMode();
|
|
118
131
|
const {
|
|
@@ -129,7 +142,35 @@ export function ImageEdit({
|
|
|
129
142
|
blob: undefined
|
|
130
143
|
});
|
|
131
144
|
}
|
|
145
|
+
function onSelectImagesList(images) {
|
|
146
|
+
const win = containerRef.current?.ownerDocument.defaultView;
|
|
147
|
+
if (images.every(file => file instanceof win.File)) {
|
|
148
|
+
/** @type {File[]} */
|
|
149
|
+
const files = images;
|
|
150
|
+
const rootClientId = getBlockRootClientId(clientId);
|
|
151
|
+
if (files.some(file => !isValidFileType(file))) {
|
|
152
|
+
// Copied from the same notice in the gallery block.
|
|
153
|
+
createErrorNotice(__('If uploading to a gallery all files need to be image formats'), {
|
|
154
|
+
id: 'gallery-upload-invalid-file',
|
|
155
|
+
type: 'snackbar'
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
const imageBlocks = files.filter(file => isValidFileType(file)).map(file => createBlock('core/image', {
|
|
159
|
+
blob: createBlobURL(file)
|
|
160
|
+
}));
|
|
161
|
+
if (getBlockName(rootClientId) === 'core/gallery') {
|
|
162
|
+
replaceBlock(clientId, imageBlocks);
|
|
163
|
+
} else if (canInsertBlockType('core/gallery', rootClientId)) {
|
|
164
|
+
const galleryBlock = createBlock('core/gallery', {}, imageBlocks);
|
|
165
|
+
replaceBlock(clientId, galleryBlock);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
132
169
|
function onSelectImage(media) {
|
|
170
|
+
if (Array.isArray(media)) {
|
|
171
|
+
onSelectImagesList(media);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
133
174
|
if (!media || !media.url) {
|
|
134
175
|
setAttributes({
|
|
135
176
|
url: undefined,
|
|
@@ -260,6 +301,7 @@ export function ImageEdit({
|
|
|
260
301
|
'has-custom-border': !!borderProps.className || borderProps.style && Object.keys(borderProps.style).length > 0
|
|
261
302
|
});
|
|
262
303
|
const blockProps = useBlockProps({
|
|
304
|
+
ref: containerRef,
|
|
263
305
|
className: classes
|
|
264
306
|
});
|
|
265
307
|
|
|
@@ -283,14 +325,14 @@ export function ImageEdit({
|
|
|
283
325
|
};
|
|
284
326
|
}, [context, isSingleSelected, metadata?.bindings?.url]);
|
|
285
327
|
const placeholder = content => {
|
|
286
|
-
return /*#__PURE__*/
|
|
328
|
+
return /*#__PURE__*/_jsxs(Placeholder, {
|
|
287
329
|
className: clsx('block-editor-media-placeholder', {
|
|
288
330
|
[borderProps.className]: !!borderProps.className && !isSingleSelected
|
|
289
331
|
}),
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
label: __('Image'),
|
|
293
|
-
instructions: !lockUrlControls && __('Upload an image file, pick one from your
|
|
332
|
+
icon: !isSmallContainer && (lockUrlControls ? pluginsIcon : icon),
|
|
333
|
+
withIllustration: !isSingleSelected || isSmallContainer,
|
|
334
|
+
label: !isSmallContainer && __('Image'),
|
|
335
|
+
instructions: !lockUrlControls && !isSmallContainer && __('Upload or drag an image file here, or pick one from your library.'),
|
|
294
336
|
style: {
|
|
295
337
|
aspectRatio: !(width && height) && aspectRatio ? aspectRatio : undefined,
|
|
296
338
|
width: height && aspectRatio ? '100%' : width,
|
|
@@ -299,10 +341,7 @@ export function ImageEdit({
|
|
|
299
341
|
...borderProps.style,
|
|
300
342
|
...shadowProps.style
|
|
301
343
|
},
|
|
302
|
-
children: lockUrlControls
|
|
303
|
-
className: "block-bindings-media-placeholder-message",
|
|
304
|
-
children: lockUrlControlsMessage
|
|
305
|
-
}) : content
|
|
344
|
+
children: [lockUrlControls && !isSmallContainer && lockUrlControlsMessage, !lockUrlControls && !isSmallContainer && content, placeholderResizeListener]
|
|
306
345
|
});
|
|
307
346
|
};
|
|
308
347
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
@@ -322,7 +361,7 @@ export function ImageEdit({
|
|
|
322
361
|
clientId: clientId,
|
|
323
362
|
blockEditingMode: blockEditingMode,
|
|
324
363
|
parentLayoutType: parentLayout?.type,
|
|
325
|
-
|
|
364
|
+
maxContentWidth: maxContentWidth
|
|
326
365
|
}), /*#__PURE__*/_jsx(MediaPlaceholder, {
|
|
327
366
|
icon: /*#__PURE__*/_jsx(BlockIcon, {
|
|
328
367
|
icon: icon
|
|
@@ -333,6 +372,7 @@ export function ImageEdit({
|
|
|
333
372
|
placeholder: placeholder,
|
|
334
373
|
accept: "image/*",
|
|
335
374
|
allowedTypes: ALLOWED_MEDIA_TYPES,
|
|
375
|
+
handleUpload: files => files.length === 1,
|
|
336
376
|
value: {
|
|
337
377
|
id,
|
|
338
378
|
src
|
|
@@ -343,7 +383,7 @@ export function ImageEdit({
|
|
|
343
383
|
}),
|
|
344
384
|
// The listener cannot be placed as the first element as it will break the in-between inserter.
|
|
345
385
|
// See https://github.com/WordPress/gutenberg/blob/71134165868298fc15e22896d0c28b41b3755ff7/packages/block-editor/src/components/block-list/use-in-between-inserter.js#L120
|
|
346
|
-
|
|
386
|
+
isSingleSelected && isMaxWidthContainerWidth && maxWidthObserver]
|
|
347
387
|
});
|
|
348
388
|
}
|
|
349
389
|
export default ImageEdit;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clsx","isBlobURL","store","blocksStore","Placeholder","useDispatch","useSelect","BlockIcon","MediaPlaceholder","useBlockProps","blockEditorStore","__experimentalUseBorderProps","useBorderProps","__experimentalGetShadowClassesAndStyles","getShadowClassesAndStyles","useBlockEditingMode","useEffect","useRef","useState","__","sprintf","image","icon","plugins","pluginsIcon","noticesStore","useResizeObserver","unlock","useUploadMediaFromBlobURL","Image","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_CUSTOM","LINK_DESTINATION_MEDIA","LINK_DESTINATION_NONE","ALLOWED_MEDIA_TYPES","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","pickRelevantMediaFiles","size","imageProps","Object","fromEntries","entries","filter","key","includes","url","sizes","media_details","source_url","isExternalImage","id","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","blob","contentResizeListener","containerWidth","altRef","current","captionRef","__unstableMarkNextChangeAsNotPersistent","undefined","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","allowedTypes","onChange","onError","isExternal","mediaPreview","borderProps","shadowProps","classes","style","keys","length","blockProps","lockUrlControls","lockUrlControlsMessage","select","blockBindingsSource","getBlockBindingsSource","bindings","source","canUserEditValue","args","label","placeholder","content","withIllustration","instructions","objectFit","children","parentLayoutType","onSelect","accept","value","disableMediaButtons"],"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 } 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';\nimport { useResizeObserver } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\nimport { useUploadMediaFromBlobURL } from '../utils/hooks';\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 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\tconst [ temporaryURL, setTemporaryURL ] = useState( attributes.blob );\n\n\tconst [ contentResizeListener, { width: containerWidth } ] =\n\t\tuseResizeObserver();\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}, [ __unstableMarkNextChangeAsNotPersistent, align, setAttributes ] );\n\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\tblob: undefined,\n\t\t} );\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\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( { className: classes } );\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?.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\twithIllustration\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 className=\"block-bindings-media-placeholder-message\">\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<>\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\tcontainerWidth={ containerWidth }\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\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\tcontentResizeListener\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","isBlobURL","createBlobURL","store","blocksStore","createBlock","Placeholder","useDispatch","useSelect","BlockIcon","useBlockProps","MediaPlaceholder","blockEditorStore","__experimentalUseBorderProps","useBorderProps","__experimentalGetShadowClassesAndStyles","getShadowClassesAndStyles","useBlockEditingMode","useEffect","useRef","useState","__","sprintf","image","icon","plugins","pluginsIcon","noticesStore","useResizeObserver","unlock","useUploadMediaFromBlobURL","Image","isValidFileType","useMaxWidthObserver","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_CUSTOM","LINK_DESTINATION_MEDIA","LINK_DESTINATION_NONE","ALLOWED_MEDIA_TYPES","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","pickRelevantMediaFiles","size","imageProps","Object","fromEntries","entries","filter","key","includes","url","sizes","media_details","source_url","isExternalImage","id","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","blob","containerRef","isMaxWidthContainerWidth","type","maxWidthObserver","maxContentWidth","placeholderResizeListener","placeholderWidth","isSmallContainer","altRef","current","captionRef","__unstableMarkNextChangeAsNotPersistent","replaceBlock","undefined","getSettings","getBlockRootClientId","getBlockName","canInsertBlockType","blockEditingMode","createErrorNotice","onUploadError","message","src","onSelectImagesList","images","win","ownerDocument","defaultView","every","file","File","files","rootClientId","some","imageBlocks","map","galleryBlock","onSelectImage","media","Array","isArray","title","imageDefaultSize","newSize","mediaAttributes","omittedCaption","restMediaAttributes","additionalAttributes","linkDestination","window","wp","view","settings","defaultProps","link","href","onSelectURL","newURL","allowedTypes","onChange","onError","isExternal","mediaPreview","borderProps","shadowProps","classes","style","keys","length","blockProps","ref","lockUrlControls","lockUrlControlsMessage","select","blockBindingsSource","getBlockBindingsSource","bindings","source","canUserEditValue","args","label","placeholder","content","withIllustration","instructions","objectFit","children","parentLayoutType","onSelect","accept","handleUpload","value","disableMediaButtons"],"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 { store as blocksStore, createBlock } 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 { unlock } from '../lock-unlock';\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 = 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?.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":[]}
|
|
@@ -84,7 +84,7 @@ export default function Image({
|
|
|
84
84
|
clientId,
|
|
85
85
|
blockEditingMode,
|
|
86
86
|
parentLayoutType,
|
|
87
|
-
|
|
87
|
+
maxContentWidth
|
|
88
88
|
}) {
|
|
89
89
|
const {
|
|
90
90
|
url = '',
|
|
@@ -462,6 +462,20 @@ export default function Image({
|
|
|
462
462
|
const showUrlInput = isSingleSelected && !isEditingImage && !lockHrefControls && !lockUrlControls;
|
|
463
463
|
const showCoverControls = isSingleSelected && canInsertCover;
|
|
464
464
|
const showBlockControls = showUrlInput || allowCrop || showCoverControls;
|
|
465
|
+
const mediaReplaceFlow = isSingleSelected && !isEditingImage && !lockUrlControls && /*#__PURE__*/_jsx(BlockControls, {
|
|
466
|
+
group: "other",
|
|
467
|
+
children: /*#__PURE__*/_jsx(MediaReplaceFlow, {
|
|
468
|
+
mediaId: id,
|
|
469
|
+
mediaURL: url,
|
|
470
|
+
allowedTypes: ALLOWED_MEDIA_TYPES,
|
|
471
|
+
accept: "image/*",
|
|
472
|
+
onSelect: onSelectImage,
|
|
473
|
+
onSelectURL: onSelectURL,
|
|
474
|
+
onError: onUploadError,
|
|
475
|
+
name: !url ? __('Add image') : __('Replace'),
|
|
476
|
+
onReset: () => onSelectImage(undefined)
|
|
477
|
+
})
|
|
478
|
+
});
|
|
465
479
|
const controls = /*#__PURE__*/_jsxs(_Fragment, {
|
|
466
480
|
children: [showBlockControls && /*#__PURE__*/_jsxs(BlockControls, {
|
|
467
481
|
group: "block",
|
|
@@ -487,18 +501,6 @@ export default function Image({
|
|
|
487
501
|
label: __('Add text over image'),
|
|
488
502
|
onClick: switchToCover
|
|
489
503
|
})]
|
|
490
|
-
}), isSingleSelected && !isEditingImage && !lockUrlControls && /*#__PURE__*/_jsx(BlockControls, {
|
|
491
|
-
group: "other",
|
|
492
|
-
children: /*#__PURE__*/_jsx(MediaReplaceFlow, {
|
|
493
|
-
mediaId: id,
|
|
494
|
-
mediaURL: url,
|
|
495
|
-
allowedTypes: ALLOWED_MEDIA_TYPES,
|
|
496
|
-
accept: "image/*",
|
|
497
|
-
onSelect: onSelectImage,
|
|
498
|
-
onSelectURL: onSelectURL,
|
|
499
|
-
onError: onUploadError,
|
|
500
|
-
onReset: () => onSelectImage(undefined)
|
|
501
|
-
})
|
|
502
504
|
}), isSingleSelected && externalBlob && /*#__PURE__*/_jsx(BlockControls, {
|
|
503
505
|
children: /*#__PURE__*/_jsx(ToolbarGroup, {
|
|
504
506
|
children: /*#__PURE__*/_jsx(ToolbarButton, {
|
|
@@ -736,7 +738,7 @@ export default function Image({
|
|
|
736
738
|
// @todo It would be good to revisit this once a content-width variable
|
|
737
739
|
// becomes available.
|
|
738
740
|
const maxWidthBuffer = maxWidth * 2.5;
|
|
739
|
-
const
|
|
741
|
+
const maxResizeWidth = maxContentWidth || maxWidthBuffer;
|
|
740
742
|
let showRightHandle = false;
|
|
741
743
|
let showLeftHandle = false;
|
|
742
744
|
|
|
@@ -777,9 +779,9 @@ export default function Image({
|
|
|
777
779
|
},
|
|
778
780
|
showHandle: isSingleSelected,
|
|
779
781
|
minWidth: minWidth,
|
|
780
|
-
maxWidth:
|
|
782
|
+
maxWidth: maxResizeWidth,
|
|
781
783
|
minHeight: minHeight,
|
|
782
|
-
maxHeight:
|
|
784
|
+
maxHeight: maxResizeWidth / ratio,
|
|
783
785
|
lockAspectRatio: ratio,
|
|
784
786
|
enable: {
|
|
785
787
|
top: false,
|
|
@@ -792,7 +794,7 @@ export default function Image({
|
|
|
792
794
|
onResizeStop();
|
|
793
795
|
|
|
794
796
|
// Clear hardcoded width if the resized width is close to the max-content width.
|
|
795
|
-
if (
|
|
797
|
+
if (maxContentWidth &&
|
|
796
798
|
// Only do this if the image is bigger than the container to prevent it from being squished.
|
|
797
799
|
// TODO: Remove this check if the image support setting 100% width.
|
|
798
800
|
naturalWidth >= maxContentWidth && Math.abs(elt.offsetWidth - maxContentWidth) < 10) {
|
|
@@ -821,11 +823,12 @@ export default function Image({
|
|
|
821
823
|
});
|
|
822
824
|
}
|
|
823
825
|
if (!url && !temporaryURL) {
|
|
824
|
-
|
|
825
|
-
|
|
826
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
827
|
+
children: [mediaReplaceFlow, metadata?.bindings ? controls : sizeControls]
|
|
828
|
+
});
|
|
826
829
|
}
|
|
827
830
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
828
|
-
children: [controls, img, /*#__PURE__*/_jsx(Caption, {
|
|
831
|
+
children: [mediaReplaceFlow, controls, img, /*#__PURE__*/_jsx(Caption, {
|
|
829
832
|
attributes: attributes,
|
|
830
833
|
setAttributes: setAttributes,
|
|
831
834
|
isSelected: isSingleSelected,
|