1"use strict";(self.webpackChunknodebb=self.webpackChunknodebb||[]).push([[33085],{43103(D,b,v){var p,g;p=[v(29930)],g=(function(m){const u={};u.init=function(a){const r=a.uploadFormEl;if(r.length&&(r.attr("action",config.relative_path+a.route),a.dragDropAreaEl&&u.handleDragDrop({container:a.dragDropAreaEl,callback:function(o){u.ajaxSubmit({uploadForm:r,upload:o,callback:a.callback})}}),a.pasteEl&&u.handlePaste({container:a.pasteEl,callback:function(o){u.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 n=(e.target||{}).files||($(this).val()?[{name:$(this).val(),type:utils.fileMimeType($(this).val())}]:null);n&&u.ajaxSubmit({uploadForm:r,upload:{files:n,fileNames:Array.from(n).map(t=>t.name)},callback:a.callback})})}},u.handleDragDrop=function(a){let r=!1;const o=a.container,e=a.container.find(".imagedrop");function n(d){d.originalEvent.relatedTarget||t()}function t(){e.hide(),e.off("dragleave",t),$(document).off("dragend drop",t).off("dragleave",n)}o.on("dragenter",function(){r||e.is(":visible")||(e.css("top","0px"),e.css("height",o.height()+"px"),e.css("line-height",o.height()+"px"),e.show(),e.on("dragleave",t),$(document).on("dragend drop",t).on("dragleave",n))}),e.on("drop",function(c){c.preventDefault();const f=c.originalEvent.dataTransfer.files;if(f.length){let i;if(window.FormData){i=new FormData;for(let l=0;l<f.length;++l)i.append("files[]",f[l],f[l].name)}a.callback({files:f,formData:i})}return t(),!1});function s(d){return d.preventDefault(),!1}$(document).off("dragstart").on("dragstart",function(){r=!0}).off("dragend mouseup").on("dragend mouseup",function(){r=!1}),e.on("dragover",s),e.on("dragenter",s)},u.handlePaste=function(a){a.container.on("paste",async function(o){const e=(o.clipboardData||o.originalEvent.clipboardData||{}).items,n=[],t=[],s=window.FormData?new FormData:null;function d(f,i){n.push(f),t.push(i),s&&s.append("files[]",f,i)}const{convertPastedImageTo:c}=config;for(const f of e){const i=f.getAsFile();if(i)try{if(c&&i.type.match(/image./)&&i.type!==c){const l=await F(i,c,.9),h=l.type.split("/")[1],E=`${utils.generateUUID()}-image.${h}`,k=(i.name||"image").replace(/\.[^.]+$/,""),w=new File([l],`${k}.${h}`,{type:l.type});d(w,E)}else{const l=utils.generateUUID()+"-"+i.name;d(i,l)}}catch(l){m.error(l),console.error(l)}}n.length&&a.callback({files:n,fileNames:t,formData:s})})},u.ajaxSubmit=function(a){const r=[...a.upload.files];for(let e=0;e<r.length;++e){const n=r[e].type.match(/image./);if(n&&!app.user.privileges["upload:post:image"]||!n&&!app.user.privileges["upload:post:file"])return m.error("[[error:no-privileges]]");if(!app.user.isAdmin&&r[e].size>parseInt(config.maximumFileSize,10)*1024)return a.uploadForm[0].reset(),m.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 n=e.responseJSON&&(e.responseJSON.error||e.responseJSON.status&&e.responseJSON.status.message)||"[[error:parse-error]]";
1e&&e.status===413&&(n="[[error:api.413]]"),m.error(n),m.remove(o)},uploadProgress:function(e,n,t,s){m.alert({alert_id:o,message:"[[modules:composer.uploading, "+s+"%]]"})},success:function(e){const n=e.response.images;if(n&&n.length)for(let t=0;t<n.length;++t)n[t].filename=r[t].name,n[t].isImage=/image./.test(r[t].type);a.callback(n)},complete:function(){a.uploadForm[0].reset(),setTimeout(m.remove,100,o)}}),!1}),a.uploadForm.submit()};function F(a,r,o=.9){return new Promise((e,n)=>{const t=new Image,s=new FileReader;s.onload=d=>{t.onload=()=>{const c=document.createElement("canvas");c.width=t.width,c.height=t.height,c.getContext("2d").drawImage(t,0,0),c.toBlob(i=>{if(!i)return n(new Error("Conversion failed"));e(i)},r,o)},t.onerror=n,t.src=d.target.result},s.onerror=n,s.readAsDataURL(a)})}return u}).apply(b,p),g!==void 0&&(D.exports=g)}}]);
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.