@wordpress/media-utils 3.1.1 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/build/components/media-upload/index.js +6 -6
- package/build/components/media-upload/index.js.map +1 -1
- package/build/utils/upload-media.js +7 -7
- package/build/utils/upload-media.js.map +1 -1
- package/build-module/components/media-upload/index.js +6 -6
- package/build-module/components/media-upload/index.js.map +1 -1
- package/build-module/utils/upload-media.js +7 -7
- package/build-module/utils/upload-media.js.map +1 -1
- package/package.json +6 -6
- package/src/components/media-upload/index.js +6 -6
- package/src/utils/upload-media.js +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -173,8 +173,8 @@ const getGalleryDetailsMediaFrame = () => {
|
|
|
173
173
|
}), new wp.media.controller.GalleryAdd()]);
|
|
174
174
|
}
|
|
175
175
|
});
|
|
176
|
-
}; //
|
|
177
|
-
// we only need this set to display the image in the library
|
|
176
|
+
}; // The media library image object contains numerous attributes
|
|
177
|
+
// we only need this set to display the image in the library.
|
|
178
178
|
|
|
179
179
|
|
|
180
180
|
const slimImageObject = img => {
|
|
@@ -348,7 +348,7 @@ class MediaUpload extends _element.Component {
|
|
|
348
348
|
const {
|
|
349
349
|
onSelect,
|
|
350
350
|
multiple = false
|
|
351
|
-
} = this.props; // Get media attachment details from the frame state
|
|
351
|
+
} = this.props; // Get media attachment details from the frame state.
|
|
352
352
|
|
|
353
353
|
const attachment = this.frame.state().get('selection').toJSON();
|
|
354
354
|
onSelect(multiple ? attachment : attachment[0]);
|
|
@@ -401,11 +401,11 @@ class MediaUpload extends _element.Component {
|
|
|
401
401
|
const frameContent = this.frame.content.get();
|
|
402
402
|
|
|
403
403
|
if (frameContent && frameContent.collection) {
|
|
404
|
-
const collection = frameContent.collection; //
|
|
404
|
+
const collection = frameContent.collection; // Clean all attachments we have in memory.
|
|
405
405
|
|
|
406
|
-
collection.toArray().forEach(model => model.trigger('destroy', model)); //
|
|
406
|
+
collection.toArray().forEach(model => model.trigger('destroy', model)); // Reset has more flag, if library had small amount of items all items may have been loaded before.
|
|
407
407
|
|
|
408
|
-
collection.mirroring._hasMore = true; //
|
|
408
|
+
collection.mirroring._hasMore = true; // Request items.
|
|
409
409
|
|
|
410
410
|
collection.more();
|
|
411
411
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/media-utils/src/components/media-upload/index.js"],"names":["wp","window","DEFAULT_EMPTY_GALLERY","getFeaturedImageMediaFrame","media","view","MediaFrame","Select","extend","featuredImageToolbar","toolbar","createSelectToolbar","text","l10n","setFeaturedImage","state","options","editState","selection","get","EditImage","model","single","controller","render","content","set","loadEditor","createStates","on","states","add","FeaturedImage","editImage","getGalleryDetailsMediaFrame","Post","galleryToolbar","editing","Toolbar","items","insert","style","updateGallery","insertGallery","priority","requires","library","click","close","trigger","setState","reset","Library","id","title","createGalleryTitle","filterable","multiple","editable","query","type","GalleryEdit","menu","displaySettings","GalleryAdd","slimImageObject","img","attrSet","getAttachmentsCollection","ids","order","orderby","post__in","posts_per_page","MediaUpload","Component","constructor","allowedTypes","gallery","unstableFeaturedImageFlow","modalClass","arguments","openModal","bind","onOpen","onSelect","onUpdate","onClose","buildAndSetGalleryFrame","frameConfig","frame","$el","addClass","buildAndSetFeatureImageFrame","initializeListeners","addToGallery","value","props","lastGalleryValue","remove","currentState","length","GalleryDetailsMediaFrame","attachments","Selection","models","toJSON","mimeType","featuredImageFrame","componentWillUnmount","selections","selectedImages","map","attachment","updateCollection","hasMedia","Array","isArray","isGallery","forEach","more","done","frameContent","collection","toArray","mirroring","_hasMore","open"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray, defaults, pick } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\nconst { wp } = window;\n\nconst DEFAULT_EMPTY_GALLERY = [];\n\n/**\n * Prepares the Featured Image toolbars and frames.\n *\n * @return {wp.media.view.MediaFrame.Select} The default media workflow.\n */\nconst getFeaturedImageMediaFrame = () => {\n\treturn wp.media.view.MediaFrame.Select.extend( {\n\t\t/**\n\t\t * Enables the Set Featured Image Button.\n\t\t *\n\t\t * @param {Object} toolbar toolbar for featured image state\n\t\t * @return {void}\n\t\t */\n\t\tfeaturedImageToolbar( toolbar ) {\n\t\t\tthis.createSelectToolbar( toolbar, {\n\t\t\t\ttext: wp.media.view.l10n.setFeaturedImage,\n\t\t\t\tstate: this.options.state,\n\t\t\t} );\n\t\t},\n\n\t\t/**\n\t\t * Handle the edit state requirements of selected media item.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\teditState() {\n\t\t\tconst selection = this.state( 'featured-image' ).get( 'selection' );\n\t\t\tconst view = new wp.media.view.EditImage( {\n\t\t\t\tmodel: selection.single(),\n\t\t\t\tcontroller: this,\n\t\t\t} ).render();\n\n\t\t\t// Set the view to the EditImage frame using the selected image.\n\t\t\tthis.content.set( view );\n\n\t\t\t// After bringing in the frame, load the actual editor via an ajax call.\n\t\t\tview.loadEditor();\n\t\t},\n\n\t\t/**\n\t\t * Create the default states.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tcreateStates: function createStates() {\n\t\t\tthis.on(\n\t\t\t\t'toolbar:create:featured-image',\n\t\t\t\tthis.featuredImageToolbar,\n\t\t\t\tthis\n\t\t\t);\n\t\t\tthis.on( 'content:render:edit-image', this.editState, this );\n\n\t\t\tthis.states.add( [\n\t\t\t\tnew wp.media.controller.FeaturedImage(),\n\t\t\t\tnew wp.media.controller.EditImage( {\n\t\t\t\t\tmodel: this.options.editImage,\n\t\t\t\t} ),\n\t\t\t] );\n\t\t},\n\t} );\n};\n\n/**\n * Prepares the Gallery toolbars and frames.\n *\n * @return {wp.media.view.MediaFrame.Post} The default media workflow.\n */\nconst getGalleryDetailsMediaFrame = () => {\n\t/**\n\t * Custom gallery details frame.\n\t *\n\t * @see https://github.com/xwp/wp-core-media-widgets/blob/905edbccfc2a623b73a93dac803c5335519d7837/wp-admin/js/widgets/media-gallery-widget.js\n\t * @class GalleryDetailsMediaFrame\n\t * @class\n\t */\n\treturn wp.media.view.MediaFrame.Post.extend( {\n\t\t/**\n\t\t * Set up gallery toolbar.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tgalleryToolbar() {\n\t\t\tconst editing = this.state().get( 'editing' );\n\t\t\tthis.toolbar.set(\n\t\t\t\tnew wp.media.view.Toolbar( {\n\t\t\t\t\tcontroller: this,\n\t\t\t\t\titems: {\n\t\t\t\t\t\tinsert: {\n\t\t\t\t\t\t\tstyle: 'primary',\n\t\t\t\t\t\t\ttext: editing\n\t\t\t\t\t\t\t\t? wp.media.view.l10n.updateGallery\n\t\t\t\t\t\t\t\t: wp.media.view.l10n.insertGallery,\n\t\t\t\t\t\t\tpriority: 80,\n\t\t\t\t\t\t\trequires: { library: true },\n\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * @fires wp.media.controller.State#update\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tclick() {\n\t\t\t\t\t\t\t\tconst controller = this.controller,\n\t\t\t\t\t\t\t\t\tstate = controller.state();\n\n\t\t\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t\t\t\tstate.trigger(\n\t\t\t\t\t\t\t\t\t'update',\n\t\t\t\t\t\t\t\t\tstate.get( 'library' )\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t// Restore and reset the default state.\n\t\t\t\t\t\t\t\tcontroller.setState( controller.options.state );\n\t\t\t\t\t\t\t\tcontroller.reset();\n\t\t\t\t\t\t\t},\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\t/**\n\t\t * Handle the edit state requirements of selected media item.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\teditState() {\n\t\t\tconst selection = this.state( 'gallery' ).get( 'selection' );\n\t\t\tconst view = new wp.media.view.EditImage( {\n\t\t\t\tmodel: selection.single(),\n\t\t\t\tcontroller: this,\n\t\t\t} ).render();\n\n\t\t\t// Set the view to the EditImage frame using the selected image.\n\t\t\tthis.content.set( view );\n\n\t\t\t// After bringing in the frame, load the actual editor via an ajax call.\n\t\t\tview.loadEditor();\n\t\t},\n\n\t\t/**\n\t\t * Create the default states.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tcreateStates: function createStates() {\n\t\t\tthis.on( 'toolbar:create:main-gallery', this.galleryToolbar, this );\n\t\t\tthis.on( 'content:render:edit-image', this.editState, this );\n\n\t\t\tthis.states.add( [\n\t\t\t\tnew wp.media.controller.Library( {\n\t\t\t\t\tid: 'gallery',\n\t\t\t\t\ttitle: wp.media.view.l10n.createGalleryTitle,\n\t\t\t\t\tpriority: 40,\n\t\t\t\t\ttoolbar: 'main-gallery',\n\t\t\t\t\tfilterable: 'uploaded',\n\t\t\t\t\tmultiple: 'add',\n\t\t\t\t\teditable: false,\n\n\t\t\t\t\tlibrary: wp.media.query(\n\t\t\t\t\t\tdefaults(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tthis.options.library\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t} ),\n\t\t\t\tnew wp.media.controller.EditImage( {\n\t\t\t\t\tmodel: this.options.editImage,\n\t\t\t\t} ),\n\n\t\t\t\tnew wp.media.controller.GalleryEdit( {\n\t\t\t\t\tlibrary: this.options.selection,\n\t\t\t\t\tediting: this.options.editing,\n\t\t\t\t\tmenu: 'gallery',\n\t\t\t\t\tdisplaySettings: false,\n\t\t\t\t\tmultiple: true,\n\t\t\t\t} ),\n\n\t\t\t\tnew wp.media.controller.GalleryAdd(),\n\t\t\t] );\n\t\t},\n\t} );\n};\n\n// the media library image object contains numerous attributes\n// we only need this set to display the image in the library\nconst slimImageObject = ( img ) => {\n\tconst attrSet = [\n\t\t'sizes',\n\t\t'mime',\n\t\t'type',\n\t\t'subtype',\n\t\t'id',\n\t\t'url',\n\t\t'alt',\n\t\t'link',\n\t\t'caption',\n\t];\n\treturn pick( img, attrSet );\n};\n\nconst getAttachmentsCollection = ( ids ) => {\n\treturn wp.media.query( {\n\t\torder: 'ASC',\n\t\torderby: 'post__in',\n\t\tpost__in: ids,\n\t\tposts_per_page: -1,\n\t\tquery: true,\n\t\ttype: 'image',\n\t} );\n};\n\nclass MediaUpload extends Component {\n\tconstructor( {\n\t\tallowedTypes,\n\t\tgallery = false,\n\t\tunstableFeaturedImageFlow = false,\n\t\tmodalClass,\n\t\tmultiple = false,\n\t\ttitle = __( 'Select or Upload Media' ),\n\t} ) {\n\t\tsuper( ...arguments );\n\t\tthis.openModal = this.openModal.bind( this );\n\t\tthis.onOpen = this.onOpen.bind( this );\n\t\tthis.onSelect = this.onSelect.bind( this );\n\t\tthis.onUpdate = this.onUpdate.bind( this );\n\t\tthis.onClose = this.onClose.bind( this );\n\n\t\tif ( gallery ) {\n\t\t\tthis.buildAndSetGalleryFrame();\n\t\t} else {\n\t\t\tconst frameConfig = {\n\t\t\t\ttitle,\n\t\t\t\tmultiple,\n\t\t\t};\n\t\t\tif ( !! allowedTypes ) {\n\t\t\t\tframeConfig.library = { type: allowedTypes };\n\t\t\t}\n\n\t\t\tthis.frame = wp.media( frameConfig );\n\t\t}\n\n\t\tif ( modalClass ) {\n\t\t\tthis.frame.$el.addClass( modalClass );\n\t\t}\n\n\t\tif ( unstableFeaturedImageFlow ) {\n\t\t\tthis.buildAndSetFeatureImageFrame();\n\t\t}\n\t\tthis.initializeListeners();\n\t}\n\n\tinitializeListeners() {\n\t\t// When an image is selected in the media frame...\n\t\tthis.frame.on( 'select', this.onSelect );\n\t\tthis.frame.on( 'update', this.onUpdate );\n\t\tthis.frame.on( 'open', this.onOpen );\n\t\tthis.frame.on( 'close', this.onClose );\n\t}\n\n\t/**\n\t * Sets the Gallery frame and initializes listeners.\n\t *\n\t * @return {void}\n\t */\n\tbuildAndSetGalleryFrame() {\n\t\tconst {\n\t\t\taddToGallery = false,\n\t\t\tallowedTypes,\n\t\t\tmultiple = false,\n\t\t\tvalue = DEFAULT_EMPTY_GALLERY,\n\t\t} = this.props;\n\n\t\t// If the value did not changed there is no need to rebuild the frame,\n\t\t// we can continue to use the existing one.\n\t\tif ( value === this.lastGalleryValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.lastGalleryValue = value;\n\n\t\t// If a frame already existed remove it.\n\t\tif ( this.frame ) {\n\t\t\tthis.frame.remove();\n\t\t}\n\t\tlet currentState;\n\t\tif ( addToGallery ) {\n\t\t\tcurrentState = 'gallery-library';\n\t\t} else {\n\t\t\tcurrentState = value && value.length ? 'gallery-edit' : 'gallery';\n\t\t}\n\t\tif ( ! this.GalleryDetailsMediaFrame ) {\n\t\t\tthis.GalleryDetailsMediaFrame = getGalleryDetailsMediaFrame();\n\t\t}\n\t\tconst attachments = getAttachmentsCollection( value );\n\t\tconst selection = new wp.media.model.Selection( attachments.models, {\n\t\t\tprops: attachments.props.toJSON(),\n\t\t\tmultiple,\n\t\t} );\n\t\tthis.frame = new this.GalleryDetailsMediaFrame( {\n\t\t\tmimeType: allowedTypes,\n\t\t\tstate: currentState,\n\t\t\tmultiple,\n\t\t\tselection,\n\t\t\tediting: value && value.length ? true : false,\n\t\t} );\n\t\twp.media.frame = this.frame;\n\t\tthis.initializeListeners();\n\t}\n\n\t/**\n\t * Initializes the Media Library requirements for the featured image flow.\n\t *\n\t * @return {void}\n\t */\n\tbuildAndSetFeatureImageFrame() {\n\t\tconst featuredImageFrame = getFeaturedImageMediaFrame();\n\t\tconst attachments = getAttachmentsCollection( this.props.value );\n\t\tconst selection = new wp.media.model.Selection( attachments.models, {\n\t\t\tprops: attachments.props.toJSON(),\n\t\t} );\n\t\tthis.frame = new featuredImageFrame( {\n\t\t\tmimeType: this.props.allowedTypes,\n\t\t\tstate: 'featured-image',\n\t\t\tmultiple: this.props.multiple,\n\t\t\tselection,\n\t\t\tediting: this.props.value ? true : false,\n\t\t} );\n\t\twp.media.frame = this.frame;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.frame.remove();\n\t}\n\n\tonUpdate( selections ) {\n\t\tconst { onSelect, multiple = false } = this.props;\n\t\tconst state = this.frame.state();\n\t\tconst selectedImages = selections || state.get( 'selection' );\n\n\t\tif ( ! selectedImages || ! selectedImages.models.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( multiple ) {\n\t\t\tonSelect(\n\t\t\t\tselectedImages.models.map( ( model ) =>\n\t\t\t\t\tslimImageObject( model.toJSON() )\n\t\t\t\t)\n\t\t\t);\n\t\t} else {\n\t\t\tonSelect( slimImageObject( selectedImages.models[ 0 ].toJSON() ) );\n\t\t}\n\t}\n\n\tonSelect() {\n\t\tconst { onSelect, multiple = false } = this.props;\n\t\t// Get media attachment details from the frame state\n\t\tconst attachment = this.frame.state().get( 'selection' ).toJSON();\n\t\tonSelect( multiple ? attachment : attachment[ 0 ] );\n\t}\n\n\tonOpen() {\n\t\tthis.updateCollection();\n\n\t\t// Handle both this.props.value being either (number[]) multiple ids\n\t\t// (for galleries) or a (number) singular id (e.g. image block).\n\t\tconst hasMedia = Array.isArray( this.props.value )\n\t\t\t? !! this.props.value?.length\n\t\t\t: !! this.props.value;\n\n\t\tif ( ! hasMedia ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isGallery = this.props.gallery;\n\t\tconst selection = this.frame.state().get( 'selection' );\n\n\t\tif ( ! isGallery ) {\n\t\t\tcastArray( this.props.value ).forEach( ( id ) => {\n\t\t\t\tselection.add( wp.media.attachment( id ) );\n\t\t\t} );\n\t\t}\n\n\t\t// Load the images so they are available in the media modal.\n\t\tconst attachments = getAttachmentsCollection(\n\t\t\tcastArray( this.props.value )\n\t\t);\n\n\t\t// Once attachments are loaded, set the current selection.\n\t\tattachments.more().done( function () {\n\t\t\tif ( isGallery && attachments?.models?.length ) {\n\t\t\t\tselection.add( attachments.models );\n\t\t\t}\n\t\t} );\n\t}\n\n\tonClose() {\n\t\tconst { onClose } = this.props;\n\n\t\tif ( onClose ) {\n\t\t\tonClose();\n\t\t}\n\t}\n\n\tupdateCollection() {\n\t\tconst frameContent = this.frame.content.get();\n\t\tif ( frameContent && frameContent.collection ) {\n\t\t\tconst collection = frameContent.collection;\n\n\t\t\t// clean all attachments we have in memory.\n\t\t\tcollection\n\t\t\t\t.toArray()\n\t\t\t\t.forEach( ( model ) => model.trigger( 'destroy', model ) );\n\n\t\t\t// reset has more flag, if library had small amount of items all items may have been loaded before.\n\t\t\tcollection.mirroring._hasMore = true;\n\n\t\t\t// request items\n\t\t\tcollection.more();\n\t\t}\n\t}\n\n\topenModal() {\n\t\tif ( this.props.gallery ) {\n\t\t\tthis.buildAndSetGalleryFrame();\n\t\t}\n\t\tthis.frame.open();\n\t}\n\n\trender() {\n\t\treturn this.props.render( { open: this.openModal } );\n\t}\n}\n\nexport default MediaUpload;\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/media-utils/src/components/media-upload/index.js"],"names":["wp","window","DEFAULT_EMPTY_GALLERY","getFeaturedImageMediaFrame","media","view","MediaFrame","Select","extend","featuredImageToolbar","toolbar","createSelectToolbar","text","l10n","setFeaturedImage","state","options","editState","selection","get","EditImage","model","single","controller","render","content","set","loadEditor","createStates","on","states","add","FeaturedImage","editImage","getGalleryDetailsMediaFrame","Post","galleryToolbar","editing","Toolbar","items","insert","style","updateGallery","insertGallery","priority","requires","library","click","close","trigger","setState","reset","Library","id","title","createGalleryTitle","filterable","multiple","editable","query","type","GalleryEdit","menu","displaySettings","GalleryAdd","slimImageObject","img","attrSet","getAttachmentsCollection","ids","order","orderby","post__in","posts_per_page","MediaUpload","Component","constructor","allowedTypes","gallery","unstableFeaturedImageFlow","modalClass","arguments","openModal","bind","onOpen","onSelect","onUpdate","onClose","buildAndSetGalleryFrame","frameConfig","frame","$el","addClass","buildAndSetFeatureImageFrame","initializeListeners","addToGallery","value","props","lastGalleryValue","remove","currentState","length","GalleryDetailsMediaFrame","attachments","Selection","models","toJSON","mimeType","featuredImageFrame","componentWillUnmount","selections","selectedImages","map","attachment","updateCollection","hasMedia","Array","isArray","isGallery","forEach","more","done","frameContent","collection","toArray","mirroring","_hasMore","open"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray, defaults, pick } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\nconst { wp } = window;\n\nconst DEFAULT_EMPTY_GALLERY = [];\n\n/**\n * Prepares the Featured Image toolbars and frames.\n *\n * @return {wp.media.view.MediaFrame.Select} The default media workflow.\n */\nconst getFeaturedImageMediaFrame = () => {\n\treturn wp.media.view.MediaFrame.Select.extend( {\n\t\t/**\n\t\t * Enables the Set Featured Image Button.\n\t\t *\n\t\t * @param {Object} toolbar toolbar for featured image state\n\t\t * @return {void}\n\t\t */\n\t\tfeaturedImageToolbar( toolbar ) {\n\t\t\tthis.createSelectToolbar( toolbar, {\n\t\t\t\ttext: wp.media.view.l10n.setFeaturedImage,\n\t\t\t\tstate: this.options.state,\n\t\t\t} );\n\t\t},\n\n\t\t/**\n\t\t * Handle the edit state requirements of selected media item.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\teditState() {\n\t\t\tconst selection = this.state( 'featured-image' ).get( 'selection' );\n\t\t\tconst view = new wp.media.view.EditImage( {\n\t\t\t\tmodel: selection.single(),\n\t\t\t\tcontroller: this,\n\t\t\t} ).render();\n\n\t\t\t// Set the view to the EditImage frame using the selected image.\n\t\t\tthis.content.set( view );\n\n\t\t\t// After bringing in the frame, load the actual editor via an ajax call.\n\t\t\tview.loadEditor();\n\t\t},\n\n\t\t/**\n\t\t * Create the default states.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tcreateStates: function createStates() {\n\t\t\tthis.on(\n\t\t\t\t'toolbar:create:featured-image',\n\t\t\t\tthis.featuredImageToolbar,\n\t\t\t\tthis\n\t\t\t);\n\t\t\tthis.on( 'content:render:edit-image', this.editState, this );\n\n\t\t\tthis.states.add( [\n\t\t\t\tnew wp.media.controller.FeaturedImage(),\n\t\t\t\tnew wp.media.controller.EditImage( {\n\t\t\t\t\tmodel: this.options.editImage,\n\t\t\t\t} ),\n\t\t\t] );\n\t\t},\n\t} );\n};\n\n/**\n * Prepares the Gallery toolbars and frames.\n *\n * @return {wp.media.view.MediaFrame.Post} The default media workflow.\n */\nconst getGalleryDetailsMediaFrame = () => {\n\t/**\n\t * Custom gallery details frame.\n\t *\n\t * @see https://github.com/xwp/wp-core-media-widgets/blob/905edbccfc2a623b73a93dac803c5335519d7837/wp-admin/js/widgets/media-gallery-widget.js\n\t * @class GalleryDetailsMediaFrame\n\t * @class\n\t */\n\treturn wp.media.view.MediaFrame.Post.extend( {\n\t\t/**\n\t\t * Set up gallery toolbar.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tgalleryToolbar() {\n\t\t\tconst editing = this.state().get( 'editing' );\n\t\t\tthis.toolbar.set(\n\t\t\t\tnew wp.media.view.Toolbar( {\n\t\t\t\t\tcontroller: this,\n\t\t\t\t\titems: {\n\t\t\t\t\t\tinsert: {\n\t\t\t\t\t\t\tstyle: 'primary',\n\t\t\t\t\t\t\ttext: editing\n\t\t\t\t\t\t\t\t? wp.media.view.l10n.updateGallery\n\t\t\t\t\t\t\t\t: wp.media.view.l10n.insertGallery,\n\t\t\t\t\t\t\tpriority: 80,\n\t\t\t\t\t\t\trequires: { library: true },\n\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * @fires wp.media.controller.State#update\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tclick() {\n\t\t\t\t\t\t\t\tconst controller = this.controller,\n\t\t\t\t\t\t\t\t\tstate = controller.state();\n\n\t\t\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t\t\t\tstate.trigger(\n\t\t\t\t\t\t\t\t\t'update',\n\t\t\t\t\t\t\t\t\tstate.get( 'library' )\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t// Restore and reset the default state.\n\t\t\t\t\t\t\t\tcontroller.setState( controller.options.state );\n\t\t\t\t\t\t\t\tcontroller.reset();\n\t\t\t\t\t\t\t},\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\t/**\n\t\t * Handle the edit state requirements of selected media item.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\teditState() {\n\t\t\tconst selection = this.state( 'gallery' ).get( 'selection' );\n\t\t\tconst view = new wp.media.view.EditImage( {\n\t\t\t\tmodel: selection.single(),\n\t\t\t\tcontroller: this,\n\t\t\t} ).render();\n\n\t\t\t// Set the view to the EditImage frame using the selected image.\n\t\t\tthis.content.set( view );\n\n\t\t\t// After bringing in the frame, load the actual editor via an ajax call.\n\t\t\tview.loadEditor();\n\t\t},\n\n\t\t/**\n\t\t * Create the default states.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tcreateStates: function createStates() {\n\t\t\tthis.on( 'toolbar:create:main-gallery', this.galleryToolbar, this );\n\t\t\tthis.on( 'content:render:edit-image', this.editState, this );\n\n\t\t\tthis.states.add( [\n\t\t\t\tnew wp.media.controller.Library( {\n\t\t\t\t\tid: 'gallery',\n\t\t\t\t\ttitle: wp.media.view.l10n.createGalleryTitle,\n\t\t\t\t\tpriority: 40,\n\t\t\t\t\ttoolbar: 'main-gallery',\n\t\t\t\t\tfilterable: 'uploaded',\n\t\t\t\t\tmultiple: 'add',\n\t\t\t\t\teditable: false,\n\n\t\t\t\t\tlibrary: wp.media.query(\n\t\t\t\t\t\tdefaults(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tthis.options.library\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t} ),\n\t\t\t\tnew wp.media.controller.EditImage( {\n\t\t\t\t\tmodel: this.options.editImage,\n\t\t\t\t} ),\n\n\t\t\t\tnew wp.media.controller.GalleryEdit( {\n\t\t\t\t\tlibrary: this.options.selection,\n\t\t\t\t\tediting: this.options.editing,\n\t\t\t\t\tmenu: 'gallery',\n\t\t\t\t\tdisplaySettings: false,\n\t\t\t\t\tmultiple: true,\n\t\t\t\t} ),\n\n\t\t\t\tnew wp.media.controller.GalleryAdd(),\n\t\t\t] );\n\t\t},\n\t} );\n};\n\n// The media library image object contains numerous attributes\n// we only need this set to display the image in the library.\nconst slimImageObject = ( img ) => {\n\tconst attrSet = [\n\t\t'sizes',\n\t\t'mime',\n\t\t'type',\n\t\t'subtype',\n\t\t'id',\n\t\t'url',\n\t\t'alt',\n\t\t'link',\n\t\t'caption',\n\t];\n\treturn pick( img, attrSet );\n};\n\nconst getAttachmentsCollection = ( ids ) => {\n\treturn wp.media.query( {\n\t\torder: 'ASC',\n\t\torderby: 'post__in',\n\t\tpost__in: ids,\n\t\tposts_per_page: -1,\n\t\tquery: true,\n\t\ttype: 'image',\n\t} );\n};\n\nclass MediaUpload extends Component {\n\tconstructor( {\n\t\tallowedTypes,\n\t\tgallery = false,\n\t\tunstableFeaturedImageFlow = false,\n\t\tmodalClass,\n\t\tmultiple = false,\n\t\ttitle = __( 'Select or Upload Media' ),\n\t} ) {\n\t\tsuper( ...arguments );\n\t\tthis.openModal = this.openModal.bind( this );\n\t\tthis.onOpen = this.onOpen.bind( this );\n\t\tthis.onSelect = this.onSelect.bind( this );\n\t\tthis.onUpdate = this.onUpdate.bind( this );\n\t\tthis.onClose = this.onClose.bind( this );\n\n\t\tif ( gallery ) {\n\t\t\tthis.buildAndSetGalleryFrame();\n\t\t} else {\n\t\t\tconst frameConfig = {\n\t\t\t\ttitle,\n\t\t\t\tmultiple,\n\t\t\t};\n\t\t\tif ( !! allowedTypes ) {\n\t\t\t\tframeConfig.library = { type: allowedTypes };\n\t\t\t}\n\n\t\t\tthis.frame = wp.media( frameConfig );\n\t\t}\n\n\t\tif ( modalClass ) {\n\t\t\tthis.frame.$el.addClass( modalClass );\n\t\t}\n\n\t\tif ( unstableFeaturedImageFlow ) {\n\t\t\tthis.buildAndSetFeatureImageFrame();\n\t\t}\n\t\tthis.initializeListeners();\n\t}\n\n\tinitializeListeners() {\n\t\t// When an image is selected in the media frame...\n\t\tthis.frame.on( 'select', this.onSelect );\n\t\tthis.frame.on( 'update', this.onUpdate );\n\t\tthis.frame.on( 'open', this.onOpen );\n\t\tthis.frame.on( 'close', this.onClose );\n\t}\n\n\t/**\n\t * Sets the Gallery frame and initializes listeners.\n\t *\n\t * @return {void}\n\t */\n\tbuildAndSetGalleryFrame() {\n\t\tconst {\n\t\t\taddToGallery = false,\n\t\t\tallowedTypes,\n\t\t\tmultiple = false,\n\t\t\tvalue = DEFAULT_EMPTY_GALLERY,\n\t\t} = this.props;\n\n\t\t// If the value did not changed there is no need to rebuild the frame,\n\t\t// we can continue to use the existing one.\n\t\tif ( value === this.lastGalleryValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.lastGalleryValue = value;\n\n\t\t// If a frame already existed remove it.\n\t\tif ( this.frame ) {\n\t\t\tthis.frame.remove();\n\t\t}\n\t\tlet currentState;\n\t\tif ( addToGallery ) {\n\t\t\tcurrentState = 'gallery-library';\n\t\t} else {\n\t\t\tcurrentState = value && value.length ? 'gallery-edit' : 'gallery';\n\t\t}\n\t\tif ( ! this.GalleryDetailsMediaFrame ) {\n\t\t\tthis.GalleryDetailsMediaFrame = getGalleryDetailsMediaFrame();\n\t\t}\n\t\tconst attachments = getAttachmentsCollection( value );\n\t\tconst selection = new wp.media.model.Selection( attachments.models, {\n\t\t\tprops: attachments.props.toJSON(),\n\t\t\tmultiple,\n\t\t} );\n\t\tthis.frame = new this.GalleryDetailsMediaFrame( {\n\t\t\tmimeType: allowedTypes,\n\t\t\tstate: currentState,\n\t\t\tmultiple,\n\t\t\tselection,\n\t\t\tediting: value && value.length ? true : false,\n\t\t} );\n\t\twp.media.frame = this.frame;\n\t\tthis.initializeListeners();\n\t}\n\n\t/**\n\t * Initializes the Media Library requirements for the featured image flow.\n\t *\n\t * @return {void}\n\t */\n\tbuildAndSetFeatureImageFrame() {\n\t\tconst featuredImageFrame = getFeaturedImageMediaFrame();\n\t\tconst attachments = getAttachmentsCollection( this.props.value );\n\t\tconst selection = new wp.media.model.Selection( attachments.models, {\n\t\t\tprops: attachments.props.toJSON(),\n\t\t} );\n\t\tthis.frame = new featuredImageFrame( {\n\t\t\tmimeType: this.props.allowedTypes,\n\t\t\tstate: 'featured-image',\n\t\t\tmultiple: this.props.multiple,\n\t\t\tselection,\n\t\t\tediting: this.props.value ? true : false,\n\t\t} );\n\t\twp.media.frame = this.frame;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.frame.remove();\n\t}\n\n\tonUpdate( selections ) {\n\t\tconst { onSelect, multiple = false } = this.props;\n\t\tconst state = this.frame.state();\n\t\tconst selectedImages = selections || state.get( 'selection' );\n\n\t\tif ( ! selectedImages || ! selectedImages.models.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( multiple ) {\n\t\t\tonSelect(\n\t\t\t\tselectedImages.models.map( ( model ) =>\n\t\t\t\t\tslimImageObject( model.toJSON() )\n\t\t\t\t)\n\t\t\t);\n\t\t} else {\n\t\t\tonSelect( slimImageObject( selectedImages.models[ 0 ].toJSON() ) );\n\t\t}\n\t}\n\n\tonSelect() {\n\t\tconst { onSelect, multiple = false } = this.props;\n\t\t// Get media attachment details from the frame state.\n\t\tconst attachment = this.frame.state().get( 'selection' ).toJSON();\n\t\tonSelect( multiple ? attachment : attachment[ 0 ] );\n\t}\n\n\tonOpen() {\n\t\tthis.updateCollection();\n\n\t\t// Handle both this.props.value being either (number[]) multiple ids\n\t\t// (for galleries) or a (number) singular id (e.g. image block).\n\t\tconst hasMedia = Array.isArray( this.props.value )\n\t\t\t? !! this.props.value?.length\n\t\t\t: !! this.props.value;\n\n\t\tif ( ! hasMedia ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isGallery = this.props.gallery;\n\t\tconst selection = this.frame.state().get( 'selection' );\n\n\t\tif ( ! isGallery ) {\n\t\t\tcastArray( this.props.value ).forEach( ( id ) => {\n\t\t\t\tselection.add( wp.media.attachment( id ) );\n\t\t\t} );\n\t\t}\n\n\t\t// Load the images so they are available in the media modal.\n\t\tconst attachments = getAttachmentsCollection(\n\t\t\tcastArray( this.props.value )\n\t\t);\n\n\t\t// Once attachments are loaded, set the current selection.\n\t\tattachments.more().done( function () {\n\t\t\tif ( isGallery && attachments?.models?.length ) {\n\t\t\t\tselection.add( attachments.models );\n\t\t\t}\n\t\t} );\n\t}\n\n\tonClose() {\n\t\tconst { onClose } = this.props;\n\n\t\tif ( onClose ) {\n\t\t\tonClose();\n\t\t}\n\t}\n\n\tupdateCollection() {\n\t\tconst frameContent = this.frame.content.get();\n\t\tif ( frameContent && frameContent.collection ) {\n\t\t\tconst collection = frameContent.collection;\n\n\t\t\t// Clean all attachments we have in memory.\n\t\t\tcollection\n\t\t\t\t.toArray()\n\t\t\t\t.forEach( ( model ) => model.trigger( 'destroy', model ) );\n\n\t\t\t// Reset has more flag, if library had small amount of items all items may have been loaded before.\n\t\t\tcollection.mirroring._hasMore = true;\n\n\t\t\t// Request items.\n\t\t\tcollection.more();\n\t\t}\n\t}\n\n\topenModal() {\n\t\tif ( this.props.gallery ) {\n\t\t\tthis.buildAndSetGalleryFrame();\n\t\t}\n\t\tthis.frame.open();\n\t}\n\n\trender() {\n\t\treturn this.props.render( { open: this.openModal } );\n\t}\n}\n\nexport default MediaUpload;\n"]}
|
|
@@ -77,7 +77,7 @@ async function uploadMedia(_ref) {
|
|
|
77
77
|
onFileChange,
|
|
78
78
|
wpAllowedMimeTypes = null
|
|
79
79
|
} = _ref;
|
|
80
|
-
// Cast filesList to array
|
|
80
|
+
// Cast filesList to array.
|
|
81
81
|
const files = [...filesList];
|
|
82
82
|
const filesSet = [];
|
|
83
83
|
|
|
@@ -85,7 +85,7 @@ async function uploadMedia(_ref) {
|
|
|
85
85
|
(0, _blob.revokeBlobURL)((0, _lodash.get)(filesSet, [idx, 'url']));
|
|
86
86
|
filesSet[idx] = value;
|
|
87
87
|
onFileChange((0, _lodash.compact)(filesSet));
|
|
88
|
-
}; // Allowed type specified by consumer
|
|
88
|
+
}; // Allowed type specified by consumer.
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
const isAllowedType = fileType => {
|
|
@@ -102,14 +102,14 @@ async function uploadMedia(_ref) {
|
|
|
102
102
|
|
|
103
103
|
return (0, _lodash.startsWith)(fileType, `${allowedType}/`);
|
|
104
104
|
});
|
|
105
|
-
}; // Allowed types for the current WP_User
|
|
105
|
+
}; // Allowed types for the current WP_User.
|
|
106
106
|
|
|
107
107
|
|
|
108
108
|
const allowedMimeTypesForUser = getMimeTypesArray(wpAllowedMimeTypes);
|
|
109
109
|
|
|
110
110
|
const isAllowedMimeTypeForUser = fileType => {
|
|
111
111
|
return (0, _lodash.includes)(allowedMimeTypesForUser, fileType);
|
|
112
|
-
}; // Build the error message including the filename
|
|
112
|
+
}; // Build the error message including the filename.
|
|
113
113
|
|
|
114
114
|
|
|
115
115
|
const triggerError = error => {
|
|
@@ -142,7 +142,7 @@ async function uploadMedia(_ref) {
|
|
|
142
142
|
file: mediaFile
|
|
143
143
|
});
|
|
144
144
|
continue;
|
|
145
|
-
} //
|
|
145
|
+
} // Verify if file is greater than the maximum file upload size allowed for the site.
|
|
146
146
|
|
|
147
147
|
|
|
148
148
|
if (maxUploadFileSize && mediaFile.size > maxUploadFileSize) {
|
|
@@ -165,7 +165,7 @@ async function uploadMedia(_ref) {
|
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
validFiles.push(mediaFile); // Set temporary URL to create placeholder media file, this is replaced
|
|
168
|
-
// with final file from media gallery when upload is `done` below
|
|
168
|
+
// with final file from media gallery when upload is `done` below.
|
|
169
169
|
|
|
170
170
|
filesSet.push({
|
|
171
171
|
url: (0, _blob.createBlobURL)(mediaFile)
|
|
@@ -214,7 +214,7 @@ async function uploadMedia(_ref) {
|
|
|
214
214
|
|
|
215
215
|
|
|
216
216
|
function createMediaFromFile(file, additionalData) {
|
|
217
|
-
// Create upload payload
|
|
217
|
+
// Create upload payload.
|
|
218
218
|
const data = new window.FormData();
|
|
219
219
|
data.append('file', file, file.name || file.type.replace('/', '.'));
|
|
220
220
|
(0, _lodash.forEach)(additionalData, (value, key) => data.append(key, value));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/media-utils/src/utils/upload-media.js"],"names":["getMimeTypesArray","wpMimeTypesObject","mime","extensionsString","type","split","extensions","extension","uploadMedia","allowedTypes","additionalData","filesList","maxUploadFileSize","onError","noop","onFileChange","wpAllowedMimeTypes","files","filesSet","setAndUpdateFiles","idx","value","isAllowedType","fileType","allowedType","allowedMimeTypesForUser","isAllowedMimeTypeForUser","triggerError","error","message","file","name","validFiles","mediaFile","code","size","push","url","length","savedMedia","createMediaFromFile","mediaObject","alt","alt_text","caption","title","raw","source_url","data","window","FormData","append","replace","key","path","body","method"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tcompact,\n\tflatMap,\n\tforEach,\n\tget,\n\thas,\n\tincludes,\n\tmap,\n\tnoop,\n\tomit,\n\tsome,\n\tstartsWith,\n} from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { createBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Browsers may use unexpected mime types, and they differ from browser to browser.\n * This function computes a flexible array of mime types from the mime type structured provided by the server.\n * Converts { jpg|jpeg|jpe: \"image/jpeg\" } into [ \"image/jpeg\", \"image/jpg\", \"image/jpeg\", \"image/jpe\" ]\n * The computation of this array instead of directly using the object,\n * solves the problem in chrome where mp3 files have audio/mp3 as mime type instead of audio/mpeg.\n * https://bugs.chromium.org/p/chromium/issues/detail?id=227004\n *\n * @param {?Object} wpMimeTypesObject Mime type object received from the server.\n * Extensions are keys separated by '|' and values are mime types associated with an extension.\n *\n * @return {?Array} An array of mime types or the parameter passed if it was \"falsy\".\n */\nexport function getMimeTypesArray( wpMimeTypesObject ) {\n\tif ( ! wpMimeTypesObject ) {\n\t\treturn wpMimeTypesObject;\n\t}\n\treturn flatMap( wpMimeTypesObject, ( mime, extensionsString ) => {\n\t\tconst [ type ] = mime.split( '/' );\n\t\tconst extensions = extensionsString.split( '|' );\n\t\treturn [\n\t\t\tmime,\n\t\t\t...map( extensions, ( extension ) => `${ type }/${ extension }` ),\n\t\t];\n\t} );\n}\n\n/**\n *\tMedia Upload is used by audio, image, gallery, video, and file blocks to\n *\thandle uploading a media file when a file upload button is activated.\n *\n *\tTODO: future enhancement to add an upload indicator.\n *\n * @param {Object} $0 Parameters object passed to the function.\n * @param {?Array} $0.allowedTypes Array with the types of media that can be uploaded, if unset all types are allowed.\n * @param {?Object} $0.additionalData Additional data to include in the request.\n * @param {Array} $0.filesList List of files.\n * @param {?number} $0.maxUploadFileSize Maximum upload size in bytes allowed for the site.\n * @param {Function} $0.onError Function called when an error happens.\n * @param {Function} $0.onFileChange Function called each time a file or a temporary representation of the file is available.\n * @param {?Object} $0.wpAllowedMimeTypes List of allowed mime types and file extensions.\n */\nexport async function uploadMedia( {\n\tallowedTypes,\n\tadditionalData = {},\n\tfilesList,\n\tmaxUploadFileSize,\n\tonError = noop,\n\tonFileChange,\n\twpAllowedMimeTypes = null,\n} ) {\n\t// Cast filesList to array\n\tconst files = [ ...filesList ];\n\n\tconst filesSet = [];\n\tconst setAndUpdateFiles = ( idx, value ) => {\n\t\trevokeBlobURL( get( filesSet, [ idx, 'url' ] ) );\n\t\tfilesSet[ idx ] = value;\n\t\tonFileChange( compact( filesSet ) );\n\t};\n\n\t// Allowed type specified by consumer\n\tconst isAllowedType = ( fileType ) => {\n\t\tif ( ! allowedTypes ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn some( allowedTypes, ( allowedType ) => {\n\t\t\t// If a complete mimetype is specified verify if it matches exactly the mime type of the file.\n\t\t\tif ( includes( allowedType, '/' ) ) {\n\t\t\t\treturn allowedType === fileType;\n\t\t\t}\n\t\t\t// Otherwise a general mime type is used and we should verify if the file mimetype starts with it.\n\t\t\treturn startsWith( fileType, `${ allowedType }/` );\n\t\t} );\n\t};\n\n\t// Allowed types for the current WP_User\n\tconst allowedMimeTypesForUser = getMimeTypesArray( wpAllowedMimeTypes );\n\tconst isAllowedMimeTypeForUser = ( fileType ) => {\n\t\treturn includes( allowedMimeTypesForUser, fileType );\n\t};\n\n\t// Build the error message including the filename\n\tconst triggerError = ( error ) => {\n\t\terror.message = [\n\t\t\t<strong key=\"filename\">{ error.file.name }</strong>,\n\t\t\t': ',\n\t\t\terror.message,\n\t\t];\n\n\t\tonError( error );\n\t};\n\n\tconst validFiles = [];\n\n\tfor ( const mediaFile of files ) {\n\t\t// Verify if user is allowed to upload this mime type.\n\t\t// Defer to the server when type not detected.\n\t\tif (\n\t\t\tallowedMimeTypesForUser &&\n\t\t\tmediaFile.type &&\n\t\t\t! isAllowedMimeTypeForUser( mediaFile.type )\n\t\t) {\n\t\t\ttriggerError( {\n\t\t\t\tcode: 'MIME_TYPE_NOT_ALLOWED_FOR_USER',\n\t\t\t\tmessage: __(\n\t\t\t\t\t'Sorry, you are not allowed to upload this file type.'\n\t\t\t\t),\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Check if the block supports this mime type.\n\t\t// Defer to the server when type not detected.\n\t\tif ( mediaFile.type && ! isAllowedType( mediaFile.type ) ) {\n\t\t\ttriggerError( {\n\t\t\t\tcode: 'MIME_TYPE_NOT_SUPPORTED',\n\t\t\t\tmessage: __( 'Sorry, this file type is not supported here.' ),\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// verify if file is greater than the maximum file upload size allowed for the site.\n\t\tif ( maxUploadFileSize && mediaFile.size > maxUploadFileSize ) {\n\t\t\ttriggerError( {\n\t\t\t\tcode: 'SIZE_ABOVE_LIMIT',\n\t\t\t\tmessage: __(\n\t\t\t\t\t'This file exceeds the maximum upload size for this site.'\n\t\t\t\t),\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Don't allow empty files to be uploaded.\n\t\tif ( mediaFile.size <= 0 ) {\n\t\t\ttriggerError( {\n\t\t\t\tcode: 'EMPTY_FILE',\n\t\t\t\tmessage: __( 'This file is empty.' ),\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t\tcontinue;\n\t\t}\n\n\t\tvalidFiles.push( mediaFile );\n\n\t\t// Set temporary URL to create placeholder media file, this is replaced\n\t\t// with final file from media gallery when upload is `done` below\n\t\tfilesSet.push( { url: createBlobURL( mediaFile ) } );\n\t\tonFileChange( filesSet );\n\t}\n\n\tfor ( let idx = 0; idx < validFiles.length; ++idx ) {\n\t\tconst mediaFile = validFiles[ idx ];\n\t\ttry {\n\t\t\tconst savedMedia = await createMediaFromFile(\n\t\t\t\tmediaFile,\n\t\t\t\tadditionalData\n\t\t\t);\n\t\t\tconst mediaObject = {\n\t\t\t\t...omit( savedMedia, [ 'alt_text', 'source_url' ] ),\n\t\t\t\talt: savedMedia.alt_text,\n\t\t\t\tcaption: get( savedMedia, [ 'caption', 'raw' ], '' ),\n\t\t\t\ttitle: savedMedia.title.raw,\n\t\t\t\turl: savedMedia.source_url,\n\t\t\t};\n\t\t\tsetAndUpdateFiles( idx, mediaObject );\n\t\t} catch ( error ) {\n\t\t\t// Reset to empty on failure.\n\t\t\tsetAndUpdateFiles( idx, null );\n\t\t\tlet message;\n\t\t\tif ( has( error, [ 'message' ] ) ) {\n\t\t\t\tmessage = get( error, [ 'message' ] );\n\t\t\t} else {\n\t\t\t\tmessage = sprintf(\n\t\t\t\t\t// translators: %s: file name\n\t\t\t\t\t__( 'Error while uploading file %s to the media library.' ),\n\t\t\t\t\tmediaFile.name\n\t\t\t\t);\n\t\t\t}\n\t\t\tonError( {\n\t\t\t\tcode: 'GENERAL',\n\t\t\t\tmessage,\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t}\n\t}\n}\n\n/**\n * @param {File} file Media File to Save.\n * @param {?Object} additionalData Additional data to include in the request.\n *\n * @return {Promise} Media Object Promise.\n */\nfunction createMediaFromFile( file, additionalData ) {\n\t// Create upload payload\n\tconst data = new window.FormData();\n\tdata.append( 'file', file, file.name || file.type.replace( '/', '.' ) );\n\tforEach( additionalData, ( value, key ) => data.append( key, value ) );\n\treturn apiFetch( {\n\t\tpath: '/wp/v2/media',\n\t\tbody: data,\n\t\tmethod: 'POST',\n\t} );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/media-utils/src/utils/upload-media.js"],"names":["getMimeTypesArray","wpMimeTypesObject","mime","extensionsString","type","split","extensions","extension","uploadMedia","allowedTypes","additionalData","filesList","maxUploadFileSize","onError","noop","onFileChange","wpAllowedMimeTypes","files","filesSet","setAndUpdateFiles","idx","value","isAllowedType","fileType","allowedType","allowedMimeTypesForUser","isAllowedMimeTypeForUser","triggerError","error","message","file","name","validFiles","mediaFile","code","size","push","url","length","savedMedia","createMediaFromFile","mediaObject","alt","alt_text","caption","title","raw","source_url","data","window","FormData","append","replace","key","path","body","method"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tcompact,\n\tflatMap,\n\tforEach,\n\tget,\n\thas,\n\tincludes,\n\tmap,\n\tnoop,\n\tomit,\n\tsome,\n\tstartsWith,\n} from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { createBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Browsers may use unexpected mime types, and they differ from browser to browser.\n * This function computes a flexible array of mime types from the mime type structured provided by the server.\n * Converts { jpg|jpeg|jpe: \"image/jpeg\" } into [ \"image/jpeg\", \"image/jpg\", \"image/jpeg\", \"image/jpe\" ]\n * The computation of this array instead of directly using the object,\n * solves the problem in chrome where mp3 files have audio/mp3 as mime type instead of audio/mpeg.\n * https://bugs.chromium.org/p/chromium/issues/detail?id=227004\n *\n * @param {?Object} wpMimeTypesObject Mime type object received from the server.\n * Extensions are keys separated by '|' and values are mime types associated with an extension.\n *\n * @return {?Array} An array of mime types or the parameter passed if it was \"falsy\".\n */\nexport function getMimeTypesArray( wpMimeTypesObject ) {\n\tif ( ! wpMimeTypesObject ) {\n\t\treturn wpMimeTypesObject;\n\t}\n\treturn flatMap( wpMimeTypesObject, ( mime, extensionsString ) => {\n\t\tconst [ type ] = mime.split( '/' );\n\t\tconst extensions = extensionsString.split( '|' );\n\t\treturn [\n\t\t\tmime,\n\t\t\t...map( extensions, ( extension ) => `${ type }/${ extension }` ),\n\t\t];\n\t} );\n}\n\n/**\n *\tMedia Upload is used by audio, image, gallery, video, and file blocks to\n *\thandle uploading a media file when a file upload button is activated.\n *\n *\tTODO: future enhancement to add an upload indicator.\n *\n * @param {Object} $0 Parameters object passed to the function.\n * @param {?Array} $0.allowedTypes Array with the types of media that can be uploaded, if unset all types are allowed.\n * @param {?Object} $0.additionalData Additional data to include in the request.\n * @param {Array} $0.filesList List of files.\n * @param {?number} $0.maxUploadFileSize Maximum upload size in bytes allowed for the site.\n * @param {Function} $0.onError Function called when an error happens.\n * @param {Function} $0.onFileChange Function called each time a file or a temporary representation of the file is available.\n * @param {?Object} $0.wpAllowedMimeTypes List of allowed mime types and file extensions.\n */\nexport async function uploadMedia( {\n\tallowedTypes,\n\tadditionalData = {},\n\tfilesList,\n\tmaxUploadFileSize,\n\tonError = noop,\n\tonFileChange,\n\twpAllowedMimeTypes = null,\n} ) {\n\t// Cast filesList to array.\n\tconst files = [ ...filesList ];\n\n\tconst filesSet = [];\n\tconst setAndUpdateFiles = ( idx, value ) => {\n\t\trevokeBlobURL( get( filesSet, [ idx, 'url' ] ) );\n\t\tfilesSet[ idx ] = value;\n\t\tonFileChange( compact( filesSet ) );\n\t};\n\n\t// Allowed type specified by consumer.\n\tconst isAllowedType = ( fileType ) => {\n\t\tif ( ! allowedTypes ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn some( allowedTypes, ( allowedType ) => {\n\t\t\t// If a complete mimetype is specified verify if it matches exactly the mime type of the file.\n\t\t\tif ( includes( allowedType, '/' ) ) {\n\t\t\t\treturn allowedType === fileType;\n\t\t\t}\n\t\t\t// Otherwise a general mime type is used and we should verify if the file mimetype starts with it.\n\t\t\treturn startsWith( fileType, `${ allowedType }/` );\n\t\t} );\n\t};\n\n\t// Allowed types for the current WP_User.\n\tconst allowedMimeTypesForUser = getMimeTypesArray( wpAllowedMimeTypes );\n\tconst isAllowedMimeTypeForUser = ( fileType ) => {\n\t\treturn includes( allowedMimeTypesForUser, fileType );\n\t};\n\n\t// Build the error message including the filename.\n\tconst triggerError = ( error ) => {\n\t\terror.message = [\n\t\t\t<strong key=\"filename\">{ error.file.name }</strong>,\n\t\t\t': ',\n\t\t\terror.message,\n\t\t];\n\n\t\tonError( error );\n\t};\n\n\tconst validFiles = [];\n\n\tfor ( const mediaFile of files ) {\n\t\t// Verify if user is allowed to upload this mime type.\n\t\t// Defer to the server when type not detected.\n\t\tif (\n\t\t\tallowedMimeTypesForUser &&\n\t\t\tmediaFile.type &&\n\t\t\t! isAllowedMimeTypeForUser( mediaFile.type )\n\t\t) {\n\t\t\ttriggerError( {\n\t\t\t\tcode: 'MIME_TYPE_NOT_ALLOWED_FOR_USER',\n\t\t\t\tmessage: __(\n\t\t\t\t\t'Sorry, you are not allowed to upload this file type.'\n\t\t\t\t),\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Check if the block supports this mime type.\n\t\t// Defer to the server when type not detected.\n\t\tif ( mediaFile.type && ! isAllowedType( mediaFile.type ) ) {\n\t\t\ttriggerError( {\n\t\t\t\tcode: 'MIME_TYPE_NOT_SUPPORTED',\n\t\t\t\tmessage: __( 'Sorry, this file type is not supported here.' ),\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Verify if file is greater than the maximum file upload size allowed for the site.\n\t\tif ( maxUploadFileSize && mediaFile.size > maxUploadFileSize ) {\n\t\t\ttriggerError( {\n\t\t\t\tcode: 'SIZE_ABOVE_LIMIT',\n\t\t\t\tmessage: __(\n\t\t\t\t\t'This file exceeds the maximum upload size for this site.'\n\t\t\t\t),\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Don't allow empty files to be uploaded.\n\t\tif ( mediaFile.size <= 0 ) {\n\t\t\ttriggerError( {\n\t\t\t\tcode: 'EMPTY_FILE',\n\t\t\t\tmessage: __( 'This file is empty.' ),\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t\tcontinue;\n\t\t}\n\n\t\tvalidFiles.push( mediaFile );\n\n\t\t// Set temporary URL to create placeholder media file, this is replaced\n\t\t// with final file from media gallery when upload is `done` below.\n\t\tfilesSet.push( { url: createBlobURL( mediaFile ) } );\n\t\tonFileChange( filesSet );\n\t}\n\n\tfor ( let idx = 0; idx < validFiles.length; ++idx ) {\n\t\tconst mediaFile = validFiles[ idx ];\n\t\ttry {\n\t\t\tconst savedMedia = await createMediaFromFile(\n\t\t\t\tmediaFile,\n\t\t\t\tadditionalData\n\t\t\t);\n\t\t\tconst mediaObject = {\n\t\t\t\t...omit( savedMedia, [ 'alt_text', 'source_url' ] ),\n\t\t\t\talt: savedMedia.alt_text,\n\t\t\t\tcaption: get( savedMedia, [ 'caption', 'raw' ], '' ),\n\t\t\t\ttitle: savedMedia.title.raw,\n\t\t\t\turl: savedMedia.source_url,\n\t\t\t};\n\t\t\tsetAndUpdateFiles( idx, mediaObject );\n\t\t} catch ( error ) {\n\t\t\t// Reset to empty on failure.\n\t\t\tsetAndUpdateFiles( idx, null );\n\t\t\tlet message;\n\t\t\tif ( has( error, [ 'message' ] ) ) {\n\t\t\t\tmessage = get( error, [ 'message' ] );\n\t\t\t} else {\n\t\t\t\tmessage = sprintf(\n\t\t\t\t\t// translators: %s: file name\n\t\t\t\t\t__( 'Error while uploading file %s to the media library.' ),\n\t\t\t\t\tmediaFile.name\n\t\t\t\t);\n\t\t\t}\n\t\t\tonError( {\n\t\t\t\tcode: 'GENERAL',\n\t\t\t\tmessage,\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t}\n\t}\n}\n\n/**\n * @param {File} file Media File to Save.\n * @param {?Object} additionalData Additional data to include in the request.\n *\n * @return {Promise} Media Object Promise.\n */\nfunction createMediaFromFile( file, additionalData ) {\n\t// Create upload payload.\n\tconst data = new window.FormData();\n\tdata.append( 'file', file, file.name || file.type.replace( '/', '.' ) );\n\tforEach( additionalData, ( value, key ) => data.append( key, value ) );\n\treturn apiFetch( {\n\t\tpath: '/wp/v2/media',\n\t\tbody: data,\n\t\tmethod: 'POST',\n\t} );\n}\n"]}
|
|
@@ -163,8 +163,8 @@ const getGalleryDetailsMediaFrame = () => {
|
|
|
163
163
|
}), new wp.media.controller.GalleryAdd()]);
|
|
164
164
|
}
|
|
165
165
|
});
|
|
166
|
-
}; //
|
|
167
|
-
// we only need this set to display the image in the library
|
|
166
|
+
}; // The media library image object contains numerous attributes
|
|
167
|
+
// we only need this set to display the image in the library.
|
|
168
168
|
|
|
169
169
|
|
|
170
170
|
const slimImageObject = img => {
|
|
@@ -338,7 +338,7 @@ class MediaUpload extends Component {
|
|
|
338
338
|
const {
|
|
339
339
|
onSelect,
|
|
340
340
|
multiple = false
|
|
341
|
-
} = this.props; // Get media attachment details from the frame state
|
|
341
|
+
} = this.props; // Get media attachment details from the frame state.
|
|
342
342
|
|
|
343
343
|
const attachment = this.frame.state().get('selection').toJSON();
|
|
344
344
|
onSelect(multiple ? attachment : attachment[0]);
|
|
@@ -391,11 +391,11 @@ class MediaUpload extends Component {
|
|
|
391
391
|
const frameContent = this.frame.content.get();
|
|
392
392
|
|
|
393
393
|
if (frameContent && frameContent.collection) {
|
|
394
|
-
const collection = frameContent.collection; //
|
|
394
|
+
const collection = frameContent.collection; // Clean all attachments we have in memory.
|
|
395
395
|
|
|
396
|
-
collection.toArray().forEach(model => model.trigger('destroy', model)); //
|
|
396
|
+
collection.toArray().forEach(model => model.trigger('destroy', model)); // Reset has more flag, if library had small amount of items all items may have been loaded before.
|
|
397
397
|
|
|
398
|
-
collection.mirroring._hasMore = true; //
|
|
398
|
+
collection.mirroring._hasMore = true; // Request items.
|
|
399
399
|
|
|
400
400
|
collection.more();
|
|
401
401
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/media-utils/src/components/media-upload/index.js"],"names":["castArray","defaults","pick","Component","__","wp","window","DEFAULT_EMPTY_GALLERY","getFeaturedImageMediaFrame","media","view","MediaFrame","Select","extend","featuredImageToolbar","toolbar","createSelectToolbar","text","l10n","setFeaturedImage","state","options","editState","selection","get","EditImage","model","single","controller","render","content","set","loadEditor","createStates","on","states","add","FeaturedImage","editImage","getGalleryDetailsMediaFrame","Post","galleryToolbar","editing","Toolbar","items","insert","style","updateGallery","insertGallery","priority","requires","library","click","close","trigger","setState","reset","Library","id","title","createGalleryTitle","filterable","multiple","editable","query","type","GalleryEdit","menu","displaySettings","GalleryAdd","slimImageObject","img","attrSet","getAttachmentsCollection","ids","order","orderby","post__in","posts_per_page","MediaUpload","constructor","allowedTypes","gallery","unstableFeaturedImageFlow","modalClass","arguments","openModal","bind","onOpen","onSelect","onUpdate","onClose","buildAndSetGalleryFrame","frameConfig","frame","$el","addClass","buildAndSetFeatureImageFrame","initializeListeners","addToGallery","value","props","lastGalleryValue","remove","currentState","length","GalleryDetailsMediaFrame","attachments","Selection","models","toJSON","mimeType","featuredImageFrame","componentWillUnmount","selections","selectedImages","map","attachment","updateCollection","hasMedia","Array","isArray","isGallery","forEach","more","done","frameContent","collection","toArray","mirroring","_hasMore","open"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray, defaults, pick } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\nconst { wp } = window;\n\nconst DEFAULT_EMPTY_GALLERY = [];\n\n/**\n * Prepares the Featured Image toolbars and frames.\n *\n * @return {wp.media.view.MediaFrame.Select} The default media workflow.\n */\nconst getFeaturedImageMediaFrame = () => {\n\treturn wp.media.view.MediaFrame.Select.extend( {\n\t\t/**\n\t\t * Enables the Set Featured Image Button.\n\t\t *\n\t\t * @param {Object} toolbar toolbar for featured image state\n\t\t * @return {void}\n\t\t */\n\t\tfeaturedImageToolbar( toolbar ) {\n\t\t\tthis.createSelectToolbar( toolbar, {\n\t\t\t\ttext: wp.media.view.l10n.setFeaturedImage,\n\t\t\t\tstate: this.options.state,\n\t\t\t} );\n\t\t},\n\n\t\t/**\n\t\t * Handle the edit state requirements of selected media item.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\teditState() {\n\t\t\tconst selection = this.state( 'featured-image' ).get( 'selection' );\n\t\t\tconst view = new wp.media.view.EditImage( {\n\t\t\t\tmodel: selection.single(),\n\t\t\t\tcontroller: this,\n\t\t\t} ).render();\n\n\t\t\t// Set the view to the EditImage frame using the selected image.\n\t\t\tthis.content.set( view );\n\n\t\t\t// After bringing in the frame, load the actual editor via an ajax call.\n\t\t\tview.loadEditor();\n\t\t},\n\n\t\t/**\n\t\t * Create the default states.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tcreateStates: function createStates() {\n\t\t\tthis.on(\n\t\t\t\t'toolbar:create:featured-image',\n\t\t\t\tthis.featuredImageToolbar,\n\t\t\t\tthis\n\t\t\t);\n\t\t\tthis.on( 'content:render:edit-image', this.editState, this );\n\n\t\t\tthis.states.add( [\n\t\t\t\tnew wp.media.controller.FeaturedImage(),\n\t\t\t\tnew wp.media.controller.EditImage( {\n\t\t\t\t\tmodel: this.options.editImage,\n\t\t\t\t} ),\n\t\t\t] );\n\t\t},\n\t} );\n};\n\n/**\n * Prepares the Gallery toolbars and frames.\n *\n * @return {wp.media.view.MediaFrame.Post} The default media workflow.\n */\nconst getGalleryDetailsMediaFrame = () => {\n\t/**\n\t * Custom gallery details frame.\n\t *\n\t * @see https://github.com/xwp/wp-core-media-widgets/blob/905edbccfc2a623b73a93dac803c5335519d7837/wp-admin/js/widgets/media-gallery-widget.js\n\t * @class GalleryDetailsMediaFrame\n\t * @class\n\t */\n\treturn wp.media.view.MediaFrame.Post.extend( {\n\t\t/**\n\t\t * Set up gallery toolbar.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tgalleryToolbar() {\n\t\t\tconst editing = this.state().get( 'editing' );\n\t\t\tthis.toolbar.set(\n\t\t\t\tnew wp.media.view.Toolbar( {\n\t\t\t\t\tcontroller: this,\n\t\t\t\t\titems: {\n\t\t\t\t\t\tinsert: {\n\t\t\t\t\t\t\tstyle: 'primary',\n\t\t\t\t\t\t\ttext: editing\n\t\t\t\t\t\t\t\t? wp.media.view.l10n.updateGallery\n\t\t\t\t\t\t\t\t: wp.media.view.l10n.insertGallery,\n\t\t\t\t\t\t\tpriority: 80,\n\t\t\t\t\t\t\trequires: { library: true },\n\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * @fires wp.media.controller.State#update\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tclick() {\n\t\t\t\t\t\t\t\tconst controller = this.controller,\n\t\t\t\t\t\t\t\t\tstate = controller.state();\n\n\t\t\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t\t\t\tstate.trigger(\n\t\t\t\t\t\t\t\t\t'update',\n\t\t\t\t\t\t\t\t\tstate.get( 'library' )\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t// Restore and reset the default state.\n\t\t\t\t\t\t\t\tcontroller.setState( controller.options.state );\n\t\t\t\t\t\t\t\tcontroller.reset();\n\t\t\t\t\t\t\t},\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\t/**\n\t\t * Handle the edit state requirements of selected media item.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\teditState() {\n\t\t\tconst selection = this.state( 'gallery' ).get( 'selection' );\n\t\t\tconst view = new wp.media.view.EditImage( {\n\t\t\t\tmodel: selection.single(),\n\t\t\t\tcontroller: this,\n\t\t\t} ).render();\n\n\t\t\t// Set the view to the EditImage frame using the selected image.\n\t\t\tthis.content.set( view );\n\n\t\t\t// After bringing in the frame, load the actual editor via an ajax call.\n\t\t\tview.loadEditor();\n\t\t},\n\n\t\t/**\n\t\t * Create the default states.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tcreateStates: function createStates() {\n\t\t\tthis.on( 'toolbar:create:main-gallery', this.galleryToolbar, this );\n\t\t\tthis.on( 'content:render:edit-image', this.editState, this );\n\n\t\t\tthis.states.add( [\n\t\t\t\tnew wp.media.controller.Library( {\n\t\t\t\t\tid: 'gallery',\n\t\t\t\t\ttitle: wp.media.view.l10n.createGalleryTitle,\n\t\t\t\t\tpriority: 40,\n\t\t\t\t\ttoolbar: 'main-gallery',\n\t\t\t\t\tfilterable: 'uploaded',\n\t\t\t\t\tmultiple: 'add',\n\t\t\t\t\teditable: false,\n\n\t\t\t\t\tlibrary: wp.media.query(\n\t\t\t\t\t\tdefaults(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tthis.options.library\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t} ),\n\t\t\t\tnew wp.media.controller.EditImage( {\n\t\t\t\t\tmodel: this.options.editImage,\n\t\t\t\t} ),\n\n\t\t\t\tnew wp.media.controller.GalleryEdit( {\n\t\t\t\t\tlibrary: this.options.selection,\n\t\t\t\t\tediting: this.options.editing,\n\t\t\t\t\tmenu: 'gallery',\n\t\t\t\t\tdisplaySettings: false,\n\t\t\t\t\tmultiple: true,\n\t\t\t\t} ),\n\n\t\t\t\tnew wp.media.controller.GalleryAdd(),\n\t\t\t] );\n\t\t},\n\t} );\n};\n\n// the media library image object contains numerous attributes\n// we only need this set to display the image in the library\nconst slimImageObject = ( img ) => {\n\tconst attrSet = [\n\t\t'sizes',\n\t\t'mime',\n\t\t'type',\n\t\t'subtype',\n\t\t'id',\n\t\t'url',\n\t\t'alt',\n\t\t'link',\n\t\t'caption',\n\t];\n\treturn pick( img, attrSet );\n};\n\nconst getAttachmentsCollection = ( ids ) => {\n\treturn wp.media.query( {\n\t\torder: 'ASC',\n\t\torderby: 'post__in',\n\t\tpost__in: ids,\n\t\tposts_per_page: -1,\n\t\tquery: true,\n\t\ttype: 'image',\n\t} );\n};\n\nclass MediaUpload extends Component {\n\tconstructor( {\n\t\tallowedTypes,\n\t\tgallery = false,\n\t\tunstableFeaturedImageFlow = false,\n\t\tmodalClass,\n\t\tmultiple = false,\n\t\ttitle = __( 'Select or Upload Media' ),\n\t} ) {\n\t\tsuper( ...arguments );\n\t\tthis.openModal = this.openModal.bind( this );\n\t\tthis.onOpen = this.onOpen.bind( this );\n\t\tthis.onSelect = this.onSelect.bind( this );\n\t\tthis.onUpdate = this.onUpdate.bind( this );\n\t\tthis.onClose = this.onClose.bind( this );\n\n\t\tif ( gallery ) {\n\t\t\tthis.buildAndSetGalleryFrame();\n\t\t} else {\n\t\t\tconst frameConfig = {\n\t\t\t\ttitle,\n\t\t\t\tmultiple,\n\t\t\t};\n\t\t\tif ( !! allowedTypes ) {\n\t\t\t\tframeConfig.library = { type: allowedTypes };\n\t\t\t}\n\n\t\t\tthis.frame = wp.media( frameConfig );\n\t\t}\n\n\t\tif ( modalClass ) {\n\t\t\tthis.frame.$el.addClass( modalClass );\n\t\t}\n\n\t\tif ( unstableFeaturedImageFlow ) {\n\t\t\tthis.buildAndSetFeatureImageFrame();\n\t\t}\n\t\tthis.initializeListeners();\n\t}\n\n\tinitializeListeners() {\n\t\t// When an image is selected in the media frame...\n\t\tthis.frame.on( 'select', this.onSelect );\n\t\tthis.frame.on( 'update', this.onUpdate );\n\t\tthis.frame.on( 'open', this.onOpen );\n\t\tthis.frame.on( 'close', this.onClose );\n\t}\n\n\t/**\n\t * Sets the Gallery frame and initializes listeners.\n\t *\n\t * @return {void}\n\t */\n\tbuildAndSetGalleryFrame() {\n\t\tconst {\n\t\t\taddToGallery = false,\n\t\t\tallowedTypes,\n\t\t\tmultiple = false,\n\t\t\tvalue = DEFAULT_EMPTY_GALLERY,\n\t\t} = this.props;\n\n\t\t// If the value did not changed there is no need to rebuild the frame,\n\t\t// we can continue to use the existing one.\n\t\tif ( value === this.lastGalleryValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.lastGalleryValue = value;\n\n\t\t// If a frame already existed remove it.\n\t\tif ( this.frame ) {\n\t\t\tthis.frame.remove();\n\t\t}\n\t\tlet currentState;\n\t\tif ( addToGallery ) {\n\t\t\tcurrentState = 'gallery-library';\n\t\t} else {\n\t\t\tcurrentState = value && value.length ? 'gallery-edit' : 'gallery';\n\t\t}\n\t\tif ( ! this.GalleryDetailsMediaFrame ) {\n\t\t\tthis.GalleryDetailsMediaFrame = getGalleryDetailsMediaFrame();\n\t\t}\n\t\tconst attachments = getAttachmentsCollection( value );\n\t\tconst selection = new wp.media.model.Selection( attachments.models, {\n\t\t\tprops: attachments.props.toJSON(),\n\t\t\tmultiple,\n\t\t} );\n\t\tthis.frame = new this.GalleryDetailsMediaFrame( {\n\t\t\tmimeType: allowedTypes,\n\t\t\tstate: currentState,\n\t\t\tmultiple,\n\t\t\tselection,\n\t\t\tediting: value && value.length ? true : false,\n\t\t} );\n\t\twp.media.frame = this.frame;\n\t\tthis.initializeListeners();\n\t}\n\n\t/**\n\t * Initializes the Media Library requirements for the featured image flow.\n\t *\n\t * @return {void}\n\t */\n\tbuildAndSetFeatureImageFrame() {\n\t\tconst featuredImageFrame = getFeaturedImageMediaFrame();\n\t\tconst attachments = getAttachmentsCollection( this.props.value );\n\t\tconst selection = new wp.media.model.Selection( attachments.models, {\n\t\t\tprops: attachments.props.toJSON(),\n\t\t} );\n\t\tthis.frame = new featuredImageFrame( {\n\t\t\tmimeType: this.props.allowedTypes,\n\t\t\tstate: 'featured-image',\n\t\t\tmultiple: this.props.multiple,\n\t\t\tselection,\n\t\t\tediting: this.props.value ? true : false,\n\t\t} );\n\t\twp.media.frame = this.frame;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.frame.remove();\n\t}\n\n\tonUpdate( selections ) {\n\t\tconst { onSelect, multiple = false } = this.props;\n\t\tconst state = this.frame.state();\n\t\tconst selectedImages = selections || state.get( 'selection' );\n\n\t\tif ( ! selectedImages || ! selectedImages.models.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( multiple ) {\n\t\t\tonSelect(\n\t\t\t\tselectedImages.models.map( ( model ) =>\n\t\t\t\t\tslimImageObject( model.toJSON() )\n\t\t\t\t)\n\t\t\t);\n\t\t} else {\n\t\t\tonSelect( slimImageObject( selectedImages.models[ 0 ].toJSON() ) );\n\t\t}\n\t}\n\n\tonSelect() {\n\t\tconst { onSelect, multiple = false } = this.props;\n\t\t// Get media attachment details from the frame state\n\t\tconst attachment = this.frame.state().get( 'selection' ).toJSON();\n\t\tonSelect( multiple ? attachment : attachment[ 0 ] );\n\t}\n\n\tonOpen() {\n\t\tthis.updateCollection();\n\n\t\t// Handle both this.props.value being either (number[]) multiple ids\n\t\t// (for galleries) or a (number) singular id (e.g. image block).\n\t\tconst hasMedia = Array.isArray( this.props.value )\n\t\t\t? !! this.props.value?.length\n\t\t\t: !! this.props.value;\n\n\t\tif ( ! hasMedia ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isGallery = this.props.gallery;\n\t\tconst selection = this.frame.state().get( 'selection' );\n\n\t\tif ( ! isGallery ) {\n\t\t\tcastArray( this.props.value ).forEach( ( id ) => {\n\t\t\t\tselection.add( wp.media.attachment( id ) );\n\t\t\t} );\n\t\t}\n\n\t\t// Load the images so they are available in the media modal.\n\t\tconst attachments = getAttachmentsCollection(\n\t\t\tcastArray( this.props.value )\n\t\t);\n\n\t\t// Once attachments are loaded, set the current selection.\n\t\tattachments.more().done( function () {\n\t\t\tif ( isGallery && attachments?.models?.length ) {\n\t\t\t\tselection.add( attachments.models );\n\t\t\t}\n\t\t} );\n\t}\n\n\tonClose() {\n\t\tconst { onClose } = this.props;\n\n\t\tif ( onClose ) {\n\t\t\tonClose();\n\t\t}\n\t}\n\n\tupdateCollection() {\n\t\tconst frameContent = this.frame.content.get();\n\t\tif ( frameContent && frameContent.collection ) {\n\t\t\tconst collection = frameContent.collection;\n\n\t\t\t// clean all attachments we have in memory.\n\t\t\tcollection\n\t\t\t\t.toArray()\n\t\t\t\t.forEach( ( model ) => model.trigger( 'destroy', model ) );\n\n\t\t\t// reset has more flag, if library had small amount of items all items may have been loaded before.\n\t\t\tcollection.mirroring._hasMore = true;\n\n\t\t\t// request items\n\t\t\tcollection.more();\n\t\t}\n\t}\n\n\topenModal() {\n\t\tif ( this.props.gallery ) {\n\t\t\tthis.buildAndSetGalleryFrame();\n\t\t}\n\t\tthis.frame.open();\n\t}\n\n\trender() {\n\t\treturn this.props.render( { open: this.openModal } );\n\t}\n}\n\nexport default MediaUpload;\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/media-utils/src/components/media-upload/index.js"],"names":["castArray","defaults","pick","Component","__","wp","window","DEFAULT_EMPTY_GALLERY","getFeaturedImageMediaFrame","media","view","MediaFrame","Select","extend","featuredImageToolbar","toolbar","createSelectToolbar","text","l10n","setFeaturedImage","state","options","editState","selection","get","EditImage","model","single","controller","render","content","set","loadEditor","createStates","on","states","add","FeaturedImage","editImage","getGalleryDetailsMediaFrame","Post","galleryToolbar","editing","Toolbar","items","insert","style","updateGallery","insertGallery","priority","requires","library","click","close","trigger","setState","reset","Library","id","title","createGalleryTitle","filterable","multiple","editable","query","type","GalleryEdit","menu","displaySettings","GalleryAdd","slimImageObject","img","attrSet","getAttachmentsCollection","ids","order","orderby","post__in","posts_per_page","MediaUpload","constructor","allowedTypes","gallery","unstableFeaturedImageFlow","modalClass","arguments","openModal","bind","onOpen","onSelect","onUpdate","onClose","buildAndSetGalleryFrame","frameConfig","frame","$el","addClass","buildAndSetFeatureImageFrame","initializeListeners","addToGallery","value","props","lastGalleryValue","remove","currentState","length","GalleryDetailsMediaFrame","attachments","Selection","models","toJSON","mimeType","featuredImageFrame","componentWillUnmount","selections","selectedImages","map","attachment","updateCollection","hasMedia","Array","isArray","isGallery","forEach","more","done","frameContent","collection","toArray","mirroring","_hasMore","open"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { castArray, defaults, pick } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\nconst { wp } = window;\n\nconst DEFAULT_EMPTY_GALLERY = [];\n\n/**\n * Prepares the Featured Image toolbars and frames.\n *\n * @return {wp.media.view.MediaFrame.Select} The default media workflow.\n */\nconst getFeaturedImageMediaFrame = () => {\n\treturn wp.media.view.MediaFrame.Select.extend( {\n\t\t/**\n\t\t * Enables the Set Featured Image Button.\n\t\t *\n\t\t * @param {Object} toolbar toolbar for featured image state\n\t\t * @return {void}\n\t\t */\n\t\tfeaturedImageToolbar( toolbar ) {\n\t\t\tthis.createSelectToolbar( toolbar, {\n\t\t\t\ttext: wp.media.view.l10n.setFeaturedImage,\n\t\t\t\tstate: this.options.state,\n\t\t\t} );\n\t\t},\n\n\t\t/**\n\t\t * Handle the edit state requirements of selected media item.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\teditState() {\n\t\t\tconst selection = this.state( 'featured-image' ).get( 'selection' );\n\t\t\tconst view = new wp.media.view.EditImage( {\n\t\t\t\tmodel: selection.single(),\n\t\t\t\tcontroller: this,\n\t\t\t} ).render();\n\n\t\t\t// Set the view to the EditImage frame using the selected image.\n\t\t\tthis.content.set( view );\n\n\t\t\t// After bringing in the frame, load the actual editor via an ajax call.\n\t\t\tview.loadEditor();\n\t\t},\n\n\t\t/**\n\t\t * Create the default states.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tcreateStates: function createStates() {\n\t\t\tthis.on(\n\t\t\t\t'toolbar:create:featured-image',\n\t\t\t\tthis.featuredImageToolbar,\n\t\t\t\tthis\n\t\t\t);\n\t\t\tthis.on( 'content:render:edit-image', this.editState, this );\n\n\t\t\tthis.states.add( [\n\t\t\t\tnew wp.media.controller.FeaturedImage(),\n\t\t\t\tnew wp.media.controller.EditImage( {\n\t\t\t\t\tmodel: this.options.editImage,\n\t\t\t\t} ),\n\t\t\t] );\n\t\t},\n\t} );\n};\n\n/**\n * Prepares the Gallery toolbars and frames.\n *\n * @return {wp.media.view.MediaFrame.Post} The default media workflow.\n */\nconst getGalleryDetailsMediaFrame = () => {\n\t/**\n\t * Custom gallery details frame.\n\t *\n\t * @see https://github.com/xwp/wp-core-media-widgets/blob/905edbccfc2a623b73a93dac803c5335519d7837/wp-admin/js/widgets/media-gallery-widget.js\n\t * @class GalleryDetailsMediaFrame\n\t * @class\n\t */\n\treturn wp.media.view.MediaFrame.Post.extend( {\n\t\t/**\n\t\t * Set up gallery toolbar.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tgalleryToolbar() {\n\t\t\tconst editing = this.state().get( 'editing' );\n\t\t\tthis.toolbar.set(\n\t\t\t\tnew wp.media.view.Toolbar( {\n\t\t\t\t\tcontroller: this,\n\t\t\t\t\titems: {\n\t\t\t\t\t\tinsert: {\n\t\t\t\t\t\t\tstyle: 'primary',\n\t\t\t\t\t\t\ttext: editing\n\t\t\t\t\t\t\t\t? wp.media.view.l10n.updateGallery\n\t\t\t\t\t\t\t\t: wp.media.view.l10n.insertGallery,\n\t\t\t\t\t\t\tpriority: 80,\n\t\t\t\t\t\t\trequires: { library: true },\n\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * @fires wp.media.controller.State#update\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tclick() {\n\t\t\t\t\t\t\t\tconst controller = this.controller,\n\t\t\t\t\t\t\t\t\tstate = controller.state();\n\n\t\t\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t\t\t\tstate.trigger(\n\t\t\t\t\t\t\t\t\t'update',\n\t\t\t\t\t\t\t\t\tstate.get( 'library' )\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t// Restore and reset the default state.\n\t\t\t\t\t\t\t\tcontroller.setState( controller.options.state );\n\t\t\t\t\t\t\t\tcontroller.reset();\n\t\t\t\t\t\t\t},\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\t/**\n\t\t * Handle the edit state requirements of selected media item.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\teditState() {\n\t\t\tconst selection = this.state( 'gallery' ).get( 'selection' );\n\t\t\tconst view = new wp.media.view.EditImage( {\n\t\t\t\tmodel: selection.single(),\n\t\t\t\tcontroller: this,\n\t\t\t} ).render();\n\n\t\t\t// Set the view to the EditImage frame using the selected image.\n\t\t\tthis.content.set( view );\n\n\t\t\t// After bringing in the frame, load the actual editor via an ajax call.\n\t\t\tview.loadEditor();\n\t\t},\n\n\t\t/**\n\t\t * Create the default states.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tcreateStates: function createStates() {\n\t\t\tthis.on( 'toolbar:create:main-gallery', this.galleryToolbar, this );\n\t\t\tthis.on( 'content:render:edit-image', this.editState, this );\n\n\t\t\tthis.states.add( [\n\t\t\t\tnew wp.media.controller.Library( {\n\t\t\t\t\tid: 'gallery',\n\t\t\t\t\ttitle: wp.media.view.l10n.createGalleryTitle,\n\t\t\t\t\tpriority: 40,\n\t\t\t\t\ttoolbar: 'main-gallery',\n\t\t\t\t\tfilterable: 'uploaded',\n\t\t\t\t\tmultiple: 'add',\n\t\t\t\t\teditable: false,\n\n\t\t\t\t\tlibrary: wp.media.query(\n\t\t\t\t\t\tdefaults(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tthis.options.library\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t} ),\n\t\t\t\tnew wp.media.controller.EditImage( {\n\t\t\t\t\tmodel: this.options.editImage,\n\t\t\t\t} ),\n\n\t\t\t\tnew wp.media.controller.GalleryEdit( {\n\t\t\t\t\tlibrary: this.options.selection,\n\t\t\t\t\tediting: this.options.editing,\n\t\t\t\t\tmenu: 'gallery',\n\t\t\t\t\tdisplaySettings: false,\n\t\t\t\t\tmultiple: true,\n\t\t\t\t} ),\n\n\t\t\t\tnew wp.media.controller.GalleryAdd(),\n\t\t\t] );\n\t\t},\n\t} );\n};\n\n// The media library image object contains numerous attributes\n// we only need this set to display the image in the library.\nconst slimImageObject = ( img ) => {\n\tconst attrSet = [\n\t\t'sizes',\n\t\t'mime',\n\t\t'type',\n\t\t'subtype',\n\t\t'id',\n\t\t'url',\n\t\t'alt',\n\t\t'link',\n\t\t'caption',\n\t];\n\treturn pick( img, attrSet );\n};\n\nconst getAttachmentsCollection = ( ids ) => {\n\treturn wp.media.query( {\n\t\torder: 'ASC',\n\t\torderby: 'post__in',\n\t\tpost__in: ids,\n\t\tposts_per_page: -1,\n\t\tquery: true,\n\t\ttype: 'image',\n\t} );\n};\n\nclass MediaUpload extends Component {\n\tconstructor( {\n\t\tallowedTypes,\n\t\tgallery = false,\n\t\tunstableFeaturedImageFlow = false,\n\t\tmodalClass,\n\t\tmultiple = false,\n\t\ttitle = __( 'Select or Upload Media' ),\n\t} ) {\n\t\tsuper( ...arguments );\n\t\tthis.openModal = this.openModal.bind( this );\n\t\tthis.onOpen = this.onOpen.bind( this );\n\t\tthis.onSelect = this.onSelect.bind( this );\n\t\tthis.onUpdate = this.onUpdate.bind( this );\n\t\tthis.onClose = this.onClose.bind( this );\n\n\t\tif ( gallery ) {\n\t\t\tthis.buildAndSetGalleryFrame();\n\t\t} else {\n\t\t\tconst frameConfig = {\n\t\t\t\ttitle,\n\t\t\t\tmultiple,\n\t\t\t};\n\t\t\tif ( !! allowedTypes ) {\n\t\t\t\tframeConfig.library = { type: allowedTypes };\n\t\t\t}\n\n\t\t\tthis.frame = wp.media( frameConfig );\n\t\t}\n\n\t\tif ( modalClass ) {\n\t\t\tthis.frame.$el.addClass( modalClass );\n\t\t}\n\n\t\tif ( unstableFeaturedImageFlow ) {\n\t\t\tthis.buildAndSetFeatureImageFrame();\n\t\t}\n\t\tthis.initializeListeners();\n\t}\n\n\tinitializeListeners() {\n\t\t// When an image is selected in the media frame...\n\t\tthis.frame.on( 'select', this.onSelect );\n\t\tthis.frame.on( 'update', this.onUpdate );\n\t\tthis.frame.on( 'open', this.onOpen );\n\t\tthis.frame.on( 'close', this.onClose );\n\t}\n\n\t/**\n\t * Sets the Gallery frame and initializes listeners.\n\t *\n\t * @return {void}\n\t */\n\tbuildAndSetGalleryFrame() {\n\t\tconst {\n\t\t\taddToGallery = false,\n\t\t\tallowedTypes,\n\t\t\tmultiple = false,\n\t\t\tvalue = DEFAULT_EMPTY_GALLERY,\n\t\t} = this.props;\n\n\t\t// If the value did not changed there is no need to rebuild the frame,\n\t\t// we can continue to use the existing one.\n\t\tif ( value === this.lastGalleryValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.lastGalleryValue = value;\n\n\t\t// If a frame already existed remove it.\n\t\tif ( this.frame ) {\n\t\t\tthis.frame.remove();\n\t\t}\n\t\tlet currentState;\n\t\tif ( addToGallery ) {\n\t\t\tcurrentState = 'gallery-library';\n\t\t} else {\n\t\t\tcurrentState = value && value.length ? 'gallery-edit' : 'gallery';\n\t\t}\n\t\tif ( ! this.GalleryDetailsMediaFrame ) {\n\t\t\tthis.GalleryDetailsMediaFrame = getGalleryDetailsMediaFrame();\n\t\t}\n\t\tconst attachments = getAttachmentsCollection( value );\n\t\tconst selection = new wp.media.model.Selection( attachments.models, {\n\t\t\tprops: attachments.props.toJSON(),\n\t\t\tmultiple,\n\t\t} );\n\t\tthis.frame = new this.GalleryDetailsMediaFrame( {\n\t\t\tmimeType: allowedTypes,\n\t\t\tstate: currentState,\n\t\t\tmultiple,\n\t\t\tselection,\n\t\t\tediting: value && value.length ? true : false,\n\t\t} );\n\t\twp.media.frame = this.frame;\n\t\tthis.initializeListeners();\n\t}\n\n\t/**\n\t * Initializes the Media Library requirements for the featured image flow.\n\t *\n\t * @return {void}\n\t */\n\tbuildAndSetFeatureImageFrame() {\n\t\tconst featuredImageFrame = getFeaturedImageMediaFrame();\n\t\tconst attachments = getAttachmentsCollection( this.props.value );\n\t\tconst selection = new wp.media.model.Selection( attachments.models, {\n\t\t\tprops: attachments.props.toJSON(),\n\t\t} );\n\t\tthis.frame = new featuredImageFrame( {\n\t\t\tmimeType: this.props.allowedTypes,\n\t\t\tstate: 'featured-image',\n\t\t\tmultiple: this.props.multiple,\n\t\t\tselection,\n\t\t\tediting: this.props.value ? true : false,\n\t\t} );\n\t\twp.media.frame = this.frame;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.frame.remove();\n\t}\n\n\tonUpdate( selections ) {\n\t\tconst { onSelect, multiple = false } = this.props;\n\t\tconst state = this.frame.state();\n\t\tconst selectedImages = selections || state.get( 'selection' );\n\n\t\tif ( ! selectedImages || ! selectedImages.models.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( multiple ) {\n\t\t\tonSelect(\n\t\t\t\tselectedImages.models.map( ( model ) =>\n\t\t\t\t\tslimImageObject( model.toJSON() )\n\t\t\t\t)\n\t\t\t);\n\t\t} else {\n\t\t\tonSelect( slimImageObject( selectedImages.models[ 0 ].toJSON() ) );\n\t\t}\n\t}\n\n\tonSelect() {\n\t\tconst { onSelect, multiple = false } = this.props;\n\t\t// Get media attachment details from the frame state.\n\t\tconst attachment = this.frame.state().get( 'selection' ).toJSON();\n\t\tonSelect( multiple ? attachment : attachment[ 0 ] );\n\t}\n\n\tonOpen() {\n\t\tthis.updateCollection();\n\n\t\t// Handle both this.props.value being either (number[]) multiple ids\n\t\t// (for galleries) or a (number) singular id (e.g. image block).\n\t\tconst hasMedia = Array.isArray( this.props.value )\n\t\t\t? !! this.props.value?.length\n\t\t\t: !! this.props.value;\n\n\t\tif ( ! hasMedia ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isGallery = this.props.gallery;\n\t\tconst selection = this.frame.state().get( 'selection' );\n\n\t\tif ( ! isGallery ) {\n\t\t\tcastArray( this.props.value ).forEach( ( id ) => {\n\t\t\t\tselection.add( wp.media.attachment( id ) );\n\t\t\t} );\n\t\t}\n\n\t\t// Load the images so they are available in the media modal.\n\t\tconst attachments = getAttachmentsCollection(\n\t\t\tcastArray( this.props.value )\n\t\t);\n\n\t\t// Once attachments are loaded, set the current selection.\n\t\tattachments.more().done( function () {\n\t\t\tif ( isGallery && attachments?.models?.length ) {\n\t\t\t\tselection.add( attachments.models );\n\t\t\t}\n\t\t} );\n\t}\n\n\tonClose() {\n\t\tconst { onClose } = this.props;\n\n\t\tif ( onClose ) {\n\t\t\tonClose();\n\t\t}\n\t}\n\n\tupdateCollection() {\n\t\tconst frameContent = this.frame.content.get();\n\t\tif ( frameContent && frameContent.collection ) {\n\t\t\tconst collection = frameContent.collection;\n\n\t\t\t// Clean all attachments we have in memory.\n\t\t\tcollection\n\t\t\t\t.toArray()\n\t\t\t\t.forEach( ( model ) => model.trigger( 'destroy', model ) );\n\n\t\t\t// Reset has more flag, if library had small amount of items all items may have been loaded before.\n\t\t\tcollection.mirroring._hasMore = true;\n\n\t\t\t// Request items.\n\t\t\tcollection.more();\n\t\t}\n\t}\n\n\topenModal() {\n\t\tif ( this.props.gallery ) {\n\t\t\tthis.buildAndSetGalleryFrame();\n\t\t}\n\t\tthis.frame.open();\n\t}\n\n\trender() {\n\t\treturn this.props.render( { open: this.openModal } );\n\t}\n}\n\nexport default MediaUpload;\n"]}
|
|
@@ -62,7 +62,7 @@ export async function uploadMedia(_ref) {
|
|
|
62
62
|
onFileChange,
|
|
63
63
|
wpAllowedMimeTypes = null
|
|
64
64
|
} = _ref;
|
|
65
|
-
// Cast filesList to array
|
|
65
|
+
// Cast filesList to array.
|
|
66
66
|
const files = [...filesList];
|
|
67
67
|
const filesSet = [];
|
|
68
68
|
|
|
@@ -70,7 +70,7 @@ export async function uploadMedia(_ref) {
|
|
|
70
70
|
revokeBlobURL(get(filesSet, [idx, 'url']));
|
|
71
71
|
filesSet[idx] = value;
|
|
72
72
|
onFileChange(compact(filesSet));
|
|
73
|
-
}; // Allowed type specified by consumer
|
|
73
|
+
}; // Allowed type specified by consumer.
|
|
74
74
|
|
|
75
75
|
|
|
76
76
|
const isAllowedType = fileType => {
|
|
@@ -87,14 +87,14 @@ export async function uploadMedia(_ref) {
|
|
|
87
87
|
|
|
88
88
|
return startsWith(fileType, `${allowedType}/`);
|
|
89
89
|
});
|
|
90
|
-
}; // Allowed types for the current WP_User
|
|
90
|
+
}; // Allowed types for the current WP_User.
|
|
91
91
|
|
|
92
92
|
|
|
93
93
|
const allowedMimeTypesForUser = getMimeTypesArray(wpAllowedMimeTypes);
|
|
94
94
|
|
|
95
95
|
const isAllowedMimeTypeForUser = fileType => {
|
|
96
96
|
return includes(allowedMimeTypesForUser, fileType);
|
|
97
|
-
}; // Build the error message including the filename
|
|
97
|
+
}; // Build the error message including the filename.
|
|
98
98
|
|
|
99
99
|
|
|
100
100
|
const triggerError = error => {
|
|
@@ -127,7 +127,7 @@ export async function uploadMedia(_ref) {
|
|
|
127
127
|
file: mediaFile
|
|
128
128
|
});
|
|
129
129
|
continue;
|
|
130
|
-
} //
|
|
130
|
+
} // Verify if file is greater than the maximum file upload size allowed for the site.
|
|
131
131
|
|
|
132
132
|
|
|
133
133
|
if (maxUploadFileSize && mediaFile.size > maxUploadFileSize) {
|
|
@@ -150,7 +150,7 @@ export async function uploadMedia(_ref) {
|
|
|
150
150
|
}
|
|
151
151
|
|
|
152
152
|
validFiles.push(mediaFile); // Set temporary URL to create placeholder media file, this is replaced
|
|
153
|
-
// with final file from media gallery when upload is `done` below
|
|
153
|
+
// with final file from media gallery when upload is `done` below.
|
|
154
154
|
|
|
155
155
|
filesSet.push({
|
|
156
156
|
url: createBlobURL(mediaFile)
|
|
@@ -198,7 +198,7 @@ export async function uploadMedia(_ref) {
|
|
|
198
198
|
*/
|
|
199
199
|
|
|
200
200
|
function createMediaFromFile(file, additionalData) {
|
|
201
|
-
// Create upload payload
|
|
201
|
+
// Create upload payload.
|
|
202
202
|
const data = new window.FormData();
|
|
203
203
|
data.append('file', file, file.name || file.type.replace('/', '.'));
|
|
204
204
|
forEach(additionalData, (value, key) => data.append(key, value));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/media-utils/src/utils/upload-media.js"],"names":["compact","flatMap","forEach","get","has","includes","map","noop","omit","some","startsWith","apiFetch","createBlobURL","revokeBlobURL","__","sprintf","getMimeTypesArray","wpMimeTypesObject","mime","extensionsString","type","split","extensions","extension","uploadMedia","allowedTypes","additionalData","filesList","maxUploadFileSize","onError","onFileChange","wpAllowedMimeTypes","files","filesSet","setAndUpdateFiles","idx","value","isAllowedType","fileType","allowedType","allowedMimeTypesForUser","isAllowedMimeTypeForUser","triggerError","error","message","file","name","validFiles","mediaFile","code","size","push","url","length","savedMedia","createMediaFromFile","mediaObject","alt","alt_text","caption","title","raw","source_url","data","window","FormData","append","replace","key","path","body","method"],"mappings":";;AAAA;AACA;AACA;AACA,SACCA,OADD,EAECC,OAFD,EAGCC,OAHD,EAICC,GAJD,EAKCC,GALD,EAMCC,QAND,EAOCC,GAPD,EAQCC,IARD,EASCC,IATD,EAUCC,IAVD,EAWCC,UAXD,QAYO,QAZP;AAcA;AACA;AACA;;AACA,OAAOC,QAAP,MAAqB,sBAArB;AACA,SAASC,aAAT,EAAwBC,aAAxB,QAA6C,iBAA7C;AACA,SAASC,EAAT,EAAaC,OAAb,QAA4B,iBAA5B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,iBAAT,CAA4BC,iBAA5B,EAAgD;AACtD,MAAK,CAAEA,iBAAP,EAA2B;AAC1B,WAAOA,iBAAP;AACA;;AACD,SAAOhB,OAAO,CAAEgB,iBAAF,EAAqB,CAAEC,IAAF,EAAQC,gBAAR,KAA8B;AAChE,UAAM,CAAEC,IAAF,IAAWF,IAAI,CAACG,KAAL,CAAY,GAAZ,CAAjB;AACA,UAAMC,UAAU,GAAGH,gBAAgB,CAACE,KAAjB,CAAwB,GAAxB,CAAnB;AACA,WAAO,CACNH,IADM,EAEN,GAAGZ,GAAG,CAAEgB,UAAF,EAAgBC,SAAF,IAAkB,GAAGH,IAAM,IAAIG,SAAW,EAAxD,CAFA,CAAP;AAIA,GAPa,CAAd;AAQA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,eAAeC,WAAf,OAQH;AAAA,MAR+B;AAClCC,IAAAA,YADkC;AAElCC,IAAAA,cAAc,GAAG,EAFiB;AAGlCC,IAAAA,SAHkC;AAIlCC,IAAAA,iBAJkC;AAKlCC,IAAAA,OAAO,GAAGtB,IALwB;AAMlCuB,IAAAA,YANkC;AAOlCC,IAAAA,kBAAkB,GAAG;AAPa,GAQ/B;AACH;AACA,QAAMC,KAAK,GAAG,CAAE,GAAGL,SAAL,CAAd;AAEA,QAAMM,QAAQ,GAAG,EAAjB;;AACA,QAAMC,iBAAiB,GAAG,CAAEC,GAAF,EAAOC,KAAP,KAAkB;AAC3CvB,IAAAA,aAAa,CAAEV,GAAG,CAAE8B,QAAF,EAAY,CAAEE,GAAF,EAAO,KAAP,CAAZ,CAAL,CAAb;AACAF,IAAAA,QAAQ,CAAEE,GAAF,CAAR,GAAkBC,KAAlB;AACAN,IAAAA,YAAY,CAAE9B,OAAO,CAAEiC,QAAF,CAAT,CAAZ;AACA,GAJD,CALG,CAWH;;;AACA,QAAMI,aAAa,GAAKC,QAAF,IAAgB;AACrC,QAAK,CAAEb,YAAP,EAAsB;AACrB,aAAO,IAAP;AACA;;AACD,WAAOhB,IAAI,CAAEgB,YAAF,EAAkBc,WAAF,IAAmB;AAC7C;AACA,UAAKlC,QAAQ,CAAEkC,WAAF,EAAe,GAAf,CAAb,EAAoC;AACnC,eAAOA,WAAW,KAAKD,QAAvB;AACA,OAJ4C,CAK7C;;;AACA,aAAO5B,UAAU,CAAE4B,QAAF,EAAa,GAAGC,WAAa,GAA7B,CAAjB;AACA,KAPU,CAAX;AAQA,GAZD,CAZG,CA0BH;;;AACA,QAAMC,uBAAuB,GAAGxB,iBAAiB,CAAEe,kBAAF,CAAjD;;AACA,QAAMU,wBAAwB,GAAKH,QAAF,IAAgB;AAChD,WAAOjC,QAAQ,CAAEmC,uBAAF,EAA2BF,QAA3B,CAAf;AACA,GAFD,CA5BG,CAgCH;;;AACA,QAAMI,YAAY,GAAKC,KAAF,IAAa;AACjCA,IAAAA,KAAK,CAACC,OAAN,GAAgB,CACf;AAAQ,MAAA,GAAG,EAAC;AAAZ,OAAyBD,KAAK,CAACE,IAAN,CAAWC,IAApC,CADe,EAEf,IAFe,EAGfH,KAAK,CAACC,OAHS,CAAhB;AAMAf,IAAAA,OAAO,CAAEc,KAAF,CAAP;AACA,GARD;;AAUA,QAAMI,UAAU,GAAG,EAAnB;;AAEA,OAAM,MAAMC,SAAZ,IAAyBhB,KAAzB,EAAiC;AAChC;AACA;AACA,QACCQ,uBAAuB,IACvBQ,SAAS,CAAC5B,IADV,IAEA,CAAEqB,wBAAwB,CAAEO,SAAS,CAAC5B,IAAZ,CAH3B,EAIE;AACDsB,MAAAA,YAAY,CAAE;AACbO,QAAAA,IAAI,EAAE,gCADO;AAEbL,QAAAA,OAAO,EAAE9B,EAAE,CACV,sDADU,CAFE;AAKb+B,QAAAA,IAAI,EAAEG;AALO,OAAF,CAAZ;AAOA;AACA,KAhB+B,CAkBhC;AACA;;;AACA,QAAKA,SAAS,CAAC5B,IAAV,IAAkB,CAAEiB,aAAa,CAAEW,SAAS,CAAC5B,IAAZ,CAAtC,EAA2D;AAC1DsB,MAAAA,YAAY,CAAE;AACbO,QAAAA,IAAI,EAAE,yBADO;AAEbL,QAAAA,OAAO,EAAE9B,EAAE,CAAE,8CAAF,CAFE;AAGb+B,QAAAA,IAAI,EAAEG;AAHO,OAAF,CAAZ;AAKA;AACA,KA3B+B,CA6BhC;;;AACA,QAAKpB,iBAAiB,IAAIoB,SAAS,CAACE,IAAV,GAAiBtB,iBAA3C,EAA+D;AAC9Dc,MAAAA,YAAY,CAAE;AACbO,QAAAA,IAAI,EAAE,kBADO;AAEbL,QAAAA,OAAO,EAAE9B,EAAE,CACV,0DADU,CAFE;AAKb+B,QAAAA,IAAI,EAAEG;AALO,OAAF,CAAZ;AAOA;AACA,KAvC+B,CAyChC;;;AACA,QAAKA,SAAS,CAACE,IAAV,IAAkB,CAAvB,EAA2B;AAC1BR,MAAAA,YAAY,CAAE;AACbO,QAAAA,IAAI,EAAE,YADO;AAEbL,QAAAA,OAAO,EAAE9B,EAAE,CAAE,qBAAF,CAFE;AAGb+B,QAAAA,IAAI,EAAEG;AAHO,OAAF,CAAZ;AAKA;AACA;;AAEDD,IAAAA,UAAU,CAACI,IAAX,CAAiBH,SAAjB,EAnDgC,CAqDhC;AACA;;AACAf,IAAAA,QAAQ,CAACkB,IAAT,CAAe;AAAEC,MAAAA,GAAG,EAAExC,aAAa,CAAEoC,SAAF;AAApB,KAAf;AACAlB,IAAAA,YAAY,CAAEG,QAAF,CAAZ;AACA;;AAED,OAAM,IAAIE,GAAG,GAAG,CAAhB,EAAmBA,GAAG,GAAGY,UAAU,CAACM,MAApC,EAA4C,EAAElB,GAA9C,EAAoD;AACnD,UAAMa,SAAS,GAAGD,UAAU,CAAEZ,GAAF,CAA5B;;AACA,QAAI;AACH,YAAMmB,UAAU,GAAG,MAAMC,mBAAmB,CAC3CP,SAD2C,EAE3CtB,cAF2C,CAA5C;AAIA,YAAM8B,WAAW,GAAG,EACnB,GAAGhD,IAAI,CAAE8C,UAAF,EAAc,CAAE,UAAF,EAAc,YAAd,CAAd,CADY;AAEnBG,QAAAA,GAAG,EAAEH,UAAU,CAACI,QAFG;AAGnBC,QAAAA,OAAO,EAAExD,GAAG,CAAEmD,UAAF,EAAc,CAAE,SAAF,EAAa,KAAb,CAAd,EAAoC,EAApC,CAHO;AAInBM,QAAAA,KAAK,EAAEN,UAAU,CAACM,KAAX,CAAiBC,GAJL;AAKnBT,QAAAA,GAAG,EAAEE,UAAU,CAACQ;AALG,OAApB;AAOA5B,MAAAA,iBAAiB,CAAEC,GAAF,EAAOqB,WAAP,CAAjB;AACA,KAbD,CAaE,OAAQb,KAAR,EAAgB;AACjB;AACAT,MAAAA,iBAAiB,CAAEC,GAAF,EAAO,IAAP,CAAjB;AACA,UAAIS,OAAJ;;AACA,UAAKxC,GAAG,CAAEuC,KAAF,EAAS,CAAE,SAAF,CAAT,CAAR,EAAmC;AAClCC,QAAAA,OAAO,GAAGzC,GAAG,CAAEwC,KAAF,EAAS,CAAE,SAAF,CAAT,CAAb;AACA,OAFD,MAEO;AACNC,QAAAA,OAAO,GAAG7B,OAAO,EAChB;AACAD,QAAAA,EAAE,CAAE,qDAAF,CAFc,EAGhBkC,SAAS,CAACF,IAHM,CAAjB;AAKA;;AACDjB,MAAAA,OAAO,CAAE;AACRoB,QAAAA,IAAI,EAAE,SADE;AAERL,QAAAA,OAFQ;AAGRC,QAAAA,IAAI,EAAEG;AAHE,OAAF,CAAP;AAKA;AACD;AACD;AAED;AACA;AACA;AACA;AACA;AACA;;AACA,SAASO,mBAAT,CAA8BV,IAA9B,EAAoCnB,cAApC,EAAqD;AACpD;AACA,QAAMqC,IAAI,GAAG,IAAIC,MAAM,CAACC,QAAX,EAAb;AACAF,EAAAA,IAAI,CAACG,MAAL,CAAa,MAAb,EAAqBrB,IAArB,EAA2BA,IAAI,CAACC,IAAL,IAAaD,IAAI,CAACzB,IAAL,CAAU+C,OAAV,CAAmB,GAAnB,EAAwB,GAAxB,CAAxC;AACAjE,EAAAA,OAAO,CAAEwB,cAAF,EAAkB,CAAEU,KAAF,EAASgC,GAAT,KAAkBL,IAAI,CAACG,MAAL,CAAaE,GAAb,EAAkBhC,KAAlB,CAApC,CAAP;AACA,SAAOzB,QAAQ,CAAE;AAChB0D,IAAAA,IAAI,EAAE,cADU;AAEhBC,IAAAA,IAAI,EAAEP,IAFU;AAGhBQ,IAAAA,MAAM,EAAE;AAHQ,GAAF,CAAf;AAKA","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tcompact,\n\tflatMap,\n\tforEach,\n\tget,\n\thas,\n\tincludes,\n\tmap,\n\tnoop,\n\tomit,\n\tsome,\n\tstartsWith,\n} from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { createBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Browsers may use unexpected mime types, and they differ from browser to browser.\n * This function computes a flexible array of mime types from the mime type structured provided by the server.\n * Converts { jpg|jpeg|jpe: \"image/jpeg\" } into [ \"image/jpeg\", \"image/jpg\", \"image/jpeg\", \"image/jpe\" ]\n * The computation of this array instead of directly using the object,\n * solves the problem in chrome where mp3 files have audio/mp3 as mime type instead of audio/mpeg.\n * https://bugs.chromium.org/p/chromium/issues/detail?id=227004\n *\n * @param {?Object} wpMimeTypesObject Mime type object received from the server.\n * Extensions are keys separated by '|' and values are mime types associated with an extension.\n *\n * @return {?Array} An array of mime types or the parameter passed if it was \"falsy\".\n */\nexport function getMimeTypesArray( wpMimeTypesObject ) {\n\tif ( ! wpMimeTypesObject ) {\n\t\treturn wpMimeTypesObject;\n\t}\n\treturn flatMap( wpMimeTypesObject, ( mime, extensionsString ) => {\n\t\tconst [ type ] = mime.split( '/' );\n\t\tconst extensions = extensionsString.split( '|' );\n\t\treturn [\n\t\t\tmime,\n\t\t\t...map( extensions, ( extension ) => `${ type }/${ extension }` ),\n\t\t];\n\t} );\n}\n\n/**\n *\tMedia Upload is used by audio, image, gallery, video, and file blocks to\n *\thandle uploading a media file when a file upload button is activated.\n *\n *\tTODO: future enhancement to add an upload indicator.\n *\n * @param {Object} $0 Parameters object passed to the function.\n * @param {?Array} $0.allowedTypes Array with the types of media that can be uploaded, if unset all types are allowed.\n * @param {?Object} $0.additionalData Additional data to include in the request.\n * @param {Array} $0.filesList List of files.\n * @param {?number} $0.maxUploadFileSize Maximum upload size in bytes allowed for the site.\n * @param {Function} $0.onError Function called when an error happens.\n * @param {Function} $0.onFileChange Function called each time a file or a temporary representation of the file is available.\n * @param {?Object} $0.wpAllowedMimeTypes List of allowed mime types and file extensions.\n */\nexport async function uploadMedia( {\n\tallowedTypes,\n\tadditionalData = {},\n\tfilesList,\n\tmaxUploadFileSize,\n\tonError = noop,\n\tonFileChange,\n\twpAllowedMimeTypes = null,\n} ) {\n\t// Cast filesList to array\n\tconst files = [ ...filesList ];\n\n\tconst filesSet = [];\n\tconst setAndUpdateFiles = ( idx, value ) => {\n\t\trevokeBlobURL( get( filesSet, [ idx, 'url' ] ) );\n\t\tfilesSet[ idx ] = value;\n\t\tonFileChange( compact( filesSet ) );\n\t};\n\n\t// Allowed type specified by consumer\n\tconst isAllowedType = ( fileType ) => {\n\t\tif ( ! allowedTypes ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn some( allowedTypes, ( allowedType ) => {\n\t\t\t// If a complete mimetype is specified verify if it matches exactly the mime type of the file.\n\t\t\tif ( includes( allowedType, '/' ) ) {\n\t\t\t\treturn allowedType === fileType;\n\t\t\t}\n\t\t\t// Otherwise a general mime type is used and we should verify if the file mimetype starts with it.\n\t\t\treturn startsWith( fileType, `${ allowedType }/` );\n\t\t} );\n\t};\n\n\t// Allowed types for the current WP_User\n\tconst allowedMimeTypesForUser = getMimeTypesArray( wpAllowedMimeTypes );\n\tconst isAllowedMimeTypeForUser = ( fileType ) => {\n\t\treturn includes( allowedMimeTypesForUser, fileType );\n\t};\n\n\t// Build the error message including the filename\n\tconst triggerError = ( error ) => {\n\t\terror.message = [\n\t\t\t<strong key=\"filename\">{ error.file.name }</strong>,\n\t\t\t': ',\n\t\t\terror.message,\n\t\t];\n\n\t\tonError( error );\n\t};\n\n\tconst validFiles = [];\n\n\tfor ( const mediaFile of files ) {\n\t\t// Verify if user is allowed to upload this mime type.\n\t\t// Defer to the server when type not detected.\n\t\tif (\n\t\t\tallowedMimeTypesForUser &&\n\t\t\tmediaFile.type &&\n\t\t\t! isAllowedMimeTypeForUser( mediaFile.type )\n\t\t) {\n\t\t\ttriggerError( {\n\t\t\t\tcode: 'MIME_TYPE_NOT_ALLOWED_FOR_USER',\n\t\t\t\tmessage: __(\n\t\t\t\t\t'Sorry, you are not allowed to upload this file type.'\n\t\t\t\t),\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Check if the block supports this mime type.\n\t\t// Defer to the server when type not detected.\n\t\tif ( mediaFile.type && ! isAllowedType( mediaFile.type ) ) {\n\t\t\ttriggerError( {\n\t\t\t\tcode: 'MIME_TYPE_NOT_SUPPORTED',\n\t\t\t\tmessage: __( 'Sorry, this file type is not supported here.' ),\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// verify if file is greater than the maximum file upload size allowed for the site.\n\t\tif ( maxUploadFileSize && mediaFile.size > maxUploadFileSize ) {\n\t\t\ttriggerError( {\n\t\t\t\tcode: 'SIZE_ABOVE_LIMIT',\n\t\t\t\tmessage: __(\n\t\t\t\t\t'This file exceeds the maximum upload size for this site.'\n\t\t\t\t),\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Don't allow empty files to be uploaded.\n\t\tif ( mediaFile.size <= 0 ) {\n\t\t\ttriggerError( {\n\t\t\t\tcode: 'EMPTY_FILE',\n\t\t\t\tmessage: __( 'This file is empty.' ),\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t\tcontinue;\n\t\t}\n\n\t\tvalidFiles.push( mediaFile );\n\n\t\t// Set temporary URL to create placeholder media file, this is replaced\n\t\t// with final file from media gallery when upload is `done` below\n\t\tfilesSet.push( { url: createBlobURL( mediaFile ) } );\n\t\tonFileChange( filesSet );\n\t}\n\n\tfor ( let idx = 0; idx < validFiles.length; ++idx ) {\n\t\tconst mediaFile = validFiles[ idx ];\n\t\ttry {\n\t\t\tconst savedMedia = await createMediaFromFile(\n\t\t\t\tmediaFile,\n\t\t\t\tadditionalData\n\t\t\t);\n\t\t\tconst mediaObject = {\n\t\t\t\t...omit( savedMedia, [ 'alt_text', 'source_url' ] ),\n\t\t\t\talt: savedMedia.alt_text,\n\t\t\t\tcaption: get( savedMedia, [ 'caption', 'raw' ], '' ),\n\t\t\t\ttitle: savedMedia.title.raw,\n\t\t\t\turl: savedMedia.source_url,\n\t\t\t};\n\t\t\tsetAndUpdateFiles( idx, mediaObject );\n\t\t} catch ( error ) {\n\t\t\t// Reset to empty on failure.\n\t\t\tsetAndUpdateFiles( idx, null );\n\t\t\tlet message;\n\t\t\tif ( has( error, [ 'message' ] ) ) {\n\t\t\t\tmessage = get( error, [ 'message' ] );\n\t\t\t} else {\n\t\t\t\tmessage = sprintf(\n\t\t\t\t\t// translators: %s: file name\n\t\t\t\t\t__( 'Error while uploading file %s to the media library.' ),\n\t\t\t\t\tmediaFile.name\n\t\t\t\t);\n\t\t\t}\n\t\t\tonError( {\n\t\t\t\tcode: 'GENERAL',\n\t\t\t\tmessage,\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t}\n\t}\n}\n\n/**\n * @param {File} file Media File to Save.\n * @param {?Object} additionalData Additional data to include in the request.\n *\n * @return {Promise} Media Object Promise.\n */\nfunction createMediaFromFile( file, additionalData ) {\n\t// Create upload payload\n\tconst data = new window.FormData();\n\tdata.append( 'file', file, file.name || file.type.replace( '/', '.' ) );\n\tforEach( additionalData, ( value, key ) => data.append( key, value ) );\n\treturn apiFetch( {\n\t\tpath: '/wp/v2/media',\n\t\tbody: data,\n\t\tmethod: 'POST',\n\t} );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/media-utils/src/utils/upload-media.js"],"names":["compact","flatMap","forEach","get","has","includes","map","noop","omit","some","startsWith","apiFetch","createBlobURL","revokeBlobURL","__","sprintf","getMimeTypesArray","wpMimeTypesObject","mime","extensionsString","type","split","extensions","extension","uploadMedia","allowedTypes","additionalData","filesList","maxUploadFileSize","onError","onFileChange","wpAllowedMimeTypes","files","filesSet","setAndUpdateFiles","idx","value","isAllowedType","fileType","allowedType","allowedMimeTypesForUser","isAllowedMimeTypeForUser","triggerError","error","message","file","name","validFiles","mediaFile","code","size","push","url","length","savedMedia","createMediaFromFile","mediaObject","alt","alt_text","caption","title","raw","source_url","data","window","FormData","append","replace","key","path","body","method"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tcompact,\n\tflatMap,\n\tforEach,\n\tget,\n\thas,\n\tincludes,\n\tmap,\n\tnoop,\n\tomit,\n\tsome,\n\tstartsWith,\n} from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { createBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Browsers may use unexpected mime types, and they differ from browser to browser.\n * This function computes a flexible array of mime types from the mime type structured provided by the server.\n * Converts { jpg|jpeg|jpe: \"image/jpeg\" } into [ \"image/jpeg\", \"image/jpg\", \"image/jpeg\", \"image/jpe\" ]\n * The computation of this array instead of directly using the object,\n * solves the problem in chrome where mp3 files have audio/mp3 as mime type instead of audio/mpeg.\n * https://bugs.chromium.org/p/chromium/issues/detail?id=227004\n *\n * @param {?Object} wpMimeTypesObject Mime type object received from the server.\n * Extensions are keys separated by '|' and values are mime types associated with an extension.\n *\n * @return {?Array} An array of mime types or the parameter passed if it was \"falsy\".\n */\nexport function getMimeTypesArray( wpMimeTypesObject ) {\n\tif ( ! wpMimeTypesObject ) {\n\t\treturn wpMimeTypesObject;\n\t}\n\treturn flatMap( wpMimeTypesObject, ( mime, extensionsString ) => {\n\t\tconst [ type ] = mime.split( '/' );\n\t\tconst extensions = extensionsString.split( '|' );\n\t\treturn [\n\t\t\tmime,\n\t\t\t...map( extensions, ( extension ) => `${ type }/${ extension }` ),\n\t\t];\n\t} );\n}\n\n/**\n *\tMedia Upload is used by audio, image, gallery, video, and file blocks to\n *\thandle uploading a media file when a file upload button is activated.\n *\n *\tTODO: future enhancement to add an upload indicator.\n *\n * @param {Object} $0 Parameters object passed to the function.\n * @param {?Array} $0.allowedTypes Array with the types of media that can be uploaded, if unset all types are allowed.\n * @param {?Object} $0.additionalData Additional data to include in the request.\n * @param {Array} $0.filesList List of files.\n * @param {?number} $0.maxUploadFileSize Maximum upload size in bytes allowed for the site.\n * @param {Function} $0.onError Function called when an error happens.\n * @param {Function} $0.onFileChange Function called each time a file or a temporary representation of the file is available.\n * @param {?Object} $0.wpAllowedMimeTypes List of allowed mime types and file extensions.\n */\nexport async function uploadMedia( {\n\tallowedTypes,\n\tadditionalData = {},\n\tfilesList,\n\tmaxUploadFileSize,\n\tonError = noop,\n\tonFileChange,\n\twpAllowedMimeTypes = null,\n} ) {\n\t// Cast filesList to array.\n\tconst files = [ ...filesList ];\n\n\tconst filesSet = [];\n\tconst setAndUpdateFiles = ( idx, value ) => {\n\t\trevokeBlobURL( get( filesSet, [ idx, 'url' ] ) );\n\t\tfilesSet[ idx ] = value;\n\t\tonFileChange( compact( filesSet ) );\n\t};\n\n\t// Allowed type specified by consumer.\n\tconst isAllowedType = ( fileType ) => {\n\t\tif ( ! allowedTypes ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn some( allowedTypes, ( allowedType ) => {\n\t\t\t// If a complete mimetype is specified verify if it matches exactly the mime type of the file.\n\t\t\tif ( includes( allowedType, '/' ) ) {\n\t\t\t\treturn allowedType === fileType;\n\t\t\t}\n\t\t\t// Otherwise a general mime type is used and we should verify if the file mimetype starts with it.\n\t\t\treturn startsWith( fileType, `${ allowedType }/` );\n\t\t} );\n\t};\n\n\t// Allowed types for the current WP_User.\n\tconst allowedMimeTypesForUser = getMimeTypesArray( wpAllowedMimeTypes );\n\tconst isAllowedMimeTypeForUser = ( fileType ) => {\n\t\treturn includes( allowedMimeTypesForUser, fileType );\n\t};\n\n\t// Build the error message including the filename.\n\tconst triggerError = ( error ) => {\n\t\terror.message = [\n\t\t\t<strong key=\"filename\">{ error.file.name }</strong>,\n\t\t\t': ',\n\t\t\terror.message,\n\t\t];\n\n\t\tonError( error );\n\t};\n\n\tconst validFiles = [];\n\n\tfor ( const mediaFile of files ) {\n\t\t// Verify if user is allowed to upload this mime type.\n\t\t// Defer to the server when type not detected.\n\t\tif (\n\t\t\tallowedMimeTypesForUser &&\n\t\t\tmediaFile.type &&\n\t\t\t! isAllowedMimeTypeForUser( mediaFile.type )\n\t\t) {\n\t\t\ttriggerError( {\n\t\t\t\tcode: 'MIME_TYPE_NOT_ALLOWED_FOR_USER',\n\t\t\t\tmessage: __(\n\t\t\t\t\t'Sorry, you are not allowed to upload this file type.'\n\t\t\t\t),\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Check if the block supports this mime type.\n\t\t// Defer to the server when type not detected.\n\t\tif ( mediaFile.type && ! isAllowedType( mediaFile.type ) ) {\n\t\t\ttriggerError( {\n\t\t\t\tcode: 'MIME_TYPE_NOT_SUPPORTED',\n\t\t\t\tmessage: __( 'Sorry, this file type is not supported here.' ),\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Verify if file is greater than the maximum file upload size allowed for the site.\n\t\tif ( maxUploadFileSize && mediaFile.size > maxUploadFileSize ) {\n\t\t\ttriggerError( {\n\t\t\t\tcode: 'SIZE_ABOVE_LIMIT',\n\t\t\t\tmessage: __(\n\t\t\t\t\t'This file exceeds the maximum upload size for this site.'\n\t\t\t\t),\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Don't allow empty files to be uploaded.\n\t\tif ( mediaFile.size <= 0 ) {\n\t\t\ttriggerError( {\n\t\t\t\tcode: 'EMPTY_FILE',\n\t\t\t\tmessage: __( 'This file is empty.' ),\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t\tcontinue;\n\t\t}\n\n\t\tvalidFiles.push( mediaFile );\n\n\t\t// Set temporary URL to create placeholder media file, this is replaced\n\t\t// with final file from media gallery when upload is `done` below.\n\t\tfilesSet.push( { url: createBlobURL( mediaFile ) } );\n\t\tonFileChange( filesSet );\n\t}\n\n\tfor ( let idx = 0; idx < validFiles.length; ++idx ) {\n\t\tconst mediaFile = validFiles[ idx ];\n\t\ttry {\n\t\t\tconst savedMedia = await createMediaFromFile(\n\t\t\t\tmediaFile,\n\t\t\t\tadditionalData\n\t\t\t);\n\t\t\tconst mediaObject = {\n\t\t\t\t...omit( savedMedia, [ 'alt_text', 'source_url' ] ),\n\t\t\t\talt: savedMedia.alt_text,\n\t\t\t\tcaption: get( savedMedia, [ 'caption', 'raw' ], '' ),\n\t\t\t\ttitle: savedMedia.title.raw,\n\t\t\t\turl: savedMedia.source_url,\n\t\t\t};\n\t\t\tsetAndUpdateFiles( idx, mediaObject );\n\t\t} catch ( error ) {\n\t\t\t// Reset to empty on failure.\n\t\t\tsetAndUpdateFiles( idx, null );\n\t\t\tlet message;\n\t\t\tif ( has( error, [ 'message' ] ) ) {\n\t\t\t\tmessage = get( error, [ 'message' ] );\n\t\t\t} else {\n\t\t\t\tmessage = sprintf(\n\t\t\t\t\t// translators: %s: file name\n\t\t\t\t\t__( 'Error while uploading file %s to the media library.' ),\n\t\t\t\t\tmediaFile.name\n\t\t\t\t);\n\t\t\t}\n\t\t\tonError( {\n\t\t\t\tcode: 'GENERAL',\n\t\t\t\tmessage,\n\t\t\t\tfile: mediaFile,\n\t\t\t} );\n\t\t}\n\t}\n}\n\n/**\n * @param {File} file Media File to Save.\n * @param {?Object} additionalData Additional data to include in the request.\n *\n * @return {Promise} Media Object Promise.\n */\nfunction createMediaFromFile( file, additionalData ) {\n\t// Create upload payload.\n\tconst data = new window.FormData();\n\tdata.append( 'file', file, file.name || file.type.replace( '/', '.' ) );\n\tforEach( additionalData, ( value, key ) => data.append( key, value ) );\n\treturn apiFetch( {\n\t\tpath: '/wp/v2/media',\n\t\tbody: data,\n\t\tmethod: 'POST',\n\t} );\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wordpress/media-utils",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "WordPress Media Upload Utils.",
|
|
5
5
|
"author": "The WordPress Contributors",
|
|
6
6
|
"license": "GPL-2.0-or-later",
|
|
@@ -26,14 +26,14 @@
|
|
|
26
26
|
"module": "build-module/index.js",
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@babel/runtime": "^7.16.0",
|
|
29
|
-
"@wordpress/api-fetch": "^6.0
|
|
30
|
-
"@wordpress/blob": "^3.
|
|
31
|
-
"@wordpress/element": "^4.
|
|
32
|
-
"@wordpress/i18n": "^4.
|
|
29
|
+
"@wordpress/api-fetch": "^6.1.0",
|
|
30
|
+
"@wordpress/blob": "^3.4.0",
|
|
31
|
+
"@wordpress/element": "^4.2.0",
|
|
32
|
+
"@wordpress/i18n": "^4.4.0",
|
|
33
33
|
"lodash": "^4.17.21"
|
|
34
34
|
},
|
|
35
35
|
"publishConfig": {
|
|
36
36
|
"access": "public"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "c37fd7edbc3e379540d7b24fce75a6f640a434ae"
|
|
39
39
|
}
|
|
@@ -196,8 +196,8 @@ const getGalleryDetailsMediaFrame = () => {
|
|
|
196
196
|
} );
|
|
197
197
|
};
|
|
198
198
|
|
|
199
|
-
//
|
|
200
|
-
// we only need this set to display the image in the library
|
|
199
|
+
// The media library image object contains numerous attributes
|
|
200
|
+
// we only need this set to display the image in the library.
|
|
201
201
|
const slimImageObject = ( img ) => {
|
|
202
202
|
const attrSet = [
|
|
203
203
|
'sizes',
|
|
@@ -369,7 +369,7 @@ class MediaUpload extends Component {
|
|
|
369
369
|
|
|
370
370
|
onSelect() {
|
|
371
371
|
const { onSelect, multiple = false } = this.props;
|
|
372
|
-
// Get media attachment details from the frame state
|
|
372
|
+
// Get media attachment details from the frame state.
|
|
373
373
|
const attachment = this.frame.state().get( 'selection' ).toJSON();
|
|
374
374
|
onSelect( multiple ? attachment : attachment[ 0 ] );
|
|
375
375
|
}
|
|
@@ -422,15 +422,15 @@ class MediaUpload extends Component {
|
|
|
422
422
|
if ( frameContent && frameContent.collection ) {
|
|
423
423
|
const collection = frameContent.collection;
|
|
424
424
|
|
|
425
|
-
//
|
|
425
|
+
// Clean all attachments we have in memory.
|
|
426
426
|
collection
|
|
427
427
|
.toArray()
|
|
428
428
|
.forEach( ( model ) => model.trigger( 'destroy', model ) );
|
|
429
429
|
|
|
430
|
-
//
|
|
430
|
+
// Reset has more flag, if library had small amount of items all items may have been loaded before.
|
|
431
431
|
collection.mirroring._hasMore = true;
|
|
432
432
|
|
|
433
|
-
//
|
|
433
|
+
// Request items.
|
|
434
434
|
collection.more();
|
|
435
435
|
}
|
|
436
436
|
}
|
|
@@ -73,7 +73,7 @@ export async function uploadMedia( {
|
|
|
73
73
|
onFileChange,
|
|
74
74
|
wpAllowedMimeTypes = null,
|
|
75
75
|
} ) {
|
|
76
|
-
// Cast filesList to array
|
|
76
|
+
// Cast filesList to array.
|
|
77
77
|
const files = [ ...filesList ];
|
|
78
78
|
|
|
79
79
|
const filesSet = [];
|
|
@@ -83,7 +83,7 @@ export async function uploadMedia( {
|
|
|
83
83
|
onFileChange( compact( filesSet ) );
|
|
84
84
|
};
|
|
85
85
|
|
|
86
|
-
// Allowed type specified by consumer
|
|
86
|
+
// Allowed type specified by consumer.
|
|
87
87
|
const isAllowedType = ( fileType ) => {
|
|
88
88
|
if ( ! allowedTypes ) {
|
|
89
89
|
return true;
|
|
@@ -98,13 +98,13 @@ export async function uploadMedia( {
|
|
|
98
98
|
} );
|
|
99
99
|
};
|
|
100
100
|
|
|
101
|
-
// Allowed types for the current WP_User
|
|
101
|
+
// Allowed types for the current WP_User.
|
|
102
102
|
const allowedMimeTypesForUser = getMimeTypesArray( wpAllowedMimeTypes );
|
|
103
103
|
const isAllowedMimeTypeForUser = ( fileType ) => {
|
|
104
104
|
return includes( allowedMimeTypesForUser, fileType );
|
|
105
105
|
};
|
|
106
106
|
|
|
107
|
-
// Build the error message including the filename
|
|
107
|
+
// Build the error message including the filename.
|
|
108
108
|
const triggerError = ( error ) => {
|
|
109
109
|
error.message = [
|
|
110
110
|
<strong key="filename">{ error.file.name }</strong>,
|
|
@@ -146,7 +146,7 @@ export async function uploadMedia( {
|
|
|
146
146
|
continue;
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
//
|
|
149
|
+
// Verify if file is greater than the maximum file upload size allowed for the site.
|
|
150
150
|
if ( maxUploadFileSize && mediaFile.size > maxUploadFileSize ) {
|
|
151
151
|
triggerError( {
|
|
152
152
|
code: 'SIZE_ABOVE_LIMIT',
|
|
@@ -171,7 +171,7 @@ export async function uploadMedia( {
|
|
|
171
171
|
validFiles.push( mediaFile );
|
|
172
172
|
|
|
173
173
|
// Set temporary URL to create placeholder media file, this is replaced
|
|
174
|
-
// with final file from media gallery when upload is `done` below
|
|
174
|
+
// with final file from media gallery when upload is `done` below.
|
|
175
175
|
filesSet.push( { url: createBlobURL( mediaFile ) } );
|
|
176
176
|
onFileChange( filesSet );
|
|
177
177
|
}
|
|
@@ -220,7 +220,7 @@ export async function uploadMedia( {
|
|
|
220
220
|
* @return {Promise} Media Object Promise.
|
|
221
221
|
*/
|
|
222
222
|
function createMediaFromFile( file, additionalData ) {
|
|
223
|
-
// Create upload payload
|
|
223
|
+
// Create upload payload.
|
|
224
224
|
const data = new window.FormData();
|
|
225
225
|
data.append( 'file', file, file.name || file.type.replace( '/', '.' ) );
|
|
226
226
|
forEach( additionalData, ( value, key ) => data.append( key, value ) );
|