From cf23072bfa106edfec51a96fd78e12656d70d64e Mon Sep 17 00:00:00 2001 From: axibayuit Date: Thu, 1 Jan 2026 00:30:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9E=97=E9=85=B1=E8=B4=A1=E7=8C=AE?= =?UTF-8?q?=E6=B0=B4=E5=8D=B0=E5=B1=85=E4=B8=AD=E5=AF=B9=E9=BD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/691.854b8d50.css | 1 + css/691.854b8d50.css.gz | Bin 0 -> 2116 bytes index.html | 2 +- index.html.gz | Bin 512 -> 512 bytes js/691.fa084424.js | 2 ++ js/691.fa084424.js.gz | Bin 0 -> 7891 bytes js/691.fa084424.js.map | 1 + js/691.fa084424.js.map.gz | Bin 0 -> 21412 bytes js/app.50b561a2.js | 2 ++ js/app.50b561a2.js.gz | Bin 0 -> 4902 bytes js/app.50b561a2.js.map | 1 + js/app.50b561a2.js.map.gz | Bin 0 -> 15259 bytes 12 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 css/691.854b8d50.css create mode 100644 css/691.854b8d50.css.gz create mode 100644 js/691.fa084424.js create mode 100644 js/691.fa084424.js.gz create mode 100644 js/691.fa084424.js.map create mode 100644 js/691.fa084424.js.map.gz create mode 100644 js/app.50b561a2.js create mode 100644 js/app.50b561a2.js.gz create mode 100644 js/app.50b561a2.js.map create mode 100644 js/app.50b561a2.js.map.gz diff --git a/css/691.854b8d50.css b/css/691.854b8d50.css new file mode 100644 index 0000000..bfe2175 --- /dev/null +++ b/css/691.854b8d50.css @@ -0,0 +1 @@ +.tm-viewport[data-v-1e6c105f]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tm-media[data-v-1e6c105f]{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-drag:none}.public-browse[data-v-9501ca66]{min-height:100vh;background:#0a0a0a;color:#fff}.header[data-v-9501ca66]{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:16px 32px;background:hsla(0,0%,6%,.95);backdrop-filter:blur(10px);border-bottom:1px solid #1a1a1a}.logo[data-v-9501ca66]{font-size:20px;font-weight:600;color:#fff}.breadcrumb[data-v-9501ca66]{display:flex;align-items:center;gap:4px;font-size:14px}.breadcrumb-item[data-v-9501ca66]{padding:6px 12px;border-radius:6px;cursor:pointer;transition:background .2s;color:#ccc}.breadcrumb-item[data-v-9501ca66]:hover{background:#252525;color:#fff}.breadcrumb-sep[data-v-9501ca66]{color:#444}.file-count[data-v-9501ca66]{color:#666;font-size:14px}.error-container[data-v-9501ca66],.loading-container[data-v-9501ca66]{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;color:#666}.loading-spinner[data-v-9501ca66]{width:48px;height:48px;border:3px solid #222;border-top-color:#3b82f6;border-radius:50%;animation:spin-9501ca66 1s linear infinite}.loading-spinner-small[data-v-9501ca66]{width:24px;height:24px;border:2px solid #222;border-top-color:#3b82f6;border-radius:50%;animation:spin-9501ca66 1s linear infinite}@keyframes spin-9501ca66{to{transform:rotate(1turn)}}.retry-btn[data-v-9501ca66]{margin-top:20px;padding:10px 32px;background:#3b82f6;border:none;border-radius:8px;color:#fff;font-size:14px;cursor:pointer;transition:background .2s}.retry-btn[data-v-9501ca66]:hover{background:#2563eb}.gallery-container[data-v-9501ca66]{padding:8px}@media (min-width:1200px){.gallery-container[data-v-9501ca66]{max-width:1400px;margin:0 auto;padding:24px}}.folders-section[data-v-9501ca66]{margin-bottom:24px}.folders-grid[data-v-9501ca66]{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}.folder-card[data-v-9501ca66]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px;background:#141414;border-radius:12px;border:1px solid #1a1a1a;cursor:pointer;transition:all .2s}.folder-card[data-v-9501ca66]:hover{background:#1a1a1a;border-color:#333;transform:translateY(-2px)}.folder-icon[data-v-9501ca66]{width:48px;height:48px;margin-bottom:12px;color:#555}.folder-icon svg[data-v-9501ca66]{width:100%;height:100%}.folder-name[data-v-9501ca66]{font-size:14px;color:#999;text-align:center;word-break:break-all}.waterfall[data-v-9501ca66]{display:flex;gap:16px}.waterfall-column[data-v-9501ca66]{flex:1;display:flex;flex-direction:column;gap:16px}.waterfall-item[data-v-9501ca66]{cursor:pointer}.image-wrapper[data-v-9501ca66]{position:relative;border-radius:12px;overflow:hidden;background:#141414;border:1px solid #1a1a1a;min-height:180px}.image-wrapper[data-v-9501ca66]:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#141414 25%,#1a1a1a 50%,#141414 75%);background-size:200% 100%;animation:shimmer-9501ca66 1.5s infinite;z-index:1;pointer-events:none}.image-wrapper.loaded[data-v-9501ca66]:before{display:none}.image-wrapper.loaded[data-v-9501ca66]{min-height:auto}.image-wrapper img[data-v-9501ca66],.image-wrapper video[data-v-9501ca66]{width:100%;display:block;position:relative;z-index:2}@keyframes shimmer-9501ca66{0%{background-position:200% 0}to{background-position:-200% 0}}.image-wrapper[data-v-9501ca66]:hover{border-color:#333}.overlay[data-v-9501ca66]{position:absolute;inset:0;background:linear-gradient(transparent 50%,rgba(0,0,0,.85));opacity:0;transition:opacity .2s;display:flex;align-items:flex-end;justify-content:flex-end;padding:12px;z-index:10}.image-wrapper:hover .overlay[data-v-9501ca66]{opacity:1}.file-placeholder[data-v-9501ca66]{width:100%;height:200px;display:flex;align-items:center;justify-content:center;background:#141414;color:#333}.file-placeholder svg[data-v-9501ca66]{width:56px;height:56px}.overlay-actions[data-v-9501ca66]{display:flex;gap:8px}.action-btn[data-v-9501ca66]{width:32px;height:32px;border:none;border-radius:50%;background:hsla(0,0%,100%,.08);backdrop-filter:blur(8px);cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;color:hsla(0,0%,100%,.6)}.action-btn svg[data-v-9501ca66]{width:16px;height:16px}.action-btn[data-v-9501ca66]:hover{background:hsla(0,0%,100%,.2);color:#fff;transform:scale(1.1)}.load-trigger[data-v-9501ca66]{display:flex;justify-content:center;align-items:center;padding:48px;min-height:100px}.loading-more[data-v-9501ca66]{display:flex;align-items:center;gap:12px;color:#666;font-size:14px}.no-more[data-v-9501ca66]{color:#444;font-size:14px}.credit-link[data-v-9501ca66]{display:block;margin-top:8px;color:#555;font-size:12px;text-decoration:none;transition:color .2s;text-align:center}.credit-link[data-v-9501ca66]:hover{color:#888}.preview-modal[data-v-9501ca66]{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.97)}.preview-content[data-v-9501ca66],.preview-modal[data-v-9501ca66]{display:flex;align-items:center;justify-content:center;overflow:hidden}.preview-content[data-v-9501ca66]{width:100%;height:100%;padding:60px 80px;box-sizing:border-box}.swipe-viewport[data-v-9501ca66]{width:100%;height:100%;overflow:hidden;position:relative}.swipe-track[data-v-9501ca66]{width:300%;height:100%;display:flex;will-change:transform}.swipe-slide[data-v-9501ca66]{width:33.333%;flex-shrink:0;height:100%;display:flex;align-items:center;justify-content:center}.preview-image[data-v-9501ca66],.preview-video[data-v-9501ca66]{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.preview-close[data-v-9501ca66]{position:fixed;top:20px;right:20px;background:hsla(0,0%,100%,.1);border:none;color:#fff;cursor:pointer;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:1010}.preview-close[data-v-9501ca66]:hover{background:hsla(0,0%,100%,.2)}.preview-close svg[data-v-9501ca66]{width:28px;height:28px}.page-indicator[data-v-9501ca66]{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.6);color:hsla(0,0%,100%,.8);padding:8px 16px;border-radius:20px;font-size:14px;z-index:1010}.preview-next[data-v-9501ca66],.preview-prev[data-v-9501ca66]{position:fixed;top:50%;transform:translateY(-50%);background:hsla(0,0%,100%,.1);border:none;color:#fff;padding:16px;cursor:pointer;border-radius:50%;width:56px;height:56px;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:1010}.preview-next[data-v-9501ca66]:hover,.preview-prev[data-v-9501ca66]:hover{background:hsla(0,0%,100%,.2)}.preview-next svg[data-v-9501ca66],.preview-prev svg[data-v-9501ca66]{width:32px;height:32px}.preview-prev[data-v-9501ca66]{left:20px}.preview-next[data-v-9501ca66]{right:20px}.rotate-btn[data-v-9501ca66]{position:fixed;bottom:30px;right:20px;background:hsla(0,0%,100%,.1);border:none;color:#fff;cursor:pointer;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:1010}.rotate-btn[data-v-9501ca66]:hover{background:hsla(0,0%,100%,.2)}.rotate-btn svg[data-v-9501ca66]{width:24px;height:24px}@media (max-width:768px){.desktop-only[data-v-9501ca66]{display:none!important}.preview-content.mobile-only[data-v-9501ca66]{display:block;padding:0;width:100%;height:100%;position:absolute;top:0;left:0}.page-indicator[data-v-9501ca66]{bottom:40px}}@media (min-width:769px){.mobile-only[data-v-9501ca66]{display:none!important}}@media (max-width:1199px) and (min-width:601px){.gallery-container[data-v-9501ca66]{padding:12px}.waterfall-column[data-v-9501ca66],.waterfall[data-v-9501ca66]{gap:10px}.image-wrapper[data-v-9501ca66]{border-radius:8px}}@media (max-width:600px){.header[data-v-9501ca66]{padding:10px 12px}.header-left .logo[data-v-9501ca66]{font-size:16px}.breadcrumb[data-v-9501ca66]{font-size:12px}.breadcrumb-item[data-v-9501ca66]{padding:4px 8px}.file-count[data-v-9501ca66]{font-size:12px}.gallery-container[data-v-9501ca66]{padding:6px}.waterfall-column[data-v-9501ca66],.waterfall[data-v-9501ca66]{gap:6px}.image-wrapper[data-v-9501ca66]{border-radius:6px;min-height:120px}.folders-section[data-v-9501ca66]{margin-bottom:12px}.folders-grid[data-v-9501ca66]{grid-template-columns:repeat(2,1fr);gap:8px}.folder-card[data-v-9501ca66]{padding:16px 12px;border-radius:8px}.folder-icon[data-v-9501ca66]{width:36px;height:36px;margin-bottom:8px}.folder-name[data-v-9501ca66]{font-size:12px}.load-trigger[data-v-9501ca66]{padding:24px;min-height:60px}}.copy-toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%) translateY(20px);background:rgba(0,0,0,.8);color:#fff;padding:10px 24px;border-radius:20px;font-size:14px;opacity:0;transition:all .3s ease;z-index:9999;pointer-events:none}.copy-toast.show{opacity:1;transform:translateX(-50%) translateY(0)} \ No newline at end of file diff --git a/css/691.854b8d50.css.gz b/css/691.854b8d50.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a97e2fc717b77b524cb2e830ed67e10ef1a5fad3 GIT binary patch literal 2116 zcmV-K2)p+miwFP!000023f)@UuB$c^eihoSNQo39APGBxn?6RXU%fD3h#O-gymB41NF4XO5|M-q$&dV0_6qyV4~1=0N!g zV@4PczNKke*=Gb3#HVx$R$`^EQsDUV2n8zwC;S00P0(GE{@5600b>LrByI@Nuz*Q| zX%@JCakq9}an~6=mjtezt+U$ttF3)HY}Cz!vjU`;2*iVkT>08{iu)#v7*7xf5fg&t zfm__Ik`bI(-&`m^l}%X2rUIsn3Q*!7DDa%(9;!cYwc>oo8R#hD2qrPV=FybQD=lQO z2=*;~b)35|?mA8NyukpCf~0<2rJq_(4ikJW<>fHG@{;kOV7PX34rybwUYC~bm8~#w z9KSv|II}OrpSs(42l<&%2`Eu9<-U1#zu#AOiU|TSyHYXxobUS+4I$1M2TeE_Ty$#_ z2BnG?o*9}){s0N)sLlj2BiEdMkVmxG@?~iC%vT*RWr3-YlR78tkHx)BY3h4z)nM1V zt><~ItpzJUbI2|_dZ|Bhf`hXPA;meYBelS^JJ51Vi(rZ%w=hjH#R5&31Z55hnPb)4 z_pGY#4XfV2!Rl`p^hi0(QE3gHeG2weex5R(2b>8g(ApJOPB&F$b0qi!M1mUfBIFsS zlFd5ayZqxA^3PC&x&{ozk*4e8VdT4S2j&vT#yIqMD5~rX5`y?+$?se7j>WzDO;svu zE#0@NOr9fC=kpy(T0Ps#x58SJfn&j|V4WVNhg6lFGLj%(g0haWSvxe@TD{f1lyRKQ zhp@aG${#?WydY4>q#`4@3^*zf6l=+lED&UyW17SJ+V!2{zI9W+*{DP;i%okRh#^n@ z;e??p$C8H+oXp+J&&aW~R6ng{3yuW|sXb~*I)hI&gc~N>2;S|&KFZWLsqa75z$@;X z?hG88EIgCwhK5&SHm4m9hXF~e{L1FYjv-<9B853xD)Mz))(4(Wr%<4~0LqfBv2Khf zK-RTOpnd{KNM+xkKs+_3$$_i%?$y1~xTk?DA|X`xhO3#Vn&HCGGb$VBFhk(RVNoo? zJB|nx_zRibP&!LW*ey8YBtdlEc@3Vb#t$QBaBK$t^$Ra zmPiDS&PZK2KqmP{RIE=_{qDwIF*EK-fi*4f&}!)6n*0>)T80!Poy%|!*pXZr<}01!(Tz3cXQ>h#{Jy{(RElgQZW{gajf5@H zkzGG-Mve7R3LZ8`?X>!Az=aa#8XH-u!maHbXIj~#>||e7_n%dJt>ZB>{zeymvFd8N zuFKJa(xxC|e6Y9Cv2zbJ$`}%~c5Qc4w<S-gW1|)+?i4>}Bk8;M* z&vp7btTFYpl+6(D`{l_yF-Hj&fM9x=XR6N4T9b1e;47V|WKp4?1jUTQeki8-n|f1u z+yo~rGt?NrIr(@zR(8RW9Q1*lC6FxS;S}Fd(j{SS(lp4(dd59{-}K}g>l^Cb3kH5N zrbgiCH6wFF&2G>mJ5dRh!ie3at>ndSxOK1W@`ejE8JfPNKSptr0^U*<9LAT~9Jn}( zyM>T43s-+jjpB>%L&NTZ3AtBJRHr^>o zBN|KP(9^{A6ox1y0K+uFF%*oyv_{he@1zw7N`=ypq2d004GzwrQyJtxe=}3rkDE{% z05y|`fl2zAci$bGHA>NaDXGfeZ+YL0h<{8)eBT-MCBoPFt7o1B#0;!mQAUkJ~?CF+?G=qgEn4NGAC`~%{ zdMT;g&v~7M8#mfZ_cIK|zxyX8_**QG1!x0?lvA$fX*{>f3(pJ{XjcnaxF0EaM{mcjJR5^)PC3|TrIi~)B zvHZWsR{qDP@<%Ogon=4V$JF93?_(BMFrM1B^uv|KUCZEq01P{Box;+tVW*XJ^?fLm zPUhvBz-tEq^TP*yt25jQs})$xiU$x3mSU!k9p8j~mIji%`d=N)IPkbJf+87w+TwNz u`WeTTYUs2pEdSanyue ImgHub
\ No newline at end of file +Sanyue ImgHub
\ No newline at end of file diff --git a/index.html.gz b/index.html.gz index a627e98bf9272b00affb78f87114ed0e8bdcc2cc..97c8925585bf764b5253498d5682c6e72f27d473 100644 GIT binary patch delta 498 zcmV1d!l+ ze2=8$2Sb{tfY5R8DtUOpDc_btRI)>5D%m3|(4C42xfBC8*;bsg9dpR=?_kGL{LX&f zW}m4Kif!#sfF{rAxfFL_N;EA#g1qXn6r;s`pvcea_SSG$8h;$E#_Sj@tha2H%aT?O z%ay34vwjB=T`8<4FQALql%jCdQXYJJR-r<0m@y5y%igchXVou80A{cBi9xOK)1*E7; zQ9PtVcZ1($BYHzI<=5L~eYM%#FLP~KNXir`q%>i05lKrDF6Tf delta 498 zcmVH?wD|vXqtI(E0RMMg{mF$oeXscpEF2%r2wiTzWW$rWlGq|x7zp@|q z*(d6H#jf@!KvQ50T#AR!C7Krhfr9F=6r;m^Pmy2L?VVv;8h;#}#_Sj@TyX4^&yrRi z%WF|d@4^lu`cgPeL4b|el%nv|Qr?I5tU~p@$Bb#vHhaIiQ)%}`8EEnpOYyN;*X!l- z+=;=YqwConkk4iwRhR~ZhpzoH)R4hFbYw6FXq-o|l-Pw9dat;l*qt-(aN1Ke=@s4L z#J4zOS%B+Q`+p+To(2PnDXPn{tAQ=WSH$0)s3be~Se*%%#hjG0MKIW4JXmfp3P@3x zqIgP$wnNxuBL+h;<(uuYzP-7*%b${{WHCeEqfmXHZ`Lcb+H98>z~hQeE79q)+j@1o zLbJZhbxLC1Wa7zVvWP5RqYsU)*W1mVR@ZM~iuv+uGHX*M13f$7NTIEM;#EXQ6ypT- zz>tm;`|Y~c4mB9U6s{Qd6nD@^>M{BW_KqzL3}4l#9_K+|P_;*s!#9sA;VA~kz;xV? o3j^k|ICYi9e<8+=;LP#B4{D7YD_P8Hi{nTB3!lln&e#J001|rs8vpc.onPointerDown&&c.onPointerDown(...e)),onPointermove:t[2]||(t[2]=(...e)=>c.onPointerMove&&c.onPointerMove(...e)),onPointerup:t[3]||(t[3]=(...e)=>c.onPointerUp&&c.onPointerUp(...e)),onPointercancel:t[4]||(t[4]=(...e)=>c.onPointerUp&&c.onPointerUp(...e)),onDblclick:t[5]||(t[5]=(0,r.D$)((...e)=>c.onDblClick&&c.onDblClick(...e),["prevent"]))},[i.isImage?((0,s.uX)(),(0,s.CE)("img",{key:0,class:"tm-media",src:i.src,draggable:"false",style:(0,o.Tr)(c.mediaStyle),onLoad:t[0]||(t[0]=(...e)=>c.onLoad&&c.onLoad(...e))},null,44,n)):i.isVideo?((0,s.uX)(),(0,s.CE)("video",{key:1,class:"tm-media",src:i.src,controls:"",autoplay:"",playsinline:"",style:(0,o.Tr)(c.mediaStyle)},null,12,a)):(0,s.Q3)("",!0)],544)}var h={name:"TransformMedia",props:{file:{type:Object,required:!0},src:{type:String,required:!0},isImage:{type:Boolean,default:!0},isVideo:{type:Boolean,default:!1}},data(){return{pointers:new Map,scale:1,rotation:0,rotatePreview:0,tx:0,ty:0,naturalWidth:0,naturalHeight:0,startScale:1,startRotation:0,startTx:0,startTy:0,startCenter:null,startDist:0,startAngle:0,dragging:!1,dragStart:null,viewportRect:null,minScale:1,maxScale:4,gestureMode:null,edgeOverflow:0,edgeDir:0}},computed:{isActiveTransform(){return this.scale>1.001||this.pointers.size>=2||this.dragging},displayRotation(){return this.rotation+this.rotatePreview},rotateShrink(){const e=Math.min(1,Math.abs(this.rotatePreview)/90),t=Math.sin(Math.PI*e);return 1-.12*t},mediaStyle(){const e=this.scale*this.rotateShrink,t=this.pointers.size>0;return{transform:`translate3d(${this.tx}px, ${this.ty}px, 0) scale(${e}) rotate(${this.displayRotation}deg)`,transition:t?"none":"transform 0.25s ease",transformOrigin:"center center"}}},watch:{isActiveTransform(e){this.$emit(e?"lock":"unlock")}},methods:{onLoad(e){const t=e.target;this.naturalWidth=t.naturalWidth,this.naturalHeight=t.naturalHeight},reset(){this.scale=1,this.rotation=0,this.rotatePreview=0,this.tx=0,this.ty=0,this.pointers.clear(),this.dragging=!1,this.edgeOverflow=0,this.edgeDir=0,this.$emit("unlock")},clamp(e,t,i){return Math.max(t,Math.min(i,e))},rubberBand(e,t,i=.55){return e*t*i/(t+i*e)},getViewportRect(){return this.$refs.viewport?.getBoundingClientRect()},getPanBounds(){const e=this.$refs.viewport?.getBoundingClientRect();if(!e)return{maxX:0,maxY:0,vw:0,vh:0};const t=e.width,i=e.height,s=this.$el.querySelector("img, video"),r=s?.clientWidth||t,o=s?.clientHeight||i,n=r*this.scale,a=o*this.scale,l=Math.max(0,(n-t)/2),h=Math.max(0,(a-i)/2);return{maxX:l,maxY:h,vw:t,vh:i}},applyBoundWithRubber(e,t,i){return e>t?t+this.rubberBand(e-t,i,.55):e<-t?-t-this.rubberBand(-t-e,i,.55):e},calcTwoPointer(){const e=Array.from(this.pointers.values()),t=e[0],i=e[1],s=i.x-t.x,r=i.y-t.y,o=Math.hypot(s,r),n=Math.atan2(r,s)*(180/Math.PI),a={x:(t.x+i.x)/2,y:(t.y+i.y)/2};return{dist:o,angle:n,center:a}},normalizeAngle(e){return e=(e%360+360)%360,e>180?e-360:e},onPointerDown(e){if(e.currentTarget.setPointerCapture?.(e.pointerId),this.viewportRect=this.getViewportRect(),this.pointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),2===this.pointers.size){const{dist:e,angle:t,center:i}=this.calcTwoPointer();return this.startDist=e,this.startAngle=t,this.startCenter=i,this.startScale=this.scale,this.startRotation=this.rotation,this.startTx=this.tx,this.startTy=this.ty,this.dragging=!1,this.gestureMode=null,void(this.rotatePreview=0)}this.scale>1.001&&(this.dragging=!0,this.dragStart={x:e.clientX,y:e.clientY},this.startTx=this.tx,this.startTy=this.ty)},onPointerMove(e){if(this.pointers.has(e.pointerId)){if(this.pointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),2===this.pointers.size){e.preventDefault();const{dist:t,angle:i,center:s}=this.calcTwoPointer(),r=t/(this.startDist||t),o=Math.abs(r-1),n=this.normalizeAngle(i-this.startAngle),a=Math.abs(n),l=8,h=.08;if(!this.gestureMode)if(a>=l)this.gestureMode="rotate";else{if(!(o>=h))return;this.gestureMode="pinch"}if("rotate"===this.gestureMode)return this.scale=this.startScale,void(this.rotatePreview=this.clamp(n,-90,90));if("pinch"===this.gestureMode&&(this.scale=this.clamp(this.startScale*r,this.minScale,this.maxScale),this.rotatePreview=0),this.startCenter&&this.viewportRect){const e=this.startCenter.x-this.viewportRect.left-this.viewportRect.width/2,t=this.startCenter.y-this.viewportRect.top-this.viewportRect.height/2,i=s.x-this.viewportRect.left-this.viewportRect.width/2,r=s.y-this.viewportRect.top-this.viewportRect.height/2;this.tx=this.startTx+(i-e),this.ty=this.startTy+(r-t)}return}if(this.dragging&&this.scale>1.001){e.preventDefault();const t=e.clientX-this.dragStart.x,i=e.clientY-this.dragStart.y,s=this.startTx+t,r=this.startTy+i,{maxX:o,maxY:n,vw:a,vh:l}=this.getPanBounds();let h=0,c=0;s>o?(h=s-o,c=-1):s<-o&&(h=-o-s,c=1),this.edgeOverflow=h,this.edgeDir=c,this.tx=this.applyBoundWithRubber(s,o,a),this.ty=this.applyBoundWithRubber(r,n,l)}}},onPointerUp(e){if(this.pointers.has(e.pointerId)&&this.pointers.delete(e.pointerId),this.pointers.size<2&&"rotate"===this.gestureMode&&(this.finishRotate(),this.gestureMode=null),this.pointers.size<2&&(this.startCenter=null,this.startDist=0,this.startAngle=0,this.gestureMode=null),0===this.pointers.size){if(this.dragging=!1,this.edgeOverflow>60&&0!==this.edgeDir){const e=this.edgeDir;return this.reset(),void this.$emit("edge-swipe",e)}if(this.edgeOverflow=0,this.edgeDir=0,this.scale<=1.001)this.scale=1,this.tx=0,this.ty=0;else{const{maxX:e,maxY:t}=this.getPanBounds();this.tx=Math.max(-e,Math.min(e,this.tx)),this.ty=Math.max(-t,Math.min(t,this.ty))}}},finishRotate(){const e=this.rotatePreview,t=30;let i=0;Math.abs(e)>=t&&(i=e>0?90:-90);const s=((this.rotation+i)%360+360)%360;this.rotation=s,this.rotatePreview=0,this.updateFillScale()},updateFillScale(){const e=this.rotation%360,t=90===e||270===e;t?(this.scale=2,this.tx=0,this.ty=0):(this.scale=1,this.tx=0,this.ty=0)},onDblClick(){this.scale>1.001?(this.scale=1,this.tx=0,this.ty=0):this.scale=2}}},c=i(1241);const d=(0,c.A)(h,[["render",l],["__scopeId","data-v-1e6c105f"]]);var u=d;const p={class:"public-browse"},m={class:"header"},g={class:"header-left"},v={class:"logo"},w={class:"header-center"},f={class:"breadcrumb"},y=["onClick"],k={class:"header-right"},C={class:"file-count"},x={key:0,class:"loading-container"},b={key:1,class:"error-container"},L={key:2,class:"gallery-container",ref:"galleryContainer"},I={key:0,class:"folders-section"},F={class:"folders-grid"},M=["onClick"],P={class:"folder-name"},S={class:"waterfall",ref:"waterfall"},T=["onClick"],X=["src","alt","onLoad"],E=["src","onLoadedmetadata"],R={key:2,class:"file-placeholder"},D={class:"overlay"},$={class:"overlay-actions"},A=["onClick"],B=["onClick"],z={ref:"loadTrigger",class:"load-trigger"},V={key:0,class:"loading-more"},H={key:1,class:"no-more"},W={key:2,class:"credit-link",href:"https://github.com/axibayuit-a11y",target:"_blank",rel:"noopener"},U=["src"],_=["src"],Y={class:"page-indicator"};function O(e,t,i,n,a,l){const h=u;return(0,s.uX)(),(0,s.CE)("div",p,[(0,s.Lk)("header",m,[(0,s.Lk)("div",g,[(0,s.Lk)("span",v,(0,o.v_)(l.siteName),1)]),(0,s.Lk)("div",w,[(0,s.Lk)("div",f,[(0,s.Lk)("span",{class:"breadcrumb-item",onClick:t[0]||(t[0]=(...e)=>l.goToRoot&&l.goToRoot(...e))},(0,o.v_)(l.rootDirName),1),((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.pathParts,(e,i)=>((0,s.uX)(),(0,s.CE)(s.FK,{key:i},[t[18]||(t[18]=(0,s.Lk)("span",{class:"breadcrumb-sep"},"/",-1)),(0,s.Lk)("span",{class:"breadcrumb-item",onClick:e=>l.goToPath(i)},(0,o.v_)(e),9,y)],64))),128))])]),(0,s.Lk)("div",k,[(0,s.Lk)("span",C,(0,o.v_)(a.totalCount)+" 个文件",1)])]),a.loading&&0===a.files.length?((0,s.uX)(),(0,s.CE)("div",x,[...t[19]||(t[19]=[(0,s.Lk)("div",{class:"loading-spinner"},null,-1),(0,s.Lk)("p",null,"加载中...",-1)])])):a.error?((0,s.uX)(),(0,s.CE)("div",b,[(0,s.Lk)("p",null,(0,o.v_)(a.error),1),a.canRetry?((0,s.uX)(),(0,s.CE)("button",{key:0,onClick:t[1]||(t[1]=(...e)=>l.loadFiles&&l.loadFiles(...e)),class:"retry-btn"},"重试")):(0,s.Q3)("",!0)])):((0,s.uX)(),(0,s.CE)("div",L,[l.folders.length>0?((0,s.uX)(),(0,s.CE)("div",I,[(0,s.Lk)("div",F,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.folders,e=>((0,s.uX)(),(0,s.CE)("div",{key:e.name,class:"folder-card",onClick:t=>l.enterFolder(e.name)},[t[20]||(t[20]=(0,s.Lk)("div",{class:"folder-icon"},[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M10 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z"})])],-1)),(0,s.Lk)("span",P,(0,o.v_)(l.getFolderName(e.name)),1)],8,M))),128))])])):(0,s.Q3)("",!0),(0,s.Lk)("div",S,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.columns,(e,i)=>((0,s.uX)(),(0,s.CE)("div",{key:i,class:"waterfall-column"},[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(e,e=>((0,s.uX)(),(0,s.CE)("div",{key:e.name,class:"waterfall-item",onClick:t=>l.openPreview(e)},[(0,s.Lk)("div",{class:(0,o.C4)(["image-wrapper",{loaded:e.loaded}])},[l.isImage(e)?((0,s.uX)(),(0,s.CE)("img",{key:0,src:l.getFileUrl(e.name),alt:e.name,loading:"lazy",onLoad:t=>l.onImageLoad(t,e),onError:t[2]||(t[2]=(...e)=>l.handleImageError&&l.handleImageError(...e))},null,40,X)):l.isVideo(e)?((0,s.uX)(),(0,s.CE)("video",{key:1,src:l.getFileUrl(e.name),muted:"",loop:"",preload:"metadata",onLoadedmetadata:t=>l.onVideoLoad(t,e),onMouseenter:t[3]||(t[3]=e=>e.target.play()),onMouseleave:t[4]||(t[4]=e=>e.target.pause())},null,40,E)):((0,s.uX)(),(0,s.CE)("div",R,[...t[21]||(t[21]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13z"})],-1)])])),(0,s.Lk)("div",D,[(0,s.Lk)("div",$,[(0,s.Lk)("button",{class:"action-btn",onClick:(0,r.D$)(t=>l.copyLink(e.name),["stop"]),title:"复制链接"},[...t[22]||(t[22]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"})],-1)])],8,A),(0,s.Lk)("button",{class:"action-btn",onClick:(0,r.D$)(t=>l.downloadFile(e.name),["stop"]),title:"下载"},[...t[23]||(t[23]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"})],-1)])],8,B)])])],2)],8,T))),128))]))),128))],512),(0,s.Lk)("div",z,[a.loading&&a.files.length>0?((0,s.uX)(),(0,s.CE)("div",V,[...t[24]||(t[24]=[(0,s.Lk)("div",{class:"loading-spinner-small"},null,-1),(0,s.Lk)("span",null,"加载中...",-1)])])):!a.hasMore&&l.mediaFiles.length>0?((0,s.uX)(),(0,s.CE)("div",H," 已加载全部 ")):(0,s.Q3)("",!0),!a.hasMore&&l.mediaFiles.length>0?((0,s.uX)(),(0,s.CE)("a",W," 林酱贡献 ")):(0,s.Q3)("",!0)],512)],512)),a.previewVisible?((0,s.uX)(),(0,s.CE)("div",{key:3,class:"preview-modal",onClick:t[17]||(t[17]=(0,r.D$)((...e)=>l.closePreview&&l.closePreview(...e),["self"]))},[(0,s.Lk)("button",{class:"preview-close",onClick:t[5]||(t[5]=(0,r.D$)((...e)=>l.closePreview&&l.closePreview(...e),["stop"]))},[...t[25]||(t[25]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})],-1)])]),(0,s.Lk)("div",{class:"preview-content desktop-only",onClick:t[6]||(t[6]=(0,r.D$)(()=>{},["stop"]))},[l.currentPreviewFile&&l.isImage(l.currentPreviewFile)?((0,s.uX)(),(0,s.CE)("img",{key:0,src:l.getFileUrl(l.currentPreviewFile.name),class:"preview-image",style:(0,o.Tr)(l.desktopImageStyle),draggable:"false"},null,12,U)):l.currentPreviewFile&&l.isVideo(l.currentPreviewFile)?((0,s.uX)(),(0,s.CE)("video",{key:1,src:l.getFileUrl(l.currentPreviewFile.name),controls:"",autoplay:"",class:"preview-video",style:(0,o.Tr)(l.desktopImageStyle)},null,12,_)):(0,s.Q3)("",!0)]),(0,s.Lk)("div",{class:"preview-content mobile-only",onClick:t[13]||(t[13]=(0,r.D$)(()=>{},["stop"]))},[(0,s.Lk)("div",{class:"swipe-viewport",ref:"mobileViewport",onTouchstart:t[10]||(t[10]=(...e)=>l.onSwipeStart&&l.onSwipeStart(...e)),onTouchmove:t[11]||(t[11]=(...e)=>l.onSwipeMove&&l.onSwipeMove(...e)),onTouchend:t[12]||(t[12]=(...e)=>l.onSwipeEnd&&l.onSwipeEnd(...e))},[(0,s.Lk)("div",{class:"swipe-track",style:(0,o.Tr)(l.swipeTrackStyle),onTransitionend:t[9]||(t[9]=(...e)=>l.onSwipeTransitionEnd&&l.onSwipeTransitionEnd(...e))},[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.swipeWindow,(e,i)=>((0,s.uX)(),(0,s.CE)("div",{class:"swipe-slide",key:l.getSlideKey(e,i)},[e?((0,s.uX)(),(0,s.Wv)(h,{key:0,file:e,src:l.getFileUrl(e.name),"is-image":l.isImage(e),"is-video":l.isVideo(e),onLock:t[7]||(t[7]=e=>a.gestureLocked=!0),onUnlock:t[8]||(t[8]=e=>a.gestureLocked=!1),onEdgeSwipe:l.onEdgeSwipe},null,8,["file","src","is-image","is-video","onEdgeSwipe"])):(0,s.Q3)("",!0)]))),128))],36)],544)]),a.previewIndex>0?((0,s.uX)(),(0,s.CE)("button",{key:0,class:"preview-prev desktop-only",onClick:t[14]||(t[14]=(0,r.D$)((...e)=>l.prevImage&&l.prevImage(...e),["stop"]))},[...t[26]||(t[26]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"})],-1)])])):(0,s.Q3)("",!0),a.previewIndexl.nextImage&&l.nextImage(...e),["stop"]))},[...t[27]||(t[27]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"})],-1)])])):(0,s.Q3)("",!0),(0,s.Lk)("button",{class:"rotate-btn desktop-only",onClick:t[16]||(t[16]=(0,r.D$)((...e)=>l.rotateImage&&l.rotateImage(...e),["stop"])),title:"旋转90°"},[...t[28]||(t[28]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M7.11 8.53L5.7 7.11C4.8 8.27 4.24 9.61 4.07 11h2.02c.14-.87.49-1.72 1.02-2.47zM6.09 13H4.07c.17 1.39.72 2.73 1.62 3.89l1.41-1.42c-.52-.75-.87-1.59-1.01-2.47zm1.01 5.32c1.16.9 2.51 1.44 3.9 1.61V17.9c-.87-.15-1.71-.49-2.46-1.03L7.1 18.32zM13 4.07V1L8.45 5.55 13 10V6.09c2.84.48 5 2.94 5 5.91s-2.16 5.43-5 5.91v2.02c3.95-.49 7-3.85 7-7.93s-3.05-7.44-7-7.93z"})],-1)])]),(0,s.Lk)("div",Y,(0,o.v_)(a.previewIndex+1)+" / "+(0,o.v_)(l.mediaFiles.length),1)])):(0,s.Q3)("",!0)])}i(4114),i(8111),i(2489),i(7588),i(1701);var Q=i(4373),K=i(8401),N={name:"PublicBrowse",components:{TransformMedia:u},data(){return{files:[],allowedDirs:[],rootDir:"",currentPath:"",totalCount:0,loading:!1,error:null,canRetry:!0,hasMore:!0,previewVisible:!1,previewIndex:0,observer:null,pageSize:24,columnCount:4,columnHeights:[0,0,0,0],imageRotation:0,swipeX:0,swipeStartX:0,swipeStartY:0,swipeStartT:0,swipeActive:!1,swipeAnimating:!1,swipeDir:0,viewportW:0,gestureLocked:!1}},computed:{...(0,K.L8)(["userConfig"]),siteName(){return this.userConfig?.siteTitle||"公开相册"},rootDirName(){return this.rootDir.split("/").filter(Boolean).pop()||"根目录"},pathParts(){if(!this.currentPath||!this.rootDir)return[];const e=this.currentPath.replace(this.rootDir,"").replace(/^\/+/,"");return e.split("/").filter(Boolean)},folders(){return this.files.filter(e=>e.isFolder)},mediaFiles(){return this.files.filter(e=>!e.isFolder)},columns(){const e=Array.from({length:this.columnCount},()=>[]);for(const t of this.mediaFiles){const i=t.columnIndex??0;i0?this.mediaFiles[this.previewIndex-1]:null},nextPreviewFile(){return this.previewIndex{e.columnIndex=void 0,this.assignToColumn(e)}))},getShortestColumn(){let e=0,t=this.columnHeights[0];for(let i=1;i{const t=e[0];t.isIntersecting&&this.hasMore&&!this.loading&&this.loadMore()},{rootMargin:"200px"})},observeLoadTrigger(){this.$nextTick(()=>{this.$refs.loadTrigger&&this.observer&&this.observer.observe(this.$refs.loadTrigger)})},async initFromRoute(){const e=this.$route.params.dir||"",t=Array.isArray(e)?e.join("/"):e;if(!t)return this.error="请指定要浏览的目录,例如: /browse/landscape",void(this.canRetry=!1);const i=t.split("/").filter(Boolean);this.rootDir=i[0],this.currentPath=t,this.files=[],this.hasMore=!0,this.columnHeights=new Array(this.columnCount).fill(0),await this.loadFiles(),this.observeLoadTrigger()},async loadFiles(){this.loading=!0,this.error=null,this.canRetry=!0;try{const e=await Q.A.get(`/api/public/list?dir=${encodeURIComponent(this.currentPath)}&count=${this.pageSize}`);e.data.allowedDirs&&(this.allowedDirs=e.data.allowedDirs);const t=(e.data.directories||[]).map(e=>({name:e,isFolder:!0})),i=(e.data.files||[]).map(e=>({name:e.name,isFolder:!1,metadata:e.metadata,columnIndex:void 0}));i.forEach(e=>this.assignToColumn(e)),this.files=[...t,...i],this.totalCount=e.data.totalCount||this.files.length,this.hasMore=this.mediaFiles.length({name:e.name,isFolder:!1,metadata:e.metadata,columnIndex:void 0}));i.forEach(e=>this.assignToColumn(e)),this.files.push(...i),this.hasMore=this.mediaFiles.length{this.showToast("已复制")}).catch(()=>{const e=document.createElement("input");e.value=t,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),this.showToast("已复制")})},showToast(e){const t=document.querySelector(".copy-toast");t&&t.remove();const i=document.createElement("div");i.className="copy-toast",i.textContent=e,document.body.appendChild(i),setTimeout(()=>i.classList.add("show"),10),setTimeout(()=>{i.classList.remove("show"),setTimeout(()=>i.remove(),300)},1500)},downloadFile(e){const t=document.createElement("a");t.href=this.getFileUrl(e),t.download=e.split("/").pop(),t.click()},openPreview(e){if(e.isFolder)return;const t=this.mediaFiles.findIndex(t=>t.name===e.name);t>=0&&(this.previewIndex=t,this.previewVisible=!0,this.imageRotation=0,this.gestureLocked=!1,document.body.style.overflow="hidden",this.$nextTick(()=>{this.viewportW=this.$refs.mobileViewport?.getBoundingClientRect().width||window.innerWidth}))},closePreview(){this.previewVisible=!1,this.imageRotation=0,this.gestureLocked=!1,document.body.style.overflow=""},prevImage(){this.previewIndex>0&&(this.previewIndex--,this.imageRotation=0)},nextImage(){this.previewIndex=360&&setTimeout(()=>{const e=this.$el.querySelector(".preview-image, .preview-video");e?(e.style.transition="none",this.imageRotation=0,e.offsetHeight,e.style.transition=""):this.imageRotation=0},300)},onSwipeStart(e){if(this.gestureLocked)return;if(this.swipeAnimating)return;const t=e.touches[0];this.swipeStartX=t.clientX,this.swipeStartY=t.clientY,this.swipeStartT=performance.now(),this.swipeX=0,this.swipeActive=!1,this.viewportW=this.$refs.mobileViewport?.getBoundingClientRect().width||window.innerWidth},onSwipeMove(e){if(this.gestureLocked)return;if(this.swipeAnimating)return;const t=e.touches[0],i=t.clientX-this.swipeStartX,s=t.clientY-this.swipeStartY;if(!this.swipeActive){if(Math.abs(i)<8)return;if(Math.abs(i)<=Math.abs(s))return;this.swipeActive=!0}e.preventDefault();let r=i;0===this.previewIndex&&r>0?r=this.rubberBand(r,this.viewportW,.55):this.previewIndex===this.mediaFiles.length-1&&r<0&&(r=-this.rubberBand(-r,this.viewportW,.55)),this.swipeX=r},onSwipeEnd(){if(this.gestureLocked)return;if(this.swipeAnimating)return;if(!this.swipeActive)return void(this.swipeX=0);const e=Math.max(1,performance.now()-this.swipeStartT),t=this.swipeX/e,i=.2*this.viewportW;let s=0;(this.swipeX<=-i||t<=-.8)&&(s=1),(this.swipeX>=i||t>=.8)&&(s=-1),(-1===s&&0===this.previewIndex||1===s&&this.previewIndex===this.mediaFiles.length-1)&&(s=0),this.swipeDir=s,this.swipeAnimating=!0,this.swipeX=1===s?-this.viewportW:-1===s?+this.viewportW:0},onSwipeTransitionEnd(){this.swipeAnimating&&(1===this.swipeDir&&this.previewIndex++,-1===this.swipeDir&&this.previewIndex--,this.swipeAnimating=!1,this.swipeDir=0,this.swipeX=0)},rubberBand(e,t,i=.55){return e*t*i/(t+i*e)},onEdgeSwipe(e){1===e&&this.previewIndex0&&this.previewIndex--}}};const j=(0,c.A)(N,[["render",O],["__scopeId","data-v-9501ca66"]]);var q=j}}]); +//# sourceMappingURL=691.fa084424.js.map \ No newline at end of file diff --git a/js/691.fa084424.js.gz b/js/691.fa084424.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..a6bb6d2ef3c86e37a21f1545788d0e36a202328e GIT binary patch literal 7891 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 literal 0 HcmV?d00001 diff --git a/js/691.fa084424.js.map b/js/691.fa084424.js.map new file mode 100644 index 0000000..c20220c --- /dev/null +++ b/js/691.fa084424.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/691.fa084424.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/components/TransformMedia.vue?db0c","webpack://sanyue_imghub/./src/components/TransformMedia.vue","webpack://sanyue_imghub/./src/components/TransformMedia.vue?c392","webpack://sanyue_imghub/./src/views/PublicBrowse.vue?0555","webpack://sanyue_imghub/./src/views/PublicBrowse.vue","webpack://sanyue_imghub/./src/views/PublicBrowse.vue?bab5"],"sourcesContent":["import { normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers } from \"vue\";\nconst _hoisted_1 = [\"src\"];\nconst _hoisted_2 = [\"src\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return _openBlock(), _createElementBlock(\"div\", {\n class: \"tm-viewport\",\n ref: \"viewport\",\n onPointerdown: _cache[1] || (_cache[1] = (...args) => $options.onPointerDown && $options.onPointerDown(...args)),\n onPointermove: _cache[2] || (_cache[2] = (...args) => $options.onPointerMove && $options.onPointerMove(...args)),\n onPointerup: _cache[3] || (_cache[3] = (...args) => $options.onPointerUp && $options.onPointerUp(...args)),\n onPointercancel: _cache[4] || (_cache[4] = (...args) => $options.onPointerUp && $options.onPointerUp(...args)),\n onDblclick: _cache[5] || (_cache[5] = _withModifiers((...args) => $options.onDblClick && $options.onDblClick(...args), [\"prevent\"]))\n }, [$props.isImage ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n class: \"tm-media\",\n src: $props.src,\n draggable: \"false\",\n style: _normalizeStyle($options.mediaStyle),\n onLoad: _cache[0] || (_cache[0] = (...args) => $options.onLoad && $options.onLoad(...args))\n }, null, 44, _hoisted_1)) : $props.isVideo ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n class: \"tm-media\",\n src: $props.src,\n controls: \"\",\n autoplay: \"\",\n playsinline: \"\",\n style: _normalizeStyle($options.mediaStyle)\n }, null, 12, _hoisted_2)) : _createCommentVNode(\"\", true)], 544);\n}","export default {\n name: \"TransformMedia\",\n props: {\n file: {\n type: Object,\n required: true\n },\n src: {\n type: String,\n required: true\n },\n isImage: {\n type: Boolean,\n default: true\n },\n isVideo: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n pointers: new Map(),\n // transform state\n scale: 1,\n rotation: 0,\n // 落地的旋转角度:0, 90, 180, 270\n rotatePreview: 0,\n // 旋转预览角度(-90~+90,跟手)\n tx: 0,\n ty: 0,\n // 图片原始尺寸\n naturalWidth: 0,\n naturalHeight: 0,\n // gesture start snapshots\n startScale: 1,\n startRotation: 0,\n startTx: 0,\n startTy: 0,\n startCenter: null,\n startDist: 0,\n startAngle: 0,\n // drag\n dragging: false,\n dragStart: null,\n viewportRect: null,\n // bounds\n minScale: 1,\n maxScale: 4,\n // 手势模式锁定:'pinch' | 'rotate' | null\n gestureMode: null,\n // 边界翻页相关\n edgeOverflow: 0,\n // 超出边界的累计距离\n edgeDir: 0 // 超出方向:-1左 +1右\n };\n },\n computed: {\n isActiveTransform() {\n return this.scale > 1.001 || this.pointers.size >= 2 || this.dragging;\n },\n // 实际显示的旋转角度 = 落地角度 + 预览角度\n displayRotation() {\n return this.rotation + this.rotatePreview;\n },\n // 旋转时缩小系数(中间最小,两端恢复)\n rotateShrink() {\n const p = Math.min(1, Math.abs(this.rotatePreview) / 90);\n const k = Math.sin(Math.PI * p);\n return 1 - 0.12 * k; // 最多缩小12%\n },\n mediaStyle() {\n const finalScale = this.scale * this.rotateShrink;\n const inGesture = this.pointers.size > 0;\n return {\n transform: `translate3d(${this.tx}px, ${this.ty}px, 0) scale(${finalScale}) rotate(${this.displayRotation}deg)`,\n transition: inGesture ? \"none\" : \"transform 0.25s ease\",\n transformOrigin: \"center center\"\n };\n }\n },\n watch: {\n isActiveTransform(v) {\n this.$emit(v ? \"lock\" : \"unlock\");\n }\n },\n methods: {\n onLoad(e) {\n // 记录图片原始尺寸\n const img = e.target;\n this.naturalWidth = img.naturalWidth;\n this.naturalHeight = img.naturalHeight;\n },\n reset() {\n this.scale = 1;\n this.rotation = 0;\n this.rotatePreview = 0;\n this.tx = 0;\n this.ty = 0;\n this.pointers.clear();\n this.dragging = false;\n this.edgeOverflow = 0;\n this.edgeDir = 0;\n this.$emit(\"unlock\");\n },\n clamp(v, min, max) {\n return Math.max(min, Math.min(max, v));\n },\n // iOS 风格橡皮筋阻尼函数\n rubberBand(distance, dimension, constant = 0.55) {\n return distance * dimension * constant / (dimension + constant * distance);\n },\n getViewportRect() {\n return this.$refs.viewport?.getBoundingClientRect();\n },\n // 计算放大后允许的最大平移范围\n getPanBounds() {\n const rect = this.$refs.viewport?.getBoundingClientRect();\n if (!rect) return {\n maxX: 0,\n maxY: 0,\n vw: 0,\n vh: 0\n };\n const vw = rect.width,\n vh = rect.height;\n const img = this.$el.querySelector('img, video');\n const iw = img?.clientWidth || vw;\n const ih = img?.clientHeight || vh;\n const sw = iw * this.scale;\n const sh = ih * this.scale;\n const maxX = Math.max(0, (sw - vw) / 2);\n const maxY = Math.max(0, (sh - vh) / 2);\n return {\n maxX,\n maxY,\n vw,\n vh\n };\n },\n // 应用边界阻尼\n applyBoundWithRubber(value, max, dimension) {\n if (value > max) {\n return max + this.rubberBand(value - max, dimension, 0.55);\n }\n if (value < -max) {\n return -max - this.rubberBand(-max - value, dimension, 0.55);\n }\n return value;\n },\n calcTwoPointer() {\n const pts = Array.from(this.pointers.values());\n const p0 = pts[0],\n p1 = pts[1];\n const dx = p1.x - p0.x;\n const dy = p1.y - p0.y;\n const dist = Math.hypot(dx, dy);\n const angle = Math.atan2(dy, dx) * (180 / Math.PI);\n const center = {\n x: (p0.x + p1.x) / 2,\n y: (p0.y + p1.y) / 2\n };\n return {\n dist,\n angle,\n center\n };\n },\n // 角度归一化到 -180~180\n normalizeAngle(deg) {\n deg = (deg % 360 + 360) % 360;\n return deg > 180 ? deg - 360 : deg;\n },\n onPointerDown(e) {\n e.currentTarget.setPointerCapture?.(e.pointerId);\n this.viewportRect = this.getViewportRect();\n this.pointers.set(e.pointerId, {\n x: e.clientX,\n y: e.clientY\n });\n\n // 2指开始:初始化 pinch/rotate 基准\n if (this.pointers.size === 2) {\n const {\n dist,\n angle,\n center\n } = this.calcTwoPointer();\n this.startDist = dist;\n this.startAngle = angle;\n this.startCenter = center;\n this.startScale = this.scale;\n this.startRotation = this.rotation;\n this.startTx = this.tx;\n this.startTy = this.ty;\n this.dragging = false;\n this.gestureMode = null;\n this.rotatePreview = 0;\n return;\n }\n\n // 1指:如果已放大,则进入拖拽\n if (this.scale > 1.001) {\n this.dragging = true;\n this.dragStart = {\n x: e.clientX,\n y: e.clientY\n };\n this.startTx = this.tx;\n this.startTy = this.ty;\n }\n },\n onPointerMove(e) {\n if (!this.pointers.has(e.pointerId)) return;\n this.pointers.set(e.pointerId, {\n x: e.clientX,\n y: e.clientY\n });\n\n // 2指:缩放 + 旋转(带死区锁定)\n if (this.pointers.size === 2) {\n e.preventDefault();\n const {\n dist,\n angle,\n center\n } = this.calcTwoPointer();\n const scaleFactor = dist / (this.startDist || dist);\n const scaleChange = Math.abs(scaleFactor - 1);\n const deltaAngle = this.normalizeAngle(angle - this.startAngle);\n const angleChange = Math.abs(deltaAngle);\n\n // 阈值\n const rotateStartDeg = 8; // 8° 开始进入旋转模式\n const pinchStartScale = 0.08; // 8% 缩放变化开始进入缩放模式\n\n // 判断手势模式(只在第一次超过死区时锁定)\n // 优先判断旋转:角度变化超过8°就进入旋转模式(不管缩放)\n if (!this.gestureMode) {\n if (angleChange >= rotateStartDeg) {\n this.gestureMode = 'rotate';\n } else if (scaleChange >= pinchStartScale) {\n this.gestureMode = 'pinch';\n } else {\n return; // 还在死区内\n }\n }\n\n // 旋转模式:预览角跟手,限制在 -90~+90\n if (this.gestureMode === 'rotate') {\n this.scale = this.startScale; // 锁定缩放\n this.rotatePreview = this.clamp(deltaAngle, -90, 90);\n return;\n }\n\n // 缩放模式\n if (this.gestureMode === 'pinch') {\n this.scale = this.clamp(this.startScale * scaleFactor, this.minScale, this.maxScale);\n this.rotatePreview = 0;\n }\n\n // 跟随双指中心移动\n if (this.startCenter && this.viewportRect) {\n const cx0 = this.startCenter.x - this.viewportRect.left - this.viewportRect.width / 2;\n const cy0 = this.startCenter.y - this.viewportRect.top - this.viewportRect.height / 2;\n const cx1 = center.x - this.viewportRect.left - this.viewportRect.width / 2;\n const cy1 = center.y - this.viewportRect.top - this.viewportRect.height / 2;\n this.tx = this.startTx + (cx1 - cx0);\n this.ty = this.startTy + (cy1 - cy0);\n }\n return;\n }\n\n // 1指:拖拽(只在 scale>1 时)+ 边界阻尼 + 边界翻页检测\n if (this.dragging && this.scale > 1.001) {\n e.preventDefault();\n const dx = e.clientX - this.dragStart.x;\n const dy = e.clientY - this.dragStart.y;\n const rawX = this.startTx + dx;\n const rawY = this.startTy + dy;\n const {\n maxX,\n maxY,\n vw,\n vh\n } = this.getPanBounds();\n\n // 检测是否超出左右边界\n let overflow = 0;\n let dir = 0;\n if (rawX > maxX) {\n overflow = rawX - maxX;\n dir = -1; // 往右拖 = 上一页\n } else if (rawX < -maxX) {\n overflow = -maxX - rawX;\n dir = +1; // 往左拖 = 下一页\n }\n\n // 记录超出状态\n this.edgeOverflow = overflow;\n this.edgeDir = dir;\n this.tx = this.applyBoundWithRubber(rawX, maxX, vw);\n this.ty = this.applyBoundWithRubber(rawY, maxY, vh);\n }\n },\n onPointerUp(e) {\n if (this.pointers.has(e.pointerId)) this.pointers.delete(e.pointerId);\n\n // 两指结束:处理旋转吸附\n if (this.pointers.size < 2 && this.gestureMode === 'rotate') {\n this.finishRotate();\n this.gestureMode = null;\n }\n if (this.pointers.size < 2) {\n this.startCenter = null;\n this.startDist = 0;\n this.startAngle = 0;\n this.gestureMode = null;\n }\n if (this.pointers.size === 0) {\n this.dragging = false;\n\n // 检查是否触发边界翻页(超出60px触发)\n if (this.edgeOverflow > 60 && this.edgeDir !== 0) {\n const dir = this.edgeDir;\n // 翻页前先重置自身状态,解除 gestureLocked\n this.reset();\n this.$emit('edge-swipe', dir);\n return;\n }\n this.edgeOverflow = 0;\n this.edgeDir = 0;\n\n // 缩放回到1附近,自动归位\n if (this.scale <= 1.001) {\n this.scale = 1;\n this.tx = 0;\n this.ty = 0;\n } else {\n // 放大状态:回弹到合法范围\n const {\n maxX,\n maxY\n } = this.getPanBounds();\n this.tx = Math.max(-maxX, Math.min(maxX, this.tx));\n this.ty = Math.max(-maxY, Math.min(maxY, this.ty));\n }\n }\n },\n // 松手后吸附到 0° 或 ±90°\n finishRotate() {\n const d = this.rotatePreview;\n const commitDeg = 30; // 超过30°就翻到90°\n\n let target = 0;\n if (Math.abs(d) >= commitDeg) {\n target = d > 0 ? 90 : -90;\n }\n\n // 计算新的落地角度\n const newRot = ((this.rotation + target) % 360 + 360) % 360;\n\n // 落地并重置预览角(transition 会自动处理动画)\n this.rotation = newRot;\n this.rotatePreview = 0;\n\n // 计算旋转后的铺满缩放\n this.updateFillScale();\n },\n // 旋转后铺满屏幕:90°/270°时放大到2倍(类似双击效果)\n updateFillScale() {\n const rot = this.rotation % 360;\n const isRotated = rot === 90 || rot === 270;\n if (isRotated) {\n // 90°/270° 时放大到2倍铺满\n this.scale = 2;\n this.tx = 0;\n this.ty = 0;\n } else {\n // 0° 或 180° 恢复正常\n this.scale = 1;\n this.tx = 0;\n this.ty = 0;\n }\n },\n onDblClick() {\n if (this.scale > 1.001) {\n this.scale = 1;\n this.tx = 0;\n this.ty = 0;\n } else {\n this.scale = 2;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./TransformMedia.vue?vue&type=template&id=1e6c105f&scoped=true\"\nimport script from \"./TransformMedia.vue?vue&type=script&lang=js\"\nexport * from \"./TransformMedia.vue?vue&type=script&lang=js\"\n\nimport \"./TransformMedia.vue?vue&type=style&index=0&id=1e6c105f&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1e6c105f\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, resolveComponent as _resolveComponent, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"public-browse\"\n};\nconst _hoisted_2 = {\n class: \"header\"\n};\nconst _hoisted_3 = {\n class: \"header-left\"\n};\nconst _hoisted_4 = {\n class: \"logo\"\n};\nconst _hoisted_5 = {\n class: \"header-center\"\n};\nconst _hoisted_6 = {\n class: \"breadcrumb\"\n};\nconst _hoisted_7 = [\"onClick\"];\nconst _hoisted_8 = {\n class: \"header-right\"\n};\nconst _hoisted_9 = {\n class: \"file-count\"\n};\nconst _hoisted_10 = {\n key: 0,\n class: \"loading-container\"\n};\nconst _hoisted_11 = {\n key: 1,\n class: \"error-container\"\n};\nconst _hoisted_12 = {\n key: 2,\n class: \"gallery-container\",\n ref: \"galleryContainer\"\n};\nconst _hoisted_13 = {\n key: 0,\n class: \"folders-section\"\n};\nconst _hoisted_14 = {\n class: \"folders-grid\"\n};\nconst _hoisted_15 = [\"onClick\"];\nconst _hoisted_16 = {\n class: \"folder-name\"\n};\nconst _hoisted_17 = {\n class: \"waterfall\",\n ref: \"waterfall\"\n};\nconst _hoisted_18 = [\"onClick\"];\nconst _hoisted_19 = [\"src\", \"alt\", \"onLoad\"];\nconst _hoisted_20 = [\"src\", \"onLoadedmetadata\"];\nconst _hoisted_21 = {\n key: 2,\n class: \"file-placeholder\"\n};\nconst _hoisted_22 = {\n class: \"overlay\"\n};\nconst _hoisted_23 = {\n class: \"overlay-actions\"\n};\nconst _hoisted_24 = [\"onClick\"];\nconst _hoisted_25 = [\"onClick\"];\nconst _hoisted_26 = {\n ref: \"loadTrigger\",\n class: \"load-trigger\"\n};\nconst _hoisted_27 = {\n key: 0,\n class: \"loading-more\"\n};\nconst _hoisted_28 = {\n key: 1,\n class: \"no-more\"\n};\nconst _hoisted_29 = {\n key: 2,\n class: \"credit-link\",\n href: \"https://github.com/axibayuit-a11y\",\n target: \"_blank\",\n rel: \"noopener\"\n};\nconst _hoisted_30 = [\"src\"];\nconst _hoisted_31 = [\"src\"];\nconst _hoisted_32 = {\n class: \"page-indicator\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_TransformMedia = _resolveComponent(\"TransformMedia\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"header\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"span\", _hoisted_4, _toDisplayString($options.siteName), 1)]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"span\", {\n class: \"breadcrumb-item\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goToRoot && $options.goToRoot(...args))\n }, _toDisplayString($options.rootDirName), 1), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.pathParts, (part, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: index\n }, [_cache[18] || (_cache[18] = _createElementVNode(\"span\", {\n class: \"breadcrumb-sep\"\n }, \"/\", -1)), _createElementVNode(\"span\", {\n class: \"breadcrumb-item\",\n onClick: $event => $options.goToPath(index)\n }, _toDisplayString(part), 9, _hoisted_7)], 64);\n }), 128))])]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"span\", _hoisted_9, _toDisplayString($data.totalCount) + \" 个文件\", 1)])]), $data.loading && $data.files.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [...(_cache[19] || (_cache[19] = [_createElementVNode(\"div\", {\n class: \"loading-spinner\"\n }, null, -1), _createElementVNode(\"p\", null, \"加载中...\", -1)]))])) : $data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createElementVNode(\"p\", null, _toDisplayString($data.error), 1), $data.canRetry ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n onClick: _cache[1] || (_cache[1] = (...args) => $options.loadFiles && $options.loadFiles(...args)),\n class: \"retry-btn\"\n }, \"重试\")) : _createCommentVNode(\"\", true)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [$options.folders.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.folders, folder => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: folder.name,\n class: \"folder-card\",\n onClick: $event => $options.enterFolder(folder.name)\n }, [_cache[20] || (_cache[20] = _createElementVNode(\"div\", {\n class: \"folder-icon\"\n }, [_createElementVNode(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n }, [_createElementVNode(\"path\", {\n d: \"M10 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z\"\n })])], -1)), _createElementVNode(\"span\", _hoisted_16, _toDisplayString($options.getFolderName(folder.name)), 1)], 8, _hoisted_15);\n }), 128))])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_17, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.columns, (column, colIndex) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: colIndex,\n class: \"waterfall-column\"\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(column, file => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: file.name,\n class: \"waterfall-item\",\n onClick: $event => $options.openPreview(file)\n }, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"image-wrapper\", {\n loaded: file.loaded\n }])\n }, [$options.isImage(file) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: $options.getFileUrl(file.name),\n alt: file.name,\n loading: \"lazy\",\n onLoad: $event => $options.onImageLoad($event, file),\n onError: _cache[2] || (_cache[2] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_19)) : $options.isVideo(file) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: $options.getFileUrl(file.name),\n muted: \"\",\n loop: \"\",\n preload: \"metadata\",\n onLoadedmetadata: $event => $options.onVideoLoad($event, file),\n onMouseenter: _cache[3] || (_cache[3] = $event => $event.target.play()),\n onMouseleave: _cache[4] || (_cache[4] = $event => $event.target.pause())\n }, null, 40, _hoisted_20)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [...(_cache[21] || (_cache[21] = [_createElementVNode(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n }, [_createElementVNode(\"path\", {\n d: \"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13z\"\n })], -1)]))])), _createElementVNode(\"div\", _hoisted_22, [_createElementVNode(\"div\", _hoisted_23, [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _withModifiers($event => $options.copyLink(file.name), [\"stop\"]),\n title: \"复制链接\"\n }, [...(_cache[22] || (_cache[22] = [_createElementVNode(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n }, [_createElementVNode(\"path\", {\n d: \"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\"\n })], -1)]))], 8, _hoisted_24), _createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _withModifiers($event => $options.downloadFile(file.name), [\"stop\"]),\n title: \"下载\"\n }, [...(_cache[23] || (_cache[23] = [_createElementVNode(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n }, [_createElementVNode(\"path\", {\n d: \"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z\"\n })], -1)]))], 8, _hoisted_25)])])], 2)], 8, _hoisted_18);\n }), 128))]);\n }), 128))], 512), _createElementVNode(\"div\", _hoisted_26, [$data.loading && $data.files.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, [...(_cache[24] || (_cache[24] = [_createElementVNode(\"div\", {\n class: \"loading-spinner-small\"\n }, null, -1), _createElementVNode(\"span\", null, \"加载中...\", -1)]))])) : !$data.hasMore && $options.mediaFiles.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_28, \" 已加载全部 \")) : _createCommentVNode(\"\", true), !$data.hasMore && $options.mediaFiles.length > 0 ? (_openBlock(), _createElementBlock(\"a\", _hoisted_29, \" 林酱贡献 \")) : _createCommentVNode(\"\", true)], 512)], 512)), $data.previewVisible ? (_openBlock(), _createElementBlock(\"div\", {\n key: 3,\n class: \"preview-modal\",\n onClick: _cache[17] || (_cache[17] = _withModifiers((...args) => $options.closePreview && $options.closePreview(...args), [\"self\"]))\n }, [_createElementVNode(\"button\", {\n class: \"preview-close\",\n onClick: _cache[5] || (_cache[5] = _withModifiers((...args) => $options.closePreview && $options.closePreview(...args), [\"stop\"]))\n }, [...(_cache[25] || (_cache[25] = [_createElementVNode(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n }, [_createElementVNode(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n })], -1)]))]), _createElementVNode(\"div\", {\n class: \"preview-content desktop-only\",\n onClick: _cache[6] || (_cache[6] = _withModifiers(() => {}, [\"stop\"]))\n }, [$options.currentPreviewFile && $options.isImage($options.currentPreviewFile) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: $options.getFileUrl($options.currentPreviewFile.name),\n class: \"preview-image\",\n style: _normalizeStyle($options.desktopImageStyle),\n draggable: \"false\"\n }, null, 12, _hoisted_30)) : $options.currentPreviewFile && $options.isVideo($options.currentPreviewFile) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: $options.getFileUrl($options.currentPreviewFile.name),\n controls: \"\",\n autoplay: \"\",\n class: \"preview-video\",\n style: _normalizeStyle($options.desktopImageStyle)\n }, null, 12, _hoisted_31)) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", {\n class: \"preview-content mobile-only\",\n onClick: _cache[13] || (_cache[13] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", {\n class: \"swipe-viewport\",\n ref: \"mobileViewport\",\n onTouchstart: _cache[10] || (_cache[10] = (...args) => $options.onSwipeStart && $options.onSwipeStart(...args)),\n onTouchmove: _cache[11] || (_cache[11] = (...args) => $options.onSwipeMove && $options.onSwipeMove(...args)),\n onTouchend: _cache[12] || (_cache[12] = (...args) => $options.onSwipeEnd && $options.onSwipeEnd(...args))\n }, [_createElementVNode(\"div\", {\n class: \"swipe-track\",\n style: _normalizeStyle($options.swipeTrackStyle),\n onTransitionend: _cache[9] || (_cache[9] = (...args) => $options.onSwipeTransitionEnd && $options.onSwipeTransitionEnd(...args))\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.swipeWindow, (f, i) => {\n return _openBlock(), _createElementBlock(\"div\", {\n class: \"swipe-slide\",\n key: $options.getSlideKey(f, i)\n }, [f ? (_openBlock(), _createBlock(_component_TransformMedia, {\n key: 0,\n file: f,\n src: $options.getFileUrl(f.name),\n \"is-image\": $options.isImage(f),\n \"is-video\": $options.isVideo(f),\n onLock: _cache[7] || (_cache[7] = $event => $data.gestureLocked = true),\n onUnlock: _cache[8] || (_cache[8] = $event => $data.gestureLocked = false),\n onEdgeSwipe: $options.onEdgeSwipe\n }, null, 8, [\"file\", \"src\", \"is-image\", \"is-video\", \"onEdgeSwipe\"])) : _createCommentVNode(\"\", true)]);\n }), 128))], 36)], 544)]), $data.previewIndex > 0 ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"preview-prev desktop-only\",\n onClick: _cache[14] || (_cache[14] = _withModifiers((...args) => $options.prevImage && $options.prevImage(...args), [\"stop\"]))\n }, [...(_cache[26] || (_cache[26] = [_createElementVNode(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n }, [_createElementVNode(\"path\", {\n d: \"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"\n })], -1)]))])) : _createCommentVNode(\"\", true), $data.previewIndex < $options.mediaFiles.length - 1 ? (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n class: \"preview-next desktop-only\",\n onClick: _cache[15] || (_cache[15] = _withModifiers((...args) => $options.nextImage && $options.nextImage(...args), [\"stop\"]))\n }, [...(_cache[27] || (_cache[27] = [_createElementVNode(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n }, [_createElementVNode(\"path\", {\n d: \"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"\n })], -1)]))])) : _createCommentVNode(\"\", true), _createElementVNode(\"button\", {\n class: \"rotate-btn desktop-only\",\n onClick: _cache[16] || (_cache[16] = _withModifiers((...args) => $options.rotateImage && $options.rotateImage(...args), [\"stop\"])),\n title: \"旋转90°\"\n }, [...(_cache[28] || (_cache[28] = [_createElementVNode(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n }, [_createElementVNode(\"path\", {\n d: \"M7.11 8.53L5.7 7.11C4.8 8.27 4.24 9.61 4.07 11h2.02c.14-.87.49-1.72 1.02-2.47zM6.09 13H4.07c.17 1.39.72 2.73 1.62 3.89l1.41-1.42c-.52-.75-.87-1.59-1.01-2.47zm1.01 5.32c1.16.9 2.51 1.44 3.9 1.61V17.9c-.87-.15-1.71-.49-2.46-1.03L7.1 18.32zM13 4.07V1L8.45 5.55 13 10V6.09c2.84.48 5 2.94 5 5.91s-2.16 5.43-5 5.91v2.02c3.95-.49 7-3.85 7-7.93s-3.05-7.44-7-7.93z\"\n })], -1)]))]), _createElementVNode(\"div\", _hoisted_32, _toDisplayString($data.previewIndex + 1) + \" / \" + _toDisplayString($options.mediaFiles.length), 1)])) : _createCommentVNode(\"\", true)]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport axios from 'axios';\nimport { mapGetters } from 'vuex';\nimport TransformMedia from '@/components/TransformMedia.vue';\nexport default {\n name: 'PublicBrowse',\n components: {\n TransformMedia\n },\n data() {\n return {\n files: [],\n allowedDirs: [],\n rootDir: '',\n currentPath: '',\n totalCount: 0,\n loading: false,\n error: null,\n canRetry: true,\n hasMore: true,\n previewVisible: false,\n previewIndex: 0,\n observer: null,\n pageSize: 24,\n columnCount: 4,\n columnHeights: [0, 0, 0, 0],\n // 桌面端旋转\n imageRotation: 0,\n // 手机端滑动\n swipeX: 0,\n swipeStartX: 0,\n swipeStartY: 0,\n swipeStartT: 0,\n swipeActive: false,\n swipeAnimating: false,\n swipeDir: 0,\n viewportW: 0,\n // 手势锁定(子组件缩放/旋转时锁住轮播)\n gestureLocked: false\n };\n },\n computed: {\n ...mapGetters(['userConfig']),\n siteName() {\n return this.userConfig?.siteTitle || '公开相册';\n },\n rootDirName() {\n return this.rootDir.split('/').filter(Boolean).pop() || '根目录';\n },\n pathParts() {\n if (!this.currentPath || !this.rootDir) return [];\n const relative = this.currentPath.replace(this.rootDir, '').replace(/^\\/+/, '');\n return relative.split('/').filter(Boolean);\n },\n folders() {\n return this.files.filter(f => f.isFolder);\n },\n mediaFiles() {\n return this.files.filter(f => !f.isFolder);\n },\n columns() {\n const cols = Array.from({\n length: this.columnCount\n }, () => []);\n for (const file of this.mediaFiles) {\n const idx = file.columnIndex ?? 0;\n if (idx < this.columnCount) {\n cols[idx].push(file);\n } else {\n cols[0].push(file);\n }\n }\n return cols;\n },\n currentPreviewFile() {\n return this.mediaFiles[this.previewIndex];\n },\n prevPreviewFile() {\n return this.previewIndex > 0 ? this.mediaFiles[this.previewIndex - 1] : null;\n },\n nextPreviewFile() {\n return this.previewIndex < this.mediaFiles.length - 1 ? this.mediaFiles[this.previewIndex + 1] : null;\n },\n desktopImageStyle() {\n return {\n transform: `rotate(${this.imageRotation}deg)`,\n transition: 'transform 0.3s ease'\n };\n },\n swipeWindow() {\n return [this.prevPreviewFile, this.currentPreviewFile, this.nextPreviewFile];\n },\n swipeTrackStyle() {\n // 默认停在中间那页(-viewportW)\n const base = -this.viewportW;\n const x = base + this.swipeX;\n return {\n transform: `translate3d(${x}px, 0, 0)`,\n transition: this.swipeAnimating ? 'transform 0.28s ease' : 'none'\n };\n }\n },\n watch: {\n '$route.params.dir': {\n handler() {\n this.initFromRoute();\n }\n }\n },\n mounted() {\n this.initFromRoute();\n this.setupIntersectionObserver();\n this.updateColumnCount();\n window.addEventListener('resize', this.updateColumnCount);\n },\n beforeUnmount() {\n if (this.observer) {\n this.observer.disconnect();\n }\n window.removeEventListener('resize', this.updateColumnCount);\n },\n methods: {\n // 生成 slide key,切换时让子组件重新挂载以重置 transform\n getSlideKey(f, i) {\n if (!f) return `empty-${i}`;\n // 中间那张用 previewIndex 作为 key 的一部分,确保切换时重新挂载\n if (i === 1) return `${f.name}-${this.previewIndex}`;\n return f.name;\n },\n updateColumnCount() {\n const width = window.innerWidth;\n let newCount;\n if (width < 600) {\n newCount = 2;\n } else if (width < 900) {\n newCount = 3;\n } else {\n newCount = 4;\n }\n if (newCount !== this.columnCount) {\n this.columnCount = newCount;\n this.columnHeights = new Array(this.columnCount).fill(0);\n this.mediaFiles.forEach(f => {\n f.columnIndex = undefined;\n this.assignToColumn(f);\n });\n }\n },\n getShortestColumn() {\n let minIndex = 0;\n let minHeight = this.columnHeights[0];\n for (let i = 1; i < this.columnCount; i++) {\n if (this.columnHeights[i] < minHeight) {\n minHeight = this.columnHeights[i];\n minIndex = i;\n }\n }\n return minIndex;\n },\n assignToColumn(file, height = 200) {\n const colIndex = this.getShortestColumn();\n file.columnIndex = colIndex;\n this.columnHeights[colIndex] += height;\n },\n onImageLoad(event, file) {\n const img = event.target;\n const ratio = img.naturalHeight / img.naturalWidth;\n const height = 280 * ratio;\n if (file.columnIndex === undefined) {\n this.assignToColumn(file, height);\n }\n file.loaded = true;\n },\n onVideoLoad(event, file) {\n const video = event.target;\n const ratio = video.videoHeight / video.videoWidth;\n const height = 280 * ratio;\n if (file.columnIndex === undefined) {\n this.assignToColumn(file, height);\n }\n file.loaded = true;\n },\n setupIntersectionObserver() {\n this.observer = new IntersectionObserver(entries => {\n const entry = entries[0];\n if (entry.isIntersecting && this.hasMore && !this.loading) {\n this.loadMore();\n }\n }, {\n rootMargin: '200px'\n });\n },\n observeLoadTrigger() {\n this.$nextTick(() => {\n if (this.$refs.loadTrigger && this.observer) {\n this.observer.observe(this.$refs.loadTrigger);\n }\n });\n },\n async initFromRoute() {\n const dirParam = this.$route.params.dir || '';\n const dirPath = Array.isArray(dirParam) ? dirParam.join('/') : dirParam;\n if (!dirPath) {\n this.error = '请指定要浏览的目录,例如: /browse/landscape';\n this.canRetry = false;\n return;\n }\n const parts = dirPath.split('/').filter(Boolean);\n this.rootDir = parts[0];\n this.currentPath = dirPath;\n this.files = [];\n this.hasMore = true;\n this.columnHeights = new Array(this.columnCount).fill(0);\n await this.loadFiles();\n this.observeLoadTrigger();\n },\n async loadFiles() {\n this.loading = true;\n this.error = null;\n this.canRetry = true;\n try {\n const res = await axios.get(`/api/public/list?dir=${encodeURIComponent(this.currentPath)}&count=${this.pageSize}`);\n if (res.data.allowedDirs) {\n this.allowedDirs = res.data.allowedDirs;\n }\n const dirs = (res.data.directories || []).map(d => ({\n name: d,\n isFolder: true\n }));\n const files = (res.data.files || []).map(f => ({\n name: f.name,\n isFolder: false,\n metadata: f.metadata,\n columnIndex: undefined\n }));\n files.forEach(f => this.assignToColumn(f));\n this.files = [...dirs, ...files];\n this.totalCount = res.data.totalCount || this.files.length;\n this.hasMore = this.mediaFiles.length < this.totalCount;\n } catch (err) {\n if (err.response?.status === 403) {\n const msg = err.response?.data?.error || '';\n if (msg.includes('disabled')) {\n this.error = '公开浏览功能未启用';\n } else if (msg.includes('not allowed') || msg.includes('No public')) {\n this.error = '该目录不允许公开访问';\n } else {\n this.error = '访问被拒绝';\n }\n this.canRetry = false;\n } else {\n this.error = '加载失败,请重试';\n }\n } finally {\n this.loading = false;\n }\n },\n async loadMore() {\n if (this.loading || !this.hasMore) return;\n this.loading = true;\n try {\n const start = this.mediaFiles.length;\n const res = await axios.get(`/api/public/list?dir=${encodeURIComponent(this.currentPath)}&start=${start}&count=${this.pageSize}`);\n const moreFiles = (res.data.files || []).map(f => ({\n name: f.name,\n isFolder: false,\n metadata: f.metadata,\n columnIndex: undefined\n }));\n moreFiles.forEach(f => this.assignToColumn(f));\n this.files.push(...moreFiles);\n this.hasMore = this.mediaFiles.length < this.totalCount;\n } catch (err) {\n console.error('加载更多失败', err);\n } finally {\n this.loading = false;\n }\n },\n enterFolder(folderPath) {\n const newPath = folderPath.replace(/\\/+$/, '');\n this.$router.push(`/browse/${newPath}`);\n },\n goToRoot() {\n this.$router.push(`/browse/${this.rootDir}`);\n },\n goToPath(index) {\n const parts = this.pathParts.slice(0, index + 1);\n const newPath = this.rootDir + (parts.length ? '/' + parts.join('/') : '');\n this.$router.push(`/browse/${newPath}`);\n },\n getFolderName(path) {\n return path.split('/').filter(Boolean).pop() || path;\n },\n getFileUrl(name) {\n return `${window.location.origin}/file/${name}`;\n },\n isImage(file) {\n const ext = file.name.split('.').pop().toLowerCase();\n return ['jpg', 'jpeg', 'png', 'gif', 'webp', 'bmp', 'svg'].includes(ext);\n },\n isVideo(file) {\n const ext = file.name.split('.').pop().toLowerCase();\n return ['mp4', 'webm', 'ogg', 'mov'].includes(ext);\n },\n handleImageError(e) {\n e.target.style.display = 'none';\n },\n copyLink(name) {\n const url = this.getFileUrl(name);\n navigator.clipboard?.writeText(url).then(() => {\n this.showToast('已复制');\n }).catch(() => {\n const input = document.createElement('input');\n input.value = url;\n document.body.appendChild(input);\n input.select();\n document.execCommand('copy');\n document.body.removeChild(input);\n this.showToast('已复制');\n });\n },\n showToast(msg) {\n const existing = document.querySelector('.copy-toast');\n if (existing) existing.remove();\n const toast = document.createElement('div');\n toast.className = 'copy-toast';\n toast.textContent = msg;\n document.body.appendChild(toast);\n setTimeout(() => toast.classList.add('show'), 10);\n setTimeout(() => {\n toast.classList.remove('show');\n setTimeout(() => toast.remove(), 300);\n }, 1500);\n },\n downloadFile(name) {\n const link = document.createElement('a');\n link.href = this.getFileUrl(name);\n link.download = name.split('/').pop();\n link.click();\n },\n openPreview(file) {\n if (file.isFolder) return;\n const mediaIndex = this.mediaFiles.findIndex(f => f.name === file.name);\n if (mediaIndex >= 0) {\n this.previewIndex = mediaIndex;\n this.previewVisible = true;\n this.imageRotation = 0;\n this.gestureLocked = false;\n document.body.style.overflow = 'hidden';\n this.$nextTick(() => {\n this.viewportW = this.$refs.mobileViewport?.getBoundingClientRect().width || window.innerWidth;\n });\n }\n },\n closePreview() {\n this.previewVisible = false;\n this.imageRotation = 0;\n this.gestureLocked = false;\n document.body.style.overflow = '';\n },\n prevImage() {\n if (this.previewIndex > 0) {\n this.previewIndex--;\n this.imageRotation = 0;\n }\n },\n nextImage() {\n if (this.previewIndex < this.mediaFiles.length - 1) {\n this.previewIndex++;\n this.imageRotation = 0;\n }\n },\n rotateImage() {\n this.imageRotation += 90;\n // 动画结束后归一化(无动画)\n if (this.imageRotation >= 360) {\n setTimeout(() => {\n // 临时禁用 transition\n const el = this.$el.querySelector('.preview-image, .preview-video');\n if (el) {\n el.style.transition = 'none';\n this.imageRotation = 0;\n // 强制重绘后恢复 transition\n el.offsetHeight;\n el.style.transition = '';\n } else {\n this.imageRotation = 0;\n }\n }, 300);\n }\n },\n // 手机端滑动:开始\n onSwipeStart(e) {\n if (this.gestureLocked) return;\n if (this.swipeAnimating) return;\n const t = e.touches[0];\n this.swipeStartX = t.clientX;\n this.swipeStartY = t.clientY;\n this.swipeStartT = performance.now();\n this.swipeX = 0;\n this.swipeActive = false;\n this.viewportW = this.$refs.mobileViewport?.getBoundingClientRect().width || window.innerWidth;\n },\n // 手机端滑动:移动\n onSwipeMove(e) {\n if (this.gestureLocked) return;\n if (this.swipeAnimating) return;\n const t = e.touches[0];\n const dx = t.clientX - this.swipeStartX;\n const dy = t.clientY - this.swipeStartY;\n if (!this.swipeActive) {\n if (Math.abs(dx) < 8) return;\n if (Math.abs(dx) <= Math.abs(dy)) return;\n this.swipeActive = true;\n }\n e.preventDefault();\n let x = dx;\n // 边界阻尼:用 rubberBand 代替线性 *0.3\n if (this.previewIndex === 0 && x > 0) {\n x = this.rubberBand(x, this.viewportW, 0.55);\n } else if (this.previewIndex === this.mediaFiles.length - 1 && x < 0) {\n x = -this.rubberBand(-x, this.viewportW, 0.55);\n }\n this.swipeX = x;\n },\n // 手机端滑动:结束\n onSwipeEnd() {\n if (this.gestureLocked) return;\n if (this.swipeAnimating) return;\n if (!this.swipeActive) {\n this.swipeX = 0;\n return;\n }\n const dt = Math.max(1, performance.now() - this.swipeStartT);\n const vx = this.swipeX / dt;\n const threshold = this.viewportW * 0.2;\n let dir = 0;\n if (this.swipeX <= -threshold || vx <= -0.8) dir = +1;\n if (this.swipeX >= threshold || vx >= 0.8) dir = -1;\n if (dir === -1 && this.previewIndex === 0 || dir === +1 && this.previewIndex === this.mediaFiles.length - 1) {\n dir = 0;\n }\n this.swipeDir = dir;\n this.swipeAnimating = true;\n if (dir === +1) this.swipeX = -this.viewportW;else if (dir === -1) this.swipeX = +this.viewportW;else this.swipeX = 0;\n },\n onSwipeTransitionEnd() {\n if (!this.swipeAnimating) return;\n if (this.swipeDir === +1) this.previewIndex++;\n if (this.swipeDir === -1) this.previewIndex--;\n this.swipeAnimating = false;\n this.swipeDir = 0;\n this.swipeX = 0;\n },\n // iOS 风格橡皮筋阻尼函数\n rubberBand(distance, dimension, constant = 0.55) {\n return distance * dimension * constant / (dimension + constant * distance);\n },\n // 放大状态下边界滑动翻页\n onEdgeSwipe(dir) {\n // dir: +1 下一页, -1 上一页\n if (dir === +1 && this.previewIndex < this.mediaFiles.length - 1) {\n this.previewIndex++;\n } else if (dir === -1 && this.previewIndex > 0) {\n this.previewIndex--;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./PublicBrowse.vue?vue&type=template&id=9501ca66&scoped=true\"\nimport script from \"./PublicBrowse.vue?vue&type=script&lang=js\"\nexport * from \"./PublicBrowse.vue?vue&type=script&lang=js\"\n\nimport \"./PublicBrowse.vue?vue&type=style&index=0&id=9501ca66&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9501ca66\"]])\n\nexport default __exports__"],"names":["_hoisted_1","_hoisted_2","render","_ctx","_cache","$props","$setup","$data","$options","class","ref","onPointerdown","args","onPointerDown","onPointermove","onPointerMove","onPointerup","onPointerUp","onPointercancel","onDblclick","onDblClick","isImage","key","src","draggable","style","mediaStyle","onLoad","isVideo","controls","autoplay","playsinline","name","props","file","type","Object","required","String","Boolean","default","data","pointers","Map","scale","rotation","rotatePreview","tx","ty","naturalWidth","naturalHeight","startScale","startRotation","startTx","startTy","startCenter","startDist","startAngle","dragging","dragStart","viewportRect","minScale","maxScale","gestureMode","edgeOverflow","edgeDir","computed","isActiveTransform","this","size","displayRotation","rotateShrink","p","Math","min","abs","k","sin","PI","finalScale","inGesture","transform","transition","transformOrigin","watch","v","$emit","methods","e","img","target","reset","clear","clamp","max","rubberBand","distance","dimension","constant","getViewportRect","$refs","viewport","getBoundingClientRect","getPanBounds","rect","maxX","maxY","vw","vh","width","height","$el","querySelector","iw","clientWidth","ih","clientHeight","sw","sh","applyBoundWithRubber","value","calcTwoPointer","pts","Array","from","values","p0","p1","dx","x","dy","y","dist","hypot","angle","atan2","center","normalizeAngle","deg","currentTarget","setPointerCapture","pointerId","set","clientX","clientY","has","preventDefault","scaleFactor","scaleChange","deltaAngle","angleChange","rotateStartDeg","pinchStartScale","cx0","left","cy0","top","cx1","cy1","rawX","rawY","overflow","dir","delete","finishRotate","d","commitDeg","newRot","updateFillScale","rot","isRotated","__exports__","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","href","rel","_hoisted_30","_hoisted_31","_hoisted_32","_component_TransformMedia","siteName","onClick","goToRoot","rootDirName","pathParts","part","index","$event","goToPath","totalCount","loading","files","length","error","canRetry","loadFiles","folders","folder","enterFolder","viewBox","fill","getFolderName","columns","column","colIndex","openPreview","loaded","getFileUrl","alt","onImageLoad","onError","handleImageError","muted","loop","preload","onLoadedmetadata","onVideoLoad","onMouseenter","play","onMouseleave","pause","copyLink","title","downloadFile","hasMore","mediaFiles","previewVisible","closePreview","currentPreviewFile","desktopImageStyle","onTouchstart","onSwipeStart","onTouchmove","onSwipeMove","onTouchend","onSwipeEnd","swipeTrackStyle","onTransitionend","onSwipeTransitionEnd","swipeWindow","f","i","getSlideKey","onLock","gestureLocked","onUnlock","onEdgeSwipe","previewIndex","prevImage","nextImage","rotateImage","components","TransformMedia","allowedDirs","rootDir","currentPath","observer","pageSize","columnCount","columnHeights","imageRotation","swipeX","swipeStartX","swipeStartY","swipeStartT","swipeActive","swipeAnimating","swipeDir","viewportW","userConfig","siteTitle","split","filter","pop","relative","replace","isFolder","cols","idx","columnIndex","push","prevPreviewFile","nextPreviewFile","base","handler","initFromRoute","mounted","setupIntersectionObserver","updateColumnCount","window","addEventListener","beforeUnmount","disconnect","removeEventListener","innerWidth","newCount","forEach","undefined","assignToColumn","getShortestColumn","minIndex","minHeight","event","ratio","video","videoHeight","videoWidth","IntersectionObserver","entries","entry","isIntersecting","loadMore","rootMargin","observeLoadTrigger","$nextTick","loadTrigger","observe","dirParam","$route","params","dirPath","isArray","join","parts","res","axios","get","encodeURIComponent","dirs","directories","map","metadata","err","response","status","msg","includes","start","moreFiles","console","folderPath","newPath","$router","slice","path","location","origin","ext","toLowerCase","display","url","navigator","clipboard","writeText","then","showToast","catch","input","document","createElement","body","appendChild","select","execCommand","removeChild","existing","remove","toast","className","textContent","setTimeout","classList","add","link","download","click","mediaIndex","findIndex","mobileViewport","el","offsetHeight","t","touches","performance","now","dt","vx","threshold"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/js/691.fa084424.js.map.gz b/js/691.fa084424.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..e8ae1802851f8a8b531c101983f29adc123ef1c5 GIT binary patch literal 21412 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 DMTkOs literal 0 HcmV?d00001 diff --git a/js/app.50b561a2.js b/js/app.50b561a2.js new file mode 100644 index 0000000..9144752 --- /dev/null +++ b/js/app.50b561a2.js @@ -0,0 +1,2 @@ +(function(){"use strict";var e={457:function(e,t,o){o(4114);var n=o(4373),r=o(4570),a=o.n(r),s=o(6915),i=o(1219);const l=n.A.create({baseURL:"/"});l.interceptors.request.use(e=>{if(e.withAuthCode){const t=a().get("authCode");t&&(e.headers["authCode"]=t)}return e},e=>Promise.reject(e)),l.interceptors.response.use(e=>e,e=>(e.config?.withAuthCode&&401===e.response?.status&&(i.nk.error("认证失败,请重新登录!"),s.A.push("/login")),Promise.reject(e))),t.A=l},3354:function(e,t,o){o(8111),o(7588);var n=o(5130),r=o(3888),a=o(4068),s=(o(9436),o(372),o(8950)),i=o(2353),l=o(292),u=o(6768);function c(e,t,o,n,r,a){const s=(0,u.g2)("router-view");return(0,u.uX)(),(0,u.Wv)(s)}var d=o(8401),p=o(3785),m={computed:{...(0,d.L8)(["userConfig","useDarkMode"])},mounted(){this.$nextTick(()=>{this.initOverlayScrollbars()})},watch:{useDarkMode(){this.setSiteIcon()}},methods:{initOverlayScrollbars(){try{if(p.ae.valid(document.body))return;(0,p.ae)(document.body,{scrollbars:{theme:"os-theme-dark",visibility:"auto",autoHide:"scroll",autoHideDelay:600,dragScroll:!0,clickScroll:!0},overflow:{x:"hidden",y:"scroll"}}),console.log("OverlayScrollbars initialized successfully")}catch(e){console.error("Failed to initialize OverlayScrollbars:",e)}},setSiteIcon(){const e=document.querySelectorAll('link[rel="icon"], link[rel="apple-touch-icon"], link[rel="mask-icon"]');e.forEach(e=>e.remove());const t=document.createElement("link"),o=document.createElement("link"),n=document.createElement("link");t.rel="icon",o.rel="apple-touch-icon",n.rel="mask-icon",this.useDarkMode?(t.href=this.userConfig?.siteIcon||"/logo-dark.png",o.href=this.userConfig?.siteIcon||"/logo-dark.png",n.href=this.userConfig?.siteIcon||"/logo-dark.png"):(t.href=this.userConfig?.siteIcon||"/logo.png",o.href=this.userConfig?.siteIcon||"/logo.png",n.href=this.userConfig?.siteIcon||"/logo.png"),document.head.appendChild(t),document.head.appendChild(o),document.head.appendChild(n)}}},f=o(1241);const h=(0,f.A)(m,[["render",c]]);var g=h,b=o(6915),k=o(5507),y=o(7477);o(1862),o(635);s.Yv.add(i.X7I);const C=(0,n.Ef)(g),v=(0,r.Zf)();C.component("font-awesome-icon",l.gc);for(const[M,E]of Object.entries(y))C.component(M,E);const A=()=>{const e=document.documentElement;let t;if(k.A.state.cusDarkMode&&null!==k.A.state.useDarkMode)t=k.A.state.useDarkMode;else{if(t=window.matchMedia("(prefers-color-scheme: dark)").matches,!t){const e=new Date,o=e.getHours();t=o>=22||o<6}k.A.commit("setUseDarkMode",t)}t?e.classList.add("dark"):e.classList.remove("dark")},U=e=>{const t=document.documentElement;e?t.classList.add("dark"):t.classList.remove("dark")},w=e=>{document.title=e?.siteTitle||"Sanyue ImgHub"},S=(e,t)=>{const o=document.querySelectorAll('link[rel="icon"], link[rel="apple-touch-icon"], link[rel="mask-icon"]');o.forEach(e=>e.remove());const n=document.createElement("link"),r=document.createElement("link"),a=document.createElement("link");n.rel="icon",r.rel="apple-touch-icon",a.rel="mask-icon",e?(n.href=t?.siteIcon||"/logo-dark.png",r.href=t?.siteIcon||"/logo-dark.png",a.href=t?.siteIcon||"/logo-dark.png"):(n.href=t?.siteIcon||"/logo.png",r.href=t?.siteIcon||"/logo.png",a.href=t?.siteIcon||"/logo.png"),document.head.appendChild(n),document.head.appendChild(r),document.head.appendChild(a)};k.A.dispatch("fetchUserConfig").then(()=>{A(),w(k.A.getters.userConfig),S(k.A.state.useDarkMode,k.A.getters.userConfig),k.A.subscribe((e,t)=>{"setUseDarkMode"===e.type&&k.A.state.cusDarkMode&&(U(t.useDarkMode),S(t.useDarkMode,k.A.getters.userConfig)),"setCusDarkMode"!==e.type||e.payload||(A(),S(k.A.state.useDarkMode,k.A.getters.userConfig))}),C.use(k.A).use(b.A).use(a.A).mount("#app")}).catch(e=>{console.error("Failed to load user configuration:",e),C.use(k.A).use(b.A).use(a.A).use(v).mount("#app")})},5507:function(e,t,o){o(8111),o(1701);var n=o(8401),r=o(457),a=o(5131);t.A=(0,n.y$)({state:{userConfig:null,bingWallPapers:[],credentials:null,uploadMethod:"default",uploadCopyUrlForm:"",compressConfig:{customerCompress:!0,compressQuality:4,compressBar:5,serverCompress:!0},storeUploadChannel:"",storeAutoRetry:!0,storeUploadNameType:"",uploadFolder:"",customUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},adminUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},autoReUpload:!0,useDarkMode:null,cusDarkMode:!1},getters:{userConfig:e=>e.userConfig,bingWallPapers:e=>e.bingWallPapers,credentials:e=>e.credentials,storeUploadMethod:e=>e.uploadMethod,uploadCopyUrlForm:e=>e.uploadCopyUrlForm,compressConfig:e=>e.compressConfig,storeUploadChannel:e=>e.storeUploadChannel,storeUploadNameType:e=>e.storeUploadNameType,customUrlSettings:e=>e.customUrlSettings,storeAutoRetry:e=>e.storeAutoRetry,adminUrlSettings:e=>e.adminUrlSettings,storeUploadFolder:e=>e.uploadFolder||localStorage.getItem("uploadFolder")||"",useDarkMode:e=>e.useDarkMode,cusDarkMode:e=>e.cusDarkMode,storeAutoReUpload:e=>e.autoReUpload},mutations:{setUserConfig(e,t){e.userConfig=t},setBingWallPapers(e,t){e.bingWallPapers=t},setCredentials(e,t){e.credentials=t},setUploadMethod(e,t){e.uploadMethod=t},setUploadCopyUrlForm(e,t){e.uploadCopyUrlForm=t},setCompressConfig(e,{key:t,value:o}){e.compressConfig[t]=o},setStoreUploadChannel(e,t){e.storeUploadChannel=t},setStoreUploadNameType(e,t){e.storeUploadNameType=t},setCustomUrlSettings(e,{key:t,value:o}){e.customUrlSettings[t]=o},setStoreAutoRetry(e,t){e.storeAutoRetry=t},setAdminUrlSettings(e,{key:t,value:o}){e.adminUrlSettings[t]=o},setUseDarkMode(e,t){e.useDarkMode=t},setCusDarkMode(e,t){e.cusDarkMode=t},setStoreUploadFolder(e,t){e.uploadFolder=t,localStorage.setItem("uploadFolder",t)},setStoreAutoReUpload(e,t){e.autoReUpload=t}},actions:{async fetchUserConfig({commit:e}){try{const t=await r.A.get("/api/userConfig");e("setUserConfig",t.data)}catch(t){console.log(t)}},async fetchBingWallPapers({commit:e}){try{const t=await r.A.get("/api/bing/wallpaper"),o=t.data.data,n=o.map(e=>({url:"https://www.bing.com"+e.url}));await Promise.all(n.map(e=>new Promise((t,o)=>{const n=new Image;n.onload=t,n.onerror=o,n.src=e.url}))),e("setBingWallPapers",n)}catch(t){console.log(t)}}},modules:{},plugins:[(0,a.A)()]})},6915:function(e,t,o){o(4979);var n=o(8512),r=o(1219),a=o(4570),s=o.n(a),i=o(5507),l=o(457);const u=(e,t,o)=>{const n=i.A.getters.credentials;if(null===n&&"adminLogin"!==e.name){const e=btoa("unset:unset");l.A.get("/api/manage/check",{headers:{Authorization:"Basic "+e},withCredentials:!0}).then(t=>{if(200!==t.status)throw new Error("认证失败!");i.A.commit("setCredentials",e),o()}).catch(e=>{r.nk.error("请先认证!"),o({name:"adminLogin"})})}else o()},c=(e,t,o)=>{let n=s().get("authCode");null===n&&"login"!==e.name?l.A.post("/api/login",{authCode:"unset"}).then(e=>{if(200!==e.status)throw new Error("认证失败!");s().set("authCode","unset","14d"),n="unset",o()}).catch(e=>{r.nk.error("请先认证!"),o({name:"login"})}):o()},d=[{path:"/",name:"home",component:()=>Promise.all([o.e(171),o.e(747)]).then(o.bind(o,3695)),beforeEnter:c},{path:"/login",name:"login",component:()=>Promise.all([o.e(171),o.e(672)]).then(o.bind(o,2560))},{path:"/dashboard",name:"dashboard",component:()=>Promise.all([o.e(239),o.e(482)]).then(o.bind(o,1482)),beforeEnter:u},{path:"/customerConfig",name:"customerConfig",component:()=>Promise.all([o.e(239),o.e(419)]).then(o.bind(o,8419)),beforeEnter:u},{path:"/systemConfig",name:"systemConfig",component:()=>Promise.all([o.e(239),o.e(32)]).then(o.bind(o,8032)),beforeEnter:u},{path:"/adminLogin",name:"adminLogin",component:()=>Promise.all([o.e(171),o.e(698)]).then(o.bind(o,3950))},{path:"/blockimg",name:"blockimg",component:()=>o.e(917).then(o.bind(o,4917))},{path:"/whiteliston",name:"whiteliston",component:()=>o.e(845).then(o.bind(o,7226))},{path:"/browse/:dir*",name:"publicBrowse",component:()=>o.e(691).then(o.bind(o,691))},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>o.e(226).then(o.bind(o,8226))}],p=(0,n.aE)({history:(0,n.LA)("/"),routes:d});t.A=p}},t={};function o(n){var r=t[n];if(void 0!==r)return r.exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,o),a.exports}o.m=e,function(){var e=[];o.O=function(t,n,r,a){if(!n){var s=1/0;for(c=0;c=a)&&Object.keys(o.O).every(function(e){return o.O[e](n[l])})?n.splice(l--,1):(i=!1,a0&&e[c-1][2]>a;c--)e[c]=e[c-1];e[c]=[n,r,a]}}(),function(){o.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return o.d(t,{a:t}),t}}(),function(){o.d=function(e,t){for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}}(),function(){o.f={},o.e=function(e){return Promise.all(Object.keys(o.f).reduce(function(t,n){return o.f[n](e,t),t},[]))}}(),function(){o.u=function(e){return"js/"+e+"."+{32:"a8086e01",171:"833208d0",226:"577ea134",239:"32572dba",419:"99e00aec",482:"e302adaf",672:"11bec4e1",691:"fa084424",698:"77f859a8",747:"51eee506",845:"6b4cb4a5",917:"5bf3db27"}[e]+".js"}}(),function(){o.miniCssF=function(e){return"css/"+e+"."+{32:"3ae41ed4",226:"6548e7b4",239:"6563616d",419:"1d235d6e",482:"f42e1415",672:"aed3581b",691:"854b8d50",698:"aed3581b",747:"e115ba5f",845:"6b45e8e3",917:"8529ad1e"}[e]+".css"}}(),function(){o.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="sanyue_imghub:";o.l=function(n,r,a,s){if(e[n])e[n].push(r);else{var i,l;if(void 0!==a)for(var u=document.getElementsByTagName("script"),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 {\r\n // 如果配置中标记了withAuthCode,则添加authCode到header\r\n if (config.withAuthCode) {\r\n const authCode = cookies.get('authCode');\r\n if (authCode) {\r\n config.headers['authCode'] = authCode;\r\n }\r\n }\r\n return config;\r\n },\r\n (error) => {\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\n// 响应拦截器\r\ninstance.interceptors.response.use(\r\n (response) => {\r\n return response;\r\n },\r\n (error) => {\r\n // 如果请求配置了withAuthCode且返回401,则跳转到登录页\r\n if (error.config?.withAuthCode && error.response?.status === 401) {\r\n ElMessage.error('认证失败,请重新登录!');\r\n router.push('/login');\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nexport default instance;\r\n","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_router_view = _resolveComponent(\"router-view\");\n return _openBlock(), _createBlock(_component_router_view);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport { mapGetters } from 'vuex';\nimport { OverlayScrollbars } from 'overlayscrollbars';\nexport default {\n computed: {\n ...mapGetters(['userConfig', 'useDarkMode'])\n },\n mounted() {\n // 初始化 OverlayScrollbars 悬浮滚动条\n this.$nextTick(() => {\n this.initOverlayScrollbars();\n });\n },\n watch: {\n useDarkMode() {\n this.setSiteIcon();\n }\n },\n methods: {\n initOverlayScrollbars() {\n try {\n // 检查是否已经初始化\n if (OverlayScrollbars.valid(document.body)) {\n return;\n }\n\n // 应用到 body 实现全局悬浮滚动条\n OverlayScrollbars(document.body, {\n scrollbars: {\n theme: 'os-theme-dark',\n visibility: 'auto',\n autoHide: 'scroll',\n autoHideDelay: 600,\n dragScroll: true,\n clickScroll: true\n },\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n console.log('OverlayScrollbars initialized successfully');\n } catch (error) {\n console.error('Failed to initialize OverlayScrollbars:', error);\n }\n },\n setSiteIcon() {\n // 同时更改 icon apple-touch-icon 和 mask-icon\n const existingIcons = document.querySelectorAll('link[rel=\"icon\"], link[rel=\"apple-touch-icon\"], link[rel=\"mask-icon\"]');\n existingIcons.forEach(icon => icon.remove());\n const iconLink = document.createElement('link');\n const appleIconLink = document.createElement('link');\n const maskIconLink = document.createElement('link');\n iconLink.rel = 'icon';\n appleIconLink.rel = 'apple-touch-icon';\n maskIconLink.rel = 'mask-icon';\n if (this.useDarkMode) {\n iconLink.href = this.userConfig?.siteIcon || '/logo-dark.png';\n appleIconLink.href = this.userConfig?.siteIcon || '/logo-dark.png';\n maskIconLink.href = this.userConfig?.siteIcon || '/logo-dark.png';\n } else {\n iconLink.href = this.userConfig?.siteIcon || '/logo.png';\n appleIconLink.href = this.userConfig?.siteIcon || '/logo.png';\n maskIconLink.href = this.userConfig?.siteIcon || '/logo.png';\n }\n document.head.appendChild(iconLink);\n document.head.appendChild(appleIconLink);\n document.head.appendChild(maskIconLink);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./App.vue?vue&type=template&id=7d6c298a\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=7d6c298a&lang=css\"\nimport \"./App.vue?vue&type=style&index=1&id=7d6c298a&lang=css\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport { createHead } from '@vueuse/head'; // 导入 createHead\r\nimport ElementPlus from 'element-plus'\r\nimport 'element-plus/es/components/message/style/css'\r\nimport 'element-plus/es/components/message-box/style/css'\r\n\r\nimport { library } from '@fortawesome/fontawesome-svg-core';\r\nimport { fas } from '@fortawesome/free-solid-svg-icons'; // 引入所有 solid 图标\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\r\n\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\n\r\nimport * as ElementPlusIconsVue from '@element-plus/icons-vue'\r\nimport 'element-plus/theme-chalk/dark/css-vars.css'\r\nimport './styles/global.css'\r\n\r\n// OverlayScrollbars 悬浮滚动条\r\nimport 'overlayscrollbars/overlayscrollbars.css'\r\n\r\n\r\nlibrary.add(fas);\r\n\r\nconst app = createApp(App);\r\nconst head = createHead(); // 创建 head 对象\r\n\r\napp.component('font-awesome-icon', FontAwesomeIcon);\r\nfor (const [key, component] of Object.entries(ElementPlusIconsVue)) {\r\n app.component(key, component)\r\n}\r\n\r\n// 根据 useDarkMode 的值添加或移除 dark 类\r\nconst initDarkModeClass = () => {\r\n const htmlElement = document.documentElement;\r\n let isDarkMode;\r\n\r\n // 判断用户是否是自定义模式\r\n if (store.state.cusDarkMode && store.state.useDarkMode !== null) {\r\n // 用户手动设置了暗色模式\r\n isDarkMode = store.state.useDarkMode;\r\n } else {\r\n // 跟随系统模式或时间\r\n isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n if (!isDarkMode) {\r\n const now = new Date();\r\n const hour = now.getHours();\r\n isDarkMode = hour >= 22 || hour < 6;\r\n }\r\n // 更新 useDarkMode 的值\r\n store.commit('setUseDarkMode', isDarkMode);\r\n }\r\n\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\nconst applyDarkModeClass = (isDarkMode) => {\r\n const htmlElement = document.documentElement;\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\n// 预设网站标题的函数\r\nconst presetSiteTitle = (userConfig) => {\r\n document.title = userConfig?.siteTitle || 'Sanyue ImgHub';\r\n};\r\n\r\n// 预设网站图标的函数\r\nconst presetSiteIcon = (isDarkMode, userConfig) => {\r\n // 同时更改 icon apple-touch-icon 和 mask-icon\r\n const existingIcons = document.querySelectorAll('link[rel=\"icon\"], link[rel=\"apple-touch-icon\"], link[rel=\"mask-icon\"]');\r\n existingIcons.forEach(icon => icon.remove());\r\n\r\n const iconLink = document.createElement('link');\r\n const appleIconLink = document.createElement('link');\r\n const maskIconLink = document.createElement('link');\r\n iconLink.rel = 'icon';\r\n appleIconLink.rel = 'apple-touch-icon';\r\n maskIconLink.rel = 'mask-icon';\r\n\r\n if (isDarkMode) {\r\n iconLink.href = userConfig?.siteIcon || '/logo-dark.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/logo-dark.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/logo-dark.png';\r\n } else {\r\n iconLink.href = userConfig?.siteIcon || '/logo.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/logo.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/logo.png';\r\n }\r\n\r\n document.head.appendChild(iconLink);\r\n document.head.appendChild(appleIconLink);\r\n document.head.appendChild(maskIconLink);\r\n};\r\n\r\nstore.dispatch('fetchUserConfig').then(() => {\r\n // 初始化时应用 dark 模式\r\n initDarkModeClass();\r\n\r\n // 预设网站标题和图标\r\n presetSiteTitle(store.getters.userConfig);\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n\r\n // 监听 useDarkMode 和 cusDarkMode 的变化\r\n store.subscribe((mutation, state) => {\r\n if (mutation.type === 'setUseDarkMode' && store.state.cusDarkMode) {\r\n applyDarkModeClass(state.useDarkMode);\r\n // 同时更新网站图标\r\n presetSiteIcon(state.useDarkMode, store.getters.userConfig);\r\n }\r\n\r\n // 监听 cusDarkMode 变化,当设置为 false 时重新初始化\r\n if (mutation.type === 'setCusDarkMode' && !mutation.payload) {\r\n // 切换到跟随系统模式,重新初始化\r\n initDarkModeClass();\r\n // 同时更新网站图标\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n }\r\n });\r\n\r\n app.use(store).use(router).use(ElementPlus).mount('#app');\r\n}).catch(error => {\r\n console.error('Failed to load user configuration:', error);\r\n app.use(store).use(router).use(ElementPlus).use(head).mount('#app');\r\n})\r\n","import { createStore } from 'vuex'\r\nimport axios from '@/utils/axios';\r\nimport createPersistedState from 'vuex-persistedstate';\r\n\r\nexport default createStore({\r\n state: {\r\n userConfig: null,\r\n bingWallPapers: [],\r\n credentials: null,\r\n uploadMethod: 'default',\r\n uploadCopyUrlForm: '',\r\n compressConfig: {\r\n customerCompress: true,\r\n compressQuality: 4,\r\n compressBar: 5,\r\n serverCompress: true,\r\n },\r\n storeUploadChannel: '',\r\n storeAutoRetry: true,\r\n storeUploadNameType: '',\r\n uploadFolder: '',\r\n customUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n adminUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n autoReUpload: true,\r\n // 深色模式\r\n useDarkMode: null,\r\n cusDarkMode: false,\r\n },\r\n getters: {\r\n userConfig: state => state.userConfig,\r\n bingWallPapers: state => state.bingWallPapers,\r\n credentials: state => state.credentials,\r\n storeUploadMethod: state => state.uploadMethod,\r\n uploadCopyUrlForm: state => state.uploadCopyUrlForm,\r\n compressConfig: state => state.compressConfig,\r\n storeUploadChannel: state => state.storeUploadChannel,\r\n storeUploadNameType: state => state.storeUploadNameType,\r\n customUrlSettings: state => state.customUrlSettings,\r\n storeAutoRetry: state => state.storeAutoRetry,\r\n adminUrlSettings: state => state.adminUrlSettings,\r\n storeUploadFolder: (state) => {\r\n return state.uploadFolder || localStorage.getItem('uploadFolder') || ''\r\n },\r\n useDarkMode: state => state.useDarkMode,\r\n cusDarkMode: state => state.cusDarkMode,\r\n storeAutoReUpload: state => state.autoReUpload,\r\n },\r\n mutations: {\r\n setUserConfig(state, userConfig) {\r\n state.userConfig = userConfig;\r\n },\r\n setBingWallPapers(state, bingWallPapers) {\r\n state.bingWallPapers = bingWallPapers;\r\n },\r\n setCredentials(state, credentials) {\r\n state.credentials = credentials;\r\n },\r\n setUploadMethod(state, uploadMethod) {\r\n state.uploadMethod = uploadMethod;\r\n },\r\n setUploadCopyUrlForm(state, uploadCopyUrlForm) {\r\n state.uploadCopyUrlForm = uploadCopyUrlForm;\r\n },\r\n setCompressConfig(state, { key, value }) {\r\n state.compressConfig[key] = value;\r\n },\r\n setStoreUploadChannel(state, uploadChannel) {\r\n state.storeUploadChannel = uploadChannel;\r\n },\r\n setStoreUploadNameType(state, storeUploadNameType) {\r\n state.storeUploadNameType = storeUploadNameType;\r\n },\r\n setCustomUrlSettings(state, { key, value }) {\r\n state.customUrlSettings[key] = value;\r\n },\r\n setStoreAutoRetry(state, storeAutoRetry) {\r\n state.storeAutoRetry = storeAutoRetry;\r\n },\r\n setAdminUrlSettings(state, { key, value }) {\r\n state.adminUrlSettings[key] = value;\r\n },\r\n setUseDarkMode(state, useDarkMode) {\r\n state.useDarkMode = useDarkMode;\r\n },\r\n setCusDarkMode(state, cusDarkMode) {\r\n state.cusDarkMode = cusDarkMode;\r\n },\r\n setStoreUploadFolder(state, folder) {\r\n state.uploadFolder = folder\r\n localStorage.setItem('uploadFolder', folder)\r\n },\r\n setStoreAutoReUpload(state, autoReUpload) {\r\n state.autoReUpload = autoReUpload;\r\n }\r\n },\r\n actions: {\r\n async fetchUserConfig({ commit }) {\r\n try {\r\n const response = await axios.get('/api/userConfig');\r\n commit('setUserConfig', response.data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n async fetchBingWallPapers({ commit }) {\r\n try {\r\n const response = await axios.get('/api/bing/wallpaper');\r\n const wallpapers = response.data.data;\r\n const bingWallPapers = wallpapers.map(wallpaper => {\r\n return {\r\n url: 'https://www.bing.com' + wallpaper.url,\r\n };\r\n }\r\n );\r\n\r\n //预加载图片,阻塞直到图片加载完成\r\n await Promise.all(bingWallPapers.map(wallpaper => {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.onload = resolve;\r\n img.onerror = reject;\r\n img.src = wallpaper.url;\r\n });\r\n }));\r\n commit('setBingWallPapers', bingWallPapers);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n },\r\n modules: {\r\n },\r\n plugins: [createPersistedState()]\r\n})\r\n","import { createRouter, createWebHistory } from 'vue-router'\r\nimport { ElMessage } from 'element-plus'\r\nimport cookies from 'vue-cookies'\r\nimport store from '../store'\r\nimport axios from '@/utils/axios'\r\n\r\n// 通用的管理员认证守卫\r\nconst adminAuthGuard = (to, from, next) => {\r\n // 从store中获取凭据\r\n const credentials = store.getters.credentials\r\n if (credentials === null && to.name !== 'adminLogin') {\r\n // 尝试未设置密码的情况\r\n const credentials = btoa('unset:unset')\r\n axios.get('/api/manage/check', {\r\n headers: {\r\n 'Authorization': 'Basic ' + credentials\r\n },\r\n withCredentials: true\r\n }).then(res => {\r\n if (res.status !== 200) {\r\n throw new Error('认证失败!')\r\n }\r\n store.commit('setCredentials', credentials)\r\n next()\r\n }).catch(err => {\r\n ElMessage.error('请先认证!')\r\n next({ name: 'adminLogin' })\r\n })\r\n } else {\r\n next()\r\n }\r\n}\r\n\r\n// 通用的用户认证守卫\r\nconst userAuthGuard = (to, from, next) => {\r\n let authCode = cookies.get('authCode');\r\n if (authCode === null && to.name !== 'login') {\r\n // 尝试未设置密码的情况\r\n axios.post('/api/login', {\r\n authCode: 'unset'\r\n }).then(res => {\r\n if (res.status !== 200) {\r\n throw new Error('认证失败!')\r\n }\r\n cookies.set('authCode', 'unset', '14d')\r\n authCode = 'unset'\r\n next()\r\n }).catch(err => {\r\n ElMessage.error('请先认证!')\r\n next({ name: 'login' })\r\n })\r\n } else {\r\n next()\r\n }\r\n}\r\n\r\nconst routes = [\r\n {\r\n path: '/',\r\n name: 'home',\r\n component: () => import('../views/UploadHome.vue'),\r\n beforeEnter: userAuthGuard\r\n },\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: () => import('../views/Login.vue')\r\n },\r\n {\r\n path: '/dashboard',\r\n name: 'dashboard',\r\n component: () => import('../views/AdminDashBoard.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/customerConfig',\r\n name: 'customerConfig',\r\n component: () => import('../views/CustomerConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/systemConfig',\r\n name: 'systemConfig',\r\n component: () => import('../views/SystemConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/adminLogin',\r\n name: 'adminLogin',\r\n component: () => import('../views/AdminLogin.vue'),\r\n },\r\n {\r\n path: '/blockimg',\r\n name: 'blockimg',\r\n component: () => import('../views/BlockImage.vue'),\r\n },\r\n {\r\n path: '/whiteliston',\r\n name: 'whiteliston',\r\n component: () => import('../views/WhiteListOn.vue'),\r\n },\r\n {\r\n path: '/browse/:dir*',\r\n name: 'publicBrowse',\r\n component: () => import('../views/PublicBrowse.vue'),\r\n },\r\n {\r\n path: '/:pathMatch(.*)*',\r\n name: 'notFound',\r\n component: () => import('../views/NotFound.vue'),\r\n },\r\n]\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(process.env.BASE_URL),\r\n routes\r\n})\r\n\r\nexport default router\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"32\":\"a8086e01\",\"171\":\"833208d0\",\"226\":\"577ea134\",\"239\":\"32572dba\",\"419\":\"99e00aec\",\"482\":\"e302adaf\",\"672\":\"11bec4e1\",\"691\":\"fa084424\",\"698\":\"77f859a8\",\"747\":\"51eee506\",\"845\":\"6b4cb4a5\",\"917\":\"5bf3db27\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"32\":\"3ae41ed4\",\"226\":\"6548e7b4\",\"239\":\"6563616d\",\"419\":\"1d235d6e\",\"482\":\"f42e1415\",\"672\":\"aed3581b\",\"691\":\"854b8d50\",\"698\":\"aed3581b\",\"747\":\"e115ba5f\",\"845\":\"6b45e8e3\",\"917\":\"8529ad1e\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"sanyue_imghub:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"32\":1,\"226\":1,\"239\":1,\"419\":1,\"482\":1,\"672\":1,\"691\":1,\"698\":1,\"747\":1,\"845\":1,\"917\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\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\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunksanyue_imghub\"] = self[\"webpackChunksanyue_imghub\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(3354); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["instance","axios","create","baseURL","interceptors","request","use","config","withAuthCode","authCode","cookies","headers","error","Promise","reject","response","status","ElMessage","router","push","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_view","computed","mounted","this","$nextTick","initOverlayScrollbars","watch","useDarkMode","setSiteIcon","methods","valid","document","body","scrollbars","theme","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","overflow","x","y","console","log","existingIcons","querySelectorAll","forEach","icon","remove","iconLink","createElement","appleIconLink","maskIconLink","rel","href","userConfig","siteIcon","head","appendChild","__exports__","library","add","fas","app","createApp","App","createHead","component","FontAwesomeIcon","key","Object","entries","ElementPlusIconsVue","initDarkModeClass","htmlElement","documentElement","isDarkMode","store","state","cusDarkMode","window","matchMedia","matches","now","Date","hour","getHours","commit","classList","applyDarkModeClass","presetSiteTitle","title","siteTitle","presetSiteIcon","dispatch","then","getters","subscribe","mutation","type","payload","ElementPlus","mount","catch","createStore","bingWallPapers","credentials","uploadMethod","uploadCopyUrlForm","compressConfig","customerCompress","compressQuality","compressBar","serverCompress","storeUploadChannel","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","useCustomUrl","customUrlPrefix","adminUrlSettings","autoReUpload","storeUploadMethod","storeUploadFolder","localStorage","getItem","storeAutoReUpload","mutations","setUserConfig","setBingWallPapers","setCredentials","setUploadMethod","setUploadCopyUrlForm","setCompressConfig","value","setStoreUploadChannel","uploadChannel","setStoreUploadNameType","setCustomUrlSettings","setStoreAutoRetry","setAdminUrlSettings","setUseDarkMode","setCusDarkMode","setStoreUploadFolder","folder","setItem","setStoreAutoReUpload","actions","fetchUserConfig","get","data","fetchBingWallPapers","wallpapers","map","wallpaper","url","all","resolve","img","Image","onload","onerror","src","modules","plugins","createPersistedState","adminAuthGuard","to","from","next","name","btoa","withCredentials","res","Error","err","userAuthGuard","post","routes","path","beforeEnter","createRouter","history","createWebHistory","process","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","nc","setAttribute","onScriptComplete","prev","event","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","bind","target","Symbol","toStringTag","p","createStylesheet","fullhref","oldTag","linkTag","nonce","onLinkComplete","errorType","realHref","code","insertBefore","nextSibling","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","promise","loadingEnded","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","__webpack_exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/js/app.50b561a2.js.map.gz b/js/app.50b561a2.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..6fd2b3df08be79de154a3893c5055965ebd3993f GIT binary patch literal 15259 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 h<7*SS#Yg*qZs0fBJ