Files
Nexus/web/app/assets/PushPage-BcIAXgGU.js
T
2026-07-08 22:31:31 +08:00

2 lines
38 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{_ as e,g as t,h as n,m as r,p as i,t as a}from"./VSelect-3h-EI23Y.js";import{n as o,t as s}from"./VRow-qjxp2VJ5.js";import{$ as c,$t as l,Ar as u,Dr as d,Er as f,Gr as p,I as m,L as h,Lr as g,Nn as _,Nr as v,On as y,Or as b,Qr as x,Sn as S,Tr as C,Tt as ee,Wr as w,Xt as T,Yr as E,_i as D,ai as te,b as O,br as ne,h as k,i as re,in as A,jr as j,kr as ie,li as M,nt as ae,q as N,qn as oe,qr as P,qt as se,ri as F,sr as I,ti as ce,u as L,ui as R,v as z,wr as B,wt as le,xi as V,xn as H,xr as U,y as W,yi as G,yn as ue,yr as de,zr as fe}from"./index-a0fi5f-0.js";import{t as K}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as q}from"./useSnackbar-u_XK4ZNm.js";import{n as pe}from"./paginatedFetch-CijkqaDG.js";import{i as J,n as Y,o as X,t as Z}from"./VCard-BwwttBcf.js";import{t as me}from"./VCheckbox-RnLQ4WBr.js";import{g as he,l as ge,t as _e,u as ve}from"./VTextField-GUQr1tUN.js";import{t as ye}from"./VTable-w1sxrmvd.js";import{t as be}from"./VDataTableServer-BysXbZ8p.js";import{a as xe,c as Q,i as Se,n as Ce,o as we,r as Te,s as Ee,t as De}from"./labels-C-A2d08W.js";import{t as Oe}from"./VDialog-BFQGuuXw.js";import{a as ke,i as Ae,n as je,r as Me,t as Ne}from"./usePushStaging-DcgeHeSX.js";import{n as Pe,t as Fe}from"./useServerSearchHistory-CTnIHvTd.js";import{i as Ie}from"./useServerCategories-BcvoZF0H.js";var Le=v({__name:`PushDiagnoseDialog`,props:{modelValue:{type:Boolean},loading:{type:Boolean},result:{},targetName:{}},emits:[`update:modelValue`],setup(e){return(t,n)=>(P(),f(Oe,{"model-value":e.modelValue,"max-width":`520`,"onUpdate:modelValue":n[1]||=e=>t.$emit(`update:modelValue`,e)},{default:F(()=>[j(Z,{border:``},{default:F(()=>[j(J,null,{default:F(()=>[u(`推送失败诊断 — `+V(e.targetName),1)]),_:1}),j(Y,null,{default:F(()=>[e.loading?(P(),f(N,{key:0,indeterminate:``,class:`mb-3`})):e.result?(P(),b(U,{key:1},[j(L,{density:`compact`},{default:F(()=>[j(k,{title:`SSH 连接`},{append:F(()=>[j(c,{color:e.result.ssh_ok?`success`:`error`},{default:F(()=>[u(V(e.result.ssh_ok?`mdi-check`:`mdi-close`),1)]),_:1},8,[`color`])]),_:1}),e.result.disk_avail?(P(),f(k,{key:0,title:`磁盘可用: ${e.result.disk_avail}`},null,8,[`title`])):d(``,!0),e.result.disk_used_pct==null?d(``,!0):(P(),f(k,{key:1,title:`磁盘使用率: ${e.result.disk_used_pct}%`},null,8,[`title`])),j(k,{title:`目标路径存在`},{append:F(()=>[j(c,{color:e.result.path_exists?`success`:`error`},{default:F(()=>[u(V(e.result.path_exists?`mdi-check`:`mdi-close`),1)]),_:1},8,[`color`])]),_:1}),e.result.path_perms?(P(),f(k,{key:2,subtitle:e.result.path_perms,title:`权限`},null,8,[`subtitle`])):d(``,!0),j(k,{title:`目标路径可写`},{append:F(()=>[j(c,{color:e.result.path_writable?`success`:`error`},{default:F(()=>[u(V(e.result.path_writable?`mdi-check`:`mdi-close`),1)]),_:1},8,[`color`])]),_:1})]),_:1}),(P(!0),b(U,null,E(e.result.errors,(e,t)=>(P(),f(m,{key:t,type:`error`,density:`compact`,variant:`tonal`,class:`mt-2`},{default:F(()=>[u(V(D(Q)(e)),1)]),_:2},1024))),128))],64)):d(``,!0)]),_:1}),j(X,null,{default:F(()=>[j(z),j(h,{variant:`text`,onClick:n[0]||=e=>t.$emit(`update:modelValue`,!1)},{default:F(()=>[...n[2]||=[u(`关闭`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`model-value`]))}}),Re=[`title`],ze={class:`text-caption`},Be={class:`text-caption text-medium-emphasis`},Ve=[`title`],He=[`title`],Ue={key:1,class:`text-caption text-medium-emphasis`},We=K(v({__name:`PushHistoryTable`,props:{items:{},headers:{},total:{},loading:{type:Boolean},page:{},statusFilter:{},syncModeFilter:{},serverFilter:{},statusOptions:{},syncModeOptions:{},serverOptions:{},reconciling:{type:Boolean}},emits:[`update:page`,`update:statusFilter`,`update:syncModeFilter`,`update:serverFilter`,`filter-change`,`page-change`,`reconcile`,`diagnose`],setup(e){return(t,n)=>(P(),f(Z,{elevation:`0`,border:``,rounded:`lg`},{default:F(()=>[j(J,{class:`d-flex flex-wrap align-center ga-2`},{default:F(()=>[n[6]||=C(`span`,null,`推送历史`,-1),j(z),j(a,{"model-value":e.statusFilter,items:e.statusOptions,"item-title":`label`,"item-value":`value`,label:`状态`,variant:`outlined`,density:`compact`,"hide-details":``,clearable:``,style:{"max-width":`120px`},"onUpdate:modelValue":n[0]||=e=>{t.$emit(`update:statusFilter`,e),t.$emit(`filter-change`)}},null,8,[`model-value`,`items`]),j(a,{"model-value":e.syncModeFilter,items:e.syncModeOptions,"item-title":`label`,"item-value":`value`,label:`模式`,variant:`outlined`,density:`compact`,"hide-details":``,clearable:``,style:{"max-width":`120px`},"onUpdate:modelValue":n[1]||=e=>{t.$emit(`update:syncModeFilter`,e),t.$emit(`filter-change`)}},null,8,[`model-value`,`items`]),j(a,{"model-value":e.serverFilter,items:e.serverOptions,"item-title":`title`,"item-value":`value`,label:`服务器`,variant:`outlined`,density:`compact`,"hide-details":``,clearable:``,style:{"max-width":`180px`},"onUpdate:modelValue":n[2]||=e=>{t.$emit(`update:serverFilter`,e),t.$emit(`filter-change`)}},null,8,[`model-value`,`items`]),j(h,{size:`small`,variant:`tonal`,"prepend-icon":`mdi-wrench`,loading:e.reconciling,onClick:n[3]||=e=>t.$emit(`reconcile`)},{default:F(()=>[...n[5]||=[u(` 修复卡住记录 `,-1)]]),_:1},8,[`loading`])]),_:1}),j(be,{items:e.items,headers:e.headers,"items-length":e.total,loading:e.loading,page:e.page,"items-per-page":15,hover:``,density:`comfortable`,"onUpdate:page":n[4]||=e=>{t.$emit(`update:page`,e),t.$emit(`page-change`)}},{"item.server_name":F(({item:e})=>[C(`span`,{class:`text-body-2 push-history-server-name`,title:e.server_name??``},V(e.server_name),9,Re)]),"item.status":F(({item:e})=>[j(O,{color:D(Te)(e.status),size:`x-small`,variant:`tonal`,label:``,border:`sm`},{default:F(()=>[u(V(D(Se)(e.status)),1)]),_:2},1032,[`color`])]),"item.sync_mode":F(({item:e})=>[C(`span`,ze,V(D(Ee)(e.sync_mode)),1)]),"item.started_at":F(({item:e})=>[C(`span`,Be,V(D(T)(e.started_at)),1)]),"item.push_permission":F(({item:e})=>[C(`span`,{class:G([`text-caption`,e.push_permission?``:`text-medium-emphasis`]),title:e.push_permission||`本次推送未配置 rsync 属主/权限修正`},V(D(De)(e.push_permission)),11,Ve)]),"item.error_message":F(({item:e})=>[e.error_message?(P(),b(`span`,{key:0,class:`text-caption text-error text-truncate d-inline-block`,style:{"max-width":`200px`},title:D(Q)(e.error_message)},V(D(Q)(e.error_message)),9,He)):(P(),b(`span`,Ue,`—`))]),"item.actions":F(({item:e})=>[e.status===`failed`?(P(),f(h,{key:0,size:`x-small`,variant:`tonal`,"prepend-icon":`mdi-stethoscope`,onClick:n=>t.$emit(`diagnose`,e)},{default:F(()=>[...n[7]||=[u(` 诊断 `,-1)]]),_:1},8,[`onClick`])):d(``,!0)]),"no-data":F(()=>[...n[8]||=[C(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无数据`,-1)]]),_:1},8,[`items`,`headers`,`items-length`,`loading`,`page`])]),_:1}))}}),[[`__scopeId`,`data-v-0faa7c2b`]]),Ge={class:`text-caption text-medium-emphasis`},Ke={key:2,class:`mb-2 text-body-2`},qe=[`title`],Je={key:0,class:`text-error text-caption`},Ye={key:1,class:`text-warning text-caption`},Xe={key:2,class:`text-caption text-medium-emphasis`},Ze=K(v({__name:`PushPreviewDialog`,props:{modelValue:{type:Boolean},loading:{type:Boolean},results:{},selectedCount:{},previewDone:{},previewTotal:{},largeBatch:{type:Boolean},warnThreshold:{},errorCount:{},syncMode:{}},emits:[`update:modelValue`,`confirm-push`],setup(e){return(t,n)=>(P(),f(Oe,{"model-value":e.modelValue,"max-width":`800`,"onUpdate:modelValue":n[2]||=e=>t.$emit(`update:modelValue`,e)},{default:F(()=>[j(Z,{border:``},{default:F(()=>[j(J,{class:`d-flex align-center`},{default:F(()=>[n[3]||=u(` 推送预览 `,-1),j(z),C(`span`,Ge,[e.loading?(P(),b(U,{key:0},[u(V(e.previewDone)+` / `+V(e.previewTotal)+` 台`,1)],64)):(P(),b(U,{key:1},[u(V(e.results.length)+` 台`,1)],64))])]),_:1}),j(Y,null,{default:F(()=>[e.loading?(P(),f(N,{key:0,"model-value":e.previewTotal?Math.round(e.previewDone/e.previewTotal*100):0,class:`mb-3`},null,8,[`model-value`])):d(``,!0),e.largeBatch&&!e.loading?(P(),f(m,{key:1,type:`info`,density:`compact`,variant:`tonal`,class:`mb-2`},{default:F(()=>[u(` 已预览 `+V(e.results.length)+` 台服务器(超过 `+V(e.warnThreshold)+` 台时推送耗时可能较长) `,1)]),_:1})):d(``,!0),e.loading?d(``,!0):(P(),b(`div`,Ke,[n[4]||=u(` 将推送到 `,-1),C(`strong`,null,V(e.selectedCount),1),n[5]||=u(` 台服务器 `,-1)])),e.results.length?(P(),f(ye,{key:3,density:`compact`},{default:F(()=>[n[6]||=C(`thead`,null,[C(`tr`,null,[C(`th`,null,`服务器`),C(`th`,null,`文件数`),C(`th`,null,`预计传输`),C(`th`,null,`大小`),C(`th`,null,`备注`)])],-1),C(`tbody`,null,[(P(!0),b(U,null,E(e.results,t=>(P(),b(`tr`,{key:t.server_id},[C(`td`,null,[C(`span`,{class:`push-preview-server-name`,title:t.server_name},V(t.server_name),9,qe)]),C(`td`,null,V(t.stats?.files_total??`—`),1),C(`td`,null,V(t.stats?.files_transferred??`—`),1),C(`td`,null,V(t.stats?D(Ce)(t.stats.transfer_size_bytes??0):`—`),1),C(`td`,null,[t.error?(P(),b(`span`,Je,V(D(Q)(t.error)),1)):e.syncMode===`full`&&(t.stats?.files_deleted??0)>0?(P(),b(`span`,Ye,`将删除 `+V(t.stats?.files_deleted)+` 个远端文件`,1)):(P(),b(`span`,Xe,`—`))])]))),128))])]),_:1})):d(``,!0),e.errorCount>0&&!e.loading?(P(),f(m,{key:4,type:`warning`,density:`compact`,variant:`tonal`,class:`mt-3`},{default:F(()=>[u(V(e.errorCount)+` 台预览失败,推送时这些服务器可能仍会失败 `,1)]),_:1})):d(``,!0)]),_:1}),j(X,null,{default:F(()=>[j(z),j(h,{variant:`text`,onClick:n[0]||=e=>t.$emit(`update:modelValue`,!1)},{default:F(()=>[...n[7]||=[u(`关闭`,-1)]]),_:1}),j(h,{color:`primary`,variant:`flat`,disabled:e.loading,onClick:n[1]||=e=>t.$emit(`confirm-push`)},{default:F(()=>[...n[8]||=[u(`确认推送`,-1)]]),_:1},8,[`disabled`])]),_:1})]),_:1})]),_:1},8,[`model-value`]))}}),[[`__scopeId`,`data-v-659fdff5`]]),Qe={key:1,class:`text-caption text-medium-emphasis mb-2`},$e={key:0},et=[`title`],tt=K(v({__name:`PushProgressList`,props:{items:{},batchId:{},pushing:{type:Boolean},cancelling:{type:Boolean},retryingAll:{type:Boolean},failedRetryCount:{},doneCount:{},totalProgress:{}},emits:[`cancel`,`retry-all`],setup(e){return(t,n)=>e.items.length>0?(P(),f(Z,{key:0,class:`mb-4`,elevation:`0`,border:``,rounded:`lg`},{default:F(()=>[j(J,{class:`d-flex align-center text-subtitle-1`},{default:F(()=>[n[3]||=u(` 推送进度 `,-1),j(z),e.failedRetryCount>0&&!e.pushing?(P(),f(h,{key:0,size:`small`,variant:`tonal`,color:`warning`,class:`mr-2`,"prepend-icon":`mdi-refresh`,loading:e.retryingAll,onClick:n[0]||=e=>t.$emit(`retry-all`)},{default:F(()=>[u(` 重试全部失败 (`+V(e.failedRetryCount)+`) `,1)]),_:1},8,[`loading`])):d(``,!0),e.batchId&&e.items.some(e=>e.status===`running`||e.status===`pending`)&&e.pushing?(P(),f(h,{key:1,size:`small`,variant:`tonal`,color:`error`,class:`mr-2`,loading:e.cancelling,onClick:n[1]||=e=>t.$emit(`cancel`)},{default:F(()=>[...n[2]||=[u(` 取消推送 `,-1)]]),_:1},8,[`loading`])):d(``,!0),j(O,{size:`small`,variant:`tonal`,color:`primary`},{default:F(()=>[u(V(e.items.filter(e=>e.status===`success`).length)+`/`+V(e.items.length)+` 完成 `,1)]),_:1})]),_:1}),j(W),j(Y,null,{default:F(()=>[e.pushing||e.totalProgress>0?(P(),f(N,{key:0,"model-value":e.totalProgress,color:`primary`,height:`8`,rounded:``,class:`mb-3`},null,8,[`model-value`])):d(``,!0),e.items.length?(P(),b(`div`,Qe,[u(V(e.doneCount)+` / `+V(e.items.length)+` 台已结束 `,1),e.items.some(e=>e.status===`failed`)?(P(),b(`span`,$e,` · `+V(e.items.filter(e=>e.status===`failed`).length)+` 失败 `,1)):d(``,!0)])):d(``,!0),j(L,{density:`compact`},{default:F(()=>[(P(!0),b(U,null,E(e.items,e=>(P(),f(k,{key:e.id},ie({title:F(()=>[C(`span`,{class:`push-progress-name`,title:e.name},V(e.name),9,et)]),append:F(()=>[e.status===`pending`?(P(),f(c,{key:0,color:`grey`},{default:F(()=>[...n[4]||=[u(`mdi-clock-outline`,-1)]]),_:1})):e.status===`running`?(P(),f(c,{key:1,color:`blue`,class:`mdi-spin`},{default:F(()=>[...n[5]||=[u(`mdi-loading`,-1)]]),_:1})):e.status===`success`?(P(),f(c,{key:2,color:`green`},{default:F(()=>[...n[6]||=[u(`mdi-check-circle`,-1)]]),_:1})):e.status===`cancelled`?(P(),f(c,{key:3,color:`grey`},{default:F(()=>[...n[7]||=[u(`mdi-cancel`,-1)]]),_:1})):(P(),f(c,{key:4,color:`red`},{default:F(()=>[...n[8]||=[u(`mdi-alert-circle`,-1)]]),_:1}))]),_:2},[e.detail?{name:`subtitle`,fn:F(()=>[C(`span`,{class:G(e.status===`failed`?`text-error`:`text-medium-emphasis`)},V(e.detail),3)]),key:`0`}:void 0]),1024))),128))]),_:1})]),_:1})]),_:1})):d(``,!0)}}),[[`__scopeId`,`data-v-644b2e4c`]]),nt=`nexus_push_server_view_v1`;function rt(){try{return localStorage.getItem(nt)===`list`?`list`:`grid`}catch{return`grid`}}var it=R(rt());ce(it,e=>{try{localStorage.setItem(nt,e)}catch{}});function at(){return{viewMode:it}}var ot={key:0,class:`text-center text-medium-emphasis py-6`},st={class:`d-flex align-center px-2 mb-2`},ct={class:`text-caption text-medium-emphasis ml-1`},lt={class:`d-flex align-center ga-2 min-w-0`},ut=[`title`],dt=[`title`],ft=[`title`],pt={key:0,class:`text-caption mt-1`},mt=[`onClick`],ht={class:`push-server-list__name-cell`},gt=[`title`],_t=[`title`],vt=[`title`],yt={key:1,class:`text-caption text-medium-emphasis`},bt=K(v({__name:`PushServerGrid`,props:{selectAll:{type:Boolean},serverSearch:{},searchHistory:{},serversLoading:{type:Boolean},serversByCategory:{},selectedIds:{},pushStatus:{},isCategoryAllSelected:{type:Function}},emits:[`update:serverSearch`,`search-commit`,`toggle-all`,`refresh`,`toggle-category`,`toggle-server`],setup(e,{emit:t}){let n=t,{viewMode:r}=at();function i(e){n(`update:serverSearch`,e)}function a(e){let t=[e.name];return e.domain?.trim()&&t.push(e.domain.trim()),t.join(`
`)}return(t,n)=>(P(),f(Z,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4`},{default:F(()=>[j(J,{class:`d-flex align-center flex-wrap ga-2`},{default:F(()=>[j(me,{"model-value":e.selectAll,label:`全选`,density:`compact`,"hide-details":``,class:`mr-2`,"onUpdate:modelValue":n[0]||=e=>t.$emit(`toggle-all`)},null,8,[`model-value`]),j(Pe,{"model-value":e.serverSearch,items:e.searchHistory,"prepend-inner-icon":`mdi-magnify`,label:`搜索服务器...`,density:`compact`,"hide-details":``,variant:`outlined`,rounded:``,clearable:``,"auto-select-first":!1,placeholder:`输入后回车,或从历史选择`,style:{"max-width":`240px`},"onUpdate:modelValue":i,onKeydown:n[1]||=de(ne(e=>t.$emit(`search-commit`),[`prevent`]),[`enter`])},null,8,[`model-value`,`items`]),j(h,{icon:`mdi-refresh`,variant:`text`,size:`small`,loading:e.serversLoading,title:`刷新在线状态`,onClick:n[2]||=e=>t.$emit(`refresh`)},null,8,[`loading`]),j(z),j(ae,{modelValue:D(r),"onUpdate:modelValue":n[3]||=e=>te(r)?r.value=e:null,mandatory:``,density:`compact`,color:`primary`,variant:`outlined`,divided:``},{default:F(()=>[j(h,{value:`grid`,size:`small`,icon:`mdi-view-grid`,title:`卡片视图`}),j(h,{value:`list`,size:`small`,icon:`mdi-view-list`,title:`列表视图`})]),_:1},8,[`modelValue`])]),_:1}),j(W),j(Y,{class:`pa-2`},{default:F(()=>[e.serversByCategory.length===0?(P(),b(`div`,ot,`暂无服务器`)):(P(!0),b(U,{key:1},E(e.serversByCategory,i=>(P(),b(`div`,{key:i.category,class:`mb-4`},[C(`div`,st,[j(h,{size:`x-small`,variant:`text`,color:e.isCategoryAllSelected(i.category)?`primary`:`default`,onClick:e=>t.$emit(`toggle-category`,i.category)},{default:F(()=>[j(c,{size:`16`,class:`mr-1`},{default:F(()=>[u(V(e.isCategoryAllSelected(i.category)?`mdi-checkbox-marked`:`mdi-checkbox-blank-outline`),1)]),_:2},1024),u(` `+V(i.label),1)]),_:2},1032,[`color`,`onClick`]),C(`span`,ct,` (`+V(i.servers.filter(t=>e.selectedIds.has(t.id)).length)+`/`+V(i.servers.length)+`) `,1)]),D(r)===`grid`?(P(),f(s,{key:0,dense:``},{default:F(()=>[(P(!0),b(U,null,E(i.servers,r=>(P(),f(o,{key:r.id,cols:`6`,sm:`4`,md:`3`,lg:`2`},{default:F(()=>[j(Z,{color:e.selectedIds.has(r.id)?`primary`:void 0,variant:e.selectedIds.has(r.id)?`tonal`:`outlined`,rounded:`lg`,class:`pa-3 cursor-pointer push-server-card`,onClick:e=>t.$emit(`toggle-server`,r.id)},{default:F(()=>[C(`div`,lt,[j(c,{color:D(we)(r.is_online),size:`12`,class:`flex-shrink-0`},{default:F(()=>[...n[5]||=[u(`mdi-circle`,-1)]]),_:1},8,[`color`]),C(`span`,{class:`text-body-2 font-weight-medium push-server-card__name`,title:a(r)},V(r.name),9,ut)]),C(`div`,{class:`text-caption text-medium-emphasis push-server-card__line`,title:r.domain||``},V(r.domain),9,dt),C(`div`,{class:`text-caption text-medium-emphasis push-server-card__line`,title:r.target_path||`未配置目标路径`},` → `+V(r.target_path?.trim()||`未配置`),9,ft),e.pushStatus[r.id]?(P(),b(`div`,pt,[j(O,{color:D(xe)(e.pushStatus[r.id]),size:`x-small`,variant:`tonal`,label:``,border:`sm`},{default:F(()=>[u(V(e.pushStatus[r.id]),1)]),_:2},1032,[`color`])])):d(``,!0)]),_:2},1032,[`color`,`variant`,`onClick`])]),_:2},1024))),128))]),_:2},1024)):(P(),f(ye,{key:1,density:`compact`,class:`push-server-list rounded-lg border`},{default:F(()=>[n[7]||=C(`thead`,null,[C(`tr`,null,[C(`th`,{class:`push-server-list__col-check`}),C(`th`,{class:`push-server-list__col-online`}),C(`th`,null,`名称`),C(`th`,null,`域名`),C(`th`,null,`目标路径`),C(`th`,{class:`push-server-list__col-status`},`状态`)])],-1),C(`tbody`,null,[(P(!0),b(U,null,E(i.servers,r=>(P(),b(`tr`,{key:r.id,class:G([`push-server-list__row cursor-pointer`,{"push-server-list__row--selected":e.selectedIds.has(r.id)}]),onClick:e=>t.$emit(`toggle-server`,r.id)},[C(`td`,{onClick:n[4]||=ne(()=>{},[`stop`])},[j(me,{"model-value":e.selectedIds.has(r.id),density:`compact`,"hide-details":``,"onUpdate:modelValue":e=>t.$emit(`toggle-server`,r.id)},null,8,[`model-value`,`onUpdate:modelValue`])]),C(`td`,null,[j(c,{color:D(we)(r.is_online),size:`12`},{default:F(()=>[...n[6]||=[u(`mdi-circle`,-1)]]),_:1},8,[`color`])]),C(`td`,ht,[C(`span`,{title:r.name},V(r.name),9,gt)]),C(`td`,{class:`text-caption text-medium-emphasis push-server-list__ellipsis`,title:r.domain||``},V(r.domain||`—`),9,_t),C(`td`,{class:`text-caption text-medium-emphasis push-server-list__ellipsis`,title:r.target_path||`未配置`},V(r.target_path?.trim()||`未配置`),9,vt),C(`td`,null,[e.pushStatus[r.id]?(P(),f(O,{key:0,color:D(xe)(e.pushStatus[r.id]),size:`x-small`,variant:`tonal`,label:``,border:`sm`},{default:F(()=>[u(V(e.pushStatus[r.id]),1)]),_:2},1032,[`color`])):(P(),b(`span`,yt,`—`))])],10,mt))),128))])]),_:2},1024))]))),128))]),_:1})]),_:1}))}}),[[`__scopeId`,`data-v-41a27b92`]]),xt=_({...r({falseIcon:`$radioOff`,trueIcon:`$radioOn`})},`VRadio`),$=y()({name:`VRadio`,props:xt(),setup(e,{slots:t}){return S(()=>j(i,g(i.filterProps(e),{class:[`v-radio`,e.class],style:e.style,type:`radio`}),t)),{}}}),St=_({height:{type:[Number,String],default:`auto`},...I(ve(),[`direction`]),...I(t(),[`multiple`]),trueIcon:{type:H,default:`$radioOn`},falseIcon:{type:H,default:`$radioOff`},type:{type:String,default:`radio`}},`VRadioGroup`),Ct=y()({name:`VRadioGroup`,inheritAttrs:!1,props:St(),emits:{"update:modelValue":e=>!0},setup(e,{attrs:t,slots:r}){let a=x(),o=B(()=>e.id||`radio-group-${a}`),s=ue(e,`modelValue`),c=R();return S(()=>{let[a,l]=oe(t),u=ge.filterProps(e),d=i.filterProps(e),f=r.label?r.label({label:e.label,props:{for:o.value}}):e.label;return j(ge,g({ref:c,class:[`v-radio-group`,e.class],style:e.style},a,u,{modelValue:s.value,"onUpdate:modelValue":e=>s.value=e,id:o.value}),{...r,default:({id:t,messagesId:i,isDisabled:a,isReadonly:o})=>C(U,null,[f&&j(he,{id:t.value},{default:()=>[f]}),j(n,g(d,{id:t.value,"aria-describedby":i.value,defaultsTarget:`VRadio`,trueIcon:e.trueIcon,falseIcon:e.falseIcon,type:e.type,disabled:a.value,readonly:o.value,"aria-labelledby":f?t.value:void 0,multiple:!1},l,{modelValue:s.value,"onUpdate:modelValue":e=>s.value=e}),r)])})}),re({},c)}}),wt={class:`text-caption text-medium-emphasis mt-1`},Tt=v({__name:`PushSyncModeCard`,props:{syncMode:{},syncModeDesc:{}},emits:[`update:syncMode`],setup(e,{emit:t}){let n=t;function r(e){e!=null&&n(`update:syncMode`,e)}return(t,n)=>(P(),f(Z,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4`},{default:F(()=>[j(J,{class:`text-subtitle-1`},{default:F(()=>[...n[0]||=[u(`同步模式`,-1)]]),_:1}),j(Y,null,{default:F(()=>[j(Ct,{"model-value":e.syncMode,inline:``,density:`compact`,"onUpdate:modelValue":r},{default:F(()=>[j($,{label:`增量同步`,value:`incremental`}),j($,{label:`全量同步`,value:`full`}),j($,{label:`校验和同步`,value:`checksum`})]),_:1},8,[`model-value`]),e.syncMode===`full`?(P(),f(m,{key:0,type:`warning`,density:`compact`,variant:`tonal`,class:`mt-2`},{default:F(()=>[...n[1]||=[u(` 全量同步会删除目标目录中不存在于源目录的文件 `,-1)]]),_:1})):d(``,!0),C(`div`,wt,V(e.syncModeDesc),1)]),_:1})]),_:1}))}}),Et=v({__name:`PushToolbar`,props:{targetPath:{},submitting:{type:Boolean},pushing:{type:Boolean}},emits:[`update:targetPath`,`preview`,`push`],setup(e){return(t,n)=>(P(),f(Z,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4 pa-4`},{default:F(()=>[j(s,{align:`center`,dense:``},{default:F(()=>[j(o,{cols:`12`,sm:`8`},{default:F(()=>[j(_e,{"model-value":e.targetPath,label:`目标路径`,placeholder:`/www/wwwroot`,hint:`留空则使用下方各服务器配置的路径;填写则统一覆盖所有选中服务器`,"persistent-hint":``,variant:`outlined`,density:`compact`,"prepend-inner-icon":`mdi-folder-marker`,clearable:``,"onUpdate:modelValue":n[0]||=e=>t.$emit(`update:targetPath`,e??``)},null,8,[`model-value`])]),_:1}),j(o,{cols:`12`,sm:`4`,class:`d-flex ga-2 justify-end`},{default:F(()=>[j(h,{size:`small`,variant:`tonal`,"prepend-icon":`mdi-eye`,onClick:n[1]||=e=>t.$emit(`preview`)},{default:F(()=>[...n[3]||=[u(`预览`,-1)]]),_:1}),j(h,{size:`small`,color:`primary`,variant:`flat`,"prepend-icon":`mdi-upload`,loading:e.submitting,disabled:e.pushing,onClick:n[2]||=e=>t.$emit(`push`)},{default:F(()=>[...n[4]||=[u(` 推送 `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),_:1})]),_:1}))}}),Dt=[`success`,`failed`,`cancelled`],Ot=5;function kt(e){let t=R([]),n=R(!1),r=R(``),i=R(new Set),{items:a,loadHistoryOnly:o,record:s}=Fe(`push`),c=B(()=>a.value.slice(0,Ot));function l(){s(r.value)}function u(e){if(r.value=e??``,e==null||e===``){s(``);return}let t=String(e).trim();a.value.includes(t)&&(r.value=t,s(t))}async function d(){await o()}let f=null;async function p(e=!1){e||(n.value=!0);try{t.value=(await pe(`/servers/`,{sort_by:`created_at`,sort_order:`desc`},1,-1)).items}catch{t.value=[]}finally{e||(n.value=!1)}}function m(e){h(),f=setInterval(()=>{p(!0)},3e4)}function h(){f&&=(clearInterval(f),null)}let g=B(()=>{if(!r.value)return t.value;let e=r.value.toLowerCase();return t.value.filter(t=>t.name.toLowerCase().includes(e)||(t.domain||``).toLowerCase().includes(e)||(t.target_path||``).toLowerCase().includes(e))}),_=B(()=>{let e=g.value;return e.length>0&&e.every(e=>i.value.has(e.id))}),v=B(()=>Ie(g.value));function y(e){let t=v.value.find(t=>t.category===e);return!t||t.servers.length===0?!1:t.servers.every(e=>i.value.has(e.id))}function b(e){let t=v.value.find(t=>t.category===e);if(!t)return;let n=new Set(i.value),r=t.servers.every(e=>n.has(e.id));for(let e of t.servers)r?n.delete(e.id):n.add(e.id);i.value=n}function x(e){let t=new Set(i.value);t.has(e)?t.delete(e):t.add(e),i.value=t}function S(){let e=g.value,t=e.length>0&&e.every(e=>i.value.has(e.id)),n=new Set(i.value);for(let r of e)t?n.delete(r.id):n.add(r.id);i.value=n}return{servers:t,serversLoading:n,serverSearch:r,serverSearchHistory:c,selectedIds:i,pushStatus:e,filteredServers:g,selectAll:_,serversByCategory:v,loadServers:p,loadSearchHistory:d,commitServerSearch:l,onServerSearchUpdate:u,startAutoRefresh:m,stopAutoRefresh:h,isCategoryAllSelected:y,toggleCategory:b,toggleServer:x,toggleAll:S}}function At(){return crypto.randomUUID().replace(/-/g,``).slice(0,12)}function jt(e,t,n){let r=q(),i=l(),{playPushCompleteSound:a}=ee(),o=R(!1),s=R(!1),c=R(!1),u=R(!1),d=R([]),f=R(``),p=R(null),m=[],h=B(()=>d.value.filter(e=>Dt.includes(e.status)).length),g=B(()=>{let e=d.value.length;return e?Math.round(h.value/e*100):0});function _(){m.forEach(e=>clearTimeout(e)),m.length=0}function v(){let e=d.value.length;if(!e||!o.value||d.value.filter(e=>Dt.includes(e.status)).length<e)return;o.value=!1,S(),n();let t=d.value.filter(e=>e.status===`failed`).length,i=d.value.filter(e=>e.status===`cancelled`).length,s=d.value.filter(e=>e.status===`success`).length;r(`推送完成:${s} 成功,${t} 失败${i?`${i} 取消`:``}`),s>0&&a()}function y(e){if(e.type!==`sync_progress`||e.batch_id!==f.value||e.server_id==null)return;let n=d.value.findIndex(t=>t.id===e.server_id);if(n===-1)return;let r=d.value[n],i=e.status;if(i===`running`)r.status=`running`,r.detail=`同步中...`;else if(i===`success`){r.status=`success`;let n=e.duration_seconds;r.detail=n==null?`完成`:`完成(${n}s`,t.pushStatus.value[e.server_id]=`成功`}else i===`failed`?(r.status=`failed`,r.detail=Q(e.error_message)||`失败`,e.retry_job_id!=null&&(r.retryJobId=e.retry_job_id),t.pushStatus.value[e.server_id]=`失败`):i===`cancelled`&&(r.status=`cancelled`,r.detail=Q(e.error_message)||`已取消`,t.pushStatus.value[e.server_id]=`已取消`);v()}function b(e){let n=e.results;if(n){for(let[e,r]of Object.entries(n)){let n=Number(e);if(!Number.isFinite(n))continue;let i=d.value.findIndex(e=>e.id===n);if(i===-1)continue;let a=d.value[i],o=r.status;if(o===`success`){a.status=`success`;let e=r.duration_seconds;a.detail=e==null?`完成`:`完成(${e}s`,t.pushStatus.value[n]=`成功`}else o===`failed`?(a.status=`failed`,a.detail=Q(r.error_message)||`失败`,r.retry_job_id!=null&&(a.retryJobId=r.retry_job_id),t.pushStatus.value[n]=`失败`):o===`cancelled`&&(a.status=`cancelled`,a.detail=Q(r.error_message)||`已取消`,t.pushStatus.value[n]=`已取消`)}v()}}function x(){if(!i.token)return Promise.reject(Error(`未登录,无法连接推送进度`));S();let e=se(`/ws/sync`,{token:i.token}),a=new WebSocket(e);return new Promise((e,s)=>{let c=!1,l=e=>{c||(c=!0,s(Error(e)))};a.onopen=()=>{c||(c=!0,e())},a.onerror=()=>{},a.onmessage=e=>{if(e.data!==`pong`)try{let t=JSON.parse(e.data);if(t.type===`ping`){a.send(`pong`);return}y(t)}catch{}},a.onclose=e=>{if(p.value=null,e.code===4001||e.code===4401){c||(c=!0,i.forceLogout(),s(Error(`登录已过期,请重新登录`)));return}if(!c){l(`推送进度 WebSocket 连接失败${e.code===1006?`(网络或反代未正确转发 WebSocket,请强刷后重试)`:e.code?`(关闭码 ${e.code}`:``}`);return}e.code!==1e3&&o.value&&(d.value.forEach(e=>{(e.status===`pending`||e.status===`running`)&&(e.status=`failed`,e.detail=`连接中断`,t.pushStatus.value[e.id]=`失败`)}),o.value=!1,r(`推送进度连接中断,部分服务器状态未知`,`warning`),n())},p.value=a})}function S(){p.value&&=(p.value.close(1e3),null)}async function C(){if(f.value){c.value=!0;try{await A.post(`/sync/cancel`,{batch_id:f.value}),d.value.forEach(e=>{(e.status===`pending`||e.status===`running`)&&(e.status=`cancelled`,e.detail=`已取消`,t.pushStatus.value[e.id]=`已取消`)}),o.value=!1,S(),n(),r(`推送已取消`)}catch(e){r(e instanceof Error?e.message:`取消失败`,`error`)}finally{c.value=!1}}}async function w(){if(o.value||s.value)return;let i=[...t.selectedIds.value].map(e=>t.servers.value.find(t=>t.id===e)).filter(e=>e!=null);if(!e.validateForm(i.length,i))return;_(),S(),f.value=``,t.pushStatus.value={};let a=i.map(e=>e.id);d.value=a.map(e=>({id:e,name:t.servers.value.find(t=>t.id===e)?.name||`#${e}`,status:`pending`})),o.value=!0,s.value=!0,f.value=At();try{await x();let t=await A.post(`/sync/files`,{source_path:e.effectiveSourcePath(),target_path:e.effectiveTargetPath(),server_ids:a,sync_mode:e.syncMode.value,batch_id:f.value});t.batch_id&&t.batch_id!==f.value&&(f.value=t.batch_id),t.accepted?le(`推送已提交(${a.length} 台),请在下方查看进度`):b(t)}catch(e){S();let t=e instanceof Error?e.message:`推送请求失败`;d.value.forEach(e=>{e.status=`failed`,e.detail=t}),o.value=!1,r(t,`error`),n();return}finally{s.value=!1}let c=setTimeout(()=>{o.value&&(d.value.forEach(e=>{(e.status===`pending`||e.status===`running`)&&(e.status=`failed`,e.detail=`等待超时`,t.pushStatus.value[e.id]=`失败`)}),o.value=!1,S(),n(),r(`推送超时,${h.value}/${d.value.length} 台已有结果`,`warning`))},3e5);m.push(c)}let T=B(()=>d.value.filter(e=>e.status===`failed`&&e.retryJobId!=null).length);async function E(){let e=d.value.filter(e=>e.status===`failed`&&e.retryJobId!=null).map(e=>e.retryJobId);if(!e.length){r(`没有可重试的失败任务(重试任务可能尚未创建)`,`warning`);return}u.value=!0;let t=0,n=0;try{for(let r of e)try{await A.post(`/retries/${r}/retry`),t++}catch{n++}r(n>0?`已提交 ${t} 个重试,${n} 个提交失败`:`已提交 ${t} 个失败服务器的重试任务`)}finally{u.value=!1}}function D(){S(),_()}return{pushing:o,submitting:s,cancelling:c,retryingAll:u,wsProgressItems:d,pushBatchId:f,doneCount:h,totalProgress:g,failedRetryCount:T,doPush:w,cancelPush:C,retryAllFailed:E,dispose:D}}function Mt(e,t){let n=R(!1),r=R([]),i=R(!1),a=R(0),o=R(0),s=B(()=>a.value>30),c=B(()=>r.value.filter(e=>e.error).length);async function l(t,n){try{let r=await A.post(`/sync/preview`,{source_path:e.effectiveSourcePath(),target_path:e.effectiveTargetPath(),server_id:t,sync_mode:e.syncMode.value});return r.error?{server_id:t,server_name:n,error:r.error}:{server_id:t,server_name:r.server_name||n,stats:r.stats}}catch(e){return{server_id:t,server_name:n,error:e instanceof Error?e.message:`预览失败`}}}async function u(){let s=[...t.selectedIds.value].map(e=>t.servers.value.find(t=>t.id===e)).filter(e=>e!=null);if(!e.validateForm(s.length,s))return;let c=s.map(e=>e.id);a.value=c.length,o.value=0,n.value=!0,i.value=!0,r.value=[];let u=c.map(e=>({id:e,name:t.servers.value.find(t=>t.id===e)?.name||`#${e}`}));for(let e=0;e<u.length;e+=4){let t=u.slice(e,e+4),n=await Promise.all(t.map(e=>l(e.id,e.name)));r.value=[...r.value,...n],o.value=r.value.length}i.value=!1}function d(){n.value=!1}function f(e){n.value=!1,e()}return{showPreview:n,previewResults:r,previewLoading:i,previewTotal:a,previewDone:o,previewLargeBatch:s,previewWarnThreshold:30,previewErrorCount:c,doPreview:u,closePreview:d,confirmAndPush:f}}var Nt=[{label:`成功`,value:`success`},{label:`失败`,value:`failed`},{label:`进行中`,value:`running`},{label:`已取消`,value:`cancelled`}],Pt=[{label:`增量`,value:`incremental`},{label:`全量`,value:`full`},{label:`校验和`,value:`checksum`}],Ft=[{title:`时间`,key:`started_at`,width:170},{title:`服务器`,key:`server_name`,width:200},{title:`状态`,key:`status`,width:88},{title:`模式`,key:`sync_mode`,width:88},{title:`源路径`,key:`source_path`},{title:`目标路径`,key:`target_path`},{title:`权限`,key:`push_permission`,width:140},{title:`错误`,key:`error_message`,width:200},{title:`操作`,key:`actions`,width:88,sortable:!1}];function It(e,t){let n=q(),r=R([]),i=R(0),a=R(!1),o=R(1),s=R(null),c=R(null),l=R(null),u=R(!1),d=R(!1),f=R(!1),p=R(null),m=R(null),h=B(()=>t.servers.value.map(e=>({title:e.name,value:e.id})));function g(){o.value=1,_()}async function _(e=!1){e||(a.value=!0);try{let e={page:o.value,per_page:15};s.value&&(e.status=s.value),c.value&&(e.sync_mode=c.value),l.value!=null&&(e.server_id=l.value);let t=await A.get(`/servers/logs`,e);r.value=t.items||[],i.value=t.total||0}catch{r.value=[],i.value=0}finally{e||(a.value=!1)}}async function v(){u.value=!0;try{let e=(await A.post(`/sync/reconcile-stale-logs`,{max_age_minutes:15})).reconciled??0;n(e>0?`已订正 ${e} 条卡住的推送记录`:`没有需要订正的记录`),await _()}catch(e){n(e instanceof Error?e.message:`订正失败`,`error`)}finally{u.value=!1}}async function y(t){m.value=t,p.value=null,d.value=!0,f.value=!0;try{p.value=await A.post(`/sync/diagnose`,{server_id:t.server_id,target_path:t.target_path||e.targetPath.value||void 0})}catch(e){n(e instanceof Error?e.message:`诊断失败`,`error`),d.value=!1}finally{f.value=!1}}function b(){d.value=!1}return{logs:r,logTotal:i,logLoading:a,logPage:o,logStatusFilter:s,logSyncModeFilter:c,logServerFilter:l,reconcilingLogs:u,logStatusOptions:Nt,logSyncModeOptions:Pt,logHeaders:Ft,logServerOptions:h,showDiagnose:d,diagnoseLoading:f,diagnoseResult:p,diagnoseTarget:m,onLogFilterChange:g,loadLogs:_,reconcileStaleLogs:v,openDiagnose:y,closeDiagnose:b}}function Lt(){let e=je(),t=Ne(e.uploadedSource),n=kt(R({})),r=It(e,n),i=jt(e,n,()=>r.loadLogs()),a=Mt(e,n);function o(){a.confirmAndPush(()=>i.doPush())}let s=!1;function c(e=!1){e?(n.loadServers(!0),r.loadLogs(!0)):(n.loadServers(),r.loadLogs())}return w(()=>{c(!1),n.loadSearchHistory(),n.startAutoRefresh(()=>i.pushing.value),s=!0}),fe(()=>{s&&c(!0)}),p(()=>{i.dispose(),n.stopAutoRefresh()}),{form:M(e),staging:M(t),servers:M(n),progress:M(i),preview:M(a),logs:M(r),onConfirmAndPush:o}}var Rt=v({name:`PushPage`,__name:`PushPage`,setup(t){let{form:n,staging:r,servers:i,progress:a,preview:o,logs:s,onConfirmAndPush:c}=Lt();return(t,l)=>(P(),f(e,{fluid:``,class:`pa-6`},{default:F(()=>[j(Me,{"uploaded-source":D(n).uploadedSource,"validated-source":D(n).validatedSource,"source-path":D(n).sourcePath,"onUpdate:sourcePath":l[0]||=e=>D(n).sourcePath=e,"source-path-validating":D(n).sourcePathValidating,"is-dragging":D(n).isDragging,"source-uploading":D(n).sourceUploading,onDragover:l[1]||=e=>D(n).isDragging=!0,onDragleave:l[2]||=e=>D(n).isDragging=!1,onDrop:D(n).handleFileDrop,onFileSelect:D(n).handleFileSelect,onZipExtractSelect:D(n).handleZipExtractSelect,onClear:D(n).clearUploadedSource,onClearValidated:D(n).clearValidatedSource,onValidate:D(n).validateSourcePath},null,8,[`uploaded-source`,`validated-source`,`source-path`,`source-path-validating`,`is-dragging`,`source-uploading`,`onDrop`,`onFileSelect`,`onZipExtractSelect`,`onClear`,`onClearValidated`,`onValidate`]),D(n).uploadedSource?(P(),f(ke,{key:0,"root-path":D(n).uploadedSource.sourcePath,"relative-path":D(r).relativePath,entries:D(r).entries,loading:D(r).loading,"selected-count":D(r).selectedCount,"all-selected":D(r).allSelected,"some-selected":D(r).someSelected,"is-selected":D(r).isSelected,"rename-open":D(r).renameOpen,"onUpdate:renameOpen":l[3]||=e=>D(r).renameOpen=e,"rename-value":D(r).renameValue,"onUpdate:renameValue":l[4]||=e=>D(r).renameValue=e,"rename-loading":D(r).renameLoading,"delete-open":D(r).deleteOpen,"onUpdate:deleteOpen":l[5]||=e=>D(r).deleteOpen=e,"delete-targets":D(r).deleteTargets,"delete-loading":D(r).deleteLoading,onRefresh:l[6]||=e=>D(r).refreshCurrent(),onGoRoot:D(r).goRoot,onOpenDir:D(r).openDirectory,onPreview:D(r).previewFile,onRename:D(r).openRename,onDelete:D(r).openDelete,onBatchDelete:D(r).openBatchDelete,onToggleSelect:D(r).toggleSelect,onToggleSelectAll:D(r).toggleSelectAll,onConfirmRename:D(r).confirmRename,onConfirmDelete:D(r).confirmDelete},null,8,[`root-path`,`relative-path`,`entries`,`loading`,`selected-count`,`all-selected`,`some-selected`,`is-selected`,`rename-open`,`rename-value`,`rename-loading`,`delete-open`,`delete-targets`,`delete-loading`,`onGoRoot`,`onOpenDir`,`onPreview`,`onRename`,`onDelete`,`onBatchDelete`,`onToggleSelect`,`onToggleSelectAll`,`onConfirmRename`,`onConfirmDelete`])):d(``,!0),j(Ae,{modelValue:D(r).previewOpen,"onUpdate:modelValue":l[7]||=e=>D(r).previewOpen=e,loading:D(r).previewLoading,result:D(r).previewResult},null,8,[`modelValue`,`loading`,`result`]),j(Et,{"target-path":D(n).targetPath,"onUpdate:targetPath":l[8]||=e=>D(n).targetPath=e,submitting:D(a).submitting,pushing:D(a).pushing,onPreview:D(o).doPreview,onPush:D(a).doPush},null,8,[`target-path`,`submitting`,`pushing`,`onPreview`,`onPush`]),j(bt,{"select-all":D(i).selectAll,"server-search":D(i).serverSearch,"search-history":D(i).serverSearchHistory,"servers-loading":D(i).serversLoading,"servers-by-category":D(i).serversByCategory,"selected-ids":D(i).selectedIds,"push-status":D(i).pushStatus,"is-category-all-selected":D(i).isCategoryAllSelected,"onUpdate:serverSearch":D(i).onServerSearchUpdate,onSearchCommit:D(i).commitServerSearch,onToggleAll:D(i).toggleAll,onRefresh:D(i).loadServers,onToggleCategory:D(i).toggleCategory,onToggleServer:D(i).toggleServer},null,8,[`select-all`,`server-search`,`search-history`,`servers-loading`,`servers-by-category`,`selected-ids`,`push-status`,`is-category-all-selected`,`onUpdate:serverSearch`,`onSearchCommit`,`onToggleAll`,`onRefresh`,`onToggleCategory`,`onToggleServer`]),j(Tt,{"sync-mode":D(n).syncMode,"onUpdate:syncMode":l[9]||=e=>D(n).syncMode=e,"sync-mode-desc":D(n).syncModeDesc},null,8,[`sync-mode`,`sync-mode-desc`]),j(tt,{items:D(a).wsProgressItems,"batch-id":D(a).pushBatchId,pushing:D(a).pushing,cancelling:D(a).cancelling,"retrying-all":D(a).retryingAll,"failed-retry-count":D(a).failedRetryCount,"done-count":D(a).doneCount,"total-progress":D(a).totalProgress,onCancel:D(a).cancelPush,onRetryAll:D(a).retryAllFailed},null,8,[`items`,`batch-id`,`pushing`,`cancelling`,`retrying-all`,`failed-retry-count`,`done-count`,`total-progress`,`onCancel`,`onRetryAll`]),j(Ze,{modelValue:D(o).showPreview,"onUpdate:modelValue":l[10]||=e=>D(o).showPreview=e,loading:D(o).previewLoading,results:D(o).previewResults,"selected-count":D(i).selectedIds.size,"preview-done":D(o).previewDone,"preview-total":D(o).previewTotal,"large-batch":D(o).previewLargeBatch,"warn-threshold":D(o).previewWarnThreshold,"error-count":D(o).previewErrorCount,"sync-mode":D(n).syncMode,onConfirmPush:D(c)},null,8,[`modelValue`,`loading`,`results`,`selected-count`,`preview-done`,`preview-total`,`large-batch`,`warn-threshold`,`error-count`,`sync-mode`,`onConfirmPush`]),j(Le,{modelValue:D(s).showDiagnose,"onUpdate:modelValue":l[11]||=e=>D(s).showDiagnose=e,loading:D(s).diagnoseLoading,result:D(s).diagnoseResult,"target-name":D(s).diagnoseTarget?.server_name??void 0},null,8,[`modelValue`,`loading`,`result`,`target-name`]),j(We,{items:D(s).logs,headers:D(s).logHeaders,total:D(s).logTotal,loading:D(s).logLoading,page:D(s).logPage,"onUpdate:page":l[12]||=e=>D(s).logPage=e,"status-filter":D(s).logStatusFilter,"onUpdate:statusFilter":l[13]||=e=>D(s).logStatusFilter=e,"sync-mode-filter":D(s).logSyncModeFilter,"onUpdate:syncModeFilter":l[14]||=e=>D(s).logSyncModeFilter=e,"server-filter":D(s).logServerFilter,"onUpdate:serverFilter":l[15]||=e=>D(s).logServerFilter=e,"status-options":D(s).logStatusOptions,"sync-mode-options":D(s).logSyncModeOptions,"server-options":D(s).logServerOptions,reconciling:D(s).reconcilingLogs,onFilterChange:D(s).onLogFilterChange,onPageChange:D(s).loadLogs,onReconcile:D(s).reconcileStaleLogs,onDiagnose:D(s).openDiagnose},null,8,[`items`,`headers`,`total`,`loading`,`page`,`status-filter`,`sync-mode-filter`,`server-filter`,`status-options`,`sync-mode-options`,`server-options`,`reconciling`,`onFilterChange`,`onPageChange`,`onReconcile`,`onDiagnose`])]),_:1}))}});export{Rt as default};