1"use strict";(self.webpackChunknodebb=self.webpackChunknodebb||[]).push([[33085],{43103(D,b,v){var g,p;g=[v(29930)],p=(function(d){const c={};c.init=function(a){const r=a.uploadFormEl;if(r.length&&(r.attr("action",config.relative_path+a.route),a.dragDropAreaEl&&c.handleDragDrop({container:a.dragDropAreaEl,callback:function(o){c.ajaxSubmit({uploadForm:r,upload:o,callback:a.callback})}}),a.pasteEl&&c.handlePaste({container:a.pasteEl,callback:function(o){c.ajaxSubmit({uploadForm:r,upload:o,callback:a.callback})}}),a.uploadBtnEl)){const o=r.find('input[name="files[]"]');a.uploadBtnEl.on("click",function(){return o.trigger("click"),!1}),o.on("change",function(e){const t=(e.target||{}).files||($(this).val()?[{name:$(this).val(),type:utils.fileMimeType($(this).val())}]:null);t&&c.ajaxSubmit({uploadForm:r,upload:{files:t,fileNames:Array.from(t).map(n=>n.name)},callback:a.callback})})}},c.handleDragDrop=function(a){let r=!1;const o=a.container,e=a.container.find(".imagedrop");o.on("dragenter",function(){r||(e.css("top","0px"),e.css("height",o.height()+"px"),e.css("line-height",o.height()+"px"),e.show(),e.on("dragleave",function(){e.hide(),e.off("dragleave")}))}),e.on("drop",function(i){i.preventDefault();const f=i.originalEvent.dataTransfer.files;if(f.length){let l;if(window.FormData){l=new FormData;for(let u=0;u<f.length;++u)l.append("files[]",f[u],f[u].name)}a.callback({files:f,formData:l})}return e.hide(),!1});function t(n){return n.preventDefault(),!1}$(document).off("dragstart").on("dragstart",function(){r=!0}).off("dragend").on("dragend, mouseup",function(){r=!1}),e.on("dragover",t),e.on("dragenter",t)},c.handlePaste=function(a){a.container.on("paste",async function(o){const e=(o.clipboardData||o.originalEvent.clipboardData||{}).items,t=[],n=[],i=window.FormData?new FormData:null;function f(u,s){t.push(u),n.push(s),i&&i.append("files[]",u,s)}const{convertPastedImageTo:l}=config;for(const u of e){const s=u.getAsFile();if(s)try{if(l&&s.type.match(/image./)&&s.type!==l){const m=await F(s,l,.9),E=m.type.split("/")[1],h=`${utils.generateUUID()}-image.${E}`,k=new File([m],h,{type:m.type});f(k,h)}else{const m=utils.generateUUID()+"-"+s.name;f(s,m)}}catch(m){d.error(m),console.error(m)}}t.length&&a.callback({files:t,fileNames:n,formData:i})})},c.ajaxSubmit=function(a){const r=[...a.upload.files];for(let e=0;e<r.length;++e){const t=r[e].type.match(/image./);if(t&&!app.user.privileges["upload:post:image"]||!t&&!app.user.privileges["upload:post:file"])return d.error("[[error:no-privileges]]");if(!app.user.isAdmin&&r[e].size>parseInt(config.maximumFileSize,10)*1024)return a.uploadForm[0].reset(),d.error("[[error:file-too-big, "+config.maximumFileSize+"]]")}const o=Date.now();a.uploadForm.off("submit").on("submit",function(){return $(this).ajaxSubmit({headers:{"x-csrf-token":config.csrf_token},resetForm:!0,clearForm:!0,formData:a.upload.formData,error:function(e){let t=e.responseJSON&&(e.responseJSON.error||e.responseJSON.status&&e.responseJSON.status.message)||"[[error:parse-error]]";
1e&&e.status===413&&(t="[[error:api.413]]"),d.error(t),d.remove(o)},uploadProgress:function(e,t,n,i){d.alert({alert_id:o,message:"[[modules:composer.uploading, "+i+"%]]"})},success:function(e){const t=e.response.images;if(t&&t.length)for(let n=0;n<t.length;++n)t[n].filename=r[n].name,t[n].isImage=/image./.test(r[n].type);a.callback(t)},complete:function(){a.uploadForm[0].reset(),setTimeout(d.remove,100,o)}}),!1}),a.uploadForm.submit()};function F(a,r,o=.9){return new Promise((e,t)=>{const n=new Image,i=new FileReader;i.onload=f=>{n.onload=()=>{const l=document.createElement("canvas");l.width=n.width,l.height=n.height,l.getContext("2d").drawImage(n,0,0),l.toBlob(s=>{if(!s)return t(new Error("Conversion failed"));e(s)},r,o)},n.onerror=t,n.src=f.target.result},i.onerror=t,i.readAsDataURL(a)})}return c}).apply(b,g),p!==void 0&&(D.exports=p)}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.