2 lines
8.1 KiB
JavaScript
2 lines
8.1 KiB
JavaScript
import{S as Y}from"./index-c238f14b.js";import{r as T,_ as A}from"./index-b1d3d9b0.js";import{cI as oe,f as ne,bn as se,r as d,D as re,aW as m,aX as S,b4 as r,a$ as a,b3 as g,b1 as v,b2 as n,ac as $,b0 as b,b5 as C,ao as ae,bq as le,a_ as V,bo as c}from"./index-7e19b821.js";import{g as ie}from"./about-2688cabc.js";import{N as ue,a as L,b as G,c as O,e as ce,d as pe,g as de,f as fe}from"./index-bc9666b7.js";import{N as H}from"./Alert-018ca7af.js";import{N as me}from"./index-2b595d91.js";import{N as W}from"./Divider-a11d112a.js";import"./_plugin-vue_export-helper-c27b6911.js";const F=1,ve=1,ge="Sun-Panel-Config";class j extends Error{constructor(t){super(t),this.name="FormatError"}}class z extends Error{constructor(t){super(t),this.name="ConfigVersionLowError"}}function he(u){const t={version:F,appName:ge,exportTime:T().format("YYYY-MM-DD HH:mm:ss"),appVersion:u||"",md5:""};function s(){t.md5=q(JSON.stringify(t))}return{addIconsData(i){return t.icons=i,this},exportFile(){s();const i=JSON.stringify(t);if(i){const f=new Blob([i],{type:"application/json"}),h=document.createElement("a");h.href=URL.createObjectURL(f),h.download=`SunPanel-Data${T().format("YYYYMMDDHHmm")}.sun-panel.json`,h.click()}},string(){return s(),JSON.stringify(t)}}}function ye(u){let t;try{t=JSON.parse(u)}catch{throw new j("file format error")}const s=xe(t),i=q(u);if(!s)throw new j("file format error");if(t.version<ve)throw new z("");return{isPassCheckMd5:()=>i===s.md5,isPassCheckConfigVersionOld:()=>!(s.version<F),isPassCheckConfigVersionNew:()=>!(s.version>F),isPassCheckConfigVersionBest:()=>s.version===F,jsonStruct:s,hasProperty:f=>f in s,geticons:()=>s.icons||[]}}function xe(u){const t=["version","appName","exportTime","appVersion","md5"];for(const i of t)if(!(i in u))return null;return u}function q(u){try{const t=JSON.parse(u);we(t);const s=JSON.stringify(t);return oe.MD5(s).toString()}catch{return""}}function we(u){for(const t in u)if(t==="md5"){delete u[t];return}}const Ie={class:"pt-2"},be={class:"flex justify-center m-[50px]"},ke={class:"m-[10px]"},Ce={class:"m-[10px]"},Ne={class:"flex justify-center"},_e={href:"https://hslr-s.github.io/sun-panel-tool-page/#/",target:"_blank"},Se={key:0},$e={key:0},Me=g("h2",null,"JSON 数据",-1),De={key:0},Ee={class:"mt-[50px]"},Ve={class:"mt-[50px]"},Ye=ne({__name:"index",setup(u){const t=se(),s=d(null),i=d([]),f=d(!1),h=d(!1),N=d(!1),P=d(!1),U=d(""),K=d(!1),_=d(null),M=d(["icons"]),x=d(["icons"]);async function X(){var l,w;const e=(l=_.value)==null?void 0:l.geticons(),o=50;if(!e)return null;try{for(let y=0;y<e.length;y++){const I=e[y],p=await ce({title:I.title,sort:I.sort});if(p.code===0){const R=(w=p.data)==null?void 0:w.id;if(R){let D=[];for(let E=0;E<I.children.length;E++){const k=I.children[E];if(D.push({title:k.title,sort:k.sort,icon:k.icon,url:k.url,lanUrl:k.lanUrl,description:k.description,openMethod:k.openMethod,itemIconGroupId:R}),D.length===o||E===I.children.length-1){const B=await pe(D);if(B.code!==0)return B.msg;D=[]}}}}else return p.msg}return null}catch(y){return y instanceof Error?`${c("common.failed")}: ${y.message}`:c("common.unknownError")}}async function Q(){const e=[],{code:o,data:l}=await de();return o===0?(await Promise.all(l.list.map(async w=>{const y={title:w.title,sort:w.sort,children:[]},I=await fe(w.id);if(I.code===0)for(const p of I.data.list)y.children.push({icon:p.icon,sort:p.sort||99999,title:p.title,url:p.url,lanUrl:p.lanUrl||"",description:p.description||"",openMethod:p.openMethod||1});e.push(y)})),e):[]}re(()=>{ie().then(e=>{e.code===0&&(U.value=e.data.versionName)})});function Z(e){if(P.value=!0,console.log(e.file.file),e.file.file){const o=new FileReader;o.onload=()=>{o.result?(s.value=o.result,J()):t.error(`${c("common.failed")}: ${c("common.repeatLater")}`),P.value=!1},o.readAsText(e.file.file)}}function J(){if(i.value=[],s.value)try{_.value=ye(s.value),_.value&&(_.value.isPassCheckMd5()||i.value.push(c("apps.exportImport.fileModified")),_.value.isPassCheckConfigVersionOld()||i.value.push(c("apps.exportImport.warnConfigFileLow")),_.value.isPassCheckConfigVersionNew()||i.value.push(c("apps.exportImport.softwareVersionLow")),f.value=!f.value)}catch(e){e instanceof z?(t.error(c("apps.exportImport.errorConfigFileLow")),console.error("The configuration file version is too low to be compatible")):e instanceof j&&(t.error(c("apps.exportImport.errorConfigFileFormat")),console.error("The format is incorrect and cannot be imported"))}else t.error(c("apps.exportImport.errorConfigFileFormat"))}async function ee(){N.value=!0;const e=he(U.value);if(x.value.includes("icons")){console.log("export icons ...");const o=await Q();e.addIconsData(o),console.log("export icons finish",o)}s.value=e.string(),e.exportFile(),N.value=!1,h.value=!1}async function te(){if(N.value=!0,x.value.includes("icons")){console.log("export icons ...");const e=await X();e!==null&&t.success(`${c("common.failed")}:${e}`)}N.value=!1,f.value=!1,t.success(`${c("common.success")}, ${c("common.refreshPage")}`)}return(e,o)=>(m(),S("div",Ie,[r(n(H),{type:"info",bordered:!1},{default:a(()=>[g("p",null,v(e.$t("apps.exportImport.tip")),1)]),_:1}),g("div",be,[g("div",ke,[r(n(ue),{accept:".sun-panel.json,.sunpanel.json","directory-dnd":"","default-upload":!1,"show-file-list":!1,onChange:Z},{default:a(()=>[r(n($),{type:"info",size:"large",loading:P.value},{icon:a(()=>[r(n(Y),{icon:"fa6:solid-file-import"})]),default:a(()=>[b(" "+v(e.$t("apps.exportImport.import")),1)]),_:1},8,["loading"])]),_:1})]),g("div",Ce,[r(n($),{type:"info",size:"large",onClick:o[0]||(o[0]=l=>h.value=!h.value)},{icon:a(()=>[r(n(Y),{icon:"fa6:solid-file-export"})]),default:a(()=>[b(" "+v(e.$t("apps.exportImport.export")),1)]),_:1})])]),g("div",Ne,[g("a",_e,v(e.$t("apps.exportImport.transmuteStandard")),1)]),K.value?(m(),S("div",Se,[r(n($),{onClick:J},{default:a(()=>[b(" 检查导入 ")]),_:1}),r(n($),{onClick:o[1]||(o[1]=l=>s.value="")},{default:a(()=>[b(" 清空导入数据 ")]),_:1}),r(n(me),{value:s.value,"onUpdate:value":o[2]||(o[2]=l=>s.value=l),type:"textarea",placeholder:"基本的 Textarea"},null,8,["value"]),s.value?(m(),S("div",$e,[Me,g("pre",null,v(s.value),1)])):C("",!0)])):C("",!0),r(n(A),{show:f.value,"onUpdate:show":o[4]||(o[4]=l=>f.value=l),style:{"max-width":"400px"},title:e.$t("apps.exportImport.import")},{default:a(()=>[i.value.length>0?(m(),S("div",De,[r(n(H),{title:e.$t("common.warning"),type:"warning"},{default:a(()=>[(m(!0),S(ae,null,le(i.value,(l,w)=>(m(),S("div",{key:w},v(l),1))),128))]),_:1},8,["title"])])):C("",!0),r(n(W),{"title-placement":"left"},{default:a(()=>[b(v(e.$t("apps.exportImport.selectImportData")),1)]),_:1}),r(n(L),{justify:"center",style:{"margin-top":"20px"}},{default:a(()=>[r(n(G),{value:x.value,"onUpdate:value":o[3]||(o[3]=l=>x.value=l)},{default:a(()=>[M.value.includes("icons")?(m(),V(n(O),{key:0,value:"icons",label:e.$t("apps.exportImport.moduleIcon")},null,8,["label"])):C("",!0),M.value.includes("style")?(m(),V(n(O),{key:1,value:"style",label:e.$t("apps.exportImport.moduleStyle")},null,8,["label"])):C("",!0)]),_:1},8,["value"])]),_:1}),r(n(L),{justify:"center"},{default:a(()=>[g("div",Ee,[r(n($),{type:"success",disabled:x.value.length===0,loading:N.value,onClick:te},{default:a(()=>[b(v(e.$t("common.continue")),1)]),_:1},8,["disabled","loading"])])]),_:1})]),_:1},8,["show","title"]),r(n(A),{show:h.value,"onUpdate:show":o[6]||(o[6]=l=>h.value=l),style:{"max-width":"400px"},title:e.$t("apps.exportImport.export")},{default:a(()=>[r(n(W),{"title-placement":"left"},{default:a(()=>[b(v(e.$t("apps.exportImport.selectExportData")),1)]),_:1}),r(n(L),{justify:"center",style:{"margin-top":"20px"}},{default:a(()=>[r(n(G),{value:x.value,"onUpdate:value":o[5]||(o[5]=l=>x.value=l)},{default:a(()=>[M.value.includes("icons")?(m(),V(n(O),{key:0,value:"icons",label:e.$t("apps.exportImport.moduleIcon")},null,8,["label"])):C("",!0),M.value.includes("style")?(m(),V(n(O),{key:1,value:"style",label:e.$t("apps.exportImport.moduleStyle")},null,8,["label"])):C("",!0)]),_:1},8,["value"])]),_:1}),r(n(L),{justify:"center"},{default:a(()=>[g("div",Ve,[r(n($),{type:"success",disabled:x.value.length===0,loading:N.value,onClick:ee},{default:a(()=>[b(v(e.$t("common.continue")),1)]),_:1},8,["disabled","loading"])])]),_:1})]),_:1},8,["show","title"])]))}});export{Ye as default};
|