mirror of
https://github.com/MarSeventh/CloudFlare-ImgBed.git
synced 2026-04-25 06:35:21 +00:00
2 lines
50 KiB
JavaScript
2 lines
50 KiB
JavaScript
(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[718],{213:function(e,t,o){"use strict";o(5331),o(9104)},456:function(e,t,o){"use strict";o(5331)},1393:function(e,t,o){o(6573),o(8100),o(7936),o(9577),o(4979),o(4603),o(7566),o(8721),function(t,o){e.exports=o()}(0,function(){return function(e){var t={};function o(s){if(t[s])return t[s].exports;var i=t[s]={i:s,l:!1,exports:{}};return e[s].call(i.exports,i,i.exports,o),i.l=!0,i.exports}return o.m=e,o.c=t,o.d=function(e,t,s){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(o.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)o.d(s,i,function(t){return e[t]}.bind(null,i));return s},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,o){"use strict";var s;function i(e){return["image/png","image/jpeg","image/gif"].some(t=>t===e)}o.r(t),o.d(t,"canvastoDataURL",function(){return a}),o.d(t,"canvastoFile",function(){return n}),o.d(t,"dataURLtoFile",function(){return u}),o.d(t,"dataURLtoImage",function(){return d}),o.d(t,"downloadFile",function(){return c}),o.d(t,"filetoDataURL",function(){return p}),o.d(t,"imagetoCanvas",function(){return m}),o.d(t,"urltoBlob",function(){return f}),o.d(t,"urltoImage",function(){return g}),o.d(t,"compress",function(){return y}),o.d(t,"compressAccurately",function(){return C}),o.d(t,"EImageType",function(){return s}),function(e){e.PNG="image/png",e.JPEG="image/jpeg",e.GIF="image/gif"}(s||(s={}));var l=function(e,t,o,s){return new(o||(o=Promise))(function(i,l){function a(e){try{r(s.next(e))}catch(e){l(e)}}function n(e){try{r(s.throw(e))}catch(e){l(e)}}function r(e){var t;e.done?i(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.apply(e,t||[])).next())})};function a(e,t=.92,o=s.JPEG){return l(this,void 0,void 0,function*(){return i(o)||(o=s.JPEG),e.toDataURL(o,t)})}function n(e,t=.92,o=s.JPEG){return new Promise(s=>e.toBlob(e=>s(e),o,t))}var r=function(e,t,o,s){return new(o||(o=Promise))(function(i,l){function a(e){try{r(s.next(e))}catch(e){l(e)}}function n(e){try{r(s.throw(e))}catch(e){l(e)}}function r(e){var t;e.done?i(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.apply(e,t||[])).next())})};function u(e,t){return r(this,void 0,void 0,function*(){const o=e.split(",");let s=o[0].match(/:(.*?);/)[1];const l=atob(o[1]);let a=l.length;const n=new Uint8Array(a);for(;a--;)n[a]=l.charCodeAt(a);return i(t)&&(s=t),new Blob([n],{type:s})})}function d(e){return new Promise((t,o)=>{const s=new Image;s.onload=()=>t(s),s.onerror=()=>o(new Error("dataURLtoImage(): dataURL is illegal")),s.src=e})}function c(e,t){const o=document.createElement("a");o.href=window.URL.createObjectURL(e),o.download=t||Date.now().toString(36),document.body.appendChild(o);const s=document.createEvent("MouseEvents");s.initEvent("click",!1,!1),o.dispatchEvent(s),document.body.removeChild(o)}function p(e){return new Promise(t=>{const o=new FileReader;o.onloadend=e=>t(e.target.result),o.readAsDataURL(e)})}var h=function(e,t,o,s){return new(o||(o=Promise))(function(i,l){function a(e){try{r(s.next(e))}catch(e){l(e)}}function n(e){try{r(s.throw(e))}catch(e){l(e)}}function r(e){var t;e.done?i(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.apply(e,t||[])).next())})};function m(e,t={}){return h(this,void 0,void 0,function*(){const o=Object.assign({},t),s=document.createElement("canvas"),i=s.getContext("2d");let l,a;for(const e in o)Object.prototype.hasOwnProperty.call(o,e)&&(o[e]=Number(o[e]));if(o.scale){const t=o.scale>0&&o.scale<10?o.scale:1;a=e.width*t,l=e.height*t}else a=o.width||o.height*e.width/e.height||e.width,l=o.height||o.width*e.height/e.width||e.height;switch([5,6,7,8].some(e=>e===o.orientation)?(s.height=a,s.width=l):(s.height=l,s.width=a),o.orientation){case 3:i.rotate(180*Math.PI/180),i.drawImage(e,-s.width,-s.height,s.width,s.height);break;case 6:i.rotate(90*Math.PI/180),i.drawImage(e,0,-s.width,s.height,s.width);break;case 8:i.rotate(270*Math.PI/180),i.drawImage(e,-s.height,0,s.height,s.width);break;case 2:i.translate(s.width,0),i.scale(-1,1),i.drawImage(e,0,0,s.width,s.height);break;case 4:i.translate(s.width,0),i.scale(-1,1),i.rotate(180*Math.PI/180),i.drawImage(e,-s.width,-s.height,s.width,s.height);break;case 5:i.translate(s.width,0),i.scale(-1,1),i.rotate(90*Math.PI/180),i.drawImage(e,0,-s.width,s.height,s.width);break;case 7:i.translate(s.width,0),i.scale(-1,1),i.rotate(270*Math.PI/180),i.drawImage(e,-s.height,0,s.height,s.width);break;default:i.drawImage(e,0,0,s.width,s.height)}return s})}function f(e){return fetch(e).then(e=>e.blob())}function g(e){return new Promise((t,o)=>{const s=new Image;s.onload=()=>t(s),s.onerror=()=>o(new Error("urltoImage(): Image failed to load, please check the image URL")),s.src=e})}var b=function(e,t,o,s){return new(o||(o=Promise))(function(i,l){function a(e){try{r(s.next(e))}catch(e){l(e)}}function n(e){try{r(s.throw(e))}catch(e){l(e)}}function r(e){var t;e.done?i(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.apply(e,t||[])).next())})};function y(e,t={}){return b(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compress(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({quality:t})),t.quality=Number(t.quality),Number.isNaN(t.quality))return e;const o=yield p(e);let l=o.split(",")[0].match(/:(.*?);/)[1],n=s.JPEG;i(t.type)&&(n=t.type,l=t.type);const r=yield d(o),c=yield m(r,Object.assign({},t)),h=yield a(c,t.quality,n),f=yield u(h,l);return f.size>e.size?e:f})}function C(e,t={}){return b(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compressAccurately(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({size:t})),t.size=Number(t.size),Number.isNaN(t.size))return e;if(1024*t.size>e.size)return e;t.accuracy=Number(t.accuracy),(!t.accuracy||t.accuracy<.8||t.accuracy>.99)&&(t.accuracy=.95);const o=t.size*(2-t.accuracy)*1024,l=1024*t.size,n=t.size*t.accuracy*1024,r=yield p(e);let c=r.split(",")[0].match(/:(.*?);/)[1],h=s.JPEG;i(t.type)&&(h=t.type,c=t.type);const f=yield d(r),g=yield m(f,Object.assign({},t));let b,y=.5;const C=[null,null];for(let e=1;e<=7;e++){b=yield a(g,y,h);const t=.75*b.length;if(7===e){(o<t||n>t)&&(b=[b,...C].filter(e=>e).sort((e,t)=>Math.abs(.75*e.length-l)-Math.abs(.75*t.length-l))[0]);break}if(o<t)C[1]=b,y-=Math.pow(.5,e+1);else{if(!(n>t))break;C[0]=b,y+=Math.pow(.5,e+1)}}const w=yield u(b,c);return w.size>e.size?e:w})}}])})},3003:function(e,t,o){"use strict";o(5331)},3597:function(e,t,o){"use strict";o(5331)},4252:function(e,t,o){"use strict";o.r(t),o.d(t,{default:function(){return me}});var s=o(6975),i=o(4757),l=(o(5331),o(9092),o(213),o(5558)),a=(o(456),o(7377)),n=(o(5616),o(2006)),r=(o(8642),o(3003),o(6810)),u=(o(4396),o(4885),o(8559)),d=(o(5970),o(9655)),c=o(47),p=(o(8050),o(8162)),h=(o(6055),o(8830),o(3597),o(4500)),m=o(4253),f=o(683),g=(o(5385),o(9648),o(9623)),b=o(7358),y=o(813),C=(o(4896),o(6768)),w=o(4232);const U={class:"upload-form"},k={key:1,class:"upload-card"},F={class:"paste-card-actions"},L={class:"upload-list-dashboard-action"},v=["href"],_={key:0,style:{width:"10vw","border-radius":"12px"},autoplay:"",muted:"",playsinline:"",loop:""},x=["src"],R=["src","onError"],T={key:2,style:{width:"10vw","border-radius":"12px"}},$={class:"upload-list-item-content"},S={key:0,class:"upload-list-item-url"},P={class:"upload-list-item-url-row"},I={class:"upload-list-item-url-row"},V={key:1,class:"upload-list-item-progress"},E={class:"upload-list-item-action"};function z(e,t,s,i,l,a){const n=(0,C.g2)("CameraFilled"),z=y.tk,M=b.j5,A=g.WK,W=c.S2,D=r.Zh,B=r.MQ,N=f.Ik,j=(0,C.g2)("List"),q=(0,C.g2)("Checked"),O=(0,C.g2)("Failed"),Q=m.$g,X=(0,C.g2)("font-awesome-icon"),G=h.R7,H=p.c6,J=p.Iy,K=p.dW,Z=c.fg,Y=d.ve,ee=(0,C.g2)("Link"),te=(0,C.g2)("Delete"),oe=u.kA;return(0,C.uX)(),(0,C.CE)("div",U,["default"===s.uploadMethod?((0,C.uX)(),(0,C.Wv)(M,{key:0,class:(0,w.C4)(["upload-card",{"is-uploading":l.uploading,"upload-card-busy":l.fileList.length}]),drag:"",multiple:"","http-request":a.uploadFile,onSuccess:a.handleSuccess,"on-error":a.handleError,"before-upload":a.beforeUpload,"on-progress":a.handleProgress,"file-list":l.fileList,"show-file-list":!1},{default:(0,C.k6)(()=>[(0,C.bF)(z,{class:(0,w.C4)(["el-icon--upload",{"upload-list-busy":l.fileList.length}])},{default:(0,C.k6)(()=>[(0,C.bF)(n)]),_:1},8,["class"]),(0,C.Lk)("div",{class:(0,w.C4)(["el-upload__text",{"upload-list-busy":l.fileList.length}])},t[2]||(t[2]=[(0,C.Lk)("em",null,"拖拽",-1),(0,C.eW)(),(0,C.Lk)("em",null,"点击",-1),(0,C.eW)(" 或 "),(0,C.Lk)("em",null,"Ctrl + V",-1),(0,C.eW)(" 粘贴上传")]),2)]),_:1},8,["class","http-request","onSuccess","on-error","before-upload","on-progress","file-list"])):"paste"===s.uploadMethod?((0,C.uX)(),(0,C.CE)("div",k,[(0,C.bF)(N,{class:(0,w.C4)(["paste-card",{"is-uploading":l.uploading,"upload-card-busy":l.fileList.length}])},{default:(0,C.k6)(()=>[(0,C.bF)(A,{modelValue:l.pastedUrls,"onUpdate:modelValue":t[0]||(t[0]=e=>l.pastedUrls=e),class:"upload-card-textarea",placeholder:"粘贴外链上传,多个外链用换行分隔",type:"textarea",rows:l.fileList.length?3:10},null,8,["modelValue","rows"]),(0,C.Lk)("div",F,[(0,C.bF)(W,{class:"paste-card-upload-button",type:"primary",size:a.pasteCardMethodButtonSize,onClick:a.handleUploadPasteUrls},{default:(0,C.k6)(()=>t[3]||(t[3]=[(0,C.eW)(" 上 传 ")])),_:1,__:[3]},8,["size","onClick"]),(0,C.bF)(B,{modelValue:l.pasteUploadMethod,"onUpdate:modelValue":t[1]||(t[1]=e=>l.pasteUploadMethod=e),class:"paste-card-method-group",size:a.pasteCardMethodButtonSize},{default:(0,C.k6)(()=>[(0,C.bF)(D,{label:"save"},{default:(0,C.k6)(()=>t[4]||(t[4]=[(0,C.eW)("转存")])),_:1,__:[4]}),(0,C.bF)(D,{label:"external"},{default:(0,C.k6)(()=>t[5]||(t[5]=[(0,C.eW)("外链")])),_:1,__:[5]})]),_:1},8,["modelValue","size"])])]),_:1},8,["class"])])):(0,C.Q3)("",!0),(0,C.bF)(N,{class:(0,w.C4)(["upload-list-card",{"upload-list-busy":l.fileList.length}])},{default:(0,C.k6)(()=>[(0,C.Lk)("div",{class:(0,w.C4)(["upload-list-container",{"upload-list-busy":l.fileList.length}])},[(0,C.bF)(oe,{onScroll:a.handleScroll,ref:"scrollContainer"},{default:(0,C.k6)(()=>[(0,C.Lk)("div",{class:(0,w.C4)(["upload-list-dashboard",{"list-scrolled":l.listScrolled}])},[(0,C.bF)(Q,{class:"upload-list-dashboard-title"},{default:(0,C.k6)(()=>[(0,C.bF)(z,null,{default:(0,C.k6)(()=>[(0,C.bF)(j)]),_:1}),(0,C.eW)((0,w.v_)(a.uploadingCount+a.waitingCount)+" ",1),(0,C.bF)(z,null,{default:(0,C.k6)(()=>[(0,C.bF)(q)]),_:1}),(0,C.eW)((0,w.v_)(a.uploadSuccessCount)+" ",1),(0,C.bF)(z,null,{default:(0,C.k6)(()=>[(0,C.bF)(O)]),_:1}),(0,C.eW)((0,w.v_)(a.uploadErrorCount),1)]),_:1}),(0,C.Lk)("div",L,[(0,C.bF)(Z,null,{default:(0,C.k6)(()=>[(0,C.bF)(G,{disabled:a.disableTooltip,content:"整体复制",placement:"top"},{default:(0,C.k6)(()=>[(0,C.bF)(W,{type:"primary",round:"",onClick:a.copyAll,alt:"整体复制"},{default:(0,C.k6)(()=>[(0,C.bF)(X,{icon:"copy"})]),_:1},8,["onClick"])]),_:1},8,["disabled"]),(0,C.bF)(G,{disabled:a.disableTooltip,content:"失败重试",placement:"top"},{default:(0,C.k6)(()=>[(0,C.bF)(K,null,{dropdown:(0,C.k6)(()=>[(0,C.bF)(J,null,{default:(0,C.k6)(()=>[(0,C.bF)(H,{onClick:a.toggleAutoRetry},{default:(0,C.k6)(()=>[(0,C.eW)((0,w.v_)(l.autoReUpload?"关闭自动重试":"开启自动重试"),1)]),_:1},8,["onClick"])]),_:1})]),default:(0,C.k6)(()=>[(0,C.bF)(W,{type:"primary",style:{outline:"none","border-right":"none","border-radius":"0"},onClick:a.retryError},{default:(0,C.k6)(()=>[(0,C.bF)(X,{icon:"redo"})]),_:1},8,["onClick"])]),_:1})]),_:1},8,["disabled"]),(0,C.bF)(G,{disabled:a.disableTooltip,content:"清空列表",placement:"top",style:{border:"none"}},{default:(0,C.k6)(()=>[(0,C.bF)(K,null,{dropdown:(0,C.k6)(()=>[(0,C.bF)(J,null,{default:(0,C.k6)(()=>[(0,C.bF)(H,{onClick:a.clearFileList},{default:(0,C.k6)(()=>t[6]||(t[6]=[(0,C.eW)("清空全部")])),_:1,__:[6]},8,["onClick"]),(0,C.bF)(H,{onClick:a.clearSuccessList},{default:(0,C.k6)(()=>t[7]||(t[7]=[(0,C.eW)("清空已上传")])),_:1,__:[7]},8,["onClick"])]),_:1})]),default:(0,C.k6)(()=>[(0,C.bF)(W,{type:"primary",round:"",style:{outline:"none","border-right":"none"}},{default:(0,C.k6)(()=>[(0,C.bF)(X,{icon:"trash-alt"})]),_:1})]),_:1})]),_:1},8,["disabled"])]),_:1})])],2),((0,C.uX)(!0),(0,C.CE)(C.FK,null,(0,C.pI)(l.fileList.slice().reverse(),e=>((0,C.uX)(),(0,C.CE)("div",{class:"upload-list-item",key:e.name,span:8},[(0,C.Lk)("a",{href:e.url,target:"_blank",class:"upload-list-item-preview"},[a.isVideo(e.name)?((0,C.uX)(),(0,C.CE)("video",_,[(0,C.Lk)("source",{src:e.url,type:"video/mp4"},null,8,x),t[8]||(t[8]=(0,C.eW)(" Your browser does not support the video tag. "))])):a.isImage(e.name)?((0,C.uX)(),(0,C.CE)("img",{key:1,style:{width:"10vw","border-radius":"12px"},src:e.url,onError:t=>e.url=o(6682)},null,40,R)):((0,C.uX)(),(0,C.CE)("div",T,[(0,C.bF)(X,{icon:"file",class:"file-icon"})]))],8,v),(0,C.Lk)("div",$,[(0,C.bF)(Q,{class:"upload-list-item-name",truncated:""},{default:(0,C.k6)(()=>[(0,C.eW)((0,w.v_)(e.name),1)]),_:2},1024),"done"===e.status?((0,C.uX)(),(0,C.CE)("div",S,[(0,C.Lk)("div",P,[(0,C.bF)(A,{modelValue:e.finalURL,"onUpdate:modelValue":t=>e.finalURL=t,readonly:"",onClick:a.selectAllText,size:a.urlSize},{prepend:(0,C.k6)(()=>t[9]||(t[9]=[(0,C.eW)("URL")])),_:2},1032,["modelValue","onUpdate:modelValue","onClick","size"]),(0,C.bF)(A,{modelValue:e.mdURL,"onUpdate:modelValue":t=>e.mdURL=t,readonly:"",onClick:a.selectAllText,size:a.urlSize},{prepend:(0,C.k6)(()=>t[10]||(t[10]=[(0,C.eW)("MarkDown")])),_:2},1032,["modelValue","onUpdate:modelValue","onClick","size"])]),(0,C.Lk)("div",I,[(0,C.bF)(A,{modelValue:e.htmlURL,"onUpdate:modelValue":t=>e.htmlURL=t,readonly:"",onClick:a.selectAllText,size:a.urlSize},{prepend:(0,C.k6)(()=>t[11]||(t[11]=[(0,C.eW)("HTML")])),_:2},1032,["modelValue","onUpdate:modelValue","onClick","size"]),(0,C.bF)(A,{modelValue:e.ubbURL,"onUpdate:modelValue":t=>e.ubbURL=t,readonly:"",onClick:a.selectAllText,size:a.urlSize},{prepend:(0,C.k6)(()=>t[12]||(t[12]=[(0,C.eW)("BBCode")])),_:2},1032,["modelValue","onUpdate:modelValue","onClick","size"])])])):((0,C.uX)(),(0,C.CE)("div",V,[(0,C.bF)(Y,{percentage:e.progreess,status:e.status,"show-text":!1},null,8,["percentage","status"])]))]),(0,C.Lk)("div",E,[(0,C.bF)(W,{type:"primary",circle:"",class:"upload-list-item-action-button",onClick:t=>a.handleCopy(e)},{default:(0,C.k6)(()=>[(0,C.bF)(z,null,{default:(0,C.k6)(()=>[(0,C.bF)(ee)]),_:1})]),_:2},1032,["onClick"]),(0,C.bF)(W,{type:"danger",circle:"",class:"upload-list-item-action-button",onClick:t=>a.handleRemove(e)},{default:(0,C.k6)(()=>[(0,C.bF)(z,null,{default:(0,C.k6)(()=>[(0,C.bF)(te)]),_:1})]),_:2},1032,["onClick"])])]))),128))]),_:1},8,["onScroll"])],2)]),_:1},8,["class"])])}o(4114),o(8111),o(2489),o(116),o(7588),o(1701),o(4603),o(7566),o(8721);var M=o(9189),A=o(6334),W=o(782),D={name:"UploadForm",props:{selectedUrlForm:{type:String,default:"url",required:!1},customerCompress:{type:Boolean,default:!0,required:!1},compressQuality:{type:Number,default:4,required:!1},compressBar:{type:Number,default:5,required:!1},serverCompress:{type:Boolean,default:!0,required:!1},uploadChannel:{type:String,default:"telegram",required:!1},uploadNameType:{type:String,default:"default",required:!1},useCustomUrl:{type:String,default:"false",required:!1},customUrlPrefix:{type:String,default:"",required:!1},autoRetry:{type:Boolean,default:!0,required:!1},urlPrefix:{type:String,default:"",required:!1},uploadMethod:{type:String,default:"default",required:!1},uploadFolder:{type:String,default:"",required:!1}},data(){return{fileList:[],uploading:!1,maxUploading:6,waitingList:[],exceptionList:[],listScrolled:!1,fileListLength:0,uploadCount:0,pastedUrls:"",pasteUploadMethod:"save",autoReUpload:!0,maxRetryCount:10,retryTimer:null,retryDelay:12e3}},watch:{fileList:{handler(){this.fileList.length>this.fileListLength&&this.$nextTick(()=>{setTimeout(()=>{this.$refs.scrollContainer&&this.$refs.scrollContainer.setScrollTop(0)},100)}),this.fileListLength=this.fileList.length},deep:!0},useCustomUrl:{handler(){"true"===this.useCustomUrl?this.fileList.forEach(e=>{"external"!==e.uploadChannel&&(e.finalURL=this.customUrlPrefix+e.srcID,e.mdURL=``,e.htmlURL=`<img src="${this.customUrlPrefix+e.srcID}" alt="${e.name}" width=100% />`,e.ubbURL=`[img]${this.customUrlPrefix+e.srcID}[/img]`)}):this.fileList.forEach(e=>{"external"!==e.uploadChannel&&(e.finalURL=this.rootUrl+e.srcID,e.mdURL=``,e.htmlURL=`<img src="${this.rootUrl+e.srcID}" alt="${e.name}" width=100% />`,e.ubbURL=`[img]${this.rootUrl+e.srcID}[/img]`)})},immediate:!0},customUrlPrefix:{handler(){"true"===this.useCustomUrl&&this.fileList.forEach(e=>{"external"!==e.uploadChannel&&(e.finalURL=this.customUrlPrefix+e.srcID,e.mdURL=``,e.htmlURL=`<img src="${this.customUrlPrefix+e.srcID}" alt="${e.name}" width=100% />`,e.ubbURL=`[img]${this.customUrlPrefix+e.srcID}[/img]`)})},immediate:!0},autoReUpload(e){this.$store.commit("setStoreAutoReUpload",e)}},computed:{...(0,W.L8)(["storeAutoReUpload"]),uploadSuccessCount(){return this.fileList.filter(e=>"done"===e.status||"success"===e.status).length},uploadErrorCount(){return this.fileList.filter(e=>"exception"===e.status).length},uploadingCount(){return this.fileList.filter(e=>"uploading"===e.status).length},waitingCount(){return this.waitingList.length},urlSize(){return window.innerWidth<768?"small":"default"},disableTooltip(){return window.innerWidth<768},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},pasteCardMethodButtonSize(){return this.fileList.length||window.innerWidth<768?"small":"medium"}},mounted(){document.addEventListener("paste",this.handlePaste),this.autoReUpload=this.storeAutoReUpload},beforeUnmount(){document.removeEventListener("paste",this.handlePaste),this.waitingList=[],this.fileList=[]},methods:{uploadFile(e){if(!this.fileList.find(t=>t.uid===e.file.uid))return;if(this.uploadingCount>this.maxUploading)return this.waitingList.push(e),void(this.fileList.find(t=>t.uid===e.file.uid).status="waiting");this.fileList.find(t=>t.uid===e.file.uid).status="uploading";const t=this.fileList.find(t=>t.uid===e.file.uid).uploadChannel||this.uploadChannel;if("external"===t)return void this.uploadSingleFile(e);const o=20971520;e.file.size>o?this.uploadFileInChunks(e):this.uploadSingleFile(e)},uploadSingleFile(e){const t=this.fileList.find(t=>t.uid===e.file.uid).serverCompress,o=this.fileList.find(t=>t.uid===e.file.uid).uploadChannel||this.uploadChannel,s=this.autoRetry&&"external"!==o,i="external"===o?"default":this.uploadNameType,l=new FormData;l.append("file",e.file),"external"===o&&l.append("url",e.file.url),(0,M.A)({url:"/upload?serverCompress="+t+"&uploadChannel="+o+"&uploadNameType="+i+"&autoRetry="+s+"&uploadFolder="+this.uploadFolder,method:"post",data:l,withAuthCode:!0,onUploadProgress:t=>{const o=Math.round(t.loaded/t.total*100);e.onProgress({percent:o,file:e.file})}}).then(t=>{e.onSuccess(t,e.file)}).catch(t=>{t.response&&401!==t.response.status&&(this.exceptionList.push(e),e.onError(t,e.file))}).finally(()=>{this.uploadingCount+this.waitingCount===0&&(this.uploading=!1)})},async uploadFileInChunks(e){const t=10485760,o=e.file.size,s=Math.ceil(o/t),i=this.fileList.find(t=>t.uid===e.file.uid).serverCompress,l=this.fileList.find(t=>t.uid===e.file.uid).uploadChannel||this.uploadChannel,a=this.autoRetry&&"external"!==l,n="external"===l?"default":this.uploadNameType;try{const u=new FormData;u.append("originalFileName",e.file.name),u.append("originalFileType",e.file.type),u.append("totalChunks",s.toString());const d=await(0,M.A)({url:"/upload?serverCompress="+i+"&uploadChannel="+l+"&uploadNameType="+n+"&autoRetry="+a+"&uploadFolder="+this.uploadFolder+"&initChunked=true",method:"post",data:u,withAuthCode:!0});if(!d.data.success)throw new Error("初始化分块上传失败: "+d.data.message);const c=d.data.uploadId;console.log("分块上传初始化成功,uploadId:",c);const p=this.fileList.find(t=>t.uid===e.file.uid);p&&(p.totalChunks=s,p.uploadId=c);for(let f=0;f<s;f++){const u=f*t,d=Math.min(u+t,o),p=e.file.slice(u,d),h=new FormData;h.append("file",p,`${e.file.name}.part${f.toString().padStart(3,"0")}`),h.append("chunkIndex",f.toString()),h.append("totalChunks",s.toString()),h.append("uploadId",c),h.append("originalFileName",e.file.name),h.append("originalFileType",e.file.type);let m=0;const g=3;while(m<g)try{await(0,M.A)({url:"/upload?serverCompress="+i+"&uploadChannel="+l+"&uploadNameType="+n+"&autoRetry="+a+"&uploadFolder="+this.uploadFolder+"&chunked=true",method:"post",data:h,withAuthCode:!0,onUploadProgress:t=>{const o=Math.round(t.loaded/t.total*100),i=Math.round((100*f+o)/s);e.onProgress({percent:i,file:e.file})}});break}catch(r){if(m++,m>=g)throw new Error(`分块 ${f+1}/${s} 上传失败: ${r.message}`);await new Promise(e=>setTimeout(e,5e3*m))}if(m===g)throw new Error(`分块 ${f+1}/${s} 上传失败,已重试 ${g} 次`);await new Promise(e=>setTimeout(e,5e3))}const h=new FormData;h.append("uploadId",c),h.append("totalChunks",s.toString()),h.append("originalFileName",e.file.name),h.append("originalFileType",e.file.type);const m=await(0,M.A)({url:"/upload?serverCompress="+i+"&uploadChannel="+l+"&uploadNameType="+n+"&autoRetry="+a+"&uploadFolder="+this.uploadFolder+"&chunked=true&merge=true",method:"post",data:h,withAuthCode:!0});202===m.status?await this.pollMergeStatus(m.data.uploadId,m.data.statusCheckUrl,e):e.onSuccess(m,e.file)}catch(r){console.error("分块上传失败:",r);const t=this.fileList.find(t=>t.uid===e.file.uid);t&&t.uploadId&&this.cleanupUploadResources(t.uploadId,t.totalChunks).then(()=>{console.log(`已清理分块上传失败的资源: ${t.uploadId}`)}).catch(e=>{console.warn("清理分块上传失败资源时出错:",e)}),r.response&&401!==r.response.status&&(this.exceptionList.push(e),e.onError(r,e.file))}finally{this.uploadingCount+this.waitingCount===0&&(this.uploading=!1)}},async pollMergeStatus(e,t,o){const s=6e5,i=2e3,l=Date.now(),a=this.fileList.find(e=>e.uid===o.file.uid);this.$message({type:"info",message:`${o.file.name} 文件较大,正在后台处理中...`,duration:5e3});const n=async()=>{try{if(Date.now()-l>s)throw new Error("合并处理超时,请稍后刷新页面查看结果");const e=await(0,M.A)({url:t,method:"get",withAuthCode:!0}),a=e.data;switch(a.status){case"processing":case"merging":case"uploading":setTimeout(n,i);break;case"success":if(!a.result)throw new Error("处理完成但未返回结果");{const e={data:a.result,status:200};o.onSuccess(e,o.file)}break;case"error":throw new Error(a.message||a.error||"后台处理失败");default:setTimeout(n,i)}}catch(e){if(console.error("轮询状态失败:",e),("NETWORK_ERROR"===e.code||e.message.includes("Network Error"))&&Date.now()-l<s)return void setTimeout(n,2*i);console.error("轮询处理失败:",e),a&&a.uploadId&&this.cleanupUploadResources(a.uploadId,a.totalChunks).then(()=>{console.log(`已清理失败上传的资源: ${a.uploadId}`)}).catch(e=>{console.warn("清理失败上传资源时出错:",e)}),this.$message.error(`${o.file.name} 后台处理失败: ${e.message}`),a&&(a.status="exception"),this.exceptionList.push(o),o.onError(e,o.file)}};setTimeout(n,i)},handleRemove(e){this.fileList=this.fileList.filter(t=>t.uid!==e.uid),this.$message({type:"info",message:e.name+"已删除"})},async cleanupUploadResources(e,t=0){try{await(0,M.A)({url:`/upload?cleanup=true&uploadId=${e}&totalChunks=${t}`,method:"get",withAuthCode:!0,timeout:5e3}),console.log(`清理上传资源成功: ${e}`)}catch(o){console.warn("清理上传资源失败:",o)}},handleSuccess(e,t){try{const o=this.fileList.find(e=>e.uid===t.uid).uploadChannel||this.uploadChannel;if("external"!==o){const o=e.data[0].src.replace("/file/","");this.fileList.find(e=>e.uid===t.uid).url=`${window.location.protocol}//${window.location.host}/file/`+o,this.fileList.find(e=>e.uid===t.uid).finalURL=this.rootUrl+o,this.fileList.find(e=>e.uid===t.uid).mdURL=``,this.fileList.find(e=>e.uid===t.uid).htmlURL=`<img src="${this.rootUrl+o}" alt="${t.name}" width=100% />`,this.fileList.find(e=>e.uid===t.uid).ubbURL=`[img]${this.rootUrl+o}[/img]`,this.fileList.find(e=>e.uid===t.uid).srcID=o}this.fileList.find(e=>e.uid===t.uid).progreess=100,this.fileList.find(e=>e.uid===t.uid).status="success",this.$message({type:"success",message:t.name+"上传成功"}),setTimeout(()=>{this.fileList.find(e=>e.uid===t.uid).status="done"},1e3)}catch(o){this.$message.error(t.name+"上传失败"),this.fileList.find(e=>e.uid===t.uid).status="exception"}finally{if(this.uploadingCount+this.waitingCount===0&&(this.uploading=!1),this.waitingList.length){const e=this.waitingList.shift();this.uploadFile(e)}}},handleError(e,t){if(this.$message.error(t.name+"上传失败"),this.fileList.find(e=>e.uid===t.uid).status="exception",this.autoReUpload&&this.scheduleAutoRetry(),this.waitingList.length){const e=this.waitingList.shift();this.uploadFile(e)}this.uploadingCount+this.waitingCount===0&&(this.uploading=!1)},handleCopy(e){const t=this.fileList.find(t=>t.uid===e.uid).status;"done"===t||"success"===t?("url"===this.selectedUrlForm?navigator.clipboard.writeText(e.finalURL):"md"===this.selectedUrlForm?navigator.clipboard.writeText(e.mdURL):"html"===this.selectedUrlForm?navigator.clipboard.writeText(e.htmlURL):"ubb"===this.selectedUrlForm?navigator.clipboard.writeText(e.ubbURL):navigator.clipboard.writeText(e.finalURL),this.$message({type:"success",message:"复制成功"})):this.$message({type:"warning",message:"文件未上传成功,无法复制链接"})},beforeUpload(e){return new Promise((t,o)=>{const s=e.type.includes("image")&&this.customerCompress&&e.size/1024/1024>this.compressBar,i=e.size/1024/1024<=1024||"telegram"!==this.uploadChannel,l=(e,o)=>{const s=URL.createObjectURL(e);this.fileList.push({uid:e.uid,name:e.name,url:s,finalURL:"",mdURL:"",htmlURL:"",ubbURL:"",srcID:"",status:"uploading",progreess:0,serverCompress:o,retryCount:0}),t(e)};if(s)A.compressAccurately(e,1024*this.compressQuality).then(t=>{t.size/1024/1024>1024&&"telegram"===this.uploadChannel&&(this.$message.error(e.name+"压缩后文件过大,无法上传!"),o("文件过大")),this.uploading=!0;const s=new File([t],e.name,{type:t.type});s.uid=e.uid;const i=this.uploadCount++,a=this.serverCompress&&s.size/1024/1024<10&&"telegram"===this.uploadChannel;0===i?l(s,a):setTimeout(()=>{l(s,a),this.uploadCount--},300*i)}).catch(t=>{this.$message.error(e.name+"压缩失败,无法上传!"),o(t)});else if(i){this.uploading=!0;const t=this.uploadCount++,o="telegram"===this.uploadChannel&&this.serverCompress&&(!e.type.includes("image")||e.size/1024/1024<10);0===t?l(e,o):setTimeout(()=>{l(e,o),this.uploadCount--},300*t)}else this.$message.error(e.name+"文件过大,无法上传!"),o("文件过大")})},handleProgress(e){this.fileList.find(t=>t.uid===e.file.uid).progreess=e.percent},copyAll(){if("url"===this.selectedUrlForm){const e=this.fileList.map(e=>{if("done"===e.status||"success"===e.status)return e.finalURL}).join("\n");navigator.clipboard.writeText(e)}else if("md"===this.selectedUrlForm){const e=this.fileList.map(e=>{if("done"===e.status||"success"===e.status)return e.mdURL}).join("\n");navigator.clipboard.writeText(e)}else if("html"===this.selectedUrlForm){const e=this.fileList.map(e=>{if("done"===e.status||"success"===e.status)return e.htmlURL}).join("\n");navigator.clipboard.writeText(e)}else if("ubb"===this.selectedUrlForm){const e=this.fileList.map(e=>{if("done"===e.status||"success"===e.status)return e.ubbURL}).join("\n");navigator.clipboard.writeText(e)}else{const e=this.fileList.map(e=>{if("done"===e.status||"success"===e.status)return e.finalURL}).join("\n");navigator.clipboard.writeText(e)}this.$message({type:"success",message:"整体复制成功"})},clearFileList(){this.fileList.length>0?(this.fileList=[],this.$message({type:"success",message:"文件列表已清空"})):this.$message({type:"info",message:"文件列表为空"})},clearSuccessList(){this.uploadSuccessCount>0?(this.fileList=this.fileList.filter(e=>"done"!==e.status&&"success"!==e.status),this.$message({type:"success",message:"成功上传文件已清空"})):this.$message({type:"info",message:"成功上传文件为空"})},handlePaste(e){if("INPUT"===e.target.tagName||"TEXTAREA"===e.target.tagName)return;const t=e.clipboardData.items;t.length>0&&this.uploadFromUrl(t)},handleUploadPasteUrls(){const e=this.pastedUrls.split("\n"),t=e.map(e=>e.trim()).filter(e=>""!==e).filter(e=>/^(https?:\/\/[^\s$.?#].[^\s]*)$/.test(e));if("save"===this.pasteUploadMethod)this.uploadFromUrl(t.map(e=>({kind:"string",getAsString:t=>{t(e)}})));else if("external"===this.pasteUploadMethod)for(let o=0;o<t.length;o++){const e=t[o],s=e.split("/").pop(),i=``,l=`<img src="${e}" alt="${s}" width=100% />`,a=`[img]${e}[/img]`,n=new File([],e.split("/").pop(),{type:"text/plain"});n.uid=Date.now()+o,n.url=e,this.fileList.push({uid:n.uid,name:n.name,url:e,finalURL:e,mdURL:i,htmlURL:l,ubbURL:a,srcID:e,status:"uploading",progreess:0,serverCompress:!1,uploadChannel:"external",retryCount:0}),this.uploadFile({file:n,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}},uploadFromUrl(e){for(let t=0;t<e.length;t++)if("file"===e[t].kind){const o=e[t].getAsFile();if(o.type.includes("image")||o.type.includes("video")){o.uid=Date.now()+t;const e=this.beforeUpload(o);e instanceof Promise&&e.then(e=>{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}else this.$message({type:"warning",message:"粘贴板中的文件不是图片或视频"})}else"string"===e[t].kind&&e[t].getAsString(e=>{const o=/^(https?:\/\/[^\s$.?#].[^\s]*)$/;let s="";o.test(e)&&M.A.post("/api/fetchRes",{url:e},{responseType:"blob"}).then(o=>{const i=o.headers["content-type"];if(200!=o.status||!i.includes("image")&&!i.includes("video"))throw new Error("URL地址的内容不是图片或视频");{const i=o.headers["content-disposition"];if(i){const e=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/,t=/filename\*\s*=\s*UTF-8''([^;\n]*)/;let o=e.exec(i);if(null!=o&&o[1]){s=o[1].replace(/['"]/g,"");try{s=decodeURIComponent(s)}catch(l){s=""}}""===s&&(o=t.exec(i),null!=o&&o[1]&&(s=decodeURIComponent(o[1])))}if(""===s){const t=new URL(e);s=t.pathname.split("/").pop()}if(""===s){const o=new URL(e);let i=o.pathname.split(".").pop();["jpg","jpeg","png","gif","bmp","webp","mp4","webm","ogg","mkv"].includes(i)||(i="jpeg"),s="PastedFile"+Date.now()+t+"."+i}const a=o.data,n=new File([a],s,{type:a.type});n.uid=Date.now()+t;const r=this.beforeUpload(n);r instanceof Promise&&r.then(e=>{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}}).catch(e=>{this.$message({type:"warning",message:"粘贴板中的URL地址的内容不是图片或视频"})})})},selectAllText(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:"复制成功"})}).catch(()=>{this.$message({type:"error",message:"复制失败"})})},isImage(e){const t=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp","raw","cr2","nef","dng","eps","ai","emf","wmf"],o=e.split(".").pop().toLowerCase();return t.includes(o)},isVideo(e){const t=["mp4","webm","ogg","mkv"],o=e.split(".").pop().toLowerCase();return t.includes(o)},handleScroll(e){this.listScrolled=e.scrollTop>0&&this.fileList.length>0},retryError(){this.exceptionList.length>0?(this.retryFailedFiles(this.exceptionList),this.exceptionList=[]):this.$message({type:"info",message:"无上传失败文件"})},toggleAutoRetry(){this.autoReUpload=!this.autoReUpload,this.$message({type:this.autoReUpload?"success":"info",message:this.autoReUpload?"自动重试已开启":"自动重试已关闭"}),this.autoReUpload&&this.exceptionList.length>0&&this.scheduleAutoRetry()},retryFailedFiles(e){e.forEach(e=>{const t=e.retryCount||0;t<this.maxRetryCount?(e.retryCount=t+1,this.uploadFile({file:e.file,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})):this.$message({type:"warning",message:`${e.name} 已达到最大重试次数(${this.maxRetryCount}),停止重试`})})},scheduleAutoRetry(){this.retryTimer&&clearTimeout(this.retryTimer),this.retryTimer=setTimeout(()=>{if(this.autoReUpload&&this.exceptionList.length>0){const e=[...this.exceptionList];this.exceptionList=[],this.retryFailedFiles(e)}},this.retryDelay)}},beforeDestroy(){this.retryTimer&&clearTimeout(this.retryTimer)}},B=o(1241);const N=(0,B.A)(D,[["render",z],["__scopeId","data-v-138e0988"]]);var j=N,q=o(4632),O=o(6834);const Q={class:"container"},X={class:"upload-home"},G={class:"info-container"},H={class:"toolbar-manage"},J={class:"toolbar"},K={class:"header"},Z={class:"title"},Y={class:"main-title",href:"https://github.com/MarSeventh/CloudFlare-ImgBed",target:"_blank"},ee={style:{"font-size":"medium","font-weight":"bold"}},te={class:"dialog-action"},oe={style:{"font-size":"medium","font-weight":"bold"}},se={key:2,style:{"font-size":"medium","font-weight":"bold"}},ie={class:"dialog-action"},le=["innerHTML"],ae={class:"dialog-footer"};function ne(e,t,o,u,d,p){const m=O.A,f=(0,C.g2)("font-awesome-icon"),b=h.R7,y=g.WK,U=c.S2,k=q.A,F=j,L=r.ll,v=r.MQ,_=n.xE,x=n.US,R=a.kZ,T=l.qi,$=i.B8,S=s.A;return(0,C.uX)(),(0,C.CE)("div",Q,[(0,C.Lk)("div",X,[(0,C.bF)(m,{class:"toggle-dark-button"}),(0,C.bF)(b,{content:"1. 支持多文件上传,支持所有常见文件格式 <br> 2. Telegram 渠道上传的文件大小不支持超过1GB","raw-content":"",placement:"bottom"},{default:(0,C.k6)(()=>[(0,C.Lk)("div",G,[(0,C.bF)(f,{icon:"question",class:"info-icon",size:"lg"})])]),_:1}),(0,C.bF)(y,{class:(0,w.C4)(["upload-folder",{active:d.isFolderInputActive}]),modelValue:d.uploadFolder,"onUpdate:modelValue":t[0]||(t[0]=e=>d.uploadFolder=e),placeholder:"上传目录",onFocus:t[1]||(t[1]=e=>d.isFolderInputActive=!0),onBlur:t[2]||(t[2]=e=>d.isFolderInputActive=!1)},null,8,["class","modelValue"]),(0,C.bF)(b,{content:"切换上传方式",placement:"bottom",disabled:p.disableTooltip},{default:(0,C.k6)(()=>[(0,C.bF)(U,{class:"upload-method-button",onClick:p.handleChangeUploadMethod},{default:(0,C.k6)(()=>["default"===d.uploadMethod?((0,C.uX)(),(0,C.Wv)(f,{key:0,icon:"folder-open",class:"upload-method-icon",size:"lg"})):"paste"===d.uploadMethod?((0,C.uX)(),(0,C.Wv)(f,{key:1,icon:"paste",class:"upload-method-icon",size:"lg"})):(0,C.Q3)("",!0)]),_:1},8,["onClick"])]),_:1},8,["disabled"]),(0,C.Lk)("div",H,[(0,C.bF)(U,{class:(0,w.C4)(["toolbar-manage-button",{active:d.isToolBarOpen}]),size:"large",onClick:p.handleOpenToolbar,circle:""},{default:(0,C.k6)(()=>[d.isToolBarOpen?((0,C.uX)(),(0,C.Wv)(f,{key:1,icon:"times",class:"manage-icon",size:"lg"})):((0,C.uX)(),(0,C.Wv)(f,{key:0,icon:"bars",class:"manage-icon",size:"lg"}))]),_:1},8,["class","onClick"])]),(0,C.Lk)("div",J,[(0,C.bF)(b,{disabled:p.disableTooltip,content:"上传设置",placement:"top"},{default:(0,C.k6)(()=>[(0,C.bF)(U,{class:(0,w.C4)(["toolbar-button compress-button",{active:d.isToolBarOpen}]),size:"large",onClick:p.openCompressDialog,circle:""},{default:(0,C.k6)(()=>[(0,C.bF)(f,{icon:"cloud-upload",class:"compress-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled"]),(0,C.bF)(b,{disabled:p.disableTooltip,content:"链接格式",placement:"left"},{default:(0,C.k6)(()=>[(0,C.bF)(U,{class:(0,w.C4)(["toolbar-button link-button",{active:d.isToolBarOpen}]),size:"large",onClick:p.openUrlDialog,circle:""},{default:(0,C.k6)(()=>[(0,C.bF)(f,{icon:"link",class:"link-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled"]),(0,C.bF)(b,{disabled:p.disableTooltip,content:"系统管理",placement:"left"},{default:(0,C.k6)(()=>[(0,C.bF)(U,{class:(0,w.C4)(["toolbar-button config-button",{active:d.isToolBarOpen}]),size:"large",onClick:p.handleManage,circle:""},{default:(0,C.k6)(()=>[(0,C.bF)(f,{icon:"cog",class:"config-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled"]),(0,C.bF)(b,{disabled:p.disableTooltip,content:"退出登录",placement:"left"},{default:(0,C.k6)(()=>[(0,C.bF)(U,{class:(0,w.C4)(["toolbar-button sign-out-button",{active:d.isToolBarOpen}]),size:"large",onClick:p.handleLogout,circle:""},{default:(0,C.k6)(()=>[(0,C.bF)(f,{icon:"sign-out-alt",class:"sign-out-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled"])]),(0,C.Lk)("div",K,[(0,C.bF)(k),(0,C.Lk)("h1",Z,[(0,C.Lk)("a",Y,(0,w.v_)(p.ownerName),1),t[20]||(t[20]=(0,C.eW)(" ImgHub"))])]),(0,C.bF)(F,{selectedUrlForm:d.selectedUrlForm,customerCompress:d.customerCompress,compressQuality:d.compressQuality,compressBar:d.compressBar,serverCompress:d.serverCompress,uploadChannel:d.uploadChannel,uploadNameType:d.uploadNameType,useCustomUrl:d.useCustomUrl,customUrlPrefix:d.customUrlPrefix,autoRetry:d.autoRetry,urlPrefix:p.urlPrefix,uploadMethod:d.uploadMethod,uploadFolder:d.uploadFolder,class:"upload"},null,8,["selectedUrlForm","customerCompress","compressQuality","compressBar","serverCompress","uploadChannel","uploadNameType","useCustomUrl","customUrlPrefix","autoRetry","urlPrefix","uploadMethod","uploadFolder"]),(0,C.bF)(R,{title:"链接格式设置",modelValue:d.showUrlDialog,"onUpdate:modelValue":t[7]||(t[7]=e=>d.showUrlDialog=e),width:p.dialogWidth,"show-close":!1},{default:(0,C.k6)(()=>[t[29]||(t[29]=(0,C.Lk)("p",{style:{"font-size":"medium","font-weight":"bold"}},"默认复制链接",-1)),(0,C.bF)(v,{modelValue:d.selectedUrlForm,"onUpdate:modelValue":t[3]||(t[3]=e=>d.selectedUrlForm=e),onChange:p.changeUrlForm},{default:(0,C.k6)(()=>[(0,C.bF)(L,{value:"url"},{default:(0,C.k6)(()=>t[21]||(t[21]=[(0,C.eW)("原始链接")])),_:1,__:[21]}),(0,C.bF)(L,{value:"md"},{default:(0,C.k6)(()=>t[22]||(t[22]=[(0,C.eW)("MarkDown")])),_:1,__:[22]}),(0,C.bF)(L,{value:"html"},{default:(0,C.k6)(()=>t[23]||(t[23]=[(0,C.eW)("HTML")])),_:1,__:[23]}),(0,C.bF)(L,{value:"ubb"},{default:(0,C.k6)(()=>t[24]||(t[24]=[(0,C.eW)("BBCode")])),_:1,__:[24]})]),_:1},8,["modelValue","onChange"]),(0,C.Lk)("p",ee,[t[25]||(t[25]=(0,C.eW)("自定义链接 ")),(0,C.bF)(b,{content:"默认链接为https://your.domain/file/xxx.jpg <br> 如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入",placement:"top","raw-content":""},{default:(0,C.k6)(()=>[(0,C.bF)(f,{icon:"question-circle",class:"question-icon",size:"me"})]),_:1})]),(0,C.bF)(x,{"label-width":"25%"},{default:(0,C.k6)(()=>[(0,C.bF)(_,{label:"启用自定义"},{default:(0,C.k6)(()=>[(0,C.bF)(v,{modelValue:d.useCustomUrl,"onUpdate:modelValue":t[4]||(t[4]=e=>d.useCustomUrl=e)},{default:(0,C.k6)(()=>[(0,C.bF)(L,{value:"true"},{default:(0,C.k6)(()=>t[26]||(t[26]=[(0,C.eW)("是")])),_:1,__:[26]}),(0,C.bF)(L,{value:"false"},{default:(0,C.k6)(()=>t[27]||(t[27]=[(0,C.eW)("否")])),_:1,__:[27]})]),_:1},8,["modelValue"])]),_:1}),"true"===d.useCustomUrl?((0,C.uX)(),(0,C.Wv)(_,{key:0,label:"自定义前缀"},{default:(0,C.k6)(()=>[(0,C.bF)(y,{modelValue:d.customUrlPrefix,"onUpdate:modelValue":t[5]||(t[5]=e=>d.customUrlPrefix=e),placeholder:"请输入自定义链接前缀"},null,8,["modelValue"])]),_:1})):(0,C.Q3)("",!0)]),_:1}),(0,C.Lk)("div",te,[(0,C.bF)(U,{type:"primary",onClick:t[6]||(t[6]=e=>d.showUrlDialog=!1)},{default:(0,C.k6)(()=>t[28]||(t[28]=[(0,C.eW)("确定")])),_:1,__:[28]})])]),_:1,__:[29]},8,["modelValue","width"]),(0,C.bF)(R,{title:"上传设置",modelValue:d.showCompressDialog,"onUpdate:modelValue":t[17]||(t[17]=e=>d.showCompressDialog=e),width:p.dialogWidth,"show-close":!1},{default:(0,C.k6)(()=>[(0,C.bF)(x,{"label-width":"25%"},{default:(0,C.k6)(()=>[t[40]||(t[40]=(0,C.Lk)("p",{style:{"font-size":"medium","font-weight":"bold"}},"上传渠道",-1)),(0,C.bF)(_,{label:"上传渠道"},{default:(0,C.k6)(()=>[(0,C.bF)(v,{modelValue:d.uploadChannel,"onUpdate:modelValue":t[8]||(t[8]=e=>d.uploadChannel=e)},{default:(0,C.k6)(()=>[(0,C.bF)(L,{label:"telegram"},{default:(0,C.k6)(()=>t[30]||(t[30]=[(0,C.eW)("Telegram")])),_:1,__:[30]}),(0,C.bF)(L,{label:"cfr2"},{default:(0,C.k6)(()=>t[31]||(t[31]=[(0,C.eW)("Cloudflare R2")])),_:1,__:[31]}),(0,C.bF)(L,{label:"s3"},{default:(0,C.k6)(()=>t[32]||(t[32]=[(0,C.eW)("S3")])),_:1,__:[32]})]),_:1},8,["modelValue"])]),_:1}),(0,C.bF)(_,{label:"上传目录"},{default:(0,C.k6)(()=>[(0,C.bF)(y,{style:{width:"300px"},modelValue:d.uploadFolder,"onUpdate:modelValue":t[9]||(t[9]=e=>d.uploadFolder=e),placeholder:"请输入上传目录路径"},null,8,["modelValue"])]),_:1}),(0,C.bF)(_,{label:"自动切换"},{default:(0,C.k6)(()=>[(0,C.bF)(b,{content:"对于非分块上传文件,上传失败自动切换到其他渠道上传",placement:"top"},{default:(0,C.k6)(()=>[(0,C.bF)(f,{icon:"question-circle",class:"question-icon",size:"me"})]),_:1}),(0,C.bF)(T,{modelValue:d.autoRetry,"onUpdate:modelValue":t[10]||(t[10]=e=>d.autoRetry=e),"active-text":"开启","inactive-text":"关闭","active-color":"#13ce66","inactive-color":"#ff4949"},null,8,["modelValue"])]),_:1}),t[41]||(t[41]=(0,C.Lk)("p",{style:{"font-size":"medium","font-weight":"bold"}},"文件命名方式",-1)),(0,C.bF)(_,{label:"命名方式"},{default:(0,C.k6)(()=>[(0,C.bF)(v,{modelValue:d.uploadNameType,"onUpdate:modelValue":t[11]||(t[11]=e=>d.uploadNameType=e)},{default:(0,C.k6)(()=>[(0,C.bF)(L,{label:"default"},{default:(0,C.k6)(()=>t[33]||(t[33]=[(0,C.eW)("默认")])),_:1,__:[33]}),(0,C.bF)(L,{label:"index"},{default:(0,C.k6)(()=>t[34]||(t[34]=[(0,C.eW)("仅前缀")])),_:1,__:[34]}),(0,C.bF)(L,{label:"origin"},{default:(0,C.k6)(()=>t[35]||(t[35]=[(0,C.eW)("仅原名")])),_:1,__:[35]}),(0,C.bF)(L,{label:"short"},{default:(0,C.k6)(()=>t[36]||(t[36]=[(0,C.eW)("短链接")])),_:1,__:[36]})]),_:1},8,["modelValue"])]),_:1}),(0,C.Lk)("p",oe,[t[37]||(t[37]=(0,C.eW)("客户端压缩 ")),(0,C.bF)(b,{content:"上传前在本地进行压缩,仅对图片文件生效",placement:"top","raw-content":""},{default:(0,C.k6)(()=>[(0,C.bF)(f,{icon:"question-circle",class:"question-icon",size:"me"})]),_:1})]),(0,C.bF)(_,{label:"开启压缩"},{default:(0,C.k6)(()=>[(0,C.bF)(T,{modelValue:d.customerCompress,"onUpdate:modelValue":t[12]||(t[12]=e=>d.customerCompress=e),"active-text":"开启","inactive-text":"关闭","active-color":"#13ce66","inactive-color":"#ff4949"},null,8,["modelValue"])]),_:1}),d.customerCompress?((0,C.uX)(),(0,C.Wv)(_,{key:0,label:"压缩阈值"},{default:(0,C.k6)(()=>[(0,C.bF)(b,{content:"设置图片大小阈值,超过此值将自动压缩,单位MB",placement:"top"},{default:(0,C.k6)(()=>[(0,C.bF)(f,{icon:"question-circle",class:"question-icon",size:"me"})]),_:1}),(0,C.bF)($,{class:"compress-slider",modelValue:d.compressBar,"onUpdate:modelValue":t[13]||(t[13]=e=>d.compressBar=e),min:1,max:20,"show-input":"","format-tooltip":e=>`${e} MB`},null,8,["modelValue","format-tooltip"])]),_:1})):(0,C.Q3)("",!0),d.customerCompress?((0,C.uX)(),(0,C.Wv)(_,{key:1,label:"期望大小"},{default:(0,C.k6)(()=>[(0,C.bF)(b,{content:"设置压缩后图片大小期望值,单位MB",placement:"top"},{default:(0,C.k6)(()=>[(0,C.bF)(f,{icon:"question-circle",class:"question-icon",size:"me"})]),_:1}),(0,C.bF)($,{class:"compress-slider",modelValue:d.compressQuality,"onUpdate:modelValue":t[14]||(t[14]=e=>d.compressQuality=e),min:1,max:d.compressBar,"format-tooltip":e=>`${e} MB`,"show-input":""},null,8,["modelValue","max","format-tooltip"])]),_:1})):(0,C.Q3)("",!0),"telegram"===d.uploadChannel?((0,C.uX)(),(0,C.CE)("p",se,[t[38]||(t[38]=(0,C.eW)("服务端压缩 ")),(0,C.bF)(b,{content:"1. 在 Telegram 端进行压缩,仅对上传渠道为 Telegram 的图片文件生效 <br> 2. 若图片大小(本地压缩后大小)大于10MB,本设置自动失效 <br> 3. 若上传分辨率过大、透明背景等图片,建议关闭服务端压缩,否则可能出现未知问题",placement:"top","raw-content":""},{default:(0,C.k6)(()=>[(0,C.bF)(f,{icon:"question-circle",class:"question-icon",size:"me"})]),_:1})])):(0,C.Q3)("",!0),"telegram"===d.uploadChannel?((0,C.uX)(),(0,C.Wv)(_,{key:3,label:"开启压缩"},{default:(0,C.k6)(()=>[(0,C.bF)(T,{modelValue:d.serverCompress,"onUpdate:modelValue":t[15]||(t[15]=e=>d.serverCompress=e),"active-text":"开启","inactive-text":"关闭","active-color":"#13ce66","inactive-color":"#ff4949"},null,8,["modelValue"])]),_:1})):(0,C.Q3)("",!0),(0,C.Lk)("div",ie,[(0,C.bF)(U,{type:"primary",onClick:t[16]||(t[16]=e=>d.showCompressDialog=!1)},{default:(0,C.k6)(()=>t[39]||(t[39]=[(0,C.eW)("确定")])),_:1,__:[39]})])]),_:1,__:[40,41]})]),_:1},8,["modelValue","width"])]),(0,C.bF)(S,{class:"footer"}),(0,C.bF)(R,{title:"公告",modelValue:d.showAnnouncementDialog,"onUpdate:modelValue":t[19]||(t[19]=e=>d.showAnnouncementDialog=e),width:p.dialogWidth,"show-close":!1,"close-on-click-modal":!1,"close-on-press-escape":!1,center:""},{footer:(0,C.k6)(()=>[(0,C.Lk)("span",ae,[(0,C.bF)(U,{type:"primary",onClick:t[18]||(t[18]=e=>d.showAnnouncementDialog=!1)},{default:(0,C.k6)(()=>t[42]||(t[42]=[(0,C.eW)("我已知晓!")])),_:1,__:[42]})])]),default:(0,C.k6)(()=>[(0,C.Lk)("div",{innerHTML:d.announcementContent},null,8,le)]),_:1},8,["modelValue","width"])])}var re=o(8903),ue=o(144),de=o(4570),ce=o.n(de),pe={name:"UploadHome",mixins:[re.A],data(){return{selectedUrlForm:(0,ue.KR)(""),showUrlDialog:!1,showCompressDialog:!1,customerCompress:!0,compressQuality:4,compressBar:5,serverCompress:!0,uploadChannel:"",uploadNameType:"",customUrlPrefix:"",useCustomUrl:"false",autoRetry:!0,useDefaultWallPaper:!1,isToolBarOpen:!1,uploadMethod:"default",uploadFolder:"",isFolderInputActive:!1,showAnnouncementDialog:!1,announcementContent:""}},watch:{customerCompress(e){this.updateCompressConfig("customerCompress",e)},compressQuality(e){this.updateCompressConfig("compressQuality",e)},compressBar(e){this.updateCompressConfig("compressBar",e)},serverCompress(e){this.updateCompressConfig("serverCompress",e)},uploadChannel(e){this.updateStoreUploadChannel(e)},uploadNameType(e){this.updateStoreUploadNameType(e)},customUrlPrefix(e){this.$store.commit("setCustomUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setCustomUrlSettings",{key:"useCustomUrl",value:e})},autoRetry(e){this.$store.commit("setStoreAutoRetry",e)},uploadFolder(e){this.validateUploadFolder(e)?this.$store.commit("setStoreUploadFolder",e):this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})}},computed:{...(0,W.L8)(["userConfig","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeUploadNameType","customUrlSettings","storeAutoRetry","storeUploadMethod","storeUploadFolder"]),ownerName(){return this.userConfig?.ownerName||"Sanyue"},dialogWidth(){return window.innerWidth>768?"50%":"90%"},disableTooltip(){return window.innerWidth<768},urlPrefix(){return this.userConfig?.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`}},mounted(){this.initializeBackground("uploadBkImg",".container",!1,!0),this.selectedUrlForm=this.uploadCopyUrlForm||"url",this.customerCompress=this.compressConfig.customerCompress,this.compressQuality=this.compressConfig.compressQuality,this.compressBar=this.compressConfig.compressBar,this.serverCompress=this.compressConfig.serverCompress,this.uploadChannel=this.storeUploadChannel||this.userConfig?.defaultUploadChannel||"telegram",this.autoRetry=this.storeAutoRetry,this.uploadNameType=this.storeUploadNameType||this.userConfig?.defaultUploadNameType||"default",this.customUrlPrefix=this.customUrlSettings.customUrlPrefix,this.useCustomUrl=this.customUrlSettings.useCustomUrl,this.uploadMethod=this.storeUploadMethod,this.uploadFolder=this.storeUploadFolder||this.userConfig?.defaultUploadFolder||"";const e=localStorage.getItem("visitedUploadHome"),t=this.userConfig?.announcement;!e&&t&&(this.announcementContent=t,this.showAnnouncementDialog=!0,localStorage.setItem("visitedUploadHome","true"))},components:{UploadForm:j,Footer:s.A,ToggleDark:O.A,Logo:q.A},methods:{validateUploadFolder(e){if(!e||""===e.trim())return!0;if(!e.startsWith("/"))return this.$message.error('上传目录必须以 "/" 开头'),!1;const t=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return t.test(e)?(this.$message.error("上传目录包含非法字符,请使用合法的路径格式"),!1):!e.includes("//")||(this.$message.error("上传目录不能包含连续的斜杠"),!1)},handleManage(){this.$router.push("/dashboard")},openUrlDialog(){this.showUrlDialog=!0},handleLogout(){ce().remove("authCode"),this.$router.push("/login"),this.$message.success("已退出登录")},changeUrlForm(){this.$store.commit("setUploadCopyUrlForm",this.selectedUrlForm)},openCompressDialog(){this.showCompressDialog=!0},updateCompressConfig(e,t){this.$store.commit("setCompressConfig",{key:e,value:t})},updateStoreUploadChannel(e){this.$store.commit("setStoreUploadChannel",e)},updateStoreUploadNameType(e){this.$store.commit("setStoreUploadNameType",e)},handleOpenToolbar(){this.isToolBarOpen=!this.isToolBarOpen,setTimeout(()=>{const e=document.querySelectorAll(".toolbar-button");e.forEach(e=>{e.style.pointerEvents=this.isToolBarOpen?"auto":"none"})},300)},handleChangeUploadMethod(){this.uploadMethod="default"===this.uploadMethod?"paste":"default",this.$store.commit("setUploadMethod",this.uploadMethod)}}};const he=(0,B.A)(pe,[["render",ne],["__scopeId","data-v-51737783"]]);var me=he},4396:function(e,t,o){"use strict";o(5331)},4885:function(e,t,o){"use strict";o(5331)},4896:function(e,t,o){"use strict";o(5331)},5385:function(e,t,o){"use strict";o(5331)},5616:function(e,t,o){"use strict";o(5331),o(7197)},5970:function(e,t,o){"use strict";o(5331)},6055:function(e,t,o){"use strict";o(5331),o(9648),o(8050),o(9104),o(5970)},6334:function(e,t,o){e.exports=o(1393)},6682:function(e,t,o){"use strict";e.exports=o.p+"img/404.8ed11fb3.png"},8050:function(e,t,o){"use strict";o(5331)},8642:function(e,t,o){"use strict";o(5331)},8830:function(e,t,o){"use strict";o(5331)},9104:function(e,t,o){"use strict";o(5331)}}]);
|
||
//# sourceMappingURL=718.b3d11a7c.js.map
|