import{g as R,p as I,u as F,t as H,L as D,c as j,a as z,ai as U,f as $,a8 as J,j as K,k as t,T as O,m as G,v as Y,N as q,_ as N,A as u,D as o,E as a,G as l,$ as p,J as i,V as f,B as S,K as h,F as T,H as M,I as L}from"./index-8poTKozu.js";import{a as Q,b as v,V as C,g as A,e as _,d as X}from"./VRow-NdBw-Mb_.js";import{V as Z,a as ee,c as se,d as ae,f as te,g as re}from"./VList-Cry1xU1c.js";import{V as x,a as le,b as ne,c as ie,d as oe}from"./VExpansionPanels-DVSVH1dW.js";import"./ssrBoot-pSHlH0et.js";const ce={actions:"button@2",article:"heading, paragraph",avatar:"avatar",button:"button",card:"image, heading","card-avatar":"image, list-item-avatar",chip:"chip","date-picker":"list-item, heading, divider, date-picker-options, date-picker-days, actions","date-picker-options":"text, avatar@2","date-picker-days":"avatar@28",divider:"divider",heading:"heading",image:"image","list-item":"text","list-item-avatar":"avatar, text","list-item-two-line":"sentences","list-item-avatar-two-line":"avatar, sentences","list-item-three-line":"paragraph","list-item-avatar-three-line":"avatar, paragraph",ossein:"ossein",paragraph:"text@3",sentences:"text@2",subtitle:"text",table:"table-heading, table-thead, table-tbody, table-tfoot","table-heading":"chip, text","table-thead":"heading@6","table-tbody":"table-row-divider@6","table-row-divider":"table-row, divider","table-row":"text@6","table-tfoot":"text@2, avatar@2",text:"text"};function de(s){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return t("div",{class:["v-skeleton-loader__bone",`v-skeleton-loader__${s}`]},[e])}function W(s){const[e,r]=s.split("@");return Array.from({length:r}).map(()=>k(e))}function k(s){let e=[];if(!s)return e;const r=ce[s];if(s!==r){if(s.includes(","))return E(s);if(s.includes("@"))return W(s);r.includes(",")?e=E(r):r.includes("@")?e=W(r):r&&e.push(k(r))}return[de(s,e)]}function E(s){return s.replace(/\s/g,"").split(",").map(k)}const ue=I({boilerplate:Boolean,color:String,loading:Boolean,loadingText:{type:String,default:"$vuetify.loading"},type:{type:[String,Array],default:"ossein"},...q(),...Y(),...G()},"VSkeletonLoader"),me=R()({name:"VSkeletonLoader",props:ue(),setup(s,e){let{slots:r}=e;const{backgroundColorClasses:m,backgroundColorStyles:n}=F(H(s,"color")),{dimensionStyles:d}=D(s),{elevationClasses:c}=j(s),{themeClasses:g}=z(s),{t:y}=U(),w=$(()=>k(J(s.type).join(",")));return K(()=>{var V;const b=!r.default||s.loading,B=s.boilerplate||!b?{}:{ariaLive:"polite",ariaLabel:y(s.loadingText),role:"alert"};return t("div",O({class:["v-skeleton-loader",{"v-skeleton-loader--boilerplate":s.boilerplate},g.value,m.value,c.value],style:[n.value,b?d.value:{}]},B),[b?w.value:(V=r.default)==null?void 0:V.call(r)])}),{}}}),ge={name:"CacheManager",data(){return{caches:[],loading:!1,serviceWorkerActive:!1,message:"",messageType:"info"}},mounted(){this.checkServiceWorker()},methods:{checkServiceWorker(){"serviceWorker"in navigator?navigator.serviceWorker.ready.then(()=>{this.serviceWorkerActive=!0,this.refreshCaches()}).catch(()=>{this.serviceWorkerActive=!1}):this.serviceWorkerActive=!1},async refreshCaches(){if(this.serviceWorkerActive){this.loading=!0,this.message="",this.caches=[];try{const s=await this.sendMessageToSW({type:"CACHE_KEYS"});for(const e of s.cacheNames){const r=await this.sendMessageToSW({type:"CACHE_CONTENT",cacheName:e});this.caches.push({name:e,urls:r.urls||[]})}}catch(s){this.showMessage("获取缓存信息失败: "+s.message,"error")}finally{this.loading=!1}}},async clearCache(s){this.loading=!0;try{(await this.sendMessageToSW({type:"CLEAR_CACHE",cacheName:s})).success?(this.showMessage(`已清除缓存: ${this.formatCacheName(s)}`,"success"),await this.refreshCaches()):this.showMessage("清除缓存失败","error")}catch(e){this.showMessage("清除缓存失败: "+e.message,"error")}finally{this.loading=!1}},async clearUrl(s,e){this.loading=!0;try{(await this.sendMessageToSW({type:"CLEAR_URL",cacheName:s,url:e})).success?(this.showMessage(`已从缓存中删除: ${this.getFileName(e)}`,"success"),await this.refreshCaches()):this.showMessage("删除缓存项失败","error")}catch(r){this.showMessage("删除缓存项失败: "+r.message,"error")}finally{this.loading=!1}},async clearAllCaches(){if(confirm("确定要清除所有缓存吗?这可能会导致应用需要重新下载资源。")){this.loading=!0;try{(await this.sendMessageToSW({type:"CLEAR_ALL_CACHES"})).success?(this.showMessage("已清除所有缓存","success"),await this.refreshCaches()):this.showMessage("清除所有缓存失败","error")}catch(s){this.showMessage("清除所有缓存失败: "+s.message,"error")}finally{this.loading=!1}}},sendMessageToSW(s){return new Promise((e,r)=>{if(!navigator.serviceWorker.controller){r(new Error("Service Worker 未控制页面"));return}const m=new MessageChannel;m.port1.onmessage=n=>{e(n.data)},navigator.serviceWorker.controller.postMessage(s,[m.port2]),setTimeout(()=>{r(new Error("Service Worker 响应超时"))},5e3)})},formatCacheName(s){return s.replace("workbox-precache-","预缓存-").replace("-cache","").replace("js","JS").replace("css","CSS").replace("html","HTML").replace("images","图片").replace("external-resources","外部资源").replace("cdn-cgi","CDN")},getFileName(s){try{const e=new URL(s),r=e.pathname.split("/");return r[r.length-1]||e.hostname}catch(e){return console.error("获取文件名失败:",e),s}},showMessage(s,e="info"){this.message=s,this.messageType=e,setTimeout(()=>{this.message===s&&(this.message="")},5e3)}}},fe={class:"d-flex align-center"},he={class:"d-flex justify-end mb-2"};function pe(s,e,r,m,n,d){return o(),u(C,null,{default:a(()=>[t(Q,{class:"d-flex align-center"},{default:a(()=>[e[2]||(e[2]=l("span",null,"缓存管理",-1)),t(Z),t(p,{color:"error",onClick:d.clearAllCaches,loading:n.loading},{default:a(()=>e[0]||(e[0]=[i(" 清除所有缓存 ")])),_:1},8,["onClick","loading"]),t(p,{icon:"",class:"ml-2",onClick:d.refreshCaches},{default:a(()=>[t(f,null,{default:a(()=>e[1]||(e[1]=[i("mdi-refresh")])),_:1})]),_:1},8,["onClick"])]),_:1}),t(v,null,{default:a(()=>[n.serviceWorkerActive?S("",!0):(o(),u(x,{key:0,type:"warning",class:"mb-4"},{default:a(()=>e[3]||(e[3]=[i(" Service Worker 未激活,缓存管理功能不可用。 ")])),_:1})),n.message?(o(),u(x,{key:1,type:n.messageType,class:"mb-4"},{default:a(()=>[i(h(n.message),1)]),_:1},8,["type"])):S("",!0),n.caches.length>0?(o(),u(le,{key:2},{default:a(()=>[(o(!0),T(M,null,L(n.caches,c=>(o(),u(ne,{key:c.name},{default:a(()=>[t(ie,null,{default:a(()=>[l("div",fe,[l("span",null,h(d.formatCacheName(c.name)),1),t(ee,{class:"ml-2",size:"small"},{default:a(()=>[i(h(c.urls.length)+" 个文件",1)]),_:2},1024)])]),_:2},1024),t(oe,null,{default:a(()=>[l("div",he,[t(p,{color:"error",size:"small",onClick:g=>d.clearCache(c.name),loading:n.loading},{default:a(()=>e[4]||(e[4]=[i(" 清除此缓存 ")])),_:2},1032,["onClick","loading"])]),t(se,{lines:"two"},{default:a(()=>[(o(!0),T(M,null,L(c.urls,(g,y)=>(o(),u(ae,{key:y},{append:a(()=>[t(p,{icon:"",size:"small",color:"error",onClick:w=>d.clearUrl(c.name,g)},{default:a(()=>[t(f,null,{default:a(()=>e[5]||(e[5]=[i("mdi-delete")])),_:1})]),_:2},1032,["onClick"])]),default:a(()=>[t(te,{class:"text-truncate"},{default:a(()=>[i(h(d.getFileName(g)),1)]),_:2},1024),t(re,{class:"text-truncate"},{default:a(()=>[i(h(g),1)]),_:2},1024)]),_:2},1024))),128))]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1})):n.loading?(o(),u(me,{key:3,type:"article"})):(o(),u(x,{key:4,type:"info"},{default:a(()=>e[6]||(e[6]=[i(" 没有找到缓存数据。 ")])),_:1}))]),_:1})]),_:1})}const P=N(ge,[["render",pe]]),ve={name:"CacheManagementPage",components:{CacheManager:P},metaInfo:{title:"缓存管理"}},Ce={class:"d-flex align-center mb-6"},ke={class:"d-flex align-center mb-2"},ye={class:"d-flex align-center mb-2"};function be(s,e,r,m,n,d){const c=P;return o(),u(X,null,{default:a(()=>[t(A,null,{default:a(()=>[t(_,{cols:"12"},{default:a(()=>[l("div",Ce,[t(f,{size:"x-large",color:"primary",class:"mr-3"},{default:a(()=>e[0]||(e[0]=[i("mdi-database-cog-outline")])),_:1}),e[1]||(e[1]=l("div",null,[l("h1",{class:"text-h4"},"缓存管理"),l("div",{class:"text-subtitle-1 text-grey"},"管理应用的本地缓存资源")],-1))]),t(C,{class:"mb-6",variant:"tonal",color:"info",density:"compact"},{default:a(()=>[t(v,{class:"d-flex align-center"},{default:a(()=>[t(f,{color:"info",class:"mr-2"},{default:a(()=>e[2]||(e[2]=[i("mdi-information-outline")])),_:1}),e[3]||(e[3]=l("span",null,"在这里您可以查看和管理应用的缓存文件。清除缓存可能会导致应用需要重新下载资源,但有助于解决某些显示问题。",-1))]),_:1})]),_:1}),t(A,null,{default:a(()=>[t(_,{cols:"12",md:"8"},{default:a(()=>[t(C,{class:"mb-4",variant:"tonal"},{default:a(()=>[t(v,null,{default:a(()=>[l("div",ke,[t(f,{color:"primary",class:"mr-2"},{default:a(()=>e[4]||(e[4]=[i("mdi-information")])),_:1}),e[5]||(e[5]=l("span",{class:"text-h6"},"什么是缓存?",-1))]),e[6]||(e[6]=l("p",null,"缓存是浏览器在本地存储的网站资源副本,如图片、脚本和样式表等。这些缓存可以加快页面加载速度,减少数据使用,并在离线时提供基本功能。",-1))]),_:1})]),_:1})]),_:1}),t(_,{cols:"12",md:"4"},{default:a(()=>[t(C,{class:"mb-4",variant:"tonal"},{default:a(()=>[t(v,null,{default:a(()=>[l("div",ye,[t(f,{color:"warning",class:"mr-2"},{default:a(()=>e[7]||(e[7]=[i("mdi-lightbulb-outline")])),_:1}),e[8]||(e[8]=l("span",{class:"text-h6"},"何时清除缓存?",-1))]),e[9]||(e[9]=l("ul",{class:"pl-4"},[l("li",null,"应用显示过时的内容"),l("li",null,"界面出现异常"),l("li",null,"应用功能不正常")],-1))]),_:1})]),_:1})]),_:1})]),_:1}),t(c)]),_:1})]),_:1})]),_:1})}const Te=N(ve,[["render",be]]);export{Te as default};