@wordpress/block-library 8.23.0 → 8.24.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 (136) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/block/edit.js +8 -11
  3. package/build/block/edit.js.map +1 -1
  4. package/build/block/edit.native.js +3 -4
  5. package/build/block/edit.native.js.map +1 -1
  6. package/build/button/edit.js +4 -7
  7. package/build/button/edit.js.map +1 -1
  8. package/build/column/edit.js +1 -1
  9. package/build/column/edit.js.map +1 -1
  10. package/build/column/edit.native.js +1 -1
  11. package/build/column/edit.native.js.map +1 -1
  12. package/build/cover/edit/index.js +2 -1
  13. package/build/cover/edit/index.js.map +1 -1
  14. package/build/file/edit.js +8 -9
  15. package/build/file/edit.js.map +1 -1
  16. package/build/file/view.js +4 -6
  17. package/build/file/view.js.map +1 -1
  18. package/build/group/edit.js +3 -7
  19. package/build/group/edit.js.map +1 -1
  20. package/build/image/edit.js +17 -18
  21. package/build/image/edit.js.map +1 -1
  22. package/build/image/edit.native.js +22 -15
  23. package/build/image/edit.native.js.map +1 -1
  24. package/build/image/image.js +35 -27
  25. package/build/image/image.js.map +1 -1
  26. package/build/image/index.js +2 -3
  27. package/build/image/index.js.map +1 -1
  28. package/build/image/view.js +233 -268
  29. package/build/image/view.js.map +1 -1
  30. package/build/navigation/view.js +153 -176
  31. package/build/navigation/view.js.map +1 -1
  32. package/build/navigation-link/index.js +2 -1
  33. package/build/navigation-link/index.js.map +1 -1
  34. package/build/pattern/edit.js +1 -3
  35. package/build/pattern/edit.js.map +1 -1
  36. package/build/post-template/edit.js +1 -1
  37. package/build/post-template/edit.js.map +1 -1
  38. package/build/query/view.js +52 -60
  39. package/build/query/view.js.map +1 -1
  40. package/build/search/view.js +66 -74
  41. package/build/search/view.js.map +1 -1
  42. package/build/utils/remove-anchor-tag.js +17 -0
  43. package/build/utils/remove-anchor-tag.js.map +1 -0
  44. package/build-module/block/edit.js +8 -11
  45. package/build-module/block/edit.js.map +1 -1
  46. package/build-module/block/edit.native.js +3 -4
  47. package/build-module/block/edit.native.js.map +1 -1
  48. package/build-module/button/edit.js +4 -7
  49. package/build-module/button/edit.js.map +1 -1
  50. package/build-module/column/edit.js +1 -1
  51. package/build-module/column/edit.js.map +1 -1
  52. package/build-module/column/edit.native.js +1 -1
  53. package/build-module/column/edit.native.js.map +1 -1
  54. package/build-module/cover/edit/index.js +2 -1
  55. package/build-module/cover/edit/index.js.map +1 -1
  56. package/build-module/file/edit.js +8 -9
  57. package/build-module/file/edit.js.map +1 -1
  58. package/build-module/file/view.js +5 -7
  59. package/build-module/file/view.js.map +1 -1
  60. package/build-module/group/edit.js +3 -7
  61. package/build-module/group/edit.js.map +1 -1
  62. package/build-module/image/edit.js +18 -19
  63. package/build-module/image/edit.js.map +1 -1
  64. package/build-module/image/edit.native.js +23 -16
  65. package/build-module/image/edit.native.js.map +1 -1
  66. package/build-module/image/image.js +36 -28
  67. package/build-module/image/image.js.map +1 -1
  68. package/build-module/image/index.js +2 -3
  69. package/build-module/image/index.js.map +1 -1
  70. package/build-module/image/view.js +234 -269
  71. package/build-module/image/view.js.map +1 -1
  72. package/build-module/navigation/view.js +154 -177
  73. package/build-module/navigation/view.js.map +1 -1
  74. package/build-module/navigation-link/index.js +2 -1
  75. package/build-module/navigation-link/index.js.map +1 -1
  76. package/build-module/pattern/edit.js +1 -3
  77. package/build-module/pattern/edit.js.map +1 -1
  78. package/build-module/post-template/edit.js +1 -1
  79. package/build-module/post-template/edit.js.map +1 -1
  80. package/build-module/query/view.js +53 -61
  81. package/build-module/query/view.js.map +1 -1
  82. package/build-module/search/view.js +67 -75
  83. package/build-module/search/view.js.map +1 -1
  84. package/build-module/utils/remove-anchor-tag.js +11 -0
  85. package/build-module/utils/remove-anchor-tag.js.map +1 -0
  86. package/build-style/cover/style-rtl.css +14 -14
  87. package/build-style/cover/style.css +14 -14
  88. package/build-style/editor-rtl.css +6 -9
  89. package/build-style/editor.css +6 -9
  90. package/build-style/gallery/style-rtl.css +28 -0
  91. package/build-style/gallery/style.css +28 -0
  92. package/build-style/image/editor-rtl.css +0 -3
  93. package/build-style/image/editor.css +0 -3
  94. package/build-style/style-rtl.css +42 -14
  95. package/build-style/style.css +42 -14
  96. package/package.json +32 -32
  97. package/src/block/edit.js +18 -19
  98. package/src/block/edit.native.js +5 -13
  99. package/src/button/edit.js +6 -6
  100. package/src/buttons/test/__snapshots__/edit.native.js.snap +0 -6
  101. package/src/buttons/test/edit.native.js +0 -27
  102. package/src/column/edit.js +1 -1
  103. package/src/column/edit.native.js +1 -1
  104. package/src/cover/edit/index.js +1 -0
  105. package/src/cover/style.scss +1 -1
  106. package/src/cover/test/edit.js +1 -1
  107. package/src/editor.scss +6 -6
  108. package/src/file/edit.js +11 -10
  109. package/src/file/index.php +30 -11
  110. package/src/file/view.js +5 -7
  111. package/src/gallery/style.scss +1 -0
  112. package/src/group/edit.js +3 -11
  113. package/src/heading/test/__snapshots__/index.native.js.snap +6 -0
  114. package/src/heading/test/index.native.js +40 -0
  115. package/src/image/block.json +2 -3
  116. package/src/image/edit.js +16 -21
  117. package/src/image/edit.native.js +17 -18
  118. package/src/image/editor.scss +0 -7
  119. package/src/image/image.js +48 -51
  120. package/src/image/index.php +54 -45
  121. package/src/image/view.js +278 -334
  122. package/src/navigation/index.php +19 -10
  123. package/src/navigation/view.js +159 -192
  124. package/src/navigation-link/block.json +2 -1
  125. package/src/paragraph/test/edit.native.js +37 -1
  126. package/src/pattern/edit.js +5 -3
  127. package/src/post-template/edit.js +1 -1
  128. package/src/query/index.php +36 -22
  129. package/src/query/view.js +58 -65
  130. package/src/query-pagination-next/index.php +3 -3
  131. package/src/query-pagination-numbers/index.php +1 -1
  132. package/src/query-pagination-previous/index.php +3 -3
  133. package/src/search/index.php +40 -40
  134. package/src/search/view.js +58 -63
  135. package/src/utils/remove-anchor-tag.js +10 -0
  136. package/tsconfig.json +1 -0
@@ -23,6 +23,7 @@ import { store as noticesStore } from '@wordpress/notices';
23
23
  */
24
24
  import FileBlockInspector from './inspector';
25
25
  import { browserSupportsPdfs } from './utils';
26
+ import removeAnchorTag from '../utils/remove-anchor-tag';
26
27
  export const MIN_PREVIEW_HEIGHT = 200;
27
28
  export const MAX_PREVIEW_HEIGHT = 2000;
28
29
  function ClipboardToolbarButton({
@@ -88,7 +89,9 @@ function FileEdit({
88
89
  revokeBlobURL(href);
89
90
  }
90
91
  if (downloadButtonText === undefined) {
91
- changeDownloadButtonText(_x('Download', 'button label'));
92
+ setAttributes({
93
+ downloadButtonText: _x('Download', 'button label')
94
+ });
92
95
  }
93
96
  }, []);
94
97
  useEffect(() => {
@@ -137,12 +140,6 @@ function FileEdit({
137
140
  showDownloadButton: newValue
138
141
  });
139
142
  }
140
- function changeDownloadButtonText(newValue) {
141
- // Remove anchor tags from button text content.
142
- setAttributes({
143
- downloadButtonText: newValue.replace(/<\/?a[^>]*>/g, '')
144
- });
145
- }
146
143
  function changeDisplayPreview(newValue) {
147
144
  setAttributes({
148
145
  displayPreview: newValue
@@ -250,7 +247,7 @@ function FileEdit({
250
247
  placeholder: __('Write file name…'),
251
248
  withoutInteractiveFormatting: true,
252
249
  onChange: text => setAttributes({
253
- fileName: text
250
+ fileName: removeAnchorTag(text)
254
251
  }),
255
252
  href: textLinkHref
256
253
  }), showDownloadButton && createElement("div", {
@@ -263,7 +260,9 @@ function FileEdit({
263
260
  value: downloadButtonText,
264
261
  withoutInteractiveFormatting: true,
265
262
  placeholder: __('Add text…'),
266
- onChange: text => changeDownloadButtonText(text)
263
+ onChange: text => setAttributes({
264
+ downloadButtonText: removeAnchorTag(text)
265
+ })
267
266
  })))));
268
267
  }
269
268
  export default FileEdit;
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","getBlobByURL","isBlobURL","revokeBlobURL","__unstableGetAnimateClassName","getAnimateClassName","ResizableBox","ToolbarButton","useSelect","useDispatch","BlockControls","BlockIcon","MediaPlaceholder","MediaReplaceFlow","RichText","useBlockProps","store","blockEditorStore","__experimentalGetElementClassName","useEffect","useCopyToClipboard","__","_x","file","icon","coreStore","noticesStore","FileBlockInspector","browserSupportsPdfs","MIN_PREVIEW_HEIGHT","MAX_PREVIEW_HEIGHT","ClipboardToolbarButton","text","disabled","createNotice","ref","isDismissible","type","createElement","className","FileEdit","attributes","isSelected","setAttributes","clientId","id","fileId","fileName","href","textLinkHref","textLinkTarget","showDownloadButton","downloadButtonText","displayPreview","previewHeight","media","mediaUpload","select","undefined","getMedia","getSettings","createErrorNotice","toggleSelection","__unstableMarkNextChangeAsNotPersistent","filesList","onFileChange","newMedia","onSelectFile","onError","onUploadError","changeDownloadButtonText","url","isPdf","endsWith","title","message","changeLinkDestinationOption","newHref","changeOpenInNewWindow","newValue","changeShowDownloadButton","replace","changeDisplayPreview","handleOnResizeStop","event","direction","elt","delta","newHeight","parseInt","height","changePreviewHeight","Math","max","attachmentPage","link","blockProps","displayPreviewInEditor","labels","instructions","onSelect","accept","Fragment","hrefs","openInNewWindow","group","mediaId","mediaURL","size","minHeight","maxHeight","minWidth","grid","enable","top","right","bottom","left","topRight","bottomRight","bottomLeft","topLeft","onResizeStart","onResizeStop","showHandle","data","tagName","value","placeholder","withoutInteractiveFormatting","onChange"],"sources":["@wordpress/block-library/src/file/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport {\n\t__unstableGetAnimateClassName as getAnimateClassName,\n\tResizableBox,\n\tToolbarButton,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tRichText,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\nimport { useEffect } from '@wordpress/element';\nimport { useCopyToClipboard } from '@wordpress/compose';\nimport { __, _x } from '@wordpress/i18n';\nimport { file as icon } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport FileBlockInspector from './inspector';\nimport { browserSupportsPdfs } from './utils';\n\nexport const MIN_PREVIEW_HEIGHT = 200;\nexport const MAX_PREVIEW_HEIGHT = 2000;\n\nfunction ClipboardToolbarButton( { text, disabled } ) {\n\tconst { createNotice } = useDispatch( noticesStore );\n\tconst ref = useCopyToClipboard( text, () => {\n\t\tcreateNotice( 'info', __( 'Copied URL to clipboard.' ), {\n\t\t\tisDismissible: true,\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t} );\n\n\treturn (\n\t\t<ToolbarButton\n\t\t\tclassName=\"components-clipboard-toolbar-button\"\n\t\t\tref={ ref }\n\t\t\tdisabled={ disabled }\n\t\t>\n\t\t\t{ __( 'Copy URL' ) }\n\t\t</ToolbarButton>\n\t);\n}\n\nfunction FileEdit( { attributes, isSelected, setAttributes, clientId } ) {\n\tconst {\n\t\tid,\n\t\tfileId,\n\t\tfileName,\n\t\thref,\n\t\ttextLinkHref,\n\t\ttextLinkTarget,\n\t\tshowDownloadButton,\n\t\tdownloadButtonText,\n\t\tdisplayPreview,\n\t\tpreviewHeight,\n\t} = attributes;\n\tconst { media, mediaUpload } = useSelect(\n\t\t( select ) => ( {\n\t\t\tmedia:\n\t\t\t\tid === undefined\n\t\t\t\t\t? undefined\n\t\t\t\t\t: select( coreStore ).getMedia( id ),\n\t\t\tmediaUpload: select( blockEditorStore ).getSettings().mediaUpload,\n\t\t} ),\n\t\t[ id ]\n\t);\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst { toggleSelection, __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\t// Upload a file drag-and-dropped into the editor.\n\t\tif ( isBlobURL( href ) ) {\n\t\t\tconst file = getBlobByURL( href );\n\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList: [ file ],\n\t\t\t\tonFileChange: ( [ newMedia ] ) => onSelectFile( newMedia ),\n\t\t\t\tonError: onUploadError,\n\t\t\t} );\n\n\t\t\trevokeBlobURL( href );\n\t\t}\n\n\t\tif ( downloadButtonText === undefined ) {\n\t\t\tchangeDownloadButtonText( _x( 'Download', 'button label' ) );\n\t\t}\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tif ( ! fileId && href ) {\n\t\t\t// Add a unique fileId to each file block.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( { fileId: `wp-block-file--media-${ clientId }` } );\n\t\t}\n\t}, [ href, fileId, clientId ] );\n\n\tfunction onSelectFile( newMedia ) {\n\t\tif ( newMedia && newMedia.url ) {\n\t\t\tconst isPdf = newMedia.url.endsWith( '.pdf' );\n\t\t\tsetAttributes( {\n\t\t\t\thref: newMedia.url,\n\t\t\t\tfileName: newMedia.title,\n\t\t\t\ttextLinkHref: newMedia.url,\n\t\t\t\tid: newMedia.id,\n\t\t\t\tdisplayPreview: isPdf ? true : undefined,\n\t\t\t\tpreviewHeight: isPdf ? 600 : undefined,\n\t\t\t} );\n\t\t}\n\t}\n\n\tfunction onUploadError( message ) {\n\t\tsetAttributes( { href: undefined } );\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\tfunction changeLinkDestinationOption( newHref ) {\n\t\t// Choose Media File or Attachment Page (when file is in Media Library).\n\t\tsetAttributes( { textLinkHref: newHref } );\n\t}\n\n\tfunction changeOpenInNewWindow( newValue ) {\n\t\tsetAttributes( {\n\t\t\ttextLinkTarget: newValue ? '_blank' : false,\n\t\t} );\n\t}\n\n\tfunction changeShowDownloadButton( newValue ) {\n\t\tsetAttributes( { showDownloadButton: newValue } );\n\t}\n\n\tfunction changeDownloadButtonText( newValue ) {\n\t\t// Remove anchor tags from button text content.\n\t\tsetAttributes( {\n\t\t\tdownloadButtonText: newValue.replace( /<\\/?a[^>]*>/g, '' ),\n\t\t} );\n\t}\n\n\tfunction changeDisplayPreview( newValue ) {\n\t\tsetAttributes( { displayPreview: newValue } );\n\t}\n\n\tfunction handleOnResizeStop( event, direction, elt, delta ) {\n\t\ttoggleSelection( true );\n\n\t\tconst newHeight = parseInt( previewHeight + delta.height, 10 );\n\t\tsetAttributes( { previewHeight: newHeight } );\n\t}\n\n\tfunction changePreviewHeight( newValue ) {\n\t\tconst newHeight = Math.max(\n\t\t\tparseInt( newValue, 10 ),\n\t\t\tMIN_PREVIEW_HEIGHT\n\t\t);\n\t\tsetAttributes( { previewHeight: newHeight } );\n\t}\n\n\tconst attachmentPage = media && media.link;\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames(\n\t\t\tisBlobURL( href ) && getAnimateClassName( { type: 'loading' } ),\n\t\t\t{\n\t\t\t\t'is-transient': isBlobURL( href ),\n\t\t\t}\n\t\t),\n\t} );\n\n\tconst displayPreviewInEditor = browserSupportsPdfs() && displayPreview;\n\n\tif ( ! href ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tlabels={ {\n\t\t\t\t\t\ttitle: __( 'File' ),\n\t\t\t\t\t\tinstructions: __(\n\t\t\t\t\t\t\t'Upload a file or pick one from your media library.'\n\t\t\t\t\t\t),\n\t\t\t\t\t} }\n\t\t\t\t\tonSelect={ onSelectFile }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\taccept=\"*\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<FileBlockInspector\n\t\t\t\threfs={ { href, textLinkHref, attachmentPage } }\n\t\t\t\t{ ...{\n\t\t\t\t\topenInNewWindow: !! textLinkTarget,\n\t\t\t\t\tshowDownloadButton,\n\t\t\t\t\tchangeLinkDestinationOption,\n\t\t\t\t\tchangeOpenInNewWindow,\n\t\t\t\t\tchangeShowDownloadButton,\n\t\t\t\t\tdisplayPreview,\n\t\t\t\t\tchangeDisplayPreview,\n\t\t\t\t\tpreviewHeight,\n\t\t\t\t\tchangePreviewHeight,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ href }\n\t\t\t\t\taccept=\"*\"\n\t\t\t\t\tonSelect={ onSelectFile }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t/>\n\t\t\t\t<ClipboardToolbarButton\n\t\t\t\t\ttext={ href }\n\t\t\t\t\tdisabled={ isBlobURL( href ) }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ displayPreviewInEditor && (\n\t\t\t\t\t<ResizableBox\n\t\t\t\t\t\tsize={ { height: previewHeight } }\n\t\t\t\t\t\tminHeight={ MIN_PREVIEW_HEIGHT }\n\t\t\t\t\t\tmaxHeight={ MAX_PREVIEW_HEIGHT }\n\t\t\t\t\t\tminWidth=\"100%\"\n\t\t\t\t\t\tgrid={ [ 10, 10 ] }\n\t\t\t\t\t\tenable={ {\n\t\t\t\t\t\t\ttop: false,\n\t\t\t\t\t\t\tright: false,\n\t\t\t\t\t\t\tbottom: true,\n\t\t\t\t\t\t\tleft: false,\n\t\t\t\t\t\t\ttopRight: false,\n\t\t\t\t\t\t\tbottomRight: false,\n\t\t\t\t\t\t\tbottomLeft: false,\n\t\t\t\t\t\t\ttopLeft: false,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonResizeStart={ () => toggleSelection( false ) }\n\t\t\t\t\t\tonResizeStop={ handleOnResizeStop }\n\t\t\t\t\t\tshowHandle={ isSelected }\n\t\t\t\t\t>\n\t\t\t\t\t\t<object\n\t\t\t\t\t\t\tclassName=\"wp-block-file__preview\"\n\t\t\t\t\t\t\tdata={ href }\n\t\t\t\t\t\t\ttype=\"application/pdf\"\n\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t'Embed of the selected PDF file.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ ! isSelected && (\n\t\t\t\t\t\t\t<div className=\"wp-block-file__preview-overlay\" />\n\t\t\t\t\t\t) }\n\t\t\t\t\t</ResizableBox>\n\t\t\t\t) }\n\t\t\t\t<div className={ 'wp-block-file__content-wrapper' }>\n\t\t\t\t\t<RichText\n\t\t\t\t\t\ttagName=\"a\"\n\t\t\t\t\t\tvalue={ fileName }\n\t\t\t\t\t\tplaceholder={ __( 'Write file name…' ) }\n\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\tonChange={ ( text ) =>\n\t\t\t\t\t\t\tsetAttributes( { fileName: text } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\thref={ textLinkHref }\n\t\t\t\t\t/>\n\t\t\t\t\t{ showDownloadButton && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t'wp-block-file__button-richtext-wrapper'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ /* Using RichText here instead of PlainText so that it can be styled like a button. */ }\n\t\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\t\ttagName=\"div\" // Must be block-level or else cursor disappears.\n\t\t\t\t\t\t\t\taria-label={ __( 'Download button text' ) }\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t'wp-block-file__button',\n\t\t\t\t\t\t\t\t\t__experimentalGetElementClassName(\n\t\t\t\t\t\t\t\t\t\t'button'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tvalue={ downloadButtonText }\n\t\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\t\tplaceholder={ __( 'Add text…' ) }\n\t\t\t\t\t\t\t\tonChange={ ( text ) =>\n\t\t\t\t\t\t\t\t\tchangeDownloadButtonText( text )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default FileEdit;\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","getBlobByURL","isBlobURL","revokeBlobURL","__unstableGetAnimateClassName","getAnimateClassName","ResizableBox","ToolbarButton","useSelect","useDispatch","BlockControls","BlockIcon","MediaPlaceholder","MediaReplaceFlow","RichText","useBlockProps","store","blockEditorStore","__experimentalGetElementClassName","useEffect","useCopyToClipboard","__","_x","file","icon","coreStore","noticesStore","FileBlockInspector","browserSupportsPdfs","removeAnchorTag","MIN_PREVIEW_HEIGHT","MAX_PREVIEW_HEIGHT","ClipboardToolbarButton","text","disabled","createNotice","ref","isDismissible","type","createElement","className","FileEdit","attributes","isSelected","setAttributes","clientId","id","fileId","fileName","href","textLinkHref","textLinkTarget","showDownloadButton","downloadButtonText","displayPreview","previewHeight","media","mediaUpload","select","undefined","getMedia","getSettings","createErrorNotice","toggleSelection","__unstableMarkNextChangeAsNotPersistent","filesList","onFileChange","newMedia","onSelectFile","onError","onUploadError","url","isPdf","endsWith","title","message","changeLinkDestinationOption","newHref","changeOpenInNewWindow","newValue","changeShowDownloadButton","changeDisplayPreview","handleOnResizeStop","event","direction","elt","delta","newHeight","parseInt","height","changePreviewHeight","Math","max","attachmentPage","link","blockProps","displayPreviewInEditor","labels","instructions","onSelect","accept","Fragment","hrefs","openInNewWindow","group","mediaId","mediaURL","size","minHeight","maxHeight","minWidth","grid","enable","top","right","bottom","left","topRight","bottomRight","bottomLeft","topLeft","onResizeStart","onResizeStop","showHandle","data","tagName","value","placeholder","withoutInteractiveFormatting","onChange"],"sources":["@wordpress/block-library/src/file/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport {\n\t__unstableGetAnimateClassName as getAnimateClassName,\n\tResizableBox,\n\tToolbarButton,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tRichText,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\nimport { useEffect } from '@wordpress/element';\nimport { useCopyToClipboard } from '@wordpress/compose';\nimport { __, _x } from '@wordpress/i18n';\nimport { file as icon } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport FileBlockInspector from './inspector';\nimport { browserSupportsPdfs } from './utils';\nimport removeAnchorTag from '../utils/remove-anchor-tag';\n\nexport const MIN_PREVIEW_HEIGHT = 200;\nexport const MAX_PREVIEW_HEIGHT = 2000;\n\nfunction ClipboardToolbarButton( { text, disabled } ) {\n\tconst { createNotice } = useDispatch( noticesStore );\n\tconst ref = useCopyToClipboard( text, () => {\n\t\tcreateNotice( 'info', __( 'Copied URL to clipboard.' ), {\n\t\t\tisDismissible: true,\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t} );\n\n\treturn (\n\t\t<ToolbarButton\n\t\t\tclassName=\"components-clipboard-toolbar-button\"\n\t\t\tref={ ref }\n\t\t\tdisabled={ disabled }\n\t\t>\n\t\t\t{ __( 'Copy URL' ) }\n\t\t</ToolbarButton>\n\t);\n}\n\nfunction FileEdit( { attributes, isSelected, setAttributes, clientId } ) {\n\tconst {\n\t\tid,\n\t\tfileId,\n\t\tfileName,\n\t\thref,\n\t\ttextLinkHref,\n\t\ttextLinkTarget,\n\t\tshowDownloadButton,\n\t\tdownloadButtonText,\n\t\tdisplayPreview,\n\t\tpreviewHeight,\n\t} = attributes;\n\tconst { media, mediaUpload } = useSelect(\n\t\t( select ) => ( {\n\t\t\tmedia:\n\t\t\t\tid === undefined\n\t\t\t\t\t? undefined\n\t\t\t\t\t: select( coreStore ).getMedia( id ),\n\t\t\tmediaUpload: select( blockEditorStore ).getSettings().mediaUpload,\n\t\t} ),\n\t\t[ id ]\n\t);\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst { toggleSelection, __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\t// Upload a file drag-and-dropped into the editor.\n\t\tif ( isBlobURL( href ) ) {\n\t\t\tconst file = getBlobByURL( href );\n\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList: [ file ],\n\t\t\t\tonFileChange: ( [ newMedia ] ) => onSelectFile( newMedia ),\n\t\t\t\tonError: onUploadError,\n\t\t\t} );\n\n\t\t\trevokeBlobURL( href );\n\t\t}\n\n\t\tif ( downloadButtonText === undefined ) {\n\t\t\tsetAttributes( {\n\t\t\t\tdownloadButtonText: _x( 'Download', 'button label' ),\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tif ( ! fileId && href ) {\n\t\t\t// Add a unique fileId to each file block.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( { fileId: `wp-block-file--media-${ clientId }` } );\n\t\t}\n\t}, [ href, fileId, clientId ] );\n\n\tfunction onSelectFile( newMedia ) {\n\t\tif ( newMedia && newMedia.url ) {\n\t\t\tconst isPdf = newMedia.url.endsWith( '.pdf' );\n\t\t\tsetAttributes( {\n\t\t\t\thref: newMedia.url,\n\t\t\t\tfileName: newMedia.title,\n\t\t\t\ttextLinkHref: newMedia.url,\n\t\t\t\tid: newMedia.id,\n\t\t\t\tdisplayPreview: isPdf ? true : undefined,\n\t\t\t\tpreviewHeight: isPdf ? 600 : undefined,\n\t\t\t} );\n\t\t}\n\t}\n\n\tfunction onUploadError( message ) {\n\t\tsetAttributes( { href: undefined } );\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\tfunction changeLinkDestinationOption( newHref ) {\n\t\t// Choose Media File or Attachment Page (when file is in Media Library).\n\t\tsetAttributes( { textLinkHref: newHref } );\n\t}\n\n\tfunction changeOpenInNewWindow( newValue ) {\n\t\tsetAttributes( {\n\t\t\ttextLinkTarget: newValue ? '_blank' : false,\n\t\t} );\n\t}\n\n\tfunction changeShowDownloadButton( newValue ) {\n\t\tsetAttributes( { showDownloadButton: newValue } );\n\t}\n\n\tfunction changeDisplayPreview( newValue ) {\n\t\tsetAttributes( { displayPreview: newValue } );\n\t}\n\n\tfunction handleOnResizeStop( event, direction, elt, delta ) {\n\t\ttoggleSelection( true );\n\n\t\tconst newHeight = parseInt( previewHeight + delta.height, 10 );\n\t\tsetAttributes( { previewHeight: newHeight } );\n\t}\n\n\tfunction changePreviewHeight( newValue ) {\n\t\tconst newHeight = Math.max(\n\t\t\tparseInt( newValue, 10 ),\n\t\t\tMIN_PREVIEW_HEIGHT\n\t\t);\n\t\tsetAttributes( { previewHeight: newHeight } );\n\t}\n\n\tconst attachmentPage = media && media.link;\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames(\n\t\t\tisBlobURL( href ) && getAnimateClassName( { type: 'loading' } ),\n\t\t\t{\n\t\t\t\t'is-transient': isBlobURL( href ),\n\t\t\t}\n\t\t),\n\t} );\n\n\tconst displayPreviewInEditor = browserSupportsPdfs() && displayPreview;\n\n\tif ( ! href ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tlabels={ {\n\t\t\t\t\t\ttitle: __( 'File' ),\n\t\t\t\t\t\tinstructions: __(\n\t\t\t\t\t\t\t'Upload a file or pick one from your media library.'\n\t\t\t\t\t\t),\n\t\t\t\t\t} }\n\t\t\t\t\tonSelect={ onSelectFile }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\taccept=\"*\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<FileBlockInspector\n\t\t\t\threfs={ { href, textLinkHref, attachmentPage } }\n\t\t\t\t{ ...{\n\t\t\t\t\topenInNewWindow: !! textLinkTarget,\n\t\t\t\t\tshowDownloadButton,\n\t\t\t\t\tchangeLinkDestinationOption,\n\t\t\t\t\tchangeOpenInNewWindow,\n\t\t\t\t\tchangeShowDownloadButton,\n\t\t\t\t\tdisplayPreview,\n\t\t\t\t\tchangeDisplayPreview,\n\t\t\t\t\tpreviewHeight,\n\t\t\t\t\tchangePreviewHeight,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ href }\n\t\t\t\t\taccept=\"*\"\n\t\t\t\t\tonSelect={ onSelectFile }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t/>\n\t\t\t\t<ClipboardToolbarButton\n\t\t\t\t\ttext={ href }\n\t\t\t\t\tdisabled={ isBlobURL( href ) }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ displayPreviewInEditor && (\n\t\t\t\t\t<ResizableBox\n\t\t\t\t\t\tsize={ { height: previewHeight } }\n\t\t\t\t\t\tminHeight={ MIN_PREVIEW_HEIGHT }\n\t\t\t\t\t\tmaxHeight={ MAX_PREVIEW_HEIGHT }\n\t\t\t\t\t\tminWidth=\"100%\"\n\t\t\t\t\t\tgrid={ [ 10, 10 ] }\n\t\t\t\t\t\tenable={ {\n\t\t\t\t\t\t\ttop: false,\n\t\t\t\t\t\t\tright: false,\n\t\t\t\t\t\t\tbottom: true,\n\t\t\t\t\t\t\tleft: false,\n\t\t\t\t\t\t\ttopRight: false,\n\t\t\t\t\t\t\tbottomRight: false,\n\t\t\t\t\t\t\tbottomLeft: false,\n\t\t\t\t\t\t\ttopLeft: false,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonResizeStart={ () => toggleSelection( false ) }\n\t\t\t\t\t\tonResizeStop={ handleOnResizeStop }\n\t\t\t\t\t\tshowHandle={ isSelected }\n\t\t\t\t\t>\n\t\t\t\t\t\t<object\n\t\t\t\t\t\t\tclassName=\"wp-block-file__preview\"\n\t\t\t\t\t\t\tdata={ href }\n\t\t\t\t\t\t\ttype=\"application/pdf\"\n\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t'Embed of the selected PDF file.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ ! isSelected && (\n\t\t\t\t\t\t\t<div className=\"wp-block-file__preview-overlay\" />\n\t\t\t\t\t\t) }\n\t\t\t\t\t</ResizableBox>\n\t\t\t\t) }\n\t\t\t\t<div className={ 'wp-block-file__content-wrapper' }>\n\t\t\t\t\t<RichText\n\t\t\t\t\t\ttagName=\"a\"\n\t\t\t\t\t\tvalue={ fileName }\n\t\t\t\t\t\tplaceholder={ __( 'Write file name…' ) }\n\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\tonChange={ ( text ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tfileName: removeAnchorTag( text ),\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\thref={ textLinkHref }\n\t\t\t\t\t/>\n\t\t\t\t\t{ showDownloadButton && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t'wp-block-file__button-richtext-wrapper'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ /* Using RichText here instead of PlainText so that it can be styled like a button. */ }\n\t\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\t\ttagName=\"div\" // Must be block-level or else cursor disappears.\n\t\t\t\t\t\t\t\taria-label={ __( 'Download button text' ) }\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t'wp-block-file__button',\n\t\t\t\t\t\t\t\t\t__experimentalGetElementClassName(\n\t\t\t\t\t\t\t\t\t\t'button'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tvalue={ downloadButtonText }\n\t\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\t\tplaceholder={ __( 'Add text…' ) }\n\t\t\t\t\t\t\t\tonChange={ ( text ) =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tdownloadButtonText:\n\t\t\t\t\t\t\t\t\t\t\tremoveAnchorTag( text ),\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default FileEdit;\n"],"mappings":"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"}
@@ -5,13 +5,11 @@ import { store } from '@wordpress/interactivity';
5
5
  /**
6
6
  * Internal dependencies
7
7
  */
8
- import { browserSupportsPdfs as hasPdfPreview } from './utils';
9
- store({
10
- selectors: {
11
- core: {
12
- file: {
13
- hasPdfPreview
14
- }
8
+ import { browserSupportsPdfs } from './utils';
9
+ store('core/file', {
10
+ state: {
11
+ get hasPdfPreview() {
12
+ return browserSupportsPdfs();
15
13
  }
16
14
  }
17
15
  });
@@ -1 +1 @@
1
- {"version":3,"names":["store","browserSupportsPdfs","hasPdfPreview","selectors","core","file"],"sources":["@wordpress/block-library/src/file/view.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store } from '@wordpress/interactivity';\n/**\n * Internal dependencies\n */\nimport { browserSupportsPdfs as hasPdfPreview } from './utils';\n\nstore( {\n\tselectors: {\n\t\tcore: {\n\t\t\tfile: {\n\t\t\t\thasPdfPreview,\n\t\t\t},\n\t\t},\n\t},\n} );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAK,QAAQ,0BAA0B;AAChD;AACA;AACA;AACA,SAASC,mBAAmB,IAAIC,aAAa,QAAQ,SAAS;AAE9DF,KAAK,CAAE;EACNG,SAAS,EAAE;IACVC,IAAI,EAAE;MACLC,IAAI,EAAE;QACLH;MACD;IACD;EACD;AACD,CAAE,CAAC"}
1
+ {"version":3,"names":["store","browserSupportsPdfs","state","hasPdfPreview"],"sources":["@wordpress/block-library/src/file/view.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store } from '@wordpress/interactivity';\n/**\n * Internal dependencies\n */\nimport { browserSupportsPdfs } from './utils';\n\nstore( 'core/file', {\n\tstate: {\n\t\tget hasPdfPreview() {\n\t\t\treturn browserSupportsPdfs();\n\t\t},\n\t},\n} );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAK,QAAQ,0BAA0B;AAChD;AACA;AACA;AACA,SAASC,mBAAmB,QAAQ,SAAS;AAE7CD,KAAK,CAAE,WAAW,EAAE;EACnBE,KAAK,EAAE;IACN,IAAIC,aAAaA,CAAA,EAAG;MACnB,OAAOF,mBAAmB,CAAC,CAAC;IAC7B;EACD;AACD,CAAE,CAAC"}
@@ -71,8 +71,7 @@ function GroupEdit({
71
71
  attributes,
72
72
  name,
73
73
  setAttributes,
74
- clientId,
75
- __unstableLayoutClassNames: layoutClassNames
74
+ clientId
76
75
  }) {
77
76
  const {
78
77
  hasInnerBlocks,
@@ -102,9 +101,7 @@ function GroupEdit({
102
101
  const layoutSupportEnabled = themeSupportsLayout || type === 'flex' || type === 'grid';
103
102
 
104
103
  // Hooks.
105
- const blockProps = useBlockProps({
106
- className: !layoutSupportEnabled ? layoutClassNames : null
107
- });
104
+ const blockProps = useBlockProps();
108
105
  const [showPlaceholder, setShowPlaceholder] = useShouldShowPlaceHolder({
109
106
  attributes,
110
107
  usedLayoutType: type,
@@ -129,8 +126,7 @@ function GroupEdit({
129
126
  }, {
130
127
  templateLock,
131
128
  allowedBlocks,
132
- renderAppender,
133
- __unstableDisableLayoutClassNames: !layoutSupportEnabled
129
+ renderAppender
134
130
  });
135
131
  const {
136
132
  selectBlock
@@ -1 +1 @@
1
- {"version":3,"names":["useDispatch","useSelect","InnerBlocks","useBlockProps","InspectorControls","useInnerBlocksProps","store","blockEditorStore","SelectControl","__","View","GroupPlaceHolder","useShouldShowPlaceHolder","GroupEditControls","tagName","onSelectTagName","htmlElementMessages","header","main","section","article","aside","footer","createElement","group","__nextHasNoMarginBottom","__next40pxDefaultSize","label","options","value","onChange","help","GroupEdit","attributes","name","setAttributes","clientId","__unstableLayoutClassNames","layoutClassNames","hasInnerBlocks","themeSupportsLayout","select","getBlock","getSettings","block","innerBlocks","length","supportsLayout","TagName","templateLock","allowedBlocks","layout","type","layoutSupportEnabled","blockProps","className","showPlaceholder","setShowPlaceholder","usedLayoutType","renderAppender","ButtonBlockAppender","innerBlocksProps","__unstableDisableLayoutClassNames","selectBlock","selectVariation","nextVariation","Fragment","children","onSelect"],"sources":["@wordpress/block-library/src/group/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tInnerBlocks,\n\tuseBlockProps,\n\tInspectorControls,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { SelectControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { View } from '@wordpress/primitives';\n\n/**\n * Internal dependencies\n */\nimport GroupPlaceHolder, { useShouldShowPlaceHolder } from './placeholder';\n\n/**\n * Render inspector controls for the Group block.\n *\n * @param {Object} props Component props.\n * @param {string} props.tagName The HTML tag name.\n * @param {Function} props.onSelectTagName onChange function for the SelectControl.\n *\n * @return {JSX.Element} The control group.\n */\nfunction GroupEditControls( { tagName, onSelectTagName } ) {\n\tconst htmlElementMessages = {\n\t\theader: __(\n\t\t\t'The <header> element should represent introductory content, typically a group of introductory or navigational aids.'\n\t\t),\n\t\tmain: __(\n\t\t\t'The <main> element should be used for the primary content of your document only. '\n\t\t),\n\t\tsection: __(\n\t\t\t\"The <section> element should represent a standalone portion of the document that can't be better represented by another element.\"\n\t\t),\n\t\tarticle: __(\n\t\t\t'The <article> element should represent a self-contained, syndicatable portion of the document.'\n\t\t),\n\t\taside: __(\n\t\t\t\"The <aside> element should represent a portion of a document whose content is only indirectly related to the document's main content.\"\n\t\t),\n\t\tfooter: __(\n\t\t\t'The <footer> element should represent a footer for its nearest sectioning element (e.g.: <section>, <article>, <main> etc.).'\n\t\t),\n\t};\n\treturn (\n\t\t<InspectorControls group=\"advanced\">\n\t\t\t<SelectControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tlabel={ __( 'HTML element' ) }\n\t\t\t\toptions={ [\n\t\t\t\t\t{ label: __( 'Default (<div>)' ), value: 'div' },\n\t\t\t\t\t{ label: '<header>', value: 'header' },\n\t\t\t\t\t{ label: '<main>', value: 'main' },\n\t\t\t\t\t{ label: '<section>', value: 'section' },\n\t\t\t\t\t{ label: '<article>', value: 'article' },\n\t\t\t\t\t{ label: '<aside>', value: 'aside' },\n\t\t\t\t\t{ label: '<footer>', value: 'footer' },\n\t\t\t\t] }\n\t\t\t\tvalue={ tagName }\n\t\t\t\tonChange={ onSelectTagName }\n\t\t\t\thelp={ htmlElementMessages[ tagName ] }\n\t\t\t/>\n\t\t</InspectorControls>\n\t);\n}\n\nfunction GroupEdit( {\n\tattributes,\n\tname,\n\tsetAttributes,\n\tclientId,\n\t__unstableLayoutClassNames: layoutClassNames,\n} ) {\n\tconst { hasInnerBlocks, themeSupportsLayout } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, getSettings } = select( blockEditorStore );\n\t\t\tconst block = getBlock( clientId );\n\t\t\treturn {\n\t\t\t\thasInnerBlocks: !! ( block && block.innerBlocks.length ),\n\t\t\t\tthemeSupportsLayout: getSettings()?.supportsLayout,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst {\n\t\ttagName: TagName = 'div',\n\t\ttemplateLock,\n\t\tallowedBlocks,\n\t\tlayout = {},\n\t} = attributes;\n\n\t// Layout settings.\n\tconst { type = 'default' } = layout;\n\tconst layoutSupportEnabled =\n\t\tthemeSupportsLayout || type === 'flex' || type === 'grid';\n\n\t// Hooks.\n\tconst blockProps = useBlockProps( {\n\t\tclassName: ! layoutSupportEnabled ? layoutClassNames : null,\n\t} );\n\tconst [ showPlaceholder, setShowPlaceholder ] = useShouldShowPlaceHolder( {\n\t\tattributes,\n\t\tusedLayoutType: type,\n\t\thasInnerBlocks,\n\t} );\n\n\t// Default to the regular appender being rendered.\n\tlet renderAppender;\n\tif ( showPlaceholder ) {\n\t\t// In the placeholder state, ensure the appender is not rendered.\n\t\t// This is needed because `...innerBlocksProps` is used in the placeholder\n\t\t// state so that blocks can dragged onto the placeholder area\n\t\t// from both the list view and in the editor canvas.\n\t\trenderAppender = false;\n\t} else if ( ! hasInnerBlocks ) {\n\t\t// When there is no placeholder, but the block is also empty,\n\t\t// use the larger button appender.\n\t\trenderAppender = InnerBlocks.ButtonBlockAppender;\n\t}\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\tlayoutSupportEnabled\n\t\t\t? blockProps\n\t\t\t: { className: 'wp-block-group__inner-container' },\n\t\t{\n\t\t\ttemplateLock,\n\t\t\tallowedBlocks,\n\t\t\trenderAppender,\n\t\t\t__unstableDisableLayoutClassNames: ! layoutSupportEnabled,\n\t\t}\n\t);\n\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\n\tconst selectVariation = ( nextVariation ) => {\n\t\tsetAttributes( nextVariation.attributes );\n\t\tselectBlock( clientId, -1 );\n\t\tsetShowPlaceholder( false );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<GroupEditControls\n\t\t\t\ttagName={ TagName }\n\t\t\t\tonSelectTagName={ ( value ) =>\n\t\t\t\t\tsetAttributes( { tagName: value } )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ showPlaceholder && (\n\t\t\t\t<View>\n\t\t\t\t\t{ innerBlocksProps.children }\n\t\t\t\t\t<GroupPlaceHolder\n\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\tonSelect={ selectVariation }\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t) }\n\t\t\t{ layoutSupportEnabled && ! showPlaceholder && (\n\t\t\t\t<TagName { ...innerBlocksProps } />\n\t\t\t) }\n\t\t\t{ /* Ideally this is not needed but it's there for backward compatibility reason\n\t\t\t\tto keep this div for themes that might rely on its presence */ }\n\t\t\t{ ! layoutSupportEnabled && ! showPlaceholder && (\n\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t\t</TagName>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default GroupEdit;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SACCC,WAAW,EACXC,aAAa,EACbC,iBAAiB,EACjBC,mBAAmB,EACnBC,KAAK,IAAIC,gBAAgB,QACnB,yBAAyB;AAChC,SAASC,aAAa,QAAQ,uBAAuB;AACrD,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,IAAI,QAAQ,uBAAuB;;AAE5C;AACA;AACA;AACA,OAAOC,gBAAgB,IAAIC,wBAAwB,QAAQ,eAAe;;AAE1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CAAE;EAAEC,OAAO;EAAEC;AAAgB,CAAC,EAAG;EAC1D,MAAMC,mBAAmB,GAAG;IAC3BC,MAAM,EAAER,EAAE,CACT,qHACD,CAAC;IACDS,IAAI,EAAET,EAAE,CACP,mFACD,CAAC;IACDU,OAAO,EAAEV,EAAE,CACV,kIACD,CAAC;IACDW,OAAO,EAAEX,EAAE,CACV,gGACD,CAAC;IACDY,KAAK,EAAEZ,EAAE,CACR,uIACD,CAAC;IACDa,MAAM,EAAEb,EAAE,CACT,8HACD;EACD,CAAC;EACD,OACCc,aAAA,CAACnB,iBAAiB;IAACoB,KAAK,EAAC;EAAU,GAClCD,aAAA,CAACf,aAAa;IACbiB,uBAAuB;IACvBC,qBAAqB;IACrBC,KAAK,EAAGlB,EAAE,CAAE,cAAe,CAAG;IAC9BmB,OAAO,EAAG,CACT;MAAED,KAAK,EAAElB,EAAE,CAAE,iBAAkB,CAAC;MAAEoB,KAAK,EAAE;IAAM,CAAC,EAChD;MAAEF,KAAK,EAAE,UAAU;MAAEE,KAAK,EAAE;IAAS,CAAC,EACtC;MAAEF,KAAK,EAAE,QAAQ;MAAEE,KAAK,EAAE;IAAO,CAAC,EAClC;MAAEF,KAAK,EAAE,WAAW;MAAEE,KAAK,EAAE;IAAU,CAAC,EACxC;MAAEF,KAAK,EAAE,WAAW;MAAEE,KAAK,EAAE;IAAU,CAAC,EACxC;MAAEF,KAAK,EAAE,SAAS;MAAEE,KAAK,EAAE;IAAQ,CAAC,EACpC;MAAEF,KAAK,EAAE,UAAU;MAAEE,KAAK,EAAE;IAAS,CAAC,CACpC;IACHA,KAAK,EAAGf,OAAS;IACjBgB,QAAQ,EAAGf,eAAiB;IAC5BgB,IAAI,EAAGf,mBAAmB,CAAEF,OAAO;EAAI,CACvC,CACiB,CAAC;AAEtB;AAEA,SAASkB,SAASA,CAAE;EACnBC,UAAU;EACVC,IAAI;EACJC,aAAa;EACbC,QAAQ;EACRC,0BAA0B,EAAEC;AAC7B,CAAC,EAAG;EACH,MAAM;IAAEC,cAAc;IAAEC;EAAoB,CAAC,GAAGvC,SAAS,CACtDwC,MAAM,IAAM;IACb,MAAM;MAAEC,QAAQ;MAAEC;IAAY,CAAC,GAAGF,MAAM,CAAElC,gBAAiB,CAAC;IAC5D,MAAMqC,KAAK,GAAGF,QAAQ,CAAEN,QAAS,CAAC;IAClC,OAAO;MACNG,cAAc,EAAE,CAAC,EAAIK,KAAK,IAAIA,KAAK,CAACC,WAAW,CAACC,MAAM,CAAE;MACxDN,mBAAmB,EAAEG,WAAW,CAAC,CAAC,EAAEI;IACrC,CAAC;EACF,CAAC,EACD,CAAEX,QAAQ,CACX,CAAC;EAED,MAAM;IACLtB,OAAO,EAAEkC,OAAO,GAAG,KAAK;IACxBC,YAAY;IACZC,aAAa;IACbC,MAAM,GAAG,CAAC;EACX,CAAC,GAAGlB,UAAU;;EAEd;EACA,MAAM;IAAEmB,IAAI,GAAG;EAAU,CAAC,GAAGD,MAAM;EACnC,MAAME,oBAAoB,GACzBb,mBAAmB,IAAIY,IAAI,KAAK,MAAM,IAAIA,IAAI,KAAK,MAAM;;EAE1D;EACA,MAAME,UAAU,GAAGnD,aAAa,CAAE;IACjCoD,SAAS,EAAE,CAAEF,oBAAoB,GAAGf,gBAAgB,GAAG;EACxD,CAAE,CAAC;EACH,MAAM,CAAEkB,eAAe,EAAEC,kBAAkB,CAAE,GAAG7C,wBAAwB,CAAE;IACzEqB,UAAU;IACVyB,cAAc,EAAEN,IAAI;IACpBb;EACD,CAAE,CAAC;;EAEH;EACA,IAAIoB,cAAc;EAClB,IAAKH,eAAe,EAAG;IACtB;IACA;IACA;IACA;IACAG,cAAc,GAAG,KAAK;EACvB,CAAC,MAAM,IAAK,CAAEpB,cAAc,EAAG;IAC9B;IACA;IACAoB,cAAc,GAAGzD,WAAW,CAAC0D,mBAAmB;EACjD;EAEA,MAAMC,gBAAgB,GAAGxD,mBAAmB,CAC3CgD,oBAAoB,GACjBC,UAAU,GACV;IAAEC,SAAS,EAAE;EAAkC,CAAC,EACnD;IACCN,YAAY;IACZC,aAAa;IACbS,cAAc;IACdG,iCAAiC,EAAE,CAAET;EACtC,CACD,CAAC;EAED,MAAM;IAAEU;EAAY,CAAC,GAAG/D,WAAW,CAAEO,gBAAiB,CAAC;EAEvD,MAAMyD,eAAe,GAAKC,aAAa,IAAM;IAC5C9B,aAAa,CAAE8B,aAAa,CAAChC,UAAW,CAAC;IACzC8B,WAAW,CAAE3B,QAAQ,EAAE,CAAC,CAAE,CAAC;IAC3BqB,kBAAkB,CAAE,KAAM,CAAC;EAC5B,CAAC;EAED,OACClC,aAAA,CAAA2C,QAAA,QACC3C,aAAA,CAACV,iBAAiB;IACjBC,OAAO,EAAGkC,OAAS;IACnBjC,eAAe,EAAKc,KAAK,IACxBM,aAAa,CAAE;MAAErB,OAAO,EAAEe;IAAM,CAAE;EAClC,CACD,CAAC,EACA2B,eAAe,IAChBjC,aAAA,CAACb,IAAI,QACFmD,gBAAgB,CAACM,QAAQ,EAC3B5C,aAAA,CAACZ,gBAAgB;IAChBuB,IAAI,EAAGA,IAAM;IACbkC,QAAQ,EAAGJ;EAAiB,CAC5B,CACI,CACN,EACCX,oBAAoB,IAAI,CAAEG,eAAe,IAC1CjC,aAAA,CAACyB,OAAO;IAAA,GAAMa;EAAgB,CAAI,CAClC,EAGC,CAAER,oBAAoB,IAAI,CAAEG,eAAe,IAC5CjC,aAAA,CAACyB,OAAO;IAAA,GAAMM;EAAU,GACvB/B,aAAA;IAAA,GAAUsC;EAAgB,CAAI,CACtB,CAET,CAAC;AAEL;AAEA,eAAe7B,SAAS"}
1
+ {"version":3,"names":["useDispatch","useSelect","InnerBlocks","useBlockProps","InspectorControls","useInnerBlocksProps","store","blockEditorStore","SelectControl","__","View","GroupPlaceHolder","useShouldShowPlaceHolder","GroupEditControls","tagName","onSelectTagName","htmlElementMessages","header","main","section","article","aside","footer","createElement","group","__nextHasNoMarginBottom","__next40pxDefaultSize","label","options","value","onChange","help","GroupEdit","attributes","name","setAttributes","clientId","hasInnerBlocks","themeSupportsLayout","select","getBlock","getSettings","block","innerBlocks","length","supportsLayout","TagName","templateLock","allowedBlocks","layout","type","layoutSupportEnabled","blockProps","showPlaceholder","setShowPlaceholder","usedLayoutType","renderAppender","ButtonBlockAppender","innerBlocksProps","className","selectBlock","selectVariation","nextVariation","Fragment","children","onSelect"],"sources":["@wordpress/block-library/src/group/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tInnerBlocks,\n\tuseBlockProps,\n\tInspectorControls,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { SelectControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { View } from '@wordpress/primitives';\n\n/**\n * Internal dependencies\n */\nimport GroupPlaceHolder, { useShouldShowPlaceHolder } from './placeholder';\n\n/**\n * Render inspector controls for the Group block.\n *\n * @param {Object} props Component props.\n * @param {string} props.tagName The HTML tag name.\n * @param {Function} props.onSelectTagName onChange function for the SelectControl.\n *\n * @return {JSX.Element} The control group.\n */\nfunction GroupEditControls( { tagName, onSelectTagName } ) {\n\tconst htmlElementMessages = {\n\t\theader: __(\n\t\t\t'The <header> element should represent introductory content, typically a group of introductory or navigational aids.'\n\t\t),\n\t\tmain: __(\n\t\t\t'The <main> element should be used for the primary content of your document only. '\n\t\t),\n\t\tsection: __(\n\t\t\t\"The <section> element should represent a standalone portion of the document that can't be better represented by another element.\"\n\t\t),\n\t\tarticle: __(\n\t\t\t'The <article> element should represent a self-contained, syndicatable portion of the document.'\n\t\t),\n\t\taside: __(\n\t\t\t\"The <aside> element should represent a portion of a document whose content is only indirectly related to the document's main content.\"\n\t\t),\n\t\tfooter: __(\n\t\t\t'The <footer> element should represent a footer for its nearest sectioning element (e.g.: <section>, <article>, <main> etc.).'\n\t\t),\n\t};\n\treturn (\n\t\t<InspectorControls group=\"advanced\">\n\t\t\t<SelectControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\tlabel={ __( 'HTML element' ) }\n\t\t\t\toptions={ [\n\t\t\t\t\t{ label: __( 'Default (<div>)' ), value: 'div' },\n\t\t\t\t\t{ label: '<header>', value: 'header' },\n\t\t\t\t\t{ label: '<main>', value: 'main' },\n\t\t\t\t\t{ label: '<section>', value: 'section' },\n\t\t\t\t\t{ label: '<article>', value: 'article' },\n\t\t\t\t\t{ label: '<aside>', value: 'aside' },\n\t\t\t\t\t{ label: '<footer>', value: 'footer' },\n\t\t\t\t] }\n\t\t\t\tvalue={ tagName }\n\t\t\t\tonChange={ onSelectTagName }\n\t\t\t\thelp={ htmlElementMessages[ tagName ] }\n\t\t\t/>\n\t\t</InspectorControls>\n\t);\n}\n\nfunction GroupEdit( { attributes, name, setAttributes, clientId } ) {\n\tconst { hasInnerBlocks, themeSupportsLayout } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, getSettings } = select( blockEditorStore );\n\t\t\tconst block = getBlock( clientId );\n\t\t\treturn {\n\t\t\t\thasInnerBlocks: !! ( block && block.innerBlocks.length ),\n\t\t\t\tthemeSupportsLayout: getSettings()?.supportsLayout,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst {\n\t\ttagName: TagName = 'div',\n\t\ttemplateLock,\n\t\tallowedBlocks,\n\t\tlayout = {},\n\t} = attributes;\n\n\t// Layout settings.\n\tconst { type = 'default' } = layout;\n\tconst layoutSupportEnabled =\n\t\tthemeSupportsLayout || type === 'flex' || type === 'grid';\n\n\t// Hooks.\n\tconst blockProps = useBlockProps();\n\n\tconst [ showPlaceholder, setShowPlaceholder ] = useShouldShowPlaceHolder( {\n\t\tattributes,\n\t\tusedLayoutType: type,\n\t\thasInnerBlocks,\n\t} );\n\n\t// Default to the regular appender being rendered.\n\tlet renderAppender;\n\tif ( showPlaceholder ) {\n\t\t// In the placeholder state, ensure the appender is not rendered.\n\t\t// This is needed because `...innerBlocksProps` is used in the placeholder\n\t\t// state so that blocks can dragged onto the placeholder area\n\t\t// from both the list view and in the editor canvas.\n\t\trenderAppender = false;\n\t} else if ( ! hasInnerBlocks ) {\n\t\t// When there is no placeholder, but the block is also empty,\n\t\t// use the larger button appender.\n\t\trenderAppender = InnerBlocks.ButtonBlockAppender;\n\t}\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\tlayoutSupportEnabled\n\t\t\t? blockProps\n\t\t\t: { className: 'wp-block-group__inner-container' },\n\t\t{\n\t\t\ttemplateLock,\n\t\t\tallowedBlocks,\n\t\t\trenderAppender,\n\t\t}\n\t);\n\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\n\tconst selectVariation = ( nextVariation ) => {\n\t\tsetAttributes( nextVariation.attributes );\n\t\tselectBlock( clientId, -1 );\n\t\tsetShowPlaceholder( false );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<GroupEditControls\n\t\t\t\ttagName={ TagName }\n\t\t\t\tonSelectTagName={ ( value ) =>\n\t\t\t\t\tsetAttributes( { tagName: value } )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ showPlaceholder && (\n\t\t\t\t<View>\n\t\t\t\t\t{ innerBlocksProps.children }\n\t\t\t\t\t<GroupPlaceHolder\n\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\tonSelect={ selectVariation }\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t) }\n\t\t\t{ layoutSupportEnabled && ! showPlaceholder && (\n\t\t\t\t<TagName { ...innerBlocksProps } />\n\t\t\t) }\n\t\t\t{ /* Ideally this is not needed but it's there for backward compatibility reason\n\t\t\t\tto keep this div for themes that might rely on its presence */ }\n\t\t\t{ ! layoutSupportEnabled && ! showPlaceholder && (\n\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t\t</TagName>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default GroupEdit;\n"],"mappings":"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"}
@@ -10,7 +10,7 @@ import classnames from 'classnames';
10
10
  import { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';
11
11
  import { Placeholder } from '@wordpress/components';
12
12
  import { useDispatch, useSelect } from '@wordpress/data';
13
- import { BlockAlignmentControl, BlockControls, BlockIcon, MediaPlaceholder, useBlockProps, store as blockEditorStore, __experimentalUseBorderProps as useBorderProps, useBlockEditingMode } from '@wordpress/block-editor';
13
+ import { BlockIcon, MediaPlaceholder, useBlockProps, store as blockEditorStore, __experimentalUseBorderProps as useBorderProps, useBlockEditingMode } from '@wordpress/block-editor';
14
14
  import { useEffect, useRef, useState } from '@wordpress/element';
15
15
  import { __ } from '@wordpress/i18n';
16
16
  import { image as icon } from '@wordpress/icons';
@@ -80,13 +80,13 @@ export function ImageEdit({
80
80
  url = '',
81
81
  alt,
82
82
  caption,
83
- align,
84
83
  id,
85
84
  width,
86
85
  height,
87
86
  sizeSlug,
88
87
  aspectRatio,
89
- scale
88
+ scale,
89
+ align
90
90
  } = attributes;
91
91
  const [temporaryURL, setTemporaryURL] = useState();
92
92
  const altRef = useRef();
@@ -97,6 +97,20 @@ export function ImageEdit({
97
97
  useEffect(() => {
98
98
  captionRef.current = caption;
99
99
  }, [caption]);
100
+ const {
101
+ __unstableMarkNextChangeAsNotPersistent
102
+ } = useDispatch(blockEditorStore);
103
+ useEffect(() => {
104
+ if (['wide', 'full'].includes(align)) {
105
+ __unstableMarkNextChangeAsNotPersistent();
106
+ setAttributes({
107
+ width: undefined,
108
+ height: undefined,
109
+ aspectRatio: undefined,
110
+ scale: undefined
111
+ });
112
+ }
113
+ }, [align]);
100
114
  const ref = useRef();
101
115
  const {
102
116
  imageDefaultSize,
@@ -226,16 +240,6 @@ export function ImageEdit({
226
240
  });
227
241
  }
228
242
  }
229
- function updateAlignment(nextAlign) {
230
- const extraUpdatedAttributes = ['wide', 'full'].includes(nextAlign) ? {
231
- width: undefined,
232
- height: undefined
233
- } : {};
234
- setAttributes({
235
- ...extraUpdatedAttributes,
236
- align: nextAlign
237
- });
238
- }
239
243
  let isTemp = isTemporaryImage(id, url);
240
244
 
241
245
  // Upload a temporary image on mount.
@@ -323,12 +327,7 @@ export function ImageEdit({
323
327
  context: context,
324
328
  clientId: clientId,
325
329
  blockEditingMode: blockEditingMode
326
- }), !url && blockEditingMode === 'default' && createElement(BlockControls, {
327
- group: "block"
328
- }, createElement(BlockAlignmentControl, {
329
- value: align,
330
- onChange: updateAlignment
331
- })), createElement(MediaPlaceholder, {
330
+ }), createElement(MediaPlaceholder, {
332
331
  icon: createElement(BlockIcon, {
333
332
  icon: icon
334
333
  }),
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","getBlobByURL","isBlobURL","revokeBlobURL","Placeholder","useDispatch","useSelect","BlockAlignmentControl","BlockControls","BlockIcon","MediaPlaceholder","useBlockProps","store","blockEditorStore","__experimentalUseBorderProps","useBorderProps","useBlockEditingMode","useEffect","useRef","useState","__","image","icon","noticesStore","Image","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_CUSTOM","LINK_DESTINATION_MEDIA","LINK_DESTINATION_NONE","ALLOWED_MEDIA_TYPES","pickRelevantMediaFiles","size","imageProps","Object","fromEntries","entries","filter","key","includes","url","sizes","media_details","source_url","isTemporaryImage","id","isExternalImage","hasSize","_image$sizes$size","_image$media_details$","ImageEdit","attributes","setAttributes","isSelected","className","insertBlocksAfter","onReplace","context","clientId","alt","caption","align","width","height","sizeSlug","aspectRatio","scale","temporaryURL","setTemporaryURL","altRef","current","captionRef","ref","imageDefaultSize","mediaUpload","select","getSettings","settings","blockEditingMode","createErrorNotice","onUploadError","message","type","src","undefined","onSelectImage","media","title","newSize","mediaAttributes","omittedCaption","restMediaAttributes","additionalAttributes","linkDestination","window","wp","view","defaultProps","link","href","onSelectURL","newURL","updateAlignment","nextAlign","extraUpdatedAttributes","isTemp","file","filesList","onFileChange","img","allowedTypes","onError","isExternal","mediaPreview","createElement","borderProps","classes","style","keys","length","blockProps","placeholder","content","withIllustration","label","instructions","objectFit","containerRef","group","value","onChange","onSelect","accept","disableMediaButtons"],"sources":["@wordpress/block-library/src/image/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { Placeholder } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tBlockAlignmentControl,\n\tBlockControls,\n\tBlockIcon,\n\tMediaPlaceholder,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalUseBorderProps as useBorderProps,\n\tuseBlockEditingMode,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { image as icon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport Image from './image';\n\n/**\n * Module constants\n */\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_CUSTOM,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n\tALLOWED_MEDIA_TYPES,\n} from './constants';\n\nexport const pickRelevantMediaFiles = ( image, size ) => {\n\tconst imageProps = Object.fromEntries(\n\t\tObject.entries( image ?? {} ).filter( ( [ key ] ) =>\n\t\t\t[ 'alt', 'id', 'link', 'caption' ].includes( key )\n\t\t)\n\t);\n\n\timageProps.url =\n\t\timage?.sizes?.[ size ]?.url ||\n\t\timage?.media_details?.sizes?.[ size ]?.source_url ||\n\t\timage.url;\n\treturn imageProps;\n};\n\n/**\n * Is the URL a temporary blob URL? A blob URL is one that is used temporarily\n * while the image is being uploaded and will not have an id yet allocated.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the URL a Blob URL\n */\nconst isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );\n\n/**\n * Is the url for the image hosted externally. An externally hosted image has no\n * id and is not a blob url.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the url an externally hosted url?\n */\nexport const isExternalImage = ( id, url ) => url && ! id && ! isBlobURL( url );\n\n/**\n * Checks if WP generated the specified image size. Size generation is skipped\n * when the image is smaller than the said size.\n *\n * @param {Object} image\n * @param {string} size\n *\n * @return {boolean} Whether or not it has default image size.\n */\nfunction hasSize( image, size ) {\n\treturn (\n\t\t'url' in ( image?.sizes?.[ size ] ?? {} ) ||\n\t\t'source_url' in ( image?.media_details?.sizes?.[ size ] ?? {} )\n\t);\n}\n\nexport function ImageEdit( {\n\tattributes,\n\tsetAttributes,\n\tisSelected,\n\tclassName,\n\tinsertBlocksAfter,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst {\n\t\turl = '',\n\t\talt,\n\t\tcaption,\n\t\talign,\n\t\tid,\n\t\twidth,\n\t\theight,\n\t\tsizeSlug,\n\t\taspectRatio,\n\t\tscale,\n\t} = attributes;\n\tconst [ temporaryURL, setTemporaryURL ] = useState();\n\n\tconst altRef = useRef();\n\tuseEffect( () => {\n\t\taltRef.current = alt;\n\t}, [ alt ] );\n\n\tconst captionRef = useRef();\n\tuseEffect( () => {\n\t\tcaptionRef.current = caption;\n\t}, [ caption ] );\n\n\tconst ref = useRef();\n\tconst { imageDefaultSize, mediaUpload } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst settings = getSettings();\n\t\treturn {\n\t\t\timageDefaultSize: settings.imageDefaultSize,\n\t\t\tmediaUpload: settings.mediaUpload,\n\t\t};\n\t}, [] );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetAttributes( {\n\t\t\tsrc: undefined,\n\t\t\tid: undefined,\n\t\t\turl: undefined,\n\t\t} );\n\t\tsetTemporaryURL( undefined );\n\t}\n\n\tfunction onSelectImage( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: undefined,\n\t\t\t\talt: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\ttitle: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetTemporaryURL( media.url );\n\t\t\treturn;\n\t\t}\n\n\t\tsetTemporaryURL();\n\n\t\t// Try to use the previous selected image size if its available\n\t\t// otherwise try the default image size or fallback to \"full\"\n\t\tlet newSize = 'full';\n\t\tif ( sizeSlug && hasSize( media, sizeSlug ) ) {\n\t\t\tnewSize = sizeSlug;\n\t\t} else if ( hasSize( media, imageDefaultSize ) ) {\n\t\t\tnewSize = imageDefaultSize;\n\t\t}\n\n\t\tlet mediaAttributes = pickRelevantMediaFiles( media, newSize );\n\n\t\t// If a caption text was meanwhile written by the user,\n\t\t// make sure the text is not overwritten by empty captions.\n\t\tif ( captionRef.current && ! mediaAttributes.caption ) {\n\t\t\tconst { caption: omittedCaption, ...restMediaAttributes } =\n\t\t\t\tmediaAttributes;\n\t\t\tmediaAttributes = restMediaAttributes;\n\t\t}\n\n\t\tlet additionalAttributes;\n\t\t// Reset the dimension attributes if changing to a different image.\n\t\tif ( ! media.id || media.id !== id ) {\n\t\t\tadditionalAttributes = {\n\t\t\t\tsizeSlug: newSize,\n\t\t\t};\n\t\t} else {\n\t\t\t// Keep the same url when selecting the same file, so \"Resolution\"\n\t\t\t// option is not changed.\n\t\t\tadditionalAttributes = { url };\n\t\t}\n\n\t\t// Check if default link setting should be used.\n\t\tlet linkDestination = attributes.linkDestination;\n\t\tif ( ! linkDestination ) {\n\t\t\t// Use the WordPress option to determine the proper default.\n\t\t\t// The constants used in Gutenberg do not match WP options so a little more complicated than ideal.\n\t\t\t// TODO: fix this in a follow up PR, requires updating media-text and ui component.\n\t\t\tswitch (\n\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\tLINK_DESTINATION_NONE\n\t\t\t) {\n\t\t\t\tcase 'file':\n\t\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_MEDIA;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'post':\n\t\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_CUSTOM:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_CUSTOM;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_NONE:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_NONE;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Check if the image is linked to it's media.\n\t\tlet href;\n\t\tswitch ( linkDestination ) {\n\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\thref = media.url;\n\t\t\t\tbreak;\n\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\thref = media.link;\n\t\t\t\tbreak;\n\t\t}\n\t\tmediaAttributes.href = href;\n\n\t\tsetAttributes( {\n\t\t\t...mediaAttributes,\n\t\t\t...additionalAttributes,\n\t\t\tlinkDestination,\n\t\t} );\n\t}\n\n\tfunction onSelectURL( newURL ) {\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: newURL,\n\t\t\t\tid: undefined,\n\t\t\t\tsizeSlug: imageDefaultSize,\n\t\t\t} );\n\t\t}\n\t}\n\n\tfunction updateAlignment( nextAlign ) {\n\t\tconst extraUpdatedAttributes = [ 'wide', 'full' ].includes( nextAlign )\n\t\t\t? { width: undefined, height: undefined }\n\t\t\t: {};\n\t\tsetAttributes( {\n\t\t\t...extraUpdatedAttributes,\n\t\t\talign: nextAlign,\n\t\t} );\n\t}\n\n\tlet isTemp = isTemporaryImage( id, url );\n\n\t// Upload a temporary image on mount.\n\tuseEffect( () => {\n\t\tif ( ! isTemp ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( url );\n\n\t\tif ( file ) {\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList: [ file ],\n\t\t\t\tonFileChange: ( [ img ] ) => {\n\t\t\t\t\tonSelectImage( img );\n\t\t\t\t},\n\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\tonError: ( message ) => {\n\t\t\t\t\tisTemp = false;\n\t\t\t\t\tonUploadError( message );\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\t// If an image is temporary, revoke the Blob url when it is uploaded (and is\n\t// no longer temporary).\n\tuseEffect( () => {\n\t\tif ( isTemp ) {\n\t\t\tsetTemporaryURL( url );\n\t\t\treturn;\n\t\t}\n\t\trevokeBlobURL( temporaryURL );\n\t}, [ isTemp, url ] );\n\n\tconst isExternal = isExternalImage( id, url );\n\tconst src = isExternal ? url : undefined;\n\tconst mediaPreview = !! url && (\n\t\t<img\n\t\t\talt={ __( 'Edit image' ) }\n\t\t\ttitle={ __( 'Edit image' ) }\n\t\t\tclassName={ 'edit-image-preview' }\n\t\t\tsrc={ url }\n\t\t/>\n\t);\n\n\tconst borderProps = useBorderProps( attributes );\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': temporaryURL,\n\t\t'is-resized': !! width || !! height,\n\t\t[ `size-${ sizeSlug }` ]: sizeSlug,\n\t\t'has-custom-border':\n\t\t\t!! borderProps.className ||\n\t\t\t( borderProps.style &&\n\t\t\t\tObject.keys( borderProps.style ).length > 0 ),\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tref,\n\t\tclassName: classes,\n\t} );\n\n\t// Much of this description is duplicated from MediaPlaceholder.\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName={ classnames( 'block-editor-media-placeholder', {\n\t\t\t\t\t[ borderProps.className ]:\n\t\t\t\t\t\t!! borderProps.className && ! isSelected,\n\t\t\t\t} ) }\n\t\t\t\twithIllustration={ true }\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ __( 'Image' ) }\n\t\t\t\tinstructions={ __(\n\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) }\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} }\n\t\t\t>\n\t\t\t\t{ content }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\treturn (\n\t\t<figure { ...blockProps }>\n\t\t\t<Image\n\t\t\t\ttemporaryURL={ temporaryURL }\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tisSelected={ isSelected }\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\tonReplace={ onReplace }\n\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonUploadError={ onUploadError }\n\t\t\t\tcontainerRef={ ref }\n\t\t\t\tcontext={ context }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tblockEditingMode={ blockEditingMode }\n\t\t\t/>\n\t\t\t{ ! url && blockEditingMode === 'default' && (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t<BlockAlignmentControl\n\t\t\t\t\t\tvalue={ align }\n\t\t\t\t\t\tonChange={ updateAlignment }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<MediaPlaceholder\n\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\tvalue={ { id, src } }\n\t\t\t\tmediaPreview={ mediaPreview }\n\t\t\t\tdisableMediaButtons={ temporaryURL || url }\n\t\t\t/>\n\t\t</figure>\n\t);\n}\n\nexport default ImageEdit;\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","getBlobByURL","isBlobURL","revokeBlobURL","Placeholder","useDispatch","useSelect","BlockIcon","MediaPlaceholder","useBlockProps","store","blockEditorStore","__experimentalUseBorderProps","useBorderProps","useBlockEditingMode","useEffect","useRef","useState","__","image","icon","noticesStore","Image","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_CUSTOM","LINK_DESTINATION_MEDIA","LINK_DESTINATION_NONE","ALLOWED_MEDIA_TYPES","pickRelevantMediaFiles","size","imageProps","Object","fromEntries","entries","filter","key","includes","url","sizes","media_details","source_url","isTemporaryImage","id","isExternalImage","hasSize","_image$sizes$size","_image$media_details$","ImageEdit","attributes","setAttributes","isSelected","className","insertBlocksAfter","onReplace","context","clientId","alt","caption","width","height","sizeSlug","aspectRatio","scale","align","temporaryURL","setTemporaryURL","altRef","current","captionRef","__unstableMarkNextChangeAsNotPersistent","undefined","ref","imageDefaultSize","mediaUpload","select","getSettings","settings","blockEditingMode","createErrorNotice","onUploadError","message","type","src","onSelectImage","media","title","newSize","mediaAttributes","omittedCaption","restMediaAttributes","additionalAttributes","linkDestination","window","wp","view","defaultProps","link","href","onSelectURL","newURL","isTemp","file","filesList","onFileChange","img","allowedTypes","onError","isExternal","mediaPreview","createElement","borderProps","classes","style","keys","length","blockProps","placeholder","content","withIllustration","label","instructions","objectFit","containerRef","onSelect","accept","value","disableMediaButtons"],"sources":["@wordpress/block-library/src/image/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { 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\tuseBlockEditingMode,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { image as icon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport Image from './image';\n\n/**\n * Module constants\n */\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_CUSTOM,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n\tALLOWED_MEDIA_TYPES,\n} from './constants';\n\nexport const pickRelevantMediaFiles = ( image, size ) => {\n\tconst imageProps = Object.fromEntries(\n\t\tObject.entries( image ?? {} ).filter( ( [ key ] ) =>\n\t\t\t[ 'alt', 'id', 'link', 'caption' ].includes( key )\n\t\t)\n\t);\n\n\timageProps.url =\n\t\timage?.sizes?.[ size ]?.url ||\n\t\timage?.media_details?.sizes?.[ size ]?.source_url ||\n\t\timage.url;\n\treturn imageProps;\n};\n\n/**\n * Is the URL a temporary blob URL? A blob URL is one that is used temporarily\n * while the image is being uploaded and will not have an id yet allocated.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the URL a Blob URL\n */\nconst isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );\n\n/**\n * Is the url for the image hosted externally. An externally hosted image has no\n * id and is not a blob url.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the url an externally hosted url?\n */\nexport const isExternalImage = ( id, url ) => url && ! id && ! isBlobURL( url );\n\n/**\n * Checks if WP generated the specified image size. Size generation is skipped\n * when the image is smaller than the said size.\n *\n * @param {Object} image\n * @param {string} size\n *\n * @return {boolean} Whether or not it has default image size.\n */\nfunction hasSize( image, size ) {\n\treturn (\n\t\t'url' in ( image?.sizes?.[ size ] ?? {} ) ||\n\t\t'source_url' in ( image?.media_details?.sizes?.[ size ] ?? {} )\n\t);\n}\n\nexport function ImageEdit( {\n\tattributes,\n\tsetAttributes,\n\tisSelected,\n\tclassName,\n\tinsertBlocksAfter,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst {\n\t\turl = '',\n\t\talt,\n\t\tcaption,\n\t\tid,\n\t\twidth,\n\t\theight,\n\t\tsizeSlug,\n\t\taspectRatio,\n\t\tscale,\n\t\talign,\n\t} = attributes;\n\tconst [ temporaryURL, setTemporaryURL ] = useState();\n\n\tconst altRef = useRef();\n\tuseEffect( () => {\n\t\taltRef.current = alt;\n\t}, [ alt ] );\n\n\tconst captionRef = useRef();\n\tuseEffect( () => {\n\t\tcaptionRef.current = caption;\n\t}, [ caption ] );\n\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\tif ( [ 'wide', 'full' ].includes( align ) ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\taspectRatio: undefined,\n\t\t\t\tscale: undefined,\n\t\t\t} );\n\t\t}\n\t}, [ align ] );\n\n\tconst ref = useRef();\n\tconst { imageDefaultSize, mediaUpload } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst settings = getSettings();\n\t\treturn {\n\t\t\timageDefaultSize: settings.imageDefaultSize,\n\t\t\tmediaUpload: settings.mediaUpload,\n\t\t};\n\t}, [] );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetAttributes( {\n\t\t\tsrc: undefined,\n\t\t\tid: undefined,\n\t\t\turl: undefined,\n\t\t} );\n\t\tsetTemporaryURL( undefined );\n\t}\n\n\tfunction onSelectImage( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: undefined,\n\t\t\t\talt: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\ttitle: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetTemporaryURL( media.url );\n\t\t\treturn;\n\t\t}\n\n\t\tsetTemporaryURL();\n\n\t\t// Try to use the previous selected image size if its available\n\t\t// otherwise try the default image size or fallback to \"full\"\n\t\tlet newSize = 'full';\n\t\tif ( sizeSlug && hasSize( media, sizeSlug ) ) {\n\t\t\tnewSize = sizeSlug;\n\t\t} else if ( hasSize( media, imageDefaultSize ) ) {\n\t\t\tnewSize = imageDefaultSize;\n\t\t}\n\n\t\tlet mediaAttributes = pickRelevantMediaFiles( media, newSize );\n\n\t\t// If a caption text was meanwhile written by the user,\n\t\t// make sure the text is not overwritten by empty captions.\n\t\tif ( captionRef.current && ! mediaAttributes.caption ) {\n\t\t\tconst { caption: omittedCaption, ...restMediaAttributes } =\n\t\t\t\tmediaAttributes;\n\t\t\tmediaAttributes = restMediaAttributes;\n\t\t}\n\n\t\tlet additionalAttributes;\n\t\t// Reset the dimension attributes if changing to a different image.\n\t\tif ( ! media.id || media.id !== id ) {\n\t\t\tadditionalAttributes = {\n\t\t\t\tsizeSlug: newSize,\n\t\t\t};\n\t\t} else {\n\t\t\t// Keep the same url when selecting the same file, so \"Resolution\"\n\t\t\t// option is not changed.\n\t\t\tadditionalAttributes = { url };\n\t\t}\n\n\t\t// Check if default link setting should be used.\n\t\tlet linkDestination = attributes.linkDestination;\n\t\tif ( ! linkDestination ) {\n\t\t\t// Use the WordPress option to determine the proper default.\n\t\t\t// The constants used in Gutenberg do not match WP options so a little more complicated than ideal.\n\t\t\t// TODO: fix this in a follow up PR, requires updating media-text and ui component.\n\t\t\tswitch (\n\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\tLINK_DESTINATION_NONE\n\t\t\t) {\n\t\t\t\tcase 'file':\n\t\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_MEDIA;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'post':\n\t\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_CUSTOM:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_CUSTOM;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_NONE:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_NONE;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Check if the image is linked to it's media.\n\t\tlet href;\n\t\tswitch ( linkDestination ) {\n\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\thref = media.url;\n\t\t\t\tbreak;\n\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\thref = media.link;\n\t\t\t\tbreak;\n\t\t}\n\t\tmediaAttributes.href = href;\n\n\t\tsetAttributes( {\n\t\t\t...mediaAttributes,\n\t\t\t...additionalAttributes,\n\t\t\tlinkDestination,\n\t\t} );\n\t}\n\n\tfunction onSelectURL( newURL ) {\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: newURL,\n\t\t\t\tid: undefined,\n\t\t\t\tsizeSlug: imageDefaultSize,\n\t\t\t} );\n\t\t}\n\t}\n\n\tlet isTemp = isTemporaryImage( id, url );\n\n\t// Upload a temporary image on mount.\n\tuseEffect( () => {\n\t\tif ( ! isTemp ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( url );\n\n\t\tif ( file ) {\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList: [ file ],\n\t\t\t\tonFileChange: ( [ img ] ) => {\n\t\t\t\t\tonSelectImage( img );\n\t\t\t\t},\n\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\tonError: ( message ) => {\n\t\t\t\t\tisTemp = false;\n\t\t\t\t\tonUploadError( message );\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\t// If an image is temporary, revoke the Blob url when it is uploaded (and is\n\t// no longer temporary).\n\tuseEffect( () => {\n\t\tif ( isTemp ) {\n\t\t\tsetTemporaryURL( url );\n\t\t\treturn;\n\t\t}\n\t\trevokeBlobURL( temporaryURL );\n\t}, [ isTemp, url ] );\n\n\tconst isExternal = isExternalImage( id, url );\n\tconst src = isExternal ? url : undefined;\n\tconst mediaPreview = !! url && (\n\t\t<img\n\t\t\talt={ __( 'Edit image' ) }\n\t\t\ttitle={ __( 'Edit image' ) }\n\t\t\tclassName={ 'edit-image-preview' }\n\t\t\tsrc={ url }\n\t\t/>\n\t);\n\n\tconst borderProps = useBorderProps( attributes );\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': temporaryURL,\n\t\t'is-resized': !! width || !! height,\n\t\t[ `size-${ sizeSlug }` ]: sizeSlug,\n\t\t'has-custom-border':\n\t\t\t!! borderProps.className ||\n\t\t\t( borderProps.style &&\n\t\t\t\tObject.keys( borderProps.style ).length > 0 ),\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tref,\n\t\tclassName: classes,\n\t} );\n\n\t// Much of this description is duplicated from MediaPlaceholder.\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName={ classnames( 'block-editor-media-placeholder', {\n\t\t\t\t\t[ borderProps.className ]:\n\t\t\t\t\t\t!! borderProps.className && ! isSelected,\n\t\t\t\t} ) }\n\t\t\t\twithIllustration={ true }\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ __( 'Image' ) }\n\t\t\t\tinstructions={ __(\n\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) }\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} }\n\t\t\t>\n\t\t\t\t{ content }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\treturn (\n\t\t<figure { ...blockProps }>\n\t\t\t<Image\n\t\t\t\ttemporaryURL={ temporaryURL }\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tisSelected={ isSelected }\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\tonReplace={ onReplace }\n\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonUploadError={ onUploadError }\n\t\t\t\tcontainerRef={ ref }\n\t\t\t\tcontext={ context }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tblockEditingMode={ blockEditingMode }\n\t\t\t/>\n\t\t\t<MediaPlaceholder\n\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\tvalue={ { id, src } }\n\t\t\t\tmediaPreview={ mediaPreview }\n\t\t\t\tdisableMediaButtons={ temporaryURL || url }\n\t\t\t/>\n\t\t</figure>\n\t);\n}\n\nexport default ImageEdit;\n"],"mappings":"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"}
@@ -11,7 +11,7 @@ import { useRoute } from '@react-navigation/native';
11
11
  import { Component, useEffect } from '@wordpress/element';
12
12
  import { requestMediaImport, mediaUploadSync, requestImageFailedRetryDialog, requestImageUploadCancelDialog, requestImageFullscreenPreview, setFeaturedImage } from '@wordpress/react-native-bridge';
13
13
  import { Icon, PanelBody, ToolbarButton, ToolbarGroup, Image, WIDE_ALIGNMENTS, LinkSettingsNavigation, BottomSheet, BottomSheetTextControl, BottomSheetSelectControl, FooterMessageControl, FooterMessageLink, Badge } from '@wordpress/components';
14
- import { BlockCaption, MediaPlaceholder, MediaUpload, MediaUploadProgress, MEDIA_TYPE_IMAGE, BlockControls, InspectorControls, BlockAlignmentToolbar, BlockStyles, store as blockEditorStore, blockSettingsScreens } from '@wordpress/block-editor';
14
+ import { BlockCaption, MediaPlaceholder, MediaUpload, MediaUploadProgress, MEDIA_TYPE_IMAGE, BlockControls, InspectorControls, BlockStyles, store as blockEditorStore, blockSettingsScreens } from '@wordpress/block-editor';
15
15
  import { __, _x, sprintf } from '@wordpress/i18n';
16
16
  import { getProtocol, hasQueryArg, isURL } from '@wordpress/url';
17
17
  import { doAction, hasAction } from '@wordpress/hooks';
@@ -153,7 +153,6 @@ export class ImageEdit extends Component {
153
153
  this.onSetFeatured = this.onSetFeatured.bind(this);
154
154
  this.onFocusCaption = this.onFocusCaption.bind(this);
155
155
  this.onSelectURL = this.onSelectURL.bind(this);
156
- this.updateAlignment = this.updateAlignment.bind(this);
157
156
  this.accessibilityLabelCreator = this.accessibilityLabelCreator.bind(this);
158
157
  this.setMappedAttributes = this.setMappedAttributes.bind(this);
159
158
  this.onSizeChangeValue = this.onSizeChangeValue.bind(this);
@@ -233,6 +232,23 @@ export class ImageEdit extends Component {
233
232
  this.replacedFeaturedImage = false;
234
233
  setFeaturedImage(id);
235
234
  }
235
+ const {
236
+ align
237
+ } = attributes;
238
+ const {
239
+ __unstableMarkNextChangeAsNotPersistent
240
+ } = this.props;
241
+
242
+ // Update the attributes if the align is wide or full
243
+ if (['wide', 'full'].includes(align)) {
244
+ __unstableMarkNextChangeAsNotPersistent();
245
+ setAttributes({
246
+ width: undefined,
247
+ height: undefined,
248
+ aspectRatio: undefined,
249
+ scale: undefined
250
+ });
251
+ }
236
252
  }
237
253
  static getDerivedStateFromProps(props, state) {
238
254
  // Avoid a UI flicker in the toolbar by insuring that isCaptionSelected
@@ -320,16 +336,6 @@ export class ImageEdit extends Component {
320
336
  height: undefined
321
337
  });
322
338
  }
323
- updateAlignment(nextAlign) {
324
- const extraUpdatedAttributes = Object.values(WIDE_ALIGNMENTS.alignments).includes(nextAlign) ? {
325
- width: undefined,
326
- height: undefined
327
- } : {};
328
- this.props.setAttributes({
329
- ...extraUpdatedAttributes,
330
- align: nextAlign
331
- });
332
- }
333
339
  onSetNewTab(value) {
334
340
  const updatedLinkTarget = getUpdatedLinkTargetSettings(value, this.props.attributes);
335
341
  this.props.setAttributes(updatedLinkTarget);
@@ -601,10 +607,7 @@ export class ImageEdit extends Component {
601
607
  title: __('Edit image'),
602
608
  icon: replace,
603
609
  onClick: open
604
- })), createElement(BlockAlignmentToolbar, {
605
- value: align,
606
- onChange: this.updateAlignment
607
- }));
610
+ })));
608
611
  const getInspectorControls = () => createElement(InspectorControls, null, createElement(PanelBody, {
609
612
  title: __('Settings')
610
613
  }), createElement(PanelBody, {
@@ -768,7 +771,11 @@ export default compose([withSelect((select, props) => {
768
771
  const {
769
772
  createErrorNotice
770
773
  } = dispatch(noticesStore);
774
+ const {
775
+ __unstableMarkNextChangeAsNotPersistent
776
+ } = dispatch(blockEditorStore);
771
777
  return {
778
+ __unstableMarkNextChangeAsNotPersistent,
772
779
  createErrorNotice,
773
780
  closeSettingsBottomSheet() {
774
781
  dispatch(editPostStore).closeGeneralSidebar();