@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.
Files changed (238) hide show
  1. package/build/archives/edit.js +1 -1
  2. package/build/archives/edit.js.map +1 -1
  3. package/build/block/edit.js +2 -3
  4. package/build/block/edit.js.map +1 -1
  5. package/build/buttons/index.js +1 -1
  6. package/build/comments/edit/comments-legacy.js +2 -4
  7. package/build/comments/edit/comments-legacy.js.map +1 -1
  8. package/build/cover/deprecated.js +1 -1
  9. package/build/cover/deprecated.js.map +1 -1
  10. package/build/cover/edit/index.js +4 -2
  11. package/build/cover/edit/index.js.map +1 -1
  12. package/build/embed/edit.js +5 -11
  13. package/build/embed/edit.js.map +1 -1
  14. package/build/embed/embed-placeholder.js +4 -8
  15. package/build/embed/embed-placeholder.js.map +1 -1
  16. package/build/embed/embed-preview.js +16 -4
  17. package/build/embed/embed-preview.js.map +1 -1
  18. package/build/file/transforms.js +18 -4
  19. package/build/file/transforms.js.map +1 -1
  20. package/build/freeform/modal.js +6 -12
  21. package/build/freeform/modal.js.map +1 -1
  22. package/build/image/edit.js +55 -15
  23. package/build/image/edit.js.map +1 -1
  24. package/build/image/image.js +23 -20
  25. package/build/image/image.js.map +1 -1
  26. package/build/image/transforms.js +0 -13
  27. package/build/image/transforms.js.map +1 -1
  28. package/build/image/use-max-width-observer.js +35 -0
  29. package/build/image/use-max-width-observer.js.map +1 -0
  30. package/build/image/utils.js +11 -0
  31. package/build/image/utils.js.map +1 -1
  32. package/build/latest-posts/edit.js +1 -1
  33. package/build/latest-posts/edit.js.map +1 -1
  34. package/build/missing/edit.js +2 -4
  35. package/build/missing/edit.js.map +1 -1
  36. package/build/navigation/edit/deleted-navigation-warning.js +14 -10
  37. package/build/navigation/edit/deleted-navigation-warning.js.map +1 -1
  38. package/build/navigation/edit/index.js +2 -4
  39. package/build/navigation/edit/index.js.map +1 -1
  40. package/build/navigation/edit/menu-inspector-controls.js +2 -1
  41. package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
  42. package/build/navigation/edit/navigation-menu-delete-control.js +2 -4
  43. package/build/navigation/edit/navigation-menu-delete-control.js.map +1 -1
  44. package/build/navigation/edit/placeholder/index.js +2 -4
  45. package/build/navigation/edit/placeholder/index.js.map +1 -1
  46. package/build/navigation/edit/responsive-wrapper.js +4 -8
  47. package/build/navigation/edit/responsive-wrapper.js.map +1 -1
  48. package/build/navigation-link/link-ui.js +2 -4
  49. package/build/navigation-link/link-ui.js.map +1 -1
  50. package/build/page-list/convert-to-links-modal.js +4 -8
  51. package/build/page-list/convert-to-links-modal.js.map +1 -1
  52. package/build/page-list/edit.js +2 -4
  53. package/build/page-list/edit.js.map +1 -1
  54. package/build/post-comments-form/form.js +2 -4
  55. package/build/post-comments-form/form.js.map +1 -1
  56. package/build/post-featured-image/edit.js +2 -4
  57. package/build/post-featured-image/edit.js.map +1 -1
  58. package/build/post-title/index.js +4 -1
  59. package/build/post-title/index.js.map +1 -1
  60. package/build/query/edit/enhanced-pagination-modal.js +4 -6
  61. package/build/query/edit/enhanced-pagination-modal.js.map +1 -1
  62. package/build/query/edit/inspector-controls/enhanced-pagination-control.js +3 -3
  63. package/build/query/edit/inspector-controls/enhanced-pagination-control.js.map +1 -1
  64. package/build/query/edit/inspector-controls/index.js +2 -10
  65. package/build/query/edit/inspector-controls/index.js.map +1 -1
  66. package/build/query/edit/query-content.js +9 -3
  67. package/build/query/edit/query-content.js.map +1 -1
  68. package/build/query/edit/query-placeholder.js +4 -8
  69. package/build/query/edit/query-placeholder.js.map +1 -1
  70. package/build/site-logo/edit.js +4 -8
  71. package/build/site-logo/edit.js.map +1 -1
  72. package/build/site-title/index.js +4 -1
  73. package/build/site-title/index.js.map +1 -1
  74. package/build/social-link/edit.js +1 -1
  75. package/build/social-link/edit.js.map +1 -1
  76. package/build/template-part/edit/inner-blocks.js +10 -1
  77. package/build/template-part/edit/inner-blocks.js.map +1 -1
  78. package/build/template-part/edit/placeholder.js +4 -8
  79. package/build/template-part/edit/placeholder.js.map +1 -1
  80. package/build/video/edit.js +4 -8
  81. package/build/video/edit.js.map +1 -1
  82. package/build/video/tracks-editor.js +6 -12
  83. package/build/video/tracks-editor.js.map +1 -1
  84. package/build-module/archives/edit.js +1 -1
  85. package/build-module/archives/edit.js.map +1 -1
  86. package/build-module/block/edit.js +2 -3
  87. package/build-module/block/edit.js.map +1 -1
  88. package/build-module/buttons/index.js +1 -1
  89. package/build-module/comments/edit/comments-legacy.js +2 -4
  90. package/build-module/comments/edit/comments-legacy.js.map +1 -1
  91. package/build-module/cover/deprecated.js +1 -1
  92. package/build-module/cover/deprecated.js.map +1 -1
  93. package/build-module/cover/edit/index.js +4 -2
  94. package/build-module/cover/edit/index.js.map +1 -1
  95. package/build-module/embed/edit.js +6 -12
  96. package/build-module/embed/edit.js.map +1 -1
  97. package/build-module/embed/embed-placeholder.js +4 -8
  98. package/build-module/embed/embed-placeholder.js.map +1 -1
  99. package/build-module/embed/embed-preview.js +16 -4
  100. package/build-module/embed/embed-preview.js.map +1 -1
  101. package/build-module/file/transforms.js +18 -4
  102. package/build-module/file/transforms.js.map +1 -1
  103. package/build-module/freeform/modal.js +6 -12
  104. package/build-module/freeform/modal.js.map +1 -1
  105. package/build-module/image/edit.js +58 -18
  106. package/build-module/image/edit.js.map +1 -1
  107. package/build-module/image/image.js +23 -20
  108. package/build-module/image/image.js.map +1 -1
  109. package/build-module/image/transforms.js +0 -13
  110. package/build-module/image/transforms.js.map +1 -1
  111. package/build-module/image/use-max-width-observer.js +29 -0
  112. package/build-module/image/use-max-width-observer.js.map +1 -0
  113. package/build-module/image/utils.js +11 -1
  114. package/build-module/image/utils.js.map +1 -1
  115. package/build-module/latest-posts/edit.js +1 -1
  116. package/build-module/latest-posts/edit.js.map +1 -1
  117. package/build-module/missing/edit.js +2 -4
  118. package/build-module/missing/edit.js.map +1 -1
  119. package/build-module/navigation/edit/deleted-navigation-warning.js +15 -11
  120. package/build-module/navigation/edit/deleted-navigation-warning.js.map +1 -1
  121. package/build-module/navigation/edit/index.js +2 -4
  122. package/build-module/navigation/edit/index.js.map +1 -1
  123. package/build-module/navigation/edit/menu-inspector-controls.js +2 -1
  124. package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
  125. package/build-module/navigation/edit/navigation-menu-delete-control.js +2 -4
  126. package/build-module/navigation/edit/navigation-menu-delete-control.js.map +1 -1
  127. package/build-module/navigation/edit/placeholder/index.js +2 -4
  128. package/build-module/navigation/edit/placeholder/index.js.map +1 -1
  129. package/build-module/navigation/edit/responsive-wrapper.js +4 -8
  130. package/build-module/navigation/edit/responsive-wrapper.js.map +1 -1
  131. package/build-module/navigation-link/link-ui.js +2 -4
  132. package/build-module/navigation-link/link-ui.js.map +1 -1
  133. package/build-module/page-list/convert-to-links-modal.js +4 -8
  134. package/build-module/page-list/convert-to-links-modal.js.map +1 -1
  135. package/build-module/page-list/edit.js +2 -4
  136. package/build-module/page-list/edit.js.map +1 -1
  137. package/build-module/post-comments-form/form.js +2 -4
  138. package/build-module/post-comments-form/form.js.map +1 -1
  139. package/build-module/post-featured-image/edit.js +2 -4
  140. package/build-module/post-featured-image/edit.js.map +1 -1
  141. package/build-module/post-title/index.js +4 -1
  142. package/build-module/post-title/index.js.map +1 -1
  143. package/build-module/query/edit/enhanced-pagination-modal.js +4 -6
  144. package/build-module/query/edit/enhanced-pagination-modal.js.map +1 -1
  145. package/build-module/query/edit/inspector-controls/enhanced-pagination-control.js +3 -3
  146. package/build-module/query/edit/inspector-controls/enhanced-pagination-control.js.map +1 -1
  147. package/build-module/query/edit/inspector-controls/index.js +2 -10
  148. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  149. package/build-module/query/edit/query-content.js +10 -4
  150. package/build-module/query/edit/query-content.js.map +1 -1
  151. package/build-module/query/edit/query-placeholder.js +4 -8
  152. package/build-module/query/edit/query-placeholder.js.map +1 -1
  153. package/build-module/site-logo/edit.js +4 -8
  154. package/build-module/site-logo/edit.js.map +1 -1
  155. package/build-module/site-title/index.js +4 -1
  156. package/build-module/site-title/index.js.map +1 -1
  157. package/build-module/social-link/edit.js +1 -1
  158. package/build-module/social-link/edit.js.map +1 -1
  159. package/build-module/template-part/edit/inner-blocks.js +10 -1
  160. package/build-module/template-part/edit/inner-blocks.js.map +1 -1
  161. package/build-module/template-part/edit/placeholder.js +4 -8
  162. package/build-module/template-part/edit/placeholder.js.map +1 -1
  163. package/build-module/video/edit.js +4 -8
  164. package/build-module/video/edit.js.map +1 -1
  165. package/build-module/video/tracks-editor.js +6 -12
  166. package/build-module/video/tracks-editor.js.map +1 -1
  167. package/build-style/buttons/editor-rtl.css +2 -2
  168. package/build-style/buttons/editor.css +2 -2
  169. package/build-style/buttons/style-rtl.css +2 -2
  170. package/build-style/buttons/style.css +2 -2
  171. package/build-style/common-rtl.css +2 -2
  172. package/build-style/common.css +2 -2
  173. package/build-style/editor-rtl.css +11 -31
  174. package/build-style/editor.css +11 -31
  175. package/build-style/image/editor-rtl.css +6 -26
  176. package/build-style/image/editor.css +6 -26
  177. package/build-style/navigation/editor-rtl.css +1 -1
  178. package/build-style/navigation/editor.css +1 -1
  179. package/build-style/post-title/style-rtl.css +21 -0
  180. package/build-style/post-title/style.css +21 -0
  181. package/build-style/site-title/style-rtl.css +21 -0
  182. package/build-style/site-title/style.css +21 -0
  183. package/build-style/style-rtl.css +46 -4
  184. package/build-style/style.css +46 -4
  185. package/package.json +42 -35
  186. package/src/archives/edit.js +1 -1
  187. package/src/block/edit.js +3 -7
  188. package/src/buttons/block.json +1 -1
  189. package/src/buttons/editor.scss +2 -2
  190. package/src/buttons/style.scss +2 -2
  191. package/src/comments/edit/comments-legacy.js +1 -2
  192. package/src/cover/deprecated.js +3 -2
  193. package/src/cover/edit/index.js +5 -1
  194. package/src/embed/edit.js +0 -7
  195. package/src/embed/embed-placeholder.js +2 -4
  196. package/src/embed/embed-preview.js +22 -2
  197. package/src/file/index.php +1 -1
  198. package/src/file/transforms.js +26 -6
  199. package/src/freeform/modal.js +3 -6
  200. package/src/image/edit.js +91 -20
  201. package/src/image/editor.scss +7 -38
  202. package/src/image/image.js +31 -20
  203. package/src/image/index.php +1 -1
  204. package/src/image/transforms.js +0 -23
  205. package/src/image/use-max-width-observer.js +32 -0
  206. package/src/image/utils.js +13 -1
  207. package/src/latest-posts/edit.js +1 -1
  208. package/src/missing/edit.js +1 -2
  209. package/src/navigation/edit/deleted-navigation-warning.js +23 -20
  210. package/src/navigation/edit/index.js +1 -2
  211. package/src/navigation/edit/menu-inspector-controls.js +3 -1
  212. package/src/navigation/edit/navigation-menu-delete-control.js +1 -2
  213. package/src/navigation/edit/placeholder/index.js +1 -2
  214. package/src/navigation/edit/responsive-wrapper.js +2 -4
  215. package/src/navigation/editor.scss +5 -1
  216. package/src/navigation/index.php +1 -1
  217. package/src/navigation-link/link-ui.js +1 -2
  218. package/src/page-list/convert-to-links-modal.js +2 -4
  219. package/src/page-list/edit.js +1 -2
  220. package/src/post-comments-form/form.js +1 -2
  221. package/src/post-featured-image/edit.js +1 -2
  222. package/src/post-title/block.json +4 -1
  223. package/src/post-title/style.scss +24 -0
  224. package/src/query/edit/enhanced-pagination-modal.js +3 -4
  225. package/src/query/edit/inspector-controls/enhanced-pagination-control.js +3 -3
  226. package/src/query/edit/inspector-controls/index.js +2 -9
  227. package/src/query/edit/query-content.js +7 -0
  228. package/src/query/edit/query-placeholder.js +2 -4
  229. package/src/query/index.php +1 -1
  230. package/src/search/index.php +1 -1
  231. package/src/site-logo/edit.js +2 -4
  232. package/src/site-title/block.json +4 -1
  233. package/src/site-title/style.scss +24 -0
  234. package/src/social-link/edit.js +1 -1
  235. package/src/template-part/edit/inner-blocks.js +20 -1
  236. package/src/template-part/edit/placeholder.js +2 -4
  237. package/src/video/edit.js +2 -4
  238. 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","__next40pxDefaultSize","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","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\t// TODO: Switch to `true` (40px size) if possible\n\t\t\t__next40pxDefaultSize={ false }\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// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t\t\t\t\t__next40pxDefaultSize={ false }\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// TODO: Switch to `true` (40px size) if possible\n\t\t\t\t\t\t\t\t__next40pxDefaultSize={ false }\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":[]}
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, MediaPlaceholder, useBlockProps, store as blockEditorStore, __experimentalUseBorderProps as useBorderProps, __experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles, useBlockEditingMode } from '@wordpress/block-editor';
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 [contentResizeListener, {
90
- width: containerWidth
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__*/_jsx(Placeholder, {
328
+ return /*#__PURE__*/_jsxs(Placeholder, {
287
329
  className: clsx('block-editor-media-placeholder', {
288
330
  [borderProps.className]: !!borderProps.className && !isSingleSelected
289
331
  }),
290
- withIllustration: true,
291
- icon: lockUrlControls ? pluginsIcon : icon,
292
- label: __('Image'),
293
- instructions: !lockUrlControls && __('Upload an image file, pick one from your media library, or add one with a URL.'),
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 ? /*#__PURE__*/_jsx("span", {
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
- containerWidth: containerWidth
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
- contentResizeListener]
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
- containerWidth
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 maxContentWidth = containerWidth || maxWidthBuffer;
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: maxContentWidth,
782
+ maxWidth: maxResizeWidth,
781
783
  minHeight: minHeight,
782
- maxHeight: maxContentWidth / ratio,
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
- // Add all controls if the image attributes are connected.
825
- return metadata?.bindings ? controls : sizeControls;
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,