window.wp=window.wp||{};(function(exports,$){var Uploader;if(typeof _wpPluploadSettings==='undefined'){return;}
Uploader=function(options){var self=this,isIE,elements={container:'container',browser:'browse_button',dropzone:'drop_element'},tryAgainCount={},tryAgain,key,error,fileUploaded;this.supports={upload:Uploader.browser.supported};this.supported=this.supports.upload;if(!this.supported){return;}
this.plupload=$.extend(true,{multipart_params:{}},Uploader.defaults);this.container=document.body;$.extend(true,this,options);for(key in this){if(typeof this[key]==='function'){this[key]=$.proxy(this[key],this);}}
for(key in elements){if(!this[key]){continue;}
this[key]=$(this[key]).first();if(!this[key].length){delete this[key];continue;}
if(!this[key].prop('id')){this[key].prop('id','__wp-uploader-id-'+Uploader.uuid++);}
this.plupload[elements[key]]=this[key].prop('id');}
if(!(this.browser&&this.browser.length)&&!(this.dropzone&&this.dropzone.length)){return;}
this.uploader=new plupload.Uploader(this.plupload);delete this.plupload;this.param(this.params||{});delete this.params;tryAgain=function(message,data,file){var times,id;if(!data||!data.responseHeaders){error(pluploadL10n.http_error_image,data,file,'no-retry');return;}
id=data.responseHeaders.match(/x-wp-upload-attachment-id:\s*(\d+)/i);if(id&&id[1]){id=id[1];}else{error(pluploadL10n.http_error_image,data,file,'no-retry');return;}
times=tryAgainCount[file.id];if(times&&times>4){$.ajax({type:'post',url:ajaxurl,dataType:'json',data:{action:'media-create-image-subsizes',_wpnonce:_wpPluploadSettings.defaults.multipart_params._wpnonce,attachment_id:id,_wp_upload_failed_cleanup:true,}});error(message,data,file,'no-retry');return;}
if(!times){tryAgainCount[file.id]=1;}else{tryAgainCount[file.id]=++times;}
$.ajax({type:'post',url:ajaxurl,dataType:'json',data:{action:'media-create-image-subsizes',_wpnonce:_wpPluploadSettings.defaults.multipart_params._wpnonce,attachment_id:id,}}).done(function(response){if(response.success){fileUploaded(self.uploader,file,response);}else{if(response.data&&response.data.message){message=response.data.message;}
error(message,data,file,'no-retry');}}).fail(function(jqXHR){if(jqXHR.status>=500&&jqXHR.status<600){tryAgain(message,data,file);return;}
error(message,data,file,'no-retry');});}
error=function(message,data,file,retry){var isImage=file.type&&file.type.indexOf('image/')===0,status=data&&data.status;if(retry!=='no-retry'&&isImage&&status>=500&&status<600){tryAgain(message,data,file);return;}
if(file.attachment){file.attachment.destroy();}
Uploader.errors.unshift({message:message||pluploadL10n.default_error,data:data,file:file});self.error(message,data,file);};fileUploaded=function(up,file,response){var complete;_.each(['file','loaded','size','percent'],function(key){file.attachment.unset(key);});file.attachment.set(_.extend(response.data,{uploading:false}));wp.media.model.Attachment.get(response.data.id,file.attachment);complete=Uploader.queue.all(function(attachment){return!attachment.get('uploading');});if(complete){Uploader.queue.reset();}
self.success(file.attachment);}
this.uploader.bind('init',function(uploader){var timer,active,dragdrop,dropzone=self.dropzone;dragdrop=self.supports.dragdrop=uploader.features.dragdrop&&!Uploader.browser.mobile;if(!dropzone){return;}
dropzone.toggleClass('supports-drag-drop',!!dragdrop);if(!dragdrop){return dropzone.unbind('.wp-uploader');}
dropzone.on('dragover.wp-uploader',function(){if(timer){clearTimeout(timer);}
if(active){return;}
dropzone.trigger('dropzone:enter').addClass('drag-over');active=true;});dropzone.on('dragleave.wp-uploader, drop.wp-uploader',function(){timer=setTimeout(function(){active=false;dropzone.trigger('dropzone:leave').removeClass('drag-over');},0);});self.ready=true;$(self).trigger('uploader:ready');});this.uploader.bind('postinit',function(up){up.refresh();self.init();});this.uploader.init();if(this.browser){this.browser.on('mouseenter',this.refresh);}else{this.uploader.disableBrowse(true);}
$(self).on('uploader:ready',function(){$('.moxie-shim-html5 input[type="file"]').attr({tabIndex:'-1','aria-hidden':'true'});});this.uploader.bind('FilesAdded',function(up,files){_.each(files,function(file){var attributes,image;if(plupload.FAILED===file.status){return;}
if(file.type==='image/heic'&&up.settings.heic_upload_error){Uploader.errors.unshift({message:pluploadL10n.unsupported_image,data:{},file:file});}else if(file.type==='image/webp'&&up.settings.webp_upload_error){error(pluploadL10n.noneditable_image,{},file,'no-retry');up.removeFile(file);return;}else if(file.type==='image/avif'&&up.settings.avif_upload_error){error(pluploadL10n.noneditable_image,{},file,'no-retry');up.removeFile(file);return;}
attributes=_.extend({file:file,uploading:true,date:new Date(),filename:file.name,menuOrder:0,uploadedTo:wp.media.model.settings.post.id},_.pick(file,'loaded','size','percent'));image=/(?:jpe?g|png|gif)$/i.exec(file.name);if(image){attributes.type='image';attributes.subtype=('jpg'===image[0])?'jpeg':image[0];}
file.attachment=wp.media.model.Attachment.create(attributes);Uploader.queue.add(file.attachment);self.added(file.attachment);});up.refresh();up.start();});this.uploader.bind('UploadProgress',function(up,file){file.attachment.set(_.pick(file,'loaded','percent'));self.progress(file.attachment);});this.uploader.bind('FileUploaded',function(up,file,response){try{response=JSON.parse(response.response);}catch(e){return error(pluploadL10n.default_error,e,file);}
if(!_.isObject(response)||_.isUndefined(response.success)){return error(pluploadL10n.default_error,null,file);}else if(!response.success){return error(response.data&&response.data.message,response.data,file);}
fileUploaded(up,file,response);});this.uploader.bind('Error',function(up,pluploadError){var message=pluploadL10n.default_error,key;for(key in Uploader.errorMap){if(pluploadError.code===plupload[key]){message=Uploader.errorMap[key];if(typeof message==='function'){message=message(pluploadError.file,pluploadError);}
break;}}
error(message,pluploadError,pluploadError.file);up.refresh();});};$.extend(Uploader,_wpPluploadSettings);Uploader.uuid=0;Uploader.errorMap={'FAILED':pluploadL10n.upload_failed,'FILE_EXTENSION_ERROR':pluploadL10n.invalid_filetype,'IMAGE_FORMAT_ERROR':pluploadL10n.not_an_image,'IMAGE_MEMORY_ERROR':pluploadL10n.image_memory_exceeded,'IMAGE_DIMENSIONS_ERROR':pluploadL10n.image_dimensions_exceeded,'GENERIC_ERROR':pluploadL10n.upload_failed,'IO_ERROR':pluploadL10n.io_error,'SECURITY_ERROR':pluploadL10n.security_error,'FILE_SIZE_ERROR':function(file){return pluploadL10n.file_exceeds_size_limit.replace('%s',file.name);},'HTTP_ERROR':function(file){if(file.type&&file.type.indexOf('image/')===0){return pluploadL10n.http_error_image;}
return pluploadL10n.http_error;},};$.extend(Uploader.prototype,{param:function(key,value){if(arguments.length===1&&typeof key==='string'){return this.uploader.settings.multipart_params[key];}
if(arguments.length>1){this.uploader.settings.multipart_params[key]=value;}else{$.extend(this.uploader.settings.multipart_params,key);}},init:function(){},error:function(){},success:function(){},added:function(){},progress:function(){},complete:function(){},refresh:function(){var node,attached,container,id;if(this.browser){node=this.browser[0];while(node){if(node===document.body){attached=true;break;}
node=node.parentNode;}
if(!attached){id='wp-uploader-browser-'+this.uploader.id;container=$('#'+id);if(!container.length){container=$('<div class="wp-uploader-browser" />').css({position:'fixed',top:'-1000px',left:'-1000px',height:0,width:0}).attr('id','wp-uploader-browser-'+this.uploader.id).appendTo('body');}
container.append(this.browser);}}
this.uploader.refresh();}});Uploader.queue=new wp.media.model.Attachments([],{query:false});Uploader.errors=new Backbone.Collection();exports.Uploader=Uploader;})(wp,jQuery);