@wordpress/media-utils 4.30.0 → 4.31.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/index.js +0 -2
- package/build/components/index.js.map +1 -1
- package/build/components/media-upload/index.js +41 -74
- package/build/components/media-upload/index.js.map +1 -1
- package/build/index.js +0 -4
- package/build/index.js.map +1 -1
- package/build/utils/index.js +0 -1
- package/build/utils/index.js.map +1 -1
- package/build/utils/upload-media.js +33 -48
- package/build/utils/upload-media.js.map +1 -1
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/media-upload/index.js +40 -71
- package/build-module/components/media-upload/index.js.map +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/utils/index.js.map +1 -1
- package/build-module/utils/upload-media.js +32 -42
- package/build-module/utils/upload-media.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/media-utils/src/components/media-upload/index.js"],"names":["Component","__","DEFAULT_EMPTY_GALLERY","getFeaturedImageMediaFrame","wp","window","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","reduce","result","key","hasOwnProperty","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","mode","hasMedia","Array","isArray","isGallery","valueArray","forEach","more","done","frameContent","collection","toArray","mirroring","_hasMore","open"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\nconst DEFAULT_EMPTY_GALLERY = [];\n\n/**\n * Prepares the Featured Image toolbars and frames.\n *\n * @return {window.wp.media.view.MediaFrame.Select} The default media workflow.\n */\nconst getFeaturedImageMediaFrame = () => {\n\tconst { wp } = window;\n\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 {window.wp.media.view.MediaFrame.Post} The default media workflow.\n */\nconst getGalleryDetailsMediaFrame = () => {\n\tconst { wp } = window;\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\ttype: 'image',\n\t\t\t\t\t\t...this.options.library,\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 attrSet.reduce( ( result, key ) => {\n\t\tif ( img?.hasOwnProperty( key ) ) {\n\t\t\tresult[ key ] = img[ key ];\n\t\t}\n\t\treturn result;\n\t}, {} );\n};\n\nconst getAttachmentsCollection = ( ids ) => {\n\tconst { wp } = window;\n\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\tconst { wp } = window;\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\tconst { wp } = window;\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 { wp } = window;\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\tconst { wp } = window;\n\t\tconst { value } = this.props;\n\t\tthis.updateCollection();\n\n\t\t//Handle active tab in media model on model open.\n\t\tif ( this.props.mode ) {\n\t\t\tthis.frame.content.mode( this.props.mode );\n\t\t}\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( value ) ? !! value?.length : !! 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\t\tconst valueArray = Array.isArray( value ) ? value : [ value ];\n\n\t\tif ( ! isGallery ) {\n\t\t\tvalueArray.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( valueArray );\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,"names":["Component","__","DEFAULT_EMPTY_GALLERY","getFeaturedImageMediaFrame","wp","window","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","reduce","result","key","hasOwnProperty","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","mode","hasMedia","Array","isArray","isGallery","valueArray","forEach","more","done","frameContent","collection","toArray","mirroring","_hasMore","open"],"sources":["@wordpress/media-utils/src/components/media-upload/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\nconst DEFAULT_EMPTY_GALLERY = [];\n\n/**\n * Prepares the Featured Image toolbars and frames.\n *\n * @return {window.wp.media.view.MediaFrame.Select} The default media workflow.\n */\nconst getFeaturedImageMediaFrame = () => {\n\tconst { wp } = window;\n\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 {window.wp.media.view.MediaFrame.Post} The default media workflow.\n */\nconst getGalleryDetailsMediaFrame = () => {\n\tconst { wp } = window;\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\ttype: 'image',\n\t\t\t\t\t\t...this.options.library,\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 attrSet.reduce( ( result, key ) => {\n\t\tif ( img?.hasOwnProperty( key ) ) {\n\t\t\tresult[ key ] = img[ key ];\n\t\t}\n\t\treturn result;\n\t}, {} );\n};\n\nconst getAttachmentsCollection = ( ids ) => {\n\tconst { wp } = window;\n\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\tconst { wp } = window;\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\tconst { wp } = window;\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 { wp } = window;\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\tconst { wp } = window;\n\t\tconst { value } = this.props;\n\t\tthis.updateCollection();\n\n\t\t//Handle active tab in media model on model open.\n\t\tif ( this.props.mode ) {\n\t\t\tthis.frame.content.mode( this.props.mode );\n\t\t}\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( value ) ? !! value?.length : !! 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\t\tconst valueArray = Array.isArray( value ) ? value : [ value ];\n\n\t\tif ( ! isGallery ) {\n\t\t\tvalueArray.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( valueArray );\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"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/media-utils/src/index.js"],"
|
|
1
|
+
{"version":3,"names":[],"sources":["@wordpress/media-utils/src/index.js"],"sourcesContent":["export * from './components';\nexport * from './utils';\n"],"mappings":"AAAA,cAAc,cAAc;AAC5B,cAAc,SAAS"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/media-utils/src/utils/index.js"],"
|
|
1
|
+
{"version":3,"names":["uploadMedia"],"sources":["@wordpress/media-utils/src/utils/index.js"],"sourcesContent":["export { uploadMedia } from './upload-media';\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,gBAAgB"}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
import apiFetch from '@wordpress/api-fetch';
|
|
5
5
|
import { createBlobURL, revokeBlobURL } from '@wordpress/blob';
|
|
6
6
|
import { __, sprintf } from '@wordpress/i18n';
|
|
7
|
-
|
|
8
7
|
const noop = () => {};
|
|
8
|
+
|
|
9
9
|
/**
|
|
10
10
|
* Browsers may use unexpected mime types, and they differ from browser to browser.
|
|
11
11
|
* This function computes a flexible array of mime types from the mime type structured provided by the server.
|
|
@@ -19,19 +19,17 @@ const noop = () => {};
|
|
|
19
19
|
*
|
|
20
20
|
* @return {?Array} An array of mime types or the parameter passed if it was "falsy".
|
|
21
21
|
*/
|
|
22
|
-
|
|
23
|
-
|
|
24
22
|
export function getMimeTypesArray(wpMimeTypesObject) {
|
|
25
23
|
if (!wpMimeTypesObject) {
|
|
26
24
|
return wpMimeTypesObject;
|
|
27
25
|
}
|
|
28
|
-
|
|
29
26
|
return Object.entries(wpMimeTypesObject).map(([extensionsString, mime]) => {
|
|
30
27
|
const [type] = mime.split('/');
|
|
31
28
|
const extensions = extensionsString.split('|');
|
|
32
29
|
return [mime, ...extensions.map(extension => `${type}/${extension}`)];
|
|
33
30
|
}).flat();
|
|
34
31
|
}
|
|
32
|
+
|
|
35
33
|
/**
|
|
36
34
|
* Media Upload is used by audio, image, gallery, video, and file blocks to
|
|
37
35
|
* handle uploading a media file when a file upload button is activated.
|
|
@@ -47,7 +45,6 @@ export function getMimeTypesArray(wpMimeTypesObject) {
|
|
|
47
45
|
* @param {Function} $0.onFileChange Function called each time a file or a temporary representation of the file is available.
|
|
48
46
|
* @param {?Object} $0.wpAllowedMimeTypes List of allowed mime types and file extensions.
|
|
49
47
|
*/
|
|
50
|
-
|
|
51
48
|
export async function uploadMedia({
|
|
52
49
|
allowedTypes,
|
|
53
50
|
additionalData = {},
|
|
@@ -60,109 +57,105 @@ export async function uploadMedia({
|
|
|
60
57
|
// Cast filesList to array.
|
|
61
58
|
const files = [...filesList];
|
|
62
59
|
const filesSet = [];
|
|
63
|
-
|
|
64
60
|
const setAndUpdateFiles = (idx, value) => {
|
|
65
61
|
revokeBlobURL(filesSet[idx]?.url);
|
|
66
62
|
filesSet[idx] = value;
|
|
67
63
|
onFileChange(filesSet.filter(Boolean));
|
|
68
|
-
};
|
|
69
|
-
|
|
64
|
+
};
|
|
70
65
|
|
|
66
|
+
// Allowed type specified by consumer.
|
|
71
67
|
const isAllowedType = fileType => {
|
|
72
68
|
if (!allowedTypes) {
|
|
73
69
|
return true;
|
|
74
70
|
}
|
|
75
|
-
|
|
76
71
|
return allowedTypes.some(allowedType => {
|
|
77
72
|
// If a complete mimetype is specified verify if it matches exactly the mime type of the file.
|
|
78
73
|
if (allowedType.includes('/')) {
|
|
79
74
|
return allowedType === fileType;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
|
|
75
|
+
}
|
|
76
|
+
// Otherwise a general mime type is used and we should verify if the file mimetype starts with it.
|
|
83
77
|
return fileType.startsWith(`${allowedType}/`);
|
|
84
78
|
});
|
|
85
|
-
};
|
|
86
|
-
|
|
79
|
+
};
|
|
87
80
|
|
|
81
|
+
// Allowed types for the current WP_User.
|
|
88
82
|
const allowedMimeTypesForUser = getMimeTypesArray(wpAllowedMimeTypes);
|
|
89
|
-
|
|
90
83
|
const isAllowedMimeTypeForUser = fileType => {
|
|
91
84
|
return allowedMimeTypesForUser.includes(fileType);
|
|
92
85
|
};
|
|
93
|
-
|
|
94
86
|
const validFiles = [];
|
|
95
|
-
|
|
96
87
|
for (const mediaFile of files) {
|
|
97
88
|
// Verify if user is allowed to upload this mime type.
|
|
98
89
|
// Defer to the server when type not detected.
|
|
99
90
|
if (allowedMimeTypesForUser && mediaFile.type && !isAllowedMimeTypeForUser(mediaFile.type)) {
|
|
100
91
|
onError({
|
|
101
92
|
code: 'MIME_TYPE_NOT_ALLOWED_FOR_USER',
|
|
102
|
-
message: sprintf(
|
|
93
|
+
message: sprintf(
|
|
94
|
+
// translators: %s: file name.
|
|
103
95
|
__('%s: Sorry, you are not allowed to upload this file type.'), mediaFile.name),
|
|
104
96
|
file: mediaFile
|
|
105
97
|
});
|
|
106
98
|
continue;
|
|
107
|
-
}
|
|
108
|
-
// Defer to the server when type not detected.
|
|
109
|
-
|
|
99
|
+
}
|
|
110
100
|
|
|
101
|
+
// Check if the block supports this mime type.
|
|
102
|
+
// Defer to the server when type not detected.
|
|
111
103
|
if (mediaFile.type && !isAllowedType(mediaFile.type)) {
|
|
112
104
|
onError({
|
|
113
105
|
code: 'MIME_TYPE_NOT_SUPPORTED',
|
|
114
|
-
message: sprintf(
|
|
106
|
+
message: sprintf(
|
|
107
|
+
// translators: %s: file name.
|
|
115
108
|
__('%s: Sorry, this file type is not supported here.'), mediaFile.name),
|
|
116
109
|
file: mediaFile
|
|
117
110
|
});
|
|
118
111
|
continue;
|
|
119
|
-
}
|
|
120
|
-
|
|
112
|
+
}
|
|
121
113
|
|
|
114
|
+
// Verify if file is greater than the maximum file upload size allowed for the site.
|
|
122
115
|
if (maxUploadFileSize && mediaFile.size > maxUploadFileSize) {
|
|
123
116
|
onError({
|
|
124
117
|
code: 'SIZE_ABOVE_LIMIT',
|
|
125
|
-
message: sprintf(
|
|
118
|
+
message: sprintf(
|
|
119
|
+
// translators: %s: file name.
|
|
126
120
|
__('%s: This file exceeds the maximum upload size for this site.'), mediaFile.name),
|
|
127
121
|
file: mediaFile
|
|
128
122
|
});
|
|
129
123
|
continue;
|
|
130
|
-
}
|
|
131
|
-
|
|
124
|
+
}
|
|
132
125
|
|
|
126
|
+
// Don't allow empty files to be uploaded.
|
|
133
127
|
if (mediaFile.size <= 0) {
|
|
134
128
|
onError({
|
|
135
129
|
code: 'EMPTY_FILE',
|
|
136
|
-
message: sprintf(
|
|
130
|
+
message: sprintf(
|
|
131
|
+
// translators: %s: file name.
|
|
137
132
|
__('%s: This file is empty.'), mediaFile.name),
|
|
138
133
|
file: mediaFile
|
|
139
134
|
});
|
|
140
135
|
continue;
|
|
141
136
|
}
|
|
137
|
+
validFiles.push(mediaFile);
|
|
142
138
|
|
|
143
|
-
|
|
139
|
+
// Set temporary URL to create placeholder media file, this is replaced
|
|
144
140
|
// with final file from media gallery when upload is `done` below.
|
|
145
|
-
|
|
146
141
|
filesSet.push({
|
|
147
142
|
url: createBlobURL(mediaFile)
|
|
148
143
|
});
|
|
149
144
|
onFileChange(filesSet);
|
|
150
145
|
}
|
|
151
|
-
|
|
152
146
|
for (let idx = 0; idx < validFiles.length; ++idx) {
|
|
153
147
|
const mediaFile = validFiles[idx];
|
|
154
|
-
|
|
155
148
|
try {
|
|
156
149
|
var _savedMedia$caption$r;
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
150
|
+
const savedMedia = await createMediaFromFile(mediaFile, additionalData);
|
|
151
|
+
// eslint-disable-next-line camelcase
|
|
160
152
|
const {
|
|
161
153
|
alt_text,
|
|
162
154
|
source_url,
|
|
163
155
|
...savedMediaProps
|
|
164
156
|
} = savedMedia;
|
|
165
|
-
const mediaObject = {
|
|
157
|
+
const mediaObject = {
|
|
158
|
+
...savedMediaProps,
|
|
166
159
|
alt: savedMedia.alt_text,
|
|
167
160
|
caption: (_savedMedia$caption$r = savedMedia.caption?.raw) !== null && _savedMedia$caption$r !== void 0 ? _savedMedia$caption$r : '',
|
|
168
161
|
title: savedMedia.title.raw,
|
|
@@ -173,14 +166,13 @@ export async function uploadMedia({
|
|
|
173
166
|
// Reset to empty on failure.
|
|
174
167
|
setAndUpdateFiles(idx, null);
|
|
175
168
|
let message;
|
|
176
|
-
|
|
177
169
|
if (error.message) {
|
|
178
170
|
message = error.message;
|
|
179
171
|
} else {
|
|
180
|
-
message = sprintf(
|
|
172
|
+
message = sprintf(
|
|
173
|
+
// translators: %s: file name
|
|
181
174
|
__('Error while uploading file %s to the media library.'), mediaFile.name);
|
|
182
175
|
}
|
|
183
|
-
|
|
184
176
|
onError({
|
|
185
177
|
code: 'GENERAL',
|
|
186
178
|
message,
|
|
@@ -189,22 +181,20 @@ export async function uploadMedia({
|
|
|
189
181
|
}
|
|
190
182
|
}
|
|
191
183
|
}
|
|
184
|
+
|
|
192
185
|
/**
|
|
193
186
|
* @param {File} file Media File to Save.
|
|
194
187
|
* @param {?Object} additionalData Additional data to include in the request.
|
|
195
188
|
*
|
|
196
189
|
* @return {Promise} Media Object Promise.
|
|
197
190
|
*/
|
|
198
|
-
|
|
199
191
|
function createMediaFromFile(file, additionalData) {
|
|
200
192
|
// Create upload payload.
|
|
201
193
|
const data = new window.FormData();
|
|
202
194
|
data.append('file', file, file.name || file.type.replace('/', '.'));
|
|
203
|
-
|
|
204
195
|
if (additionalData) {
|
|
205
196
|
Object.entries(additionalData).forEach(([key, value]) => data.append(key, value));
|
|
206
197
|
}
|
|
207
|
-
|
|
208
198
|
return apiFetch({
|
|
209
199
|
path: '/wp/v2/media',
|
|
210
200
|
body: data,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/media-utils/src/utils/upload-media.js"],"names":["apiFetch","createBlobURL","revokeBlobURL","__","sprintf","noop","getMimeTypesArray","wpMimeTypesObject","Object","entries","map","extensionsString","mime","type","split","extensions","extension","flat","uploadMedia","allowedTypes","additionalData","filesList","maxUploadFileSize","onError","onFileChange","wpAllowedMimeTypes","files","filesSet","setAndUpdateFiles","idx","value","url","filter","Boolean","isAllowedType","fileType","some","allowedType","includes","startsWith","allowedMimeTypesForUser","isAllowedMimeTypeForUser","validFiles","mediaFile","code","message","name","file","size","push","length","savedMedia","createMediaFromFile","alt_text","source_url","savedMediaProps","mediaObject","alt","caption","raw","title","error","data","window","FormData","append","replace","forEach","key","path","body","method"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { createBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { __, sprintf } from '@wordpress/i18n';\n\nconst noop = () => {};\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 Object.entries( wpMimeTypesObject )\n\t\t.map( ( [ extensionsString, mime ] ) => {\n\t\t\tconst [ type ] = mime.split( '/' );\n\t\t\tconst extensions = extensionsString.split( '|' );\n\t\t\treturn [\n\t\t\t\tmime,\n\t\t\t\t...extensions.map(\n\t\t\t\t\t( extension ) => `${ type }/${ extension }`\n\t\t\t\t),\n\t\t\t];\n\t\t} )\n\t\t.flat();\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( filesSet[ idx ]?.url );\n\t\tfilesSet[ idx ] = value;\n\t\tonFileChange( filesSet.filter( Boolean ) );\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 allowedTypes.some( ( 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 ( allowedType.includes( '/' ) ) {\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 fileType.startsWith( `${ 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 allowedMimeTypesForUser.includes( fileType );\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\tonError( {\n\t\t\t\tcode: 'MIME_TYPE_NOT_ALLOWED_FOR_USER',\n\t\t\t\tmessage: sprintf(\n\t\t\t\t\t// translators: %s: file name.\n\t\t\t\t\t__(\n\t\t\t\t\t\t'%s: Sorry, you are not allowed to upload this file type.'\n\t\t\t\t\t),\n\t\t\t\t\tmediaFile.name\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\tonError( {\n\t\t\t\tcode: 'MIME_TYPE_NOT_SUPPORTED',\n\t\t\t\tmessage: sprintf(\n\t\t\t\t\t// translators: %s: file name.\n\t\t\t\t\t__( '%s: Sorry, this file type is not supported here.' ),\n\t\t\t\t\tmediaFile.name\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// 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\tonError( {\n\t\t\t\tcode: 'SIZE_ABOVE_LIMIT',\n\t\t\t\tmessage: sprintf(\n\t\t\t\t\t// translators: %s: file name.\n\t\t\t\t\t__(\n\t\t\t\t\t\t'%s: This file exceeds the maximum upload size for this site.'\n\t\t\t\t\t),\n\t\t\t\t\tmediaFile.name\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\tonError( {\n\t\t\t\tcode: 'EMPTY_FILE',\n\t\t\t\tmessage: sprintf(\n\t\t\t\t\t// translators: %s: file name.\n\t\t\t\t\t__( '%s: This file is empty.' ),\n\t\t\t\t\tmediaFile.name\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\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\t// eslint-disable-next-line camelcase\n\t\t\tconst { alt_text, source_url, ...savedMediaProps } = savedMedia;\n\t\t\tconst mediaObject = {\n\t\t\t\t...savedMediaProps,\n\t\t\t\talt: savedMedia.alt_text,\n\t\t\t\tcaption: 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 ( error.message ) {\n\t\t\t\tmessage = 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\tif ( additionalData ) {\n\t\tObject.entries( additionalData ).forEach( ( [ key, value ] ) =>\n\t\t\tdata.append( key, value )\n\t\t);\n\t}\n\treturn apiFetch( {\n\t\tpath: '/wp/v2/media',\n\t\tbody: data,\n\t\tmethod: 'POST',\n\t} );\n}\n"]}
|
|
1
|
+
{"version":3,"names":["apiFetch","createBlobURL","revokeBlobURL","__","sprintf","noop","getMimeTypesArray","wpMimeTypesObject","Object","entries","map","extensionsString","mime","type","split","extensions","extension","flat","uploadMedia","allowedTypes","additionalData","filesList","maxUploadFileSize","onError","onFileChange","wpAllowedMimeTypes","files","filesSet","setAndUpdateFiles","idx","value","url","filter","Boolean","isAllowedType","fileType","some","allowedType","includes","startsWith","allowedMimeTypesForUser","isAllowedMimeTypeForUser","validFiles","mediaFile","code","message","name","file","size","push","length","_savedMedia$caption$r","savedMedia","createMediaFromFile","alt_text","source_url","savedMediaProps","mediaObject","alt","caption","raw","title","error","data","window","FormData","append","replace","forEach","key","path","body","method"],"sources":["@wordpress/media-utils/src/utils/upload-media.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { createBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { __, sprintf } from '@wordpress/i18n';\n\nconst noop = () => {};\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 Object.entries( wpMimeTypesObject )\n\t\t.map( ( [ extensionsString, mime ] ) => {\n\t\t\tconst [ type ] = mime.split( '/' );\n\t\t\tconst extensions = extensionsString.split( '|' );\n\t\t\treturn [\n\t\t\t\tmime,\n\t\t\t\t...extensions.map(\n\t\t\t\t\t( extension ) => `${ type }/${ extension }`\n\t\t\t\t),\n\t\t\t];\n\t\t} )\n\t\t.flat();\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( filesSet[ idx ]?.url );\n\t\tfilesSet[ idx ] = value;\n\t\tonFileChange( filesSet.filter( Boolean ) );\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 allowedTypes.some( ( 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 ( allowedType.includes( '/' ) ) {\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 fileType.startsWith( `${ 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 allowedMimeTypesForUser.includes( fileType );\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\tonError( {\n\t\t\t\tcode: 'MIME_TYPE_NOT_ALLOWED_FOR_USER',\n\t\t\t\tmessage: sprintf(\n\t\t\t\t\t// translators: %s: file name.\n\t\t\t\t\t__(\n\t\t\t\t\t\t'%s: Sorry, you are not allowed to upload this file type.'\n\t\t\t\t\t),\n\t\t\t\t\tmediaFile.name\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\tonError( {\n\t\t\t\tcode: 'MIME_TYPE_NOT_SUPPORTED',\n\t\t\t\tmessage: sprintf(\n\t\t\t\t\t// translators: %s: file name.\n\t\t\t\t\t__( '%s: Sorry, this file type is not supported here.' ),\n\t\t\t\t\tmediaFile.name\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// 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\tonError( {\n\t\t\t\tcode: 'SIZE_ABOVE_LIMIT',\n\t\t\t\tmessage: sprintf(\n\t\t\t\t\t// translators: %s: file name.\n\t\t\t\t\t__(\n\t\t\t\t\t\t'%s: This file exceeds the maximum upload size for this site.'\n\t\t\t\t\t),\n\t\t\t\t\tmediaFile.name\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\tonError( {\n\t\t\t\tcode: 'EMPTY_FILE',\n\t\t\t\tmessage: sprintf(\n\t\t\t\t\t// translators: %s: file name.\n\t\t\t\t\t__( '%s: This file is empty.' ),\n\t\t\t\t\tmediaFile.name\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\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\t// eslint-disable-next-line camelcase\n\t\t\tconst { alt_text, source_url, ...savedMediaProps } = savedMedia;\n\t\t\tconst mediaObject = {\n\t\t\t\t...savedMediaProps,\n\t\t\t\talt: savedMedia.alt_text,\n\t\t\t\tcaption: 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 ( error.message ) {\n\t\t\t\tmessage = 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\tif ( additionalData ) {\n\t\tObject.entries( additionalData ).forEach( ( [ key, value ] ) =>\n\t\t\tdata.append( key, value )\n\t\t);\n\t}\n\treturn apiFetch( {\n\t\tpath: '/wp/v2/media',\n\t\tbody: data,\n\t\tmethod: 'POST',\n\t} );\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wordpress/media-utils",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.31.0",
|
|
4
4
|
"description": "WordPress Media Upload Utils.",
|
|
5
5
|
"author": "The WordPress Contributors",
|
|
6
6
|
"license": "GPL-2.0-or-later",
|
|
@@ -26,13 +26,13 @@
|
|
|
26
26
|
"module": "build-module/index.js",
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@babel/runtime": "^7.16.0",
|
|
29
|
-
"@wordpress/api-fetch": "^6.
|
|
30
|
-
"@wordpress/blob": "^3.
|
|
31
|
-
"@wordpress/element": "^5.
|
|
32
|
-
"@wordpress/i18n": "^4.
|
|
29
|
+
"@wordpress/api-fetch": "^6.37.0",
|
|
30
|
+
"@wordpress/blob": "^3.40.0",
|
|
31
|
+
"@wordpress/element": "^5.17.0",
|
|
32
|
+
"@wordpress/i18n": "^4.40.0"
|
|
33
33
|
},
|
|
34
34
|
"publishConfig": {
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "78a288d55b83a713b2f7d98d5a855c0771a2afc6"
|
|
38
38
|
}
|