Files
FileShare/server/web/dist/assets/SettingsView-fRnqP1Pf.js
T
SKYMirror 157db0e9e5
Release 镜像 / 测试(推送前置门禁) (push) Successful in 45s
Release 镜像 / 多架构构建并推送 ACR (push) Successful in 1m40s
v3.2:上下行带宽限速 + 品牌更新 + 产品修复
亮点
- v3.2 带宽限速(upload_rate/download_rate,字节/秒,0=不限速;管理端立即生效)
  - middleware/bandwidth.go 时间窗对齐 sleep 算法 + 单元测试(400KB@100KB/s 4.00s 精度)
  - 下载:serveFile 包裹 storage.ReadCloser(统一覆盖 local/webdav/s3 代理下载)
  - 上传:UploadBandwidthMiddleware 包裹 Request.Body(shareFile/chunk/presign proxy)
  - S3 预签名直传不可服务端限速——UI/文档明示
  - 后台 SettingsView 增加 MB/s 友好输入;i18n zh-CN/en-US 双语
- v3.2 文档:新增 docs/api/13-bandwidth.md 专题;10-config 指针;00-overview changelog
  与限流表带宽行;openapi.yaml 三处 schema + description 更新
- README.md / web/README.md / server/README.md / deploy/README.md 全部覆盖

品牌(v3.1 收尾)
- 文件快递柜 → 文件快传(前端/后端默认值/文档/产物/运行 KV)
- 「复制取件码」按钮删除;取件码块点击即复制(保持原尺寸)
- 「复制链接」→「复制链接和提取码」(一并复制链接和提取码)

产品修复(v3.1.1)
- 文本分享 Content-Type text/plain + urlencoded body:前端显式声明 urlencoded 头根治;
  后端 bindJSONOrForm 兜底兼容 text/plain + JSON/urlencoded 嗅探
- Docker 部署文档校对到 v3.1 现状(热切换 + 端口/卷/健康检查)
2026-09-06 10:20:04 +08:00

130 lines
41 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{a0 as be,h as F,a1 as Qe,a2 as Fe,a3 as We,a4 as et,a5 as Ee,a6 as tt,o as w,a7 as Ne,z as ce,c as y,F as J,b as e,a8 as Ye,a9 as st,e as nt,aa as it,G as Pe,A as ot,ab as at,ac as lt,j as B,ad as He,ae as W,J as rt,I as Ge,af as dt,P as ut,ag as ct,ah as _t,d as we,ai as mt,aj as ft,ak as Me,al as b,n as ze,am as qe,an as pt,ao as ht,ap as gt,aq as X,ar as Oe,as as Je,at as Q,au as vt,u as bt,i as wt,a as yt,t as l,f as a,q as M,w as De,C as m,D as g,g as j,Z as me,s as Ie,R as Ce,S as p,H as de,B as xt,_ as kt}from"./index-QLbKGtH7.js";import{f as St,g as Ct,h as Le,i as Rt}from"./admin-BZX1cFNW.js";import{u as Bt}from"./auth-Yfi2oa1E.js";function Vt(s={},t={defaultBordered:!0}){const d=be(Fe,null);return{inlineThemeDisabled:d?.inlineThemeDisabled,mergedRtlRef:d?.mergedRtlRef,mergedComponentPropsRef:d?.mergedComponentPropsRef,mergedBreakpointsRef:d?.mergedBreakpointsRef,mergedBorderedRef:F(()=>{const{bordered:c}=s;return c!==void 0?c:d?.mergedBorderedRef.value??t.defaultBordered??!0}),mergedClsPrefixRef:d?d.mergedClsPrefixRef:Qe("n"),namespaceRef:F(()=>d?.mergedNamespaceRef.value)}}function Ut(s,t,d){if(!t)return;const c=We(),_=be(Fe,null),h=()=>{const x=d.value;t.mount({id:x===void 0?s:x+s,head:!0,anchorMetaName:Ee,props:{bPrefix:x?`.${x}-`:void 0},ssr:c,parent:_?.styleMountTarget}),_?.preflightStyleDisabled||tt.mount({id:"n-global",head:!0,anchorMetaName:Ee,ssr:c,parent:_?.styleMountTarget})};c?h():et(h)}function z(s,t=1){let d=Pe,c=!1;return typeof s=="function"&&(c=!0,w(),d=ce,s=s()),Ne(s)?c?ce(Xe(s)):Xe(s):Array.isArray(s)?c?y(J,null,s.map(_=>z(()=>_)),-2):e(J,null,s.slice()):s==null||typeof s=="boolean"?d(Ye):d(st,null,String(s),t)}function Xe(s){return s.el===null&&s.patchFlag!==-1||s.memo?s:it(s)}const $t=s=>typeof s=="function"||Object.prototype.toString.call(s)==="[object Object]"&&!Ne(s)?s:{default:ot(()=>[z(()=>s)])},C=s=>nt(s)||null;function K(s){return typeof s=="string"?s.endsWith("px")?Number(s.slice(0,s.length-2)):Number(s):s}function Re(s){if(s!=null)return typeof s=="number"?`${s}px`:s.endsWith("px")?s:`${s}px`}function Tt(s,t,d,c){d||at("useThemeClass","cssVarsRef is not passed");const _=be(Fe,null),h=_?.mergedThemeHashRef,x=_?.styleMountTarget,R=B(""),o=We();let k;const V=`__${s}`,T=()=>{let f=V;const U=t?t.value:void 0,N=h?.value;N&&(f+=`-${N}`),U&&(f+=`-${U}`);const{themeOverrides:E,builtinThemeOverrides:Z}=c;E&&(f+=`-${He(JSON.stringify(E))}`),Z&&(f+=`-${He(JSON.stringify(Z))}`),R.value=f,k=()=>{const te=d.value;let se="";for(const ne in te)se+=`${ne}: ${te[ne]};`;W(`.${f}`,se).mount({id:f,ssr:o,parent:x}),k=void 0}};return lt(()=>{T()}),{themeClass:R,onRender:()=>{k?.()}}}function Mt(s,t){return rt(s,d=>{d!==void 0&&(t.value=d)}),F(()=>s.value===void 0?t.value:s.value)}function zt(){const s=B(!1);return Ge(()=>{s.value=!0}),dt(s)}function ge(s,...t){if(Array.isArray(s))s.forEach(d=>ge(d,...t));else return s(...t)}function Ae(s){return s.some(t=>Ne(t)?!(t.type===Ye||t.type===J&&!Ae(t.children)):!0)?s:null}function ee(s,t){return t(s&&Ae(s())||null)}function Be(s){return!(s&&Ae(s()))}const je=ct("n-form-item");function Ft(s,{defaultSize:t="medium",mergedSize:d,mergedDisabled:c}={}){const _=be(je,null);_t(je,null);const h=F(d?()=>d(_):()=>{const{size:o}=s;if(o)return o;if(_){const{mergedSize:k}=_;if(k.value!==void 0)return k.value}return t}),x=F(c?()=>c(_):()=>{const{disabled:o}=s;return o!==void 0?o:_?_.disabled.value:!1}),R=F(()=>{const{status:o}=s;return o||_?.mergedValidationStatus.value});return ut(()=>{_&&_.restoreValidation()}),{mergedSizeRef:h,mergedDisabledRef:x,mergedStatusRef:R,nTriggerFormBlur(){_&&_.handleContentBlur()},nTriggerFormChange(){_&&_.handleContentChange()},nTriggerFormFocus(){_&&_.handleContentFocus()},nTriggerFormInput(){_&&_.handleContentInput()}}}var Ze=we({name:"BaseIconSwitchTransition",setup(s,{slots:t}){const d=zt();return()=>(w(),ce(mt,{name:"icon-switch-transition",appear:d.value},$t(t),1032,["appear"]))}});const{cubicBezierEaseInOut:Nt}=ft;function ve({originalTransform:s="",left:t=0,top:d=0,transition:c=`all .3s ${Nt} !important`}={}){return[W("&.icon-switch-transition-enter-from, &.icon-switch-transition-leave-to",{transform:`${s} scale(0.75)`,left:t,top:d,opacity:0}),W("&.icon-switch-transition-enter-to, &.icon-switch-transition-leave-from",{transform:`scale(1) ${s}`,left:t,top:d,opacity:1}),W("&.icon-switch-transition-enter-active, &.icon-switch-transition-leave-active",{transformOrigin:"center",position:"absolute",left:t,top:d,transition:c})]}var Pt=W([W("@keyframes rotator",`
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}`),Me("base-loading",`
position: relative;
line-height: 0;
width: 1em;
height: 1em;
`,[b("transition-wrapper",`
position: absolute;
width: 100%;
height: 100%;
`,[ve()]),b("placeholder",`
position: absolute;
left: 50%;
top: 50%;
transform: translateX(-50%) translateY(-50%);
`,[ve({left:"50%",top:"50%",originalTransform:"translateX(-50%) translateY(-50%)"})]),b("container",`
animation: rotator 3s linear infinite both;
`,[b("icon",`
height: 1em;
width: 1em;
`)])])]);const At=["viewBox"],Et=["values","dur"],Ht=["stroke-width","cx","cy","r","stroke-dasharray","stroke-dashoffset"],Ot=["values","dur"],Dt=["values","dur"],Ve="1.6s",It={strokeWidth:{type:Number,default:28},stroke:{type:String,default:void 0},scale:{type:Number,default:1},radius:{type:Number,default:100}};var Lt=we({name:"BaseLoading",props:{clsPrefix:{type:String,required:!0},show:{type:Boolean,default:!0},...It},setup(s){Ut("-base-loading",Pt,qe(s,"clsPrefix"))},render(){const{clsPrefix:s,radius:t,strokeWidth:d,stroke:c,scale:_}=this,h=t/_;return w(),y("div",{class:C(`${s}-base-loading`),role:"img","aria-label":"loading"},[Pe(Ze,null,{default:()=>this.show?(w(),y("div",{key:"icon",class:C(`${s}-base-loading__transition-wrapper`)},[e("div",{class:C(`${s}-base-loading__container`)},[(w(),y("svg",{class:C(`${s}-base-loading__icon`),viewBox:`0 0 ${2*h} ${2*h}`,xmlns:"http://www.w3.org/2000/svg",style:ze({color:c})},[e("g",null,[e("animateTransform",{attributeName:"transform",type:"rotate",values:`0 ${h} ${h};270 ${h} ${h}`,begin:"0s",dur:Ve,fill:"freeze",repeatCount:"indefinite"},null,8,Et),e("circle",{class:C(`${s}-base-loading__icon`),fill:"none",stroke:"currentColor","stroke-width":d,"stroke-linecap":"round",cx:h,cy:h,r:t-d/2,"stroke-dasharray":5.67*t,"stroke-dashoffset":18.48*t},[e("animateTransform",{attributeName:"transform",type:"rotate",values:`0 ${h} ${h};135 ${h} ${h};450 ${h} ${h}`,begin:"0s",dur:Ve,fill:"freeze",repeatCount:"indefinite"},null,8,Ot),e("animate",{attributeName:"stroke-dashoffset",values:`${5.67*t};${1.42*t};${5.67*t}`,begin:"0s",dur:Ve,fill:"freeze",repeatCount:"indefinite"},null,8,Dt)],10,Ht)])],14,At))],2)],2)):(w(),y("div",{key:"placeholder",class:C(`${s}-base-loading__placeholder`)},[z(()=>this.$slots.default?.())],2))},1024)],2)}});function Xt(s){const{primaryColor:t,opacityDisabled:d,borderRadius:c,textColor3:_}=s;return{...ht,iconColor:_,textColor:"white",loadingColor:t,opacityDisabled:d,railColor:"rgba(0, 0, 0, .14)",railColorActive:t,buttonBoxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",buttonColor:"#FFF",railBorderRadiusSmall:c,railBorderRadiusMedium:c,railBorderRadiusLarge:c,buttonBorderRadiusSmall:c,buttonBorderRadiusMedium:c,buttonBorderRadiusLarge:c,boxShadowFocus:`0 0 0 2px ${gt(t,{alpha:.2})}`}}const jt={common:pt,self:Xt};var Kt=Me("switch",`
height: var(--n-height);
min-width: var(--n-width);
vertical-align: middle;
user-select: none;
-webkit-user-select: none;
display: inline-flex;
outline: none;
justify-content: center;
align-items: center;
`,[b("children-placeholder",`
height: var(--n-rail-height);
display: flex;
flex-direction: column;
overflow: hidden;
pointer-events: none;
visibility: hidden;
`),b("rail-placeholder",`
display: flex;
flex-wrap: none;
`),b("button-placeholder",`
width: calc(1.75 * var(--n-rail-height));
height: var(--n-rail-height);
`),Me("base-loading",`
position: absolute;
top: 50%;
left: 50%;
transform: translateX(-50%) translateY(-50%);
font-size: calc(var(--n-button-width) - 4px);
color: var(--n-loading-color);
transition: color .3s var(--n-bezier);
`,[ve({left:"50%",top:"50%",originalTransform:"translateX(-50%) translateY(-50%)"})]),b("checked, unchecked",`
transition: color .3s var(--n-bezier);
color: var(--n-text-color);
box-sizing: border-box;
position: absolute;
white-space: nowrap;
top: 0;
bottom: 0;
display: flex;
align-items: center;
line-height: 1;
`),b("checked",`
right: 0;
padding-right: calc(1.25 * var(--n-rail-height) - var(--n-offset));
`),b("unchecked",`
left: 0;
justify-content: flex-end;
padding-left: calc(1.25 * var(--n-rail-height) - var(--n-offset));
`),W("&:focus",[b("rail",`
box-shadow: var(--n-box-shadow-focus);
`)]),X("round",[b("rail","border-radius: calc(var(--n-rail-height) / 2);",[b("button","border-radius: calc(var(--n-button-height) / 2);")])]),Oe("disabled",[Oe("icon",[X("rubber-band",[X("pressed",[b("rail",[b("button","max-width: var(--n-button-width-pressed);")])]),b("rail",[W("&:active",[b("button","max-width: var(--n-button-width-pressed);")])]),X("active",[X("pressed",[b("rail",[b("button","left: calc(100% - var(--n-offset) - var(--n-button-width-pressed));")])]),b("rail",[W("&:active",[b("button","left: calc(100% - var(--n-offset) - var(--n-button-width-pressed));")])])])])])]),X("active",[b("rail",[b("button","left: calc(100% - var(--n-button-width) - var(--n-offset))")])]),b("rail",`
overflow: hidden;
height: var(--n-rail-height);
min-width: var(--n-rail-width);
border-radius: var(--n-rail-border-radius);
cursor: pointer;
position: relative;
transition:
opacity .3s var(--n-bezier),
background .3s var(--n-bezier),
box-shadow .3s var(--n-bezier);
background-color: var(--n-rail-color);
`,[b("button-icon",`
color: var(--n-icon-color);
transition: color .3s var(--n-bezier);
font-size: calc(var(--n-button-height) - 4px);
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
display: flex;
justify-content: center;
align-items: center;
line-height: 1;
`,[ve()]),b("button",`
align-items: center;
top: var(--n-offset);
left: var(--n-offset);
height: var(--n-button-height);
width: var(--n-button-width-pressed);
max-width: var(--n-button-width);
border-radius: var(--n-button-border-radius);
background-color: var(--n-button-color);
box-shadow: var(--n-button-box-shadow);
box-sizing: border-box;
cursor: inherit;
content: "";
position: absolute;
transition:
background-color .3s var(--n-bezier),
left .3s var(--n-bezier),
opacity .3s var(--n-bezier),
max-width .3s var(--n-bezier),
box-shadow .3s var(--n-bezier);
`)]),X("active",[b("rail","background-color: var(--n-rail-color-active);")]),X("loading",[b("rail",`
cursor: wait;
`)]),X("disabled",[b("rail",`
cursor: not-allowed;
opacity: .5;
`)])]);const Wt=["aria-checked","tabindex","onClick","onFocus","onBlur","onKeyup","onKeydown"],Yt={...Je.props,size:String,value:{type:[String,Number,Boolean],default:void 0},loading:Boolean,defaultValue:{type:[String,Number,Boolean],default:!1},disabled:{type:Boolean,default:void 0},round:{type:Boolean,default:!0},"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],checkedValue:{type:[String,Number,Boolean],default:!0},uncheckedValue:{type:[String,Number,Boolean],default:!1},railStyle:Function,rubberBand:{type:Boolean,default:!0},spinProps:Object,onChange:[Function,Array]};let ue;var Gt=we({name:"Switch",props:Yt,slots:Object,setup(s){ue===void 0&&(typeof CSS<"u"?typeof CSS.supports<"u"?ue=CSS.supports("width","max(1px)"):ue=!1:ue=!0);const{mergedClsPrefixRef:t,inlineThemeDisabled:d,mergedComponentPropsRef:c}=Vt(s),_=Je("Switch","-switch",Kt,jt,s,t),h=Ft(s,{mergedSize(v){if(s.size!==void 0)return s.size;if(v)return v.mergedSize.value;const D=c?.value?.Switch?.size;return D||"medium"}}),{mergedSizeRef:x,mergedDisabledRef:R}=h,o=B(s.defaultValue),k=qe(s,"value"),V=Mt(k,o),T=F(()=>V.value===s.checkedValue),f=B(!1),U=B(!1),N=F(()=>{const{railStyle:v}=s;if(v)return v({focused:U.value,checked:T.value})});function E(v){const{"onUpdate:value":D,onChange:I,onUpdateValue:$}=s,{nTriggerFormInput:Y,nTriggerFormChange:G}=h;D&&ge(D,v),$&&ge($,v),I&&ge(I,v),o.value=v,Y(),G()}function Z(){const{nTriggerFormFocus:v}=h;v()}function te(){const{nTriggerFormBlur:v}=h;v()}function se(){s.loading||R.value||(V.value!==s.checkedValue?E(s.checkedValue):E(s.uncheckedValue))}function ne(){U.value=!0,Z()}function H(){U.value=!1,te(),f.value=!1}function ye(v){s.loading||R.value||v.key===" "&&(V.value!==s.checkedValue?E(s.checkedValue):E(s.uncheckedValue),f.value=!1)}function O(v){s.loading||R.value||v.key===" "&&(v.preventDefault(),f.value=!0)}const _e=F(()=>{const{value:v}=x,{self:{opacityDisabled:D,railColor:I,railColorActive:$,buttonBoxShadow:Y,buttonColor:G,boxShadowFocus:u,loadingColor:xe,textColor:le,iconColor:ke,[Q("buttonHeight",v)]:P,[Q("buttonWidth",v)]:S,[Q("buttonWidthPressed",v)]:ie,[Q("railHeight",v)]:A,[Q("railWidth",v)]:i,[Q("railBorderRadius",v)]:n,[Q("buttonBorderRadius",v)]:r},common:{cubicBezierEaseInOut:q}}=_.value;let L,re,Se;return ue?(L=`calc((${A} - ${P}) / 2)`,re=`max(${A}, ${P})`,Se=`max(${i}, calc(${i} + ${P} - ${A}))`):(L=Re((K(A)-K(P))/2),re=Re(Math.max(K(A),K(P))),Se=K(A)>K(P)?i:Re(K(i)+K(P)-K(A))),{"--n-bezier":q,"--n-button-border-radius":r,"--n-button-box-shadow":Y,"--n-button-color":G,"--n-button-width":S,"--n-button-width-pressed":ie,"--n-button-height":P,"--n-height":re,"--n-offset":L,"--n-opacity-disabled":D,"--n-rail-border-radius":n,"--n-rail-color":I,"--n-rail-color-active":$,"--n-rail-height":A,"--n-rail-width":i,"--n-width":Se,"--n-box-shadow-focus":u,"--n-loading-color":xe,"--n-text-color":le,"--n-icon-color":ke}}),ae=d?Tt("switch",F(()=>x.value[0]),_e,s):void 0;return{handleClick:se,handleBlur:H,handleFocus:ne,handleKeyup:ye,handleKeydown:O,mergedRailStyle:N,pressed:f,mergedClsPrefix:t,mergedValue:V,checked:T,mergedDisabled:R,cssVars:d?void 0:_e,themeClass:ae?.themeClass,onRender:ae?.onRender}},render(){const{mergedClsPrefix:s,mergedDisabled:t,checked:d,mergedRailStyle:c,onRender:_,$slots:h}=this;_?.();const{checked:x,unchecked:R,icon:o,"checked-icon":k,"unchecked-icon":V}=h,T=!(Be(o)&&Be(k)&&Be(V));return w(),y("div",{role:"switch","aria-checked":d,class:C([`${s}-switch`,this.themeClass,T&&`${s}-switch--icon`,d&&`${s}-switch--active`,t&&`${s}-switch--disabled`,this.round&&`${s}-switch--round`,this.loading&&`${s}-switch--loading`,this.pressed&&`${s}-switch--pressed`,this.rubberBand&&`${s}-switch--rubber-band`]),tabindex:this.mergedDisabled?void 0:0,style:ze(this.cssVars),onClick:this.handleClick,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeyup:this.handleKeyup,onKeydown:this.handleKeydown},[e("div",{class:C(`${s}-switch__rail`),"aria-hidden":"true",style:ze(c)},[z(()=>ee(x,f=>ee(R,U=>f||U?(w(),y("div",{key:4,"aria-hidden":!0,class:C(`${s}-switch__children-placeholder`)},[e("div",{class:C(`${s}-switch__rail-placeholder`)},[e("div",{class:C(`${s}-switch__button-placeholder`)},null,2),z(()=>f)],2),e("div",{class:C(`${s}-switch__rail-placeholder`)},[e("div",{class:C(`${s}-switch__button-placeholder`)},null,2),z(()=>U)],2)],2)):null))),e("div",{class:C(`${s}-switch__button`)},[z(()=>ee(o,f=>ee(k,U=>ee(V,N=>(w(),ce(Ze,null,{default:()=>this.loading?(w(),ce(Lt,vt({key:"loading",clsPrefix:s,strokeWidth:20},this.spinProps),null,16,["clsPrefix"])):this.checked&&(U||f)?(w(),y("div",{class:C(`${s}-switch__button-icon`),key:U?"checked-icon":"icon"},[z(()=>U||f)],2)):!this.checked&&(N||f)?(w(),y("div",{class:C(`${s}-switch__button-icon`),key:N?"unchecked-icon":"icon"},[z(()=>N||f)],2)):null},1024)))))),z(()=>ee(x,f=>f&&(w(),y("div",{key:"checked",class:C(`${s}-switch__checked`)},[z(()=>f)],2)))),z(()=>ee(R,f=>f&&(w(),y("div",{key:"unchecked",class:C(`${s}-switch__unchecked`)},[z(()=>f)],2))))],2)],6)],46,Wt)}});const qt={class:"toolbar"},Jt={class:"page-title"},Zt={class:"page-sub"},Qt={key:0,class:"loading-block"},es={class:"card"},ts={class:"card-title"},ss={class:"field"},ns={for:"set-site-name"},is={class:"hint"},os={class:"field"},as={for:"set-site-domain"},ls={class:"hint"},rs={class:"card"},ds={class:"card-title"},us={class:"field"},cs={for:"set-logo-url"},_s={class:"logo-input-row"},ms={class:"hint"},fs={class:"logo-preview-row"},ps={class:"logo-box"},hs=["src"],gs={style:{"font-size":"13px",color:"var(--c-text-2)"}},vs={style:{display:"inline-flex","align-items":"center",gap:"8px","font-weight":"700",color:"var(--c-text)"}},bs=["src"],ws={class:"card"},ys={class:"card-title"},xs={class:"field"},ks={for:"set-favicon-url"},Ss={class:"logo-input-row"},Cs={class:"hint"},Rs={class:"logo-preview-row"},Bs={class:"logo-box",style:{width:"44px",height:"44px"}},Vs=["src"],Us={style:{"font-size":"13px",color:"var(--c-text-2)"}},$s={class:"card"},Ts={class:"card-title"},Ms={class:"field"},zs={for:"set-bg-url"},Fs={class:"hint"},Ns={key:0,class:"logo-box",style:{width:"120px"}},Ps=["src"],As={class:"card"},Es={class:"card-title"},Hs={class:"field"},Os={for:"set-footer-text"},Ds={class:"hint"},Is={class:"field"},Ls={for:"set-footer-beian"},Xs={class:"hint"},js={class:"card"},Ks={class:"card-title"},Ws={class:"field notify-switch-row"},Ys={for:"set-notify-enabled"},Gs={class:"field"},qs={for:"set-notify-title"},Js={class:"hint"},Zs={class:"field"},Qs={for:"set-notify-content"},en={class:"hint"},tn={class:"card"},sn={class:"card-title"},nn={class:"field"},on={for:"set-max-save-time"},an={class:"unit-row"},ln=["placeholder"],rn={value:"hour"},dn={value:"day"},un={class:"hint"},cn={class:"field"},_n={for:"set-max-save-count"},mn={class:"hint"},fn={class:"card"},pn={class:"card-title"},hn={class:"field"},gn={for:"set-max-file-size"},vn={class:"unit-row"},bn=["placeholder"],wn={value:"MB"},yn={value:"GB"},xn={class:"hint"},kn={class:"field"},Sn={for:"set-allowed-types"},Cn={class:"hint"},Rn={class:"card"},Bn={class:"card-title"},Vn={class:"field"},Un={class:"field"},$n={for:"set-engine-type"},Tn={class:"unit-row"},Mn={value:"local"},zn={value:"webdav"},Fn={value:"s3"},Nn=["disabled"],Pn={key:0,class:"spin","aria-hidden":"true"},An={class:"hint"},En={class:"card-sub",style:{"margin-top":"8px"}},Hn={key:0,class:"field"},On={for:"set-local-root"},Dn={class:"hint"},In={class:"field"},Ln={for:"set-webdav-url"},Xn={class:"hint"},jn={class:"field"},Kn={for:"set-webdav-root"},Wn={class:"hint"},Yn={class:"field-row"},Gn={class:"field"},qn={for:"set-webdav-user"},Jn={class:"field"},Zn={for:"set-webdav-pass"},Qn={class:"hint"},ei={class:"field-row"},ti={class:"field"},si={for:"set-s3-endpoint"},ni={class:"hint"},ii={class:"field"},oi={for:"set-s3-bucket"},ai={class:"field-row"},li={class:"field"},ri={for:"set-s3-region"},di={class:"field"},ui={for:"set-s3-style"},ci={value:"auto"},_i={value:"path"},mi={value:"virtual"},fi={class:"field-row"},pi={class:"field"},hi={for:"set-s3-ak"},gi={class:"field"},vi={for:"set-s3-sk"},bi={class:"hint"},wi={class:"field"},yi={for:"set-s3-token"},xi={class:"hint"},ki={class:"save-row"},Si=["disabled"],Ci={key:0,class:"spin","aria-hidden":"true"},Ri={class:"card"},Bi={class:"card-title"},Vi={class:"field-row"},Ui={class:"field"},$i={for:"set-upload-count"},Ti={class:"hint"},Mi={class:"field"},zi={for:"set-upload-minute"},Fi={class:"hint"},Ni={class:"field-row",style:{"margin-top":"14px"}},Pi={class:"field"},Ai={for:"set-upload-rate"},Ei={class:"unit-row"},Hi={class:"hint"},Oi={class:"field"},Di={for:"set-download-rate"},Ii={class:"unit-row"},Li={class:"hint"},Xi={class:"save-row"},ji=["disabled"],Ki={key:0,class:"spin","aria-hidden":"true"},Wi={class:"card"},Yi={class:"card-title"},Gi={class:"card-sub"},qi={class:"field"},Ji={for:"pwd-old"},Zi={class:"field"},Qi={for:"pwd-new"},eo={class:"field"},to={for:"pwd-confirm"},so={class:"save-row"},no=["disabled"],io={key:0,class:"spin","aria-hidden":"true"},oo=365*24*60*60,Ue=1e5,ao=10*1024*1024*1024,lo=128,ro=2e3,uo=2e3,co=128,_o=2048,$e=1e4,Te=1440,fe=1024,Ke=3600,pe=86400,oe=1024*1024,he=1024*1024*1024,mo=256*1024,fo="******",po=we({__name:"SettingsView",setup(s){const{t}=bt(),d=wt(),c=yt(),_=Bt(),h=xt(),x=B(!1),R=B(!1),o=Ce({site_name:"",site_domain:"",logo_url:"",favicon_url:"",background_url:"",footer_text:"",footer_beian:"",notify_enabled:!0,notify_title:"",notify_content:"",max_save_seconds:0,max_save_count:0,max_file_size:0,allowed_file_types:"",uploadCount:0,uploadMinute:0,uploadRate:0,downloadRate:0}),k=B(0),V=B("day"),T=B(0),f=B("MB");function U(i){if(i<=0)return{value:0,unit:"day"};if(i%pe===0||i>=pe){const n=i/pe;if(Number.isInteger(n))return{value:n,unit:"day"}}return{value:Math.round(i/Ke*100)/100,unit:"hour"}}function N(i){if(i<=0)return{value:0,unit:"MB"};if(i%he===0||i>=he){const n=i/he;if(Number.isInteger(n))return{value:n,unit:"GB"}}return{value:Math.round(i/oe*100)/100,unit:"MB"}}function E(i,n){const r=n==="day"?i*pe:i*Ke;return O(r,0,oo)}function Z(i,n){const r=n==="GB"?i*he:i*oe;return O(r,0,ao)}const te=F(()=>k.value<=0),se=F(()=>T.value<=0);function ne(i,n){return i==null?n:typeof i=="boolean"?i:typeof i=="number"?i!==0:String(i)!=="0"&&String(i)!=="false"&&String(i)!==""}function H(i,n){const r=Number(i);return Number.isFinite(r)?r:n}function ye(i){return Array.isArray(i)?i.map(n=>String(n).trim()).filter(Boolean):typeof i=="string"?i.split(",").map(n=>n.trim()).filter(Boolean):[]}function O(i,n,r){return Math.min(Math.max(Math.round(i)||0,n),r)}async function _e(){x.value=!0;try{const i=await St();o.site_name=String(p(i,["site_name","name"])??""),o.site_domain=String(p(i,["site_domain","siteDomain"])??""),o.logo_url=String(p(i,["logo_url"])??""),o.favicon_url=String(p(i,["favicon_url"])??""),o.background_url=String(p(i,["background_url","backgroundUrl"])??""),o.footer_text=String(p(i,["footer_text","footerText"])??""),o.footer_beian=String(p(i,["footer_beian","footerBeian"])??""),o.notify_enabled=ne(p(i,["notify_enabled","notifyEnabled"]),!0),o.notify_title=String(p(i,["notify_title","notifyTitle"])??""),o.notify_content=String(p(i,["notify_content","notifyContent"])??""),o.max_save_seconds=H(p(i,["max_save_seconds","maxSaveSeconds"]),0),o.max_save_count=H(p(i,["max_save_count","maxSaveCount"]),0),o.max_file_size=H(p(i,["max_file_size","maxFileSize"]),0);const n=U(o.max_save_seconds);k.value=n.value,V.value=n.unit;const r=N(o.max_file_size);T.value=r.value,f.value=r.unit;const q=ye(p(i,["allowed_file_types","allowedFileTypes"]));o.allowed_file_types=q.join(","),o.uploadCount=H(p(i,["uploadCount","upload_count"]),0),o.uploadMinute=H(p(i,["uploadMinute","upload_minute"]),0),o.uploadRate=Math.round(H(p(i,["upload_rate","uploadRate"]),0)/oe),o.downloadRate=Math.round(H(p(i,["download_rate","downloadRate"]),0)/oe);const L=p(i,["_engine_hint"]),re=L?String(p(L,["storage_backend"])??""):"";I.value=re||String(p(i,["storage_engine"])??"local"),$.value=I.value,xe(i)}catch(i){d.error(i instanceof de?i.msg:t("admin.settings.loadFailed"))}finally{x.value=!1}}function ae(i){const n=document.createElement("input");n.type="file",n.accept="image/*",n.onchange=()=>{const r=n.files?.[0];if(!r)return;if(r.size>mo){d.error(t("admin.settings.imageTooLarge"));return}const q=new FileReader;q.onload=()=>{const L=String(q.result??"");i==="logo"?o.logo_url=L:o.favicon_url=L,d.success(t("admin.settings.imageLoaded"))},q.onerror=()=>d.error(t("admin.settings.imageReadFailed")),q.readAsDataURL(r)},n.click()}async function v(){R.value=!0;try{const i=o.allowed_file_types.split(",").map(n=>n.trim()).filter(Boolean);await Le({site_name:o.site_name.trim(),site_domain:o.site_domain.trim(),logo_url:o.logo_url.trim(),favicon_url:o.favicon_url.trim(),background_url:o.background_url.trim(),footer_text:o.footer_text.trim(),footer_beian:o.footer_beian.trim(),notify_enabled:o.notify_enabled?1:0,notify_title:o.notify_title.trim(),notify_content:o.notify_content.trim(),max_save_seconds:E(k.value,V.value),max_save_count:O(o.max_save_count,0,Ue),max_file_size:Z(T.value,f.value),allowed_file_types:i.length?i:["*"],uploadCount:O(o.uploadCount||0,1,$e),uploadMinute:O(o.uploadMinute||0,1,Te),upload_rate:O(Number(o.uploadRate)||0,0,fe)*oe,download_rate:O(Number(o.downloadRate)||0,0,fe)*oe}),d.success(t("admin.settings.saved")),await c.load()}catch(i){d.error(i instanceof de?i.msg:t("admin.settings.saveFailed"))}finally{R.value=!1}}function D(){o.site_name="文件快传",o.site_domain="",o.logo_url="",o.favicon_url="",o.background_url="",o.footer_text="",o.footer_beian="",o.notify_enabled=!0,o.notify_title="",o.notify_content="",o.max_save_seconds=0,o.max_save_count=0,o.max_file_size=0,o.allowed_file_types="*",o.uploadCount=10,o.uploadMinute=1,o.uploadRate=0,o.downloadRate=0,k.value=0,V.value="day",T.value=0,f.value="MB",d.info(t("admin.settings.restoreDefaultsDone"))}const I=B("local"),$=B("local"),Y=B(!1),G=B(!1),u=Ce({local_storage_path:"",webdav_url:"",webdav_root_path:"filebox_storage",webdav_username:"",webdav_password:"",s3_endpoint_url:"",s3_bucket_name:"",s3_region_name:"auto",s3_access_key_id:"",s3_secret_access_key:"",aws_session_token:"",s3_addressing_style:"auto"});function xe(i){u.local_storage_path=String(p(i,["local_storage_path","localStoragePath"])??""),u.webdav_url=String(p(i,["webdav_url","webdavUrl"])??""),u.webdav_root_path=String(p(i,["webdav_root_path","webdavRootPath"])??"filebox_storage"),u.webdav_username=String(p(i,["webdav_username","webdavUsername"])??""),u.webdav_password=String(p(i,["webdav_password","webdavPassword"])??""),u.s3_endpoint_url=String(p(i,["s3_endpoint_url","s3EndpointUrl"])??""),u.s3_bucket_name=String(p(i,["s3_bucket_name","s3BucketName"])??""),u.s3_region_name=String(p(i,["s3_region_name","s3RegionName"])??"auto"),u.s3_access_key_id=String(p(i,["s3_access_key_id","s3AccessKeyId"])??""),u.s3_secret_access_key=String(p(i,["s3_secret_access_key","s3SecretAccessKey"])??""),u.aws_session_token=String(p(i,["aws_session_token","awsSessionToken"])??""),u.s3_addressing_style=String(p(i,["s3_addressing_style","s3AddressingStyle"])??"auto")}function le(i){const n=i.trim();if(!(n===""||n===fo))return n}async function ke(){Y.value=!0;try{const i=await Ct($.value);I.value=String(i)||$.value,d.success(t("admin.settings.engineSwitchOk",{engine:i})),await c.load()}catch(i){d.error(i instanceof de?i.msg:t("admin.settings.engineSwitchFail"))}finally{Y.value=!1}}async function P(){G.value=!0;try{const i={};if($.value==="local")i.local_storage_path=u.local_storage_path.trim();else if($.value==="webdav"){i.webdav_url=u.webdav_url.trim(),i.webdav_root_path=u.webdav_root_path.trim(),i.webdav_username=u.webdav_username.trim();const n=le(u.webdav_password);n!==void 0&&(i.webdav_password=n)}else{i.s3_endpoint_url=u.s3_endpoint_url.trim(),i.s3_bucket_name=u.s3_bucket_name.trim(),i.s3_region_name=u.s3_region_name.trim()||"auto",i.s3_access_key_id=u.s3_access_key_id.trim();const n=le(u.s3_secret_access_key);n!==void 0&&(i.s3_secret_access_key=n);const r=le(u.aws_session_token);r!==void 0&&(i.aws_session_token=r),i.s3_addressing_style=u.s3_addressing_style}await Le(i),d.success(t("admin.settings.engineParamsSaved"))}catch(i){d.error(i instanceof de?i.msg:t("admin.settings.saveFailed"))}finally{G.value=!1}}const S=Ce({old:"",next:"",confirm:""}),ie=B(!1);async function A(){if(!S.old||!S.next){d.error(t("admin.settings.pwdRequired"));return}if(S.next.length<6){d.error(t("admin.settings.pwdTooShort"));return}if(S.next!==S.confirm){d.error(t("admin.settings.pwdMismatch"));return}ie.value=!0;try{await Rt(S.old,S.next),d.success(t("admin.settings.pwdChanged")),S.old=S.next=S.confirm="",await _.logout(),h.replace({name:"admin-login"})}catch(i){d.error(i instanceof de?i.code===401?t("admin.settings.pwdWrong"):i.msg:t("admin.settings.pwdChangeFailed"))}finally{ie.value=!1}}return Ge(_e),(i,n)=>(w(),y("div",null,[e("div",qt,[e("div",null,[e("h2",Jt,l(a(t)("admin.settings.title")),1),e("p",Zt,l(a(t)("admin.settings.subtitle")),1)]),e("button",{class:"btn btn-ghost",type:"button",onClick:D},l(a(t)("admin.settings.restoreDefaults")),1)]),x.value?(w(),y("div",Qt,[n[38]||(n[38]=e("span",{class:"spin","aria-hidden":"true"},null,-1)),M(" "+l(a(t)("admin.settings.loading")),1)])):(w(),y("form",{key:1,class:"settings-grid",onSubmit:De(v,["prevent"])},[e("section",es,[e("h3",ts,l(a(t)("admin.settings.sectionBasic")),1),e("div",ss,[e("label",ns,l(a(t)("admin.settings.siteName")),1),m(e("input",{id:"set-site-name","onUpdate:modelValue":n[0]||(n[0]=r=>o.site_name=r),class:"input",placeholder:"文件快传",maxlength:"64"},null,512),[[g,o.site_name]]),e("p",is,l(a(t)("admin.settings.siteNameHint")),1)]),e("div",os,[e("label",as,l(a(t)("admin.settings.siteDomain")),1),m(e("input",{id:"set-site-domain","onUpdate:modelValue":n[1]||(n[1]=r=>o.site_domain=r),class:"input",placeholder:"https://share.example.com",maxlength:"256"},null,512),[[g,o.site_domain]]),e("p",ls,l(a(t)("admin.settings.siteDomainHint")),1)])]),e("section",rs,[e("h3",ds,l(a(t)("admin.settings.sectionLogo")),1),e("div",us,[e("label",cs,l(a(t)("admin.settings.logoUrl")),1),e("div",_s,[m(e("input",{id:"set-logo-url","onUpdate:modelValue":n[2]||(n[2]=r=>o.logo_url=r),class:"input",placeholder:"https://…/logo.svg"},null,512),[[g,o.logo_url]]),e("button",{class:"btn btn-ghost",type:"button",onClick:n[3]||(n[3]=r=>ae("logo"))},l(a(t)("admin.settings.uploadImage")),1)]),e("p",ms,l(a(t)("admin.settings.logoHint")),1)]),e("div",fs,[e("div",ps,[e("img",{src:o.logo_url||a(c).displayLogoUrl,alt:"Logo preview"},null,8,hs)]),e("div",gs,[M(l(a(t)("admin.settings.navPreview"))+" ",1),e("span",vs,[e("img",{src:o.logo_url||a(c).displayLogoUrl,alt:"",style:{width:"22px",height:"22px","object-fit":"contain"}},null,8,bs),M(" "+l(o.site_name||a(c).displayName),1)])])])]),e("section",ws,[e("h3",ys,l(a(t)("admin.settings.sectionFavicon")),1),e("div",xs,[e("label",ks,l(a(t)("admin.settings.faviconUrl")),1),e("div",Ss,[m(e("input",{id:"set-favicon-url","onUpdate:modelValue":n[4]||(n[4]=r=>o.favicon_url=r),class:"input",placeholder:"https://…/favicon.png"},null,512),[[g,o.favicon_url]]),e("button",{class:"btn btn-ghost",type:"button",onClick:n[5]||(n[5]=r=>ae("favicon"))},l(a(t)("admin.settings.uploadImage")),1)]),e("p",Cs,l(a(t)("admin.settings.faviconHint")),1)]),e("div",Rs,[e("div",Bs,[e("img",{src:o.favicon_url||a(c).displayFaviconUrl,alt:"Favicon preview"},null,8,Vs)]),e("span",Us,l(a(t)("admin.settings.faviconPreviewHint")),1)])]),e("section",$s,[e("h3",Ts,l(a(t)("admin.settings.sectionBackground")),1),e("div",Ms,[e("label",zs,l(a(t)("admin.settings.backgroundUrl")),1),m(e("input",{id:"set-bg-url","onUpdate:modelValue":n[6]||(n[6]=r=>o.background_url=r),class:"input",placeholder:"https://…/bg.jpg",maxlength:_o},null,512),[[g,o.background_url]]),e("p",Fs,l(a(t)("admin.settings.backgroundHint")),1)]),o.background_url.trim()?(w(),y("div",Ns,[e("img",{src:o.background_url,alt:"Background preview",style:{width:"100%",height:"100%","object-fit":"cover"}},null,8,Ps)])):j("",!0)]),e("section",As,[e("h3",Es,l(a(t)("admin.settings.sectionFooter")),1),e("div",Hs,[e("label",Os,l(a(t)("admin.settings.footerText")),1),m(e("textarea",{id:"set-footer-text","onUpdate:modelValue":n[7]||(n[7]=r=>o.footer_text=r),class:"textarea",style:{"min-height":"72px"},maxlength:uo},null,512),[[g,o.footer_text]]),e("p",Ds,l(a(t)("admin.settings.footerTextHint")),1)]),e("div",Is,[e("label",Ls,l(a(t)("admin.settings.footerBeian")),1),m(e("input",{id:"set-footer-beian","onUpdate:modelValue":n[8]||(n[8]=r=>o.footer_beian=r),class:"input",maxlength:co},null,512),[[g,o.footer_beian]]),e("p",Xs,l(a(t)("admin.settings.footerBeianHint")),1)])]),e("section",js,[e("h3",Ks,l(a(t)("admin.settings.sectionNotify")),1),e("div",Ws,[e("label",Ys,l(a(t)("admin.settings.notifyEnabled")),1),Pe(a(Gt),{id:"set-notify-enabled",value:o.notify_enabled,"onUpdate:value":n[9]||(n[9]=r=>o.notify_enabled=r),size:"small"},null,8,["value"])]),e("div",Gs,[e("label",qs,l(a(t)("admin.settings.notifyTitle")),1),m(e("input",{id:"set-notify-title","onUpdate:modelValue":n[10]||(n[10]=r=>o.notify_title=r),class:"input",maxlength:lo},null,512),[[g,o.notify_title]]),e("p",Js,l(a(t)("admin.settings.notifyTitleHint")),1)]),e("div",Zs,[e("label",Qs,l(a(t)("admin.settings.notifyContent")),1),m(e("textarea",{id:"set-notify-content","onUpdate:modelValue":n[11]||(n[11]=r=>o.notify_content=r),class:"textarea",style:{"min-height":"72px"},maxlength:ro},null,512),[[g,o.notify_content]]),e("p",en,l(a(t)("admin.settings.notifyContentHint")),1)])]),e("section",tn,[e("h3",sn,l(a(t)("admin.settings.sectionSavePolicy")),1),e("div",nn,[e("label",on,l(a(t)("admin.settings.maxSaveTime")),1),e("div",an,[m(e("input",{id:"set-max-save-time","onUpdate:modelValue":n[12]||(n[12]=r=>k.value=r),class:"input",type:"number",min:0,step:"1",placeholder:a(t)("admin.settings.saveTimeUnlimited")},null,8,ln),[[g,k.value,void 0,{number:!0}]]),m(e("select",{"onUpdate:modelValue":n[13]||(n[13]=r=>V.value=r),class:"input unit-select","aria-label":"unit"},[e("option",rn,l(a(t)("admin.settings.unitHour")),1),e("option",dn,l(a(t)("admin.settings.unitDay")),1)],512),[[me,V.value]])]),e("p",un,[M(l(a(t)("admin.settings.maxSaveTimeHint"))+" ",1),te.value?(w(),y(J,{key:0},[M(""+l(a(t)("admin.settings.saveTimeUnlimited"))+"",1)],64)):j("",!0)])]),e("div",cn,[e("label",_n,l(a(t)("admin.settings.maxSaveCount")),1),m(e("input",{id:"set-max-save-count","onUpdate:modelValue":n[14]||(n[14]=r=>o.max_save_count=r),class:"input",type:"number",min:0,max:Ue,step:"1"},null,512),[[g,o.max_save_count,void 0,{number:!0}]]),e("p",mn,l(a(t)("admin.settings.maxSaveCountHint",{max:Ue})),1)])]),e("section",fn,[e("h3",pn,l(a(t)("admin.settings.sectionStorage")),1),e("div",hn,[e("label",gn,l(a(t)("admin.settings.maxFileSizeFriendly")),1),e("div",vn,[m(e("input",{id:"set-max-file-size","onUpdate:modelValue":n[15]||(n[15]=r=>T.value=r),class:"input",type:"number",min:0,step:"1",placeholder:a(t)("admin.settings.sizeUnlimited")},null,8,bn),[[g,T.value,void 0,{number:!0}]]),m(e("select",{"onUpdate:modelValue":n[16]||(n[16]=r=>f.value=r),class:"input unit-select","aria-label":"unit"},[e("option",wn,l(a(t)("admin.settings.unitMB")),1),e("option",yn,l(a(t)("admin.settings.unitGB")),1)],512),[[me,f.value]])]),e("p",xn,[M(l(a(t)("admin.settings.maxFileSizeHintV3",{fallback:a(Ie)(a(c).uploadSize)}))+" ",1),se.value?(w(),y(J,{key:0},[M(""+l(a(t)("admin.settings.sizeUnlimited"))+"",1)],64)):(w(),y(J,{key:1},[M(""+l(a(t)("admin.settings.approxSize",{size:a(Ie)(Z(T.value,f.value))}))+"",1)],64))])]),e("div",kn,[e("label",Sn,l(a(t)("admin.settings.allowedFileTypes")),1),m(e("input",{id:"set-allowed-types","onUpdate:modelValue":n[17]||(n[17]=r=>o.allowed_file_types=r),class:"input",placeholder:"jpg, png, pdf / image/*, *"},null,512),[[g,o.allowed_file_types]]),e("p",Cn,l(a(t)("admin.settings.allowedFileTypesHint")),1)])]),e("section",Rn,[e("h3",Bn,l(a(t)("admin.settings.sectionEngine")),1),e("div",Vn,[e("label",null,[M(l(a(t)("admin.settings.engineCurrent"))+": ",1),e("strong",null,l(I.value),1)])]),e("div",Un,[e("label",$n,l(a(t)("admin.settings.sectionEngine")),1),e("div",Tn,[m(e("select",{id:"set-engine-type","onUpdate:modelValue":n[18]||(n[18]=r=>$.value=r),class:"input",style:{flex:"1"}},[e("option",Mn,l(a(t)("admin.settings.engineLocal")),1),e("option",zn,l(a(t)("admin.settings.engineWebdav")),1),e("option",Fn,l(a(t)("admin.settings.engineS3")),1)],512),[[me,$.value]]),e("button",{class:"btn",type:"button",disabled:Y.value,onClick:ke},[Y.value?(w(),y("span",Pn)):j("",!0),M(" "+l(a(t)("admin.settings.engineSwitch")),1)],8,Nn)]),e("p",An,l(a(t)("admin.settings.engineSwitchFail")),1)]),e("h4",En,l(a(t)("admin.settings.engineParamsTitle")),1),$.value==="local"?(w(),y("div",Hn,[e("label",On,l(a(t)("admin.settings.localRoot")),1),m(e("input",{id:"set-local-root","onUpdate:modelValue":n[19]||(n[19]=r=>u.local_storage_path=r),class:"input",placeholder:"/app/data/storage"},null,512),[[g,u.local_storage_path]]),e("p",Dn,l(a(t)("admin.settings.localRootHint")),1)])):j("",!0),$.value==="webdav"?(w(),y(J,{key:1},[e("div",In,[e("label",Ln,l(a(t)("admin.settings.webdavUrl")),1),m(e("input",{id:"set-webdav-url","onUpdate:modelValue":n[20]||(n[20]=r=>u.webdav_url=r),class:"input",placeholder:"https://dav.example.com/dav/"},null,512),[[g,u.webdav_url]]),e("p",Xn,l(a(t)("admin.settings.webdavUrlHint")),1)]),e("div",jn,[e("label",Kn,l(a(t)("admin.settings.webdavRoot")),1),m(e("input",{id:"set-webdav-root","onUpdate:modelValue":n[21]||(n[21]=r=>u.webdav_root_path=r),class:"input",placeholder:"filebox_storage"},null,512),[[g,u.webdav_root_path]]),e("p",Wn,l(a(t)("admin.settings.webdavRootHint")),1)]),e("div",Yn,[e("div",Gn,[e("label",qn,l(a(t)("admin.settings.webdavUser")),1),m(e("input",{id:"set-webdav-user","onUpdate:modelValue":n[22]||(n[22]=r=>u.webdav_username=r),class:"input",autocomplete:"off"},null,512),[[g,u.webdav_username]])]),e("div",Jn,[e("label",Zn,l(a(t)("admin.settings.webdavPass")),1),m(e("input",{id:"set-webdav-pass","onUpdate:modelValue":n[23]||(n[23]=r=>u.webdav_password=r),class:"input",type:"password",autocomplete:"new-password"},null,512),[[g,u.webdav_password]]),e("p",Qn,l(a(t)("admin.settings.secretKeepHint")),1)])])],64)):j("",!0),$.value==="s3"?(w(),y(J,{key:2},[e("div",ei,[e("div",ti,[e("label",si,l(a(t)("admin.settings.s3Endpoint")),1),m(e("input",{id:"set-s3-endpoint","onUpdate:modelValue":n[24]||(n[24]=r=>u.s3_endpoint_url=r),class:"input",placeholder:"https://s3.example.com:9000"},null,512),[[g,u.s3_endpoint_url]]),e("p",ni,l(a(t)("admin.settings.s3EndpointHint")),1)]),e("div",ii,[e("label",oi,l(a(t)("admin.settings.s3Bucket")),1),m(e("input",{id:"set-s3-bucket","onUpdate:modelValue":n[25]||(n[25]=r=>u.s3_bucket_name=r),class:"input",placeholder:"filecodebox"},null,512),[[g,u.s3_bucket_name]])])]),e("div",ai,[e("div",li,[e("label",ri,l(a(t)("admin.settings.s3Region")),1),m(e("input",{id:"set-s3-region","onUpdate:modelValue":n[26]||(n[26]=r=>u.s3_region_name=r),class:"input",placeholder:"auto"},null,512),[[g,u.s3_region_name]])]),e("div",di,[e("label",ui,l(a(t)("admin.settings.s3Style")),1),m(e("select",{id:"set-s3-style","onUpdate:modelValue":n[27]||(n[27]=r=>u.s3_addressing_style=r),class:"input"},[e("option",ci,l(a(t)("admin.settings.styleAuto")),1),e("option",_i,l(a(t)("admin.settings.stylePath")),1),e("option",mi,l(a(t)("admin.settings.styleVirtual")),1)],512),[[me,u.s3_addressing_style]])])]),e("div",fi,[e("div",pi,[e("label",hi,l(a(t)("admin.settings.s3Ak")),1),m(e("input",{id:"set-s3-ak","onUpdate:modelValue":n[28]||(n[28]=r=>u.s3_access_key_id=r),class:"input",autocomplete:"off"},null,512),[[g,u.s3_access_key_id]])]),e("div",gi,[e("label",vi,l(a(t)("admin.settings.s3Sk")),1),m(e("input",{id:"set-s3-sk","onUpdate:modelValue":n[29]||(n[29]=r=>u.s3_secret_access_key=r),class:"input",type:"password",autocomplete:"new-password"},null,512),[[g,u.s3_secret_access_key]]),e("p",bi,l(a(t)("admin.settings.secretKeepHint")),1)])]),e("div",wi,[e("label",yi,l(a(t)("admin.settings.s3Token")),1),m(e("input",{id:"set-s3-token","onUpdate:modelValue":n[30]||(n[30]=r=>u.aws_session_token=r),class:"input",type:"password",autocomplete:"new-password"},null,512),[[g,u.aws_session_token]]),e("p",xi,l(a(t)("admin.settings.secretKeepHint")),1)])],64)):j("",!0),e("div",ki,[e("button",{class:"btn",type:"button",disabled:G.value,onClick:P},[G.value?(w(),y("span",Ci)):j("",!0),M(" "+l(a(t)("admin.settings.engineParamsSave")),1)],8,Si)])]),e("section",Ri,[e("h3",Bi,l(a(t)("admin.settings.sectionUploadRate")),1),e("div",Vi,[e("div",Ui,[e("label",$i,l(a(t)("admin.settings.uploadCount")),1),m(e("input",{id:"set-upload-count","onUpdate:modelValue":n[31]||(n[31]=r=>o.uploadCount=r),class:"input",type:"number",min:1,max:$e,step:"1"},null,512),[[g,o.uploadCount,void 0,{number:!0}]]),e("p",Ti,l(a(t)("admin.settings.uploadCountHint",{max:$e})),1)]),e("div",Mi,[e("label",zi,l(a(t)("admin.settings.uploadMinute")),1),m(e("input",{id:"set-upload-minute","onUpdate:modelValue":n[32]||(n[32]=r=>o.uploadMinute=r),class:"input",type:"number",min:1,max:Te,step:"1"},null,512),[[g,o.uploadMinute,void 0,{number:!0}]]),e("p",Fi,l(a(t)("admin.settings.uploadMinuteHint",{max:Te})),1)])]),e("div",Ni,[e("div",Pi,[e("label",Ai,l(a(t)("admin.settings.uploadRate")),1),e("div",Ei,[m(e("input",{id:"set-upload-rate","onUpdate:modelValue":n[33]||(n[33]=r=>o.uploadRate=r),class:"input",type:"number",min:0,max:fe,step:"1"},null,512),[[g,o.uploadRate,void 0,{number:!0}]]),n[39]||(n[39]=e("span",{class:"unit-suffix"},"MB/s",-1))]),e("p",Hi,l(a(t)("admin.settings.uploadRateHint")),1)]),e("div",Oi,[e("label",Di,l(a(t)("admin.settings.downloadRate")),1),e("div",Ii,[m(e("input",{id:"set-download-rate","onUpdate:modelValue":n[34]||(n[34]=r=>o.downloadRate=r),class:"input",type:"number",min:0,max:fe,step:"1"},null,512),[[g,o.downloadRate,void 0,{number:!0}]]),n[40]||(n[40]=e("span",{class:"unit-suffix"},"MB/s",-1))]),e("p",Li,l(a(t)("admin.settings.downloadRateHint")),1)])])]),e("div",Xi,[e("button",{class:"btn",type:"submit",disabled:R.value},[R.value?(w(),y("span",Ki)):j("",!0),M(" "+l(a(t)("admin.settings.saveAll")),1)],8,ji)]),e("section",Wi,[e("h3",Yi,l(a(t)("admin.settings.sectionPassword")),1),e("p",Gi,l(a(t)("admin.settings.passwordHint")),1),e("form",{onSubmit:De(A,["prevent"])},[e("div",qi,[e("label",Ji,l(a(t)("admin.settings.oldPassword")),1),m(e("input",{id:"pwd-old","onUpdate:modelValue":n[35]||(n[35]=r=>S.old=r),class:"input",type:"password",autocomplete:"current-password"},null,512),[[g,S.old]])]),e("div",Zi,[e("label",Qi,l(a(t)("admin.settings.newPassword")),1),m(e("input",{id:"pwd-new","onUpdate:modelValue":n[36]||(n[36]=r=>S.next=r),class:"input",type:"password",autocomplete:"new-password"},null,512),[[g,S.next]])]),e("div",eo,[e("label",to,l(a(t)("admin.settings.confirmPassword")),1),m(e("input",{id:"pwd-confirm","onUpdate:modelValue":n[37]||(n[37]=r=>S.confirm=r),class:"input",type:"password",autocomplete:"new-password"},null,512),[[g,S.confirm]])]),e("div",so,[e("button",{class:"btn",type:"submit",disabled:ie.value},[ie.value?(w(),y("span",io)):j("",!0),M(" "+l(a(t)("common.save")),1)],8,no)])],32)])],32))]))}}),bo=kt(po,[["__scopeId","data-v-11453c11"]]);export{bo as default};