diff --git a/docs/assets/BattleReportDialog-BNULWr3T.js b/docs/assets/BattleReportDialog-BNULWr3T.js new file mode 100644 index 0000000..6fe099b --- /dev/null +++ b/docs/assets/BattleReportDialog-BNULWr3T.js @@ -0,0 +1 @@ +import{En as e,Fn as t,On as n,Rn as r,Yn as i,ar as ee,cn as a,cr as o,dn as s,fn as c,ln as l,on as u,pn as d,rn as f,rr as p,sn as m,un as h}from"./game-logic-BBFCPVtv.js";import{l as te,m as ne,o as g}from"./vendor-icons-Ccm2_GPI.js";import{t as _}from"./TooltipProvider-Cspoy8HK.js";import{$ as re,B as v,C as ie,E as ae,J as oe,L as y,O as se,Q as ce,R as b,S as le,X as ue,a as de,o as x,w as S,z as C}from"./index-B4KMqZ_y.js";import{t as w}from"./useGameConfig-DLqfPHtW.js";var T={key:0,class:`space-y-4`},E={class:`grid grid-cols-1 md:grid-cols-2 gap-4 text-sm`},D={class:`p-3 bg-blue-50 dark:bg-blue-950/20 rounded-lg`},O={class:`font-medium text-blue-600 dark:text-blue-400 mb-1`},k={key:0,class:`text-xs text-muted-foreground`},A={key:1,class:`text-xs text-muted-foreground`},j={class:`p-3 bg-red-50 dark:bg-red-950/20 rounded-lg`},M={class:`font-medium text-red-600 dark:text-red-400 mb-1`},N={key:0,class:`text-xs text-muted-foreground`},P={key:1,class:`text-xs text-muted-foreground`},F={class:`text-lg font-bold`},I={key:0,class:`text-sm mt-1`},L={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},R={class:`space-y-2`},z={class:`text-sm font-medium text-red-600 dark:text-red-400`},B={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},V={class:`text-muted-foreground`},H={class:`ml-2 font-medium`},fe={key:0,class:`text-muted-foreground`},pe={class:`space-y-2`},me={class:`text-sm font-medium text-red-600 dark:text-red-400`},he={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},ge={class:`text-muted-foreground`},_e={class:`ml-2 font-medium`},ve={class:`text-muted-foreground`},ye={class:`ml-2 font-medium`},be={key:0,class:`text-muted-foreground`},xe={key:0,class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Se={key:0,class:`space-y-2`},Ce={class:`text-sm font-medium text-blue-600 dark:text-blue-400`},we={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},Te={class:`text-muted-foreground`},Ee={class:`ml-2 font-medium`},De={key:1,class:`space-y-2`},Oe={class:`text-sm font-medium text-blue-600 dark:text-blue-400`},ke={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},Ae={class:`text-muted-foreground`},je={class:`ml-2 font-medium`},Me={class:`text-muted-foreground`},Ne={class:`ml-2 font-medium`},Pe={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Fe={key:0,class:`p-3 bg-green-50 dark:bg-green-950 rounded-lg`},Ie={class:`text-sm font-medium mb-2 text-green-600 dark:text-green-400`},Le={class:`flex flex-wrap gap-3 text-xs`},Re={key:0,class:`flex items-center gap-1`},ze={key:1,class:`flex items-center gap-1`},Be={key:2,class:`flex items-center gap-1`},Ve={key:1,class:`p-3 bg-muted rounded-lg`},He={class:`text-sm font-medium mb-2`},Ue={class:`flex flex-wrap gap-3 text-xs`},We={key:0,class:`flex items-center gap-1`},Ge={key:1,class:`flex items-center gap-1`},Ke={key:0,class:`text-xs text-muted-foreground mt-2`},qe={key:1,class:`space-y-2`},Je={key:0,class:`relative pl-6 space-y-4`},Ye={class:`border rounded-lg p-3 bg-card hover:shadow-md transition-shadow`},Xe={class:`flex items-center justify-between mb-3`},Ze={class:`text-sm font-semibold`},Qe={class:`flex gap-3 text-xs text-muted-foreground`},$e={class:`flex items-center gap-1`},et={class:`flex items-center gap-1`},tt={class:`grid grid-cols-1 md:grid-cols-2 gap-3`},nt={class:`bg-red-50 dark:bg-red-950/20 rounded p-2`},rt={class:`text-xs font-medium text-red-600 dark:text-red-400 mb-1.5`},it={class:`text-xs space-y-0.5`},at={class:`text-muted-foreground`},ot={class:`font-medium`},st={key:0,class:`text-muted-foreground italic`},ct={class:`bg-blue-50 dark:bg-blue-950/20 rounded p-2`},lt={class:`text-xs font-medium text-blue-600 dark:text-blue-400 mb-1.5`},ut={class:`text-xs space-y-0.5`},dt={class:`text-muted-foreground`},U={class:`font-medium`},ft={class:`text-muted-foreground`},pt={class:`font-medium`},mt={key:0,class:`text-muted-foreground italic`},W=d({__name:`BattleReportDialog`,props:{report:{},open:{type:Boolean}},emits:[`update:open`],setup(d,{emit:W}){let G=d,ht=W,K=re(),gt=ce(),{t:q}=ue(),{SHIPS:J,DEFENSES:Y}=w(),X=i(G.open),Z=i(!1),Q=u(()=>G.report?K.player.planets.find(e=>e.id===G.report.attackerPlanetId):null),$=u(()=>G.report?K.player.planets.find(e=>e.id===G.report.defenderPlanetId)||Object.values(gt.planets).find(e=>e.id===G.report.defenderPlanetId):null);t(()=>G.open,e=>{X.value=e,e&&(Z.value=!1)}),t(X,e=>{ht(`update:open`,e)});let _t=e=>e===`attacker`?`bg-green-50 dark:bg-green-950 text-green-700 dark:text-green-300`:e===`defender`?`bg-red-50 dark:bg-red-950 text-red-700 dark:text-red-300`:`bg-gray-50 dark:bg-gray-950 text-gray-700 dark:text-gray-300`;return(t,i)=>(e(),a(p(se),{open:X.value,"onUpdate:open":i[1]||=e=>X.value=e},{default:r(()=>[c(p(ie),{"container-class":`sm:max-w-4xl max-h-[90vh]`},{header:r(()=>[c(p(S),null,{default:r(()=>[c(p(le),{class:`flex items-center gap-2`},{default:r(()=>[c(p(g),{class:`h-5 w-5`}),s(` `+o(p(q)(`messagesView.battleReport`)),1)]),_:1}),d.report?(e(),a(p(ae),{key:0},{default:r(()=>[s(o(p(de)(d.report.timestamp)),1)]),_:1})):l(``,!0)]),_:1})]),default:r(()=>[d.report?(e(),h(`div`,T,[m(`div`,E,[m(`div`,D,[m(`p`,O,o(p(q)(`simulatorView.attacker`)),1),Q.value?(e(),h(`p`,k,o(Q.value.name)+` [`+o(Q.value.position.galaxy)+`:`+o(Q.value.position.system)+`:`+o(Q.value.position.position)+`] `,1)):(e(),h(`p`,A,o(d.report.attackerPlanetId),1))]),m(`div`,j,[m(`p`,M,o(p(q)(`simulatorView.defender`)),1),$.value?(e(),h(`p`,N,o($.value.name)+` [`+o($.value.position.galaxy)+`:`+o($.value.position.system)+`:`+o($.value.position.position)+`] `,1)):(e(),h(`p`,P,o(d.report.defenderPlanetId),1))])]),m(`div`,{class:ee([`text-center p-4 rounded-lg`,_t(d.report.winner)])},[m(`p`,F,o(d.report.winner===`attacker`?p(q)(`messagesView.victory`):d.report.winner===`defender`?p(q)(`messagesView.defeat`):p(q)(`messagesView.draw`)),1),d.report.rounds?(e(),h(`p`,I,o(p(q)(`simulatorView.afterRounds`).replace(`{rounds}`,String(d.report.rounds))),1)):l(``,!0)],2),m(`div`,L,[m(`div`,R,[m(`p`,z,o(p(q)(`messagesView.attackerLosses`)),1),m(`div`,B,[(e(!0),h(f,null,n(d.report.attackerLosses,(t,n)=>(e(),h(`div`,{key:n},[m(`span`,V,o(p(J)[n].name)+`:`,1),m(`span`,H,o(t),1)]))),128)),Object.keys(d.report.attackerLosses).length===0?(e(),h(`p`,fe,o(p(q)(`messagesView.noLosses`)),1)):l(``,!0)])]),m(`div`,pe,[m(`p`,me,o(p(q)(`messagesView.defenderLosses`)),1),m(`div`,he,[(e(!0),h(f,null,n(d.report.defenderLosses.fleet,(t,n)=>(e(),h(`div`,{key:n},[m(`span`,ge,o(p(J)[n].name)+`:`,1),m(`span`,_e,o(t),1)]))),128)),(e(!0),h(f,null,n(d.report.defenderLosses.defense,(t,n)=>(e(),h(`div`,{key:n},[m(`span`,ve,o(p(Y)[n].name)+`:`,1),m(`span`,ye,o(t),1)]))),128)),Object.keys(d.report.defenderLosses.fleet).length===0&&Object.keys(d.report.defenderLosses.defense).length===0?(e(),h(`p`,be,o(p(q)(`messagesView.noLosses`)),1)):l(``,!0)])])]),d.report.attackerRemaining||d.report.defenderRemaining?(e(),h(`div`,xe,[d.report.attackerRemaining&&Object.keys(d.report.attackerRemaining).length>0?(e(),h(`div`,Se,[m(`p`,Ce,o(p(q)(`messagesView.attackerRemaining`)),1),m(`div`,we,[(e(!0),h(f,null,n(d.report.attackerRemaining,(t,n)=>(e(),h(`div`,{key:n},[m(`span`,Te,o(p(J)[n].name)+`:`,1),m(`span`,Ee,o(t),1)]))),128))])])):l(``,!0),d.report.defenderRemaining&&(Object.keys(d.report.defenderRemaining.fleet||{}).length>0||Object.keys(d.report.defenderRemaining.defense||{}).length>0)?(e(),h(`div`,De,[m(`p`,Oe,o(p(q)(`messagesView.defenderRemaining`)),1),m(`div`,ke,[(e(!0),h(f,null,n(d.report.defenderRemaining.fleet,(t,n)=>(e(),h(`div`,{key:n},[m(`span`,Ae,o(p(J)[n].name)+`:`,1),m(`span`,je,o(t),1)]))),128)),(e(!0),h(f,null,n(d.report.defenderRemaining.defense,(t,n)=>(e(),h(`div`,{key:n},[m(`span`,Me,o(p(Y)[n].name)+`:`,1),m(`span`,Ne,o(t),1)]))),128))])])):l(``,!0)])):l(``,!0),m(`div`,Pe,[d.report.plunder&&(d.report.plunder.metal>0||d.report.plunder.crystal>0||d.report.plunder.deuterium>0)?(e(),h(`div`,Fe,[m(`p`,Ie,o(p(q)(`messagesView.plunder`)),1),m(`div`,Le,[d.report.plunder.metal>0?(e(),h(`span`,Re,[c(y,{type:`metal`,size:`sm`}),s(` `+o(p(x)(d.report.plunder.metal)),1)])):l(``,!0),d.report.plunder.crystal>0?(e(),h(`span`,ze,[c(y,{type:`crystal`,size:`sm`}),s(` `+o(p(x)(d.report.plunder.crystal)),1)])):l(``,!0),d.report.plunder.deuterium>0?(e(),h(`span`,Be,[c(y,{type:`deuterium`,size:`sm`}),s(` `+o(p(x)(d.report.plunder.deuterium)),1)])):l(``,!0)])])):l(``,!0),d.report.debrisField&&(d.report.debrisField.metal>0||d.report.debrisField.crystal>0)?(e(),h(`div`,Ve,[m(`p`,He,o(p(q)(`messagesView.debrisField`)),1),m(`div`,Ue,[d.report.debrisField.metal>0?(e(),h(`span`,We,[c(y,{type:`metal`,size:`sm`}),s(` `+o(p(x)(d.report.debrisField.metal)),1)])):l(``,!0),d.report.debrisField.crystal>0?(e(),h(`span`,Ge,[c(y,{type:`crystal`,size:`sm`}),s(` `+o(p(x)(d.report.debrisField.crystal)),1)])):l(``,!0)]),d.report.moonChance&&d.report.moonChance>0?(e(),h(`p`,Ke,o(p(q)(`messagesView.moonChance`))+`: `+o((d.report.moonChance*100).toFixed(1))+`% `,1)):l(``,!0)])):l(``,!0)]),d.report.roundDetails&&d.report.roundDetails.length>0?(e(),h(`div`,qe,[c(p(oe),{onClick:i[0]||=e=>Z.value=!Z.value,variant:`outline`,size:`sm`,class:`w-full`},{default:r(()=>[s(o(Z.value?p(q)(`messagesView.hideRoundDetails`):p(q)(`messagesView.showRoundDetails`)),1)]),_:1}),Z.value?(e(),h(`div`,Je,[i[3]||=m(`div`,{class:`absolute left-2 top-0 bottom-0 w-0.5 bg-border`},null,-1),(e(!0),h(f,null,n(d.report.roundDetails,t=>(e(),h(`div`,{key:t.round,class:`relative`},[i[2]||=m(`div`,{class:`absolute -left-6 top-3 w-4 h-4 rounded-full bg-primary border-2 border-background`},null,-1),m(`div`,Ye,[m(`div`,Xe,[m(`p`,Ze,o(p(q)(`messagesView.round`).replace(`{round}`,String(t.round))),1),c(p(_),{"delay-duration":300},{default:r(()=>[m(`div`,Qe,[c(p(v),null,{default:r(()=>[c(p(b),{"as-child":``},{default:r(()=>[m(`span`,$e,[c(p(te),{class:`h-3 w-3`}),s(` `+o(p(x)(t.attackerRemainingPower)),1)])]),_:2},1024),c(p(C),null,{default:r(()=>[m(`p`,null,o(p(q)(`messagesView.attackerRemainingPower`)),1)]),_:1})]),_:2},1024),c(p(v),null,{default:r(()=>[c(p(b),{"as-child":``},{default:r(()=>[m(`span`,et,[c(p(ne),{class:`h-3 w-3`}),s(` `+o(p(x)(t.defenderRemainingPower)),1)])]),_:2},1024),c(p(C),null,{default:r(()=>[m(`p`,null,o(p(q)(`messagesView.defenderRemainingPower`)),1)]),_:1})]),_:2},1024)])]),_:2},1024)]),m(`div`,tt,[m(`div`,nt,[m(`p`,rt,o(p(q)(`messagesView.attackerLosses`)),1),m(`div`,it,[(e(!0),h(f,null,n(t.attackerLosses,(t,n)=>(e(),h(`div`,{key:n,class:`flex justify-between`},[m(`span`,at,o(p(J)[n].name),1),m(`span`,ot,`-`+o(t),1)]))),128)),Object.keys(t.attackerLosses).length===0?(e(),h(`p`,st,o(p(q)(`messagesView.noLosses`)),1)):l(``,!0)])]),m(`div`,ct,[m(`p`,lt,o(p(q)(`messagesView.defenderLosses`)),1),m(`div`,ut,[(e(!0),h(f,null,n(t.defenderLosses.fleet,(t,n)=>(e(),h(`div`,{key:n,class:`flex justify-between`},[m(`span`,dt,o(p(J)[n].name),1),m(`span`,U,`-`+o(t),1)]))),128)),(e(!0),h(f,null,n(t.defenderLosses.defense,(t,n)=>(e(),h(`div`,{key:n,class:`flex justify-between`},[m(`span`,ft,o(p(Y)[n].name),1),m(`span`,pt,`-`+o(t),1)]))),128)),Object.keys(t.defenderLosses.fleet).length===0&&Object.keys(t.defenderLosses.defense).length===0?(e(),h(`p`,mt,o(p(q)(`messagesView.noLosses`)),1)):l(``,!0)])])])])]))),128))])):l(``,!0)])):l(``,!0)])):l(``,!0)]),_:1})]),_:1},8,[`open`]))}});export{W as t}; \ No newline at end of file diff --git a/docs/assets/BattleReportDialog-CGjL16c6.js b/docs/assets/BattleReportDialog-CGjL16c6.js deleted file mode 100644 index e9a81df..0000000 --- a/docs/assets/BattleReportDialog-CGjL16c6.js +++ /dev/null @@ -1 +0,0 @@ -import{$t as e,Cn as t,En as n,Gn as r,Gt as i,Jt as a,Ln as o,Qt as s,Xn as c,Xt as l,Yt as u,Zt as d,en as f,gn as p,mn as m,qn as ee,tn as h}from"./game-logic-Bi1l7y4K.js";import{a as te,c as ne,p as re}from"./vendor-icons-z9V6Jdbh.js";import{t as ie}from"./TooltipProvider-BwjgS8_x.js";import{A as ae,F as g,I as _,K as oe,M as se,N as v,O as ce,P as y,W as le,d as ue,f as b,j as de,k as x,n as S,q as C}from"./index-BT5w6et-.js";import{t as w}from"./useGameConfig-b98LOtBY.js";var T={key:0,class:`space-y-4`},E={class:`grid grid-cols-1 md:grid-cols-2 gap-4 text-sm`},D={class:`p-3 bg-blue-50 dark:bg-blue-950/20 rounded-lg`},O={class:`font-medium text-blue-600 dark:text-blue-400 mb-1`},k={key:0,class:`text-xs text-muted-foreground`},A={key:1,class:`text-xs text-muted-foreground`},j={class:`p-3 bg-red-50 dark:bg-red-950/20 rounded-lg`},M={class:`font-medium text-red-600 dark:text-red-400 mb-1`},N={key:0,class:`text-xs text-muted-foreground`},P={key:1,class:`text-xs text-muted-foreground`},F={class:`text-lg font-bold`},I={key:0,class:`text-sm mt-1`},L={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},R={class:`space-y-2`},z={class:`text-sm font-medium text-red-600 dark:text-red-400`},B={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},V={class:`text-muted-foreground`},H={class:`ml-2 font-medium`},fe={key:0,class:`text-muted-foreground`},pe={class:`space-y-2`},me={class:`text-sm font-medium text-red-600 dark:text-red-400`},he={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},ge={class:`text-muted-foreground`},_e={class:`ml-2 font-medium`},ve={class:`text-muted-foreground`},ye={class:`ml-2 font-medium`},be={key:0,class:`text-muted-foreground`},xe={key:0,class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Se={key:0,class:`space-y-2`},Ce={class:`text-sm font-medium text-blue-600 dark:text-blue-400`},we={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},Te={class:`text-muted-foreground`},Ee={class:`ml-2 font-medium`},De={key:1,class:`space-y-2`},Oe={class:`text-sm font-medium text-blue-600 dark:text-blue-400`},ke={class:`p-3 bg-muted rounded-lg space-y-1 text-xs`},Ae={class:`text-muted-foreground`},je={class:`ml-2 font-medium`},Me={class:`text-muted-foreground`},Ne={class:`ml-2 font-medium`},Pe={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Fe={key:0,class:`p-3 bg-green-50 dark:bg-green-950 rounded-lg`},Ie={class:`text-sm font-medium mb-2 text-green-600 dark:text-green-400`},Le={class:`flex flex-wrap gap-3 text-xs`},Re={key:0,class:`flex items-center gap-1`},ze={key:1,class:`flex items-center gap-1`},Be={key:2,class:`flex items-center gap-1`},Ve={key:1,class:`p-3 bg-muted rounded-lg`},He={class:`text-sm font-medium mb-2`},Ue={class:`flex flex-wrap gap-3 text-xs`},We={key:0,class:`flex items-center gap-1`},Ge={key:1,class:`flex items-center gap-1`},Ke={key:0,class:`text-xs text-muted-foreground mt-2`},qe={key:1,class:`space-y-2`},Je={key:0,class:`relative pl-6 space-y-4`},Ye={class:`border rounded-lg p-3 bg-card hover:shadow-md transition-shadow`},Xe={class:`flex items-center justify-between mb-3`},Ze={class:`text-sm font-semibold`},Qe={class:`flex gap-3 text-xs text-muted-foreground`},$e={class:`flex items-center gap-1`},et={class:`flex items-center gap-1`},tt={class:`grid grid-cols-1 md:grid-cols-2 gap-3`},nt={class:`bg-red-50 dark:bg-red-950/20 rounded p-2`},rt={class:`text-xs font-medium text-red-600 dark:text-red-400 mb-1.5`},it={class:`text-xs space-y-0.5`},at={class:`text-muted-foreground`},ot={class:`font-medium`},st={key:0,class:`text-muted-foreground italic`},ct={class:`bg-blue-50 dark:bg-blue-950/20 rounded p-2`},lt={class:`text-xs font-medium text-blue-600 dark:text-blue-400 mb-1.5`},ut={class:`text-xs space-y-0.5`},dt={class:`text-muted-foreground`},U={class:`font-medium`},ft={class:`text-muted-foreground`},pt={class:`font-medium`},mt={key:0,class:`text-muted-foreground italic`},W=h({__name:`BattleReportDialog`,props:{report:{},open:{type:Boolean}},emits:[`update:open`],setup(h,{emit:W}){let G=h,ht=W,K=C(),gt=S(),{t:q}=oe(),{SHIPS:J,DEFENSES:Y}=w(),X=o(G.open),Z=o(!1),Q=a(()=>G.report?K.player.planets.find(e=>e.id===G.report.attackerPlanetId):null),$=a(()=>G.report?K.player.planets.find(e=>e.id===G.report.defenderPlanetId)||Object.values(gt.planets).find(e=>e.id===G.report.defenderPlanetId):null);t(()=>G.open,e=>{X.value=e,e&&(Z.value=!1)}),t(X,e=>{ht(`update:open`,e)});let _t=e=>e===`attacker`?`bg-green-50 dark:bg-green-950 text-green-700 dark:text-green-300`:e===`defender`?`bg-red-50 dark:bg-red-950 text-red-700 dark:text-red-300`:`bg-gray-50 dark:bg-gray-950 text-gray-700 dark:text-gray-300`;return(t,a)=>(m(),l(r(se),{open:X.value,"onUpdate:open":a[1]||=e=>X.value=e},{default:n(()=>[f(r(x),{"container-class":`sm:max-w-4xl max-h-[90vh]`},{header:n(()=>[f(r(ae),null,{default:n(()=>[f(r(ce),{class:`flex items-center gap-2`},{default:n(()=>[f(r(te),{class:`h-5 w-5`}),e(` `+c(r(q)(`messagesView.battleReport`)),1)]),_:1}),h.report?(m(),l(r(de),{key:0},{default:n(()=>[e(c(r(ue)(h.report.timestamp)),1)]),_:1})):d(``,!0)]),_:1})]),default:n(()=>[h.report?(m(),s(`div`,T,[u(`div`,E,[u(`div`,D,[u(`p`,O,c(r(q)(`simulatorView.attacker`)),1),Q.value?(m(),s(`p`,k,c(Q.value.name)+` [`+c(Q.value.position.galaxy)+`:`+c(Q.value.position.system)+`:`+c(Q.value.position.position)+`] `,1)):(m(),s(`p`,A,c(h.report.attackerPlanetId),1))]),u(`div`,j,[u(`p`,M,c(r(q)(`simulatorView.defender`)),1),$.value?(m(),s(`p`,N,c($.value.name)+` [`+c($.value.position.galaxy)+`:`+c($.value.position.system)+`:`+c($.value.position.position)+`] `,1)):(m(),s(`p`,P,c(h.report.defenderPlanetId),1))])]),u(`div`,{class:ee([`text-center p-4 rounded-lg`,_t(h.report.winner)])},[u(`p`,F,c(h.report.winner===`attacker`?r(q)(`messagesView.victory`):h.report.winner===`defender`?r(q)(`messagesView.defeat`):r(q)(`messagesView.draw`)),1),h.report.rounds?(m(),s(`p`,I,c(r(q)(`simulatorView.afterRounds`).replace(`{rounds}`,String(h.report.rounds))),1)):d(``,!0)],2),u(`div`,L,[u(`div`,R,[u(`p`,z,c(r(q)(`messagesView.attackerLosses`)),1),u(`div`,B,[(m(!0),s(i,null,p(h.report.attackerLosses,(e,t)=>(m(),s(`div`,{key:t},[u(`span`,V,c(r(J)[t].name)+`:`,1),u(`span`,H,c(e),1)]))),128)),Object.keys(h.report.attackerLosses).length===0?(m(),s(`p`,fe,c(r(q)(`messagesView.noLosses`)),1)):d(``,!0)])]),u(`div`,pe,[u(`p`,me,c(r(q)(`messagesView.defenderLosses`)),1),u(`div`,he,[(m(!0),s(i,null,p(h.report.defenderLosses.fleet,(e,t)=>(m(),s(`div`,{key:t},[u(`span`,ge,c(r(J)[t].name)+`:`,1),u(`span`,_e,c(e),1)]))),128)),(m(!0),s(i,null,p(h.report.defenderLosses.defense,(e,t)=>(m(),s(`div`,{key:t},[u(`span`,ve,c(r(Y)[t].name)+`:`,1),u(`span`,ye,c(e),1)]))),128)),Object.keys(h.report.defenderLosses.fleet).length===0&&Object.keys(h.report.defenderLosses.defense).length===0?(m(),s(`p`,be,c(r(q)(`messagesView.noLosses`)),1)):d(``,!0)])])]),h.report.attackerRemaining||h.report.defenderRemaining?(m(),s(`div`,xe,[h.report.attackerRemaining&&Object.keys(h.report.attackerRemaining).length>0?(m(),s(`div`,Se,[u(`p`,Ce,c(r(q)(`messagesView.attackerRemaining`)),1),u(`div`,we,[(m(!0),s(i,null,p(h.report.attackerRemaining,(e,t)=>(m(),s(`div`,{key:t},[u(`span`,Te,c(r(J)[t].name)+`:`,1),u(`span`,Ee,c(e),1)]))),128))])])):d(``,!0),h.report.defenderRemaining&&(Object.keys(h.report.defenderRemaining.fleet||{}).length>0||Object.keys(h.report.defenderRemaining.defense||{}).length>0)?(m(),s(`div`,De,[u(`p`,Oe,c(r(q)(`messagesView.defenderRemaining`)),1),u(`div`,ke,[(m(!0),s(i,null,p(h.report.defenderRemaining.fleet,(e,t)=>(m(),s(`div`,{key:t},[u(`span`,Ae,c(r(J)[t].name)+`:`,1),u(`span`,je,c(e),1)]))),128)),(m(!0),s(i,null,p(h.report.defenderRemaining.defense,(e,t)=>(m(),s(`div`,{key:t},[u(`span`,Me,c(r(Y)[t].name)+`:`,1),u(`span`,Ne,c(e),1)]))),128))])])):d(``,!0)])):d(``,!0),u(`div`,Pe,[h.report.plunder&&(h.report.plunder.metal>0||h.report.plunder.crystal>0||h.report.plunder.deuterium>0)?(m(),s(`div`,Fe,[u(`p`,Ie,c(r(q)(`messagesView.plunder`)),1),u(`div`,Le,[h.report.plunder.metal>0?(m(),s(`span`,Re,[f(v,{type:`metal`,size:`sm`}),e(` `+c(r(b)(h.report.plunder.metal)),1)])):d(``,!0),h.report.plunder.crystal>0?(m(),s(`span`,ze,[f(v,{type:`crystal`,size:`sm`}),e(` `+c(r(b)(h.report.plunder.crystal)),1)])):d(``,!0),h.report.plunder.deuterium>0?(m(),s(`span`,Be,[f(v,{type:`deuterium`,size:`sm`}),e(` `+c(r(b)(h.report.plunder.deuterium)),1)])):d(``,!0)])])):d(``,!0),h.report.debrisField&&(h.report.debrisField.metal>0||h.report.debrisField.crystal>0)?(m(),s(`div`,Ve,[u(`p`,He,c(r(q)(`messagesView.debrisField`)),1),u(`div`,Ue,[h.report.debrisField.metal>0?(m(),s(`span`,We,[f(v,{type:`metal`,size:`sm`}),e(` `+c(r(b)(h.report.debrisField.metal)),1)])):d(``,!0),h.report.debrisField.crystal>0?(m(),s(`span`,Ge,[f(v,{type:`crystal`,size:`sm`}),e(` `+c(r(b)(h.report.debrisField.crystal)),1)])):d(``,!0)]),h.report.moonChance&&h.report.moonChance>0?(m(),s(`p`,Ke,c(r(q)(`messagesView.moonChance`))+`: `+c((h.report.moonChance*100).toFixed(1))+`% `,1)):d(``,!0)])):d(``,!0)]),h.report.roundDetails&&h.report.roundDetails.length>0?(m(),s(`div`,qe,[f(r(le),{onClick:a[0]||=e=>Z.value=!Z.value,variant:`outline`,size:`sm`,class:`w-full`},{default:n(()=>[e(c(Z.value?r(q)(`messagesView.hideRoundDetails`):r(q)(`messagesView.showRoundDetails`)),1)]),_:1}),Z.value?(m(),s(`div`,Je,[a[3]||=u(`div`,{class:`absolute left-2 top-0 bottom-0 w-0.5 bg-border`},null,-1),(m(!0),s(i,null,p(h.report.roundDetails,t=>(m(),s(`div`,{key:t.round,class:`relative`},[a[2]||=u(`div`,{class:`absolute -left-6 top-3 w-4 h-4 rounded-full bg-primary border-2 border-background`},null,-1),u(`div`,Ye,[u(`div`,Xe,[u(`p`,Ze,c(r(q)(`messagesView.round`).replace(`{round}`,String(t.round))),1),f(r(ie),{"delay-duration":300},{default:n(()=>[u(`div`,Qe,[f(r(_),null,{default:n(()=>[f(r(y),{"as-child":``},{default:n(()=>[u(`span`,$e,[f(r(ne),{class:`h-3 w-3`}),e(` `+c(r(b)(t.attackerRemainingPower)),1)])]),_:2},1024),f(r(g),null,{default:n(()=>[u(`p`,null,c(r(q)(`messagesView.attackerRemainingPower`)),1)]),_:1})]),_:2},1024),f(r(_),null,{default:n(()=>[f(r(y),{"as-child":``},{default:n(()=>[u(`span`,et,[f(r(re),{class:`h-3 w-3`}),e(` `+c(r(b)(t.defenderRemainingPower)),1)])]),_:2},1024),f(r(g),null,{default:n(()=>[u(`p`,null,c(r(q)(`messagesView.defenderRemainingPower`)),1)]),_:1})]),_:2},1024)])]),_:2},1024)]),u(`div`,tt,[u(`div`,nt,[u(`p`,rt,c(r(q)(`messagesView.attackerLosses`)),1),u(`div`,it,[(m(!0),s(i,null,p(t.attackerLosses,(e,t)=>(m(),s(`div`,{key:t,class:`flex justify-between`},[u(`span`,at,c(r(J)[t].name),1),u(`span`,ot,`-`+c(e),1)]))),128)),Object.keys(t.attackerLosses).length===0?(m(),s(`p`,st,c(r(q)(`messagesView.noLosses`)),1)):d(``,!0)])]),u(`div`,ct,[u(`p`,lt,c(r(q)(`messagesView.defenderLosses`)),1),u(`div`,ut,[(m(!0),s(i,null,p(t.defenderLosses.fleet,(e,t)=>(m(),s(`div`,{key:t,class:`flex justify-between`},[u(`span`,dt,c(r(J)[t].name),1),u(`span`,U,`-`+c(e),1)]))),128)),(m(!0),s(i,null,p(t.defenderLosses.defense,(e,t)=>(m(),s(`div`,{key:t,class:`flex justify-between`},[u(`span`,ft,c(r(Y)[t].name),1),u(`span`,pt,`-`+c(e),1)]))),128)),Object.keys(t.defenderLosses.fleet).length===0&&Object.keys(t.defenderLosses.defense).length===0?(m(),s(`p`,mt,c(r(q)(`messagesView.noLosses`)),1)):d(``,!0)])])])])]))),128))])):d(``,!0)])):d(``,!0)])):d(``,!0)]),_:1})]),_:1},8,[`open`]))}});export{W as t}; \ No newline at end of file diff --git a/docs/assets/BattleSimulatorView-BMgbGRUI.js b/docs/assets/BattleSimulatorView-BMgbGRUI.js new file mode 100644 index 0000000..744a495 --- /dev/null +++ b/docs/assets/BattleSimulatorView-BMgbGRUI.js @@ -0,0 +1 @@ +import{$n as e,En as t,G as n,On as r,Rn as i,Yn as a,cr as o,dn as s,fn as c,pn as l,rn as u,rr as d,sn as f,un as p,wt as m}from"./game-logic-BBFCPVtv.js";import"./vendor-pinia-L_8CmDWM.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-BC9uiVvf.js";import"./vendor-others-Bce0hM6h.js";import"./vendor-reka-ui-DR3m_AkV.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-Djj-oRw9.js";import{_ as ee,l as te,m as ne,t as h}from"./vendor-icons-Ccm2_GPI.js";import"./TooltipProvider-Cspoy8HK.js";import{t as g}from"./CardDescription-DduF5EVY.js";import{_,f as v}from"./game-config-DRP-gbpS.js";import{J as y,L as re,V as b,X as ie,d as x,f as S,m as C,p as w,u as T}from"./index-B4KMqZ_y.js";import{t as ae}from"./useGameConfig-DLqfPHtW.js";import{i as oe,n as se,r as E,t as D}from"./TabsTrigger-BnZOhHbD.js";import{t as ce}from"./BattleReportDialog-BNULWr3T.js";var le={class:`container mx-auto p-4 sm:p-6 space-y-6`},ue={class:`text-2xl sm:text-3xl font-bold`},de={class:`text-sm font-medium mb-3`},O={class:`grid grid-cols-2 md:grid-cols-3 gap-3`},k={class:`text-sm font-medium mb-3`},A={class:`grid grid-cols-3 gap-3`},j={class:`text-sm font-medium mb-3`},M={class:`grid grid-cols-2 md:grid-cols-3 gap-3`},N={class:`text-sm font-medium mb-3`},P={class:`grid grid-cols-2 md:grid-cols-3 gap-3`},F={class:`text-sm font-medium mb-3`},I={class:`grid grid-cols-3 gap-3`},L={class:`text-sm font-medium mb-3`},R={class:`grid grid-cols-3 gap-3`},z={class:`flex gap-2`},B=l({__name:`BattleSimulatorView`,setup(l){let{t:B}=ie(),{SHIPS:V,DEFENSES:fe}=ae(),H=[`weapon`,`shield`,`armor`],pe=[{key:`metal`},{key:`crystal`},{key:`deuterium`}],U=()=>{let e={};return Object.values(_).forEach(t=>{e[t]=0}),e},W=a(U()),G=a(`attacker`),K=a({weapon:0,shield:0,armor:0}),q=a(U()),J=()=>{let e={};return Object.values(v).forEach(t=>{e[t]=0}),e},Y=a(J()),X=a({weapon:0,shield:0,armor:0}),Z=a({metal:1e5,crystal:5e4,deuterium:25e3,darkMatter:100,energy:0}),Q=a(null),$=a(!1),me=async()=>{let t={ships:e(W.value),weaponTech:K.value.weapon,shieldTech:K.value.shield,armorTech:K.value.armor},r={ships:e(q.value),defense:e(Y.value),weaponTech:X.value.weapon,shieldTech:X.value.shield,armorTech:X.value.armor},i=await n.simulateBattle({attacker:t,defender:r}),a=i.winner===`attacker`?await n.calculatePlunder({defenderResources:e(Z.value),attackerFleet:i.attackerRemaining}):{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},o=await n.calculateDebris({attackerLosses:i.attackerLosses,defenderLosses:i.defenderLosses}),s=m(o)/100;Q.value={id:`sim_${Date.now()}`,timestamp:Date.now(),attackerId:`simulator_attacker`,defenderId:`simulator_defender`,attackerPlanetId:`sim_attacker`,defenderPlanetId:`sim_defender`,attackerFleet:W.value,defenderFleet:q.value,defenderDefense:Y.value,attackerLosses:i.attackerLosses,defenderLosses:i.defenderLosses,winner:i.winner,plunder:a,debrisField:o,rounds:i.rounds,attackerRemaining:i.attackerRemaining,defenderRemaining:i.defenderRemaining,roundDetails:i.roundDetails,moonChance:s},$.value=!0},he=()=>{W.value=U(),q.value=U(),Y.value=J(),K.value={weapon:0,shield:0,armor:0},X.value={weapon:0,shield:0,armor:0},Q.value=null,$.value=!1};return(e,n)=>(t(),p(`div`,le,[f(`h1`,ue,o(d(B)(`simulatorView.title`)),1),c(d(oe),{modelValue:G.value,"onUpdate:modelValue":n[0]||=e=>G.value=e,class:`w-full`},{default:i(()=>[c(d(se),{class:`grid w-full grid-cols-2`},{default:i(()=>[c(d(D),{value:`attacker`},{default:i(()=>[c(d(te),{class:`h-4 w-4 mr-2`}),s(` `+o(d(B)(`simulatorView.attacker`)),1)]),_:1}),c(d(D),{value:`defender`},{default:i(()=>[c(d(ne),{class:`h-4 w-4 mr-2`}),s(` `+o(d(B)(`simulatorView.defender`)),1)]),_:1})]),_:1}),c(d(E),{value:`attacker`,class:`mt-4`},{default:i(()=>[c(d(C),null,{default:i(()=>[c(d(S),null,{default:i(()=>[c(d(x),null,{default:i(()=>[s(o(d(B)(`simulatorView.attackerConfig`)),1)]),_:1}),c(d(g),null,{default:i(()=>[s(o(d(B)(`simulatorView.attackerConfigDesc`)),1)]),_:1})]),_:1}),c(d(w),{class:`space-y-4`},{default:i(()=>[f(`div`,null,[f(`h3`,de,o(d(B)(`simulatorView.fleet`)),1),f(`div`,O,[(t(!0),p(u,null,r(Object.values(d(_)),e=>(t(),p(`div`,{key:e,class:`space-y-1`},[c(d(T),{for:`attacker-${e}`,class:`text-xs`},{default:i(()=>[s(o(d(V)[e].name),1)]),_:2},1032,[`for`]),c(d(b),{id:`attacker-${e}`,"model-value":W.value[e]??0,"onUpdate:modelValue":t=>W.value[e]=typeof t==`number`?t:0,type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`model-value`,`onUpdate:modelValue`])]))),128))])]),f(`div`,null,[f(`h3`,k,o(d(B)(`simulatorView.techLevels`)),1),f(`div`,A,[(t(),p(u,null,r(H,e=>f(`div`,{key:e,class:`space-y-1`},[c(d(T),{for:`attacker-${e}`,class:`text-xs`},{default:i(()=>[s(o(d(B)(`simulatorView.${e}`)),1)]),_:2},1032,[`for`]),c(d(b),{id:`attacker-${e}`,modelValue:K.value[e],"onUpdate:modelValue":t=>K.value[e]=t,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])])),64))])])]),_:1})]),_:1})]),_:1}),c(d(E),{value:`defender`,class:`mt-4`},{default:i(()=>[c(d(C),null,{default:i(()=>[c(d(S),null,{default:i(()=>[c(d(x),null,{default:i(()=>[s(o(d(B)(`simulatorView.defenderConfig`)),1)]),_:1}),c(d(g),null,{default:i(()=>[s(o(d(B)(`simulatorView.defenderConfigDesc`)),1)]),_:1})]),_:1}),c(d(w),{class:`space-y-4`},{default:i(()=>[f(`div`,null,[f(`h3`,j,o(d(B)(`simulatorView.fleet`)),1),f(`div`,M,[(t(!0),p(u,null,r(Object.values(d(_)),e=>(t(),p(`div`,{key:e,class:`space-y-1`},[c(d(T),{for:`defender-${e}`,class:`text-xs`},{default:i(()=>[s(o(d(V)[e].name),1)]),_:2},1032,[`for`]),c(d(b),{id:`defender-${e}`,"model-value":q.value[e]??0,"onUpdate:modelValue":t=>q.value[e]=typeof t==`number`?t:0,type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`model-value`,`onUpdate:modelValue`])]))),128))])]),f(`div`,null,[f(`h3`,N,o(d(B)(`simulatorView.defenseStructures`)),1),f(`div`,P,[(t(!0),p(u,null,r(Object.values(d(v)),e=>(t(),p(`div`,{key:e,class:`space-y-1`},[c(d(T),{for:`defense-${e}`,class:`text-xs`},{default:i(()=>[s(o(d(fe)[e].name),1)]),_:2},1032,[`for`]),c(d(b),{id:`defense-${e}`,"model-value":Y.value[e]??0,"onUpdate:modelValue":t=>Y.value[e]=typeof t==`number`?t:0,type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`model-value`,`onUpdate:modelValue`])]))),128))])]),f(`div`,null,[f(`h3`,F,o(d(B)(`simulatorView.techLevels`)),1),f(`div`,I,[(t(),p(u,null,r(H,e=>f(`div`,{key:e,class:`space-y-1`},[c(d(T),{for:`defender-${e}`,class:`text-xs`},{default:i(()=>[s(o(d(B)(`simulatorView.${e}`)),1)]),_:2},1032,[`for`]),c(d(b),{id:`defender-${e}`,modelValue:X.value[e],"onUpdate:modelValue":t=>X.value[e]=t,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])])),64))])]),f(`div`,null,[f(`h3`,L,o(d(B)(`simulatorView.defenderResources`)),1),f(`div`,R,[(t(),p(u,null,r(pe,e=>f(`div`,{key:e.key,class:`space-y-1`},[c(d(T),{for:`defender-${e.key}`,class:`text-xs flex items-center gap-1`},{default:i(()=>[c(re,{type:e.key,size:`sm`},null,8,[`type`]),s(` `+o(d(B)(`resources.${e.key}`)),1)]),_:2},1032,[`for`]),c(d(b),{id:`defender-${e.key}`,modelValue:Z.value[e.key],"onUpdate:modelValue":t=>Z.value[e.key]=t,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])])),64))])])]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),f(`div`,z,[c(d(y),{onClick:me,class:`flex-1`,size:`lg`},{default:i(()=>[c(d(h),{class:`h-4 w-4 mr-2`}),s(` `+o(d(B)(`simulatorView.startSimulation`)),1)]),_:1}),c(d(y),{onClick:he,variant:`outline`,size:`lg`},{default:i(()=>[c(d(ee),{class:`h-4 w-4 mr-2`}),s(` `+o(d(B)(`simulatorView.reset`)),1)]),_:1})]),c(ce,{open:$.value,"onUpdate:open":n[1]||=e=>$.value=e,report:Q.value},null,8,[`open`,`report`])]))}});export{B as default}; \ No newline at end of file diff --git a/docs/assets/BattleSimulatorView-C7D7Sz5R.js b/docs/assets/BattleSimulatorView-C7D7Sz5R.js deleted file mode 100644 index 1a2f26b..0000000 --- a/docs/assets/BattleSimulatorView-C7D7Sz5R.js +++ /dev/null @@ -1 +0,0 @@ -import{$t as e,En as t,Gn as n,Gt as r,Ln as i,Q as a,Qt as o,Vn as s,Xn as c,Yt as l,en as u,gn as d,mn as f,ot as p,tn as ee}from"./game-logic-Bi1l7y4K.js";import"./vendor-pinia-DqhKuBjp.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-Dr0JspcV.js";import"./vendor-others-DTUzJ7S-.js";import"./vendor-reka-ui-BEHIKScj.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CJcfYqoW.js";import{c as te,g as ne,p as m,t as h}from"./vendor-icons-z9V6Jdbh.js";import"./TooltipProvider-BwjgS8_x.js";import{t as g}from"./CardDescription-BSLS07AU.js";import{_,f as v}from"./game-config-CG6z6nnH.js";import{K as re,L as y,N as ie,W as b,_ as x,b as S,g as C,v as w,y as T}from"./index-BT5w6et-.js";import{t as E}from"./useGameConfig-b98LOtBY.js";import{i as ae,n as oe,r as D,t as O}from"./TabsTrigger-DrosU7aN.js";import{t as se}from"./BattleReportDialog-CGjL16c6.js";var ce={class:`container mx-auto p-4 sm:p-6 space-y-6`},le={class:`text-2xl sm:text-3xl font-bold`},ue={class:`text-sm font-medium mb-3`},de={class:`grid grid-cols-2 md:grid-cols-3 gap-3`},k={class:`text-sm font-medium mb-3`},A={class:`grid grid-cols-3 gap-3`},j={class:`text-sm font-medium mb-3`},M={class:`grid grid-cols-2 md:grid-cols-3 gap-3`},N={class:`text-sm font-medium mb-3`},P={class:`grid grid-cols-2 md:grid-cols-3 gap-3`},F={class:`text-sm font-medium mb-3`},I={class:`grid grid-cols-3 gap-3`},L={class:`text-sm font-medium mb-3`},R={class:`grid grid-cols-3 gap-3`},z={class:`flex gap-2`},B=ee({__name:`BattleSimulatorView`,setup(ee){let{t:B}=re(),{SHIPS:V,DEFENSES:fe}=E(),H=[`weapon`,`shield`,`armor`],pe=[{key:`metal`},{key:`crystal`},{key:`deuterium`}],U=()=>{let e={};return Object.values(_).forEach(t=>{e[t]=0}),e},W=i(U()),G=i(`attacker`),K=i({weapon:0,shield:0,armor:0}),q=i(U()),J=()=>{let e={};return Object.values(v).forEach(t=>{e[t]=0}),e},Y=i(J()),X=i({weapon:0,shield:0,armor:0}),Z=i({metal:1e5,crystal:5e4,deuterium:25e3,darkMatter:100,energy:0}),Q=i(null),$=i(!1),me=async()=>{let e={ships:s(W.value),weaponTech:K.value.weapon,shieldTech:K.value.shield,armorTech:K.value.armor},t={ships:s(q.value),defense:s(Y.value),weaponTech:X.value.weapon,shieldTech:X.value.shield,armorTech:X.value.armor},n=await a.simulateBattle({attacker:e,defender:t}),r=n.winner===`attacker`?await a.calculatePlunder({defenderResources:s(Z.value),attackerFleet:n.attackerRemaining}):{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},i=await a.calculateDebris({attackerLosses:n.attackerLosses,defenderLosses:n.defenderLosses}),o=p(i)/100;Q.value={id:`sim_${Date.now()}`,timestamp:Date.now(),attackerId:`simulator_attacker`,defenderId:`simulator_defender`,attackerPlanetId:`sim_attacker`,defenderPlanetId:`sim_defender`,attackerFleet:W.value,defenderFleet:q.value,defenderDefense:Y.value,attackerLosses:n.attackerLosses,defenderLosses:n.defenderLosses,winner:n.winner,plunder:r,debrisField:i,rounds:n.rounds,attackerRemaining:n.attackerRemaining,defenderRemaining:n.defenderRemaining,roundDetails:n.roundDetails,moonChance:o},$.value=!0},he=()=>{W.value=U(),q.value=U(),Y.value=J(),K.value={weapon:0,shield:0,armor:0},X.value={weapon:0,shield:0,armor:0},Q.value=null,$.value=!1};return(i,a)=>(f(),o(`div`,ce,[l(`h1`,le,c(n(B)(`simulatorView.title`)),1),u(n(ae),{modelValue:G.value,"onUpdate:modelValue":a[0]||=e=>G.value=e,class:`w-full`},{default:t(()=>[u(n(oe),{class:`grid w-full grid-cols-2`},{default:t(()=>[u(n(O),{value:`attacker`},{default:t(()=>[u(n(te),{class:`h-4 w-4 mr-2`}),e(` `+c(n(B)(`simulatorView.attacker`)),1)]),_:1}),u(n(O),{value:`defender`},{default:t(()=>[u(n(m),{class:`h-4 w-4 mr-2`}),e(` `+c(n(B)(`simulatorView.defender`)),1)]),_:1})]),_:1}),u(n(D),{value:`attacker`,class:`mt-4`},{default:t(()=>[u(n(S),null,{default:t(()=>[u(n(w),null,{default:t(()=>[u(n(x),null,{default:t(()=>[e(c(n(B)(`simulatorView.attackerConfig`)),1)]),_:1}),u(n(g),null,{default:t(()=>[e(c(n(B)(`simulatorView.attackerConfigDesc`)),1)]),_:1})]),_:1}),u(n(T),{class:`space-y-4`},{default:t(()=>[l(`div`,null,[l(`h3`,ue,c(n(B)(`simulatorView.fleet`)),1),l(`div`,de,[(f(!0),o(r,null,d(Object.values(n(_)),r=>(f(),o(`div`,{key:r,class:`space-y-1`},[u(n(C),{for:`attacker-${r}`,class:`text-xs`},{default:t(()=>[e(c(n(V)[r].name),1)]),_:2},1032,[`for`]),u(n(y),{id:`attacker-${r}`,"model-value":W.value[r]??0,"onUpdate:modelValue":e=>W.value[r]=typeof e==`number`?e:0,type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`model-value`,`onUpdate:modelValue`])]))),128))])]),l(`div`,null,[l(`h3`,k,c(n(B)(`simulatorView.techLevels`)),1),l(`div`,A,[(f(),o(r,null,d(H,r=>l(`div`,{key:r,class:`space-y-1`},[u(n(C),{for:`attacker-${r}`,class:`text-xs`},{default:t(()=>[e(c(n(B)(`simulatorView.${r}`)),1)]),_:2},1032,[`for`]),u(n(y),{id:`attacker-${r}`,modelValue:K.value[r],"onUpdate:modelValue":e=>K.value[r]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])])),64))])])]),_:1})]),_:1})]),_:1}),u(n(D),{value:`defender`,class:`mt-4`},{default:t(()=>[u(n(S),null,{default:t(()=>[u(n(w),null,{default:t(()=>[u(n(x),null,{default:t(()=>[e(c(n(B)(`simulatorView.defenderConfig`)),1)]),_:1}),u(n(g),null,{default:t(()=>[e(c(n(B)(`simulatorView.defenderConfigDesc`)),1)]),_:1})]),_:1}),u(n(T),{class:`space-y-4`},{default:t(()=>[l(`div`,null,[l(`h3`,j,c(n(B)(`simulatorView.fleet`)),1),l(`div`,M,[(f(!0),o(r,null,d(Object.values(n(_)),r=>(f(),o(`div`,{key:r,class:`space-y-1`},[u(n(C),{for:`defender-${r}`,class:`text-xs`},{default:t(()=>[e(c(n(V)[r].name),1)]),_:2},1032,[`for`]),u(n(y),{id:`defender-${r}`,"model-value":q.value[r]??0,"onUpdate:modelValue":e=>q.value[r]=typeof e==`number`?e:0,type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`model-value`,`onUpdate:modelValue`])]))),128))])]),l(`div`,null,[l(`h3`,N,c(n(B)(`simulatorView.defenseStructures`)),1),l(`div`,P,[(f(!0),o(r,null,d(Object.values(n(v)),r=>(f(),o(`div`,{key:r,class:`space-y-1`},[u(n(C),{for:`defense-${r}`,class:`text-xs`},{default:t(()=>[e(c(n(fe)[r].name),1)]),_:2},1032,[`for`]),u(n(y),{id:`defense-${r}`,"model-value":Y.value[r]??0,"onUpdate:modelValue":e=>Y.value[r]=typeof e==`number`?e:0,type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`model-value`,`onUpdate:modelValue`])]))),128))])]),l(`div`,null,[l(`h3`,F,c(n(B)(`simulatorView.techLevels`)),1),l(`div`,I,[(f(),o(r,null,d(H,r=>l(`div`,{key:r,class:`space-y-1`},[u(n(C),{for:`defender-${r}`,class:`text-xs`},{default:t(()=>[e(c(n(B)(`simulatorView.${r}`)),1)]),_:2},1032,[`for`]),u(n(y),{id:`defender-${r}`,modelValue:X.value[r],"onUpdate:modelValue":e=>X.value[r]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])])),64))])]),l(`div`,null,[l(`h3`,L,c(n(B)(`simulatorView.defenderResources`)),1),l(`div`,R,[(f(),o(r,null,d(pe,r=>l(`div`,{key:r.key,class:`space-y-1`},[u(n(C),{for:`defender-${r.key}`,class:`text-xs flex items-center gap-1`},{default:t(()=>[u(ie,{type:r.key,size:`sm`},null,8,[`type`]),e(` `+c(n(B)(`resources.${r.key}`)),1)]),_:2},1032,[`for`]),u(n(y),{id:`defender-${r.key}`,modelValue:Z.value[r.key],"onUpdate:modelValue":e=>Z.value[r.key]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`h-8`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])])),64))])])]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),l(`div`,z,[u(n(b),{onClick:me,class:`flex-1`,size:`lg`},{default:t(()=>[u(n(h),{class:`h-4 w-4 mr-2`}),e(` `+c(n(B)(`simulatorView.startSimulation`)),1)]),_:1}),u(n(b),{onClick:he,variant:`outline`,size:`lg`},{default:t(()=>[u(n(ne),{class:`h-4 w-4 mr-2`}),e(` `+c(n(B)(`simulatorView.reset`)),1)]),_:1})]),u(se,{open:$.value,"onUpdate:open":a[1]||=e=>$.value=e,report:Q.value},null,8,[`open`,`report`])]))}});export{B as default}; \ No newline at end of file diff --git a/docs/assets/BuildingsView-4mX0ZiqE.js b/docs/assets/BuildingsView-4mX0ZiqE.js deleted file mode 100644 index d0f2dd1..0000000 --- a/docs/assets/BuildingsView-4mX0ZiqE.js +++ /dev/null @@ -1,7 +0,0 @@ -import{$t as e,At as t,Ct as n,Dn as r,En as i,Gn as a,Gt as o,Jt as s,Ln as c,Ot as ee,Qt as l,Vt as te,Xn as u,Xt as d,Yn as ne,Yt as f,Zt as p,_ as m,b as h,en as g,g as re,gn as _,jt as ie,kt as ae,m as oe,mn as v,p as se,qn as y,tn as ce,v as le,y as b}from"./game-logic-Bi1l7y4K.js";import"./vendor-pinia-DqhKuBjp.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-Dr0JspcV.js";import"./vendor-others-DTUzJ7S-.js";import"./vendor-reka-ui-BEHIKScj.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CJcfYqoW.js";import{B as ue,M as x}from"./vendor-icons-z9V6Jdbh.js";import{t as S}from"./CardDescription-BSLS07AU.js";import{d as C,v as de}from"./game-config-CG6z6nnH.js";import{D as fe,H as pe,K as w,N as T,W as E,_ as D,a as O,b as me,c as he,f as k,h as ge,i as A,l as j,o as M,p as N,q as P,r as F,s as I,u as L,v as _e,y as ve}from"./index-BT5w6et-.js";import{t as ye}from"./useGameConfig-b98LOtBY.js";import{t as be}from"./CardUnlockOverlay-DYfgGY6J.js";var xe={key:0,class:`container mx-auto p-4 sm:p-6`},Se={class:`text-2xl sm:text-3xl font-bold mb-4 sm:mb-6`},Ce={class:`mb-4 sm:mb-6 p-3 sm:p-4 bg-muted/50 rounded-lg border`},we={class:`flex items-center justify-between`},Te={class:`text-sm sm:text-base font-medium flex items-center gap-2`},Ee={class:`text-sm sm:text-base font-bold`},De={class:`mt-2`},Oe={class:`w-full bg-background rounded-full h-2.5 sm:h-3 overflow-hidden`},ke={class:`grid grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4`},Ae={class:`mb-2`},je={class:`flex flex-col sm:flex-row sm:justify-between sm:items-start gap-2`},Me={class:`space-y-3`},R={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},Ne={class:`text-muted-foreground mb-1 sm:mb-2`},Pe={class:`space-y-1 sm:space-y-1.5`},Fe={class:`text-xs`},Ie={class:`text-xs sm:text-sm space-y-0.5 sm:space-y-1`},Le={class:`flex items-center gap-1.5 text-muted-foreground`},Re={class:`flex items-center gap-1.5 text-muted-foreground`},ze={key:1,class:`text-xs text-muted-foreground`},Be={class:`flex gap-2 flex-wrap`},Ve={key:0},z=ce({__name:`BuildingsView`,setup(ce){let z=P(),He=fe(),{t:B}=w(),{BUILDINGS:V,TECHNOLOGIES:Ue}=ye(),H=s(()=>z.currentPlanet),U=c(!1),W=c(``),G=c(``),K=c(!1),q=c(``),J=c(null),We=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`darkMatter`}],Ge=s(()=>H.value?Object.values(C).filter(e=>{let t=V.value[e];return H.value.isMoon?t.moonOnly===!0:t.moonOnly!==!0}):[]),Ke=e=>{if(!z.currentPlanet||!m(z.currentPlanet,e,z.player.technologies,z.player.officers).valid)return!1;let t=oe(z.currentPlanet,e,z.player.officers);return z.currentPlanet.buildQueue.push(t),!0},Y=e=>ie(e),qe=e=>{if(!Z(e)){W.value=B(`common.requirementsNotMet`),G.value=Ye(e),U.value=!0;return}Ke(e)||(W.value=B(`buildingsView.upgradeFailed`),G.value=B(`buildingsView.upgradeFailedMessage`),U.value=!0)},X=e=>H.value?.buildings[e]||0,Z=e=>{if(!H.value)return!1;let t=V.value[e],n=b(t,X(e)+1);return!n||Object.keys(n).length===0?!0:le(H.value,z.player.technologies,n)},Je=e=>{if(!H.value)return B(`buildingsView.upgrade`);let t=V.value[e],n=X(e);return t.maxLevel!==void 0&&n>=t.maxLevel?B(`buildingsView.maxLevelReached`):H.value.buildQueue.length>0||Z(e)?B(`buildingsView.upgrade`):B(`buildingsView.requirementsNotMet`)},Ye=e=>{let t=V.value[e],n=b(t,X(e)+1);if(!n||!H.value)return``;let r=[];for(let[e,t]of Object.entries(n))if(Object.values(C).includes(e)){let n=e,i=H.value.buildings[n]||0,a=V.value[n]?.name||n,o=i>=t?`✓`:`✗`;r.push(`${o} ${a}: Lv ${t} (${B(`common.current`)}: Lv ${i})`)}else if(Object.values(de).includes(e)){let n=e,i=z.player.technologies[n]||0,a=Ue.value[n]?.name||n,o=i>=t?`✓`:`✗`;r.push(`${o} ${a}: Lv ${t} (${B(`common.current`)}: Lv ${i})`)}return r.join(` -`)},Xe=e=>{if(!H.value)return!1;let t=V.value[e],r=X(e);if(t.maxLevel!==void 0&&r>=t.maxLevel)return!1;let i=n(z.player.officers,Date.now()),a=h(H.value,i.additionalBuildQueue);if(H.value.buildQueue.filter(e=>e.type===`building`||e.type===`demolish`).length>=a||!m(H.value,e,z.player.technologies,z.player.officers).valid)return!1;let o=Q(e,r+1);return H.value.resources.metal>=o.metal&&H.value.resources.crystal>=o.crystal&&H.value.resources.deuterium>=o.deuterium&&H.value.resources.darkMatter>=o.darkMatter},Q=(e,t)=>ee(e,t),Ze=(e,t)=>{if(!H.value)return 0;let r=n(z.player.officers,Date.now()),i=H.value.buildings[C.RoboticsFactory]||0,a=H.value.buildings[C.NaniteFactory]||0;return ae(e,t,r.buildingSpeedBonus,i,a)},Qe=e=>{if(!z.currentPlanet||!re(z.currentPlanet,e,z.player.officers).valid)return!1;let t=se(z.currentPlanet,e,z.player.officers);return z.currentPlanet.buildQueue.push(t),!0},$e=e=>{let t=V.value[e].name,n=$(e);q.value=`${B(`buildingsView.confirmDemolishMessage`)}: ${t} - -${B(`buildingsView.demolishRefund`)}: -${B(`resources.metal`)}: ${k(n.metal)} -${B(`resources.crystal`)}: ${k(n.crystal)} -${B(`resources.deuterium`)}: ${k(n.deuterium)}${n.darkMatter>0?`\n${B(`resources.darkMatter`)}: ${k(n.darkMatter)}`:``}`,J.value=e,K.value=!0},et=()=>{J.value&&(Qe(J.value)||(W.value=B(`buildingsView.demolishFailed`),G.value=B(`buildingsView.demolishFailedMessage`),U.value=!0)),K.value=!1,J.value=null},tt=e=>{if(!H.value||X(e)<=0)return!1;let t=n(z.player.officers,Date.now()),r=h(H.value,t.additionalBuildQueue);return!(H.value.buildQueue.filter(e=>e.type===`building`||e.type===`demolish`).length>=r)},$=e=>t(e,X(e));return(t,n)=>H.value?(v(),l(`div`,xe,[f(`h1`,Se,u(a(B)(`buildingsView.title`)),1),f(`div`,Ce,[f(`div`,we,[f(`div`,Te,[g(a(x),{size:16}),e(` `+u(a(B)(`buildingsView.spaceUsage`))+`: `,1)]),f(`div`,Ee,[f(`span`,{class:y(Y(H.value)>H.value.maxSpace?`text-destructive`:`text-primary`)},u(a(k)(Y(H.value))),3),n[2]||=f(`span`,{class:`text-muted-foreground mx-1`},`/`,-1),f(`span`,null,u(a(k)(H.value.maxSpace)),1)])]),f(`div`,De,[f(`div`,Oe,[f(`div`,{class:y([`h-full transition-all duration-300`,Y(H.value)>H.value.maxSpace?`bg-destructive`:`bg-primary`]),style:ne({width:`${Math.min(Y(H.value)/H.value.maxSpace*100,100)}%`})},null,6)])])]),f(`div`,ke,[(v(!0),l(o,null,_(Ge.value,t=>(v(),d(a(me),{key:t,class:`relative`},{default:i(()=>[g(be,{requirements:a(V)[t].requirements,currentLevel:X(t)},null,8,[`requirements`,`currentLevel`]),g(a(_e),null,{default:i(()=>[f(`div`,Ae,[f(`div`,je,[g(a(D),{class:`text-sm sm:text-base lg:text-lg cursor-pointer hover:text-primary transition-colors underline decoration-dotted underline-offset-4 order-2 sm:order-1`,onClick:e=>a(He).openBuilding(t,X(t))},{default:i(()=>[e(u(a(V)[t].name),1)]),_:2},1032,[`onClick`]),g(a(pe),{variant:`secondary`,class:`text-xs whitespace-nowrap self-start order-1 sm:order-2`},{default:i(()=>[e(` Lv `+u(X(t)),1)]),_:2},1024)])]),g(a(S),{class:`text-xs sm:text-sm`},{default:i(()=>[e(u(a(V)[t].description),1)]),_:2},1024)]),_:2},1024),g(a(ve),null,{default:i(()=>[f(`div`,Me,[f(`div`,R,[f(`p`,Ne,u(a(B)(`buildingsView.upgradeCost`))+`:`,1),f(`div`,Pe,[(v(),l(o,null,_(We,e=>r(f(`div`,{key:e.key,class:`flex items-center gap-1.5 sm:gap-2`},[g(T,{type:e.key,size:`sm`},null,8,[`type`]),f(`span`,Fe,u(a(B)(`resources.${e.key}`))+`:`,1),f(`span`,{class:y([`font-medium text-xs sm:text-sm`,a(ge)(H.value.resources[e.key],Q(t,X(t)+1)[e.key])])},u(a(k)(Q(t,X(t)+1)[e.key])),3)]),[[te,e.key!==`darkMatter`||Q(t,X(t)+1).darkMatter>0]])),64))])]),f(`div`,Ie,[f(`div`,Le,[g(a(ue),{size:14,class:`flex-shrink-0`}),f(`span`,null,u(a(N)(Ze(t,X(t)+1))),1)]),f(`div`,Re,[g(a(x),{size:14,class:`flex-shrink-0`}),f(`span`,null,u(a(V)[t].spaceUsage),1)])]),g(a(E),{onClick:e=>qe(t),disabled:!Xe(t),class:`w-full`},{default:i(()=>[e(u(Je(t)),1)]),_:2},1032,[`onClick`,`disabled`]),X(t)>0?(v(),d(a(E),{key:0,onClick:e=>$e(t),disabled:!tt(t),variant:`destructive`,class:`w-full`},{default:i(()=>[e(u(a(B)(`buildingsView.demolish`)),1)]),_:1},8,[`onClick`,`disabled`])):p(``,!0),X(t)>0?(v(),l(`div`,ze,[f(`p`,null,u(a(B)(`buildingsView.demolishRefund`))+`:`,1),f(`div`,Be,[f(`span`,null,u(a(k)($(t).metal))+` `+u(a(B)(`resources.metal`)),1),f(`span`,null,u(a(k)($(t).crystal))+` `+u(a(B)(`resources.crystal`)),1),f(`span`,null,u(a(k)($(t).deuterium))+` `+u(a(B)(`resources.deuterium`)),1),$(t).darkMatter>0?(v(),l(`span`,Ve,u(a(k)($(t).darkMatter))+` `+u(a(B)(`resources.darkMatter`)),1)):p(``,!0)])])):p(``,!0)])]),_:2},1024)]),_:2},1024))),128))]),g(a(L),{open:U.value,"onUpdate:open":n[0]||=e=>U.value=e},{default:i(()=>[g(a(I),null,{default:i(()=>[g(a(A),null,{default:i(()=>[g(a(F),null,{default:i(()=>[e(u(W.value),1)]),_:1}),g(a(M),{class:`whitespace-pre-line`},{default:i(()=>[e(u(G.value),1)]),_:1})]),_:1}),g(a(O),null,{default:i(()=>[g(a(j),null,{default:i(()=>[e(u(a(B)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),g(a(L),{open:K.value,"onUpdate:open":n[1]||=e=>K.value=e},{default:i(()=>[g(a(I),null,{default:i(()=>[g(a(A),null,{default:i(()=>[g(a(F),null,{default:i(()=>[e(u(a(B)(`buildingsView.confirmDemolish`)),1)]),_:1}),g(a(M),{class:`whitespace-pre-line`},{default:i(()=>[e(u(q.value),1)]),_:1})]),_:1}),g(a(O),null,{default:i(()=>[g(a(he),null,{default:i(()=>[e(u(a(B)(`common.cancel`)),1)]),_:1}),g(a(j),{onClick:et},{default:i(()=>[e(u(a(B)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])])):p(``,!0)}});export{z as default}; \ No newline at end of file diff --git a/docs/assets/BuildingsView-BwpaZTPf.js b/docs/assets/BuildingsView-BwpaZTPf.js new file mode 100644 index 0000000..0fe7f9d --- /dev/null +++ b/docs/assets/BuildingsView-BwpaZTPf.js @@ -0,0 +1,7 @@ +import{$ as e,$t as t,Bt as n,En as r,Ht as i,On as a,Pt as o,Rn as s,Vt as ee,X as te,Yn as c,Z as ne,ar as l,cn as u,cr as d,dn as f,et as p,fn as m,ln as h,nt as g,on as _,pn as re,rn as v,rr as y,rt as b,sn as x,sr as ie,tt as ae,un as S,zn as oe,zt as se}from"./game-logic-BBFCPVtv.js";import"./vendor-pinia-L_8CmDWM.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-BC9uiVvf.js";import"./vendor-others-Bce0hM6h.js";import"./vendor-reka-ui-DR3m_AkV.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-Djj-oRw9.js";import{F as C,U as ce}from"./vendor-icons-Ccm2_GPI.js";import{t as le}from"./CardDescription-DduF5EVY.js";import{d as w,v as T}from"./game-config-DRP-gbpS.js";import{$ as ue,A as E,F as D,I as O,J as k,K as de,L as fe,M as A,N as j,P as pe,X as me,d as he,f as ge,j as M,k as N,l as P,m as F,o as I,p as L,s as _e,x as ve}from"./index-B4KMqZ_y.js";import{t as ye}from"./useGameConfig-DLqfPHtW.js";import{t as be}from"./CardUnlockOverlay-CspXlcWR.js";var xe={key:0,class:`container mx-auto p-4 sm:p-6`},Se={class:`text-2xl sm:text-3xl font-bold mb-4 sm:mb-6`},Ce={class:`mb-4 sm:mb-6 p-3 sm:p-4 bg-muted/50 rounded-lg border`},we={class:`flex items-center justify-between`},Te={class:`text-sm sm:text-base font-medium flex items-center gap-2`},Ee={class:`text-sm sm:text-base font-bold`},De={class:`mt-2`},Oe={class:`w-full bg-background rounded-full h-2.5 sm:h-3 overflow-hidden`},ke={class:`grid grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4`},Ae={class:`mb-2`},je={class:`flex flex-col sm:flex-row sm:justify-between sm:items-start gap-2`},Me={class:`space-y-3`},Ne={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},Pe={class:`text-muted-foreground mb-1 sm:mb-2`},Fe={class:`space-y-1 sm:space-y-1.5`},Ie={class:`text-xs`},Le={class:`text-xs sm:text-sm space-y-0.5 sm:space-y-1`},Re={class:`flex items-center gap-1.5 text-muted-foreground`},ze={class:`flex items-center gap-1.5 text-muted-foreground`},Be={key:1,class:`text-xs text-muted-foreground`},Ve={class:`flex gap-2 flex-wrap`},He={key:0},R=re({__name:`BuildingsView`,setup(re){let R=ue(),Ue=ve(),{t:z}=me(),{BUILDINGS:B,TECHNOLOGIES:We}=ye(),V=_(()=>R.currentPlanet),H=c(!1),U=c(``),W=c(``),G=c(!1),K=c(``),q=c(null),Ge=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`darkMatter`}],Ke=_(()=>V.value?Object.values(w).filter(e=>{let t=B.value[e];return V.value.isMoon?t.moonOnly===!0:t.moonOnly!==!0}):[]),qe=e=>{if(!R.currentPlanet||!p(R.currentPlanet,e,R.player.technologies,R.player.officers).valid)return!1;let t=ne(R.currentPlanet,e,R.player.officers);return R.currentPlanet.buildQueue.push(t),!0},J=e=>i(e),Je=e=>{if(!X(e)){U.value=z(`common.requirementsNotMet`),W.value=Ye(e),H.value=!0;return}qe(e)||(U.value=z(`buildingsView.upgradeFailed`),W.value=z(`buildingsView.upgradeFailedMessage`),H.value=!0)},Y=e=>V.value?.buildings[e]||0,X=e=>{if(!V.value)return!1;let t=B.value[e],n=g(t,Y(e)+1);return!n||Object.keys(n).length===0?!0:ae(V.value,R.player.technologies,n)},Z=e=>{if(!V.value)return z(`buildingsView.upgrade`);let t=B.value[e],n=Y(e);return t.maxLevel!==void 0&&n>=t.maxLevel?z(`buildingsView.maxLevelReached`):V.value.buildQueue.length>0||X(e)?z(`buildingsView.upgrade`):z(`buildingsView.requirementsNotMet`)},Ye=e=>{let t=B.value[e],n=g(t,Y(e)+1);if(!n||!V.value)return``;let r=[];for(let[e,t]of Object.entries(n))if(Object.values(w).includes(e)){let n=e,i=V.value.buildings[n]||0,a=B.value[n]?.name||n,o=i>=t?`✓`:`✗`;r.push(`${o} ${a}: Lv ${t} (${z(`common.current`)}: Lv ${i})`)}else if(Object.values(T).includes(e)){let n=e,i=R.player.technologies[n]||0,a=We.value[n]?.name||n,o=i>=t?`✓`:`✗`;r.push(`${o} ${a}: Lv ${t} (${z(`common.current`)}: Lv ${i})`)}return r.join(` +`)},Xe=e=>{if(!V.value)return!1;let t=B.value[e],n=Y(e);if(t.maxLevel!==void 0&&n>=t.maxLevel)return!1;let r=o(R.player.officers,Date.now()),i=b(V.value,r.additionalBuildQueue);if(V.value.buildQueue.filter(e=>e.type===`building`||e.type===`demolish`).length>=i||!p(V.value,e,R.player.technologies,R.player.officers).valid)return!1;let a=Q(e,n+1);return V.value.resources.metal>=a.metal&&V.value.resources.crystal>=a.crystal&&V.value.resources.deuterium>=a.deuterium&&V.value.resources.darkMatter>=a.darkMatter},Q=(e,t)=>se(e,t),Ze=(e,t)=>{if(!V.value)return 0;let r=o(R.player.officers,Date.now()),i=V.value.buildings[w.RoboticsFactory]||0,a=V.value.buildings[w.NaniteFactory]||0;return n(e,t,r.buildingSpeedBonus,i,a)},Qe=t=>{if(!R.currentPlanet||!e(R.currentPlanet,t,R.player.officers).valid)return!1;let n=te(R.currentPlanet,t,R.player.officers);return R.currentPlanet.buildQueue.push(n),!0},$e=e=>{let t=B.value[e].name,n=$(e);K.value=`${z(`buildingsView.confirmDemolishMessage`)}: ${t} + +${z(`buildingsView.demolishRefund`)}: +${z(`resources.metal`)}: ${I(n.metal)} +${z(`resources.crystal`)}: ${I(n.crystal)} +${z(`resources.deuterium`)}: ${I(n.deuterium)}${n.darkMatter>0?`\n${z(`resources.darkMatter`)}: ${I(n.darkMatter)}`:``}`,q.value=e,G.value=!0},et=()=>{q.value&&(Qe(q.value)||(U.value=z(`buildingsView.demolishFailed`),W.value=z(`buildingsView.demolishFailedMessage`),H.value=!0)),G.value=!1,q.value=null},tt=e=>{if(!V.value||Y(e)<=0)return!1;let t=o(R.player.officers,Date.now()),n=b(V.value,t.additionalBuildQueue);return!(V.value.buildQueue.filter(e=>e.type===`building`||e.type===`demolish`).length>=n)},$=e=>ee(e,Y(e));return(e,n)=>V.value?(r(),S(`div`,xe,[x(`h1`,Se,d(y(z)(`buildingsView.title`)),1),x(`div`,Ce,[x(`div`,we,[x(`div`,Te,[m(y(C),{size:16}),f(` `+d(y(z)(`buildingsView.spaceUsage`))+`: `,1)]),x(`div`,Ee,[x(`span`,{class:l(J(V.value)>V.value.maxSpace?`text-destructive`:`text-primary`)},d(y(I)(J(V.value))),3),n[2]||=x(`span`,{class:`text-muted-foreground mx-1`},`/`,-1),x(`span`,null,d(y(I)(V.value.maxSpace)),1)])]),x(`div`,De,[x(`div`,Oe,[x(`div`,{class:l([`h-full transition-all duration-300`,J(V.value)>V.value.maxSpace?`bg-destructive`:`bg-primary`]),style:ie({width:`${Math.min(J(V.value)/V.value.maxSpace*100,100)}%`})},null,6)])])]),x(`div`,ke,[(r(!0),S(v,null,a(Ke.value,e=>(r(),u(y(F),{key:e,class:`relative`},{default:s(()=>[m(be,{requirements:y(B)[e].requirements,currentLevel:Y(e)},null,8,[`requirements`,`currentLevel`]),m(y(ge),null,{default:s(()=>[x(`div`,Ae,[x(`div`,je,[m(y(he),{class:`text-sm sm:text-base lg:text-lg cursor-pointer hover:text-primary transition-colors underline decoration-dotted underline-offset-4 order-2 sm:order-1`,onClick:t=>y(Ue).openBuilding(e,Y(e))},{default:s(()=>[f(d(y(B)[e].name),1)]),_:2},1032,[`onClick`]),m(y(de),{variant:`secondary`,class:`text-xs whitespace-nowrap self-start order-1 sm:order-2`},{default:s(()=>[f(` Lv `+d(Y(e)),1)]),_:2},1024)])]),m(y(le),{class:`text-xs sm:text-sm`},{default:s(()=>[f(d(y(B)[e].description),1)]),_:2},1024)]),_:2},1024),m(y(L),null,{default:s(()=>[x(`div`,Me,[x(`div`,Ne,[x(`p`,Pe,d(y(z)(`buildingsView.upgradeCost`))+`:`,1),x(`div`,Fe,[(r(),S(v,null,a(Ge,n=>oe(x(`div`,{key:n.key,class:`flex items-center gap-1.5 sm:gap-2`},[m(fe,{type:n.key,size:`sm`},null,8,[`type`]),x(`span`,Ie,d(y(z)(`resources.${n.key}`))+`:`,1),x(`span`,{class:l([`font-medium text-xs sm:text-sm`,y(P)(V.value.resources[n.key],Q(e,Y(e)+1)[n.key])])},d(y(I)(Q(e,Y(e)+1)[n.key])),3)]),[[t,n.key!==`darkMatter`||Q(e,Y(e)+1).darkMatter>0]])),64))])]),x(`div`,Le,[x(`div`,Re,[m(y(ce),{size:14,class:`flex-shrink-0`}),x(`span`,null,d(y(_e)(Ze(e,Y(e)+1))),1)]),x(`div`,ze,[m(y(C),{size:14,class:`flex-shrink-0`}),x(`span`,null,d(y(B)[e].spaceUsage),1)])]),m(y(k),{onClick:t=>Je(e),disabled:!Xe(e),class:`w-full`},{default:s(()=>[f(d(Z(e)),1)]),_:2},1032,[`onClick`,`disabled`]),Y(e)>0?(r(),u(y(k),{key:0,onClick:t=>$e(e),disabled:!tt(e),variant:`destructive`,class:`w-full`},{default:s(()=>[f(d(y(z)(`buildingsView.demolish`)),1)]),_:1},8,[`onClick`,`disabled`])):h(``,!0),Y(e)>0?(r(),S(`div`,Be,[x(`p`,null,d(y(z)(`buildingsView.demolishRefund`))+`:`,1),x(`div`,Ve,[x(`span`,null,d(y(I)($(e).metal))+` `+d(y(z)(`resources.metal`)),1),x(`span`,null,d(y(I)($(e).crystal))+` `+d(y(z)(`resources.crystal`)),1),x(`span`,null,d(y(I)($(e).deuterium))+` `+d(y(z)(`resources.deuterium`)),1),$(e).darkMatter>0?(r(),S(`span`,He,d(y(I)($(e).darkMatter))+` `+d(y(z)(`resources.darkMatter`)),1)):h(``,!0)])])):h(``,!0)])]),_:2},1024)]),_:2},1024))),128))]),m(y(O),{open:H.value,"onUpdate:open":n[0]||=e=>H.value=e},{default:s(()=>[m(y(j),null,{default:s(()=>[m(y(E),null,{default:s(()=>[m(y(N),null,{default:s(()=>[f(d(U.value),1)]),_:1}),m(y(A),{class:`whitespace-pre-line`},{default:s(()=>[f(d(W.value),1)]),_:1})]),_:1}),m(y(M),null,{default:s(()=>[m(y(D),null,{default:s(()=>[f(d(y(z)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),m(y(O),{open:G.value,"onUpdate:open":n[1]||=e=>G.value=e},{default:s(()=>[m(y(j),null,{default:s(()=>[m(y(E),null,{default:s(()=>[m(y(N),null,{default:s(()=>[f(d(y(z)(`buildingsView.confirmDemolish`)),1)]),_:1}),m(y(A),{class:`whitespace-pre-line`},{default:s(()=>[f(d(K.value),1)]),_:1})]),_:1}),m(y(M),null,{default:s(()=>[m(y(pe),null,{default:s(()=>[f(d(y(z)(`common.cancel`)),1)]),_:1}),m(y(D),{onClick:et},{default:s(()=>[f(d(y(z)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])])):h(``,!0)}});export{R as default}; \ No newline at end of file diff --git a/docs/assets/CardDescription-BSLS07AU.js b/docs/assets/CardDescription-BSLS07AU.js deleted file mode 100644 index 5e32ba2..0000000 --- a/docs/assets/CardDescription-BSLS07AU.js +++ /dev/null @@ -1 +0,0 @@ -import{Gn as e,Qt as t,_n as n,mn as r,qn as i,tn as a}from"./game-logic-Bi1l7y4K.js";import{G as o}from"./index-BT5w6et-.js";var s=a({__name:`CardDescription`,props:{class:{}},setup(a){let s=a;return(a,c)=>(r(),t(`p`,{"data-slot":`card-description`,class:i(e(o)(`text-muted-foreground text-sm`,s.class))},[n(a.$slots,`default`)],2))}});export{s as t}; \ No newline at end of file diff --git a/docs/assets/CardDescription-DduF5EVY.js b/docs/assets/CardDescription-DduF5EVY.js new file mode 100644 index 0000000..0534ee0 --- /dev/null +++ b/docs/assets/CardDescription-DduF5EVY.js @@ -0,0 +1 @@ +import{En as e,ar as t,kn as n,pn as r,rr as i,un as a}from"./game-logic-BBFCPVtv.js";import{Y as o}from"./index-B4KMqZ_y.js";var s=r({__name:`CardDescription`,props:{class:{}},setup(r){let s=r;return(r,c)=>(e(),a(`p`,{"data-slot":`card-description`,class:t(i(o)(`text-muted-foreground text-sm`,s.class))},[n(r.$slots,`default`)],2))}});export{s as t}; \ No newline at end of file diff --git a/docs/assets/CardUnlockOverlay-CspXlcWR.js b/docs/assets/CardUnlockOverlay-CspXlcWR.js new file mode 100644 index 0000000..53083f5 --- /dev/null +++ b/docs/assets/CardUnlockOverlay-CspXlcWR.js @@ -0,0 +1,2 @@ +import{En as e,Rn as t,Yn as n,cr as r,dn as i,fn as a,ln as o,on as s,pn as c,rr as l,sn as u,tt as d,un as f}from"./game-logic-BBFCPVtv.js";import{k as p}from"./vendor-icons-Ccm2_GPI.js";import{d as m,v as h}from"./game-config-DRP-gbpS.js";import{$ as g,A as _,F as v,I as y,J as b,M as x,N as S,X as C,j as w,k as T}from"./index-B4KMqZ_y.js";import{t as E}from"./useGameConfig-DLqfPHtW.js";var D={key:0,class:`absolute inset-0 z-10 bg-background/70 backdrop-blur-[2px] rounded-lg flex items-center justify-center`},O={class:`text-center p-4 space-y-2`},k={class:`flex justify-center`},A={class:`rounded-full bg-muted p-2`},j={class:`text-xs font-medium text-muted-foreground`},M=c({__name:`CardUnlockOverlay`,props:{requirements:{},currentLevel:{}},setup(c){let M=c,N=g(),{t:P}=C(),{BUILDINGS:F,TECHNOLOGIES:I}=E(),L=n(!1),R=n(``),z=n(``),B=s(()=>M.currentLevel!==void 0&&M.currentLevel>0||!M.requirements||!N.currentPlanet?!0:d(N.currentPlanet,N.player.technologies,M.requirements)),V=()=>{if(!M.requirements||!N.currentPlanet)return``;let e=[];for(let[t,n]of Object.entries(M.requirements))if(Object.values(m).includes(t)){let r=t,i=N.currentPlanet.buildings[r]||0,a=F.value[r]?.name||r,o=i>=n?`✓`:`✗`;e.push(`${o} ${a}: Lv ${n} (${P(`common.current`)}: Lv ${i})`)}else if(Object.values(h).includes(t)){let r=t,i=N.player.technologies[r]||0,a=I.value[r]?.name||r,o=i>=n?`✓`:`✗`;e.push(`${o} ${a}: Lv ${n} (${P(`common.current`)}: Lv ${i})`)}return e.join(` +`)},H=()=>{R.value=P(`common.requirementsNotMet`),z.value=V(),L.value=!0};return(n,s)=>B.value?o(``,!0):(e(),f(`div`,D,[u(`div`,O,[u(`div`,k,[u(`div`,A,[a(l(p),{size:20,class:`text-muted-foreground`})])]),u(`p`,j,r(l(P)(`common.locked`)),1),a(l(b),{variant:`outline`,size:`sm`,onClick:H,class:`text-xs`},{default:t(()=>[i(r(l(P)(`common.viewRequirements`)),1)]),_:1})]),a(l(y),{open:L.value,"onUpdate:open":s[0]||=e=>L.value=e},{default:t(()=>[a(l(S),null,{default:t(()=>[a(l(_),null,{default:t(()=>[a(l(T),null,{default:t(()=>[i(r(R.value),1)]),_:1}),a(l(x),{class:`whitespace-pre-line`},{default:t(()=>[i(r(z.value),1)]),_:1})]),_:1}),a(l(w),null,{default:t(()=>[a(l(v),null,{default:t(()=>[i(r(l(P)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{M as t}; \ No newline at end of file diff --git a/docs/assets/CardUnlockOverlay-DYfgGY6J.js b/docs/assets/CardUnlockOverlay-DYfgGY6J.js deleted file mode 100644 index a4cc0ab..0000000 --- a/docs/assets/CardUnlockOverlay-DYfgGY6J.js +++ /dev/null @@ -1,2 +0,0 @@ -import{$t as e,En as t,Gn as n,Jt as r,Ln as i,Qt as a,Xn as o,Yt as s,Zt as c,en as l,mn as u,tn as d,v as f}from"./game-logic-Bi1l7y4K.js";import{D as p}from"./vendor-icons-z9V6Jdbh.js";import{d as m,v as h}from"./game-config-CG6z6nnH.js";import{K as g,W as _,a as v,i as y,l as b,o as x,q as S,r as C,s as w,u as T}from"./index-BT5w6et-.js";import{t as E}from"./useGameConfig-b98LOtBY.js";var D={key:0,class:`absolute inset-0 z-10 bg-background/70 backdrop-blur-[2px] rounded-lg flex items-center justify-center`},O={class:`text-center p-4 space-y-2`},k={class:`flex justify-center`},A={class:`rounded-full bg-muted p-2`},j={class:`text-xs font-medium text-muted-foreground`},M=d({__name:`CardUnlockOverlay`,props:{requirements:{},currentLevel:{}},setup(d){let M=d,N=S(),{t:P}=g(),{BUILDINGS:F,TECHNOLOGIES:I}=E(),L=i(!1),R=i(``),z=i(``),B=r(()=>M.currentLevel!==void 0&&M.currentLevel>0||!M.requirements||!N.currentPlanet?!0:f(N.currentPlanet,N.player.technologies,M.requirements)),V=()=>{if(!M.requirements||!N.currentPlanet)return``;let e=[];for(let[t,n]of Object.entries(M.requirements))if(Object.values(m).includes(t)){let r=t,i=N.currentPlanet.buildings[r]||0,a=F.value[r]?.name||r,o=i>=n?`✓`:`✗`;e.push(`${o} ${a}: Lv ${n} (${P(`common.current`)}: Lv ${i})`)}else if(Object.values(h).includes(t)){let r=t,i=N.player.technologies[r]||0,a=I.value[r]?.name||r,o=i>=n?`✓`:`✗`;e.push(`${o} ${a}: Lv ${n} (${P(`common.current`)}: Lv ${i})`)}return e.join(` -`)},H=()=>{R.value=P(`common.requirementsNotMet`),z.value=V(),L.value=!0};return(r,i)=>B.value?c(``,!0):(u(),a(`div`,D,[s(`div`,O,[s(`div`,k,[s(`div`,A,[l(n(p),{size:20,class:`text-muted-foreground`})])]),s(`p`,j,o(n(P)(`common.locked`)),1),l(n(_),{variant:`outline`,size:`sm`,onClick:H,class:`text-xs`},{default:t(()=>[e(o(n(P)(`common.viewRequirements`)),1)]),_:1})]),l(n(T),{open:L.value,"onUpdate:open":i[0]||=e=>L.value=e},{default:t(()=>[l(n(w),null,{default:t(()=>[l(n(y),null,{default:t(()=>[l(n(C),null,{default:t(()=>[e(o(R.value),1)]),_:1}),l(n(x),{class:`whitespace-pre-line`},{default:t(()=>[e(o(z.value),1)]),_:1})]),_:1}),l(n(v),null,{default:t(()=>[l(n(b),null,{default:t(()=>[e(o(n(P)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{M as t}; \ No newline at end of file diff --git a/docs/assets/DefenseView-BuYOjWBp.js b/docs/assets/DefenseView-BuYOjWBp.js deleted file mode 100644 index 8c9a7b1..0000000 --- a/docs/assets/DefenseView-BuYOjWBp.js +++ /dev/null @@ -1 +0,0 @@ -import{$t as e,Dn as t,En as n,Gn as r,Gt as i,Jt as a,Ln as o,Qt as s,Vt as c,Xn as l,Xt as ee,Yt as u,Zt as d,en as f,gn as p,i as te,mn as m,qn as h,t as ne,tn as re,v as ie}from"./game-logic-Bi1l7y4K.js";import"./vendor-pinia-DqhKuBjp.js";import"./vendor-vue-router-1sDnnIWZ.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-Dr0JspcV.js";import"./vendor-others-DTUzJ7S-.js";import"./vendor-reka-ui-BEHIKScj.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CJcfYqoW.js";import"./vendor-icons-z9V6Jdbh.js";import{t as ae}from"./CardDescription-BSLS07AU.js";import{d as oe,f as g}from"./game-config-CG6z6nnH.js";import{D as se,H as ce,K as _,L as le,N as v,W as y,_ as b,a as ue,b as de,f as x,g as S,h as C,i as w,l as T,o as E,q as D,r as O,s as k,u as A,v as j,y as M}from"./index-BT5w6et-.js";import{t as N}from"./useGameConfig-b98LOtBY.js";import{t as P}from"./CardUnlockOverlay-DYfgGY6J.js";import{t as F}from"./UnlockRequirement-CoWPiUl8.js";var I={key:0,class:`container mx-auto p-4 sm:p-6`},L={class:`text-2xl sm:text-3xl font-bold mb-4 sm:mb-6`},R={class:`grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4`},z={class:`mb-2`},B={class:`flex flex-col sm:flex-row sm:justify-between sm:items-start gap-2`},V={class:`space-y-3 sm:space-y-4`},H={class:`grid grid-cols-2 gap-2 text-xs sm:text-sm`},fe={class:`text-muted-foreground`},pe={class:`font-medium`},me={class:`text-muted-foreground`},he={class:`font-medium`},ge={class:`text-muted-foreground`},_e={class:`font-medium`},ve={class:`text-muted-foreground`},ye={class:`font-medium`},be={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},xe={class:`text-muted-foreground mb-1 sm:mb-2`},Se={class:`space-y-1 sm:space-y-1.5`},Ce={class:`text-xs`},we={class:`space-y-2`},Te={key:0,class:`text-xs text-muted-foreground`},Ee={key:0,class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2 p-2.5 sm:p-3 bg-muted rounded-lg`},De={class:`font-medium text-muted-foreground`},Oe={class:`space-y-1 sm:space-y-1.5`},ke={class:`text-xs`},U=re({__name:`DefenseView`,setup(re){let U=D(),Ae=se(),{t:W}=_(),{DEFENSES:G}=N(),K=a(()=>U.currentPlanet),q=o(!1),J=o(``),Y=o(``),X=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`darkMatter`}],Z=o({[g.RocketLauncher]:0,[g.LightLaser]:0,[g.HeavyLaser]:0,[g.GaussCannon]:0,[g.IonCannon]:0,[g.PlasmaTurret]:0,[g.SmallShieldDome]:0,[g.LargeShieldDome]:0,[g.AntiBallisticMissile]:0,[g.InterplanetaryMissile]:0,[g.PlanetaryShield]:0}),Q=e=>e===g.SmallShieldDome||e===g.LargeShieldDome,je=(e,t)=>{if(!U.currentPlanet||!te(U.currentPlanet,e,t,U.player.technologies).valid)return!1;let n=ne(U.currentPlanet,e,t,U.player.officers);return U.currentPlanet.buildQueue.push(n),!0},Me=e=>{let t=Z.value[e];if(t<=0){J.value=W(`defenseView.inputError`),Y.value=W(`defenseView.inputErrorMessage`),q.value=!0;return}je(e,t)?Z.value[e]=0:(J.value=W(`defenseView.buildFailed`),Y.value=W(`defenseView.buildFailedMessage`),q.value=!0)},Ne=e=>{if(!K.value)return!1;let t=Z.value[e];if(t<=0||Q(e)&&(K.value.defense[e]>0||t>1))return!1;let n=G.value[e],r={metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t};return ie(K.value,U.player.technologies,n.requirements)&&K.value.resources.metal>=r.metal&&K.value.resources.crystal>=r.crystal&&K.value.resources.deuterium>=r.deuterium&&K.value.resources.darkMatter>=r.darkMatter},$=e=>{let t=Z.value[e],n=G.value[e];return{metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t}};return(a,o)=>K.value?(m(),s(`div`,I,[f(F,{"required-building":r(oe).Shipyard,"required-level":1},null,8,[`required-building`]),u(`h1`,L,l(r(W)(`defenseView.title`)),1),u(`div`,R,[(m(!0),s(i,null,p(Object.values(r(g)),a=>(m(),ee(r(de),{key:a,class:`relative`},{default:n(()=>[f(P,{requirements:r(G)[a].requirements},null,8,[`requirements`]),f(r(j),null,{default:n(()=>[u(`div`,z,[u(`div`,B,[f(r(b),{class:`text-sm sm:text-base lg:text-lg cursor-pointer hover:text-primary transition-colors underline decoration-dotted underline-offset-4 order-2 sm:order-1`,onClick:e=>r(Ae).openDefense(a)},{default:n(()=>[e(l(r(G)[a].name),1)]),_:2},1032,[`onClick`]),f(r(ce),{variant:`secondary`,class:`text-xs whitespace-nowrap self-start order-1 sm:order-2`},{default:n(()=>[e(l(K.value.defense[a]),1)]),_:2},1024)])]),f(r(ae),{class:`text-xs sm:text-sm`},{default:n(()=>[e(l(r(G)[a].description),1)]),_:2},1024)]),_:2},1024),f(r(M),null,{default:n(()=>[u(`div`,V,[u(`div`,H,[u(`div`,null,[u(`p`,fe,l(r(W)(`defenseView.attack`)),1),u(`p`,pe,l(r(G)[a].attack),1)]),u(`div`,null,[u(`p`,me,l(r(W)(`defenseView.shield`)),1),u(`p`,he,l(r(G)[a].shield),1)]),u(`div`,null,[u(`p`,ge,l(r(W)(`defenseView.armor`)),1),u(`p`,_e,l(r(G)[a].armor),1)]),u(`div`,null,[u(`p`,ve,l(r(W)(`defenseView.buildTime`)),1),u(`p`,ye,l(r(G)[a].buildTime)+l(r(W)(`defenseView.seconds`)),1)])]),u(`div`,be,[u(`p`,xe,l(r(W)(`defenseView.unitCost`))+`:`,1),u(`div`,Se,[(m(),s(i,null,p(X,e=>t(u(`div`,{key:e.key,class:`flex items-center gap-1.5 sm:gap-2`},[f(v,{type:e.key,size:`sm`},null,8,[`type`]),u(`span`,Ce,l(r(W)(`resources.${e.key}`))+`:`,1),u(`span`,{class:h([`font-medium text-xs sm:text-sm`,r(C)(K.value.resources[e.key],r(G)[a].cost[e.key])])},l(r(x)(r(G)[a].cost[e.key])),3)]),[[c,e.key!==`darkMatter`||r(G)[a].cost.darkMatter>0]])),64))])]),u(`div`,we,[f(r(S),{for:`quantity-${a}`,class:`text-xs sm:text-sm`},{default:n(()=>[e(l(r(W)(`defenseView.buildQuantity`)),1)]),_:1},8,[`for`]),f(r(le),{id:`quantity-${a}`,modelValue:Z.value[a],"onUpdate:modelValue":e=>Z.value[a]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:Q(a)&&K.value.defense[a]>0?0:void 0,disabled:Q(a)&&K.value.defense[a]>0,placeholder:`0`,class:`text-sm`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`max`,`disabled`]),Q(a)&&K.value.defense[a]>0?(m(),s(`p`,Te,l(r(W)(`defenseView.shieldDomeBuilt`)),1)):d(``,!0)]),Z.value[a]>0?(m(),s(`div`,Ee,[u(`p`,De,l(r(W)(`defenseView.totalCost`))+`:`,1),u(`div`,Oe,[(m(),s(i,null,p(X,e=>t(u(`div`,{key:e.key,class:`flex items-center gap-1.5 sm:gap-2`},[f(v,{type:e.key,size:`sm`},null,8,[`type`]),u(`span`,ke,l(r(W)(`resources.${e.key}`))+`:`,1),u(`span`,{class:h([`font-medium text-xs sm:text-sm`,r(C)(K.value.resources[e.key],$(a)[e.key])])},l(r(x)($(a)[e.key])),3)]),[[c,e.key!==`darkMatter`||$(a).darkMatter>0]])),64))])])):d(``,!0),f(r(y),{onClick:e=>Me(a),disabled:!Ne(a),class:`w-full`},{default:n(()=>[e(l(r(W)(`defenseView.build`)),1)]),_:1},8,[`onClick`,`disabled`])])]),_:2},1024)]),_:2},1024))),128))]),f(r(A),{open:q.value,"onUpdate:open":o[0]||=e=>q.value=e},{default:n(()=>[f(r(k),null,{default:n(()=>[f(r(w),null,{default:n(()=>[f(r(O),null,{default:n(()=>[e(l(J.value),1)]),_:1}),f(r(E),{class:`whitespace-pre-line`},{default:n(()=>[e(l(Y.value),1)]),_:1})]),_:1}),f(r(ue),null,{default:n(()=>[f(r(T),null,{default:n(()=>[e(l(r(W)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])])):d(``,!0)}});export{U as default}; \ No newline at end of file diff --git a/docs/assets/DefenseView-aCDrCjw8.js b/docs/assets/DefenseView-aCDrCjw8.js new file mode 100644 index 0000000..43072ca --- /dev/null +++ b/docs/assets/DefenseView-aCDrCjw8.js @@ -0,0 +1 @@ +import{$t as e,En as t,Mt as n,On as r,Ot as i,Rn as a,Yn as o,ar as s,cn as ee,cr as c,dn as l,fn as u,i as te,ln as d,on as f,pn as ne,rn as p,rr as m,sn as h,sr as re,t as ie,tt as g,un as _,zn as v}from"./game-logic-BBFCPVtv.js";import"./vendor-pinia-L_8CmDWM.js";import"./vendor-vue-router-0mfLVB6Y.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-BC9uiVvf.js";import"./vendor-others-Bce0hM6h.js";import"./vendor-reka-ui-DR3m_AkV.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-Djj-oRw9.js";import"./vendor-icons-Ccm2_GPI.js";import{t as y}from"./CardDescription-DduF5EVY.js";import{d as ae,f as b}from"./game-config-DRP-gbpS.js";import{$ as oe,A as se,F as ce,I as le,J as ue,K as de,L as x,M as fe,N as pe,V as me,X as S,d as C,f as w,j as T,k as E,l as D,m as O,o as k,p as A,u as j,x as M}from"./index-B4KMqZ_y.js";import{t as N}from"./useGameConfig-DLqfPHtW.js";import{t as P}from"./CardUnlockOverlay-CspXlcWR.js";import{t as F}from"./UnlockRequirement-DJ9dN5JL.js";var I={key:0,class:`container mx-auto p-4 sm:p-6`},L={class:`text-2xl sm:text-3xl font-bold mb-4 sm:mb-6`},R={key:0,class:`mb-4 sm:mb-6 p-3 sm:p-4 bg-muted/50 rounded-lg border`},z={class:`flex items-center justify-between`},he={class:`text-sm sm:text-base font-medium`},ge={class:`text-sm sm:text-base font-bold`},_e={class:`mt-2`},ve={class:`w-full bg-background rounded-full h-2.5 sm:h-3 overflow-hidden`},ye={class:`grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4`},be={class:`mb-2`},xe={class:`flex flex-col sm:flex-row sm:justify-between sm:items-start gap-2`},Se={class:`space-y-3 sm:space-y-4`},B={class:`grid grid-cols-2 gap-2 text-xs sm:text-sm`},Ce={class:`text-muted-foreground`},we={class:`font-medium`},Te={class:`text-muted-foreground`},Ee={class:`font-medium`},De={class:`text-muted-foreground`},Oe={class:`font-medium`},ke={class:`text-muted-foreground`},Ae={class:`font-medium`},je={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},Me={class:`text-muted-foreground mb-1 sm:mb-2`},Ne={class:`space-y-1 sm:space-y-1.5`},Pe={class:`text-xs`},Fe={class:`space-y-2`},Ie={key:0,class:`text-xs text-muted-foreground`},Le={key:0,class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2 p-2.5 sm:p-3 bg-muted rounded-lg`},Re={class:`font-medium text-muted-foreground`},ze={class:`space-y-1 sm:space-y-1.5`},Be={class:`text-xs`},V=ne({__name:`DefenseView`,setup(ne){let V=oe(),Ve=M(),{t:H}=S(),{DEFENSES:U}=N(),W=f(()=>V.currentPlanet),G=f(()=>W.value?n(W.value.buildings):0),K=f(()=>W.value?i(W.value.defense):0),q=o(!1),J=o(``),Y=o(``),X=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`darkMatter`}],Z=o({[b.RocketLauncher]:0,[b.LightLaser]:0,[b.HeavyLaser]:0,[b.GaussCannon]:0,[b.IonCannon]:0,[b.PlasmaTurret]:0,[b.SmallShieldDome]:0,[b.LargeShieldDome]:0,[b.AntiBallisticMissile]:0,[b.InterplanetaryMissile]:0,[b.PlanetaryShield]:0}),Q=e=>e===b.SmallShieldDome||e===b.LargeShieldDome,He=(e,t)=>{let n=V.currentPlanet;if(!n||!te(n,e,t,V.player.technologies).valid)return!1;let r=ie(n,e,t,V.player.officers);return n.buildQueue.push(r),!0},Ue=e=>{let t=Z.value[e];if(t<=0){J.value=H(`defenseView.inputError`),Y.value=H(`defenseView.inputErrorMessage`),q.value=!0;return}He(e,t)?Z.value[e]=0:(J.value=H(`defenseView.buildFailed`),Y.value=H(`defenseView.buildFailedMessage`),q.value=!0)},We=e=>{if(!W.value)return!1;let t=Z.value[e];if(t<=0||Q(e)&&(W.value.defense[e]>0||t>1))return!1;let n=U.value[e],r={metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t};return g(W.value,V.player.technologies,n.requirements)&&W.value.resources.metal>=r.metal&&W.value.resources.crystal>=r.crystal&&W.value.resources.deuterium>=r.deuterium&&W.value.resources.darkMatter>=r.darkMatter},$=e=>{let t=Z.value[e],n=U.value[e];return{metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t}};return(n,i)=>W.value?(t(),_(`div`,I,[u(F,{"required-building":m(ae).Shipyard,"required-level":1},null,8,[`required-building`]),h(`h1`,L,c(m(H)(`defenseView.title`)),1),G.value>0?(t(),_(`div`,R,[h(`div`,z,[h(`div`,he,c(m(H)(`defenseView.missileCapacity`))+`:`,1),h(`div`,ge,[h(`span`,{class:s(K.value>G.value?`text-destructive`:`text-primary`)},c(m(k)(K.value)),3),i[1]||=h(`span`,{class:`text-muted-foreground mx-1`},`/`,-1),h(`span`,null,c(m(k)(G.value)),1)])]),h(`div`,_e,[h(`div`,ve,[h(`div`,{class:s([`h-full transition-all duration-300`,K.value>G.value?`bg-destructive`:`bg-primary`]),style:re({width:`${Math.min(K.value/G.value*100,100)}%`})},null,6)])])])):d(``,!0),h(`div`,ye,[(t(!0),_(p,null,r(Object.values(m(b)),n=>(t(),ee(m(O),{key:n,class:`relative`},{default:a(()=>[u(P,{requirements:m(U)[n].requirements},null,8,[`requirements`]),u(m(w),null,{default:a(()=>[h(`div`,be,[h(`div`,xe,[u(m(C),{class:`text-sm sm:text-base lg:text-lg cursor-pointer hover:text-primary transition-colors underline decoration-dotted underline-offset-4 order-2 sm:order-1`,onClick:e=>m(Ve).openDefense(n)},{default:a(()=>[l(c(m(U)[n].name),1)]),_:2},1032,[`onClick`]),u(m(de),{variant:`secondary`,class:`text-xs whitespace-nowrap self-start order-1 sm:order-2`},{default:a(()=>[l(c(W.value.defense[n]),1)]),_:2},1024)])]),u(m(y),{class:`text-xs sm:text-sm`},{default:a(()=>[l(c(m(U)[n].description),1)]),_:2},1024)]),_:2},1024),u(m(A),null,{default:a(()=>[h(`div`,Se,[h(`div`,B,[h(`div`,null,[h(`p`,Ce,c(m(H)(`defenseView.attack`)),1),h(`p`,we,c(m(U)[n].attack),1)]),h(`div`,null,[h(`p`,Te,c(m(H)(`defenseView.shield`)),1),h(`p`,Ee,c(m(U)[n].shield),1)]),h(`div`,null,[h(`p`,De,c(m(H)(`defenseView.armor`)),1),h(`p`,Oe,c(m(U)[n].armor),1)]),h(`div`,null,[h(`p`,ke,c(m(H)(`defenseView.buildTime`)),1),h(`p`,Ae,c(m(U)[n].buildTime)+c(m(H)(`defenseView.seconds`)),1)])]),h(`div`,je,[h(`p`,Me,c(m(H)(`defenseView.unitCost`))+`:`,1),h(`div`,Ne,[(t(),_(p,null,r(X,t=>v(h(`div`,{key:t.key,class:`flex items-center gap-1.5 sm:gap-2`},[u(x,{type:t.key,size:`sm`},null,8,[`type`]),h(`span`,Pe,c(m(H)(`resources.${t.key}`))+`:`,1),h(`span`,{class:s([`font-medium text-xs sm:text-sm`,m(D)(W.value.resources[t.key],m(U)[n].cost[t.key])])},c(m(k)(m(U)[n].cost[t.key])),3)]),[[e,t.key!==`darkMatter`||m(U)[n].cost.darkMatter>0]])),64))])]),h(`div`,Fe,[u(m(j),{for:`quantity-${n}`,class:`text-xs sm:text-sm`},{default:a(()=>[l(c(m(H)(`defenseView.buildQuantity`)),1)]),_:1},8,[`for`]),u(m(me),{id:`quantity-${n}`,modelValue:Z.value[n],"onUpdate:modelValue":e=>Z.value[n]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:Q(n)&&W.value.defense[n]>0?0:void 0,disabled:Q(n)&&W.value.defense[n]>0,placeholder:`0`,class:`text-sm`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`max`,`disabled`]),Q(n)&&W.value.defense[n]>0?(t(),_(`p`,Ie,c(m(H)(`defenseView.shieldDomeBuilt`)),1)):d(``,!0)]),Z.value[n]>0?(t(),_(`div`,Le,[h(`p`,Re,c(m(H)(`defenseView.totalCost`))+`:`,1),h(`div`,ze,[(t(),_(p,null,r(X,t=>v(h(`div`,{key:t.key,class:`flex items-center gap-1.5 sm:gap-2`},[u(x,{type:t.key,size:`sm`},null,8,[`type`]),h(`span`,Be,c(m(H)(`resources.${t.key}`))+`:`,1),h(`span`,{class:s([`font-medium text-xs sm:text-sm`,m(D)(W.value.resources[t.key],$(n)[t.key])])},c(m(k)($(n)[t.key])),3)]),[[e,t.key!==`darkMatter`||$(n).darkMatter>0]])),64))])])):d(``,!0),u(m(ue),{onClick:e=>Ue(n),disabled:!We(n),class:`w-full`},{default:a(()=>[l(c(m(H)(`defenseView.build`)),1)]),_:1},8,[`onClick`,`disabled`])])]),_:2},1024)]),_:2},1024))),128))]),u(m(le),{open:q.value,"onUpdate:open":i[0]||=e=>q.value=e},{default:a(()=>[u(m(pe),null,{default:a(()=>[u(m(se),null,{default:a(()=>[u(m(E),null,{default:a(()=>[l(c(J.value),1)]),_:1}),u(m(fe),{class:`whitespace-pre-line`},{default:a(()=>[l(c(Y.value),1)]),_:1})]),_:1}),u(m(T),null,{default:a(()=>[u(m(ce),null,{default:a(()=>[l(c(m(H)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])])):d(``,!0)}});export{V as default}; \ No newline at end of file diff --git a/docs/assets/DiplomacyView-BZEvKDfM.js b/docs/assets/DiplomacyView-BZEvKDfM.js new file mode 100644 index 0000000..3f0ffc6 --- /dev/null +++ b/docs/assets/DiplomacyView-BZEvKDfM.js @@ -0,0 +1 @@ +import{An as e,En as t,On as n,Rn as r,Yn as i,ar as a,cn as o,cr as s,dn as c,fn as l,hn as u,kn as d,ln as f,on as p,or as m,pn as h,rn as g,rr as _,sn as v,sr as y,un as b,wn as x,xn as S}from"./game-logic-BBFCPVtv.js";import"./vendor-pinia-L_8CmDWM.js";import{o as C}from"./vendor-vue-router-0mfLVB6Y.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-BC9uiVvf.js";import{l as w}from"./vendor-others-Bce0hM6h.js";import{$ as T,D as E,E as D,O,T as k,et as A,k as j}from"./vendor-reka-ui-DR3m_AkV.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-Djj-oRw9.js";import{B as M,I as ee,J as N,L as P,Y as te,c as ne,l as re}from"./vendor-icons-Ccm2_GPI.js";import{t as ie}from"./CardDescription-DduF5EVY.js";import{g as F,p as I}from"./game-config-DRP-gbpS.js";import{$ as ae,J as L,K as R,X as oe,Y as z,Z as se,d as ce,f as le,m as ue,p as de,q as B,s as fe}from"./index-B4KMqZ_y.js";import{i as pe,n as me,r as V,t as H}from"./TabsTrigger-BnZOhHbD.js";var U=h({__name:`Pagination`,props:{page:{},defaultPage:{},itemsPerPage:{},total:{},siblingCount:{},disabled:{type:Boolean},showEdges:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:[`update:page`],setup(e,{emit:n}){let i=e,a=n,s=T(w(i,`class`),a);return(e,n)=>(t(),o(_(j),S({"data-slot":`pagination`},_(s),{class:_(z)(`mx-auto flex w-full justify-center`,i.class)}),{default:r(t=>[d(e.$slots,`default`,m(u(t)))]),_:3},16,[`class`]))}}),W=h({__name:`PaginationContent`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let n=e,i=w(n,`class`);return(e,a)=>(t(),o(_(O),S({"data-slot":`pagination-content`},_(i),{class:_(z)(`flex flex-row items-center gap-1`,n.class)}),{default:r(t=>[d(e.$slots,`default`,m(u(t)))]),_:3},16,[`class`]))}}),G=h({__name:`PaginationItem`,props:{value:{},asChild:{type:Boolean},as:{},size:{default:`icon`},class:{},isActive:{type:Boolean}},setup(e){let n=e,i=w(n,`class`,`size`,`isActive`);return(a,s)=>(t(),o(_(E),S({"data-slot":`pagination-item`},_(i),{class:_(z)(_(B)({variant:e.isActive?`outline`:`ghost`,size:e.size}),n.class)}),{default:r(()=>[d(a.$slots,`default`)]),_:3},16,[`class`]))}}),K=h({__name:`PaginationNext`,props:{asChild:{type:Boolean},as:{},size:{default:`default`},class:{}},setup(e){let n=e,i=A(w(n,`class`,`size`));return(a,s)=>(t(),o(_(D),S({"data-slot":`pagination-next`,class:_(z)(_(B)({variant:`ghost`,size:e.size}),`gap-1 px-2.5 sm:pr-2.5`,n.class)},_(i)),{default:r(()=>[d(a.$slots,`default`,{},()=>[s[0]||=v(`span`,{class:`hidden sm:block`},`Next`,-1),l(_(N))])]),_:3},16,[`class`]))}}),q=h({__name:`PaginationPrevious`,props:{asChild:{type:Boolean},as:{},size:{default:`default`},class:{}},setup(e){let n=e,i=A(w(n,`class`,`size`));return(a,s)=>(t(),o(_(k),S({"data-slot":`pagination-previous`,class:_(z)(_(B)({variant:`ghost`,size:e.size}),`gap-1 px-2.5 sm:pr-2.5`,n.class)},_(i)),{default:r(()=>[d(a.$slots,`default`,{},()=>[l(_(te)),s[0]||=v(`span`,{class:`hidden sm:block`},`Previous`,-1)])]),_:3},16,[`class`]))}}),J={class:`flex items-start justify-between`},Y={class:`flex-1`},he={key:0,class:`ml-2`},ge={class:`space-y-2`},_e={class:`flex items-center justify-between text-sm`},ve={class:`text-muted-foreground`},X={class:`relative`},ye={class:`h-2 bg-muted rounded-full overflow-hidden`},Z={key:0,class:`pt-2 border-t`},be={class:`text-sm text-muted-foreground mb-2`},xe={class:`flex flex-wrap gap-1`},Se={class:`flex gap-2 pt-2`},Ce={key:1,class:`pt-2 border-t`},we={class:`text-xs text-muted-foreground mb-1`},Te={class:`flex items-center gap-2 text-xs`},Ee={class:`text-muted-foreground`},Q=h({__name:`NpcRelationCard`,props:{npc:{},relation:{}},setup(i){let u=i,d=C(),m=se(),{t:h}=oe(),x=p(()=>u.relation?.reputation||0),S=p(()=>u.relation?.status||F.Neutral),w=p(()=>{switch(S.value){case F.Friendly:return h(`diplomacy.status.friendly`);case F.Hostile:return h(`diplomacy.status.hostile`);default:return h(`diplomacy.status.neutral`)}}),T=p(()=>{switch(S.value){case F.Friendly:return`default`;case F.Hostile:return`destructive`;default:return`secondary`}}),E=p(()=>x.value>=20?`text-green-600 dark:text-green-400`:x.value<=-20?`text-red-600 dark:text-red-400`:`text-muted-foreground`),D=p(()=>!u.relation?.history||u.relation.history.length===0?null:u.relation.history[u.relation.history.length-1]),O=e=>m.npcs.find(t=>t.id===e)?.name||e.substring(0,8),k=e=>{switch(e){case I.GiftResources:return P;case I.Attack:case I.AllyAttacked:return re;case I.Spy:return M;case I.StealDebris:return ne;default:return P}},A=e=>{switch(e){case I.GiftResources:return h(`diplomacy.events.gift`);case I.Attack:return h(`diplomacy.events.attack`);case I.AllyAttacked:return h(`diplomacy.events.allyAttacked`);case I.Spy:return h(`diplomacy.events.spy`);case I.StealDebris:return h(`diplomacy.events.stealDebris`);default:return e}},j=()=>{if(u.npc.planets.length>0){let e=u.npc.planets[0];if(!e)return;d.push({path:`/fleet`,query:{galaxy:e.position.galaxy,system:e.position.system,position:e.position.position,gift:`1`}})}},N=()=>{if(u.npc.planets.length>0){let e=u.npc.planets[0];if(!e)return;d.push({path:`/galaxy`,query:{galaxy:e.position.galaxy,system:e.position.system,highlightNpc:u.npc.id}})}};return(u,d)=>(t(),o(_(ue),null,{default:r(()=>[l(_(le),null,{default:r(()=>[v(`div`,J,[v(`div`,Y,[l(_(ce),{class:`flex items-center gap-2`},{default:r(()=>[c(s(i.npc.name)+` `,1),l(_(R),{variant:T.value},{default:r(()=>[c(s(w.value),1)]),_:1},8,[`variant`])]),_:1}),l(_(ie),{class:`mt-1`},{default:r(()=>[c(s(i.npc.planets.length)+` `+s(_(h)(`diplomacy.planets`))+` `,1),i.npc.allies&&i.npc.allies.length>0?(t(),b(`span`,he,`· `+s(i.npc.allies.length)+` `+s(_(h)(`diplomacy.allies`)),1)):f(``,!0)]),_:1})])])]),_:1}),l(_(de),{class:`space-y-4`},{default:r(()=>[v(`div`,ge,[v(`div`,_e,[v(`span`,ve,s(_(h)(`diplomacy.reputation`)),1),v(`span`,{class:a([`font-semibold`,E.value])},s(x.value>0?`+`:``)+s(x.value),3)]),v(`div`,X,[v(`div`,ye,[x.value<0?(t(),b(`div`,{key:0,class:`h-full bg-red-500 dark:bg-red-600 absolute right-1/2`,style:y({width:`${Math.abs(x.value)/2}%`})},null,4)):f(``,!0),x.value>0?(t(),b(`div`,{key:1,class:`h-full bg-green-500 dark:bg-green-600 absolute left-1/2`,style:y({width:`${x.value/2}%`})},null,4)):f(``,!0)]),d[0]||=v(`div`,{class:`absolute left-1/2 top-0 bottom-0 w-px bg-border`},null,-1)]),d[1]||=v(`div`,{class:`flex justify-between text-xs text-muted-foreground`},[v(`span`,null,`-100`),v(`span`,null,`0`),v(`span`,null,`+100`)],-1)]),i.npc.allies&&i.npc.allies.length>0?(t(),b(`div`,Z,[v(`p`,be,s(_(h)(`diplomacy.alliedWith`))+`:`,1),v(`div`,xe,[(t(!0),b(g,null,n(i.npc.allies.slice(0,3),e=>(t(),o(_(R),{key:e,variant:`outline`,class:`text-xs`},{default:r(()=>[c(s(O(e)),1)]),_:2},1024))),128)),i.npc.allies.length>3?(t(),o(_(R),{key:0,variant:`outline`,class:`text-xs`},{default:r(()=>[c(` +`+s(i.npc.allies.length-3)+` `+s(_(h)(`diplomacy.more`)),1)]),_:1})):f(``,!0)])])):f(``,!0),v(`div`,Se,[l(_(L),{size:`sm`,variant:`outline`,class:`flex-1`,onClick:j},{default:r(()=>[l(_(P),{class:`h-4 w-4 mr-2`}),c(` `+s(_(h)(`diplomacy.actions.gift`)),1)]),_:1}),l(_(L),{size:`sm`,variant:`outline`,class:`flex-1`,onClick:N},{default:r(()=>[l(_(ee),{class:`h-4 w-4 mr-2`}),c(` `+s(_(h)(`diplomacy.actions.viewPlanets`)),1)]),_:1})]),D.value?(t(),b(`div`,Ce,[v(`p`,we,s(_(h)(`diplomacy.lastEvent`))+`:`,1),v(`div`,Te,[(t(),o(e(k(D.value.reason)),{class:`h-3 w-3`})),v(`span`,null,s(A(D.value.reason)),1),v(`span`,Ee,s(_(fe)(Date.now()-D.value.timestamp))+` `+s(_(h)(`diplomacy.ago`)),1)])])):f(``,!0)]),_:1})]),_:1}))}}),De={class:`container mx-auto p-4 sm:p-6 space-y-6`},Oe={class:`flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4`},ke={class:`text-2xl sm:text-3xl font-bold`},Ae={class:`text-sm text-muted-foreground mt-1`},je={key:0,class:`text-center py-12 text-muted-foreground`},Me={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Ne={key:1,class:`px-2 text-muted-foreground`},Pe={key:0,class:`text-center py-12 text-muted-foreground`},Fe={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Ie={key:1,class:`px-2 text-muted-foreground`},Le={key:0,class:`text-center py-12 text-muted-foreground`},Re={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},ze={key:1,class:`px-2 text-muted-foreground`},Be={key:0,class:`text-center py-12 text-muted-foreground`},Ve={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},He={key:1,class:`px-2 text-muted-foreground`},Ue={class:`space-y-2 max-h-96 overflow-y-auto`},We={class:`flex-shrink-0 mt-0.5`},Ge={class:`flex-1 min-w-0`},Ke={class:`flex items-center gap-2 mb-1`},qe={class:`font-medium`},Je={class:`text-sm text-muted-foreground`},Ye={class:`text-xs text-muted-foreground mt-1`},$=20,Xe=h({__name:`DiplomacyView`,setup(u){let d=ae(),m=se(),{t:h}=oe(),y=i(`all`),S=()=>{let e=m.npcs;e.length<2||e.forEach(t=>{if(t.allies||=[],t.allies.length===0){let n=e.filter(e=>e.id!==t.id);if(n.length===0)return;let r=Math.min(Math.floor(Math.random()*2)+1,n.length);[...n].sort(()=>Math.random()-.5).slice(0,r).forEach(e=>{t.allies.includes(e.id)||t.allies.push(e.id),e.allies||=[],e.allies.includes(t.id)||e.allies.push(t.id)})}})};x(()=>{S()});let C=i({all:1,friendly:1,neutral:1,hostile:1}),w=e=>d.player.diplomaticRelations?.[e],T=p(()=>m.npcs),E=p(()=>m.npcs.filter(e=>w(e.id)?.status===F.Friendly)),D=p(()=>m.npcs.filter(e=>{let t=w(e.id);return!t||t.status===F.Neutral})),O=p(()=>m.npcs.filter(e=>w(e.id)?.status===F.Hostile)),k=(e,t)=>{let n=((C.value[t]||1)-1)*$,r=n+$;return e.slice(n,r)},A=e=>Math.ceil(e.length/$),j=p(()=>k(T.value,`all`)),ee=p(()=>k(E.value,`friendly`)),N=p(()=>k(D.value,`neutral`)),te=p(()=>k(O.value,`hostile`)),L=p(()=>A(T.value)),z=p(()=>A(E.value)),B=p(()=>A(D.value)),J=p(()=>A(O.value)),Y=(e,t)=>{let n=[];if(t<=5)for(let e=1;e<=t;e++)n.push(e);else{n.push(1),e>3&&n.push(`...`);let r=Math.max(2,e-1),i=Math.min(t-1,e+1);for(let e=r;e<=i;e++)n.push(e);eY(C.value.all||1,L.value)),ge=p(()=>Y(C.value.friendly||1,z.value)),_e=p(()=>Y(C.value.neutral||1,B.value)),ve=p(()=>Y(C.value.hostile||1,J.value)),X=p(()=>[...d.player.diplomaticReports||[]].sort((e,t)=>t.timestamp-e.timestamp).slice(0,20)),ye=e=>{switch(e){case I.GiftResources:return P;case I.Attack:case I.AllyAttacked:return re;case I.Spy:return M;case I.StealDebris:return ne;default:return P}},Z=e=>e>0?`text-green-600 dark:text-green-400`:e<0?`text-red-600 dark:text-red-400`:`text-muted-foreground`,be=e=>e>0?`default`:e<0?`destructive`:`secondary`,xe=e=>{switch(e){case F.Friendly:return`default`;case F.Hostile:return`destructive`;default:return`secondary`}},Se=e=>{switch(e){case F.Friendly:return h(`diplomacy.status.friendly`);case F.Hostile:return h(`diplomacy.status.hostile`);default:return h(`diplomacy.status.neutral`)}};return(i,u)=>(t(),b(`div`,De,[v(`div`,Oe,[v(`div`,null,[v(`h1`,ke,s(_(h)(`diplomacy.title`)),1),v(`p`,Ae,s(_(h)(`diplomacy.description`)),1)])]),l(_(pe),{modelValue:y.value,"onUpdate:modelValue":u[4]||=e=>y.value=e,class:`w-full`},{default:r(()=>[l(_(me),{class:`grid w-full grid-cols-4`},{default:r(()=>[l(_(H),{value:`all`},{default:r(()=>[c(s(_(h)(`diplomacy.tabs.all`))+` `,1),l(_(R),{variant:`outline`,class:`ml-2 bg-blue-100 dark:bg-blue-950 text-blue-700 dark:text-blue-300 border-blue-300 dark:border-blue-700`},{default:r(()=>[c(s(T.value.length),1)]),_:1})]),_:1}),l(_(H),{value:`friendly`},{default:r(()=>[c(s(_(h)(`diplomacy.tabs.friendly`))+` `,1),l(_(R),{variant:`outline`,class:`ml-2 bg-green-100 dark:bg-green-950 text-green-700 dark:text-green-300 border-green-300 dark:border-green-700`},{default:r(()=>[c(s(E.value.length),1)]),_:1})]),_:1}),l(_(H),{value:`neutral`},{default:r(()=>[c(s(_(h)(`diplomacy.tabs.neutral`))+` `,1),l(_(R),{variant:`outline`,class:`ml-2 bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 border-gray-300 dark:border-gray-600`},{default:r(()=>[c(s(D.value.length),1)]),_:1})]),_:1}),l(_(H),{value:`hostile`},{default:r(()=>[c(s(_(h)(`diplomacy.tabs.hostile`))+` `,1),l(_(R),{variant:`outline`,class:`ml-2 bg-red-100 dark:bg-red-950 text-red-700 dark:text-red-300 border-red-300 dark:border-red-700`},{default:r(()=>[c(s(O.value.length),1)]),_:1})]),_:1})]),_:1}),l(_(V),{value:`all`,class:`space-y-4 mt-6`},{default:r(()=>[T.value.length===0?(t(),b(`div`,je,s(_(h)(`diplomacy.noNpcs`)),1)):(t(),b(g,{key:1},[v(`div`,Me,[(t(!0),b(g,null,n(j.value,e=>(t(),o(Q,{key:e.id,npc:e,relation:w(e.id)},null,8,[`npc`,`relation`]))),128))]),L.value>1?(t(),o(_(U),{key:0,page:C.value.all,"onUpdate:page":u[0]||=e=>C.value.all=e,total:T.value.length,"items-per-page":$,"sibling-count":1,"show-edges":``,class:`mt-6`},{default:r(()=>[l(_(W),null,{default:r(()=>[l(_(q),null,{default:r(()=>[c(s(_(h)(`pagination.previous`)),1)]),_:1}),(t(!0),b(g,null,n(he.value,(e,n)=>(t(),b(g,{key:n},[typeof e==`number`?(t(),o(_(G),{key:0,value:e,"is-active":e===C.value.all},{default:r(()=>[c(s(e),1)]),_:2},1032,[`value`,`is-active`])):(t(),b(`span`,Ne,s(e),1))],64))),128)),l(_(K),null,{default:r(()=>[c(s(_(h)(`pagination.next`)),1)]),_:1})]),_:1})]),_:1},8,[`page`,`total`])):f(``,!0)],64))]),_:1}),l(_(V),{value:`friendly`,class:`space-y-4 mt-6`},{default:r(()=>[E.value.length===0?(t(),b(`div`,Pe,s(_(h)(`diplomacy.noFriendlyNpcs`)),1)):(t(),b(g,{key:1},[v(`div`,Fe,[(t(!0),b(g,null,n(ee.value,e=>(t(),o(Q,{key:e.id,npc:e,relation:w(e.id)},null,8,[`npc`,`relation`]))),128))]),z.value>1?(t(),o(_(U),{key:0,page:C.value.friendly,"onUpdate:page":u[1]||=e=>C.value.friendly=e,total:E.value.length,"items-per-page":$,"sibling-count":1,"show-edges":``,class:`mt-6`},{default:r(()=>[l(_(W),null,{default:r(()=>[l(_(q),null,{default:r(()=>[c(s(_(h)(`pagination.previous`)),1)]),_:1}),(t(!0),b(g,null,n(ge.value,(e,n)=>(t(),b(g,{key:n},[typeof e==`number`?(t(),o(_(G),{key:0,value:e,"is-active":e===C.value.friendly},{default:r(()=>[c(s(e),1)]),_:2},1032,[`value`,`is-active`])):(t(),b(`span`,Ie,s(e),1))],64))),128)),l(_(K),null,{default:r(()=>[c(s(_(h)(`pagination.next`)),1)]),_:1})]),_:1})]),_:1},8,[`page`,`total`])):f(``,!0)],64))]),_:1}),l(_(V),{value:`neutral`,class:`space-y-4 mt-6`},{default:r(()=>[D.value.length===0?(t(),b(`div`,Le,s(_(h)(`diplomacy.noNeutralNpcs`)),1)):(t(),b(g,{key:1},[v(`div`,Re,[(t(!0),b(g,null,n(N.value,e=>(t(),o(Q,{key:e.id,npc:e,relation:w(e.id)},null,8,[`npc`,`relation`]))),128))]),B.value>1?(t(),o(_(U),{key:0,page:C.value.neutral,"onUpdate:page":u[2]||=e=>C.value.neutral=e,total:D.value.length,"items-per-page":$,"sibling-count":1,"show-edges":``,class:`mt-6`},{default:r(()=>[l(_(W),null,{default:r(()=>[l(_(q),null,{default:r(()=>[c(s(_(h)(`pagination.previous`)),1)]),_:1}),(t(!0),b(g,null,n(_e.value,(e,n)=>(t(),b(g,{key:n},[typeof e==`number`?(t(),o(_(G),{key:0,value:e,"is-active":e===C.value.neutral},{default:r(()=>[c(s(e),1)]),_:2},1032,[`value`,`is-active`])):(t(),b(`span`,ze,s(e),1))],64))),128)),l(_(K),null,{default:r(()=>[c(s(_(h)(`pagination.next`)),1)]),_:1})]),_:1})]),_:1},8,[`page`,`total`])):f(``,!0)],64))]),_:1}),l(_(V),{value:`hostile`,class:`space-y-4 mt-6`},{default:r(()=>[O.value.length===0?(t(),b(`div`,Be,s(_(h)(`diplomacy.noHostileNpcs`)),1)):(t(),b(g,{key:1},[v(`div`,Ve,[(t(!0),b(g,null,n(te.value,e=>(t(),o(Q,{key:e.id,npc:e,relation:w(e.id)},null,8,[`npc`,`relation`]))),128))]),J.value>1?(t(),o(_(U),{key:0,page:C.value.hostile,"onUpdate:page":u[3]||=e=>C.value.hostile=e,total:O.value.length,"items-per-page":$,"sibling-count":1,"show-edges":``,class:`mt-6`},{default:r(()=>[l(_(W),null,{default:r(()=>[l(_(q),null,{default:r(()=>[c(s(_(h)(`pagination.previous`)),1)]),_:1}),(t(!0),b(g,null,n(ve.value,(e,n)=>(t(),b(g,{key:n},[typeof e==`number`?(t(),o(_(G),{key:0,value:e,"is-active":e===C.value.hostile},{default:r(()=>[c(s(e),1)]),_:2},1032,[`value`,`is-active`])):(t(),b(`span`,He,s(e),1))],64))),128)),l(_(K),null,{default:r(()=>[c(s(_(h)(`pagination.next`)),1)]),_:1})]),_:1})]),_:1},8,[`page`,`total`])):f(``,!0)],64))]),_:1})]),_:1},8,[`modelValue`]),X.value.length>0?(t(),o(_(ue),{key:0},{default:r(()=>[l(_(le),null,{default:r(()=>[l(_(ce),null,{default:r(()=>[c(s(_(h)(`diplomacy.recentEvents`)),1)]),_:1}),l(_(ie),null,{default:r(()=>[c(s(_(h)(`diplomacy.recentEventsDescription`)),1)]),_:1})]),_:1}),l(_(de),null,{default:r(()=>[v(`div`,Ue,[(t(!0),b(g,null,n(X.value,n=>(t(),b(`div`,{key:n.id,class:`flex items-start gap-3 p-3 rounded-lg border bg-card hover:bg-accent/50 transition-colors`},[v(`div`,We,[(t(),o(e(ye(n.eventType)),{class:a([`h-5 w-5`,Z(n.reputationChange)])},null,8,[`class`]))]),v(`div`,Ge,[v(`div`,Ke,[v(`span`,qe,s(n.npcName),1),l(_(R),{variant:be(n.reputationChange),class:`text-xs`},{default:r(()=>[c(s(n.reputationChange>0?`+`:``)+s(n.reputationChange),1)]),_:2},1032,[`variant`]),l(_(R),{variant:xe(n.newStatus),class:`text-xs`},{default:r(()=>[c(s(Se(n.newStatus)),1)]),_:2},1032,[`variant`])]),v(`p`,Je,s(n.message),1),v(`p`,Ye,s(_(fe)(Date.now()-n.timestamp))+` `+s(_(h)(`diplomacy.ago`)),1)])]))),128))])]),_:1})]),_:1})):f(``,!0)]))}});export{Xe as default}; \ No newline at end of file diff --git a/docs/assets/DiplomacyView-Bz3CIKaK.js b/docs/assets/DiplomacyView-Bz3CIKaK.js deleted file mode 100644 index c7f0e17..0000000 --- a/docs/assets/DiplomacyView-Bz3CIKaK.js +++ /dev/null @@ -1 +0,0 @@ -import{$t as e,En as t,Gn as n,Gt as r,Jn as i,Jt as a,Ln as o,Qt as s,Xn as c,Xt as l,Yn as u,Yt as d,Zt as f,_n as p,en as m,gn as h,ln as g,mn as _,qn as ee,rn as v,tn as y,vn as b}from"./game-logic-Bi1l7y4K.js";import"./vendor-pinia-DqhKuBjp.js";import{o as x}from"./vendor-vue-router-1sDnnIWZ.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-Dr0JspcV.js";import{c as S}from"./vendor-others-DTUzJ7S-.js";import{$ as C,D as w,E as T,O as E,T as D,et as O,k}from"./vendor-reka-ui-BEHIKScj.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CJcfYqoW.js";import{G as A,L as j,N as te,P as M,W as N,c as ne,s as re}from"./vendor-icons-z9V6Jdbh.js";import{t as ie}from"./CardDescription-BSLS07AU.js";import{g as P,p as F}from"./game-config-CG6z6nnH.js";import{G as I,H as L,K as ae,U as R,W as z,_ as oe,b as se,p as ce,q as le,t as ue,v as B,y as V}from"./index-BT5w6et-.js";import{i as de,n as fe,r as H,t as U}from"./TabsTrigger-DrosU7aN.js";var W=y({__name:`Pagination`,props:{page:{},defaultPage:{},itemsPerPage:{},total:{},siblingCount:{},disabled:{type:Boolean},showEdges:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:[`update:page`],setup(e,{emit:r}){let a=e,o=r,s=C(S(a,`class`),o);return(e,r)=>(_(),l(n(k),g({"data-slot":`pagination`},n(s),{class:n(I)(`mx-auto flex w-full justify-center`,a.class)}),{default:t(t=>[p(e.$slots,`default`,i(v(t)))]),_:3},16,[`class`]))}}),G=y({__name:`PaginationContent`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let r=e,a=S(r,`class`);return(e,o)=>(_(),l(n(E),g({"data-slot":`pagination-content`},n(a),{class:n(I)(`flex flex-row items-center gap-1`,r.class)}),{default:t(t=>[p(e.$slots,`default`,i(v(t)))]),_:3},16,[`class`]))}}),K=y({__name:`PaginationItem`,props:{value:{},asChild:{type:Boolean},as:{},size:{default:`icon`},class:{},isActive:{type:Boolean}},setup(e){let r=e,i=S(r,`class`,`size`,`isActive`);return(a,o)=>(_(),l(n(w),g({"data-slot":`pagination-item`},n(i),{class:n(I)(n(R)({variant:e.isActive?`outline`:`ghost`,size:e.size}),r.class)}),{default:t(()=>[p(a.$slots,`default`)]),_:3},16,[`class`]))}}),q=y({__name:`PaginationNext`,props:{asChild:{type:Boolean},as:{},size:{default:`default`},class:{}},setup(e){let r=e,i=O(S(r,`class`,`size`));return(a,o)=>(_(),l(n(T),g({"data-slot":`pagination-next`,class:n(I)(n(R)({variant:`ghost`,size:e.size}),`gap-1 px-2.5 sm:pr-2.5`,r.class)},n(i)),{default:t(()=>[p(a.$slots,`default`,{},()=>[o[0]||=d(`span`,{class:`hidden sm:block`},`Next`,-1),m(n(N))])]),_:3},16,[`class`]))}}),J=y({__name:`PaginationPrevious`,props:{asChild:{type:Boolean},as:{},size:{default:`default`},class:{}},setup(e){let r=e,i=O(S(r,`class`,`size`));return(a,o)=>(_(),l(n(D),g({"data-slot":`pagination-previous`,class:n(I)(n(R)({variant:`ghost`,size:e.size}),`gap-1 px-2.5 sm:pr-2.5`,r.class)},n(i)),{default:t(()=>[p(a.$slots,`default`,{},()=>[m(n(A)),o[0]||=d(`span`,{class:`hidden sm:block`},`Previous`,-1)])]),_:3},16,[`class`]))}}),Y={class:`flex items-start justify-between`},pe={class:`flex-1`},me={key:0,class:`ml-2`},he={class:`space-y-2`},ge={class:`flex items-center justify-between text-sm`},X={class:`text-muted-foreground`},_e={class:`relative`},ve={class:`h-2 bg-muted rounded-full overflow-hidden`},ye={key:0,class:`pt-2 border-t`},Z={class:`text-sm text-muted-foreground mb-2`},be={class:`flex flex-wrap gap-1`},xe={class:`flex gap-2 pt-2`},Se={key:1,class:`pt-2 border-t`},Ce={class:`text-xs text-muted-foreground mb-1`},we={class:`flex items-center gap-2 text-xs`},Te={class:`text-muted-foreground`},Q=y({__name:`NpcRelationCard`,props:{npc:{},relation:{}},setup(i){let o=i,p=x(),g=ue(),{t:v}=ae(),y=a(()=>o.relation?.reputation||0),S=a(()=>o.relation?.status||P.Neutral),C=a(()=>{switch(S.value){case P.Friendly:return v(`diplomacy.status.friendly`);case P.Hostile:return v(`diplomacy.status.hostile`);default:return v(`diplomacy.status.neutral`)}}),w=a(()=>{switch(S.value){case P.Friendly:return`default`;case P.Hostile:return`destructive`;default:return`secondary`}}),T=a(()=>y.value>=20?`text-green-600 dark:text-green-400`:y.value<=-20?`text-red-600 dark:text-red-400`:`text-muted-foreground`),E=a(()=>!o.relation?.history||o.relation.history.length===0?null:o.relation.history[o.relation.history.length-1]),D=e=>g.npcs.find(t=>t.id===e)?.name||e.substring(0,8),O=e=>{switch(e){case F.GiftResources:return M;case F.Attack:case F.AllyAttacked:return ne;case F.Spy:return j;case F.StealDebris:return re;default:return M}},k=e=>{switch(e){case F.GiftResources:return v(`diplomacy.events.gift`);case F.Attack:return v(`diplomacy.events.attack`);case F.AllyAttacked:return v(`diplomacy.events.allyAttacked`);case F.Spy:return v(`diplomacy.events.spy`);case F.StealDebris:return v(`diplomacy.events.stealDebris`);default:return e}},A=()=>{if(o.npc.planets.length>0){let e=o.npc.planets[0];if(!e)return;p.push({path:`/fleet`,query:{galaxy:e.position.galaxy,system:e.position.system,position:e.position.position,gift:`1`}})}},N=()=>{if(o.npc.planets.length>0){let e=o.npc.planets[0];if(!e)return;p.push({path:`/galaxy`,query:{galaxy:e.position.galaxy,system:e.position.system,highlightNpc:o.npc.id}})}};return(a,o)=>(_(),l(n(se),null,{default:t(()=>[m(n(B),null,{default:t(()=>[d(`div`,Y,[d(`div`,pe,[m(n(oe),{class:`flex items-center gap-2`},{default:t(()=>[e(c(i.npc.name)+` `,1),m(n(L),{variant:w.value},{default:t(()=>[e(c(C.value),1)]),_:1},8,[`variant`])]),_:1}),m(n(ie),{class:`mt-1`},{default:t(()=>[e(c(i.npc.planets.length)+` `+c(n(v)(`diplomacy.planets`))+` `,1),i.npc.allies&&i.npc.allies.length>0?(_(),s(`span`,me,`· `+c(i.npc.allies.length)+` `+c(n(v)(`diplomacy.allies`)),1)):f(``,!0)]),_:1})])])]),_:1}),m(n(V),{class:`space-y-4`},{default:t(()=>[d(`div`,he,[d(`div`,ge,[d(`span`,X,c(n(v)(`diplomacy.reputation`)),1),d(`span`,{class:ee([`font-semibold`,T.value])},c(y.value>0?`+`:``)+c(y.value),3)]),d(`div`,_e,[d(`div`,ve,[y.value<0?(_(),s(`div`,{key:0,class:`h-full bg-red-500 dark:bg-red-600 absolute right-1/2`,style:u({width:`${Math.abs(y.value)/2}%`})},null,4)):f(``,!0),y.value>0?(_(),s(`div`,{key:1,class:`h-full bg-green-500 dark:bg-green-600 absolute left-1/2`,style:u({width:`${y.value/2}%`})},null,4)):f(``,!0)]),o[0]||=d(`div`,{class:`absolute left-1/2 top-0 bottom-0 w-px bg-border`},null,-1)]),o[1]||=d(`div`,{class:`flex justify-between text-xs text-muted-foreground`},[d(`span`,null,`-100`),d(`span`,null,`0`),d(`span`,null,`+100`)],-1)]),i.npc.allies&&i.npc.allies.length>0?(_(),s(`div`,ye,[d(`p`,Z,c(n(v)(`diplomacy.alliedWith`))+`:`,1),d(`div`,be,[(_(!0),s(r,null,h(i.npc.allies.slice(0,3),r=>(_(),l(n(L),{key:r,variant:`outline`,class:`text-xs`},{default:t(()=>[e(c(D(r)),1)]),_:2},1024))),128)),i.npc.allies.length>3?(_(),l(n(L),{key:0,variant:`outline`,class:`text-xs`},{default:t(()=>[e(` +`+c(i.npc.allies.length-3)+` `+c(n(v)(`diplomacy.more`)),1)]),_:1})):f(``,!0)])])):f(``,!0),d(`div`,xe,[m(n(z),{size:`sm`,variant:`outline`,class:`flex-1`,onClick:A},{default:t(()=>[m(n(M),{class:`h-4 w-4 mr-2`}),e(` `+c(n(v)(`diplomacy.actions.gift`)),1)]),_:1}),m(n(z),{size:`sm`,variant:`outline`,class:`flex-1`,onClick:N},{default:t(()=>[m(n(te),{class:`h-4 w-4 mr-2`}),e(` `+c(n(v)(`diplomacy.actions.viewPlanets`)),1)]),_:1})]),E.value?(_(),s(`div`,Se,[d(`p`,Ce,c(n(v)(`diplomacy.lastEvent`))+`:`,1),d(`div`,we,[(_(),l(b(O(E.value.reason)),{class:`h-3 w-3`})),d(`span`,null,c(k(E.value.reason)),1),d(`span`,Te,c(n(ce)(Date.now()-E.value.timestamp))+` `+c(n(v)(`diplomacy.ago`)),1)])])):f(``,!0)]),_:1})]),_:1}))}}),Ee={class:`container mx-auto p-4 sm:p-6 space-y-6`},De={class:`flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4`},Oe={class:`text-2xl sm:text-3xl font-bold`},ke={class:`text-sm text-muted-foreground mt-1`},Ae={key:0,class:`text-center py-12 text-muted-foreground`},je={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Me={key:1,class:`px-2 text-muted-foreground`},Ne={key:0,class:`text-center py-12 text-muted-foreground`},Pe={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Fe={key:1,class:`px-2 text-muted-foreground`},Ie={key:0,class:`text-center py-12 text-muted-foreground`},Le={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Re={key:1,class:`px-2 text-muted-foreground`},ze={key:0,class:`text-center py-12 text-muted-foreground`},Be={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Ve={key:1,class:`px-2 text-muted-foreground`},He={class:`space-y-2 max-h-96 overflow-y-auto`},Ue={class:`flex-shrink-0 mt-0.5`},We={class:`flex-1 min-w-0`},Ge={class:`flex items-center gap-2 mb-1`},Ke={class:`font-medium`},qe={class:`text-sm text-muted-foreground`},Je={class:`text-xs text-muted-foreground mt-1`},$=20,Ye=y({__name:`DiplomacyView`,setup(i){let u=le(),p=ue(),{t:g}=ae(),v=o(`all`),y=o({all:1,friendly:1,neutral:1,hostile:1}),x=e=>u.player.diplomaticRelations?.[e],S=a(()=>p.npcs),C=a(()=>p.npcs.filter(e=>x(e.id)?.status===P.Friendly)),w=a(()=>p.npcs.filter(e=>{let t=x(e.id);return!t||t.status===P.Neutral})),T=a(()=>p.npcs.filter(e=>x(e.id)?.status===P.Hostile)),E=(e,t)=>{let n=((y.value[t]||1)-1)*$,r=n+$;return e.slice(n,r)},D=e=>Math.ceil(e.length/$),O=a(()=>E(S.value,`all`)),k=a(()=>E(C.value,`friendly`)),A=a(()=>E(w.value,`neutral`)),te=a(()=>E(T.value,`hostile`)),N=a(()=>D(S.value)),I=a(()=>D(C.value)),R=a(()=>D(w.value)),z=a(()=>D(T.value)),Y=(e,t)=>{let n=[];if(t<=5)for(let e=1;e<=t;e++)n.push(e);else{n.push(1),e>3&&n.push(`...`);let r=Math.max(2,e-1),i=Math.min(t-1,e+1);for(let e=r;e<=i;e++)n.push(e);eY(y.value.all||1,N.value)),me=a(()=>Y(y.value.friendly||1,I.value)),he=a(()=>Y(y.value.neutral||1,R.value)),ge=a(()=>Y(y.value.hostile||1,z.value)),X=a(()=>[...u.player.diplomaticReports||[]].sort((e,t)=>t.timestamp-e.timestamp).slice(0,20)),_e=e=>{switch(e){case F.GiftResources:return M;case F.Attack:case F.AllyAttacked:return ne;case F.Spy:return j;case F.StealDebris:return re;default:return M}},ve=e=>e>0?`text-green-600 dark:text-green-400`:e<0?`text-red-600 dark:text-red-400`:`text-muted-foreground`,ye=e=>e>0?`default`:e<0?`destructive`:`secondary`,Z=e=>{switch(e){case P.Friendly:return`default`;case P.Hostile:return`destructive`;default:return`secondary`}},be=e=>{switch(e){case P.Friendly:return g(`diplomacy.status.friendly`);case P.Hostile:return g(`diplomacy.status.hostile`);default:return g(`diplomacy.status.neutral`)}};return(i,a)=>(_(),s(`div`,Ee,[d(`div`,De,[d(`div`,null,[d(`h1`,Oe,c(n(g)(`diplomacy.title`)),1),d(`p`,ke,c(n(g)(`diplomacy.description`)),1)])]),m(n(de),{modelValue:v.value,"onUpdate:modelValue":a[4]||=e=>v.value=e,class:`w-full`},{default:t(()=>[m(n(fe),{class:`grid w-full grid-cols-4`},{default:t(()=>[m(n(U),{value:`all`},{default:t(()=>[e(c(n(g)(`diplomacy.tabs.all`))+` `,1),m(n(L),{variant:`secondary`,class:`ml-2`},{default:t(()=>[e(c(S.value.length),1)]),_:1})]),_:1}),m(n(U),{value:`friendly`},{default:t(()=>[e(c(n(g)(`diplomacy.tabs.friendly`))+` `,1),m(n(L),{variant:`secondary`,class:`ml-2`},{default:t(()=>[e(c(C.value.length),1)]),_:1})]),_:1}),m(n(U),{value:`neutral`},{default:t(()=>[e(c(n(g)(`diplomacy.tabs.neutral`))+` `,1),m(n(L),{variant:`secondary`,class:`ml-2`},{default:t(()=>[e(c(w.value.length),1)]),_:1})]),_:1}),m(n(U),{value:`hostile`},{default:t(()=>[e(c(n(g)(`diplomacy.tabs.hostile`))+` `,1),m(n(L),{variant:`secondary`,class:`ml-2`},{default:t(()=>[e(c(T.value.length),1)]),_:1})]),_:1})]),_:1}),m(n(H),{value:`all`,class:`space-y-4 mt-6`},{default:t(()=>[S.value.length===0?(_(),s(`div`,Ae,c(n(g)(`diplomacy.noNpcs`)),1)):(_(),s(r,{key:1},[d(`div`,je,[(_(!0),s(r,null,h(O.value,e=>(_(),l(Q,{key:e.id,npc:e,relation:x(e.id)},null,8,[`npc`,`relation`]))),128))]),N.value>1?(_(),l(n(W),{key:0,page:y.value.all,"onUpdate:page":a[0]||=e=>y.value.all=e,total:S.value.length,"items-per-page":$,"sibling-count":1,"show-edges":``,class:`mt-6`},{default:t(()=>[m(n(G),null,{default:t(()=>[m(n(J),null,{default:t(()=>[e(c(n(g)(`pagination.previous`)),1)]),_:1}),(_(!0),s(r,null,h(pe.value,(i,a)=>(_(),s(r,{key:a},[typeof i==`number`?(_(),l(n(K),{key:0,value:i,"is-active":i===y.value.all},{default:t(()=>[e(c(i),1)]),_:2},1032,[`value`,`is-active`])):(_(),s(`span`,Me,c(i),1))],64))),128)),m(n(q),null,{default:t(()=>[e(c(n(g)(`pagination.next`)),1)]),_:1})]),_:1})]),_:1},8,[`page`,`total`])):f(``,!0)],64))]),_:1}),m(n(H),{value:`friendly`,class:`space-y-4 mt-6`},{default:t(()=>[C.value.length===0?(_(),s(`div`,Ne,c(n(g)(`diplomacy.noFriendlyNpcs`)),1)):(_(),s(r,{key:1},[d(`div`,Pe,[(_(!0),s(r,null,h(k.value,e=>(_(),l(Q,{key:e.id,npc:e,relation:x(e.id)},null,8,[`npc`,`relation`]))),128))]),I.value>1?(_(),l(n(W),{key:0,page:y.value.friendly,"onUpdate:page":a[1]||=e=>y.value.friendly=e,total:C.value.length,"items-per-page":$,"sibling-count":1,"show-edges":``,class:`mt-6`},{default:t(()=>[m(n(G),null,{default:t(()=>[m(n(J),null,{default:t(()=>[e(c(n(g)(`pagination.previous`)),1)]),_:1}),(_(!0),s(r,null,h(me.value,(i,a)=>(_(),s(r,{key:a},[typeof i==`number`?(_(),l(n(K),{key:0,value:i,"is-active":i===y.value.friendly},{default:t(()=>[e(c(i),1)]),_:2},1032,[`value`,`is-active`])):(_(),s(`span`,Fe,c(i),1))],64))),128)),m(n(q),null,{default:t(()=>[e(c(n(g)(`pagination.next`)),1)]),_:1})]),_:1})]),_:1},8,[`page`,`total`])):f(``,!0)],64))]),_:1}),m(n(H),{value:`neutral`,class:`space-y-4 mt-6`},{default:t(()=>[w.value.length===0?(_(),s(`div`,Ie,c(n(g)(`diplomacy.noNeutralNpcs`)),1)):(_(),s(r,{key:1},[d(`div`,Le,[(_(!0),s(r,null,h(A.value,e=>(_(),l(Q,{key:e.id,npc:e,relation:x(e.id)},null,8,[`npc`,`relation`]))),128))]),R.value>1?(_(),l(n(W),{key:0,page:y.value.neutral,"onUpdate:page":a[2]||=e=>y.value.neutral=e,total:w.value.length,"items-per-page":$,"sibling-count":1,"show-edges":``,class:`mt-6`},{default:t(()=>[m(n(G),null,{default:t(()=>[m(n(J),null,{default:t(()=>[e(c(n(g)(`pagination.previous`)),1)]),_:1}),(_(!0),s(r,null,h(he.value,(i,a)=>(_(),s(r,{key:a},[typeof i==`number`?(_(),l(n(K),{key:0,value:i,"is-active":i===y.value.neutral},{default:t(()=>[e(c(i),1)]),_:2},1032,[`value`,`is-active`])):(_(),s(`span`,Re,c(i),1))],64))),128)),m(n(q),null,{default:t(()=>[e(c(n(g)(`pagination.next`)),1)]),_:1})]),_:1})]),_:1},8,[`page`,`total`])):f(``,!0)],64))]),_:1}),m(n(H),{value:`hostile`,class:`space-y-4 mt-6`},{default:t(()=>[T.value.length===0?(_(),s(`div`,ze,c(n(g)(`diplomacy.noHostileNpcs`)),1)):(_(),s(r,{key:1},[d(`div`,Be,[(_(!0),s(r,null,h(te.value,e=>(_(),l(Q,{key:e.id,npc:e,relation:x(e.id)},null,8,[`npc`,`relation`]))),128))]),z.value>1?(_(),l(n(W),{key:0,page:y.value.hostile,"onUpdate:page":a[3]||=e=>y.value.hostile=e,total:T.value.length,"items-per-page":$,"sibling-count":1,"show-edges":``,class:`mt-6`},{default:t(()=>[m(n(G),null,{default:t(()=>[m(n(J),null,{default:t(()=>[e(c(n(g)(`pagination.previous`)),1)]),_:1}),(_(!0),s(r,null,h(ge.value,(i,a)=>(_(),s(r,{key:a},[typeof i==`number`?(_(),l(n(K),{key:0,value:i,"is-active":i===y.value.hostile},{default:t(()=>[e(c(i),1)]),_:2},1032,[`value`,`is-active`])):(_(),s(`span`,Ve,c(i),1))],64))),128)),m(n(q),null,{default:t(()=>[e(c(n(g)(`pagination.next`)),1)]),_:1})]),_:1})]),_:1},8,[`page`,`total`])):f(``,!0)],64))]),_:1})]),_:1},8,[`modelValue`]),X.value.length>0?(_(),l(n(se),{key:0},{default:t(()=>[m(n(B),null,{default:t(()=>[m(n(oe),null,{default:t(()=>[e(c(n(g)(`diplomacy.recentEvents`)),1)]),_:1}),m(n(ie),null,{default:t(()=>[e(c(n(g)(`diplomacy.recentEventsDescription`)),1)]),_:1})]),_:1}),m(n(V),null,{default:t(()=>[d(`div`,He,[(_(!0),s(r,null,h(X.value,r=>(_(),s(`div`,{key:r.id,class:`flex items-start gap-3 p-3 rounded-lg border bg-card hover:bg-accent/50 transition-colors`},[d(`div`,Ue,[(_(),l(b(_e(r.eventType)),{class:ee([`h-5 w-5`,ve(r.reputationChange)])},null,8,[`class`]))]),d(`div`,We,[d(`div`,Ge,[d(`span`,Ke,c(r.npcName),1),m(n(L),{variant:ye(r.reputationChange),class:`text-xs`},{default:t(()=>[e(c(r.reputationChange>0?`+`:``)+c(r.reputationChange),1)]),_:2},1032,[`variant`]),m(n(L),{variant:Z(r.newStatus),class:`text-xs`},{default:t(()=>[e(c(be(r.newStatus)),1)]),_:2},1032,[`variant`])]),d(`p`,qe,c(r.message),1),d(`p`,Je,c(n(ce)(Date.now()-r.timestamp))+` `+c(n(g)(`diplomacy.ago`)),1)])]))),128))])]),_:1})]),_:1})):f(``,!0)]))}});export{Ye as default}; \ No newline at end of file diff --git a/docs/assets/FleetView-BzElc0kX.js b/docs/assets/FleetView-BzElc0kX.js new file mode 100644 index 0000000..c285914 --- /dev/null +++ b/docs/assets/FleetView-BzElc0kX.js @@ -0,0 +1 @@ +import{A as e,An as t,At as n,B as r,En as i,Fn as a,H as o,On as s,Pt as c,Rn as l,Tn as u,Yn as d,a as ee,ar as te,cn as f,cr as p,dn as m,fn as h,hn as ne,it as re,j as ie,jt as ae,k as oe,kn as se,ln as g,n as ce,on as _,or as le,pn as v,rn as y,rr as b,sn as x,un as S,wn as ue,xn as de}from"./game-logic-BBFCPVtv.js";import"./vendor-pinia-L_8CmDWM.js";import{a as fe,o as pe}from"./vendor-vue-router-0mfLVB6Y.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-BC9uiVvf.js";import{l as me}from"./vendor-others-Bce0hM6h.js";import{$ as C,F as w,I as T}from"./vendor-reka-ui-DR3m_AkV.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-Djj-oRw9.js";import{B as he,L as ge,Z as E,b as _e,f as ve,i as ye,l as be,v as xe,w as Se}from"./vendor-icons-Ccm2_GPI.js";import{t as D}from"./CardDescription-DduF5EVY.js";import{_ as O,d as Ce,m as k}from"./game-config-DRP-gbpS.js";import{$ as we,A as Te,F as Ee,G as De,I as Oe,J as A,K as j,L as M,M as ke,N as Ae,Q as je,V as N,X as Me,Y as P,Z as Ne,d as F,f as I,j as Pe,k as Fe,m as L,o as R,p as z,s as Ie,u as B}from"./index-B4KMqZ_y.js";import{t as Le}from"./useGameConfig-DLqfPHtW.js";import{i as Re,n as ze,r as V,t as H}from"./TabsTrigger-BnZOhHbD.js";import{t as Be}from"./UnlockRequirement-DJ9dN5JL.js";var Ve=v({__name:`Checkbox`,props:{defaultValue:{type:[Boolean,String]},modelValue:{type:[Boolean,String,null]},disabled:{type:Boolean},value:{},id:{},asChild:{type:Boolean},as:{},name:{},required:{type:Boolean},class:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,r=t,a=C(me(n,`class`),r);return(e,t)=>(i(),f(b(T),de({"data-slot":`checkbox`},b(a),{class:b(P)(`peer border-input data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50`,n.class)}),{default:l(t=>[h(b(w),{"data-slot":`checkbox-indicator`,class:`grid place-content-center text-current transition-none`},{default:l(()=>[se(e.$slots,`default`,le(ne(t)),()=>[h(b(E),{class:`size-3.5`})])]),_:2},1024)]),_:3},16,[`class`]))}}),He={key:0,class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},Ue={class:`text-2xl sm:text-3xl font-bold`},We={class:`grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4`},Ge={class:`flex justify-between items-start`},Ke={class:`font-semibold text-sm sm:text-base`},qe={class:`text-xl sm:text-2xl font-bold`},Je={class:`text-xs sm:text-sm text-muted-foreground space-y-1`},Ye={class:`flex justify-between items-center`},Xe={class:`text-sm font-medium`},Ze={class:`text-sm font-bold`},Qe={class:`grid grid-cols-1 sm:grid-cols-2 gap-3 sm:gap-4`},$e={class:`flex gap-2`},et={class:`grid grid-cols-3 gap-2 sm:gap-4`},tt={class:`space-y-2`},nt={class:`space-y-2`},rt={class:`space-y-2`},it={class:`grid grid-cols-2 sm:grid-cols-3 gap-2`},at={key:0,class:`mb-4 p-3 border rounded-lg bg-muted/50`},ot={class:`flex items-center gap-2 mb-2`},st={class:`text-xs text-muted-foreground`},ct={key:0,class:`mt-2 text-xs`},lt={class:`text-muted-foreground`},ut={class:`ml-1 font-semibold text-green-600 dark:text-green-400`},dt={class:`grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4`},ft={class:`space-y-2`},pt={class:`space-y-2`},mt={class:`space-y-2`},ht={class:`text-xs sm:text-sm text-muted-foreground mt-2`},gt={class:`flex justify-between text-xs sm:text-sm`},_t={class:`text-muted-foreground`},vt={class:`flex items-center gap-1.5`},yt={class:`text-muted-foreground`},bt={key:0,class:`flex justify-between text-xs sm:text-sm`},xt={class:`text-muted-foreground`},St={class:`flex justify-between items-start`},Ct={class:`text-xs sm:text-sm font-medium mb-2`},wt={class:`flex flex-wrap gap-2`},Tt={key:0},Et={class:`text-xs sm:text-sm font-medium mb-2`},Dt={class:`flex flex-wrap gap-2 text-xs`},Ot={key:0,class:`flex items-center gap-1`},kt={key:1,class:`flex items-center gap-1`},At={key:2,class:`flex items-center gap-1`},jt={key:3,class:`flex items-center gap-1`},Mt={class:`space-y-2`},Nt={class:`flex justify-between text-xs sm:text-sm`},Pt={class:`flex gap-2`},U=v({__name:`FleetView`,setup(ne){let se=fe(),le=pe(),v=we(),de=je(),me=Ne(),{t:C}=Me(),{SHIPS:w}=Le(),T=_(()=>v.currentPlanet),E=d(!1),P=d(``),U=d(``),W=d(Date.now()),G=null,Ft=_(()=>re(c(v.player.officers,Date.now()).additionalFleetSlots)),K=d(`fleet`),q=d({[O.LightFighter]:0,[O.HeavyFighter]:0,[O.Cruiser]:0,[O.Battleship]:0,[O.SmallCargo]:0,[O.LargeCargo]:0,[O.ColonyShip]:0,[O.Recycler]:0,[O.EspionageProbe]:0,[O.DarkMatterHarvester]:0,[O.Deathstar]:0}),J=d({galaxy:1,system:1,position:1}),Y=d(k.Attack),X=d({metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0});ue(()=>{G=window.setInterval(()=>{W.value=Date.now()},1e3);let{galaxy:e,system:t,position:n,mission:r,gift:i}=se.query;(e||t||n)&&(e&&(J.value.galaxy=Number(e)),t&&(J.value.system=Number(t)),n&&(J.value.position=Number(n)),r===`spy`?Y.value=k.Spy:r===`attack`?Y.value=k.Attack:r===`colonize`?Y.value=k.Colonize:i===`1`&&(Y.value=k.Transport,Q.value=!0),K.value=`send`,le.replace({path:`/fleet`}))}),u(()=>{G&&clearInterval(G)});let Z=_(()=>me.npcs.find(e=>e.planets.some(e=>e.position.galaxy===J.value.galaxy&&e.position.system===J.value.system&&e.position.position===J.value.position))),Q=d(!1);a(Z,e=>{!e&&Q.value&&(Q.value=!1)});let It=()=>o(X.value),Lt=_(()=>[{type:k.Attack,name:C(`fleetView.attackMission`),icon:be},{type:k.Transport,name:C(`fleetView.transport`),icon:Se},{type:k.Colonize,name:C(`fleetView.colonize`),icon:xe},{type:k.Spy,name:C(`fleetView.spy`),icon:he},{type:k.Deploy,name:C(`fleetView.deploy`),icon:ye},{type:k.Recycle,name:C(`fleetView.recycle`),icon:_e},{type:k.Destroy,name:C(`fleetView.destroy`),icon:ve}]),Rt=e=>Lt.value.find(t=>t.type===e)?.name||e,zt=e=>v.player.planets.find(t=>t.id===e)?.name||C(`fleetView.unknownPlanet`),Bt=()=>{let e=0;for(let[t,n]of Object.entries(q.value))if(n>0){let r=w.value[t];e+=r.cargoCapacity*n}return e},$=()=>X.value.metal+X.value.crystal+X.value.deuterium+X.value.darkMatter,Vt=()=>{let e=c(v.player.officers,Date.now());return n(q.value,e.fuelConsumptionReduction,X.value)},Ht=()=>{if(!T.value)return 0;let t=oe(T.value.position,J.value),n=c(v.player.officers,Date.now());return e(t,ae(q.value,n.fleetSpeedBonus))},Ut=()=>{if(!Object.values(q.value).some(e=>e>0))return{valid:!1,errorKey:`fleetView.noShipsSelected`};if(T.value&&Y.value!==k.Recycle&&Y.value!==k.Deploy&&J.value.galaxy===T.value.position.galaxy&&J.value.system===T.value.position.system&&J.value.position===T.value.position.position)return{valid:!1,errorKey:`fleetView.cannotSendToOwnPlanet`};if(Y.value===k.Transport&&$()>Bt())return{valid:!1,errorKey:`fleetView.cargoExceedsCapacity`};if(Y.value===k.Colonize&&(!q.value[O.ColonyShip]||(q.value[O.ColonyShip]??0)<1))return{valid:!1,errorKey:`fleetView.noColonyShip`};if(Y.value===k.Recycle){let e=`debris_${J.value.galaxy}_${J.value.system}_${J.value.position}`,t=de.debrisFields[e];if(!t||t.resources.metal===0&&t.resources.crystal===0)return{valid:!1,errorKey:`fleetView.noDebrisAtTarget`}}return Y.value===k.Destroy&&(!q.value[O.Deathstar]||(q.value[O.Deathstar]??0)<1)?{valid:!1,errorKey:`fleetView.noDeathstar`}:{valid:!0}},Wt=(t,n,r,i={metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0})=>{if(!v.currentPlanet)return!1;let a=v.player.fleetMissions.length,o=ee(v.currentPlanet,r,i,v.player.officers,a);if(!o.valid)return!1;let s=n===k.Transport;ce(v.currentPlanet,r,o.fuelNeeded,s,i);let l=e(oe(v.currentPlanet.position,t),ae(r,c(v.player.officers,Date.now()).fleetSpeedBonus)),u=ie(v.player.id,v.currentPlanet.id,t,n,r,i,l);return n===k.Transport&&Q.value&&Z.value&&(u.isGift=!0,u.giftTargetNpcId=Z.value.id),v.player.fleetMissions.push(u),!0},Gt=()=>{if(!T.value)return;let e=Ut();if(!e.valid){P.value=C(`fleetView.sendFailed`),U.value=e.errorKey?C(e.errorKey):C(`fleetView.sendFailedMessage`),E.value=!0;return}let t={};for(let[e,n]of Object.entries(q.value))n>0&&(t[e]=n);Wt(J.value,Y.value,t,Y.value===k.Transport?X.value:void 0)?(Object.keys(q.value).forEach(e=>{q.value[e]=0}),X.value={metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},Q.value=!1,K.value=`missions`):(P.value=C(`fleetView.sendFailed`),U.value=C(`fleetView.sendFailedMessage`),E.value=!0)},Kt=e=>{let t=v.player.fleetMissions.find(t=>t.id===e);return t?r(t,Date.now()):!1},qt=e=>{Kt(e)||(P.value=C(`fleetView.recallFailed`),U.value=C(`fleetView.recallFailedMessage`),E.value=!0)},Jt=e=>{let t=W.value,n=e.status===`outbound`?e.arrivalTime:e.returnTime;return Math.max(0,(n-t)/1e3)},Yt=e=>{let t=W.value;if(e.status===`outbound`){let n=e.arrivalTime-e.departureTime,r=t-e.departureTime;return Math.max(0,Math.min(100,r/n*100))}else{let n=e.arrivalTime,r=e.returnTime-n,i=t-n;return Math.max(0,Math.min(100,i/r*100))}};return(e,n)=>T.value?(i(),S(`div`,He,[h(Be,{"required-building":b(Ce).Shipyard,"required-level":1},null,8,[`required-building`]),x(`h1`,Ue,p(b(C)(`fleetView.title`)),1),h(b(Re),{modelValue:K.value,"onUpdate:modelValue":n[6]||=e=>K.value=e,class:`w-full`},{default:l(()=>[h(b(ze),{class:`grid w-full grid-cols-3`},{default:l(()=>[h(b(H),{value:`fleet`},{default:l(()=>[m(p(b(C)(`fleetView.fleetOverview`)),1)]),_:1}),h(b(H),{value:`send`},{default:l(()=>[m(p(b(C)(`fleetView.sendFleet`)),1)]),_:1}),h(b(H),{value:`missions`},{default:l(()=>[m(p(b(C)(`fleetView.flightMissions`))+` `,1),b(v).player.fleetMissions.length>0?(i(),f(b(j),{key:0,variant:`destructive`,class:`ml-1`},{default:l(()=>[m(p(b(v).player.fleetMissions.length),1)]),_:1})):g(``,!0)]),_:1})]),_:1}),h(b(V),{value:`fleet`,class:`mt-4`},{default:l(()=>[h(b(L),null,{default:l(()=>[h(b(I),null,{default:l(()=>[h(b(F),null,{default:l(()=>[m(p(b(C)(`fleetView.currentPlanetFleet`)),1)]),_:1}),h(b(D),null,{default:l(()=>[m(p(T.value.name)+` [`+p(T.value.position.galaxy)+`:`+p(T.value.position.system)+`:`+p(T.value.position.position)+`] `,1)]),_:1})]),_:1}),h(b(z),null,{default:l(()=>[x(`div`,We,[(i(!0),S(y,null,s(T.value.fleet,(e,t)=>(i(),S(`div`,{key:t,class:`p-3 sm:p-4 border rounded-lg space-y-2`},[x(`div`,Ge,[x(`div`,null,[x(`h3`,Ke,p(b(w)[t].name),1),x(`p`,qe,p(b(R)(e)),1)])]),x(`div`,Je,[x(`p`,null,p(b(C)(`fleetView.attack`))+`: `+p(b(w)[t].attack),1),x(`p`,null,p(b(C)(`fleetView.shield`))+`: `+p(b(w)[t].shield),1),x(`p`,null,p(b(C)(`fleetView.armor`))+`: `+p(b(w)[t].armor),1),x(`p`,null,p(b(C)(`fleetView.speed`))+`: `+p(b(R)(b(w)[t].speed)),1),x(`p`,null,p(b(C)(`fleetView.cargo`))+`: `+p(b(R)(b(w)[t].cargoCapacity)),1)])]))),128))])]),_:1})]),_:1})]),_:1}),h(b(V),{value:`send`,class:`mt-4 space-y-4`},{default:l(()=>[h(b(L),null,{default:l(()=>[h(b(z),{class:`py-4`},{default:l(()=>[x(`div`,Ye,[x(`span`,Xe,p(b(C)(`fleetView.fleetMissionSlots`))+`:`,1),x(`span`,Ze,p(b(v).player.fleetMissions.length)+` / `+p(Ft.value),1)])]),_:1})]),_:1}),h(b(L),null,{default:l(()=>[h(b(I),null,{default:l(()=>[h(b(F),null,{default:l(()=>[m(p(b(C)(`fleetView.selectFleet`)),1)]),_:1}),h(b(D),null,{default:l(()=>[m(p(b(C)(`fleetView.selectFleetDescription`)),1)]),_:1})]),_:1}),h(b(z),null,{default:l(()=>[x(`div`,Qe,[(i(!0),S(y,null,s(T.value.fleet,(e,t)=>(i(),S(`div`,{key:t,class:`space-y-2`},[h(b(B),{for:`ship-${t}`,class:`text-xs sm:text-sm`},{default:l(()=>[m(p(b(w)[t].name)+` (`+p(b(C)(`fleetView.available`))+`: `+p(e)+`) `,1)]),_:2},1032,[`for`]),x(`div`,$e,[h(b(N),{id:`ship-${t}`,modelValue:q.value[t],"onUpdate:modelValue":e=>q.value[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:e,placeholder:`0`,class:`text-sm`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`max`]),h(b(A),{onClick:n=>q.value[t]=e,variant:`outline`,size:`sm`},{default:l(()=>[m(p(b(C)(`fleetView.all`)),1)]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1}),h(b(L),null,{default:l(()=>[h(b(I),null,{default:l(()=>[h(b(F),null,{default:l(()=>[m(p(b(C)(`fleetView.targetCoordinates`)),1)]),_:1})]),_:1}),h(b(z),null,{default:l(()=>[x(`div`,et,[x(`div`,tt,[h(b(B),{for:`galaxy`,class:`text-xs sm:text-sm`},{default:l(()=>[m(p(b(C)(`fleetView.galaxy`)),1)]),_:1}),h(b(N),{id:`galaxy`,modelValue:J.value.galaxy,"onUpdate:modelValue":n[0]||=e=>J.value.galaxy=e,modelModifiers:{number:!0},type:`number`,min:`1`,max:`9`,placeholder:`1`},null,8,[`modelValue`])]),x(`div`,nt,[h(b(B),{for:`system`,class:`text-xs sm:text-sm`},{default:l(()=>[m(p(b(C)(`fleetView.system`)),1)]),_:1}),h(b(N),{id:`system`,modelValue:J.value.system,"onUpdate:modelValue":n[1]||=e=>J.value.system=e,modelModifiers:{number:!0},type:`number`,min:`1`,max:`10`,placeholder:`1`},null,8,[`modelValue`])]),x(`div`,rt,[h(b(B),{for:`position`,class:`text-xs sm:text-sm`},{default:l(()=>[m(p(b(C)(`fleetView.position`)),1)]),_:1}),h(b(N),{id:`position`,modelValue:J.value.position,"onUpdate:modelValue":n[2]||=e=>J.value.position=e,modelModifiers:{number:!0},type:`number`,min:`1`,max:`10`,placeholder:`1`},null,8,[`modelValue`])])])]),_:1})]),_:1}),h(b(L),null,{default:l(()=>[h(b(I),null,{default:l(()=>[h(b(F),null,{default:l(()=>[m(p(b(C)(`fleetView.missionType`)),1)]),_:1})]),_:1}),h(b(z),null,{default:l(()=>[x(`div`,it,[(i(!0),S(y,null,s(Lt.value,e=>(i(),f(b(A),{key:e.type,onClick:t=>Y.value=e.type,variant:Y.value===e.type?`default`:`outline`,class:`justify-start`},{default:l(()=>[(i(),f(t(e.icon),{class:`h-4 w-4 mr-2`})),m(` `+p(e.name),1)]),_:2},1032,[`onClick`,`variant`]))),128))])]),_:1})]),_:1}),Y.value===b(k).Transport?(i(),f(b(L),{key:0},{default:l(()=>[h(b(I),null,{default:l(()=>[h(b(F),null,{default:l(()=>[m(p(b(C)(`fleetView.transportResources`)),1)]),_:1})]),_:1}),h(b(z),null,{default:l(()=>[Z.value?(i(),S(`div`,at,[x(`div`,ot,[h(b(Ve),{id:`gift-mode`,"default-value":Q.value},null,8,[`default-value`]),h(b(B),{for:`gift-mode`,class:`flex items-center gap-2 cursor-pointer`},{default:l(()=>[h(b(ge),{class:`h-4 w-4`}),m(` `+p(b(C)(`fleetView.giftMode`)),1)]),_:1})]),x(`p`,st,p(b(C)(`fleetView.giftModeDescription`))+` `+p(Z.value.name),1),Q.value&&(X.value.metal>0||X.value.crystal>0||X.value.deuterium>0)?(i(),S(`div`,ct,[x(`span`,lt,p(b(C)(`fleetView.estimatedReputationGain`))+`:`,1),x(`span`,ut,`+`+p(It()),1)])):g(``,!0)])):g(``,!0),x(`div`,dt,[x(`div`,ft,[h(b(B),{for:`cargo-metal`,class:`text-xs sm:text-sm flex items-center gap-2`},{default:l(()=>[h(M,{type:`metal`,size:`sm`}),m(` `+p(b(C)(`resources.metal`))+` (`+p(b(C)(`fleetView.available`))+`: `+p(b(R)(T.value.resources.metal))+`) `,1)]),_:1}),h(b(N),{id:`cargo-metal`,modelValue:X.value.metal,"onUpdate:modelValue":n[3]||=e=>X.value.metal=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:T.value.resources.metal,placeholder:`0`},null,8,[`modelValue`,`max`])]),x(`div`,pt,[h(b(B),{for:`cargo-crystal`,class:`text-xs sm:text-sm flex items-center gap-2`},{default:l(()=>[h(M,{type:`crystal`,size:`sm`}),m(` `+p(b(C)(`resources.crystal`))+` (`+p(b(C)(`fleetView.available`))+`: `+p(b(R)(T.value.resources.crystal))+`) `,1)]),_:1}),h(b(N),{id:`cargo-crystal`,modelValue:X.value.crystal,"onUpdate:modelValue":n[4]||=e=>X.value.crystal=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:T.value.resources.crystal,placeholder:`0`},null,8,[`modelValue`,`max`])]),x(`div`,mt,[h(b(B),{for:`cargo-deuterium`,class:`text-xs sm:text-sm flex items-center gap-2`},{default:l(()=>[h(M,{type:`deuterium`,size:`sm`}),m(` `+p(b(C)(`resources.deuterium`))+` (`+p(b(C)(`fleetView.available`))+`: `+p(b(R)(T.value.resources.deuterium))+`) `,1)]),_:1}),h(b(N),{id:`cargo-deuterium`,modelValue:X.value.deuterium,"onUpdate:modelValue":n[5]||=e=>X.value.deuterium=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:T.value.resources.deuterium,placeholder:`0`},null,8,[`modelValue`,`max`])])]),x(`p`,ht,p(b(C)(`fleetView.totalCargoCapacity`))+`: `+p(b(R)(Bt()))+` | `+p(b(C)(`fleetView.used`))+`: `+p(b(R)($())),1)]),_:1})]),_:1})):g(``,!0),h(b(L),null,{default:l(()=>[h(b(I),null,{default:l(()=>[h(b(F),null,{default:l(()=>[m(p(b(C)(`fleetView.missionInfo`)),1)]),_:1})]),_:1}),h(b(z),{class:`space-y-2`},{default:l(()=>[x(`div`,gt,[x(`span`,_t,p(b(C)(`fleetView.fuelConsumption`))+`:`,1),x(`span`,vt,[h(M,{type:`deuterium`,size:`sm`}),x(`span`,{class:te(Vt()>T.value.resources.deuterium?`text-red-600 dark:text-red-400 font-medium`:``)},p(b(R)(Vt())),3),x(`span`,yt,`/ `+p(b(R)(T.value.resources.deuterium)),1)])]),Object.values(q.value).some(e=>e>0)?(i(),S(`div`,bt,[x(`span`,xt,p(b(C)(`fleetView.flightTime`))+`:`,1),x(`span`,null,p(b(Ie)(Ht())),1)])):g(``,!0)]),_:1})]),_:1}),h(b(A),{onClick:Gt,disabled:!Ut(),class:`w-full`,size:`lg`},{default:l(()=>[m(p(b(C)(`fleetView.sendFleet`)),1)]),_:1},8,[`disabled`])]),_:1}),h(b(V),{value:`missions`,class:`mt-4 space-y-4`},{default:l(()=>[b(v).player.fleetMissions.length===0?(i(),f(b(L),{key:0},{default:l(()=>[h(b(z),{class:`py-8 text-center text-muted-foreground`},{default:l(()=>[m(p(b(C)(`fleetView.noFlightMissions`)),1)]),_:1})]),_:1})):g(``,!0),(i(!0),S(y,null,s(b(v).player.fleetMissions,e=>(i(),f(b(L),{key:e.id},{default:l(()=>[h(b(I),null,{default:l(()=>[x(`div`,St,[x(`div`,null,[h(b(F),{class:`text-base sm:text-lg`},{default:l(()=>[m(p(Rt(e.missionType)),1)]),_:2},1024),h(b(D),{class:`text-xs sm:text-sm`},{default:l(()=>[m(p(zt(e.originPlanetId))+` → [`+p(e.targetPosition.galaxy)+`:`+p(e.targetPosition.system)+`:`+p(e.targetPosition.position)+`] `,1)]),_:2},1024)]),h(b(j),{variant:e.status===`outbound`?`default`:`secondary`},{default:l(()=>[m(p(e.status===`outbound`?b(C)(`fleetView.outbound`):b(C)(`fleetView.returning`)),1)]),_:2},1032,[`variant`])])]),_:2},1024),h(b(z),{class:`space-y-3`},{default:l(()=>[x(`div`,null,[x(`p`,Ct,p(b(C)(`fleetView.fleetComposition`))+`:`,1),x(`div`,wt,[(i(!0),S(y,null,s(e.fleet,(e,t)=>(i(),f(b(j),{key:t,variant:`outline`},{default:l(()=>[m(p(b(w)[t].name)+`: `+p(e),1)]),_:2},1024))),128))])]),e.cargo.metal>0||e.cargo.crystal>0||e.cargo.deuterium>0||e.cargo.darkMatter>0?(i(),S(`div`,Tt,[x(`p`,Et,p(b(C)(`fleetView.carryingResources`))+`:`,1),x(`div`,Dt,[e.cargo.metal>0?(i(),S(`span`,Ot,[h(M,{type:`metal`,size:`sm`}),m(` `+p(b(R)(e.cargo.metal)),1)])):g(``,!0),e.cargo.crystal>0?(i(),S(`span`,kt,[h(M,{type:`crystal`,size:`sm`}),m(` `+p(b(R)(e.cargo.crystal)),1)])):g(``,!0),e.cargo.deuterium>0?(i(),S(`span`,At,[h(M,{type:`deuterium`,size:`sm`}),m(` `+p(b(R)(e.cargo.deuterium)),1)])):g(``,!0),e.cargo.darkMatter>0?(i(),S(`span`,jt,[h(M,{type:`darkMatter`,size:`sm`}),m(` `+p(b(R)(e.cargo.darkMatter)),1)])):g(``,!0)])])):g(``,!0),x(`div`,Mt,[x(`div`,Nt,[x(`span`,null,p(e.status===`outbound`?b(C)(`fleetView.arrivalTime`):b(C)(`fleetView.returnTime`))+`:`,1),x(`span`,null,p(b(Ie)(Jt(e))),1)]),h(b(De),{"model-value":Yt(e)},null,8,[`model-value`])]),x(`div`,Pt,[e.status===`outbound`?(i(),f(b(A),{key:0,onClick:t=>qt(e.id),variant:`outline`,size:`sm`,class:`w-full`},{default:l(()=>[m(p(b(C)(`fleetView.recallFleet`)),1)]),_:1},8,[`onClick`])):g(``,!0)])]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1},8,[`modelValue`]),h(b(Oe),{open:E.value,"onUpdate:open":n[7]||=e=>E.value=e},{default:l(()=>[h(b(Ae),null,{default:l(()=>[h(b(Te),null,{default:l(()=>[h(b(Fe),null,{default:l(()=>[m(p(P.value),1)]),_:1}),h(b(ke),{class:`whitespace-pre-line`},{default:l(()=>[m(p(U.value),1)]),_:1})]),_:1}),h(b(Pe),null,{default:l(()=>[h(b(Ee),null,{default:l(()=>[m(p(b(C)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])])):g(``,!0)}});export{U as default}; \ No newline at end of file diff --git a/docs/assets/FleetView-D6gRUTGU.js b/docs/assets/FleetView-D6gRUTGU.js deleted file mode 100644 index f96560e..0000000 --- a/docs/assets/FleetView-D6gRUTGU.js +++ /dev/null @@ -1 +0,0 @@ -import{$t as e,Ct as t,En as n,Gn as r,Gt as i,I as a,Jn as ee,Jt as o,L as s,Ln as c,Qt as l,R as te,Xn as u,Xt as d,Y as ne,Yt as f,Zt as p,_n as m,a as re,bt as ie,en as h,fn as ae,gn as g,ln as oe,mn as _,n as se,pn as ce,q as le,qn as ue,rn as v,tn as y,vn as de,x as fe,xt as b}from"./game-logic-Bi1l7y4K.js";import"./vendor-pinia-DqhKuBjp.js";import{a as pe,o as me}from"./vendor-vue-router-1sDnnIWZ.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-Dr0JspcV.js";import{c as x}from"./vendor-others-DTUzJ7S-.js";import{$ as S,F as C,I as w}from"./vendor-reka-ui-BEHIKScj.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CJcfYqoW.js";import{L as he,P as ge,S as _e,_ as ve,c as ye,d as be,q as T,r as xe,v as Se}from"./vendor-icons-z9V6Jdbh.js";import{t as E}from"./CardDescription-BSLS07AU.js";import{_ as D,d as Ce,m as O}from"./game-config-CG6z6nnH.js";import{G as k,H as A,K as we,L as j,N as M,V as Te,W as N,_ as P,a as Ee,b as F,f as I,g as L,i as De,l as Oe,n as ke,o as Ae,p as R,q as je,r as Me,s as Ne,t as Pe,u as Fe,v as z,y as B}from"./index-BT5w6et-.js";import{t as Ie}from"./useGameConfig-b98LOtBY.js";import{i as Le,n as Re,r as V,t as H}from"./TabsTrigger-DrosU7aN.js";import{t as ze}from"./UnlockRequirement-CoWPiUl8.js";var Be=y({__name:`Checkbox`,props:{defaultValue:{type:[Boolean,String]},modelValue:{type:[Boolean,String,null]},disabled:{type:Boolean},value:{},id:{},asChild:{type:Boolean},as:{},name:{},required:{type:Boolean},class:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let i=e,a=t,o=S(x(i,`class`),a);return(e,t)=>(_(),d(r(w),oe({"data-slot":`checkbox`},r(o),{class:r(k)(`peer border-input data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50`,i.class)}),{default:n(t=>[h(r(C),{"data-slot":`checkbox-indicator`,class:`grid place-content-center text-current transition-none`},{default:n(()=>[m(e.$slots,`default`,ee(v(t)),()=>[h(r(T),{class:`size-3.5`})])]),_:2},1024)]),_:3},16,[`class`]))}}),Ve={key:0,class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},He={class:`text-2xl sm:text-3xl font-bold`},Ue={class:`grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4`},We={class:`flex justify-between items-start`},Ge={class:`font-semibold text-sm sm:text-base`},Ke={class:`text-xl sm:text-2xl font-bold`},qe={class:`text-xs sm:text-sm text-muted-foreground space-y-1`},Je={class:`flex justify-between items-center`},Ye={class:`text-sm font-medium`},Xe={class:`text-sm font-bold`},Ze={class:`grid grid-cols-1 sm:grid-cols-2 gap-3 sm:gap-4`},Qe={class:`flex gap-2`},$e={class:`grid grid-cols-3 gap-2 sm:gap-4`},et={class:`space-y-2`},tt={class:`space-y-2`},nt={class:`space-y-2`},rt={class:`grid grid-cols-2 sm:grid-cols-3 gap-2`},it={key:0,class:`mb-4 p-3 border rounded-lg bg-muted/50`},at={class:`flex items-center gap-2 mb-2`},ot={class:`text-xs text-muted-foreground`},st={key:0,class:`mt-2 text-xs`},ct={class:`text-muted-foreground`},lt={class:`ml-1 font-semibold text-green-600 dark:text-green-400`},ut={class:`grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4`},dt={class:`space-y-2`},ft={class:`space-y-2`},pt={class:`space-y-2`},mt={class:`text-xs sm:text-sm text-muted-foreground mt-2`},ht={class:`flex justify-between text-xs sm:text-sm`},gt={class:`text-muted-foreground`},_t={class:`flex items-center gap-1.5`},vt={class:`text-muted-foreground`},yt={key:0,class:`flex justify-between text-xs sm:text-sm`},bt={class:`text-muted-foreground`},xt={class:`flex justify-between items-start`},St={class:`text-xs sm:text-sm font-medium mb-2`},Ct={class:`flex flex-wrap gap-2`},wt={key:0},Tt={class:`text-xs sm:text-sm font-medium mb-2`},Et={class:`flex flex-wrap gap-2 text-xs`},Dt={key:0,class:`flex items-center gap-1`},Ot={key:1,class:`flex items-center gap-1`},kt={key:2,class:`flex items-center gap-1`},At={key:3,class:`flex items-center gap-1`},jt={class:`space-y-2`},Mt={class:`flex justify-between text-xs sm:text-sm`},Nt={class:`flex gap-2`},U=y({__name:`FleetView`,setup(ee){let m=pe(),oe=me(),v=je(),y=ke(),x=Pe(),{t:S}=we(),{SHIPS:C}=Ie(),w=o(()=>v.currentPlanet),T=c(!1),k=c(``),U=c(``),W=c(Date.now()),G=null,Pt=o(()=>fe(t(v.player.officers,Date.now()).additionalFleetSlots)),K=c(`fleet`),q=c({[D.LightFighter]:0,[D.HeavyFighter]:0,[D.Cruiser]:0,[D.Battleship]:0,[D.SmallCargo]:0,[D.LargeCargo]:0,[D.ColonyShip]:0,[D.Recycler]:0,[D.EspionageProbe]:0,[D.DarkMatterHarvester]:0,[D.Deathstar]:0}),J=c({galaxy:1,system:1,position:1}),Y=c(O.Attack),X=c({metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0});ae(()=>{G=window.setInterval(()=>{W.value=Date.now()},1e3);let{galaxy:e,system:t,position:n,mission:r,gift:i}=m.query;(e||t||n)&&(e&&(J.value.galaxy=Number(e)),t&&(J.value.system=Number(t)),n&&(J.value.position=Number(n)),r===`spy`?Y.value=O.Spy:r===`attack`?Y.value=O.Attack:r===`colonize`?Y.value=O.Colonize:i===`1`&&(Y.value=O.Transport,Q.value=!0),K.value=`send`,oe.replace({path:`/fleet`}))}),ce(()=>{G&&clearInterval(G)});let Z=o(()=>x.npcs.find(e=>e.planets.some(e=>e.position.galaxy===J.value.galaxy&&e.position.system===J.value.system&&e.position.position===J.value.position))),Q=c(!1),Ft=()=>ne(X.value),It=o(()=>[{type:O.Attack,name:S(`fleetView.attackMission`),icon:ye},{type:O.Transport,name:S(`fleetView.transport`),icon:_e},{type:O.Colonize,name:S(`fleetView.colonize`),icon:ve},{type:O.Spy,name:S(`fleetView.spy`),icon:he},{type:O.Deploy,name:S(`fleetView.deploy`),icon:xe},{type:O.Recycle,name:S(`fleetView.recycle`),icon:Se},{type:O.Destroy,name:S(`fleetView.destroy`),icon:be}]),Lt=e=>It.value.find(t=>t.type===e)?.name||e,Rt=e=>v.player.planets.find(t=>t.id===e)?.name||S(`fleetView.unknownPlanet`),zt=()=>{let e=0;for(let[t,n]of Object.entries(q.value))if(n>0){let r=C.value[t];e+=r.cargoCapacity*n}return e},Bt=()=>X.value.metal+X.value.crystal+X.value.deuterium+X.value.darkMatter,Vt=()=>{let e=t(v.player.officers,Date.now());return ie(q.value,e.fuelConsumptionReduction,X.value)},Ht=()=>{if(!w.value)return 0;let e=a(w.value.position,J.value),n=t(v.player.officers,Date.now());return s(e,b(q.value,n.fleetSpeedBonus))},$=()=>{if(!Object.values(q.value).some(e=>e>0))return{valid:!1,errorKey:`fleetView.noShipsSelected`};if(w.value&&Y.value!==O.Recycle&&Y.value!==O.Deploy&&J.value.galaxy===w.value.position.galaxy&&J.value.system===w.value.position.system&&J.value.position===w.value.position.position)return{valid:!1,errorKey:`fleetView.cannotSendToOwnPlanet`};if(Y.value===O.Transport&&Bt()>zt())return{valid:!1,errorKey:`fleetView.cargoExceedsCapacity`};if(Y.value===O.Colonize&&(!q.value[D.ColonyShip]||(q.value[D.ColonyShip]??0)<1))return{valid:!1,errorKey:`fleetView.noColonyShip`};if(Y.value===O.Recycle){let e=`debris_${J.value.galaxy}_${J.value.system}_${J.value.position}`,t=y.debrisFields[e];if(!t||t.resources.metal===0&&t.resources.crystal===0)return{valid:!1,errorKey:`fleetView.noDebrisAtTarget`}}return Y.value===O.Destroy&&(!q.value[D.Deathstar]||(q.value[D.Deathstar]??0)<1)?{valid:!1,errorKey:`fleetView.noDeathstar`}:{valid:!0}},Ut=(e,n,r,i={metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0})=>{if(!v.currentPlanet)return!1;let ee=v.player.fleetMissions.length,o=re(v.currentPlanet,r,i,v.player.officers,ee);if(!o.valid)return!1;let c=n===O.Transport;se(v.currentPlanet,r,o.fuelNeeded,c,i);let l=s(a(v.currentPlanet.position,e),b(r,t(v.player.officers,Date.now()).fleetSpeedBonus)),u=te(v.player.id,v.currentPlanet.id,e,n,r,i,l);return n===O.Transport&&Q.value&&Z.value&&(u.isGift=!0,u.giftTargetNpcId=Z.value.id),v.player.fleetMissions.push(u),!0},Wt=()=>{if(!w.value)return;let e=$();if(!e.valid){k.value=S(`fleetView.sendFailed`),U.value=e.errorKey?S(e.errorKey):S(`fleetView.sendFailedMessage`),T.value=!0;return}let t={};for(let[e,n]of Object.entries(q.value))n>0&&(t[e]=n);Ut(J.value,Y.value,t,Y.value===O.Transport?X.value:void 0)?(Object.keys(q.value).forEach(e=>{q.value[e]=0}),X.value={metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},Q.value=!1,K.value=`missions`):(k.value=S(`fleetView.sendFailed`),U.value=S(`fleetView.sendFailedMessage`),T.value=!0)},Gt=e=>{let t=v.player.fleetMissions.find(t=>t.id===e);return t?le(t,Date.now()):!1},Kt=e=>{Gt(e)||(k.value=S(`fleetView.recallFailed`),U.value=S(`fleetView.recallFailedMessage`),T.value=!0)},qt=e=>{let t=W.value,n=e.status===`outbound`?e.arrivalTime:e.returnTime;return Math.max(0,(n-t)/1e3)},Jt=e=>{let t=W.value;if(e.status===`outbound`){let n=e.arrivalTime-e.departureTime,r=t-e.departureTime;return Math.max(0,Math.min(100,r/n*100))}else{let n=e.arrivalTime,r=e.returnTime-n,i=t-n;return Math.max(0,Math.min(100,i/r*100))}};return(t,a)=>w.value?(_(),l(`div`,Ve,[h(ze,{"required-building":r(Ce).Shipyard,"required-level":1},null,8,[`required-building`]),f(`h1`,He,u(r(S)(`fleetView.title`)),1),h(r(Le),{modelValue:K.value,"onUpdate:modelValue":a[6]||=e=>K.value=e,class:`w-full`},{default:n(()=>[h(r(Re),{class:`grid w-full grid-cols-3`},{default:n(()=>[h(r(H),{value:`fleet`},{default:n(()=>[e(u(r(S)(`fleetView.fleetOverview`)),1)]),_:1}),h(r(H),{value:`send`},{default:n(()=>[e(u(r(S)(`fleetView.sendFleet`)),1)]),_:1}),h(r(H),{value:`missions`},{default:n(()=>[e(u(r(S)(`fleetView.flightMissions`))+` `,1),r(v).player.fleetMissions.length>0?(_(),d(r(A),{key:0,variant:`destructive`,class:`ml-1`},{default:n(()=>[e(u(r(v).player.fleetMissions.length),1)]),_:1})):p(``,!0)]),_:1})]),_:1}),h(r(V),{value:`fleet`,class:`mt-4`},{default:n(()=>[h(r(F),null,{default:n(()=>[h(r(z),null,{default:n(()=>[h(r(P),null,{default:n(()=>[e(u(r(S)(`fleetView.currentPlanetFleet`)),1)]),_:1}),h(r(E),null,{default:n(()=>[e(u(w.value.name)+` [`+u(w.value.position.galaxy)+`:`+u(w.value.position.system)+`:`+u(w.value.position.position)+`] `,1)]),_:1})]),_:1}),h(r(B),null,{default:n(()=>[f(`div`,Ue,[(_(!0),l(i,null,g(w.value.fleet,(e,t)=>(_(),l(`div`,{key:t,class:`p-3 sm:p-4 border rounded-lg space-y-2`},[f(`div`,We,[f(`div`,null,[f(`h3`,Ge,u(r(C)[t].name),1),f(`p`,Ke,u(r(I)(e)),1)])]),f(`div`,qe,[f(`p`,null,u(r(S)(`fleetView.attack`))+`: `+u(r(C)[t].attack),1),f(`p`,null,u(r(S)(`fleetView.shield`))+`: `+u(r(C)[t].shield),1),f(`p`,null,u(r(S)(`fleetView.armor`))+`: `+u(r(C)[t].armor),1),f(`p`,null,u(r(S)(`fleetView.speed`))+`: `+u(r(I)(r(C)[t].speed)),1),f(`p`,null,u(r(S)(`fleetView.cargo`))+`: `+u(r(I)(r(C)[t].cargoCapacity)),1)])]))),128))])]),_:1})]),_:1})]),_:1}),h(r(V),{value:`send`,class:`mt-4 space-y-4`},{default:n(()=>[h(r(F),null,{default:n(()=>[h(r(B),{class:`py-4`},{default:n(()=>[f(`div`,Je,[f(`span`,Ye,u(r(S)(`fleetView.fleetMissionSlots`))+`:`,1),f(`span`,Xe,u(r(v).player.fleetMissions.length)+` / `+u(Pt.value),1)])]),_:1})]),_:1}),h(r(F),null,{default:n(()=>[h(r(z),null,{default:n(()=>[h(r(P),null,{default:n(()=>[e(u(r(S)(`fleetView.selectFleet`)),1)]),_:1}),h(r(E),null,{default:n(()=>[e(u(r(S)(`fleetView.selectFleetDescription`)),1)]),_:1})]),_:1}),h(r(B),null,{default:n(()=>[f(`div`,Ze,[(_(!0),l(i,null,g(w.value.fleet,(t,i)=>(_(),l(`div`,{key:i,class:`space-y-2`},[h(r(L),{for:`ship-${i}`,class:`text-xs sm:text-sm`},{default:n(()=>[e(u(r(C)[i].name)+` (`+u(r(S)(`fleetView.available`))+`: `+u(t)+`) `,1)]),_:2},1032,[`for`]),f(`div`,Qe,[h(r(j),{id:`ship-${i}`,modelValue:q.value[i],"onUpdate:modelValue":e=>q.value[i]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:t,placeholder:`0`,class:`text-sm`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`max`]),h(r(N),{onClick:e=>q.value[i]=t,variant:`outline`,size:`sm`},{default:n(()=>[e(u(r(S)(`fleetView.all`)),1)]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1}),h(r(F),null,{default:n(()=>[h(r(z),null,{default:n(()=>[h(r(P),null,{default:n(()=>[e(u(r(S)(`fleetView.targetCoordinates`)),1)]),_:1})]),_:1}),h(r(B),null,{default:n(()=>[f(`div`,$e,[f(`div`,et,[h(r(L),{for:`galaxy`,class:`text-xs sm:text-sm`},{default:n(()=>[e(u(r(S)(`fleetView.galaxy`)),1)]),_:1}),h(r(j),{id:`galaxy`,modelValue:J.value.galaxy,"onUpdate:modelValue":a[0]||=e=>J.value.galaxy=e,modelModifiers:{number:!0},type:`number`,min:`1`,max:`9`,placeholder:`1`},null,8,[`modelValue`])]),f(`div`,tt,[h(r(L),{for:`system`,class:`text-xs sm:text-sm`},{default:n(()=>[e(u(r(S)(`fleetView.system`)),1)]),_:1}),h(r(j),{id:`system`,modelValue:J.value.system,"onUpdate:modelValue":a[1]||=e=>J.value.system=e,modelModifiers:{number:!0},type:`number`,min:`1`,max:`10`,placeholder:`1`},null,8,[`modelValue`])]),f(`div`,nt,[h(r(L),{for:`position`,class:`text-xs sm:text-sm`},{default:n(()=>[e(u(r(S)(`fleetView.position`)),1)]),_:1}),h(r(j),{id:`position`,modelValue:J.value.position,"onUpdate:modelValue":a[2]||=e=>J.value.position=e,modelModifiers:{number:!0},type:`number`,min:`1`,max:`10`,placeholder:`1`},null,8,[`modelValue`])])])]),_:1})]),_:1}),h(r(F),null,{default:n(()=>[h(r(z),null,{default:n(()=>[h(r(P),null,{default:n(()=>[e(u(r(S)(`fleetView.missionType`)),1)]),_:1})]),_:1}),h(r(B),null,{default:n(()=>[f(`div`,rt,[(_(!0),l(i,null,g(It.value,t=>(_(),d(r(N),{key:t.type,onClick:e=>Y.value=t.type,variant:Y.value===t.type?`default`:`outline`,class:`justify-start`},{default:n(()=>[(_(),d(de(t.icon),{class:`h-4 w-4 mr-2`})),e(` `+u(t.name),1)]),_:2},1032,[`onClick`,`variant`]))),128))])]),_:1})]),_:1}),Y.value===r(O).Transport?(_(),d(r(F),{key:0},{default:n(()=>[h(r(z),null,{default:n(()=>[h(r(P),null,{default:n(()=>[e(u(r(S)(`fleetView.transportResources`)),1)]),_:1})]),_:1}),h(r(B),null,{default:n(()=>[Z.value?(_(),l(`div`,it,[f(`div`,at,[h(r(Be),{id:`gift-mode`,"default-value":Q.value},null,8,[`default-value`]),h(r(L),{for:`gift-mode`,class:`flex items-center gap-2 cursor-pointer`},{default:n(()=>[h(r(ge),{class:`h-4 w-4`}),e(` `+u(r(S)(`fleetView.giftMode`)),1)]),_:1})]),f(`p`,ot,u(r(S)(`fleetView.giftModeDescription`))+` `+u(Z.value.name),1),Q.value&&(X.value.metal>0||X.value.crystal>0||X.value.deuterium>0)?(_(),l(`div`,st,[f(`span`,ct,u(r(S)(`fleetView.estimatedReputationGain`))+`:`,1),f(`span`,lt,`+`+u(Ft()),1)])):p(``,!0)])):p(``,!0),f(`div`,ut,[f(`div`,dt,[h(r(L),{for:`cargo-metal`,class:`text-xs sm:text-sm flex items-center gap-2`},{default:n(()=>[h(M,{type:`metal`,size:`sm`}),e(` `+u(r(S)(`resources.metal`))+` (`+u(r(S)(`fleetView.available`))+`: `+u(r(I)(w.value.resources.metal))+`) `,1)]),_:1}),h(r(j),{id:`cargo-metal`,modelValue:X.value.metal,"onUpdate:modelValue":a[3]||=e=>X.value.metal=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:w.value.resources.metal,placeholder:`0`},null,8,[`modelValue`,`max`])]),f(`div`,ft,[h(r(L),{for:`cargo-crystal`,class:`text-xs sm:text-sm flex items-center gap-2`},{default:n(()=>[h(M,{type:`crystal`,size:`sm`}),e(` `+u(r(S)(`resources.crystal`))+` (`+u(r(S)(`fleetView.available`))+`: `+u(r(I)(w.value.resources.crystal))+`) `,1)]),_:1}),h(r(j),{id:`cargo-crystal`,modelValue:X.value.crystal,"onUpdate:modelValue":a[4]||=e=>X.value.crystal=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:w.value.resources.crystal,placeholder:`0`},null,8,[`modelValue`,`max`])]),f(`div`,pt,[h(r(L),{for:`cargo-deuterium`,class:`text-xs sm:text-sm flex items-center gap-2`},{default:n(()=>[h(M,{type:`deuterium`,size:`sm`}),e(` `+u(r(S)(`resources.deuterium`))+` (`+u(r(S)(`fleetView.available`))+`: `+u(r(I)(w.value.resources.deuterium))+`) `,1)]),_:1}),h(r(j),{id:`cargo-deuterium`,modelValue:X.value.deuterium,"onUpdate:modelValue":a[5]||=e=>X.value.deuterium=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:w.value.resources.deuterium,placeholder:`0`},null,8,[`modelValue`,`max`])])]),f(`p`,mt,u(r(S)(`fleetView.totalCargoCapacity`))+`: `+u(r(I)(zt()))+` | `+u(r(S)(`fleetView.used`))+`: `+u(r(I)(Bt())),1)]),_:1})]),_:1})):p(``,!0),h(r(F),null,{default:n(()=>[h(r(z),null,{default:n(()=>[h(r(P),null,{default:n(()=>[e(u(r(S)(`fleetView.missionInfo`)),1)]),_:1})]),_:1}),h(r(B),{class:`space-y-2`},{default:n(()=>[f(`div`,ht,[f(`span`,gt,u(r(S)(`fleetView.fuelConsumption`))+`:`,1),f(`span`,_t,[h(M,{type:`deuterium`,size:`sm`}),f(`span`,{class:ue(Vt()>w.value.resources.deuterium?`text-red-600 dark:text-red-400 font-medium`:``)},u(r(I)(Vt())),3),f(`span`,vt,`/ `+u(r(I)(w.value.resources.deuterium)),1)])]),Object.values(q.value).some(e=>e>0)?(_(),l(`div`,yt,[f(`span`,bt,u(r(S)(`fleetView.flightTime`))+`:`,1),f(`span`,null,u(r(R)(Ht())),1)])):p(``,!0)]),_:1})]),_:1}),h(r(N),{onClick:Wt,disabled:!$(),class:`w-full`,size:`lg`},{default:n(()=>[e(u(r(S)(`fleetView.sendFleet`)),1)]),_:1},8,[`disabled`])]),_:1}),h(r(V),{value:`missions`,class:`mt-4 space-y-4`},{default:n(()=>[r(v).player.fleetMissions.length===0?(_(),d(r(F),{key:0},{default:n(()=>[h(r(B),{class:`py-8 text-center text-muted-foreground`},{default:n(()=>[e(u(r(S)(`fleetView.noFlightMissions`)),1)]),_:1})]),_:1})):p(``,!0),(_(!0),l(i,null,g(r(v).player.fleetMissions,t=>(_(),d(r(F),{key:t.id},{default:n(()=>[h(r(z),null,{default:n(()=>[f(`div`,xt,[f(`div`,null,[h(r(P),{class:`text-base sm:text-lg`},{default:n(()=>[e(u(Lt(t.missionType)),1)]),_:2},1024),h(r(E),{class:`text-xs sm:text-sm`},{default:n(()=>[e(u(Rt(t.originPlanetId))+` → [`+u(t.targetPosition.galaxy)+`:`+u(t.targetPosition.system)+`:`+u(t.targetPosition.position)+`] `,1)]),_:2},1024)]),h(r(A),{variant:t.status===`outbound`?`default`:`secondary`},{default:n(()=>[e(u(t.status===`outbound`?r(S)(`fleetView.outbound`):r(S)(`fleetView.returning`)),1)]),_:2},1032,[`variant`])])]),_:2},1024),h(r(B),{class:`space-y-3`},{default:n(()=>[f(`div`,null,[f(`p`,St,u(r(S)(`fleetView.fleetComposition`))+`:`,1),f(`div`,Ct,[(_(!0),l(i,null,g(t.fleet,(t,i)=>(_(),d(r(A),{key:i,variant:`outline`},{default:n(()=>[e(u(r(C)[i].name)+`: `+u(t),1)]),_:2},1024))),128))])]),t.cargo.metal>0||t.cargo.crystal>0||t.cargo.deuterium>0||t.cargo.darkMatter>0?(_(),l(`div`,wt,[f(`p`,Tt,u(r(S)(`fleetView.carryingResources`))+`:`,1),f(`div`,Et,[t.cargo.metal>0?(_(),l(`span`,Dt,[h(M,{type:`metal`,size:`sm`}),e(` `+u(r(I)(t.cargo.metal)),1)])):p(``,!0),t.cargo.crystal>0?(_(),l(`span`,Ot,[h(M,{type:`crystal`,size:`sm`}),e(` `+u(r(I)(t.cargo.crystal)),1)])):p(``,!0),t.cargo.deuterium>0?(_(),l(`span`,kt,[h(M,{type:`deuterium`,size:`sm`}),e(` `+u(r(I)(t.cargo.deuterium)),1)])):p(``,!0),t.cargo.darkMatter>0?(_(),l(`span`,At,[h(M,{type:`darkMatter`,size:`sm`}),e(` `+u(r(I)(t.cargo.darkMatter)),1)])):p(``,!0)])])):p(``,!0),f(`div`,jt,[f(`div`,Mt,[f(`span`,null,u(t.status===`outbound`?r(S)(`fleetView.arrivalTime`):r(S)(`fleetView.returnTime`))+`:`,1),f(`span`,null,u(r(R)(qt(t))),1)]),h(r(Te),{"model-value":Jt(t)},null,8,[`model-value`])]),f(`div`,Nt,[t.status===`outbound`?(_(),d(r(N),{key:0,onClick:e=>Kt(t.id),variant:`outline`,size:`sm`,class:`w-full`},{default:n(()=>[e(u(r(S)(`fleetView.recallFleet`)),1)]),_:1},8,[`onClick`])):p(``,!0)])]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1},8,[`modelValue`]),h(r(Fe),{open:T.value,"onUpdate:open":a[7]||=e=>T.value=e},{default:n(()=>[h(r(Ne),null,{default:n(()=>[h(r(De),null,{default:n(()=>[h(r(Me),null,{default:n(()=>[e(u(k.value),1)]),_:1}),h(r(Ae),{class:`whitespace-pre-line`},{default:n(()=>[e(u(U.value),1)]),_:1})]),_:1}),h(r(Ee),null,{default:n(()=>[h(r(Oe),null,{default:n(()=>[e(u(r(S)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])])):p(``,!0)}});export{U as default}; \ No newline at end of file diff --git a/docs/assets/GMView-BMhV90vD.js b/docs/assets/GMView-BMhV90vD.js new file mode 100644 index 0000000..99fe9ae --- /dev/null +++ b/docs/assets/GMView-BMhV90vD.js @@ -0,0 +1 @@ +import{En as e,On as t,Rn as n,S as r,Yn as i,b as ee,cn as a,cr as o,dn as s,fn as c,ln as l,on as u,pn as te,rn as d,rr as f,sn as p,sr as ne,un as m,v as re,x as ie,y as h}from"./game-logic-BBFCPVtv.js";import"./vendor-pinia-L_8CmDWM.js";import{o as ae}from"./vendor-vue-router-0mfLVB6Y.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-BC9uiVvf.js";import"./vendor-others-Bce0hM6h.js";import"./vendor-reka-ui-DR3m_AkV.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-Djj-oRw9.js";import{N as oe}from"./vendor-icons-Ccm2_GPI.js";import{t as g}from"./CardDescription-DduF5EVY.js";import{_,d as se,f as ce,h as v,v as le}from"./game-config-DRP-gbpS.js";import{$ as ue,A as y,F as de,I as fe,J as b,K as pe,M as me,N as x,P as he,Q as ge,V as S,X as _e,Z as ve,d as C,f as w,j as T,k as E,m as D,p as O,u as k}from"./index-B4KMqZ_y.js";import{t as ye}from"./useGameConfig-DLqfPHtW.js";import{i as be,n as xe,r as A,t as Se}from"./TabsTrigger-BnZOhHbD.js";import{a as j,i as M,n as N,r as P,t as F}from"./SelectValue-8cT4Hu-1.js";import{a as Ce,i as we,n as Te,o as Ee,r as De,t as Oe}from"./empty-Ds0PR_Pd.js";var ke={key:0,class:`container mx-auto p-4 sm:p-6 flex items-center justify-center min-h-[60vh]`},Ae={key:1,class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},je={class:`flex items-center justify-between`},Me={class:`text-2xl sm:text-3xl font-bold`},Ne={class:`flex gap-2`},Pe={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Fe={class:`flex gap-2`},Ie={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Le={class:`flex gap-2`},Re={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},ze={class:`flex gap-2`},Be={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Ve={class:`flex gap-2`},He={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Ue={class:`flex gap-2`},We={class:`grid grid-cols-1 md:grid-cols-2 gap-3`},Ge={class:`space-y-2`},Ke={class:`space-y-2`},qe={class:`grid grid-cols-2 gap-2`},I=te({__name:`GMView`,setup(te){let I=ae(),L=ue(),R=ve(),Je=ge(),{t:z}=_e(),{BUILDINGS:Ye,TECHNOLOGIES:Xe,SHIPS:Ze,DEFENSES:Qe,OFFICERS:$e}=ye(),et=()=>{I.push(`/`)},B=i(L.player.planets[0]?.id||``),V=i({}),H=i(R.npcs[0]?.id||``),U=i(`0`),W=i(!1),G=i(``),K=i(``),q=i(null),J=i(!1);Object.values(v).forEach(e=>{let t=L.player.officers[e];if(t&&t.expiresAt){let n=Math.ceil((t.expiresAt-Date.now())/(1e3*60*60*24));V.value[e]=Math.max(0,n)}else V.value[e]=0});let Y=u(()=>L.player.planets.find(e=>e.id===B.value)),X=u(()=>R.npcs.find(e=>e.id===H.value)),Z=u(()=>[...L.player.planets,...Object.values(Je.planets)]),tt=[`metal`,`crystal`,`deuterium`,`darkMatter`],nt=Object.values(se),rt=Object.values(le),it=Object.values(_),at=Object.values(ce),ot=Object.values(v),st=[{value:`resources`,label:`gmView.resources`},{value:`buildings`,label:`gmView.buildings`},{value:`research`,label:`gmView.research`},{value:`ships`,label:`gmView.ships`},{value:`defense`,label:`gmView.defense`},{value:`officers`,label:`gmView.officers`}],ct=(e,t)=>{Y.value&&(Y.value.resources[e]+=t)},lt=(e,t)=>{Y.value&&(Y.value.buildings[e]=t)},ut=(e,t)=>{L.player.technologies[e]=t},dt=(e,t)=>{Y.value&&(Y.value.fleet[e]=(Y.value.fleet[e]||0)+t)},ft=(e,t)=>{Y.value&&(Y.value.defense[e]=(Y.value.defense[e]||0)+t)},Q=(e,t)=>{V.value[e]=t;let n=Date.now(),r=n+t*24*60*60*1e3;L.player.officers[e]?(L.player.officers[e].expiresAt=r,L.player.officers[e].active=!0,L.player.officers[e].hiredAt||(L.player.officers[e].hiredAt=n)):L.player.officers[e]={type:e,active:!0,hiredAt:n,expiresAt:r}},pt=()=>{L.isPaused=!0,J.value=!0},mt=e=>{e||(L.isPaused=!1),J.value=e},ht=()=>{J.value=!1,L.isPaused=!1},gt=()=>{L.isPaused=!0,J.value=!1;try{L.player.isGMEnabled=!1,localStorage.clear(),location.reload()}catch(e){console.error(`Failed to reset game:`,e),window.location.reload()}},$=(e,t,n)=>{G.value=e,K.value=t,q.value=n||null,W.value=!0},_t=()=>{W.value=!1,q.value&&=(q.value(),null)},vt=()=>{if(!X.value){$(z(`gmView.selectNPCFirst`)||`Please select an NPC first`,``);return}let e=r(X.value,L.player,Z.value,parseInt(U.value));e?$(z(`gmView.npcWillSpyIn5s`,{npcName:X.value.name}),z(`gmView.testSpyMessage`),()=>{h(X.value,e.id,5,L.player)}):$(z(`gmView.npcNoProbes`)||`NPC does not have spy probes`,``)},yt=()=>{if(!X.value){$(z(`gmView.selectNPCFirst`)||`Please select an NPC first`,``);return}let e=ee(X.value,L.player,Z.value,parseInt(U.value));e?$(z(`gmView.npcWillAttackIn5s`,{npcName:X.value.name}),z(`gmView.testAttackMessage`),()=>{h(X.value,e.id,5,L.player)}):$(z(`gmView.npcNoSpyReport`)||`NPC needs to spy first`,``)},bt=()=>{if(!X.value){$(z(`gmView.selectNPCFirst`)||`Please select an NPC first`,``);return}let{spyMission:e,attackMission:t}=ie(X.value,L.player,Z.value,parseInt(U.value));e&&t?$(z(`gmView.npcWillSpyAndAttack`,{npcName:X.value.name}),z(`gmView.testSpyAndAttackMessage`),()=>{h(X.value,e.id,5,L.player),h(X.value,t.id,10,L.player)}):$(z(`gmView.npcMissionFailed`)||`Failed to create missions`,``)},xt=()=>{if(!X.value){$(z(`gmView.selectNPCFirst`)||`Please select an NPC first`,``);return}$(z(`gmView.acceleratedMissions`,{count:re(X.value,5,L.player)}),``)},St=()=>{if(!X.value){$(z(`gmView.selectNPCFirst`)||`Please select an NPC first`,``);return}let e=X.value.planets[0];if(!e){$(z(`gmView.npcNoPlanets`),``);return}e.fleet[_.EspionageProbe]=(e.fleet[_.EspionageProbe]||0)+100,e.fleet[_.LightFighter]=(e.fleet[_.LightFighter]||0)+500,e.fleet[_.HeavyFighter]=(e.fleet[_.HeavyFighter]||0)+300,e.fleet[_.Cruiser]=(e.fleet[_.Cruiser]||0)+200,e.fleet[_.Battleship]=(e.fleet[_.Battleship]||0)+100,e.fleet[_.Bomber]=(e.fleet[_.Bomber]||0)+50,e.fleet[_.Destroyer]=(e.fleet[_.Destroyer]||0)+30,e.fleet[_.Battlecruiser]=(e.fleet[_.Battlecruiser]||0)+20,$(z(`gmView.npcFleetInitialized`,{npcName:X.value.name}),z(`gmView.npcFleetDetails`))};return(r,i)=>f(L).player.isGMEnabled?(e(),m(`div`,Ae,[p(`div`,je,[p(`h1`,Me,o(f(z)(`gmView.title`)),1),c(f(pe),{variant:`destructive`},{default:n(()=>[s(o(f(z)(`gmView.adminOnly`)),1)]),_:1})]),c(f(D),null,{default:n(()=>[c(f(w),null,{default:n(()=>[c(f(C),null,{default:n(()=>[s(o(f(z)(`gmView.selectPlanet`)),1)]),_:1})]),_:1}),c(f(O),null,{default:n(()=>[c(f(j),{modelValue:B.value,"onUpdate:modelValue":i[0]||=e=>B.value=e},{default:n(()=>[c(f(N),{class:`w-full`},{default:n(()=>[c(f(F),{placeholder:f(z)(`gmView.choosePlanet`)},null,8,[`placeholder`])]),_:1}),c(f(M),null,{default:n(()=>[(e(!0),m(d,null,t(f(L).player.planets,t=>(e(),a(f(P),{key:t.id,value:t.id},{default:n(()=>[s(o(t.name)+` (`+o(t.position.galaxy)+`:`+o(t.position.system)+`:`+o(t.position.position)+`) `,1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`])]),_:1})]),_:1}),Y.value?(e(),a(f(be),{key:0,"default-value":`resources`,class:`w-full`},{default:n(()=>[c(f(xe),{class:`grid w-full`,style:ne({gridTemplateColumns:`repeat(${st.length}, minmax(0, 1fr))`})},{default:n(()=>[(e(),m(d,null,t(st,e=>c(f(Se),{key:e.value,value:e.value},{default:n(()=>[s(o(f(z)(e.label)),1)]),_:2},1032,[`value`])),64))]),_:1},8,[`style`]),c(f(A),{value:`resources`,class:`space-y-4`},{default:n(()=>[c(f(D),null,{default:n(()=>[c(f(w),null,{default:n(()=>[c(f(C),null,{default:n(()=>[s(o(f(z)(`gmView.modifyResources`)),1)]),_:1}),c(f(g),null,{default:n(()=>[s(o(f(z)(`gmView.resourcesDesc`)),1)]),_:1})]),_:1}),c(f(O),{class:`space-y-4`},{default:n(()=>[(e(),m(d,null,t(tt,e=>p(`div`,{key:e,class:`space-y-2`},[c(f(k),null,{default:n(()=>[s(o(f(z)(`resources.${e}`)),1)]),_:2},1024),p(`div`,Ne,[c(f(S),{modelValue:Y.value.resources[e],"onUpdate:modelValue":t=>Y.value.resources[e]=t,modelModifiers:{number:!0},type:`number`,min:`0`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),c(f(b),{onClick:t=>ct(e,1e6),variant:`outline`,size:`sm`},{default:n(()=>[...i[5]||=[s(`+1M`,-1)]]),_:1},8,[`onClick`]),c(f(b),{onClick:t=>ct(e,1e7),variant:`outline`,size:`sm`},{default:n(()=>[...i[6]||=[s(`+10M`,-1)]]),_:1},8,[`onClick`])])])),64))]),_:1})]),_:1})]),_:1}),c(f(A),{value:`buildings`,class:`space-y-4`},{default:n(()=>[c(f(D),null,{default:n(()=>[c(f(w),null,{default:n(()=>[c(f(C),null,{default:n(()=>[s(o(f(z)(`gmView.modifyBuildings`)),1)]),_:1}),c(f(g),null,{default:n(()=>[s(o(f(z)(`gmView.buildingsDesc`)),1)]),_:1})]),_:1}),c(f(O),null,{default:n(()=>[p(`div`,Pe,[(e(!0),m(d,null,t(f(nt),t=>(e(),m(`div`,{key:t,class:`space-y-2`},[c(f(k),null,{default:n(()=>[s(o(f(Ye)[t].name),1)]),_:2},1024),p(`div`,Fe,[c(f(S),{modelValue:Y.value.buildings[t],"onUpdate:modelValue":e=>Y.value.buildings[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:`100`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),c(f(b),{onClick:e=>lt(t,10),variant:`outline`,size:`sm`},{default:n(()=>[...i[7]||=[s(`Lv 10`,-1)]]),_:1},8,[`onClick`]),c(f(b),{onClick:e=>lt(t,30),variant:`outline`,size:`sm`},{default:n(()=>[...i[8]||=[s(`Lv 30`,-1)]]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})]),_:1}),c(f(A),{value:`research`,class:`space-y-4`},{default:n(()=>[c(f(D),null,{default:n(()=>[c(f(w),null,{default:n(()=>[c(f(C),null,{default:n(()=>[s(o(f(z)(`gmView.modifyResearch`)),1)]),_:1}),c(f(g),null,{default:n(()=>[s(o(f(z)(`gmView.researchDesc`)),1)]),_:1})]),_:1}),c(f(O),null,{default:n(()=>[p(`div`,Ie,[(e(!0),m(d,null,t(f(rt),t=>(e(),m(`div`,{key:t,class:`space-y-2`},[c(f(k),null,{default:n(()=>[s(o(f(Xe)[t].name),1)]),_:2},1024),p(`div`,Le,[c(f(S),{modelValue:f(L).player.technologies[t],"onUpdate:modelValue":e=>f(L).player.technologies[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:`50`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),c(f(b),{onClick:e=>ut(t,10),variant:`outline`,size:`sm`},{default:n(()=>[...i[9]||=[s(`Lv 10`,-1)]]),_:1},8,[`onClick`]),c(f(b),{onClick:e=>ut(t,20),variant:`outline`,size:`sm`},{default:n(()=>[...i[10]||=[s(`Lv 20`,-1)]]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})]),_:1}),c(f(A),{value:`ships`,class:`space-y-4`},{default:n(()=>[c(f(D),null,{default:n(()=>[c(f(w),null,{default:n(()=>[c(f(C),null,{default:n(()=>[s(o(f(z)(`gmView.modifyShips`)),1)]),_:1}),c(f(g),null,{default:n(()=>[s(o(f(z)(`gmView.shipsDesc`)),1)]),_:1})]),_:1}),c(f(O),null,{default:n(()=>[p(`div`,Re,[(e(!0),m(d,null,t(f(it),t=>(e(),m(`div`,{key:t,class:`space-y-2`},[c(f(k),null,{default:n(()=>[s(o(f(Ze)[t].name),1)]),_:2},1024),p(`div`,ze,[c(f(S),{modelValue:Y.value.fleet[t],"onUpdate:modelValue":e=>Y.value.fleet[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),c(f(b),{onClick:e=>dt(t,100),variant:`outline`,size:`sm`},{default:n(()=>[...i[11]||=[s(`+100`,-1)]]),_:1},8,[`onClick`]),c(f(b),{onClick:e=>dt(t,1e3),variant:`outline`,size:`sm`},{default:n(()=>[...i[12]||=[s(`+1K`,-1)]]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})]),_:1}),c(f(A),{value:`defense`,class:`space-y-4`},{default:n(()=>[c(f(D),null,{default:n(()=>[c(f(w),null,{default:n(()=>[c(f(C),null,{default:n(()=>[s(o(f(z)(`gmView.modifyDefense`)),1)]),_:1}),c(f(g),null,{default:n(()=>[s(o(f(z)(`gmView.defenseDesc`)),1)]),_:1})]),_:1}),c(f(O),null,{default:n(()=>[p(`div`,Be,[(e(!0),m(d,null,t(f(at),t=>(e(),m(`div`,{key:t,class:`space-y-2`},[c(f(k),null,{default:n(()=>[s(o(f(Qe)[t].name),1)]),_:2},1024),p(`div`,Ve,[c(f(S),{modelValue:Y.value.defense[t],"onUpdate:modelValue":e=>Y.value.defense[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),c(f(b),{onClick:e=>ft(t,100),variant:`outline`,size:`sm`},{default:n(()=>[...i[13]||=[s(`+100`,-1)]]),_:1},8,[`onClick`]),c(f(b),{onClick:e=>ft(t,1e3),variant:`outline`,size:`sm`},{default:n(()=>[...i[14]||=[s(`+1K`,-1)]]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})]),_:1}),c(f(A),{value:`officers`,class:`space-y-4`},{default:n(()=>[c(f(D),null,{default:n(()=>[c(f(w),null,{default:n(()=>[c(f(C),null,{default:n(()=>[s(o(f(z)(`gmView.modifyOfficers`)),1)]),_:1}),c(f(g),null,{default:n(()=>[s(o(f(z)(`gmView.officersDesc`)),1)]),_:1})]),_:1}),c(f(O),null,{default:n(()=>[p(`div`,He,[(e(!0),m(d,null,t(f(ot),t=>(e(),m(`div`,{key:t,class:`space-y-2`},[c(f(k),null,{default:n(()=>[s(o(f($e)[t].name),1)]),_:2},1024),p(`div`,Ue,[c(f(S),{modelValue:V.value[t],"onUpdate:modelValue":e=>V.value[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,placeholder:f(z)(`gmView.days`),class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),c(f(b),{onClick:e=>Q(t,7),variant:`outline`,size:`sm`},{default:n(()=>[s(`7`+o(f(z)(`gmView.days`)),1)]),_:1},8,[`onClick`]),c(f(b),{onClick:e=>Q(t,30),variant:`outline`,size:`sm`},{default:n(()=>[s(`30`+o(f(z)(`gmView.days`)),1)]),_:1},8,[`onClick`]),c(f(b),{onClick:e=>Q(t,365),variant:`outline`,size:`sm`},{default:n(()=>[s(`365`+o(f(z)(`gmView.days`)),1)]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})]),_:1})]),_:1})):l(``,!0),c(f(D),{class:`border-primary`},{default:n(()=>[c(f(w),null,{default:n(()=>[c(f(C),null,{default:n(()=>[s(o(f(z)(`gmView.npcTesting`)||`NPC Testing`),1)]),_:1}),c(f(g),null,{default:n(()=>[s(o(f(z)(`gmView.npcTestingDesc`)||`Test NPC spy and attack behavior`),1)]),_:1})]),_:1}),c(f(O),{class:`space-y-3`},{default:n(()=>[p(`div`,We,[p(`div`,Ge,[c(f(k),null,{default:n(()=>[s(o(f(z)(`gmView.selectNPC`)||`Select NPC`),1)]),_:1}),c(f(j),{modelValue:H.value,"onUpdate:modelValue":i[1]||=e=>H.value=e},{default:n(()=>[c(f(N),{class:`w-full`},{default:n(()=>[c(f(F),{placeholder:f(z)(`gmView.chooseNPC`)||`Choose NPC`},null,8,[`placeholder`])]),_:1}),c(f(M),null,{default:n(()=>[(e(!0),m(d,null,t(f(R).npcs,t=>(e(),a(f(P),{key:t.id,value:t.id},{default:n(()=>[s(o(t.name)+` (`+o(t.difficulty)+`)`,1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`])]),p(`div`,Ke,[c(f(k),null,{default:n(()=>[s(o(f(z)(`gmView.targetPlanet`)||`Target Planet`),1)]),_:1}),c(f(j),{modelValue:U.value,"onUpdate:modelValue":i[2]||=e=>U.value=e},{default:n(()=>[c(f(N),{class:`w-full`},{default:n(()=>[c(f(F),{placeholder:f(z)(`gmView.chooseTarget`)||`Choose Target Planet`},null,8,[`placeholder`])]),_:1}),c(f(M),null,{default:n(()=>[(e(!0),m(d,null,t(f(L).player.planets,(t,r)=>(e(),a(f(P),{key:t.id,value:r.toString()},{default:n(()=>[s(o(t.name)+` (`+o(t.position.galaxy)+`:`+o(t.position.system)+`:`+o(t.position.position)+`) `,1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`])])]),p(`div`,qe,[c(f(b),{onClick:vt,variant:`outline`,class:`w-full`,disabled:!X.value},{default:n(()=>[s(o(f(z)(`gmView.testSpy`)||`Test Spy`),1)]),_:1},8,[`disabled`]),c(f(b),{onClick:yt,variant:`outline`,class:`w-full`,disabled:!X.value},{default:n(()=>[s(o(f(z)(`gmView.testAttack`)||`Test Attack`),1)]),_:1},8,[`disabled`])]),c(f(b),{onClick:bt,variant:`default`,class:`w-full`,disabled:!X.value},{default:n(()=>[s(o(f(z)(`gmView.testSpyAndAttack`)||`Test Spy & Attack`),1)]),_:1},8,[`disabled`]),c(f(b),{onClick:St,variant:`secondary`,class:`w-full`,disabled:!X.value},{default:n(()=>[s(o(f(z)(`gmView.initializeFleet`)||`Initialize NPC Fleet`),1)]),_:1},8,[`disabled`]),c(f(b),{onClick:xt,variant:`secondary`,class:`w-full`,disabled:!X.value},{default:n(()=>[s(o(f(z)(`gmView.accelerateMissions`)||`Accelerate All Missions (5s)`),1)]),_:1},8,[`disabled`])]),_:1})]),_:1}),c(f(D),{class:`border-destructive`},{default:n(()=>[c(f(w),null,{default:n(()=>[c(f(C),{class:`text-destructive`},{default:n(()=>[s(o(f(z)(`gmView.dangerZone`)),1)]),_:1}),c(f(g),null,{default:n(()=>[s(o(f(z)(`gmView.dangerZoneDesc`)),1)]),_:1})]),_:1}),c(f(O),{class:`space-y-2`},{default:n(()=>[c(f(b),{onClick:pt,variant:`destructive`,class:`w-full`},{default:n(()=>[s(o(f(z)(`gmView.resetGame`)),1)]),_:1})]),_:1})]),_:1}),c(f(fe),{open:J.value,"onUpdate:open":mt},{default:n(()=>[c(f(x),null,{default:n(()=>[c(f(y),null,{default:n(()=>[c(f(E),null,{default:n(()=>[s(o(f(z)(`gmView.resetGame`)),1)]),_:1}),c(f(me),null,{default:n(()=>[s(o(f(z)(`gmView.resetGameConfirm`)),1)]),_:1})]),_:1}),c(f(T),null,{default:n(()=>[c(f(he),{onClick:ht},{default:n(()=>[s(o(f(z)(`common.cancel`)),1)]),_:1}),c(f(de),{onClick:gt},{default:n(()=>[s(o(f(z)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),c(f(fe),{open:W.value,"onUpdate:open":i[3]||=e=>W.value=e},{default:n(()=>[c(f(x),null,{default:n(()=>[c(f(y),null,{default:n(()=>[c(f(E),null,{default:n(()=>[s(o(G.value),1)]),_:1}),K.value?(e(),a(f(me),{key:0,class:`whitespace-pre-line`},{default:n(()=>[s(o(K.value),1)]),_:1})):l(``,!0)]),_:1}),c(f(T),null,{default:n(()=>[c(f(de),{onClick:_t},{default:n(()=>[s(o(f(z)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])])):(e(),m(`div`,ke,[c(f(Ee),{class:`border-0`},{default:n(()=>[c(f(Te),null,{default:n(()=>[...i[4]||=[p(`div`,{class:`text-8xl sm:text-9xl font-bold text-muted-foreground/20`},`404`,-1)]]),_:1}),c(f(De),null,{default:n(()=>[c(f(Oe),null,{default:n(()=>[s(o(f(z)(`notFound.title`)),1)]),_:1}),c(f(we),null,{default:n(()=>[s(o(f(z)(`notFound.description`)),1)]),_:1})]),_:1}),c(f(Ce),null,{default:n(()=>[c(f(b),{onClick:et,size:`lg`},{default:n(()=>[c(f(oe),{class:`mr-2 h-4 w-4`}),s(` `+o(f(z)(`notFound.goHome`)),1)]),_:1})]),_:1})]),_:1})]))}});export{I as default}; \ No newline at end of file diff --git a/docs/assets/GMView-DWcaM1NY.js b/docs/assets/GMView-DWcaM1NY.js deleted file mode 100644 index 5640c69..0000000 --- a/docs/assets/GMView-DWcaM1NY.js +++ /dev/null @@ -1 +0,0 @@ -import{$t as e,D as t,E as n,En as r,Gn as i,Gt as a,Jt as o,Ln as s,O as ee,Qt as c,T as te,Xn as l,Xt as u,Yt as d,Zt as f,en as p,gn as m,k as ne,mn as h,tn as re}from"./game-logic-Bi1l7y4K.js";import"./vendor-pinia-DqhKuBjp.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-Dr0JspcV.js";import"./vendor-others-DTUzJ7S-.js";import"./vendor-reka-ui-BEHIKScj.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CJcfYqoW.js";import"./vendor-icons-z9V6Jdbh.js";import{t as g}from"./CardDescription-BSLS07AU.js";import{_,d as ie,f as ae,h as v,v as oe}from"./game-config-CG6z6nnH.js";import{H as se,K as ce,L as y,W as b,_ as x,b as S,g as C,n as le,q as ue,t as de,v as w,y as T}from"./index-BT5w6et-.js";import{t as fe}from"./useGameConfig-b98LOtBY.js";import{a as E,i as D,n as O,r as k,t as A}from"./SelectValue-DmEWUfvu.js";var pe={class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},me={class:`flex items-center justify-between`},he={class:`text-2xl sm:text-3xl font-bold`},ge={key:0,class:`flex flex-wrap gap-2 border-b`},_e={key:1,class:`space-y-4`},ve={class:`flex gap-2`},j={key:2,class:`space-y-4`},M={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},N={class:`flex gap-2`},P={key:3,class:`space-y-4`},F={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},ye={class:`flex gap-2`},be={key:4,class:`space-y-4`},xe={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Se={class:`flex gap-2`},Ce={key:5,class:`space-y-4`},we={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Te={class:`flex gap-2`},Ee={key:6,class:`space-y-4`},De={class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Oe={class:`flex gap-2`},ke={class:`space-y-2`},Ae={class:`space-y-2`},je={class:`grid grid-cols-2 gap-2`},I=re({__name:`GMView`,setup(re){let I=ue(),L=de(),Me=le(),{t:R}=ce(),{BUILDINGS:Ne,TECHNOLOGIES:Pe,SHIPS:Fe,DEFENSES:Ie,OFFICERS:Le}=fe(),z=s(I.player.planets[0]?.id||``),B=s(`resources`),V=s({}),H=s(L.npcs[0]?.id||``),U=s(`0`);Object.values(v).forEach(e=>{let t=I.player.officers[e];if(t&&t.expiresAt){let n=Math.ceil((t.expiresAt-Date.now())/(1e3*60*60*24));V.value[e]=Math.max(0,n)}else V.value[e]=0});let W=o(()=>I.player.planets.find(e=>e.id===z.value)),G=o(()=>L.npcs.find(e=>e.id===H.value)),K=o(()=>[...I.player.planets,...Object.values(Me.planets)]),Re=[`metal`,`crystal`,`deuterium`,`darkMatter`],ze=Object.values(ie),Be=Object.values(oe),Ve=Object.values(_),He=Object.values(ae),Ue=Object.values(v),We=[{value:`resources`,label:`gmView.resources`},{value:`buildings`,label:`gmView.buildings`},{value:`research`,label:`gmView.research`},{value:`ships`,label:`gmView.ships`},{value:`defense`,label:`gmView.defense`},{value:`officers`,label:`gmView.officers`}],q=(e,t)=>{W.value&&(W.value.resources[e]+=t)},J=(e,t)=>{W.value&&(W.value.buildings[e]=t)},Y=(e,t)=>{I.player.technologies[e]=t},X=(e,t)=>{W.value&&(W.value.fleet[e]=(W.value.fleet[e]||0)+t)},Z=(e,t)=>{W.value&&(W.value.defense[e]=(W.value.defense[e]||0)+t)},Q=(e,t)=>{V.value[e]=t;let n=Date.now(),r=n+t*24*60*60*1e3;I.player.officers[e]?(I.player.officers[e].expiresAt=r,I.player.officers[e].active=!0,I.player.officers[e].hiredAt||(I.player.officers[e].hiredAt=n)):I.player.officers[e]={type:e,active:!0,hiredAt:n,expiresAt:r}},$=()=>{confirm(R(`gmView.resetGameConfirm`))&&(localStorage.clear(),location.reload())},Ge=()=>{if(!G.value){alert(R(`gmView.selectNPCFirst`)||`Please select an NPC first`);return}let e=ne(G.value,I.player,K.value,parseInt(U.value));e?(n(G.value,e.id,5),alert(`${G.value.name} will spy in 5 seconds`)):alert(R(`gmView.npcNoProbes`)||`NPC does not have spy probes`)},Ke=()=>{if(!G.value){alert(R(`gmView.selectNPCFirst`)||`Please select an NPC first`);return}let e=t(G.value,I.player,K.value,parseInt(U.value));e?(n(G.value,e.id,5),alert(`${G.value.name} will attack in 5 seconds`)):alert(R(`gmView.npcNoSpyReport`)||`NPC needs to spy first`)},qe=()=>{if(!G.value){alert(R(`gmView.selectNPCFirst`)||`Please select an NPC first`);return}let{spyMission:e,attackMission:t}=ee(G.value,I.player,K.value,parseInt(U.value));e&&t?(n(G.value,e.id,5),n(G.value,t.id,10),alert(`${G.value.name} will spy in 5s and attack in 10s`)):alert(R(`gmView.npcMissionFailed`)||`Failed to create missions`)},Je=()=>{if(!G.value){alert(R(`gmView.selectNPCFirst`)||`Please select an NPC first`);return}let e=te(G.value,5);alert(`Accelerated ${e} missions to 5 seconds`)},Ye=()=>{if(!G.value){alert(R(`gmView.selectNPCFirst`)||`Please select an NPC first`);return}let e=G.value.planets[0];if(!e){alert(`NPC has no planets`);return}e.fleet[_.EspionageProbe]=(e.fleet[_.EspionageProbe]||0)+100,e.fleet[_.LightFighter]=(e.fleet[_.LightFighter]||0)+500,e.fleet[_.HeavyFighter]=(e.fleet[_.HeavyFighter]||0)+300,e.fleet[_.Cruiser]=(e.fleet[_.Cruiser]||0)+200,e.fleet[_.Battleship]=(e.fleet[_.Battleship]||0)+100,e.fleet[_.Bomber]=(e.fleet[_.Bomber]||0)+50,e.fleet[_.Destroyer]=(e.fleet[_.Destroyer]||0)+30,e.fleet[_.Battlecruiser]=(e.fleet[_.Battlecruiser]||0)+20,alert(`${G.value.name} fleet initialized:\n- 100 Spy Probes\n- 500 Light Fighters\n- 300 Heavy Fighters\n- 200 Cruisers\n- 100 Battleships\n- 50 Bombers\n- 30 Destroyers\n- 20 Battlecruisers`)};return(t,n)=>(h(),c(`div`,pe,[d(`div`,me,[d(`h1`,he,l(i(R)(`gmView.title`)),1),p(i(se),{variant:`destructive`},{default:r(()=>[e(l(i(R)(`gmView.adminOnly`)),1)]),_:1})]),p(i(S),null,{default:r(()=>[p(i(w),null,{default:r(()=>[p(i(x),null,{default:r(()=>[e(l(i(R)(`gmView.selectPlanet`)),1)]),_:1})]),_:1}),p(i(T),null,{default:r(()=>[p(i(E),{modelValue:z.value,"onUpdate:modelValue":n[0]||=e=>z.value=e},{default:r(()=>[p(i(O),null,{default:r(()=>[p(i(A),{placeholder:i(R)(`gmView.choosePlanet`)},null,8,[`placeholder`])]),_:1}),p(i(D),null,{default:r(()=>[(h(!0),c(a,null,m(i(I).player.planets,t=>(h(),u(i(k),{key:t.id,value:t.id},{default:r(()=>[e(l(t.name)+` (`+l(t.position.galaxy)+`:`+l(t.position.system)+`:`+l(t.position.position)+`) `,1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`])]),_:1})]),_:1}),W.value?(h(),c(`div`,ge,[(h(),c(a,null,m(We,t=>p(i(b),{key:t.value,onClick:e=>B.value=t.value,variant:B.value===t.value?`default`:`ghost`,class:`rounded-b-none`},{default:r(()=>[e(l(i(R)(t.label)),1)]),_:2},1032,[`onClick`,`variant`])),64))])):f(``,!0),W.value&&B.value===`resources`?(h(),c(`div`,_e,[p(i(S),null,{default:r(()=>[p(i(w),null,{default:r(()=>[p(i(x),null,{default:r(()=>[e(l(i(R)(`gmView.modifyResources`)),1)]),_:1}),p(i(g),null,{default:r(()=>[e(l(i(R)(`gmView.resourcesDesc`)),1)]),_:1})]),_:1}),p(i(T),{class:`space-y-4`},{default:r(()=>[(h(),c(a,null,m(Re,t=>d(`div`,{key:t,class:`space-y-2`},[p(i(C),null,{default:r(()=>[e(l(i(R)(`resources.${t}`)),1)]),_:2},1024),d(`div`,ve,[p(i(y),{modelValue:W.value.resources[t],"onUpdate:modelValue":e=>W.value.resources[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),p(i(b),{onClick:e=>q(t,1e6),variant:`outline`,size:`sm`},{default:r(()=>[...n[3]||=[e(`+1M`,-1)]]),_:1},8,[`onClick`]),p(i(b),{onClick:e=>q(t,1e7),variant:`outline`,size:`sm`},{default:r(()=>[...n[4]||=[e(`+10M`,-1)]]),_:1},8,[`onClick`])])])),64))]),_:1})]),_:1})])):f(``,!0),W.value&&B.value===`buildings`?(h(),c(`div`,j,[p(i(S),null,{default:r(()=>[p(i(w),null,{default:r(()=>[p(i(x),null,{default:r(()=>[e(l(i(R)(`gmView.modifyBuildings`)),1)]),_:1}),p(i(g),null,{default:r(()=>[e(l(i(R)(`gmView.buildingsDesc`)),1)]),_:1})]),_:1}),p(i(T),null,{default:r(()=>[d(`div`,M,[(h(!0),c(a,null,m(i(ze),t=>(h(),c(`div`,{key:t,class:`space-y-2`},[p(i(C),null,{default:r(()=>[e(l(i(Ne)[t].name),1)]),_:2},1024),d(`div`,N,[p(i(y),{modelValue:W.value.buildings[t],"onUpdate:modelValue":e=>W.value.buildings[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:`100`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),p(i(b),{onClick:e=>J(t,10),variant:`outline`,size:`sm`},{default:r(()=>[...n[5]||=[e(`Lv 10`,-1)]]),_:1},8,[`onClick`]),p(i(b),{onClick:e=>J(t,30),variant:`outline`,size:`sm`},{default:r(()=>[...n[6]||=[e(`Lv 30`,-1)]]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})])):f(``,!0),B.value===`research`?(h(),c(`div`,P,[p(i(S),null,{default:r(()=>[p(i(w),null,{default:r(()=>[p(i(x),null,{default:r(()=>[e(l(i(R)(`gmView.modifyResearch`)),1)]),_:1}),p(i(g),null,{default:r(()=>[e(l(i(R)(`gmView.researchDesc`)),1)]),_:1})]),_:1}),p(i(T),null,{default:r(()=>[d(`div`,F,[(h(!0),c(a,null,m(i(Be),t=>(h(),c(`div`,{key:t,class:`space-y-2`},[p(i(C),null,{default:r(()=>[e(l(i(Pe)[t].name),1)]),_:2},1024),d(`div`,ye,[p(i(y),{modelValue:i(I).player.technologies[t],"onUpdate:modelValue":e=>i(I).player.technologies[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,max:`50`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),p(i(b),{onClick:e=>Y(t,10),variant:`outline`,size:`sm`},{default:r(()=>[...n[7]||=[e(`Lv 10`,-1)]]),_:1},8,[`onClick`]),p(i(b),{onClick:e=>Y(t,20),variant:`outline`,size:`sm`},{default:r(()=>[...n[8]||=[e(`Lv 20`,-1)]]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})])):f(``,!0),W.value&&B.value===`ships`?(h(),c(`div`,be,[p(i(S),null,{default:r(()=>[p(i(w),null,{default:r(()=>[p(i(x),null,{default:r(()=>[e(l(i(R)(`gmView.modifyShips`)),1)]),_:1}),p(i(g),null,{default:r(()=>[e(l(i(R)(`gmView.shipsDesc`)),1)]),_:1})]),_:1}),p(i(T),null,{default:r(()=>[d(`div`,xe,[(h(!0),c(a,null,m(i(Ve),t=>(h(),c(`div`,{key:t,class:`space-y-2`},[p(i(C),null,{default:r(()=>[e(l(i(Fe)[t].name),1)]),_:2},1024),d(`div`,Se,[p(i(y),{modelValue:W.value.fleet[t],"onUpdate:modelValue":e=>W.value.fleet[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),p(i(b),{onClick:e=>X(t,100),variant:`outline`,size:`sm`},{default:r(()=>[...n[9]||=[e(`+100`,-1)]]),_:1},8,[`onClick`]),p(i(b),{onClick:e=>X(t,1e3),variant:`outline`,size:`sm`},{default:r(()=>[...n[10]||=[e(`+1K`,-1)]]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})])):f(``,!0),W.value&&B.value===`defense`?(h(),c(`div`,Ce,[p(i(S),null,{default:r(()=>[p(i(w),null,{default:r(()=>[p(i(x),null,{default:r(()=>[e(l(i(R)(`gmView.modifyDefense`)),1)]),_:1}),p(i(g),null,{default:r(()=>[e(l(i(R)(`gmView.defenseDesc`)),1)]),_:1})]),_:1}),p(i(T),null,{default:r(()=>[d(`div`,we,[(h(!0),c(a,null,m(i(He),t=>(h(),c(`div`,{key:t,class:`space-y-2`},[p(i(C),null,{default:r(()=>[e(l(i(Ie)[t].name),1)]),_:2},1024),d(`div`,Te,[p(i(y),{modelValue:W.value.defense[t],"onUpdate:modelValue":e=>W.value.defense[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`]),p(i(b),{onClick:e=>Z(t,100),variant:`outline`,size:`sm`},{default:r(()=>[...n[11]||=[e(`+100`,-1)]]),_:1},8,[`onClick`]),p(i(b),{onClick:e=>Z(t,1e3),variant:`outline`,size:`sm`},{default:r(()=>[...n[12]||=[e(`+1K`,-1)]]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})])):f(``,!0),B.value===`officers`?(h(),c(`div`,Ee,[p(i(S),null,{default:r(()=>[p(i(w),null,{default:r(()=>[p(i(x),null,{default:r(()=>[e(l(i(R)(`gmView.modifyOfficers`)),1)]),_:1}),p(i(g),null,{default:r(()=>[e(l(i(R)(`gmView.officersDesc`)),1)]),_:1})]),_:1}),p(i(T),null,{default:r(()=>[d(`div`,De,[(h(!0),c(a,null,m(i(Ue),t=>(h(),c(`div`,{key:t,class:`space-y-2`},[p(i(C),null,{default:r(()=>[e(l(i(Le)[t].name),1)]),_:2},1024),d(`div`,Oe,[p(i(y),{modelValue:V.value[t],"onUpdate:modelValue":e=>V.value[t]=e,modelModifiers:{number:!0},type:`number`,min:`0`,placeholder:i(R)(`gmView.days`),class:`flex-1`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),p(i(b),{onClick:e=>Q(t,7),variant:`outline`,size:`sm`},{default:r(()=>[e(`7`+l(i(R)(`gmView.days`)),1)]),_:1},8,[`onClick`]),p(i(b),{onClick:e=>Q(t,30),variant:`outline`,size:`sm`},{default:r(()=>[e(`30`+l(i(R)(`gmView.days`)),1)]),_:1},8,[`onClick`]),p(i(b),{onClick:e=>Q(t,365),variant:`outline`,size:`sm`},{default:r(()=>[e(`365`+l(i(R)(`gmView.days`)),1)]),_:1},8,[`onClick`])])]))),128))])]),_:1})]),_:1})])):f(``,!0),p(i(S),{class:`border-primary`},{default:r(()=>[p(i(w),null,{default:r(()=>[p(i(x),null,{default:r(()=>[e(l(i(R)(`gmView.npcTesting`)||`NPC Testing`),1)]),_:1}),p(i(g),null,{default:r(()=>[e(l(i(R)(`gmView.npcTestingDesc`)||`Test NPC spy and attack behavior`),1)]),_:1})]),_:1}),p(i(T),{class:`space-y-3`},{default:r(()=>[d(`div`,ke,[p(i(C),null,{default:r(()=>[e(l(i(R)(`gmView.selectNPC`)||`Select NPC`),1)]),_:1}),p(i(E),{modelValue:H.value,"onUpdate:modelValue":n[1]||=e=>H.value=e},{default:r(()=>[p(i(O),null,{default:r(()=>[p(i(A),{placeholder:i(R)(`gmView.chooseNPC`)||`Choose NPC`},null,8,[`placeholder`])]),_:1}),p(i(D),null,{default:r(()=>[(h(!0),c(a,null,m(i(L).npcs,t=>(h(),u(i(k),{key:t.id,value:t.id},{default:r(()=>[e(l(t.name)+` (`+l(t.difficulty)+`)`,1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`])]),d(`div`,Ae,[p(i(C),null,{default:r(()=>[e(l(i(R)(`gmView.targetPlanet`)||`Target Planet`),1)]),_:1}),p(i(E),{modelValue:U.value,"onUpdate:modelValue":n[2]||=e=>U.value=e},{default:r(()=>[p(i(O),null,{default:r(()=>[p(i(A),{placeholder:i(R)(`gmView.chooseTarget`)||`Choose Target Planet`},null,8,[`placeholder`])]),_:1}),p(i(D),null,{default:r(()=>[(h(!0),c(a,null,m(i(I).player.planets,(t,n)=>(h(),u(i(k),{key:t.id,value:n.toString()},{default:r(()=>[e(l(t.name)+` (`+l(t.position.galaxy)+`:`+l(t.position.system)+`:`+l(t.position.position)+`) `,1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`])]),d(`div`,je,[p(i(b),{onClick:Ge,variant:`outline`,class:`w-full`,disabled:!G.value},{default:r(()=>[e(l(i(R)(`gmView.testSpy`)||`Test Spy`),1)]),_:1},8,[`disabled`]),p(i(b),{onClick:Ke,variant:`outline`,class:`w-full`,disabled:!G.value},{default:r(()=>[e(l(i(R)(`gmView.testAttack`)||`Test Attack`),1)]),_:1},8,[`disabled`])]),p(i(b),{onClick:qe,variant:`default`,class:`w-full`,disabled:!G.value},{default:r(()=>[e(l(i(R)(`gmView.testSpyAndAttack`)||`Test Spy & Attack`),1)]),_:1},8,[`disabled`]),p(i(b),{onClick:Ye,variant:`secondary`,class:`w-full`,disabled:!G.value},{default:r(()=>[e(l(i(R)(`gmView.initializeFleet`)||`Initialize NPC Fleet`),1)]),_:1},8,[`disabled`]),p(i(b),{onClick:Je,variant:`secondary`,class:`w-full`,disabled:!G.value},{default:r(()=>[e(l(i(R)(`gmView.accelerateMissions`)||`Accelerate All Missions (5s)`),1)]),_:1},8,[`disabled`])]),_:1})]),_:1}),p(i(S),{class:`border-destructive`},{default:r(()=>[p(i(w),null,{default:r(()=>[p(i(x),{class:`text-destructive`},{default:r(()=>[e(l(i(R)(`gmView.dangerZone`)),1)]),_:1}),p(i(g),null,{default:r(()=>[e(l(i(R)(`gmView.dangerZoneDesc`)),1)]),_:1})]),_:1}),p(i(T),{class:`space-y-2`},{default:r(()=>[p(i(b),{onClick:$,variant:`destructive`,class:`w-full`},{default:r(()=>[e(l(i(R)(`gmView.resetGame`)),1)]),_:1})]),_:1})]),_:1})]))}});export{I as default}; \ No newline at end of file diff --git a/docs/assets/GalaxyView-LGfalWWd.js b/docs/assets/GalaxyView-LGfalWWd.js new file mode 100644 index 0000000..fcd2b05 --- /dev/null +++ b/docs/assets/GalaxyView-LGfalWWd.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./missileLogic-_46Nr-Ju.js","./game-logic-BBFCPVtv.js","./game-config-DRP-gbpS.js","./game-i18n-BC9uiVvf.js","./rolldown-runtime-CIDIeb-o.js"])))=>i.map(i=>d[i]); +import{En as e,On as t,Rn as n,Yn as r,ar as i,cn as a,cr as o,dn as s,dt as c,fn as l,kn as ee,ln as u,lt as te,on as d,pn as f,rn as p,rr as m,sn as h,un as g,wn as ne,xn as re}from"./game-logic-BBFCPVtv.js";import"./vendor-pinia-L_8CmDWM.js";import{a as ie,o as ae}from"./vendor-vue-router-0mfLVB6Y.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-BC9uiVvf.js";import{l as _}from"./vendor-others-Bce0hM6h.js";import{$ as v,K as y,X as b,Y as x}from"./vendor-reka-ui-DR3m_AkV.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-Djj-oRw9.js";import{$ as oe,B as se,I as ce,L as le,N as ue,b as S,l as de,n as C,v as fe}from"./vendor-icons-Ccm2_GPI.js";import{t as pe}from"./TooltipProvider-Cspoy8HK.js";import{t as me}from"./CardDescription-DduF5EVY.js";import{g as w}from"./game-config-DRP-gbpS.js";import{$ as he,A as ge,B as T,D as E,E as _e,F as ve,H as D,I as ye,J as O,K as k,L as A,M as be,N as xe,O as Se,P as Ce,Q as we,R as j,S as Te,T as Ee,U as M,V as De,W as N,X as Oe,Y as P,Z as ke,d as Ae,f as je,j as Me,k as Ne,m as Pe,o as F,p as Fe,t as Ie,u as I,w as Le,z as L}from"./index-B4KMqZ_y.js";import{a as Re,i as ze,n as Be,r as Ve,t as He}from"./SelectValue-8cT4Hu-1.js";var Ue=f({inheritAttrs:!1,__name:`DialogContent`,props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{},showCloseButton:{type:Boolean,default:!0}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(t,{emit:r}){let i=t,o=r,s=v(_(i,`class`),o);return(r,o)=>(e(),a(m(y),null,{default:n(()=>[l(E),l(m(x),re({"data-slot":`dialog-content`},{...r.$attrs,...m(s)},{class:m(P)(`bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-2xl`,i.class)}),{default:n(()=>[ee(r.$slots,`default`),t.showCloseButton?(e(),a(m(b),{key:0,"data-slot":`dialog-close`,class:`ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`},{default:n(()=>[l(m(C)),o[0]||=h(`span`,{class:`sr-only`},`Close`,-1)]),_:1})):u(``,!0)]),_:3},16,[`class`])]),_:3}))}}),We={class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},Ge={class:`text-2xl sm:text-3xl font-bold`},Ke={class:`space-y-2`},qe={class:`space-y-2`},Je={class:`space-y-1`},Ye={class:`px-2 py-1.5 text-xs font-semibold text-muted-foreground`},Xe={class:`flex items-start gap-2 w-full min-w-0`},Ze={class:`flex-1 min-w-0`},Qe={class:`flex items-center gap-1.5 mb-0.5`},$e={class:`truncate font-medium text-sm`},et={class:`text-[11px] text-muted-foreground`},tt={class:`space-y-1`},nt={class:`px-2 py-1.5 text-xs font-semibold text-muted-foreground`},rt={class:`flex items-start gap-2 w-full min-w-0`},it={class:`flex-1 min-w-0`},at={class:`truncate font-medium text-sm mb-0.5`},ot={class:`text-[11px] text-muted-foreground`},st={class:`space-y-2`},ct={class:`sm:hidden w-full space-y-2`},lt={class:`flex items-start gap-2 w-full`},ut={class:`w-8 text-center flex-shrink-0`},dt={class:`flex-1 min-w-0`},ft={key:0,class:`space-y-1`},pt={class:`flex items-center gap-1.5 min-w-0 flex-wrap`},mt={class:`font-semibold text-sm truncate`},ht={class:`text-xs text-muted-foreground whitespace-nowrap flex-shrink-0`},gt={class:`space-y-2`},_t={class:`text-xs font-semibold text-amber-700 dark:text-amber-400`},vt={class:`space-y-1 text-xs`},yt={class:`flex items-center gap-2`},bt={class:`text-muted-foreground`},xt={class:`font-medium`},St={class:`flex items-center gap-2`},Ct={class:`text-muted-foreground`},wt={class:`font-medium`},Tt={key:0,class:`text-xs`},Et={class:`text-muted-foreground`},Dt={key:1,class:`space-y-1`},Ot={class:`text-sm text-muted-foreground`},kt={class:`space-y-2`},At={class:`text-xs font-semibold text-amber-700 dark:text-amber-400`},jt={class:`space-y-1 text-xs`},Mt={class:`flex items-center gap-2`},Nt={class:`text-muted-foreground`},Pt={class:`font-medium`},Ft={class:`flex items-center gap-2`},It={class:`text-muted-foreground`},Lt={class:`font-medium`},Rt={class:`flex gap-1 pl-10`},zt={class:`hidden sm:flex items-center gap-4 flex-1 min-w-0`},Bt={class:`w-12 text-center flex-shrink-0`},Vt={class:`flex-1 min-w-0`},Ht={key:0,class:`space-y-1`},Ut={class:`flex items-center gap-2 flex-wrap`},Wt={class:`font-semibold text-base`},Gt={class:`space-y-2`},Kt={class:`text-xs font-semibold text-amber-700 dark:text-amber-400`},qt={class:`space-y-1 text-xs`},Jt={class:`flex items-center gap-2`},Yt={class:`text-muted-foreground`},Xt={class:`font-medium`},Zt={class:`flex items-center gap-2`},Qt={class:`text-muted-foreground`},$t={class:`font-medium`},en={class:`text-xs text-muted-foreground`},tn={key:0,class:`text-xs`},nn={class:`text-muted-foreground`},rn={key:1,class:`space-y-1`},an={class:`text-sm text-muted-foreground`},on={class:`space-y-2`},sn={class:`text-xs font-semibold text-amber-700 dark:text-amber-400`},cn={class:`space-y-1 text-xs`},ln={class:`flex items-center gap-2`},un={class:`text-muted-foreground`},dn={class:`font-medium`},fn={class:`flex items-center gap-2`},pn={class:`text-muted-foreground`},mn={class:`font-medium`},hn={class:`hidden sm:flex gap-1 sm:gap-2 flex-shrink-0`},gn={key:0,class:`space-y-4`},_n={class:`space-y-2`},vn={class:`text-sm text-muted-foreground`},yn={class:`space-y-2 text-sm`},bn={class:`flex justify-between`},xn={class:`text-muted-foreground`},Sn={class:`flex justify-between`},Cn={class:`text-muted-foreground`},wn={class:`flex justify-between`},Tn={class:`text-muted-foreground`},R=f({__name:`GalaxyView`,setup(ee){let f=he(),re=we(),_=ke(),v=ae(),y=ie(),{t:b}=Oe(),x=r(!1),C=r(``),E=r(``),P=r(null),R=r(!1),z=r(null),B=r(1),V=r(1),H=r(1),U=r(1),W=r(1),G=r(void 0),K=d(()=>G.value&&_.npcs.find(e=>e.id===G.value)||null),En=r([]),Dn=d(()=>f.player.planets.find(e=>!e.isMoon)),On=d(()=>f.player.planets.filter(e=>!e.isMoon)),kn=d(()=>f.currentPlanet?(f.currentPlanet.defense.interplanetaryMissile||0)>0:!1),An=d(()=>Dn.value?U.value===Dn.value.position.galaxy&&W.value===Dn.value.position.system:!1);ne(()=>{y.query.highlightNpc&&(G.value=y.query.highlightNpc);let e=y.query.galaxy?Number(y.query.galaxy):null,t=y.query.system?Number(y.query.system):null;e&&t?(U.value=e,W.value=t,V.value=e,H.value=t,J(),Mn()):f.currentPlanet&&(U.value=f.currentPlanet.position.galaxy,W.value=f.currentPlanet.position.system,V.value=U.value,H.value=W.value,J())});let jn=(e,t)=>c(e,t).map(n=>{let r=te(e,t,n.position),i=f.player.planets.find(r=>r.position.galaxy===e&&r.position.system===t&&r.position.position===n.position)||re.planets[r]||null;return{position:n.position,planet:i}}),q=(e,t,n)=>{let r=`debris_${e}_${t}_${n}`;return re.debrisFields[r]||null},Mn=()=>{(y.query.highlightNpc||y.query.galaxy||y.query.system)&&v.replace({query:{}})},J=()=>{U.value=V.value,W.value=H.value,En.value=jn(U.value,W.value)},Nn=e=>{U.value=e.position.galaxy,W.value=e.position.system,V.value=U.value,H.value=W.value,En.value=jn(U.value,W.value)},Y=e=>e?e.ownerId===f.player.id:!1,X=e=>{if(!e||!G.value)return!1;let t=_.npcs.find(e=>e.id===G.value);return t?t.planets.some(t=>t.id===e.id):!1},Pn=e=>!e||Y(e)?null:_.npcs.find(t=>t.planets.some(t=>t.position.galaxy===e.position.galaxy&&t.position.system===e.position.system&&t.position.position===e.position.position)),Z=e=>{let t=Pn(e);return t?f.player.diplomaticRelations?.[t.id]:null},Fn=e=>{let t=Z(e);if(!t)return`secondary`;switch(t.status){case w.Friendly:return`default`;case w.Hostile:return`destructive`;default:return`secondary`}},In=e=>{let t=Z(e);if(!t)return b(`diplomacy.status.neutral`);switch(t.status){case w.Friendly:return b(`diplomacy.status.friendly`);case w.Hostile:return b(`diplomacy.status.hostile`);default:return b(`diplomacy.status.neutral`)}},Q=e=>Z(e)?.reputation??null,Ln=e=>e===null?`text-muted-foreground`:e>=20?`text-green-600 dark:text-green-400`:e<=-20?`text-red-600 dark:text-red-400`:`text-muted-foreground`,Rn=e=>{f.currentPlanetId=e,v.push(`/`)},zn=()=>{P.value&&P.value(),x.value=!1},$=(e,t,n)=>{let r=e?e.position:{galaxy:U.value,system:W.value,position:n},i=`${r.galaxy}:${r.system}:${r.position}`,a=``,o=``;t===`spy`?(o=b(`galaxyView.scoutPlanetTitle`),a=b(`galaxyView.scoutPlanetMessage`).replace(`{coordinates}`,i)):t===`attack`?(o=b(`galaxyView.attackPlanetTitle`),a=b(`galaxyView.attackPlanetMessage`).replace(`{coordinates}`,i)):t===`colonize`?(o=b(`galaxyView.colonizePlanetTitle`),a=b(`galaxyView.colonizePlanetMessage`).replace(`{coordinates}`,i)):t===`recycle`?(o=b(`galaxyView.recyclePlanetTitle`),a=b(`galaxyView.recyclePlanetMessage`).replace(`{coordinates}`,i)):t===`gift`&&(o=b(`galaxyView.giftPlanetTitle`),a=b(`galaxyView.giftPlanetMessage`).replace(`{coordinates}`,i)),C.value=o,E.value=a,P.value=()=>{v.push({path:`/fleet`,query:{galaxy:r.galaxy,system:r.system,position:r.position,mission:t===`gift`?void 0:t,gift:t===`gift`?`1`:void 0}})},x.value=!0},Bn=e=>{z.value=e,B.value=1,R.value=!0},Vn=()=>{!z.value||!f.currentPlanet||Ie(()=>import(`./missileLogic-_46Nr-Ju.js`),__vite__mapDeps([0,1,2,3,4]),import.meta.url).then(e=>{let t=e.validateMissileLaunch(f.currentPlanet,z.value.position,B.value,f.player.technologies);if(!t.valid){C.value=b(`errors.launchFailed`),E.value=b(t.reason||`errors.unknown`),x.value=!0;return}let n=e.createMissileAttack(f.player.id,f.currentPlanet,z.value.position,z.value.id,B.value);e.executeMissileLaunch(f.currentPlanet,B.value),f.player.missileAttacks.push(n),R.value=!1,C.value=b(`common.success`),E.value=b(`galaxyView.missileLaunched`),x.value=!0})},Hn=()=>{let e=f.player.technologies.impulseDrive||0;return e===0?0:5*e-1},Un=e=>{if(!f.currentPlanet)return 0;let t=f.currentPlanet.position,n=e.position;return t.galaxy===n.galaxy?Math.abs(t.system-n.system):1/0},Wn=e=>{let t=30+e*60;return`${Math.floor(t/60)}:${(t%60).toString().padStart(2,`0`)}`};return(r,c)=>(e(),g(`div`,We,[h(`h1`,Ge,o(m(b)(`galaxyView.title`)),1),l(m(Pe),null,{default:n(()=>[l(m(je),null,{default:n(()=>[l(m(Ae),null,{default:n(()=>[s(o(m(b)(`galaxyView.selectCoordinates`)),1)]),_:1})]),_:1}),l(m(Fe),null,{default:n(()=>[h(`div`,{class:i([`grid gap-3 sm:gap-4`,K.value?`grid-cols-2 sm:grid-cols-4`:An.value?`grid-cols-2`:`grid-cols-2 sm:grid-cols-3`])},[h(`div`,Ke,[l(m(I),{for:`select-galaxy`,class:`text-xs sm:text-sm`},{default:n(()=>[s(o(m(b)(`galaxyView.galaxy`)),1)]),_:1}),(e(),a(m(Re),{key:m(f).locale,"model-value":String(V.value),modal:!1,"onUpdate:modelValue":c[0]||=e=>{V.value=Number(e),J()}},{default:n(()=>[l(m(Be),{id:`select-galaxy`,class:`w-full`},{default:n(()=>[l(m(He),{placeholder:m(b)(`galaxyView.selectGalaxy`)},null,8,[`placeholder`])]),_:1}),l(m(ze),{position:`popper`},{default:n(()=>[(e(),g(p,null,t(9,e=>l(m(Ve),{key:e,value:String(e)},{default:n(()=>[s(o(m(b)(`galaxyView.galaxy`))+` `+o(e),1)]),_:2},1032,[`value`])),64))]),_:1})]),_:1},8,[`model-value`]))]),h(`div`,qe,[l(m(I),{for:`select-system`,class:`text-xs sm:text-sm`},{default:n(()=>[s(o(m(b)(`galaxyView.system`)),1)]),_:1}),(e(),a(m(Re),{key:`${m(f).locale}-system`,"model-value":String(H.value),modal:!1,"onUpdate:modelValue":c[1]||=e=>{H.value=Number(e),J()}},{default:n(()=>[l(m(Be),{id:`select-system`,class:`w-full`},{default:n(()=>[l(m(He),{placeholder:m(b)(`galaxyView.selectSystem`)},null,8,[`placeholder`])]),_:1}),l(m(ze),{position:`popper`},{default:n(()=>[(e(),g(p,null,t(10,e=>l(m(Ve),{key:e,value:String(e)},{default:n(()=>[s(o(m(b)(`galaxyView.system`))+` `+o(e),1)]),_:2},1032,[`value`])),64))]),_:1})]),_:1},8,[`model-value`]))]),An.value?u(``,!0):(e(),g(`div`,{key:0,class:i([K.value?``:`col-span-2 sm:col-span-1`,`space-y-2`])},[l(m(I),{class:`text-xs sm:text-sm opacity-0`},{default:n(()=>[s(o(m(b)(`galaxyView.myPlanets`)),1)]),_:1}),l(m(N),null,{default:n(()=>[l(m(D),{"as-child":``},{default:n(()=>[l(m(O),{variant:`outline`,class:`w-full`},{default:n(()=>[l(m(ue),{class:`h-4 w-4 mr-2`}),s(` `+o(m(b)(`galaxyView.myPlanets`)),1)]),_:1})]),_:1}),l(m(M),{class:`w-72 p-2`,align:`start`},{default:n(()=>[h(`div`,Je,[h(`div`,Ye,o(m(b)(`galaxyView.selectPlanetToView`)),1),(e(!0),g(p,null,t(On.value,t=>(e(),a(m(O),{key:t.id,onClick:e=>Nn(t),disabled:t.position.galaxy===U.value&&t.position.system===W.value,variant:`ghost`,class:i([`w-full justify-start h-auto py-2 px-2 text-left`,t.position.galaxy===U.value&&t.position.system===W.value&&`bg-blue-100 dark:bg-blue-950/50 border border-blue-400 dark:border-blue-600`]),size:`sm`},{default:n(()=>[h(`div`,Xe,[l(m(ce),{class:`h-4 w-4 flex-shrink-0 mt-0.5`}),h(`div`,Ze,[h(`div`,Qe,[h(`span`,$e,o(t.name),1),t.isMoon?(e(),a(m(k),{key:0,variant:`outline`,class:`text-[10px] px-1 py-0 h-4`},{default:n(()=>[s(o(m(b)(`planet.moon`)),1)]),_:1})):u(``,!0)]),h(`div`,et,` [`+o(t.position.galaxy)+`:`+o(t.position.system)+`:`+o(t.position.position)+`] `,1)])])]),_:2},1032,[`onClick`,`disabled`,`class`]))),128))])]),_:1})]),_:1})],2)),K.value?(e(),g(`div`,{key:1,class:i([An.value?`col-span-2 sm:col-span-2`:``,`space-y-2`])},[l(m(I),{class:`text-xs sm:text-sm opacity-0`},{default:n(()=>[s(o(m(b)(`galaxyView.npcPlanets`)),1)]),_:1}),l(m(N),null,{default:n(()=>[l(m(D),{"as-child":``},{default:n(()=>[l(m(O),{variant:`outline`,class:`w-full border-yellow-400 dark:border-yellow-600`},{default:n(()=>[l(m(ce),{class:`h-4 w-4 mr-2`}),s(` `+o(K.value.name)+` (`+o(K.value.planets.length)+`) `,1)]),_:1})]),_:1}),l(m(M),{class:`w-72 p-2`,align:`start`},{default:n(()=>[h(`div`,tt,[h(`div`,nt,o(m(b)(`galaxyView.selectPlanetToView`)),1),(e(!0),g(p,null,t(K.value.planets,t=>(e(),a(m(O),{key:t.id,onClick:e=>Nn(t),disabled:t.position.galaxy===U.value&&t.position.system===W.value,variant:`ghost`,class:i([`w-full justify-start h-auto py-2 px-2 text-left`,t.position.galaxy===U.value&&t.position.system===W.value&&`bg-yellow-100 dark:bg-yellow-950/50 border border-yellow-400 dark:border-yellow-600`]),size:`sm`},{default:n(()=>[h(`div`,rt,[l(m(ce),{class:`h-4 w-4 flex-shrink-0 mt-0.5`}),h(`div`,it,[h(`div`,at,o(t.name),1),h(`div`,ot,` [`+o(t.position.galaxy)+`:`+o(t.position.system)+`:`+o(t.position.position)+`] `,1)])])]),_:2},1032,[`onClick`,`disabled`,`class`]))),128))])]),_:1})]),_:1})],2)):u(``,!0)],2)]),_:1})]),_:1}),l(m(Pe),null,{default:n(()=>[l(m(je),null,{default:n(()=>[l(m(Ae),null,{default:n(()=>[s(o(m(b)(`galaxyView.galaxy`))+` `+o(U.value)+`:`+o(W.value),1)]),_:1}),l(m(me),null,{default:n(()=>[s(o(m(b)(`galaxyView.totalPositions`)),1)]),_:1})]),_:1}),l(m(Fe),null,{default:n(()=>[h(`div`,st,[(e(!0),g(p,null,t(En.value,t=>(e(),g(`div`,{key:t.position,class:i([`flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-4 p-2 sm:p-3 border rounded-lg hover:bg-muted/50 transition-colors`,{"bg-muted/30":!t.planet,"bg-blue-50 dark:bg-blue-950 border-blue-300 dark:border-blue-700":t.planet&&Y(t.planet),"bg-yellow-50 dark:bg-yellow-950/30 border-yellow-400 dark:border-yellow-600 ring-2 ring-yellow-400 dark:ring-yellow-500":t.planet&&X(t.planet)&&!Y(t.planet),"bg-green-50 dark:bg-green-950/30 border-green-300 dark:border-green-700":t.planet&&!Y(t.planet)&&!X(t.planet)&&Z(t.planet)?.status===m(w).Friendly,"bg-red-50 dark:bg-red-950/30 border-red-300 dark:border-red-700":t.planet&&!Y(t.planet)&&!X(t.planet)&&Z(t.planet)?.status===m(w).Hostile,"bg-gray-50 dark:bg-gray-950/30 border-gray-300 dark:border-gray-700":t.planet&&!Y(t.planet)&&!X(t.planet)&&Pn(t.planet)&&(!Z(t.planet)||Z(t.planet)?.status===m(w).Neutral)}])},[h(`div`,ct,[h(`div`,lt,[h(`div`,ut,[l(m(k),{variant:`outline`,class:`text-xs`},{default:n(()=>[s(o(t.position),1)]),_:2},1024)]),h(`div`,dt,[t.planet?(e(),g(`div`,ft,[h(`div`,pt,[h(`h3`,mt,o(t.planet.name),1),h(`span`,ht,` [`+o(t.planet.position.galaxy)+`:`+o(t.planet.position.system)+`:`+o(t.planet.position.position)+`] `,1),Y(t.planet)?(e(),a(m(k),{key:0,variant:`default`,class:`text-xs flex-shrink-0`},{default:n(()=>[s(o(m(b)(`galaxyView.mine`)),1)]),_:1})):(e(),a(m(k),{key:1,variant:Fn(t.planet),class:`text-xs flex-shrink-0`},{default:n(()=>[s(o(In(t.planet)),1)]),_:2},1032,[`variant`])),q(U.value,W.value,t.position)?(e(),a(m(N),{key:2},{default:n(()=>[l(m(D),{"as-child":``},{default:n(()=>[l(m(k),{variant:`outline`,class:`text-xs cursor-pointer hover:bg-amber-50 dark:hover:bg-amber-950/30 border-amber-300 dark:border-amber-700 text-amber-700 dark:text-amber-400 gap-1`},{default:n(()=>[l(m(S),{class:`h-3 w-3`})]),_:1})]),_:1}),l(m(M),{class:`w-auto p-3`,side:`top`,align:`start`},{default:n(()=>[h(`div`,gt,[h(`p`,_t,o(m(b)(`galaxyView.debrisField`)),1),h(`div`,vt,[h(`div`,yt,[l(A,{type:`metal`,size:`sm`}),h(`span`,bt,o(m(b)(`resources.metal`))+`:`,1),h(`span`,xt,o(m(F)(q(U.value,W.value,t.position).resources.metal)),1)]),h(`div`,St,[l(A,{type:`crystal`,size:`sm`}),h(`span`,Ct,o(m(b)(`resources.crystal`))+`:`,1),h(`span`,wt,o(m(F)(q(U.value,W.value,t.position).resources.crystal)),1)])])])]),_:2},1024)]),_:2},1024)):u(``,!0)]),!Y(t.planet)&&Q(t.planet)!==null?(e(),g(`div`,Tt,[h(`span`,Et,o(m(b)(`diplomacy.reputation`))+`:`,1),h(`span`,{class:i([`ml-1 font-semibold`,Ln(Q(t.planet))])},o(Q(t.planet)>0?`+`:``)+o(Q(t.planet)),3)])):u(``,!0)])):(e(),g(`div`,Dt,[h(`div`,Ot,o(m(b)(`galaxyView.emptySlot`)),1),q(U.value,W.value,t.position)?(e(),a(m(N),{key:0},{default:n(()=>[l(m(D),{"as-child":``},{default:n(()=>[l(m(k),{variant:`outline`,class:`text-xs cursor-pointer hover:bg-amber-50 dark:hover:bg-amber-950/30 border-amber-300 dark:border-amber-700 text-amber-700 dark:text-amber-400 gap-1 inline-flex`},{default:n(()=>[l(m(S),{class:`h-3 w-3`}),h(`span`,null,o(m(b)(`galaxyView.debris`)),1)]),_:1})]),_:1}),l(m(M),{class:`w-auto p-3`,side:`top`,align:`start`},{default:n(()=>[h(`div`,kt,[h(`p`,At,o(m(b)(`galaxyView.debrisField`)),1),h(`div`,jt,[h(`div`,Mt,[l(A,{type:`metal`,size:`sm`}),h(`span`,Nt,o(m(b)(`resources.metal`))+`:`,1),h(`span`,Pt,o(m(F)(q(U.value,W.value,t.position).resources.metal)),1)]),h(`div`,Ft,[l(A,{type:`crystal`,size:`sm`}),h(`span`,It,o(m(b)(`resources.crystal`))+`:`,1),h(`span`,Lt,o(m(F)(q(U.value,W.value,t.position).resources.crystal)),1)])])])]),_:2},1024)]),_:2},1024)):u(``,!0)]))])]),h(`div`,Rt,[l(m(pe),{"delay-duration":300},{default:n(()=>[t.planet&&!Y(t.planet)?(e(),a(m(T),{key:0},{default:n(()=>[l(m(j),{"as-child":``},{default:n(()=>[l(m(O),{onClick:e=>$(t.planet,`spy`),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:n(()=>[l(m(se),{class:`h-3 w-3`})]),_:1},8,[`onClick`])]),_:2},1024),l(m(L),null,{default:n(()=>[h(`p`,null,o(m(b)(`galaxyView.scout`)),1)]),_:1})]),_:2},1024)):u(``,!0),t.planet&&!Y(t.planet)?(e(),a(m(T),{key:1},{default:n(()=>[l(m(j),{"as-child":``},{default:n(()=>[l(m(O),{onClick:e=>$(t.planet,`attack`),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:n(()=>[l(m(de),{class:`h-3 w-3`})]),_:1},8,[`onClick`])]),_:2},1024),l(m(L),null,{default:n(()=>[h(`p`,null,o(m(b)(`galaxyView.attack`)),1)]),_:1})]),_:2},1024)):u(``,!0),t.planet&&!Y(t.planet)&&kn.value?(e(),a(m(T),{key:2},{default:n(()=>[l(m(j),{"as-child":``},{default:n(()=>[l(m(O),{onClick:e=>Bn(t.planet),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:n(()=>[l(m(oe),{class:`h-3 w-3`})]),_:1},8,[`onClick`])]),_:2},1024),l(m(L),null,{default:n(()=>[h(`p`,null,o(m(b)(`galaxyView.missileAttack`)),1)]),_:1})]),_:2},1024)):u(``,!0),t.planet&&!Y(t.planet)&&Pn(t.planet)?(e(),a(m(T),{key:3},{default:n(()=>[l(m(j),{"as-child":``},{default:n(()=>[l(m(O),{onClick:e=>$(t.planet,`gift`),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:n(()=>[l(m(le),{class:`h-3 w-3`})]),_:1},8,[`onClick`])]),_:2},1024),l(m(L),null,{default:n(()=>[h(`p`,null,o(m(b)(`galaxyView.sendGift`)),1)]),_:1})]),_:2},1024)):u(``,!0),t.planet?u(``,!0):(e(),a(m(T),{key:4},{default:n(()=>[l(m(j),{"as-child":``},{default:n(()=>[l(m(O),{onClick:e=>$(null,`colonize`,t.position),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:n(()=>[l(m(fe),{class:`h-3 w-3`})]),_:1},8,[`onClick`])]),_:2},1024),l(m(L),null,{default:n(()=>[h(`p`,null,o(m(b)(`galaxyView.colonize`)),1)]),_:1})]),_:2},1024)),t.planet&&Y(t.planet)?(e(),a(m(T),{key:5},{default:n(()=>[l(m(j),{"as-child":``},{default:n(()=>[l(m(O),{onClick:e=>Rn(t.planet.id),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:n(()=>[l(m(ue),{class:`h-3 w-3`})]),_:1},8,[`onClick`])]),_:2},1024),l(m(L),null,{default:n(()=>[h(`p`,null,o(m(b)(`galaxyView.switch`)),1)]),_:1})]),_:2},1024)):u(``,!0),q(U.value,W.value,t.position)?(e(),a(m(T),{key:6},{default:n(()=>[l(m(j),{"as-child":``},{default:n(()=>[l(m(O),{onClick:e=>$(t.planet,`recycle`,t.position),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:n(()=>[l(m(S),{class:`h-3 w-3`})]),_:1},8,[`onClick`])]),_:2},1024),l(m(L),null,{default:n(()=>[h(`p`,null,o(m(b)(`galaxyView.recycle`)),1)]),_:1})]),_:2},1024)):u(``,!0)]),_:2},1024)])]),h(`div`,zt,[h(`div`,Bt,[l(m(k),{variant:`outline`,class:`text-sm`},{default:n(()=>[s(o(t.position),1)]),_:2},1024)]),h(`div`,Vt,[t.planet?(e(),g(`div`,Ht,[h(`div`,Ut,[h(`h3`,Wt,o(t.planet.name),1),Y(t.planet)?(e(),a(m(k),{key:0,variant:`default`,class:`text-xs`},{default:n(()=>[s(o(m(b)(`galaxyView.mine`)),1)]),_:1})):(e(),a(m(k),{key:1,variant:Fn(t.planet),class:`text-xs`},{default:n(()=>[s(o(In(t.planet)),1)]),_:2},1032,[`variant`])),q(U.value,W.value,t.position)?(e(),a(m(N),{key:2},{default:n(()=>[l(m(D),{"as-child":``},{default:n(()=>[l(m(k),{variant:`outline`,class:`text-xs cursor-pointer hover:bg-amber-50 dark:hover:bg-amber-950/30 border-amber-300 dark:border-amber-700 text-amber-700 dark:text-amber-400 gap-1`},{default:n(()=>[l(m(S),{class:`h-3 w-3`}),h(`span`,null,o(m(b)(`galaxyView.debris`)),1)]),_:1})]),_:1}),l(m(M),{class:`w-auto p-3`,side:`top`,align:`start`},{default:n(()=>[h(`div`,Gt,[h(`p`,Kt,o(m(b)(`galaxyView.debrisField`)),1),h(`div`,qt,[h(`div`,Jt,[l(A,{type:`metal`,size:`sm`}),h(`span`,Yt,o(m(b)(`resources.metal`))+`:`,1),h(`span`,Xt,o(m(F)(q(U.value,W.value,t.position).resources.metal)),1)]),h(`div`,Zt,[l(A,{type:`crystal`,size:`sm`}),h(`span`,Qt,o(m(b)(`resources.crystal`))+`:`,1),h(`span`,$t,o(m(F)(q(U.value,W.value,t.position).resources.crystal)),1)])])])]),_:2},1024)]),_:2},1024)):u(``,!0)]),h(`p`,en,` [`+o(t.planet.position.galaxy)+`:`+o(t.planet.position.system)+`:`+o(t.planet.position.position)+`] `,1),!Y(t.planet)&&Q(t.planet)!==null?(e(),g(`div`,tn,[h(`span`,nn,o(m(b)(`diplomacy.reputation`))+`:`,1),h(`span`,{class:i([`ml-1 font-semibold`,Ln(Q(t.planet))])},o(Q(t.planet)>0?`+`:``)+o(Q(t.planet)),3)])):u(``,!0)])):(e(),g(`div`,rn,[h(`div`,an,o(m(b)(`galaxyView.emptySlot`)),1),q(U.value,W.value,t.position)?(e(),a(m(N),{key:0},{default:n(()=>[l(m(D),{"as-child":``},{default:n(()=>[l(m(k),{variant:`outline`,class:`text-xs cursor-pointer hover:bg-amber-50 dark:hover:bg-amber-950/30 border-amber-300 dark:border-amber-700 text-amber-700 dark:text-amber-400 gap-1 inline-flex`},{default:n(()=>[l(m(S),{class:`h-3 w-3`}),h(`span`,null,o(m(b)(`galaxyView.debris`)),1)]),_:1})]),_:1}),l(m(M),{class:`w-auto p-3`,side:`top`,align:`start`},{default:n(()=>[h(`div`,on,[h(`p`,sn,o(m(b)(`galaxyView.debrisField`)),1),h(`div`,cn,[h(`div`,ln,[l(A,{type:`metal`,size:`sm`}),h(`span`,un,o(m(b)(`resources.metal`))+`:`,1),h(`span`,dn,o(m(F)(q(U.value,W.value,t.position).resources.metal)),1)]),h(`div`,fn,[l(A,{type:`crystal`,size:`sm`}),h(`span`,pn,o(m(b)(`resources.crystal`))+`:`,1),h(`span`,mn,o(m(F)(q(U.value,W.value,t.position).resources.crystal)),1)])])])]),_:2},1024)]),_:2},1024)):u(``,!0)]))])]),h(`div`,hn,[l(m(pe),{"delay-duration":300},{default:n(()=>[t.planet&&!Y(t.planet)?(e(),a(m(T),{key:0},{default:n(()=>[l(m(j),{"as-child":``},{default:n(()=>[l(m(O),{onClick:e=>$(t.planet,`spy`),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:n(()=>[l(m(se),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`])]),_:2},1024),l(m(L),null,{default:n(()=>[h(`p`,null,o(m(b)(`galaxyView.scout`)),1)]),_:1})]),_:2},1024)):u(``,!0),t.planet&&!Y(t.planet)?(e(),a(m(T),{key:1},{default:n(()=>[l(m(j),{"as-child":``},{default:n(()=>[l(m(O),{onClick:e=>$(t.planet,`attack`),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:n(()=>[l(m(de),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`])]),_:2},1024),l(m(L),null,{default:n(()=>[h(`p`,null,o(m(b)(`galaxyView.attack`)),1)]),_:1})]),_:2},1024)):u(``,!0),t.planet&&!Y(t.planet)&&kn.value?(e(),a(m(T),{key:2},{default:n(()=>[l(m(j),{"as-child":``},{default:n(()=>[l(m(O),{onClick:e=>Bn(t.planet),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:n(()=>[l(m(oe),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`])]),_:2},1024),l(m(L),null,{default:n(()=>[h(`p`,null,o(m(b)(`galaxyView.missileAttack`)),1)]),_:1})]),_:2},1024)):u(``,!0),t.planet&&!Y(t.planet)&&Pn(t.planet)?(e(),a(m(T),{key:3},{default:n(()=>[l(m(j),{"as-child":``},{default:n(()=>[l(m(O),{onClick:e=>$(t.planet,`gift`),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:n(()=>[l(m(le),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`])]),_:2},1024),l(m(L),null,{default:n(()=>[h(`p`,null,o(m(b)(`galaxyView.sendGift`)),1)]),_:1})]),_:2},1024)):u(``,!0),t.planet?u(``,!0):(e(),a(m(T),{key:4},{default:n(()=>[l(m(j),{"as-child":``},{default:n(()=>[l(m(O),{onClick:e=>$(null,`colonize`,t.position),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:n(()=>[l(m(fe),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`])]),_:2},1024),l(m(L),null,{default:n(()=>[h(`p`,null,o(m(b)(`galaxyView.colonize`)),1)]),_:1})]),_:2},1024)),t.planet&&Y(t.planet)?(e(),a(m(T),{key:5},{default:n(()=>[l(m(j),{"as-child":``},{default:n(()=>[l(m(O),{onClick:e=>Rn(t.planet.id),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:n(()=>[l(m(ue),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`])]),_:2},1024),l(m(L),null,{default:n(()=>[h(`p`,null,o(m(b)(`galaxyView.switch`)),1)]),_:1})]),_:2},1024)):u(``,!0),q(U.value,W.value,t.position)?(e(),a(m(T),{key:6},{default:n(()=>[l(m(j),{"as-child":``},{default:n(()=>[l(m(O),{onClick:e=>$(t.planet,`recycle`,t.position),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:n(()=>[l(m(S),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`])]),_:2},1024),l(m(L),null,{default:n(()=>[h(`p`,null,o(m(b)(`galaxyView.recycle`)),1)]),_:1})]),_:2},1024)):u(``,!0)]),_:2},1024)])],2))),128))])]),_:1})]),_:1}),l(m(Se),{open:R.value,"onUpdate:open":c[4]||=e=>R.value=e},{default:n(()=>[l(m(Ue),null,{default:n(()=>[l(m(Le),null,{default:n(()=>[l(m(Te),null,{default:n(()=>[s(o(m(b)(`galaxyView.missileAttackTitle`)),1)]),_:1}),z.value?(e(),a(m(_e),{key:0},{default:n(()=>[s(o(m(b)(`galaxyView.missileAttackMessage`).replace(`{coordinates}`,`${z.value.position.galaxy}:${z.value.position.system}:${z.value.position.position}`)),1)]),_:1})):u(``,!0)]),_:1}),m(f).currentPlanet&&z.value?(e(),g(`div`,gn,[h(`div`,_n,[l(m(I),null,{default:n(()=>[s(o(m(b)(`galaxyView.missileCount`)),1)]),_:1}),l(m(De),{modelValue:B.value,"onUpdate:modelValue":c[2]||=e=>B.value=e,modelModifiers:{number:!0},type:`number`,min:`1`,max:m(f).currentPlanet.defense.interplanetaryMissile||0},null,8,[`modelValue`,`max`]),h(`p`,vn,o(m(b)(`galaxyView.availableMissiles`))+`: `+o(m(f).currentPlanet.defense.interplanetaryMissile||0),1)]),h(`div`,yn,[h(`div`,bn,[h(`span`,xn,o(m(b)(`galaxyView.missileRange`))+`:`,1),h(`span`,null,o(Hn())+` `+o(m(b)(`galaxyView.systems`)),1)]),h(`div`,Sn,[h(`span`,Cn,o(m(b)(`galaxyView.distance`))+`:`,1),h(`span`,null,o(Un(z.value))+` `+o(m(b)(`galaxyView.systems`)),1)]),h(`div`,wn,[h(`span`,Tn,o(m(b)(`galaxyView.flightTime`))+`:`,1),h(`span`,null,o(Wn(Un(z.value))),1)])])])):u(``,!0),l(m(Ee),null,{default:n(()=>[l(m(O),{variant:`outline`,onClick:c[3]||=e=>R.value=!1},{default:n(()=>[s(o(m(b)(`galaxyView.cancel`)),1)]),_:1}),l(m(O),{onClick:Vn},{default:n(()=>[s(o(m(b)(`galaxyView.launchMissile`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),l(m(ye),{open:x.value,"onUpdate:open":c[5]||=e=>x.value=e},{default:n(()=>[l(m(xe),null,{default:n(()=>[l(m(ge),null,{default:n(()=>[l(m(Ne),null,{default:n(()=>[s(o(C.value),1)]),_:1}),l(m(be),{class:`whitespace-pre-line`},{default:n(()=>[s(o(E.value),1)]),_:1})]),_:1}),l(m(Me),null,{default:n(()=>[l(m(Ce),null,{default:n(()=>[s(o(m(b)(`common.cancel`)),1)]),_:1}),l(m(ve),{onClick:zn},{default:n(()=>[s(o(m(b)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{R as default}; \ No newline at end of file diff --git a/docs/assets/GalaxyView-Yqd2o_zC.js b/docs/assets/GalaxyView-Yqd2o_zC.js deleted file mode 100644 index 46c717f..0000000 --- a/docs/assets/GalaxyView-Yqd2o_zC.js +++ /dev/null @@ -1 +0,0 @@ -import{$t as e,En as t,Gn as n,Gt as r,Jt as i,Ln as a,Qt as o,Xn as s,Xt as c,Yt as l,Zt as u,en as d,et as ee,fn as te,gn as f,mn as p,nt as ne,qn as m,tn as re}from"./game-logic-Bi1l7y4K.js";import"./vendor-pinia-DqhKuBjp.js";import{a as ie,o as ae}from"./vendor-vue-router-1sDnnIWZ.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-Dr0JspcV.js";import"./vendor-others-DTUzJ7S-.js";import"./vendor-reka-ui-BEHIKScj.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CJcfYqoW.js";import{L as oe,N as h,P as se,_ as ce,c as le,j as ue,v as g}from"./vendor-icons-z9V6Jdbh.js";import{t as de}from"./TooltipProvider-BwjgS8_x.js";import{t as fe}from"./CardDescription-BSLS07AU.js";import{g as _}from"./game-config-CG6z6nnH.js";import{B as v,F as y,H as b,I as x,K as pe,N as S,P as C,R as w,W as T,_ as me,a as he,b as ge,c as _e,f as E,g as D,i as ve,l as ye,n as be,o as xe,q as Se,r as Ce,s as we,t as Te,u as Ee,v as De,y as Oe,z as O}from"./index-BT5w6et-.js";import{a as k,i as ke,n as Ae,r as je,t as Me}from"./SelectValue-DmEWUfvu.js";var Ne={class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},Pe={class:`text-2xl sm:text-3xl font-bold`},Fe={class:`space-y-2`},Ie={class:`space-y-2`},Le={class:`space-y-1`},Re={class:`px-2 py-1.5 text-xs font-semibold text-muted-foreground`},ze={class:`flex items-start gap-2 w-full min-w-0`},Be={class:`flex-1 min-w-0`},Ve={class:`flex items-center gap-1.5 mb-0.5`},He={class:`truncate font-medium text-sm`},Ue={class:`text-[11px] text-muted-foreground`},We={class:`space-y-1`},Ge={class:`px-2 py-1.5 text-xs font-semibold text-muted-foreground`},Ke={class:`flex items-start gap-2 w-full min-w-0`},qe={class:`flex-1 min-w-0`},Je={class:`truncate font-medium text-sm mb-0.5`},Ye={class:`text-[11px] text-muted-foreground`},Xe={class:`space-y-2`},Ze={class:`w-8 sm:w-12 text-center`},Qe={class:`flex-1 min-w-0`},$e={key:0,class:`space-y-1`},et={class:`flex flex-col sm:flex-row sm:items-center gap-1 sm:gap-2`},tt={class:`flex items-baseline gap-1.5 min-w-0`},nt={class:`font-semibold text-sm sm:text-base truncate`},rt={class:`text-xs text-muted-foreground whitespace-nowrap flex-shrink-0 sm:hidden`},it={class:`flex items-center gap-2 flex-wrap`},at={class:`hidden sm:inline`},ot={class:`space-y-2`},st={class:`text-xs font-semibold text-amber-700 dark:text-amber-400`},ct={class:`space-y-1 text-xs`},lt={class:`flex items-center gap-2`},ut={class:`text-muted-foreground`},dt={class:`font-medium`},ft={class:`flex items-center gap-2`},pt={class:`text-muted-foreground`},mt={class:`font-medium`},ht={class:`text-xs text-muted-foreground hidden sm:block`},gt={key:0,class:`text-xs`},_t={class:`text-muted-foreground`},vt={key:1,class:`space-y-1`},yt={class:`text-sm text-muted-foreground`},bt={class:`space-y-2`},xt={class:`text-xs font-semibold text-amber-700 dark:text-amber-400`},St={class:`space-y-1 text-xs`},Ct={class:`flex items-center gap-2`},wt={class:`text-muted-foreground`},Tt={class:`font-medium`},Et={class:`flex items-center gap-2`},Dt={class:`text-muted-foreground`},Ot={class:`font-medium`},kt={class:`flex gap-1 sm:gap-2 flex-shrink-0`},A=re({__name:`GalaxyView`,setup(re){let A=Se(),At=be(),j=Te(),M=ae(),N=ie(),{t:P}=pe(),F=a(!1),jt=a(``),Mt=a(``),I=a(null),L=a(1),R=a(1),z=a(1),B=a(1),V=a(void 0),H=i(()=>V.value&&j.npcs.find(e=>e.id===V.value)||null),U=a([]),W=i(()=>A.player.planets.find(e=>!e.isMoon)),Nt=i(()=>A.player.planets.filter(e=>!e.isMoon)),G=i(()=>W.value?z.value===W.value.position.galaxy&&B.value===W.value.position.system:!1);te(()=>{N.query.highlightNpc&&(V.value=N.query.highlightNpc);let e=N.query.galaxy?Number(N.query.galaxy):null,t=N.query.system?Number(N.query.system):null;e&&t?(z.value=e,B.value=t,L.value=e,R.value=t,q(),Ft()):A.currentPlanet&&(z.value=A.currentPlanet.position.galaxy,B.value=A.currentPlanet.position.system,L.value=z.value,R.value=B.value,q())});let Pt=(e,t)=>ne(e,t).map(n=>{let r=ee(e,t,n.position),i=A.player.planets.find(r=>r.position.galaxy===e&&r.position.system===t&&r.position.position===n.position)||At.planets[r]||null;return{position:n.position,planet:i}}),K=(e,t,n)=>{let r=`debris_${e}_${t}_${n}`;return At.debrisFields[r]||null},Ft=()=>{(N.query.highlightNpc||N.query.galaxy||N.query.system)&&M.replace({query:{}})},q=()=>{z.value=L.value,B.value=R.value,U.value=Pt(z.value,B.value)},It=e=>{z.value=e.position.galaxy,B.value=e.position.system,L.value=z.value,R.value=B.value,U.value=Pt(z.value,B.value)},J=e=>e?e.ownerId===A.player.id:!1,Y=e=>{if(!e||!V.value)return!1;let t=j.npcs.find(e=>e.id===V.value);return t?t.planets.some(t=>t.id===e.id):!1},X=e=>!e||J(e)?null:j.npcs.find(t=>t.planets.some(t=>t.position.galaxy===e.position.galaxy&&t.position.system===e.position.system&&t.position.position===e.position.position)),Z=e=>{let t=X(e);return t?A.player.diplomaticRelations?.[t.id]:null},Lt=e=>{let t=Z(e);if(!t)return`secondary`;switch(t.status){case _.Friendly:return`default`;case _.Hostile:return`destructive`;default:return`secondary`}},Rt=e=>{let t=Z(e);if(!t)return P(`diplomacy.status.neutral`);switch(t.status){case _.Friendly:return P(`diplomacy.status.friendly`);case _.Hostile:return P(`diplomacy.status.hostile`);default:return P(`diplomacy.status.neutral`)}},Q=e=>Z(e)?.reputation??null,zt=e=>e===null?`text-muted-foreground`:e>=20?`text-green-600 dark:text-green-400`:e<=-20?`text-red-600 dark:text-red-400`:`text-muted-foreground`,Bt=e=>{A.currentPlanetId=e,M.push(`/`)},Vt=()=>{I.value&&I.value(),F.value=!1},$=(e,t,n)=>{let r=e?e.position:{galaxy:z.value,system:B.value,position:n},i=`${r.galaxy}:${r.system}:${r.position}`,a=``,o=``;t===`spy`?(o=P(`galaxyView.scoutPlanetTitle`),a=P(`galaxyView.scoutPlanetMessage`).replace(`{coordinates}`,i)):t===`attack`?(o=P(`galaxyView.attackPlanetTitle`),a=P(`galaxyView.attackPlanetMessage`).replace(`{coordinates}`,i)):t===`colonize`?(o=P(`galaxyView.colonizePlanetTitle`),a=P(`galaxyView.colonizePlanetMessage`).replace(`{coordinates}`,i)):t===`recycle`?(o=P(`galaxyView.recyclePlanetTitle`),a=P(`galaxyView.recyclePlanetMessage`).replace(`{coordinates}`,i)):t===`gift`&&(o=P(`galaxyView.giftPlanetTitle`),a=P(`galaxyView.giftPlanetMessage`).replace(`{coordinates}`,i)),jt.value=o,Mt.value=a,I.value=()=>{M.push({path:`/fleet`,query:{galaxy:r.galaxy,system:r.system,position:r.position,mission:t===`gift`?void 0:t,gift:t===`gift`?`1`:void 0}})},F.value=!0};return(i,a)=>(p(),o(`div`,Ne,[l(`h1`,Pe,s(n(P)(`galaxyView.title`)),1),d(n(ge),null,{default:t(()=>[d(n(De),null,{default:t(()=>[d(n(me),null,{default:t(()=>[e(s(n(P)(`galaxyView.selectCoordinates`)),1)]),_:1})]),_:1}),d(n(Oe),null,{default:t(()=>[l(`div`,{class:m([`grid gap-3 sm:gap-4`,H.value?`grid-cols-2 sm:grid-cols-4`:G.value?`grid-cols-2`:`grid-cols-2 sm:grid-cols-3`])},[l(`div`,Fe,[d(n(D),{for:`select-galaxy`,class:`text-xs sm:text-sm`},{default:t(()=>[e(s(n(P)(`galaxyView.galaxy`)),1)]),_:1}),(p(),c(n(k),{key:n(A).locale,"model-value":String(L.value),modal:!1,"onUpdate:modelValue":a[0]||=e=>{L.value=Number(e),q()}},{default:t(()=>[d(n(Ae),{id:`select-galaxy`,class:`w-full`},{default:t(()=>[d(n(Me),{placeholder:n(P)(`galaxyView.selectGalaxy`)},null,8,[`placeholder`])]),_:1}),d(n(ke),{position:`popper`},{default:t(()=>[(p(),o(r,null,f(9,r=>d(n(je),{key:r,value:String(r)},{default:t(()=>[e(s(n(P)(`galaxyView.galaxy`))+` `+s(r),1)]),_:2},1032,[`value`])),64))]),_:1})]),_:1},8,[`model-value`]))]),l(`div`,Ie,[d(n(D),{for:`select-system`,class:`text-xs sm:text-sm`},{default:t(()=>[e(s(n(P)(`galaxyView.system`)),1)]),_:1}),(p(),c(n(k),{key:`${n(A).locale}-system`,"model-value":String(R.value),modal:!1,"onUpdate:modelValue":a[1]||=e=>{R.value=Number(e),q()}},{default:t(()=>[d(n(Ae),{id:`select-system`,class:`w-full`},{default:t(()=>[d(n(Me),{placeholder:n(P)(`galaxyView.selectSystem`)},null,8,[`placeholder`])]),_:1}),d(n(ke),{position:`popper`},{default:t(()=>[(p(),o(r,null,f(10,r=>d(n(je),{key:r,value:String(r)},{default:t(()=>[e(s(n(P)(`galaxyView.system`))+` `+s(r),1)]),_:2},1032,[`value`])),64))]),_:1})]),_:1},8,[`model-value`]))]),G.value?u(``,!0):(p(),o(`div`,{key:0,class:m([H.value?``:`col-span-2 sm:col-span-1`,`space-y-2`])},[d(n(D),{class:`text-xs sm:text-sm opacity-0`},{default:t(()=>[e(s(n(P)(`galaxyView.myPlanets`)),1)]),_:1}),d(n(v),null,{default:t(()=>[d(n(w),{"as-child":``},{default:t(()=>[d(n(T),{variant:`outline`,class:`w-full`},{default:t(()=>[d(n(ue),{class:`h-4 w-4 mr-2`}),e(` `+s(n(P)(`galaxyView.myPlanets`)),1)]),_:1})]),_:1}),d(n(O),{class:`w-72 p-2`,align:`start`},{default:t(()=>[l(`div`,Le,[l(`div`,Re,s(n(P)(`galaxyView.selectPlanetToView`)),1),(p(!0),o(r,null,f(Nt.value,r=>(p(),c(n(T),{key:r.id,onClick:e=>It(r),disabled:r.position.galaxy===z.value&&r.position.system===B.value,variant:`ghost`,class:m([`w-full justify-start h-auto py-2 px-2 text-left`,r.position.galaxy===z.value&&r.position.system===B.value&&`bg-blue-100 dark:bg-blue-950/50 border border-blue-400 dark:border-blue-600`]),size:`sm`},{default:t(()=>[l(`div`,ze,[d(n(h),{class:`h-4 w-4 flex-shrink-0 mt-0.5`}),l(`div`,Be,[l(`div`,Ve,[l(`span`,He,s(r.name),1),r.isMoon?(p(),c(n(b),{key:0,variant:`outline`,class:`text-[10px] px-1 py-0 h-4`},{default:t(()=>[e(s(n(P)(`planet.moon`)),1)]),_:1})):u(``,!0)]),l(`div`,Ue,` [`+s(r.position.galaxy)+`:`+s(r.position.system)+`:`+s(r.position.position)+`] `,1)])])]),_:2},1032,[`onClick`,`disabled`,`class`]))),128))])]),_:1})]),_:1})],2)),H.value?(p(),o(`div`,{key:1,class:m([G.value?`col-span-2 sm:col-span-2`:``,`space-y-2`])},[d(n(D),{class:`text-xs sm:text-sm opacity-0`},{default:t(()=>[e(s(n(P)(`galaxyView.npcPlanets`)),1)]),_:1}),d(n(v),null,{default:t(()=>[d(n(w),{"as-child":``},{default:t(()=>[d(n(T),{variant:`outline`,class:`w-full border-yellow-400 dark:border-yellow-600`},{default:t(()=>[d(n(h),{class:`h-4 w-4 mr-2`}),e(` `+s(H.value.name)+` (`+s(H.value.planets.length)+`) `,1)]),_:1})]),_:1}),d(n(O),{class:`w-72 p-2`,align:`start`},{default:t(()=>[l(`div`,We,[l(`div`,Ge,s(n(P)(`galaxyView.selectPlanetToView`)),1),(p(!0),o(r,null,f(H.value.planets,e=>(p(),c(n(T),{key:e.id,onClick:t=>It(e),disabled:e.position.galaxy===z.value&&e.position.system===B.value,variant:`ghost`,class:m([`w-full justify-start h-auto py-2 px-2 text-left`,e.position.galaxy===z.value&&e.position.system===B.value&&`bg-yellow-100 dark:bg-yellow-950/50 border border-yellow-400 dark:border-yellow-600`]),size:`sm`},{default:t(()=>[l(`div`,Ke,[d(n(h),{class:`h-4 w-4 flex-shrink-0 mt-0.5`}),l(`div`,qe,[l(`div`,Je,s(e.name),1),l(`div`,Ye,` [`+s(e.position.galaxy)+`:`+s(e.position.system)+`:`+s(e.position.position)+`] `,1)])])]),_:2},1032,[`onClick`,`disabled`,`class`]))),128))])]),_:1})]),_:1})],2)):u(``,!0)],2)]),_:1})]),_:1}),d(n(ge),null,{default:t(()=>[d(n(De),null,{default:t(()=>[d(n(me),null,{default:t(()=>[e(s(n(P)(`galaxyView.galaxy`))+` `+s(z.value)+`:`+s(B.value),1)]),_:1}),d(n(fe),null,{default:t(()=>[e(s(n(P)(`galaxyView.totalPositions`)),1)]),_:1})]),_:1}),d(n(Oe),null,{default:t(()=>[l(`div`,Xe,[(p(!0),o(r,null,f(U.value,r=>(p(),o(`div`,{key:r.position,class:m([`flex items-center gap-2 sm:gap-4 p-2 sm:p-3 border rounded-lg hover:bg-muted/50 transition-colors`,{"bg-muted/30":!r.planet,"bg-blue-50 dark:bg-blue-950 border-blue-300 dark:border-blue-700":r.planet&&J(r.planet),"bg-yellow-50 dark:bg-yellow-950/30 border-yellow-400 dark:border-yellow-600 ring-2 ring-yellow-400 dark:ring-yellow-500":r.planet&&Y(r.planet)&&!J(r.planet),"bg-green-50 dark:bg-green-950/30 border-green-300 dark:border-green-700":r.planet&&!J(r.planet)&&!Y(r.planet)&&Z(r.planet)?.status===n(_).Friendly,"bg-red-50 dark:bg-red-950/30 border-red-300 dark:border-red-700":r.planet&&!J(r.planet)&&!Y(r.planet)&&Z(r.planet)?.status===n(_).Hostile,"bg-gray-50 dark:bg-gray-950/30 border-gray-300 dark:border-gray-700":r.planet&&!J(r.planet)&&!Y(r.planet)&&X(r.planet)&&(!Z(r.planet)||Z(r.planet)?.status===n(_).Neutral)}])},[l(`div`,Ze,[d(n(b),{variant:`outline`,class:`text-xs sm:text-sm`},{default:t(()=>[e(s(r.position),1)]),_:2},1024)]),l(`div`,Qe,[r.planet?(p(),o(`div`,$e,[l(`div`,et,[l(`div`,tt,[l(`h3`,nt,s(r.planet.name),1),l(`span`,rt,` [`+s(r.planet.position.galaxy)+`:`+s(r.planet.position.system)+`:`+s(r.planet.position.position)+`] `,1)]),l(`div`,it,[J(r.planet)?(p(),c(n(b),{key:0,variant:`default`,class:`text-xs`},{default:t(()=>[e(s(n(P)(`galaxyView.mine`)),1)]),_:1})):(p(),c(n(b),{key:1,variant:Lt(r.planet),class:`text-xs`},{default:t(()=>[e(s(Rt(r.planet)),1)]),_:2},1032,[`variant`])),K(z.value,B.value,r.position)?(p(),c(n(v),{key:2},{default:t(()=>[d(n(w),{"as-child":``},{default:t(()=>[d(n(b),{variant:`outline`,class:`text-xs cursor-pointer hover:bg-amber-50 dark:hover:bg-amber-950/30 border-amber-300 dark:border-amber-700 text-amber-700 dark:text-amber-400 gap-1`},{default:t(()=>[d(n(g),{class:`h-3 w-3`}),l(`span`,at,s(n(P)(`galaxyView.debris`)),1)]),_:1})]),_:1}),d(n(O),{class:`w-auto p-3`,side:`top`,align:`start`},{default:t(()=>[l(`div`,ot,[l(`p`,st,s(n(P)(`galaxyView.debrisField`)),1),l(`div`,ct,[l(`div`,lt,[d(S,{type:`metal`,size:`sm`}),l(`span`,ut,s(n(P)(`resources.metal`))+`:`,1),l(`span`,dt,s(n(E)(K(z.value,B.value,r.position).resources.metal)),1)]),l(`div`,ft,[d(S,{type:`crystal`,size:`sm`}),l(`span`,pt,s(n(P)(`resources.crystal`))+`:`,1),l(`span`,mt,s(n(E)(K(z.value,B.value,r.position).resources.crystal)),1)])])])]),_:2},1024)]),_:2},1024)):u(``,!0)])]),l(`p`,ht,` [`+s(r.planet.position.galaxy)+`:`+s(r.planet.position.system)+`:`+s(r.planet.position.position)+`] `,1),!J(r.planet)&&Q(r.planet)!==null?(p(),o(`div`,gt,[l(`span`,_t,s(n(P)(`diplomacy.reputation`))+`:`,1),l(`span`,{class:m([`ml-1 font-semibold`,zt(Q(r.planet))])},s(Q(r.planet)>0?`+`:``)+s(Q(r.planet)),3)])):u(``,!0)])):(p(),o(`div`,vt,[l(`div`,yt,s(n(P)(`galaxyView.emptySlot`)),1),K(z.value,B.value,r.position)?(p(),c(n(v),{key:0},{default:t(()=>[d(n(w),{"as-child":``},{default:t(()=>[d(n(b),{variant:`outline`,class:`text-xs cursor-pointer hover:bg-amber-50 dark:hover:bg-amber-950/30 border-amber-300 dark:border-amber-700 text-amber-700 dark:text-amber-400 gap-1 inline-flex`},{default:t(()=>[d(n(g),{class:`h-3 w-3`}),l(`span`,null,s(n(P)(`galaxyView.debris`)),1)]),_:1})]),_:1}),d(n(O),{class:`w-auto p-3`,side:`top`,align:`start`},{default:t(()=>[l(`div`,bt,[l(`p`,xt,s(n(P)(`galaxyView.debrisField`)),1),l(`div`,St,[l(`div`,Ct,[d(S,{type:`metal`,size:`sm`}),l(`span`,wt,s(n(P)(`resources.metal`))+`:`,1),l(`span`,Tt,s(n(E)(K(z.value,B.value,r.position).resources.metal)),1)]),l(`div`,Et,[d(S,{type:`crystal`,size:`sm`}),l(`span`,Dt,s(n(P)(`resources.crystal`))+`:`,1),l(`span`,Ot,s(n(E)(K(z.value,B.value,r.position).resources.crystal)),1)])])])]),_:2},1024)]),_:2},1024)):u(``,!0)]))]),l(`div`,kt,[d(n(de),{"delay-duration":300},{default:t(()=>[r.planet&&!J(r.planet)?(p(),c(n(x),{key:0},{default:t(()=>[d(n(C),{"as-child":``},{default:t(()=>[d(n(T),{onClick:e=>$(r.planet,`spy`),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:t(()=>[d(n(oe),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`])]),_:2},1024),d(n(y),null,{default:t(()=>[l(`p`,null,s(n(P)(`galaxyView.scout`)),1)]),_:1})]),_:2},1024)):u(``,!0),r.planet&&!J(r.planet)?(p(),c(n(x),{key:1},{default:t(()=>[d(n(C),{"as-child":``},{default:t(()=>[d(n(T),{onClick:e=>$(r.planet,`attack`),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:t(()=>[d(n(le),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`])]),_:2},1024),d(n(y),null,{default:t(()=>[l(`p`,null,s(n(P)(`galaxyView.attack`)),1)]),_:1})]),_:2},1024)):u(``,!0),r.planet&&!J(r.planet)&&X(r.planet)?(p(),c(n(x),{key:2},{default:t(()=>[d(n(C),{"as-child":``},{default:t(()=>[d(n(T),{onClick:e=>$(r.planet,`gift`),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:t(()=>[d(n(se),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`])]),_:2},1024),d(n(y),null,{default:t(()=>[l(`p`,null,s(n(P)(`galaxyView.sendGift`)),1)]),_:1})]),_:2},1024)):u(``,!0),r.planet?u(``,!0):(p(),c(n(x),{key:3},{default:t(()=>[d(n(C),{"as-child":``},{default:t(()=>[d(n(T),{onClick:e=>$(null,`colonize`,r.position),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:t(()=>[d(n(ce),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`])]),_:2},1024),d(n(y),null,{default:t(()=>[l(`p`,null,s(n(P)(`galaxyView.colonize`)),1)]),_:1})]),_:2},1024)),r.planet&&J(r.planet)?(p(),c(n(x),{key:4},{default:t(()=>[d(n(C),{"as-child":``},{default:t(()=>[d(n(T),{onClick:e=>Bt(r.planet.id),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:t(()=>[d(n(ue),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`])]),_:2},1024),d(n(y),null,{default:t(()=>[l(`p`,null,s(n(P)(`galaxyView.switch`)),1)]),_:1})]),_:2},1024)):u(``,!0),K(z.value,B.value,r.position)?(p(),c(n(x),{key:5},{default:t(()=>[d(n(C),{"as-child":``},{default:t(()=>[d(n(T),{onClick:e=>$(r.planet,`recycle`,r.position),variant:`outline`,size:`sm`,class:`h-8 w-8 p-0`},{default:t(()=>[d(n(g),{class:`h-3 w-3 sm:h-4 sm:w-4`})]),_:1},8,[`onClick`])]),_:2},1024),d(n(y),null,{default:t(()=>[l(`p`,null,s(n(P)(`galaxyView.recycle`)),1)]),_:1})]),_:2},1024)):u(``,!0)]),_:2},1024)])],2))),128))])]),_:1})]),_:1}),d(n(Ee),{open:F.value,"onUpdate:open":a[2]||=e=>F.value=e},{default:t(()=>[d(n(we),null,{default:t(()=>[d(n(ve),null,{default:t(()=>[d(n(Ce),null,{default:t(()=>[e(s(jt.value),1)]),_:1}),d(n(xe),{class:`whitespace-pre-line`},{default:t(()=>[e(s(Mt.value),1)]),_:1})]),_:1}),d(n(he),null,{default:t(()=>[d(n(_e),null,{default:t(()=>[e(s(n(P)(`common.cancel`)),1)]),_:1}),d(n(ye),{onClick:Vt},{default:t(()=>[e(s(n(P)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{A as default}; \ No newline at end of file diff --git a/docs/assets/MessagesView-Czwj26_i.js b/docs/assets/MessagesView-Czwj26_i.js deleted file mode 100644 index 4242f56..0000000 --- a/docs/assets/MessagesView-Czwj26_i.js +++ /dev/null @@ -1 +0,0 @@ -import{$t as e,Cn as t,En as n,Gn as r,Gt as i,J as a,Jt as o,Ln as s,Qt as c,Ut as l,Xn as u,Xt as d,Yt as f,Z as p,Zt as m,en as h,gn as g,mn as _,qn as v,tn as y,vn as b}from"./game-logic-Bi1l7y4K.js";import"./vendor-pinia-DqhKuBjp.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-Dr0JspcV.js";import"./vendor-others-DTUzJ7S-.js";import"./vendor-reka-ui-BEHIKScj.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CJcfYqoW.js";import{L as x,P as ee,S,Y as C,c as w,n as T,o as te,q as ne,r as re,v as ie}from"./vendor-icons-z9V6Jdbh.js";import"./TooltipProvider-BwjgS8_x.js";import{t as E}from"./CardDescription-BSLS07AU.js";import{m as D}from"./game-config-CG6z6nnH.js";import{A as O,H as k,K as ae,M as A,N as j,O as M,W as N,_ as P,b as F,d as I,f as L,j as R,k as z,q as oe,t as se,v as B,y as V}from"./index-BT5w6et-.js";import{t as H}from"./useGameConfig-b98LOtBY.js";import{i as ce,n as le,r as U,t as ue}from"./TabsTrigger-DrosU7aN.js";import{t as de}from"./BattleReportDialog-CGjL16c6.js";var W={key:0,class:`space-y-4`},G={class:`p-3 bg-muted rounded-lg`},K={class:`text-sm font-medium mb-2`},q={class:`text-xs text-muted-foreground`},J={class:`text-sm font-medium mb-2`},Y={class:`flex flex-wrap gap-3 text-xs sm:text-sm`},fe={class:`flex items-center gap-1`},pe={class:`flex items-center gap-1`},me={class:`flex items-center gap-1`},he={class:`flex items-center gap-1`},ge={key:0},_e={class:`text-sm font-medium mb-2`},ve={class:`grid grid-cols-2 sm:grid-cols-3 gap-2 text-xs sm:text-sm`},ye={class:`text-muted-foreground`},X={class:`ml-1 font-medium`},Z={key:1},Q={class:`text-sm font-medium mb-2`},be={class:`grid grid-cols-2 sm:grid-cols-3 gap-2 text-xs sm:text-sm`},xe={key:0,class:`block`},Se={class:`text-muted-foreground`},Ce={class:`ml-1 font-medium`},we={key:2},Te={class:`text-sm font-medium mb-2`},Ee={class:`grid grid-cols-2 sm:grid-cols-3 gap-2 text-xs sm:text-sm`},De={class:`text-muted-foreground`},Oe={class:`ml-1 font-medium`},ke=y({__name:`SpyReportDialog`,props:{report:{},open:{type:Boolean}},emits:[`update:open`],setup(a,{emit:o}){let l=a,p=o,{t:v}=ae(),{SHIPS:y,DEFENSES:b,BUILDINGS:ee}=H(),S=s(l.open);t(()=>l.open,e=>{S.value=e}),t(S,e=>{p(`update:open`,e)});let C=e=>e?Object.values(e).some(e=>e>0):!1;return(t,o)=>(_(),d(r(A),{open:S.value,"onUpdate:open":o[0]||=e=>S.value=e},{default:n(()=>[h(r(z),{"container-class":`sm:max-w-2xl max-h-[90vh]`},{header:n(()=>[h(r(O),null,{default:n(()=>[h(r(M),{class:`flex items-center gap-2`},{default:n(()=>[h(r(x),{class:`h-5 w-5`}),e(` `+u(r(v)(`messagesView.spyReport`)),1)]),_:1}),a.report?(_(),d(r(R),{key:0},{default:n(()=>[e(u(r(I)(a.report.timestamp)),1)]),_:1})):m(``,!0)]),_:1})]),default:n(()=>[a.report?(_(),c(`div`,W,[f(`div`,G,[f(`p`,K,u(r(v)(`messagesView.targetPlanet`)),1),f(`p`,q,u(a.report.targetPlanetName)+` [`+u(a.report.targetPosition.galaxy)+`:`+u(a.report.targetPosition.system)+`:`+u(a.report.targetPosition.position)+`] `,1)]),f(`div`,null,[f(`p`,J,u(r(v)(`messagesView.resources`))+`:`,1),f(`div`,Y,[f(`span`,fe,[h(j,{type:`metal`,size:`sm`}),e(` `+u(r(L)(a.report.resources.metal)),1)]),f(`span`,pe,[h(j,{type:`crystal`,size:`sm`}),e(` `+u(r(L)(a.report.resources.crystal)),1)]),f(`span`,me,[h(j,{type:`deuterium`,size:`sm`}),e(` `+u(r(L)(a.report.resources.deuterium)),1)]),f(`span`,he,[h(j,{type:`darkMatter`,size:`sm`}),e(` `+u(r(L)(a.report.resources.darkMatter)),1)])])]),a.report.fleet&&Object.keys(a.report.fleet).length>0?(_(),c(`div`,ge,[f(`p`,_e,u(r(v)(`messagesView.fleet`))+`:`,1),f(`div`,ve,[(_(!0),c(i,null,g(a.report.fleet,(e,t)=>(_(),c(`div`,{key:t},[f(`span`,ye,u(r(y)[t].name)+`:`,1),f(`span`,X,u(e),1)]))),128))])])):m(``,!0),a.report.defense&&C(a.report.defense)?(_(),c(`div`,Z,[f(`p`,Q,u(r(v)(`messagesView.defense`))+`:`,1),f(`div`,be,[(_(!0),c(i,null,g(a.report.defense,(e,t)=>(_(),c(`div`,{key:t},[e&&e>0?(_(),c(`span`,xe,[f(`span`,Se,u(r(b)[t].name)+`:`,1),f(`span`,Ce,u(e),1)])):m(``,!0)]))),128))])])):m(``,!0),a.report.buildings&&Object.keys(a.report.buildings).length>0?(_(),c(`div`,we,[f(`p`,Te,u(r(v)(`messagesView.buildings`))+`:`,1),f(`div`,Ee,[(_(!0),c(i,null,g(a.report.buildings,(e,t)=>(_(),c(`div`,{key:t},[f(`span`,De,u(r(ee)[t].name)+`:`,1),f(`span`,Oe,`Lv.`+u(e),1)]))),128))])])):m(``,!0)])):m(``,!0)]),_:1})]),_:1},8,[`open`]))}}),Ae={class:`container mx-auto p-4 sm:p-6 space-y-6`},je={class:`text-2xl sm:text-3xl font-bold`},Me={class:`text-xs sm:text-sm truncate`},Ne={class:`flex justify-between items-center gap-2`},Pe={class:`flex items-center gap-2 min-w-0 flex-1`},Fe={class:`flex justify-between items-center gap-2`},Ie={class:`flex items-center gap-2 min-w-0 flex-1`},Le={class:`flex justify-between items-center gap-2`},Re={class:`flex items-center gap-2 min-w-0 flex-1`},ze={class:`flex justify-between items-center gap-2`},Be={class:`flex items-center gap-2 min-w-0 flex-1`},Ve={class:`flex justify-between items-center gap-2`},He={class:`flex items-center gap-2 min-w-0 flex-1`},Ue={class:`space-y-3`},We={class:`text-sm`},Ge={class:`font-semibold mb-1`},Ke={class:`grid grid-cols-3 gap-2`},qe={key:0},Je={key:1},Ye={key:2},Xe={class:`text-xs text-muted-foreground`},Ze={class:`text-green-600`},Qe={class:`flex gap-2`},$e={class:`flex justify-between items-center gap-2`},et={class:`flex items-center gap-2 min-w-0 flex-1`},tt={class:`space-y-2`},nt={class:`text-sm`},rt={class:`font-semibold mb-1`},it={class:`grid grid-cols-3 gap-2`},at={key:0},ot={key:1},st={key:2},ct={class:`text-xs text-muted-foreground`},lt={class:`text-xs text-muted-foreground`},ut={class:`flex justify-between items-center gap-2`},dt={class:`flex items-center gap-2 min-w-0 flex-1`},$=y({__name:`MessagesView`,setup(t){let y=oe(),O=se(),{t:A}=ae(),j=s(`battles`),M=s(!1),L=s(!1),R=s(null),z=s(null),H=o(()=>[...y.player.battleReports].sort((e,t)=>t.timestamp-e.timestamp)),W=o(()=>[...y.player.spyReports].sort((e,t)=>t.timestamp-e.timestamp)),G=o(()=>y.player.spiedNotifications?[...y.player.spiedNotifications].sort((e,t)=>t.timestamp-e.timestamp):[]),K=o(()=>y.player.missionReports?[...y.player.missionReports].sort((e,t)=>t.timestamp-e.timestamp):[]),q=o(()=>y.player.npcActivityNotifications?[...y.player.npcActivityNotifications].sort((e,t)=>t.timestamp-e.timestamp):[]),J=o(()=>y.player.battleReports.filter(e=>!e.read).length),Y=o(()=>y.player.spyReports.filter(e=>!e.read).length),fe=o(()=>y.player.spiedNotifications?y.player.spiedNotifications.filter(e=>!e.read).length:0),pe=o(()=>y.player.npcActivityNotifications?y.player.npcActivityNotifications.filter(e=>!e.read).length:0),me=o(()=>y.player.missionReports?y.player.missionReports.filter(e=>!e.read).length:0),he=o(()=>y.player.giftNotifications?y.player.giftNotifications.filter(e=>!e.read).length:0),ge=o(()=>y.player.giftRejectedNotifications?y.player.giftRejectedNotifications.filter(e=>!e.read).length:0),_e=o(()=>Y.value+fe.value),ve=o(()=>pe.value+he.value+ge.value),ye=o(()=>[{value:`battles`,icon:w,label:A(`messagesView.battles`),unreadCount:J.value},{value:`spy`,icon:x,label:A(`messagesView.spy`),unreadCount:_e.value},{value:`missions`,icon:S,label:A(`messagesView.missions`),unreadCount:me.value},{value:`npc`,icon:re,label:A(`messagesView.npc`),unreadCount:ve.value}]),X=o(()=>y.player.giftNotifications?[...y.player.giftNotifications].sort((e,t)=>t.timestamp-e.timestamp):[]),Z=o(()=>y.player.giftRejectedNotifications?[...y.player.giftRejectedNotifications].sort((e,t)=>t.timestamp-e.timestamp):[]),Q=e=>e.winner===`draw`?`secondary`:(e.attackerId===y.player.id?e.winner===`attacker`:e.winner===`defender`)?`default`:`destructive`,be=e=>e.winner===`draw`?A(`messagesView.draw`):(e.attackerId===y.player.id?e.winner===`attacker`:e.winner===`defender`)?A(`messagesView.victory`):A(`messagesView.defeat`),xe=e=>{R.value=e,M.value=!0,e.read||=!0},Se=e=>{z.value=e,L.value=!0,e.read||=!0},Ce=e=>{e.read||=!0},we=e=>{let t=y.player.battleReports.findIndex(t=>t.id===e);t>-1&&y.player.battleReports.splice(t,1)},Te=e=>{let t=y.player.spyReports.findIndex(t=>t.id===e);t>-1&&y.player.spyReports.splice(t,1)},Ee=e=>{if(!y.player.spiedNotifications)return;let t=y.player.spiedNotifications.findIndex(t=>t.id===e);t>-1&&y.player.spiedNotifications.splice(t,1)},De=e=>{e.read||=!0},Oe=e=>{if(!y.player.npcActivityNotifications)return;let t=y.player.npcActivityNotifications.findIndex(t=>t.id===e);t>-1&&y.player.npcActivityNotifications.splice(t,1)},$=e=>({[D.Transport]:A(`fleetView.transport`),[D.Colonize]:A(`fleetView.colonize`),[D.Deploy]:A(`fleetView.deploy`),[D.Recycle]:A(`fleetView.recycle`),[D.Destroy]:A(`fleetView.destroy`)})[e]||e,ft=e=>{e.read||=!0},pt=e=>{if(!y.player.missionReports)return;let t=y.player.missionReports.findIndex(t=>t.id===e);t>-1&&y.player.missionReports.splice(t,1)},mt=e=>{e.read||=!0},ht=e=>{let t=O.npcs.find(t=>t.id===e.fromNpcId);t&&a(y.player,t,e)},gt=e=>{let t=O.npcs.find(t=>t.id===e.fromNpcId);t&&p(y.player,t,e)},_t=e=>{if(!y.player.giftNotifications)return;let t=y.player.giftNotifications.findIndex(t=>t.id===e);t>-1&&y.player.giftNotifications.splice(t,1)},vt=e=>{e.read||=!0},yt=e=>{if(!y.player.giftRejectedNotifications)return;let t=y.player.giftRejectedNotifications.findIndex(t=>t.id===e);t>-1&&y.player.giftRejectedNotifications.splice(t,1)};return(t,a)=>(_(),c(`div`,Ae,[f(`h1`,je,u(r(A)(`messagesView.title`)),1),h(r(ce),{modelValue:j.value,"onUpdate:modelValue":a[0]||=e=>j.value=e,class:`w-full`},{default:n(()=>[h(r(le),{class:`grid w-full grid-cols-2 sm:grid-cols-4`,"tab-count":4},{default:n(()=>[(_(!0),c(i,null,g(ye.value,t=>(_(),d(r(ue),{key:t.value,value:t.value,class:`flex items-center justify-center gap-1 px-2`},{default:n(()=>[(_(),d(b(t.icon),{class:`h-3 w-3 sm:h-4 sm:w-4`})),f(`span`,Me,u(t.label),1),t.unreadCount>0?(_(),d(r(k),{key:0,variant:`destructive`,class:`hidden sm:flex ml-1`},{default:n(()=>[e(u(t.unreadCount),1)]),_:2},1024)):m(``,!0)]),_:2},1032,[`value`]))),128))]),_:1}),h(r(U),{value:`battles`,class:`mt-4 space-y-2`},{default:n(()=>[r(y).player.battleReports.length===0?(_(),d(r(F),{key:0},{default:n(()=>[h(r(V),{class:`py-8 text-center text-muted-foreground`},{default:n(()=>[e(u(r(A)(`messagesView.noBattleReports`)),1)]),_:1})]),_:1})):m(``,!0),(_(!0),c(i,null,g(H.value,t=>(_(),d(r(F),{key:t.id,onClick:e=>xe(t),class:`cursor-pointer hover:shadow-md transition-shadow`},{default:n(()=>[h(r(B),{class:`pb-3`},{default:n(()=>[f(`div`,Ne,[f(`div`,Pe,[h(r(w),{class:`h-4 w-4 flex-shrink-0`}),h(r(P),{class:`text-base sm:text-lg`},{default:n(()=>[e(u(r(A)(`messagesView.battleReport`)),1)]),_:1}),t.read?m(``,!0):(_(),d(r(k),{key:0,variant:`default`,class:`text-xs`},{default:n(()=>[e(u(r(A)(`messagesView.unread`)),1)]),_:1})),h(r(k),{variant:Q(t),class:`text-xs`},{default:n(()=>[e(u(be(t)),1)]),_:2},1032,[`variant`])]),h(r(N),{onClick:l(e=>we(t.id),[`stop`]),variant:`ghost`,size:`icon`,class:`h-8 w-8 flex-shrink-0`},{default:n(()=>[h(r(T),{class:`h-4 w-4`})]),_:1},8,[`onClick`])]),h(r(E),{class:`text-xs sm:text-sm`},{default:n(()=>[e(u(r(I)(t.timestamp)),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1}),h(r(U),{value:`spy`,class:`mt-4 space-y-2`},{default:n(()=>[r(y).player.spyReports.length===0&&G.value.length===0?(_(),d(r(F),{key:0},{default:n(()=>[h(r(V),{class:`py-8 text-center text-muted-foreground`},{default:n(()=>[e(u(r(A)(`messagesView.noSpyReports`)),1)]),_:1})]),_:1})):m(``,!0),(_(!0),c(i,null,g(W.value,t=>(_(),d(r(F),{key:t.id,onClick:e=>Se(t),class:`cursor-pointer hover:shadow-md transition-shadow`},{default:n(()=>[h(r(B),{class:`pb-3`},{default:n(()=>[f(`div`,Fe,[f(`div`,Ie,[h(r(x),{class:`h-4 w-4 flex-shrink-0`}),h(r(P),{class:`text-base sm:text-lg`},{default:n(()=>[e(u(r(A)(`messagesView.spyReport`)),1)]),_:1}),t.read?m(``,!0):(_(),d(r(k),{key:0,variant:`default`,class:`text-xs`},{default:n(()=>[e(u(r(A)(`messagesView.unread`)),1)]),_:1})),h(r(k),{variant:`outline`,class:`text-xs`},{default:n(()=>[e(u(t.targetPlanetId),1)]),_:2},1024)]),h(r(N),{onClick:l(e=>Te(t.id),[`stop`]),variant:`ghost`,size:`icon`,class:`h-8 w-8 flex-shrink-0`},{default:n(()=>[h(r(T),{class:`h-4 w-4`})]),_:1},8,[`onClick`])]),h(r(E),{class:`text-xs sm:text-sm`},{default:n(()=>[e(u(r(I)(t.timestamp)),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,[`onClick`]))),128)),(_(!0),c(i,null,g(G.value,t=>(_(),d(r(F),{key:t.id,onClick:e=>Ce(t),class:`cursor-pointer hover:shadow-md transition-shadow`},{default:n(()=>[h(r(B),{class:`pb-3`},{default:n(()=>[f(`div`,Le,[f(`div`,Re,[h(r(te),{class:`h-4 w-4 flex-shrink-0 text-destructive`}),h(r(P),{class:`text-base sm:text-lg`},{default:n(()=>[e(u(r(A)(`messagesView.spiedNotification`)),1)]),_:1}),t.read?m(``,!0):(_(),d(r(k),{key:0,variant:`default`,class:`text-xs`},{default:n(()=>[e(u(r(A)(`messagesView.unread`)),1)]),_:1})),h(r(k),{variant:t.detectionSuccess?`destructive`:`secondary`,class:`text-xs`},{default:n(()=>[e(u(t.detectionSuccess?r(A)(`messagesView.detected`):r(A)(`messagesView.undetected`)),1)]),_:2},1032,[`variant`])]),h(r(N),{onClick:l(e=>Ee(t.id),[`stop`]),variant:`ghost`,size:`icon`,class:`h-8 w-8 flex-shrink-0`},{default:n(()=>[h(r(T),{class:`h-4 w-4`})]),_:1},8,[`onClick`])]),h(r(E),{class:`text-xs sm:text-sm`},{default:n(()=>[e(u(t.npcName)+` → `+u(t.targetPlanetName)+` · `+u(r(I)(t.timestamp)),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1}),h(r(U),{value:`npc`,class:`mt-4 space-y-2`},{default:n(()=>[q.value.length===0&&X.value.length===0&&Z.value.length===0?(_(),d(r(F),{key:0},{default:n(()=>[h(r(V),{class:`py-8 text-center text-muted-foreground`},{default:n(()=>[e(u(r(A)(`messagesView.noNPCActivity`)),1)]),_:1})]),_:1})):m(``,!0),(_(!0),c(i,null,g(q.value,t=>(_(),d(r(F),{key:t.id,onClick:e=>De(t),class:`cursor-pointer hover:shadow-md transition-shadow`},{default:n(()=>[h(r(B),{class:`pb-3`},{default:n(()=>[f(`div`,ze,[f(`div`,Be,[h(r(ie),{class:`h-4 w-4 flex-shrink-0 text-blue-500`}),h(r(P),{class:`text-base sm:text-lg`},{default:n(()=>[e(u(r(A)(`messagesView.npcRecycleActivity`)),1)]),_:1}),t.read?m(``,!0):(_(),d(r(k),{key:0,variant:`default`,class:`text-xs`},{default:n(()=>[e(u(r(A)(`messagesView.unread`)),1)]),_:1}))]),h(r(N),{onClick:l(e=>Oe(t.id),[`stop`]),variant:`ghost`,size:`icon`,class:`h-8 w-8 flex-shrink-0`},{default:n(()=>[h(r(T),{class:`h-4 w-4`})]),_:1},8,[`onClick`])]),h(r(E),{class:`text-xs sm:text-sm`},{default:n(()=>[e(u(t.npcName)+` → `+u(t.targetPlanetName||`[${t.targetPosition.galaxy}:${t.targetPosition.system}:${t.targetPosition.position}]`)+` · `+u(r(I)(t.timestamp)),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,[`onClick`]))),128)),(_(!0),c(i,null,g(X.value,t=>(_(),d(r(F),{key:t.id,onClick:e=>mt(t),class:`hover:shadow-md transition-shadow`},{default:n(()=>[h(r(B),{class:`pb-3`},{default:n(()=>[f(`div`,Ve,[f(`div`,He,[h(r(ee),{class:`h-4 w-4 flex-shrink-0 text-green-600`}),h(r(P),{class:`text-base sm:text-lg`},{default:n(()=>[e(u(r(A)(`messagesView.giftFrom`).replace(`{npcName}`,t.fromNpcName)),1)]),_:2},1024),t.read?m(``,!0):(_(),d(r(k),{key:0,variant:`default`,class:`text-xs`},{default:n(()=>[e(u(r(A)(`messagesView.unread`)),1)]),_:1}))]),h(r(N),{onClick:l(e=>_t(t.id),[`stop`]),variant:`ghost`,size:`icon`,class:`h-8 w-8 flex-shrink-0`},{default:n(()=>[h(r(T),{class:`h-4 w-4`})]),_:1},8,[`onClick`])]),h(r(E),{class:`text-xs sm:text-sm`},{default:n(()=>[e(u(r(I)(t.timestamp)),1)]),_:2},1024)]),_:2},1024),h(r(V),null,{default:n(()=>[f(`div`,Ue,[f(`div`,We,[f(`div`,Ge,u(r(A)(`messagesView.giftResources`))+`:`,1),f(`div`,Ke,[t.resources.metal>0?(_(),c(`div`,qe,u(r(A)(`resources.metal`))+`: `+u(t.resources.metal.toLocaleString()),1)):m(``,!0),t.resources.crystal>0?(_(),c(`div`,Je,u(r(A)(`resources.crystal`))+`: `+u(t.resources.crystal.toLocaleString()),1)):m(``,!0),t.resources.deuterium>0?(_(),c(`div`,Ye,u(r(A)(`resources.deuterium`))+`: `+u(t.resources.deuterium.toLocaleString()),1)):m(``,!0)])]),f(`div`,Xe,[e(u(r(A)(`messagesView.expectedReputation`))+`: `,1),f(`span`,Ze,`+`+u(t.expectedReputationGain),1)]),f(`div`,Qe,[h(r(N),{onClick:l(e=>ht(t),[`stop`]),variant:`default`,size:`sm`,class:`flex-1`},{default:n(()=>[h(r(ne),{class:`h-4 w-4 mr-1`}),e(` `+u(r(A)(`messagesView.acceptGift`)),1)]),_:1},8,[`onClick`]),h(r(N),{onClick:l(e=>gt(t),[`stop`]),variant:`outline`,size:`sm`,class:`flex-1`},{default:n(()=>[h(r(C),{class:`h-4 w-4 mr-1`}),e(` `+u(r(A)(`messagesView.rejectGift`)),1)]),_:1},8,[`onClick`])])])]),_:2},1024)]),_:2},1032,[`onClick`]))),128)),(_(!0),c(i,null,g(Z.value,t=>(_(),d(r(F),{key:t.id,onClick:e=>vt(t),class:`hover:shadow-md transition-shadow`},{default:n(()=>[h(r(B),{class:`pb-3`},{default:n(()=>[f(`div`,$e,[f(`div`,et,[h(r(C),{class:`h-4 w-4 flex-shrink-0 text-red-600`}),h(r(P),{class:`text-base sm:text-lg`},{default:n(()=>[e(u(r(A)(`messagesView.giftRejectedBy`).replace(`{npcName}`,t.npcName)),1)]),_:2},1024),t.read?m(``,!0):(_(),d(r(k),{key:0,variant:`default`,class:`text-xs`},{default:n(()=>[e(u(r(A)(`messagesView.unread`)),1)]),_:1}))]),h(r(N),{onClick:l(e=>yt(t.id),[`stop`]),variant:`ghost`,size:`icon`,class:`h-8 w-8 flex-shrink-0`},{default:n(()=>[h(r(T),{class:`h-4 w-4`})]),_:1},8,[`onClick`])]),h(r(E),{class:`text-xs sm:text-sm`},{default:n(()=>[e(u(r(I)(t.timestamp)),1)]),_:2},1024)]),_:2},1024),h(r(V),null,{default:n(()=>[f(`div`,tt,[f(`div`,nt,[f(`div`,rt,u(r(A)(`messagesView.rejectedResources`))+`:`,1),f(`div`,it,[t.rejectedResources.metal>0?(_(),c(`div`,at,u(r(A)(`resources.metal`))+`: `+u(t.rejectedResources.metal.toLocaleString()),1)):m(``,!0),t.rejectedResources.crystal>0?(_(),c(`div`,ot,u(r(A)(`resources.crystal`))+`: `+u(t.rejectedResources.crystal.toLocaleString()),1)):m(``,!0),t.rejectedResources.deuterium>0?(_(),c(`div`,st,u(r(A)(`resources.deuterium`))+`: `+u(t.rejectedResources.deuterium.toLocaleString()),1)):m(``,!0)])]),f(`div`,ct,[e(u(r(A)(`messagesView.currentReputation`))+`: `,1),f(`span`,{class:v(t.currentReputation>=0?`text-green-600`:`text-red-600`)},u(t.currentReputation),3)]),f(`div`,lt,u(r(A)(`messagesView.rejectionReason.`+t.reason)),1)])]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1}),h(r(U),{value:`missions`,class:`mt-4 space-y-2`},{default:n(()=>[K.value.length===0?(_(),d(r(F),{key:0},{default:n(()=>[h(r(V),{class:`py-8 text-center text-muted-foreground`},{default:n(()=>[e(u(r(A)(`messagesView.noMissionReports`)),1)]),_:1})]),_:1})):m(``,!0),(_(!0),c(i,null,g(K.value,t=>(_(),d(r(F),{key:t.id,onClick:e=>ft(t),class:`cursor-pointer hover:shadow-md transition-shadow`},{default:n(()=>[h(r(B),{class:`pb-3`},{default:n(()=>[f(`div`,ut,[f(`div`,dt,[h(r(S),{class:`h-4 w-4 flex-shrink-0`}),h(r(P),{class:`text-base sm:text-lg`},{default:n(()=>[e(u($(t.missionType)),1)]),_:2},1024),t.read?m(``,!0):(_(),d(r(k),{key:0,variant:`default`,class:`text-xs`},{default:n(()=>[e(u(r(A)(`messagesView.unread`)),1)]),_:1})),h(r(k),{variant:t.success?`default`:`destructive`,class:`text-xs`},{default:n(()=>[e(u(t.success?r(A)(`messagesView.success`):r(A)(`messagesView.failed`)),1)]),_:2},1032,[`variant`])]),h(r(N),{onClick:l(e=>pt(t.id),[`stop`]),variant:`ghost`,size:`icon`,class:`h-8 w-8 flex-shrink-0`},{default:n(()=>[h(r(T),{class:`h-4 w-4`})]),_:1},8,[`onClick`])]),h(r(E),{class:`text-xs sm:text-sm`},{default:n(()=>[e(u(t.originPlanetName)+` → `+u(t.targetPlanetName||`[${t.targetPosition.galaxy}:${t.targetPosition.system}:${t.targetPosition.position}]`)+` · `+u(r(I)(t.timestamp)),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1})]),_:1},8,[`modelValue`]),h(de,{open:M.value,"onUpdate:open":a[1]||=e=>M.value=e,report:R.value},null,8,[`open`,`report`]),h(ke,{open:L.value,"onUpdate:open":a[2]||=e=>L.value=e,report:z.value},null,8,[`open`,`report`])]))}});export{$ as default}; \ No newline at end of file diff --git a/docs/assets/MessagesView-w53RKU-r.js b/docs/assets/MessagesView-w53RKU-r.js new file mode 100644 index 0000000..b1196a3 --- /dev/null +++ b/docs/assets/MessagesView-w53RKU-r.js @@ -0,0 +1 @@ +import{An as e,En as t,Fn as n,On as r,Rn as i,V as a,W as o,Yn as s,ar as c,cn as l,cr as u,dn as d,fn as f,ln as p,on as m,pn as h,rn as g,rr as _,sn as v,tn as y,un as b}from"./game-logic-BBFCPVtv.js";import"./vendor-pinia-L_8CmDWM.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-BC9uiVvf.js";import"./vendor-others-Bce0hM6h.js";import"./vendor-reka-ui-DR3m_AkV.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-Djj-oRw9.js";import{B as x,L as S,Z as C,b as ee,et as te,i as ne,l as w,n as T,s as re,w as E}from"./vendor-icons-Ccm2_GPI.js";import"./TooltipProvider-Cspoy8HK.js";import{t as D}from"./CardDescription-DduF5EVY.js";import{m as O}from"./game-config-DRP-gbpS.js";import{$ as ie,C as k,E as A,J as j,K as M,L as N,O as P,S as F,X as I,Z as ae,a as L,d as R,f as z,m as B,o as V,p as H,w as U}from"./index-B4KMqZ_y.js";import{t as W}from"./useGameConfig-DLqfPHtW.js";import{i as oe,n as se,r as G,t as ce}from"./TabsTrigger-BnZOhHbD.js";import{t as le}from"./BattleReportDialog-BNULWr3T.js";var K={key:0,class:`space-y-4`},q={class:`p-3 bg-muted rounded-lg`},J={class:`text-sm font-medium mb-2`},Y={class:`text-xs text-muted-foreground`},X={class:`text-sm font-medium mb-2`},ue={class:`flex flex-wrap gap-3 text-xs sm:text-sm`},de={class:`flex items-center gap-1`},fe={class:`flex items-center gap-1`},pe={class:`flex items-center gap-1`},me={class:`flex items-center gap-1`},he={key:0},ge={class:`text-sm font-medium mb-2`},_e={class:`grid grid-cols-2 sm:grid-cols-3 gap-2 text-xs sm:text-sm`},ve={class:`text-muted-foreground`},Z={class:`ml-1 font-medium`},Q={key:1},$={class:`text-sm font-medium mb-2`},ye={class:`grid grid-cols-2 sm:grid-cols-3 gap-2 text-xs sm:text-sm`},be={key:0,class:`block`},xe={class:`text-muted-foreground`},Se={class:`ml-1 font-medium`},Ce={key:2},we={class:`text-sm font-medium mb-2`},Te={class:`grid grid-cols-2 sm:grid-cols-3 gap-2 text-xs sm:text-sm`},Ee={class:`text-muted-foreground`},De={class:`ml-1 font-medium`},Oe=h({__name:`SpyReportDialog`,props:{report:{},open:{type:Boolean}},emits:[`update:open`],setup(e,{emit:a}){let o=e,c=a,{t:m}=I(),{SHIPS:h,DEFENSES:y,BUILDINGS:S}=W(),C=s(o.open);n(()=>o.open,e=>{C.value=e}),n(C,e=>{c(`update:open`,e)});let ee=e=>e?Object.values(e).some(e=>e>0):!1;return(n,a)=>(t(),l(_(P),{open:C.value,"onUpdate:open":a[0]||=e=>C.value=e},{default:i(()=>[f(_(k),{"container-class":`sm:max-w-2xl max-h-[90vh]`},{header:i(()=>[f(_(U),null,{default:i(()=>[f(_(F),{class:`flex items-center gap-2`},{default:i(()=>[f(_(x),{class:`h-5 w-5`}),d(` `+u(_(m)(`messagesView.spyReport`)),1)]),_:1}),e.report?(t(),l(_(A),{key:0},{default:i(()=>[d(u(_(L)(e.report.timestamp)),1)]),_:1})):p(``,!0)]),_:1})]),default:i(()=>[e.report?(t(),b(`div`,K,[v(`div`,q,[v(`p`,J,u(_(m)(`messagesView.targetPlanet`)),1),v(`p`,Y,u(e.report.targetPlanetName)+` [`+u(e.report.targetPosition.galaxy)+`:`+u(e.report.targetPosition.system)+`:`+u(e.report.targetPosition.position)+`] `,1)]),v(`div`,null,[v(`p`,X,u(_(m)(`messagesView.resources`))+`:`,1),v(`div`,ue,[v(`span`,de,[f(N,{type:`metal`,size:`sm`}),d(` `+u(_(V)(e.report.resources.metal)),1)]),v(`span`,fe,[f(N,{type:`crystal`,size:`sm`}),d(` `+u(_(V)(e.report.resources.crystal)),1)]),v(`span`,pe,[f(N,{type:`deuterium`,size:`sm`}),d(` `+u(_(V)(e.report.resources.deuterium)),1)]),v(`span`,me,[f(N,{type:`darkMatter`,size:`sm`}),d(` `+u(_(V)(e.report.resources.darkMatter)),1)])])]),e.report.fleet&&Object.keys(e.report.fleet).length>0?(t(),b(`div`,he,[v(`p`,ge,u(_(m)(`messagesView.fleet`))+`:`,1),v(`div`,_e,[(t(!0),b(g,null,r(e.report.fleet,(e,n)=>(t(),b(`div`,{key:n},[v(`span`,ve,u(_(h)[n].name)+`:`,1),v(`span`,Z,u(e),1)]))),128))])])):p(``,!0),e.report.defense&&ee(e.report.defense)?(t(),b(`div`,Q,[v(`p`,$,u(_(m)(`messagesView.defense`))+`:`,1),v(`div`,ye,[(t(!0),b(g,null,r(e.report.defense,(e,n)=>(t(),b(`div`,{key:n},[e&&e>0?(t(),b(`span`,be,[v(`span`,xe,u(_(y)[n].name)+`:`,1),v(`span`,Se,u(e),1)])):p(``,!0)]))),128))])])):p(``,!0),e.report.buildings&&Object.keys(e.report.buildings).length>0?(t(),b(`div`,Ce,[v(`p`,we,u(_(m)(`messagesView.buildings`))+`:`,1),v(`div`,Te,[(t(!0),b(g,null,r(e.report.buildings,(e,n)=>(t(),b(`div`,{key:n},[v(`span`,Ee,u(_(S)[n].name)+`:`,1),v(`span`,De,`Lv.`+u(e),1)]))),128))])])):p(``,!0)])):p(``,!0)]),_:1})]),_:1},8,[`open`]))}}),ke={class:`container mx-auto p-4 sm:p-6 space-y-6`},Ae={class:`text-2xl sm:text-3xl font-bold`},je={class:`text-xs sm:text-sm truncate`},Me={class:`flex justify-between items-center gap-2`},Ne={class:`flex items-center gap-2 min-w-0 flex-1`},Pe={class:`flex justify-between items-center gap-2`},Fe={class:`flex items-center gap-2 min-w-0 flex-1`},Ie={class:`flex justify-between items-center gap-2`},Le={class:`flex items-center gap-2 min-w-0 flex-1`},Re={class:`flex justify-between items-center gap-2`},ze={class:`flex items-center gap-2 min-w-0 flex-1`},Be={class:`flex justify-between items-center gap-2`},Ve={class:`flex items-center gap-2 min-w-0 flex-1`},He={class:`space-y-3`},Ue={class:`text-sm`},We={class:`font-semibold mb-1`},Ge={class:`grid grid-cols-3 gap-2`},Ke={key:0},qe={key:1},Je={key:2},Ye={class:`text-xs text-muted-foreground`},Xe={class:`text-green-600`},Ze={class:`flex gap-2`},Qe={class:`flex justify-between items-center gap-2`},$e={class:`flex items-center gap-2 min-w-0 flex-1`},et={class:`space-y-2`},tt={class:`text-sm`},nt={class:`font-semibold mb-1`},rt={class:`grid grid-cols-3 gap-2`},it={key:0},at={key:1},ot={key:2},st={class:`text-xs text-muted-foreground`},ct={class:`text-xs text-muted-foreground`},lt={class:`flex justify-between items-center gap-2`},ut={class:`flex items-center gap-2 min-w-0 flex-1`},dt=h({__name:`MessagesView`,setup(n){let h=ie(),k=ae(),{t:A}=I(),N=s(`battles`),P=s(!1),F=s(!1),V=s(null),U=s(null),W=m(()=>[...h.player.battleReports].sort((e,t)=>t.timestamp-e.timestamp)),K=m(()=>[...h.player.spyReports].sort((e,t)=>t.timestamp-e.timestamp)),q=m(()=>h.player.spiedNotifications?[...h.player.spiedNotifications].sort((e,t)=>t.timestamp-e.timestamp):[]),J=m(()=>h.player.missionReports?[...h.player.missionReports].sort((e,t)=>t.timestamp-e.timestamp):[]),Y=m(()=>h.player.npcActivityNotifications?[...h.player.npcActivityNotifications].sort((e,t)=>t.timestamp-e.timestamp):[]),X=m(()=>h.player.battleReports.filter(e=>!e.read).length),ue=m(()=>h.player.spyReports.filter(e=>!e.read).length),de=m(()=>h.player.spiedNotifications?h.player.spiedNotifications.filter(e=>!e.read).length:0),fe=m(()=>h.player.npcActivityNotifications?h.player.npcActivityNotifications.filter(e=>!e.read).length:0),pe=m(()=>h.player.missionReports?h.player.missionReports.filter(e=>!e.read).length:0),me=m(()=>h.player.giftNotifications?h.player.giftNotifications.filter(e=>!e.read).length:0),he=m(()=>h.player.giftRejectedNotifications?h.player.giftRejectedNotifications.filter(e=>!e.read).length:0),ge=m(()=>ue.value+de.value),_e=m(()=>fe.value+me.value+he.value),ve=m(()=>[{value:`battles`,icon:w,label:A(`messagesView.battles`),unreadCount:X.value},{value:`spy`,icon:x,label:A(`messagesView.spy`),unreadCount:ge.value},{value:`missions`,icon:E,label:A(`messagesView.missions`),unreadCount:pe.value},{value:`npc`,icon:ne,label:A(`messagesView.npc`),unreadCount:_e.value}]),Z=m(()=>h.player.giftNotifications?[...h.player.giftNotifications].sort((e,t)=>t.timestamp-e.timestamp):[]),Q=m(()=>h.player.giftRejectedNotifications?[...h.player.giftRejectedNotifications].sort((e,t)=>t.timestamp-e.timestamp):[]),$=e=>e.winner===`draw`?`secondary`:(e.attackerId===h.player.id?e.winner===`attacker`:e.winner===`defender`)?`default`:`destructive`,ye=e=>e.winner===`draw`?A(`messagesView.draw`):(e.attackerId===h.player.id?e.winner===`attacker`:e.winner===`defender`)?A(`messagesView.victory`):A(`messagesView.defeat`),be=e=>{V.value=e,P.value=!0,e.read||=!0},xe=e=>{U.value=e,F.value=!0,e.read||=!0},Se=e=>{e.read||=!0},Ce=e=>{let t=h.player.battleReports.findIndex(t=>t.id===e);t>-1&&h.player.battleReports.splice(t,1)},we=e=>{let t=h.player.spyReports.findIndex(t=>t.id===e);t>-1&&h.player.spyReports.splice(t,1)},Te=e=>{if(!h.player.spiedNotifications)return;let t=h.player.spiedNotifications.findIndex(t=>t.id===e);t>-1&&h.player.spiedNotifications.splice(t,1)},Ee=e=>{e.read||=!0},De=e=>{if(!h.player.npcActivityNotifications)return;let t=h.player.npcActivityNotifications.findIndex(t=>t.id===e);t>-1&&h.player.npcActivityNotifications.splice(t,1)},dt=e=>({[O.Transport]:A(`fleetView.transport`),[O.Colonize]:A(`fleetView.colonize`),[O.Deploy]:A(`fleetView.deploy`),[O.Recycle]:A(`fleetView.recycle`),[O.Destroy]:A(`fleetView.destroy`),[O.MissileAttack]:A(`galaxyView.missileAttack`)})[e]||e,ft=e=>{e.read||=!0},pt=e=>{if(!h.player.missionReports)return;let t=h.player.missionReports.findIndex(t=>t.id===e);t>-1&&h.player.missionReports.splice(t,1)},mt=e=>{e.read||=!0},ht=e=>{let t=k.npcs.find(t=>t.id===e.fromNpcId);t&&a(h.player,t,e,h.locale)},gt=e=>{let t=k.npcs.find(t=>t.id===e.fromNpcId);t&&o(h.player,t,e,h.locale)},_t=e=>{if(!h.player.giftNotifications)return;let t=h.player.giftNotifications.findIndex(t=>t.id===e);t>-1&&h.player.giftNotifications.splice(t,1)},vt=e=>{e.read||=!0},yt=e=>{if(!h.player.giftRejectedNotifications)return;let t=h.player.giftRejectedNotifications.findIndex(t=>t.id===e);t>-1&&h.player.giftRejectedNotifications.splice(t,1)};return(n,a)=>(t(),b(`div`,ke,[v(`h1`,Ae,u(_(A)(`messagesView.title`)),1),f(_(oe),{modelValue:N.value,"onUpdate:modelValue":a[0]||=e=>N.value=e,class:`w-full`},{default:i(()=>[f(_(se),{class:`grid w-full grid-cols-2 sm:grid-cols-4`,"tab-count":4},{default:i(()=>[(t(!0),b(g,null,r(ve.value,n=>(t(),l(_(ce),{key:n.value,value:n.value,class:`flex items-center justify-center gap-1 px-2`},{default:i(()=>[(t(),l(e(n.icon),{class:`h-3 w-3 sm:h-4 sm:w-4`})),v(`span`,je,u(n.label),1),n.unreadCount>0?(t(),l(_(M),{key:0,variant:`destructive`,class:`hidden sm:flex ml-1`},{default:i(()=>[d(u(n.unreadCount),1)]),_:2},1024)):p(``,!0)]),_:2},1032,[`value`]))),128))]),_:1}),f(_(G),{value:`battles`,class:`mt-4 space-y-2`},{default:i(()=>[_(h).player.battleReports.length===0?(t(),l(_(B),{key:0},{default:i(()=>[f(_(H),{class:`py-8 text-center text-muted-foreground`},{default:i(()=>[d(u(_(A)(`messagesView.noBattleReports`)),1)]),_:1})]),_:1})):p(``,!0),(t(!0),b(g,null,r(W.value,e=>(t(),l(_(B),{key:e.id,onClick:t=>be(e),class:`cursor-pointer hover:shadow-md transition-shadow`},{default:i(()=>[f(_(z),{class:`pb-3`},{default:i(()=>[v(`div`,Me,[v(`div`,Ne,[f(_(w),{class:`h-4 w-4 flex-shrink-0`}),f(_(R),{class:`text-base sm:text-lg`},{default:i(()=>[d(u(_(A)(`messagesView.battleReport`)),1)]),_:1}),e.read?p(``,!0):(t(),l(_(M),{key:0,variant:`default`,class:`text-xs`},{default:i(()=>[d(u(_(A)(`messagesView.unread`)),1)]),_:1})),f(_(M),{variant:$(e),class:`text-xs`},{default:i(()=>[d(u(ye(e)),1)]),_:2},1032,[`variant`])]),f(_(j),{onClick:y(t=>Ce(e.id),[`stop`]),variant:`ghost`,size:`icon`,class:`h-8 w-8 flex-shrink-0`},{default:i(()=>[f(_(T),{class:`h-4 w-4`})]),_:1},8,[`onClick`])]),f(_(D),{class:`text-xs sm:text-sm`},{default:i(()=>[d(u(_(L)(e.timestamp)),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1}),f(_(G),{value:`spy`,class:`mt-4 space-y-2`},{default:i(()=>[_(h).player.spyReports.length===0&&q.value.length===0?(t(),l(_(B),{key:0},{default:i(()=>[f(_(H),{class:`py-8 text-center text-muted-foreground`},{default:i(()=>[d(u(_(A)(`messagesView.noSpyReports`)),1)]),_:1})]),_:1})):p(``,!0),(t(!0),b(g,null,r(K.value,e=>(t(),l(_(B),{key:e.id,onClick:t=>xe(e),class:`cursor-pointer hover:shadow-md transition-shadow`},{default:i(()=>[f(_(z),{class:`pb-3`},{default:i(()=>[v(`div`,Pe,[v(`div`,Fe,[f(_(x),{class:`h-4 w-4 flex-shrink-0`}),f(_(R),{class:`text-base sm:text-lg`},{default:i(()=>[d(u(_(A)(`messagesView.spyReport`)),1)]),_:1}),e.read?p(``,!0):(t(),l(_(M),{key:0,variant:`default`,class:`text-xs`},{default:i(()=>[d(u(_(A)(`messagesView.unread`)),1)]),_:1})),f(_(M),{variant:`outline`,class:`text-xs`},{default:i(()=>[d(u(e.targetPlanetId),1)]),_:2},1024)]),f(_(j),{onClick:y(t=>we(e.id),[`stop`]),variant:`ghost`,size:`icon`,class:`h-8 w-8 flex-shrink-0`},{default:i(()=>[f(_(T),{class:`h-4 w-4`})]),_:1},8,[`onClick`])]),f(_(D),{class:`text-xs sm:text-sm`},{default:i(()=>[d(u(_(L)(e.timestamp)),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,[`onClick`]))),128)),(t(!0),b(g,null,r(q.value,e=>(t(),l(_(B),{key:e.id,onClick:t=>Se(e),class:`cursor-pointer hover:shadow-md transition-shadow`},{default:i(()=>[f(_(z),{class:`pb-3`},{default:i(()=>[v(`div`,Ie,[v(`div`,Le,[f(_(re),{class:`h-4 w-4 flex-shrink-0 text-destructive`}),f(_(R),{class:`text-base sm:text-lg`},{default:i(()=>[d(u(_(A)(`messagesView.spiedNotification`)),1)]),_:1}),e.read?p(``,!0):(t(),l(_(M),{key:0,variant:`default`,class:`text-xs`},{default:i(()=>[d(u(_(A)(`messagesView.unread`)),1)]),_:1})),f(_(M),{variant:e.detectionSuccess?`destructive`:`secondary`,class:`text-xs`},{default:i(()=>[d(u(e.detectionSuccess?_(A)(`messagesView.detected`):_(A)(`messagesView.undetected`)),1)]),_:2},1032,[`variant`])]),f(_(j),{onClick:y(t=>Te(e.id),[`stop`]),variant:`ghost`,size:`icon`,class:`h-8 w-8 flex-shrink-0`},{default:i(()=>[f(_(T),{class:`h-4 w-4`})]),_:1},8,[`onClick`])]),f(_(D),{class:`text-xs sm:text-sm`},{default:i(()=>[d(u(e.npcName)+` → `+u(e.targetPlanetName)+` · `+u(_(L)(e.timestamp)),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1}),f(_(G),{value:`npc`,class:`mt-4 space-y-2`},{default:i(()=>[Y.value.length===0&&Z.value.length===0&&Q.value.length===0?(t(),l(_(B),{key:0},{default:i(()=>[f(_(H),{class:`py-8 text-center text-muted-foreground`},{default:i(()=>[d(u(_(A)(`messagesView.noNPCActivity`)),1)]),_:1})]),_:1})):p(``,!0),(t(!0),b(g,null,r(Y.value,e=>(t(),l(_(B),{key:e.id,onClick:t=>Ee(e),class:`cursor-pointer hover:shadow-md transition-shadow`},{default:i(()=>[f(_(z),{class:`pb-3`},{default:i(()=>[v(`div`,Re,[v(`div`,ze,[f(_(ee),{class:`h-4 w-4 flex-shrink-0 text-blue-500`}),f(_(R),{class:`text-base sm:text-lg`},{default:i(()=>[d(u(_(A)(`messagesView.npcRecycleActivity`)),1)]),_:1}),e.read?p(``,!0):(t(),l(_(M),{key:0,variant:`default`,class:`text-xs`},{default:i(()=>[d(u(_(A)(`messagesView.unread`)),1)]),_:1}))]),f(_(j),{onClick:y(t=>De(e.id),[`stop`]),variant:`ghost`,size:`icon`,class:`h-8 w-8 flex-shrink-0`},{default:i(()=>[f(_(T),{class:`h-4 w-4`})]),_:1},8,[`onClick`])]),f(_(D),{class:`text-xs sm:text-sm`},{default:i(()=>[d(u(e.npcName)+` → `+u(e.targetPlanetName||`[${e.targetPosition.galaxy}:${e.targetPosition.system}:${e.targetPosition.position}]`)+` · `+u(_(L)(e.timestamp)),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,[`onClick`]))),128)),(t(!0),b(g,null,r(Z.value,e=>(t(),l(_(B),{key:e.id,onClick:t=>mt(e),class:`hover:shadow-md transition-shadow`},{default:i(()=>[f(_(z),{class:`pb-3`},{default:i(()=>[v(`div`,Be,[v(`div`,Ve,[f(_(S),{class:`h-4 w-4 flex-shrink-0 text-green-600`}),f(_(R),{class:`text-base sm:text-lg`},{default:i(()=>[d(u(_(A)(`messagesView.giftFrom`).replace(`{npcName}`,e.fromNpcName)),1)]),_:2},1024),e.read?p(``,!0):(t(),l(_(M),{key:0,variant:`default`,class:`text-xs`},{default:i(()=>[d(u(_(A)(`messagesView.unread`)),1)]),_:1}))]),f(_(j),{onClick:y(t=>_t(e.id),[`stop`]),variant:`ghost`,size:`icon`,class:`h-8 w-8 flex-shrink-0`},{default:i(()=>[f(_(T),{class:`h-4 w-4`})]),_:1},8,[`onClick`])]),f(_(D),{class:`text-xs sm:text-sm`},{default:i(()=>[d(u(_(L)(e.timestamp)),1)]),_:2},1024)]),_:2},1024),f(_(H),null,{default:i(()=>[v(`div`,He,[v(`div`,Ue,[v(`div`,We,u(_(A)(`messagesView.giftResources`))+`:`,1),v(`div`,Ge,[e.resources.metal>0?(t(),b(`div`,Ke,u(_(A)(`resources.metal`))+`: `+u(e.resources.metal.toLocaleString()),1)):p(``,!0),e.resources.crystal>0?(t(),b(`div`,qe,u(_(A)(`resources.crystal`))+`: `+u(e.resources.crystal.toLocaleString()),1)):p(``,!0),e.resources.deuterium>0?(t(),b(`div`,Je,u(_(A)(`resources.deuterium`))+`: `+u(e.resources.deuterium.toLocaleString()),1)):p(``,!0)])]),v(`div`,Ye,[d(u(_(A)(`messagesView.expectedReputation`))+`: `,1),v(`span`,Xe,`+`+u(e.expectedReputationGain),1)]),v(`div`,Ze,[f(_(j),{onClick:y(t=>ht(e),[`stop`]),variant:`default`,size:`sm`,class:`flex-1`},{default:i(()=>[f(_(C),{class:`h-4 w-4 mr-1`}),d(` `+u(_(A)(`messagesView.acceptGift`)),1)]),_:1},8,[`onClick`]),f(_(j),{onClick:y(t=>gt(e),[`stop`]),variant:`outline`,size:`sm`,class:`flex-1`},{default:i(()=>[f(_(te),{class:`h-4 w-4 mr-1`}),d(` `+u(_(A)(`messagesView.rejectGift`)),1)]),_:1},8,[`onClick`])])])]),_:2},1024)]),_:2},1032,[`onClick`]))),128)),(t(!0),b(g,null,r(Q.value,e=>(t(),l(_(B),{key:e.id,onClick:t=>vt(e),class:`hover:shadow-md transition-shadow`},{default:i(()=>[f(_(z),{class:`pb-3`},{default:i(()=>[v(`div`,Qe,[v(`div`,$e,[f(_(te),{class:`h-4 w-4 flex-shrink-0 text-red-600`}),f(_(R),{class:`text-base sm:text-lg`},{default:i(()=>[d(u(_(A)(`messagesView.giftRejectedBy`).replace(`{npcName}`,e.npcName)),1)]),_:2},1024),e.read?p(``,!0):(t(),l(_(M),{key:0,variant:`default`,class:`text-xs`},{default:i(()=>[d(u(_(A)(`messagesView.unread`)),1)]),_:1}))]),f(_(j),{onClick:y(t=>yt(e.id),[`stop`]),variant:`ghost`,size:`icon`,class:`h-8 w-8 flex-shrink-0`},{default:i(()=>[f(_(T),{class:`h-4 w-4`})]),_:1},8,[`onClick`])]),f(_(D),{class:`text-xs sm:text-sm`},{default:i(()=>[d(u(_(L)(e.timestamp)),1)]),_:2},1024)]),_:2},1024),f(_(H),null,{default:i(()=>[v(`div`,et,[v(`div`,tt,[v(`div`,nt,u(_(A)(`messagesView.rejectedResources`))+`:`,1),v(`div`,rt,[e.rejectedResources.metal>0?(t(),b(`div`,it,u(_(A)(`resources.metal`))+`: `+u(e.rejectedResources.metal.toLocaleString()),1)):p(``,!0),e.rejectedResources.crystal>0?(t(),b(`div`,at,u(_(A)(`resources.crystal`))+`: `+u(e.rejectedResources.crystal.toLocaleString()),1)):p(``,!0),e.rejectedResources.deuterium>0?(t(),b(`div`,ot,u(_(A)(`resources.deuterium`))+`: `+u(e.rejectedResources.deuterium.toLocaleString()),1)):p(``,!0)])]),v(`div`,st,[d(u(_(A)(`messagesView.currentReputation`))+`: `,1),v(`span`,{class:c(e.currentReputation>=0?`text-green-600`:`text-red-600`)},u(e.currentReputation),3)]),v(`div`,ct,u(_(A)(`messagesView.rejectionReason.`+e.reason)),1)])]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1}),f(_(G),{value:`missions`,class:`mt-4 space-y-2`},{default:i(()=>[J.value.length===0?(t(),l(_(B),{key:0},{default:i(()=>[f(_(H),{class:`py-8 text-center text-muted-foreground`},{default:i(()=>[d(u(_(A)(`messagesView.noMissionReports`)),1)]),_:1})]),_:1})):p(``,!0),(t(!0),b(g,null,r(J.value,e=>(t(),l(_(B),{key:e.id,onClick:t=>ft(e),class:`cursor-pointer hover:shadow-md transition-shadow`},{default:i(()=>[f(_(z),{class:`pb-3`},{default:i(()=>[v(`div`,lt,[v(`div`,ut,[f(_(E),{class:`h-4 w-4 flex-shrink-0`}),f(_(R),{class:`text-base sm:text-lg`},{default:i(()=>[d(u(dt(e.missionType)),1)]),_:2},1024),e.read?p(``,!0):(t(),l(_(M),{key:0,variant:`default`,class:`text-xs`},{default:i(()=>[d(u(_(A)(`messagesView.unread`)),1)]),_:1})),f(_(M),{variant:e.success?`default`:`destructive`,class:`text-xs`},{default:i(()=>[d(u(e.success?_(A)(`messagesView.success`):_(A)(`messagesView.failed`)),1)]),_:2},1032,[`variant`])]),f(_(j),{onClick:y(t=>pt(e.id),[`stop`]),variant:`ghost`,size:`icon`,class:`h-8 w-8 flex-shrink-0`},{default:i(()=>[f(_(T),{class:`h-4 w-4`})]),_:1},8,[`onClick`])]),f(_(D),{class:`text-xs sm:text-sm`},{default:i(()=>[d(u(e.originPlanetName)+` → `+u(e.targetPlanetName||`[${e.targetPosition.galaxy}:${e.targetPosition.system}:${e.targetPosition.position}]`)+` · `+u(_(L)(e.timestamp)),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1})]),_:1},8,[`modelValue`]),f(le,{open:P.value,"onUpdate:open":a[1]||=e=>P.value=e,report:V.value},null,8,[`open`,`report`]),f(Oe,{open:F.value,"onUpdate:open":a[2]||=e=>F.value=e,report:U.value},null,8,[`open`,`report`])]))}});export{dt as default}; \ No newline at end of file diff --git a/docs/assets/NotFoundView-BqreQe6E.js b/docs/assets/NotFoundView-BqreQe6E.js new file mode 100644 index 0000000..731d883 --- /dev/null +++ b/docs/assets/NotFoundView-BqreQe6E.js @@ -0,0 +1 @@ +import{En as e,Rn as t,cr as n,dn as r,fn as i,pn as a,rr as o,sn as s,un as c}from"./game-logic-BBFCPVtv.js";import"./vendor-pinia-L_8CmDWM.js";import{o as l}from"./vendor-vue-router-0mfLVB6Y.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-BC9uiVvf.js";import"./vendor-others-Bce0hM6h.js";import"./vendor-reka-ui-DR3m_AkV.js";import"./vendor-utils-BlvnUqQX.js";import{N as u}from"./vendor-icons-Ccm2_GPI.js";import{J as d,X as f}from"./index-B4KMqZ_y.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./empty-Ds0PR_Pd.js";var y={class:`container mx-auto p-4 sm:p-6 flex items-center justify-center min-h-[60vh]`},b=a({__name:`NotFoundView`,setup(a){let b=l(),{t:x}=f(),S=()=>{b.push(`/`)};return(a,l)=>(e(),c(`div`,y,[i(o(g),{class:`border-0`},{default:t(()=>[i(o(h),null,{default:t(()=>[...l[0]||=[s(`div`,{class:`text-8xl sm:text-9xl font-bold text-muted-foreground/20`},`404`,-1)]]),_:1}),i(o(_),null,{default:t(()=>[i(o(v),null,{default:t(()=>[r(n(o(x)(`notFound.title`)),1)]),_:1}),i(o(m),null,{default:t(()=>[r(n(o(x)(`notFound.description`)),1)]),_:1})]),_:1}),i(o(p),null,{default:t(()=>[i(o(d),{onClick:S,size:`lg`},{default:t(()=>[i(o(u),{class:`mr-2 h-4 w-4`}),r(` `+n(o(x)(`notFound.goHome`)),1)]),_:1})]),_:1})]),_:1})]))}});export{b as default}; \ No newline at end of file diff --git a/docs/assets/OfficersView-CXh701uW.js b/docs/assets/OfficersView-CXh701uW.js new file mode 100644 index 0000000..da89fdd --- /dev/null +++ b/docs/assets/OfficersView-CXh701uW.js @@ -0,0 +1 @@ +import{$t as e,En as t,Ft as n,It as r,Lt as i,On as a,Rn as o,Rt as ee,St as s,Yn as c,ar as te,cn as l,cr as u,dn as d,fn as f,ln as p,on as ne,pn as re,rn as m,rr as h,sn as g,un as _,xt as v,zn as ie}from"./game-logic-BBFCPVtv.js";import"./vendor-pinia-L_8CmDWM.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-BC9uiVvf.js";import"./vendor-others-Bce0hM6h.js";import"./vendor-reka-ui-DR3m_AkV.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-Djj-oRw9.js";import{t as ae}from"./CardDescription-DduF5EVY.js";import{h as oe}from"./game-config-DRP-gbpS.js";import{$ as se,A as y,F as b,I as x,J as S,K as C,L as ce,M as w,N as T,P as le,X as ue,a as de,d as fe,f as pe,j as E,k as D,l as me,m as O,o as k,p as A,s as j}from"./index-B4KMqZ_y.js";import{t as M}from"./useGameConfig-DLqfPHtW.js";var N={class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},P={class:`text-2xl sm:text-3xl font-bold`},F={class:`grid grid-cols-2 sm:grid-cols-3 gap-4 sm:gap-6`},I={class:`mb-2`},L={class:`flex flex-col sm:flex-row sm:justify-between sm:items-start gap-2`},R={key:0,class:`p-3 bg-blue-50 dark:bg-blue-950 rounded-lg`},z={class:`space-y-1 text-xs sm:text-sm`},he={class:`font-medium text-blue-700 dark:text-blue-300`},ge={class:`text-muted-foreground`},_e={class:`text-muted-foreground`},ve={class:`space-y-2`},ye={class:`text-sm font-medium text-muted-foreground`},be={class:`space-y-1.5`},xe={class:`text-xs`},Se={class:`space-y-2`},Ce={class:`text-sm font-medium text-muted-foreground`},we={class:`space-y-1 text-xs sm:text-sm`},Te={key:0,class:`flex items-center gap-2`},Ee={key:1,class:`flex items-center gap-2`},De={key:2,class:`flex items-center gap-2`},Oe={key:3,class:`flex items-center gap-2`},ke={key:4,class:`flex items-center gap-2`},Ae={key:5,class:`flex items-center gap-2`},je={key:6,class:`flex items-center gap-2`},Me={key:7,class:`flex items-center gap-2`},Ne={key:8,class:`flex items-center gap-2`},Pe={key:9,class:`flex items-center gap-2`},Fe={class:`flex flex-col sm:flex-row gap-2`},B=re({__name:`OfficersView`,setup(re){let{t:B}=ue(),{OFFICERS:V}=M(),H=se(),U=ne(()=>H.currentPlanet),W=c(!1),G=c(``),K=c(``),q=c(!1),J=c(``),Y=c(``),X=c(null),Ie=()=>{X.value&&X.value(),q.value=!1},Le=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`darkMatter`}],Z=e=>{let t=H.player.officers[e],n=Date.now();return t.active&&(!t.expiresAt||t.expiresAt>n)},Re=e=>H.player.officers[e].expiresAt||0,Q=e=>{let t=H.player.officers[e];if(!t.expiresAt)return 0;let n=Date.now();return Math.max(0,Math.floor((t.expiresAt-n)/1e3))},$=e=>{if(!U.value)return!1;let t=V.value[e];return U.value.resources.metal>=t.cost.metal&&U.value.resources.crystal>=t.cost.crystal&&U.value.resources.deuterium>=t.cost.deuterium&&U.value.resources.darkMatter>=t.cost.darkMatter},ze=(e,t=7)=>{if(!H.currentPlanet)return!1;let r=i(e);return v(H.currentPlanet.resources,r)?(s(H.currentPlanet.resources,r),H.player.officers[e]=n(e,t),!0):!1},Be=e=>{J.value=B(`officersView.hireTitle`),Y.value=B(`officersView.hireMessage`).replace(`{name}`,V.value[e].name),X.value=()=>{ze(e,7)||(G.value=B(`officersView.hireFailed`),K.value=B(`officersView.insufficientResources`),W.value=!0)},q.value=!0},Ve=(e,t=7)=>{if(!H.currentPlanet)return!1;let n=i(e);if(!v(H.currentPlanet.resources,n))return!1;s(H.currentPlanet.resources,n);let r=Date.now();return H.player.officers[e]=ee(H.player.officers[e],t,r),!0},He=e=>{J.value=B(`officersView.renewTitle`),Y.value=B(`officersView.renewMessage`).replace(`{name}`,V.value[e].name),X.value=()=>{Ve(e,7)||(G.value=B(`officersView.renewFailed`),K.value=B(`officersView.insufficientResources`),W.value=!0)},q.value=!0},Ue=e=>{J.value=B(`officersView.dismissTitle`),Y.value=B(`officersView.dismissMessage`).replace(`{name}`,V.value[e].name),X.value=()=>{H.player.officers[e]=r(e)},q.value=!0};return(n,r)=>(t(),_(`div`,N,[g(`h1`,P,u(h(B)(`officersView.title`)),1),g(`div`,F,[(t(!0),_(m,null,a(Object.values(h(oe)),n=>(t(),l(h(O),{key:n},{default:o(()=>[f(h(pe),null,{default:o(()=>[g(`div`,I,[g(`div`,L,[f(h(fe),{class:`text-sm sm:text-base lg:text-lg order-2 sm:order-1`},{default:o(()=>[d(u(h(V)[n].name),1)]),_:2},1024),Z(n)?(t(),l(h(C),{key:0,variant:`default`,class:`text-xs whitespace-nowrap self-start order-1 sm:order-2`},{default:o(()=>[d(u(h(B)(`officersView.activated`)),1)]),_:1})):(t(),l(h(C),{key:1,variant:`outline`,class:`text-xs whitespace-nowrap self-start order-1 sm:order-2`},{default:o(()=>[d(u(h(B)(`officersView.inactive`)),1)]),_:1}))])]),f(h(ae),{class:`text-xs sm:text-sm`},{default:o(()=>[d(u(h(V)[n].description),1)]),_:2},1024)]),_:2},1024),f(h(A),{class:`space-y-4`},{default:o(()=>[Z(n)?(t(),_(`div`,R,[g(`div`,z,[g(`p`,he,u(h(B)(`officersView.activeStatus`)),1),g(`p`,ge,u(h(B)(`officersView.expirationTime`))+`: `+u(h(de)(Re(n))),1),g(`p`,_e,u(h(B)(`officersView.remainingTime`))+`: `+u(h(j)(Q(n))),1)])])):p(``,!0),g(`div`,ve,[g(`p`,ye,u(h(B)(`officersView.recruitCost`))+` (7`+u(h(B)(`officersView.days`))+`):`,1),g(`div`,be,[(t(),_(m,null,a(Le,t=>ie(g(`div`,{key:t.key,class:`flex items-center gap-2`},[f(ce,{type:t.key,size:`sm`},null,8,[`type`]),g(`span`,xe,u(h(B)(`resources.${t.key}`))+`:`,1),g(`span`,{class:te([`font-medium text-sm`,U.value?h(me)(U.value.resources[t.key],h(V)[n].cost[t.key]):``])},u(h(k)(h(V)[n].cost[t.key])),3)]),[[e,t.key!==`darkMatter`||h(V)[n].cost.darkMatter>0]])),64))])]),g(`div`,Se,[g(`p`,Ce,u(h(B)(`officersView.benefitsBonus`))+`:`,1),g(`div`,we,[h(V)[n].benefits.resourceProductionBonus?(t(),_(`div`,Te,[r[2]||=g(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),g(`span`,null,u(h(B)(`officersView.resourceProduction`))+` +`+u(h(V)[n].benefits.resourceProductionBonus)+`%`,1)])):p(``,!0),h(V)[n].benefits.darkMatterProductionBonus?(t(),_(`div`,Ee,[r[3]||=g(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),g(`span`,null,u(h(B)(`officersView.darkMatterProduction`))+` +`+u(h(V)[n].benefits.darkMatterProductionBonus)+`%`,1)])):p(``,!0),h(V)[n].benefits.buildingSpeedBonus?(t(),_(`div`,De,[r[4]||=g(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),g(`span`,null,u(h(B)(`officersView.buildingSpeed`))+` +`+u(h(V)[n].benefits.buildingSpeedBonus)+`%`,1)])):p(``,!0),h(V)[n].benefits.researchSpeedBonus?(t(),_(`div`,Oe,[r[5]||=g(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),g(`span`,null,u(h(B)(`officersView.researchSpeed`))+` +`+u(h(V)[n].benefits.researchSpeedBonus)+`%`,1)])):p(``,!0),h(V)[n].benefits.fleetSpeedBonus?(t(),_(`div`,ke,[r[6]||=g(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),g(`span`,null,u(h(B)(`officersView.fleetSpeed`))+` +`+u(h(V)[n].benefits.fleetSpeedBonus)+`%`,1)])):p(``,!0),h(V)[n].benefits.fuelConsumptionReduction?(t(),_(`div`,Ae,[r[7]||=g(`span`,{class:`text-green-600 dark:text-green-400`},`↓`,-1),g(`span`,null,u(h(B)(`officersView.fuelConsumption`))+` -`+u(h(V)[n].benefits.fuelConsumptionReduction)+`%`,1)])):p(``,!0),h(V)[n].benefits.defenseBonus?(t(),_(`div`,je,[r[8]||=g(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),g(`span`,null,u(h(B)(`officersView.defense`))+` +`+u(h(V)[n].benefits.defenseBonus)+`%`,1)])):p(``,!0),h(V)[n].benefits.storageCapacityBonus?(t(),_(`div`,Me,[r[9]||=g(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),g(`span`,null,u(h(B)(`officersView.storageCapacity`))+` +`+u(h(V)[n].benefits.storageCapacityBonus)+`%`,1)])):p(``,!0),h(V)[n].benefits.additionalBuildQueue?(t(),_(`div`,Ne,[r[10]||=g(`span`,{class:`text-green-600 dark:text-green-400`},`+`,-1),g(`span`,null,u(h(B)(`officersView.buildQueue`))+` +`+u(h(V)[n].benefits.additionalBuildQueue),1)])):p(``,!0),h(V)[n].benefits.additionalFleetSlots?(t(),_(`div`,Pe,[r[11]||=g(`span`,{class:`text-green-600 dark:text-green-400`},`+`,-1),g(`span`,null,u(h(B)(`officersView.fleetSlots`))+` +`+u(h(V)[n].benefits.additionalFleetSlots),1)])):p(``,!0)])]),g(`div`,Fe,[Z(n)?p(``,!0):(t(),l(h(S),{key:0,onClick:e=>Be(n),disabled:!$(n),class:`w-full`},{default:o(()=>[d(u(h(B)(`officersView.hire`))+` (7`+u(h(B)(`officersView.days`))+`) `,1)]),_:1},8,[`onClick`,`disabled`])),Z(n)?(t(),l(h(S),{key:1,onClick:e=>He(n),disabled:!$(n),class:`w-full sm:flex-1`},{default:o(()=>[d(u(h(B)(`officersView.renew`))+` (7`+u(h(B)(`officersView.days`))+`) `,1)]),_:1},8,[`onClick`,`disabled`])):p(``,!0),Z(n)?(t(),l(h(S),{key:2,onClick:e=>Ue(n),variant:`outline`,class:`w-full sm:w-auto`},{default:o(()=>[d(u(h(B)(`officersView.dismiss`)),1)]),_:1},8,[`onClick`])):p(``,!0)])]),_:2},1024)]),_:2},1024))),128))]),f(h(x),{open:W.value,"onUpdate:open":r[0]||=e=>W.value=e},{default:o(()=>[f(h(T),null,{default:o(()=>[f(h(y),null,{default:o(()=>[f(h(D),null,{default:o(()=>[d(u(G.value),1)]),_:1}),f(h(w),{class:`whitespace-pre-line`},{default:o(()=>[d(u(K.value),1)]),_:1})]),_:1}),f(h(E),null,{default:o(()=>[f(h(b),null,{default:o(()=>[d(u(h(B)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),f(h(x),{open:q.value,"onUpdate:open":r[1]||=e=>q.value=e},{default:o(()=>[f(h(T),null,{default:o(()=>[f(h(y),null,{default:o(()=>[f(h(D),null,{default:o(()=>[d(u(J.value),1)]),_:1}),f(h(w),{class:`whitespace-pre-line`},{default:o(()=>[d(u(Y.value),1)]),_:1})]),_:1}),f(h(E),null,{default:o(()=>[f(h(le),null,{default:o(()=>[d(u(h(B)(`common.cancel`)),1)]),_:1}),f(h(b),{onClick:Ie},{default:o(()=>[d(u(h(B)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{B as default}; \ No newline at end of file diff --git a/docs/assets/OfficersView-gOtt9blg.js b/docs/assets/OfficersView-gOtt9blg.js deleted file mode 100644 index 5325f2b..0000000 --- a/docs/assets/OfficersView-gOtt9blg.js +++ /dev/null @@ -1 +0,0 @@ -import{$t as e,Dn as t,Dt as n,En as r,Et as i,Gn as a,Gt as o,Jt as s,Ln as c,Qt as l,Tt as ee,Vt as te,Xn as u,Xt as d,Yt as f,Zt as p,en as m,gn as h,gt as g,ht as _,mn as v,qn as ne,tn as re,wt as ie}from"./game-logic-Bi1l7y4K.js";import"./vendor-pinia-DqhKuBjp.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-Dr0JspcV.js";import"./vendor-others-DTUzJ7S-.js";import"./vendor-reka-ui-BEHIKScj.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CJcfYqoW.js";import{t as y}from"./CardDescription-BSLS07AU.js";import{h as b}from"./game-config-CG6z6nnH.js";import{H as x,K as ae,N as oe,W as S,_ as se,a as C,b as ce,c as le,d as ue,f as de,h as fe,i as w,l as T,o as E,p as pe,q as me,r as D,s as O,u as k,v as A,y as j}from"./index-BT5w6et-.js";import{t as M}from"./useGameConfig-b98LOtBY.js";var N={class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},P={class:`text-2xl sm:text-3xl font-bold`},F={class:`grid grid-cols-2 sm:grid-cols-3 gap-4 sm:gap-6`},I={class:`mb-2`},L={class:`flex flex-col sm:flex-row sm:justify-between sm:items-start gap-2`},R={key:0,class:`p-3 bg-blue-50 dark:bg-blue-950 rounded-lg`},z={class:`space-y-1 text-xs sm:text-sm`},he={class:`font-medium text-blue-700 dark:text-blue-300`},ge={class:`text-muted-foreground`},_e={class:`text-muted-foreground`},ve={class:`space-y-2`},ye={class:`text-sm font-medium text-muted-foreground`},be={class:`space-y-1.5`},xe={class:`text-xs`},Se={class:`space-y-2`},Ce={class:`text-sm font-medium text-muted-foreground`},we={class:`space-y-1 text-xs sm:text-sm`},Te={key:0,class:`flex items-center gap-2`},Ee={key:1,class:`flex items-center gap-2`},De={key:2,class:`flex items-center gap-2`},Oe={key:3,class:`flex items-center gap-2`},ke={key:4,class:`flex items-center gap-2`},Ae={key:5,class:`flex items-center gap-2`},je={key:6,class:`flex items-center gap-2`},Me={key:7,class:`flex items-center gap-2`},Ne={key:8,class:`flex items-center gap-2`},Pe={key:9,class:`flex items-center gap-2`},Fe={class:`flex flex-col sm:flex-row gap-2`},B=re({__name:`OfficersView`,setup(re){let{t:B}=ae(),{OFFICERS:V}=M(),H=me(),U=s(()=>H.currentPlanet),W=c(!1),G=c(``),K=c(``),q=c(!1),J=c(``),Y=c(``),X=c(null),Ie=()=>{X.value&&X.value(),q.value=!1},Le=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`darkMatter`}],Z=e=>{let t=H.player.officers[e],n=Date.now();return t.active&&(!t.expiresAt||t.expiresAt>n)},Re=e=>H.player.officers[e].expiresAt||0,Q=e=>{let t=H.player.officers[e];if(!t.expiresAt)return 0;let n=Date.now();return Math.max(0,Math.floor((t.expiresAt-n)/1e3))},$=e=>{if(!U.value)return!1;let t=V.value[e];return U.value.resources.metal>=t.cost.metal&&U.value.resources.crystal>=t.cost.crystal&&U.value.resources.deuterium>=t.cost.deuterium&&U.value.resources.darkMatter>=t.cost.darkMatter},ze=(e,t=7)=>{if(!H.currentPlanet)return!1;let n=i(e);return _(H.currentPlanet.resources,n)?(g(H.currentPlanet.resources,n),H.player.officers[e]=ie(e,t),!0):!1},Be=e=>{J.value=B(`officersView.hireTitle`),Y.value=B(`officersView.hireMessage`).replace(`{name}`,V.value[e].name),X.value=()=>{ze(e,7)||(G.value=B(`officersView.hireFailed`),K.value=B(`officersView.insufficientResources`),W.value=!0)},q.value=!0},Ve=(e,t=7)=>{if(!H.currentPlanet)return!1;let r=i(e);if(!_(H.currentPlanet.resources,r))return!1;g(H.currentPlanet.resources,r);let a=Date.now();return H.player.officers[e]=n(H.player.officers[e],t,a),!0},He=e=>{J.value=B(`officersView.renewTitle`),Y.value=B(`officersView.renewMessage`).replace(`{name}`,V.value[e].name),X.value=()=>{Ve(e,7)||(G.value=B(`officersView.renewFailed`),K.value=B(`officersView.insufficientResources`),W.value=!0)},q.value=!0},Ue=e=>{J.value=B(`officersView.dismissTitle`),Y.value=B(`officersView.dismissMessage`).replace(`{name}`,V.value[e].name),X.value=()=>{H.player.officers[e]=ee(e)},q.value=!0};return(n,i)=>(v(),l(`div`,N,[f(`h1`,P,u(a(B)(`officersView.title`)),1),f(`div`,F,[(v(!0),l(o,null,h(Object.values(a(b)),n=>(v(),d(a(ce),{key:n},{default:r(()=>[m(a(A),null,{default:r(()=>[f(`div`,I,[f(`div`,L,[m(a(se),{class:`text-sm sm:text-base lg:text-lg order-2 sm:order-1`},{default:r(()=>[e(u(a(V)[n].name),1)]),_:2},1024),Z(n)?(v(),d(a(x),{key:0,variant:`default`,class:`text-xs whitespace-nowrap self-start order-1 sm:order-2`},{default:r(()=>[e(u(a(B)(`officersView.activated`)),1)]),_:1})):(v(),d(a(x),{key:1,variant:`outline`,class:`text-xs whitespace-nowrap self-start order-1 sm:order-2`},{default:r(()=>[e(u(a(B)(`officersView.inactive`)),1)]),_:1}))])]),m(a(y),{class:`text-xs sm:text-sm`},{default:r(()=>[e(u(a(V)[n].description),1)]),_:2},1024)]),_:2},1024),m(a(j),{class:`space-y-4`},{default:r(()=>[Z(n)?(v(),l(`div`,R,[f(`div`,z,[f(`p`,he,u(a(B)(`officersView.activeStatus`)),1),f(`p`,ge,u(a(B)(`officersView.expirationTime`))+`: `+u(a(ue)(Re(n))),1),f(`p`,_e,u(a(B)(`officersView.remainingTime`))+`: `+u(a(pe)(Q(n))),1)])])):p(``,!0),f(`div`,ve,[f(`p`,ye,u(a(B)(`officersView.recruitCost`))+` (7`+u(a(B)(`officersView.days`))+`):`,1),f(`div`,be,[(v(),l(o,null,h(Le,e=>t(f(`div`,{key:e.key,class:`flex items-center gap-2`},[m(oe,{type:e.key,size:`sm`},null,8,[`type`]),f(`span`,xe,u(a(B)(`resources.${e.key}`))+`:`,1),f(`span`,{class:ne([`font-medium text-sm`,U.value?a(fe)(U.value.resources[e.key],a(V)[n].cost[e.key]):``])},u(a(de)(a(V)[n].cost[e.key])),3)]),[[te,e.key!==`darkMatter`||a(V)[n].cost.darkMatter>0]])),64))])]),f(`div`,Se,[f(`p`,Ce,u(a(B)(`officersView.benefitsBonus`))+`:`,1),f(`div`,we,[a(V)[n].benefits.resourceProductionBonus?(v(),l(`div`,Te,[i[2]||=f(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),f(`span`,null,u(a(B)(`officersView.resourceProduction`))+` +`+u(a(V)[n].benefits.resourceProductionBonus)+`%`,1)])):p(``,!0),a(V)[n].benefits.darkMatterProductionBonus?(v(),l(`div`,Ee,[i[3]||=f(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),f(`span`,null,u(a(B)(`officersView.darkMatterProduction`))+` +`+u(a(V)[n].benefits.darkMatterProductionBonus)+`%`,1)])):p(``,!0),a(V)[n].benefits.buildingSpeedBonus?(v(),l(`div`,De,[i[4]||=f(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),f(`span`,null,u(a(B)(`officersView.buildingSpeed`))+` +`+u(a(V)[n].benefits.buildingSpeedBonus)+`%`,1)])):p(``,!0),a(V)[n].benefits.researchSpeedBonus?(v(),l(`div`,Oe,[i[5]||=f(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),f(`span`,null,u(a(B)(`officersView.researchSpeed`))+` +`+u(a(V)[n].benefits.researchSpeedBonus)+`%`,1)])):p(``,!0),a(V)[n].benefits.fleetSpeedBonus?(v(),l(`div`,ke,[i[6]||=f(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),f(`span`,null,u(a(B)(`officersView.fleetSpeed`))+` +`+u(a(V)[n].benefits.fleetSpeedBonus)+`%`,1)])):p(``,!0),a(V)[n].benefits.fuelConsumptionReduction?(v(),l(`div`,Ae,[i[7]||=f(`span`,{class:`text-green-600 dark:text-green-400`},`↓`,-1),f(`span`,null,u(a(B)(`officersView.fuelConsumption`))+` -`+u(a(V)[n].benefits.fuelConsumptionReduction)+`%`,1)])):p(``,!0),a(V)[n].benefits.defenseBonus?(v(),l(`div`,je,[i[8]||=f(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),f(`span`,null,u(a(B)(`officersView.defense`))+` +`+u(a(V)[n].benefits.defenseBonus)+`%`,1)])):p(``,!0),a(V)[n].benefits.storageCapacityBonus?(v(),l(`div`,Me,[i[9]||=f(`span`,{class:`text-green-600 dark:text-green-400`},`↑`,-1),f(`span`,null,u(a(B)(`officersView.storageCapacity`))+` +`+u(a(V)[n].benefits.storageCapacityBonus)+`%`,1)])):p(``,!0),a(V)[n].benefits.additionalBuildQueue?(v(),l(`div`,Ne,[i[10]||=f(`span`,{class:`text-green-600 dark:text-green-400`},`+`,-1),f(`span`,null,u(a(B)(`officersView.buildQueue`))+` +`+u(a(V)[n].benefits.additionalBuildQueue),1)])):p(``,!0),a(V)[n].benefits.additionalFleetSlots?(v(),l(`div`,Pe,[i[11]||=f(`span`,{class:`text-green-600 dark:text-green-400`},`+`,-1),f(`span`,null,u(a(B)(`officersView.fleetSlots`))+` +`+u(a(V)[n].benefits.additionalFleetSlots),1)])):p(``,!0)])]),f(`div`,Fe,[Z(n)?p(``,!0):(v(),d(a(S),{key:0,onClick:e=>Be(n),disabled:!$(n),class:`w-full`},{default:r(()=>[e(u(a(B)(`officersView.hire`))+` (7`+u(a(B)(`officersView.days`))+`) `,1)]),_:1},8,[`onClick`,`disabled`])),Z(n)?(v(),d(a(S),{key:1,onClick:e=>He(n),disabled:!$(n),class:`w-full sm:flex-1`},{default:r(()=>[e(u(a(B)(`officersView.renew`))+` (7`+u(a(B)(`officersView.days`))+`) `,1)]),_:1},8,[`onClick`,`disabled`])):p(``,!0),Z(n)?(v(),d(a(S),{key:2,onClick:e=>Ue(n),variant:`outline`,class:`w-full sm:w-auto`},{default:r(()=>[e(u(a(B)(`officersView.dismiss`)),1)]),_:1},8,[`onClick`])):p(``,!0)])]),_:2},1024)]),_:2},1024))),128))]),m(a(k),{open:W.value,"onUpdate:open":i[0]||=e=>W.value=e},{default:r(()=>[m(a(O),null,{default:r(()=>[m(a(w),null,{default:r(()=>[m(a(D),null,{default:r(()=>[e(u(G.value),1)]),_:1}),m(a(E),{class:`whitespace-pre-line`},{default:r(()=>[e(u(K.value),1)]),_:1})]),_:1}),m(a(C),null,{default:r(()=>[m(a(T),null,{default:r(()=>[e(u(a(B)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),m(a(k),{open:q.value,"onUpdate:open":i[1]||=e=>q.value=e},{default:r(()=>[m(a(O),null,{default:r(()=>[m(a(w),null,{default:r(()=>[m(a(D),null,{default:r(()=>[e(u(J.value),1)]),_:1}),m(a(E),{class:`whitespace-pre-line`},{default:r(()=>[e(u(Y.value),1)]),_:1})]),_:1}),m(a(C),null,{default:r(()=>[m(a(le),null,{default:r(()=>[e(u(a(B)(`common.cancel`)),1)]),_:1}),m(a(T),{onClick:Ie},{default:r(()=>[e(u(a(B)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{B as default}; \ No newline at end of file diff --git a/docs/assets/OverviewView-D7lWE9IR.js b/docs/assets/OverviewView-D7lWE9IR.js new file mode 100644 index 0000000..bb3f305 --- /dev/null +++ b/docs/assets/OverviewView-D7lWE9IR.js @@ -0,0 +1 @@ +import{$t as e,En as t,On as n,Rn as r,_t as ee,ar as i,cn as te,cr as a,dn as o,fn as s,gt as c,ln as l,on as u,ot as ne,pn as d,rn as f,rr as p,sn as m,st as re,un as h,vt as ie,zn as ae}from"./game-logic-BBFCPVtv.js";import"./vendor-pinia-L_8CmDWM.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-BC9uiVvf.js";import"./vendor-others-Bce0hM6h.js";import"./vendor-reka-ui-DR3m_AkV.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-Djj-oRw9.js";import{t as oe}from"./CardDescription-DduF5EVY.js";import"./game-config-DRP-gbpS.js";import{$ as se,J as g,K as _,L as v,X as y,_ as b,b as ce,c as x,d as S,f as C,g as w,h as le,m as T,o as E,p as D,v as O,y as k}from"./index-B4KMqZ_y.js";import{t as A}from"./useGameConfig-DLqfPHtW.js";import{i as j,n as M,r as N,t as P}from"./TabsTrigger-BnZOhHbD.js";var F={key:0,class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},I={class:`text-center`},L={class:`text-2xl sm:text-3xl font-bold mb-1 sm:mb-2 flex items-center justify-center gap-2`},R={class:`text-xs sm:text-sm text-muted-foreground`},z={key:0,class:`mt-2`},B={key:1,class:`mt-2`},V={class:`flex items-center gap-2`},H={class:`space-y-4`},U={class:`flex items-center gap-2 mb-2`},W={class:`font-semibold`},ue={key:0,class:`ml-6 space-y-1 text-sm`},de={class:`text-muted-foreground`},fe={class:`text-green-600 dark:text-green-400`},pe={key:1,class:`flex justify-between`},G={class:`text-muted-foreground`},me={class:`text-green-600 dark:text-green-400`},he={class:`text-muted-foreground ml-4`},ge={class:`flex justify-between font-semibold pt-1 border-t mt-1`},_e={class:`text-green-600 dark:text-green-400`},ve={class:`space-y-2`},ye={key:0,class:`text-muted-foreground`},be={key:1,class:`text-red-600 dark:text-red-400`},xe={key:0,class:`flex justify-between font-semibold pt-2 border-t`},Se={class:`text-red-600 dark:text-red-400`},Ce={key:1,class:`text-sm text-muted-foreground text-center py-2`},we={class:`grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-3 sm:gap-4`},Te={class:`text-xs sm:text-sm text-muted-foreground`},Ee={class:`text-lg sm:text-xl font-bold`},K=d({__name:`OverviewView`,setup(d){let K=se(),{t:q}=y(),{SHIPS:De}=A(),J=u(()=>K.currentPlanet),Oe=u(()=>J.value?re(J.value,K.player.officers):null),Y=u(()=>J.value?ne(J.value,K.player.officers):null),ke=u(()=>J.value?ee(J.value):0),X=u(()=>J.value?ie(J.value,K.player.officers,Date.now()):null),Z=u(()=>J.value?c(J.value):null),Q=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`energy`},{key:`darkMatter`}],Ae=[{key:`metalMine`},{key:`crystalMine`},{key:`deuteriumSynthesizer`}],$=u(()=>!J.value||J.value.isMoon?null:je(J.value.id)),je=e=>K.player.planets.find(t=>t.isMoon&&t.parentPlanetId===e)||null,Me=()=>{$.value&&(K.currentPlanetId=$.value.id)},Ne=()=>{J.value?.parentPlanetId&&(K.currentPlanetId=J.value.parentPlanetId)};return(ee,c)=>J.value?(t(),h(`div`,F,[m(`div`,I,[m(`h1`,L,[o(a(J.value.name)+` `,1),J.value.isMoon?(t(),te(p(_),{key:0,variant:`secondary`},{default:r(()=>[o(a(p(q)(`planet.moon`)),1)]),_:1})):l(``,!0)]),m(`p`,R,a(p(q)(`planet.position`))+`: [`+a(J.value.position.galaxy)+`:`+a(J.value.position.system)+`:`+a(J.value.position.position)+`] `,1),!J.value.isMoon&&$.value?(t(),h(`div`,z,[s(p(g),{onClick:Me,variant:`outline`,size:`sm`},{default:r(()=>[c[0]||=m(`span`,{class:`mr-2`},`🌙`,-1),o(` `+a(p(q)(`planet.switchToMoon`)),1)]),_:1})])):l(``,!0),J.value.isMoon?(t(),h(`div`,B,[s(p(g),{onClick:Ne,variant:`outline`,size:`sm`},{default:r(()=>[o(a(p(q)(`planet.backToPlanet`)),1)]),_:1})])):l(``,!0)]),s(p(T),null,{default:r(()=>[s(p(C),null,{default:r(()=>[s(p(S),null,{default:r(()=>[o(a(p(q)(`overview.resourceOverview`)),1)]),_:1})]),_:1}),s(p(D),null,{default:r(()=>[s(p(j),{"default-value":`overview`,class:`w-full`},{default:r(()=>[s(p(M),{class:`grid w-full grid-cols-3`},{default:r(()=>[s(p(P),{value:`overview`},{default:r(()=>[...c[1]||=[o(`概览`,-1)]]),_:1}),s(p(P),{value:`production`},{default:r(()=>[...c[2]||=[o(`产量详情`,-1)]]),_:1}),s(p(P),{value:`consumption`},{default:r(()=>[...c[3]||=[o(`消耗详情`,-1)]]),_:1})]),_:1}),s(p(N),{value:`overview`,class:`mt-4`},{default:r(()=>[s(p(ce),null,{default:r(()=>[s(p(le),null,{default:r(()=>[s(p(b),null,{default:r(()=>[s(p(w),null,{default:r(()=>[o(a(p(q)(`common.resourceType`)),1)]),_:1}),s(p(w),{class:`text-right`},{default:r(()=>[o(a(p(q)(`resources.current`)),1)]),_:1}),s(p(w),{class:`text-right`},{default:r(()=>[o(a(p(q)(`resources.max`)),1)]),_:1}),s(p(w),{class:`text-right`},{default:r(()=>[o(a(p(q)(`resources.production`))+a(p(q)(`resources.perHour`)),1)]),_:1}),s(p(w),{class:`text-right`},{default:r(()=>[o(a(p(q)(`resources.consumption`))+a(p(q)(`resources.perHour`)),1)]),_:1})]),_:1})]),_:1}),s(p(k),null,{default:r(()=>[(t(),h(f,null,n(Q,e=>s(p(b),{key:e.key},{default:r(()=>[s(p(O),{class:`font-medium`},{default:r(()=>[m(`div`,V,[s(v,{type:e.key,size:`sm`},null,8,[`type`]),o(` `+a(p(q)(`resources.${e.key}`)),1)])]),_:2},1024),s(p(O),{class:i([`text-right`,p(x)(J.value.resources[e.key],Y.value?.[e.key]||1/0)])},{default:r(()=>[o(a(p(E)(J.value.resources[e.key])),1)]),_:2},1032,[`class`]),s(p(O),{class:`text-right text-muted-foreground`},{default:r(()=>[o(a(p(E)(Y.value?.[e.key]||0)),1)]),_:2},1024),s(p(O),{class:`text-right text-green-600 dark:text-green-400`},{default:r(()=>[o(` +`+a(p(E)(Oe.value?.[e.key]||0)),1)]),_:2},1024),s(p(O),{class:`text-right text-red-600 dark:text-red-400`},{default:r(()=>[e.key===`energy`?(t(),h(f,{key:0},[o(`-`+a(p(E)(ke.value)),1)],64)):(t(),h(f,{key:1},[o(`-`)],64))]),_:2},1024)]),_:2},1024)),64))]),_:1})]),_:1})]),_:1}),s(p(N),{value:`production`,class:`mt-4`},{default:r(()=>[m(`div`,H,[(t(),h(f,null,n(Q,e=>m(`div`,{key:e.key,class:`border-b last:border-b-0 pb-4 last:pb-0`},[m(`div`,U,[s(v,{type:e.key,size:`sm`},null,8,[`type`]),m(`span`,W,a(p(q)(`resources.${e.key}`)),1)]),X.value?(t(),h(`div`,ue,[e.key===`energy`&&X.value.energy.sources?(t(!0),h(f,{key:0},n(X.value.energy.sources,(e,n)=>(t(),h(`div`,{key:n,class:`flex justify-between`},[m(`span`,de,[o(a(p(q)(e.name))+` `,1),e.name.startsWith(`buildings.`)?(t(),h(f,{key:0},[o(`(`+a(p(q)(`common.level`))+` `+a(e.level)+`)`,1)],64)):(t(),h(f,{key:1},[o(`(`+a(e.level)+`)`,1)],64))]),m(`span`,fe,` +`+a(p(E)(Math.floor(e.production)))+`/`+a(p(q)(`resources.hour`)),1)]))),128)):(t(),h(`div`,pe,[m(`span`,G,a(p(q)(X.value[e.key].buildingName))+` (`+a(p(q)(`common.level`))+` `+a(X.value[e.key].buildingLevel)+`) `,1),m(`span`,me,` +`+a(p(E)(Math.floor(X.value[e.key].baseProduction)))+`/`+a(p(q)(`resources.hour`)),1)])),(t(!0),h(f,null,n(X.value[e.key].bonuses,(e,n)=>(t(),h(`div`,{key:n,class:`flex justify-between`},[m(`span`,he,a(p(q)(e.name))+` (`+a(e.percentage>0?`+`:``)+a(e.percentage)+`%) `,1),m(`span`,{class:i(e.value>0?`text-green-600 dark:text-green-400`:`text-red-600 dark:text-red-400`)},a(e.value>0?`+`:``)+a(p(E)(Math.floor(e.value)))+`/`+a(p(q)(`resources.hour`)),3)]))),128)),m(`div`,ge,[m(`span`,null,a(p(q)(`overview.totalProduction`)),1),m(`span`,_e,` +`+a(p(E)(Math.floor(X.value[e.key].finalProduction)))+`/`+a(p(q)(`resources.hour`)),1)])])):l(``,!0)])),64))])]),_:1}),s(p(N),{value:`consumption`,class:`mt-4`},{default:r(()=>[m(`div`,ve,[(t(),h(f,null,n(Ae,n=>ae(m(`div`,{key:n.key,class:`flex justify-between text-sm`},[Z.value?(t(),h(`span`,ye,a(p(q)(Z.value[n.key].buildingName))+` (`+a(p(q)(`common.level`))+` `+a(Z.value[n.key].buildingLevel)+`) `,1)):l(``,!0),Z.value?(t(),h(`span`,be,` -`+a(p(E)(Math.floor(Z.value[n.key].consumption)))+`/`+a(p(q)(`resources.hour`)),1)):l(``,!0)]),[[e,Z.value&&Z.value[n.key].buildingLevel>0]])),64)),Z.value?(t(),h(`div`,xe,[m(`span`,null,a(p(q)(`overview.totalConsumption`)),1),m(`span`,Se,` -`+a(p(E)(Math.floor(Z.value.total)))+`/`+a(p(q)(`resources.hour`)),1)])):l(``,!0),Z.value&&Z.value.total===0?(t(),h(`div`,Ce,a(p(q)(`overview.noConsumption`)),1)):l(``,!0)])]),_:1})]),_:1})]),_:1})]),_:1}),s(p(T),null,{default:r(()=>[s(p(C),null,{default:r(()=>[s(p(S),null,{default:r(()=>[o(a(p(q)(`overview.fleetInfo`)),1)]),_:1}),s(p(oe),null,{default:r(()=>[o(a(p(q)(`overview.currentShips`)),1)]),_:1})]),_:1}),s(p(D),null,{default:r(()=>[m(`div`,we,[(t(!0),h(f,null,n(J.value.fleet,(e,n)=>(t(),h(`div`,{key:n},[m(`p`,Te,a(p(De)[n].name),1),m(`p`,Ee,a(e),1)]))),128))])]),_:1})]),_:1})])):l(``,!0)}});export{K as default}; \ No newline at end of file diff --git a/docs/assets/OverviewView-DdvtPdf7.js b/docs/assets/OverviewView-DdvtPdf7.js deleted file mode 100644 index 12027f4..0000000 --- a/docs/assets/OverviewView-DdvtPdf7.js +++ /dev/null @@ -1 +0,0 @@ -import{$t as e,C as t,Dn as n,En as r,Gn as i,Gt as a,Jt as o,Qt as s,Vt as ee,Xn as c,Xt as te,Yt as l,Zt as u,dt as ne,en as d,ft as f,gn as p,mn as m,qn as h,tn as re,ut as ie,w as ae}from"./game-logic-Bi1l7y4K.js";import"./vendor-pinia-DqhKuBjp.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-Dr0JspcV.js";import"./vendor-others-DTUzJ7S-.js";import"./vendor-reka-ui-BEHIKScj.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CJcfYqoW.js";import{t as oe}from"./CardDescription-BSLS07AU.js";import"./game-config-CG6z6nnH.js";import{C as g,E as se,H as _,K as v,N as y,S as b,T as x,W as S,_ as C,b as w,f as T,m as ce,q as le,v as E,w as D,x as O,y as k}from"./index-BT5w6et-.js";import{t as A}from"./useGameConfig-b98LOtBY.js";import{i as j,n as M,r as N,t as P}from"./TabsTrigger-DrosU7aN.js";var F={key:0,class:`container mx-auto p-4 sm:p-6 space-y-4 sm:space-y-6`},I={class:`text-center`},L={class:`text-2xl sm:text-3xl font-bold mb-1 sm:mb-2 flex items-center justify-center gap-2`},R={class:`text-xs sm:text-sm text-muted-foreground`},z={key:0,class:`mt-2`},B={key:1,class:`mt-2`},V={class:`flex items-center gap-2`},H={class:`space-y-4`},U={class:`flex items-center gap-2 mb-2`},W={class:`font-semibold`},ue={key:0,class:`ml-6 space-y-1 text-sm`},de={class:`text-muted-foreground`},fe={class:`text-green-600 dark:text-green-400`},G={key:1,class:`flex justify-between`},pe={class:`text-muted-foreground`},me={class:`text-green-600 dark:text-green-400`},he={class:`text-muted-foreground ml-4`},ge={class:`flex justify-between font-semibold pt-1 border-t mt-1`},_e={class:`text-green-600 dark:text-green-400`},ve={class:`space-y-2`},ye={key:0,class:`text-muted-foreground`},be={key:1,class:`text-red-600 dark:text-red-400`},xe={key:0,class:`flex justify-between font-semibold pt-2 border-t`},Se={class:`text-red-600 dark:text-red-400`},Ce={key:1,class:`text-sm text-muted-foreground text-center py-2`},we={class:`grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-3 sm:gap-4`},Te={class:`text-xs sm:text-sm text-muted-foreground`},Ee={class:`text-lg sm:text-xl font-bold`},K=re({__name:`OverviewView`,setup(re){let K=le(),{t:q}=v(),{SHIPS:De}=A(),J=o(()=>K.currentPlanet),Oe=o(()=>J.value?ae(J.value,K.player.officers):null),Y=o(()=>J.value?t(J.value,K.player.officers):null),ke=o(()=>J.value?ne(J.value):0),X=o(()=>J.value?f(J.value,K.player.officers,Date.now()):null),Z=o(()=>J.value?ie(J.value):null),Q=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`energy`},{key:`darkMatter`}],Ae=[{key:`metalMine`},{key:`crystalMine`},{key:`deuteriumSynthesizer`}],$=o(()=>!J.value||J.value.isMoon?null:je(J.value.id)),je=e=>K.player.planets.find(t=>t.isMoon&&t.parentPlanetId===e)||null,Me=()=>{$.value&&(K.currentPlanetId=$.value.id)},Ne=()=>{J.value?.parentPlanetId&&(K.currentPlanetId=J.value.parentPlanetId)};return(t,o)=>J.value?(m(),s(`div`,F,[l(`div`,I,[l(`h1`,L,[e(c(J.value.name)+` `,1),J.value.isMoon?(m(),te(i(_),{key:0,variant:`secondary`},{default:r(()=>[e(c(i(q)(`planet.moon`)),1)]),_:1})):u(``,!0)]),l(`p`,R,c(i(q)(`planet.position`))+`: [`+c(J.value.position.galaxy)+`:`+c(J.value.position.system)+`:`+c(J.value.position.position)+`] `,1),!J.value.isMoon&&$.value?(m(),s(`div`,z,[d(i(S),{onClick:Me,variant:`outline`,size:`sm`},{default:r(()=>[o[0]||=l(`span`,{class:`mr-2`},`🌙`,-1),e(` `+c(i(q)(`planet.switchToMoon`)),1)]),_:1})])):u(``,!0),J.value.isMoon?(m(),s(`div`,B,[d(i(S),{onClick:Ne,variant:`outline`,size:`sm`},{default:r(()=>[e(c(i(q)(`planet.backToPlanet`)),1)]),_:1})])):u(``,!0)]),d(i(w),null,{default:r(()=>[d(i(E),null,{default:r(()=>[d(i(C),null,{default:r(()=>[e(c(i(q)(`overview.resourceOverview`)),1)]),_:1})]),_:1}),d(i(k),null,{default:r(()=>[d(i(j),{"default-value":`overview`,class:`w-full`},{default:r(()=>[d(i(M),{class:`grid w-full grid-cols-3`},{default:r(()=>[d(i(P),{value:`overview`},{default:r(()=>[...o[1]||=[e(`概览`,-1)]]),_:1}),d(i(P),{value:`production`},{default:r(()=>[...o[2]||=[e(`产量详情`,-1)]]),_:1}),d(i(P),{value:`consumption`},{default:r(()=>[...o[3]||=[e(`消耗详情`,-1)]]),_:1})]),_:1}),d(i(N),{value:`overview`,class:`mt-4`},{default:r(()=>[d(i(se),null,{default:r(()=>[d(i(O),null,{default:r(()=>[d(i(g),null,{default:r(()=>[d(i(b),null,{default:r(()=>[e(c(i(q)(`common.resourceType`)),1)]),_:1}),d(i(b),{class:`text-right`},{default:r(()=>[e(c(i(q)(`resources.current`)),1)]),_:1}),d(i(b),{class:`text-right`},{default:r(()=>[e(c(i(q)(`resources.max`)),1)]),_:1}),d(i(b),{class:`text-right`},{default:r(()=>[e(c(i(q)(`resources.production`))+c(i(q)(`resources.perHour`)),1)]),_:1}),d(i(b),{class:`text-right`},{default:r(()=>[e(c(i(q)(`resources.consumption`))+c(i(q)(`resources.perHour`)),1)]),_:1})]),_:1})]),_:1}),d(i(x),null,{default:r(()=>[(m(),s(a,null,p(Q,t=>d(i(g),{key:t.key},{default:r(()=>[d(i(D),{class:`font-medium`},{default:r(()=>[l(`div`,V,[d(y,{type:t.key,size:`sm`},null,8,[`type`]),e(` `+c(i(q)(`resources.${t.key}`)),1)])]),_:2},1024),d(i(D),{class:h([`text-right`,i(ce)(J.value.resources[t.key],Y.value?.[t.key]||1/0)])},{default:r(()=>[e(c(i(T)(J.value.resources[t.key])),1)]),_:2},1032,[`class`]),d(i(D),{class:`text-right text-muted-foreground`},{default:r(()=>[e(c(i(T)(Y.value?.[t.key]||0)),1)]),_:2},1024),d(i(D),{class:`text-right text-green-600 dark:text-green-400`},{default:r(()=>[e(` +`+c(i(T)(Oe.value?.[t.key]||0)),1)]),_:2},1024),d(i(D),{class:`text-right text-red-600 dark:text-red-400`},{default:r(()=>[t.key===`energy`?(m(),s(a,{key:0},[e(`-`+c(i(T)(ke.value)),1)],64)):(m(),s(a,{key:1},[e(`-`)],64))]),_:2},1024)]),_:2},1024)),64))]),_:1})]),_:1})]),_:1}),d(i(N),{value:`production`,class:`mt-4`},{default:r(()=>[l(`div`,H,[(m(),s(a,null,p(Q,t=>l(`div`,{key:t.key,class:`border-b last:border-b-0 pb-4 last:pb-0`},[l(`div`,U,[d(y,{type:t.key,size:`sm`},null,8,[`type`]),l(`span`,W,c(i(q)(`resources.${t.key}`)),1)]),X.value?(m(),s(`div`,ue,[t.key===`energy`&&X.value.energy.sources?(m(!0),s(a,{key:0},p(X.value.energy.sources,(t,n)=>(m(),s(`div`,{key:n,class:`flex justify-between`},[l(`span`,de,[e(c(i(q)(t.name))+` `,1),t.name.startsWith(`buildings.`)?(m(),s(a,{key:0},[e(`(`+c(i(q)(`common.level`))+` `+c(t.level)+`)`,1)],64)):(m(),s(a,{key:1},[e(`(`+c(t.level)+`)`,1)],64))]),l(`span`,fe,` +`+c(i(T)(Math.floor(t.production)))+`/`+c(i(q)(`resources.hour`)),1)]))),128)):(m(),s(`div`,G,[l(`span`,pe,c(i(q)(X.value[t.key].buildingName))+` (`+c(i(q)(`common.level`))+` `+c(X.value[t.key].buildingLevel)+`) `,1),l(`span`,me,` +`+c(i(T)(Math.floor(X.value[t.key].baseProduction)))+`/`+c(i(q)(`resources.hour`)),1)])),(m(!0),s(a,null,p(X.value[t.key].bonuses,(e,t)=>(m(),s(`div`,{key:t,class:`flex justify-between`},[l(`span`,he,c(i(q)(e.name))+` (`+c(e.percentage>0?`+`:``)+c(e.percentage)+`%) `,1),l(`span`,{class:h(e.value>0?`text-green-600 dark:text-green-400`:`text-red-600 dark:text-red-400`)},c(e.value>0?`+`:``)+c(i(T)(Math.floor(e.value)))+`/`+c(i(q)(`resources.hour`)),3)]))),128)),l(`div`,ge,[l(`span`,null,c(i(q)(`overview.totalProduction`)),1),l(`span`,_e,` +`+c(i(T)(Math.floor(X.value[t.key].finalProduction)))+`/`+c(i(q)(`resources.hour`)),1)])])):u(``,!0)])),64))])]),_:1}),d(i(N),{value:`consumption`,class:`mt-4`},{default:r(()=>[l(`div`,ve,[(m(),s(a,null,p(Ae,e=>n(l(`div`,{key:e.key,class:`flex justify-between text-sm`},[Z.value?(m(),s(`span`,ye,c(i(q)(Z.value[e.key].buildingName))+` (`+c(i(q)(`common.level`))+` `+c(Z.value[e.key].buildingLevel)+`) `,1)):u(``,!0),Z.value?(m(),s(`span`,be,` -`+c(i(T)(Math.floor(Z.value[e.key].consumption)))+`/`+c(i(q)(`resources.hour`)),1)):u(``,!0)]),[[ee,Z.value&&Z.value[e.key].buildingLevel>0]])),64)),Z.value?(m(),s(`div`,xe,[l(`span`,null,c(i(q)(`overview.totalConsumption`)),1),l(`span`,Se,` -`+c(i(T)(Math.floor(Z.value.total)))+`/`+c(i(q)(`resources.hour`)),1)])):u(``,!0),Z.value&&Z.value.total===0?(m(),s(`div`,Ce,c(i(q)(`overview.noConsumption`)),1)):u(``,!0)])]),_:1})]),_:1})]),_:1})]),_:1}),d(i(w),null,{default:r(()=>[d(i(E),null,{default:r(()=>[d(i(C),null,{default:r(()=>[e(c(i(q)(`overview.fleetInfo`)),1)]),_:1}),d(i(oe),null,{default:r(()=>[e(c(i(q)(`overview.currentShips`)),1)]),_:1})]),_:1}),d(i(k),null,{default:r(()=>[l(`div`,we,[(m(!0),s(a,null,p(J.value.fleet,(e,t)=>(m(),s(`div`,{key:t},[l(`p`,Te,c(i(De)[t].name),1),l(`p`,Ee,c(e),1)]))),128))])]),_:1})]),_:1})])):u(``,!0)}});export{K as default}; \ No newline at end of file diff --git a/docs/assets/ResearchView-BEvEoPdM.js b/docs/assets/ResearchView-BEvEoPdM.js deleted file mode 100644 index c086ba0..0000000 --- a/docs/assets/ResearchView-BEvEoPdM.js +++ /dev/null @@ -1,2 +0,0 @@ -import{$t as e,Dn as t,En as n,Gn as r,Gt as i,It as a,Jt as o,Ln as s,Qt as c,S as l,Vt as ee,Xn as u,Xt as te,Yt as d,Zt as ne,d as re,en as f,gn as p,mn as m,qn as ie,tn as ae,u as oe,v as h,y as g}from"./game-logic-Bi1l7y4K.js";import"./vendor-pinia-DqhKuBjp.js";import"./vendor-vue-router-1sDnnIWZ.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-Dr0JspcV.js";import"./vendor-others-DTUzJ7S-.js";import"./vendor-reka-ui-BEHIKScj.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CJcfYqoW.js";import"./vendor-icons-z9V6Jdbh.js";import{t as se}from"./CardDescription-BSLS07AU.js";import{d as _,v}from"./game-config-CG6z6nnH.js";import{D as ce,H as le,K as ue,N as de,W as y,_ as b,a as x,b as S,f as C,h as w,i as T,l as E,o as D,q as O,r as k,s as A,u as j,v as M,y as N}from"./index-BT5w6et-.js";import{t as P}from"./useGameConfig-b98LOtBY.js";import{t as F}from"./CardUnlockOverlay-DYfgGY6J.js";import{t as I}from"./UnlockRequirement-CoWPiUl8.js";var L={key:0,class:`container mx-auto p-4 sm:p-6`},R={class:`text-2xl sm:text-3xl font-bold mb-4 sm:mb-6`},fe={class:`grid grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4`},z={class:`mb-2`},B={class:`flex flex-col sm:flex-row sm:justify-between sm:items-start gap-2`},V={class:`space-y-2.5 sm:space-y-3`},pe={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},me={class:`text-muted-foreground mb-1 sm:mb-2`},he={class:`space-y-1 sm:space-y-1.5`},ge={class:`text-xs`},H=ae({__name:`ResearchView`,setup(ae){let H=O(),_e=ce(),{t:U}=ue(),{TECHNOLOGIES:W,BUILDINGS:ve}=P(),G=o(()=>H.currentPlanet),K=o(()=>H.player),q=s(!1),J=s(``),Y=s(``),ye=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`darkMatter`}],X=e=>{if(!H.currentPlanet||!re(H.currentPlanet,e,H.player.technologies,H.player.researchQueue).valid)return!1;let t=H.player.technologies[e]||0,{queueItem:n}=oe(H.currentPlanet,e,t,H.player.officers,H.player.technologies);return H.player.researchQueue.push(n),!0},Z=e=>{if(!G.value)return!1;let t=W.value[e],n=g(t,Q(e)+1);return!n||Object.keys(n).length===0?!0:h(G.value,H.player.technologies,n)},be=e=>{if(!G.value)return U(`researchView.research`);let t=W.value[e],n=Q(e);if(t.maxLevel!==void 0&&n>=t.maxLevel)return U(`researchView.maxLevelReached`);let r=l(H.player.technologies);return K.value.researchQueue.length>=r||Z(e)?U(`researchView.research`):U(`buildingsView.requirementsNotMet`)},xe=e=>{let t=W.value[e],n=g(t,Q(e)+1);if(!n||!G.value)return``;let r=[];for(let[e,t]of Object.entries(n))if(Object.values(_).includes(e)){let n=e,i=G.value.buildings[n]||0,a=ve.value[n]?.name||n,o=i>=t?`✓`:`✗`;r.push(`${o} ${a}: Lv ${t} (${U(`common.current`)}: Lv ${i})`)}else if(Object.values(v).includes(e)){let n=e,i=H.player.technologies[n]||0,a=W.value[n]?.name||n,o=i>=t?`✓`:`✗`;r.push(`${o} ${a}: Lv ${t} (${U(`common.current`)}: Lv ${i})`)}return r.join(` -`)},Se=e=>{if(!Z(e)){J.value=U(`common.requirementsNotMet`),Y.value=xe(e),q.value=!0;return}X(e)||(J.value=U(`researchView.researchFailed`),Y.value=U(`researchView.researchFailedMessage`),q.value=!0)},Q=e=>K.value.technologies[e]||0,Ce=e=>{if(!G.value)return!1;let t=W.value[e],n=Q(e);if(t.maxLevel!==void 0&&n>=t.maxLevel)return!1;let r=l(H.player.technologies);if(K.value.researchQueue.length>=r)return!1;let i=$(e,n+1);return h(G.value,H.player.technologies,t.requirements)&&G.value.resources.metal>=i.metal&&G.value.resources.crystal>=i.crystal&&G.value.resources.deuterium>=i.deuterium&&G.value.resources.darkMatter>=i.darkMatter},$=(e,t)=>a(e,t);return(a,o)=>G.value?(m(),c(`div`,L,[f(I,{"required-building":r(_).ResearchLab,"required-level":1},null,8,[`required-building`]),d(`h1`,R,u(r(U)(`researchView.title`)),1),d(`div`,fe,[(m(!0),c(i,null,p(Object.values(r(v)),a=>(m(),te(r(S),{key:a,class:`relative`},{default:n(()=>[f(F,{requirements:r(W)[a].requirements,currentLevel:Q(a)},null,8,[`requirements`,`currentLevel`]),f(r(M),null,{default:n(()=>[d(`div`,z,[d(`div`,B,[f(r(b),{class:`text-sm sm:text-base lg:text-lg cursor-pointer hover:text-primary transition-colors underline decoration-dotted underline-offset-4 order-2 sm:order-1`,onClick:e=>r(_e).openTechnology(a,Q(a))},{default:n(()=>[e(u(r(W)[a].name),1)]),_:2},1032,[`onClick`]),f(r(le),{variant:`secondary`,class:`text-xs whitespace-nowrap self-start order-1 sm:order-2`},{default:n(()=>[e(` Lv `+u(Q(a)),1)]),_:2},1024)])]),f(r(se),{class:`text-xs sm:text-sm`},{default:n(()=>[e(u(r(W)[a].description),1)]),_:2},1024)]),_:2},1024),f(r(N),null,{default:n(()=>[d(`div`,V,[d(`div`,pe,[d(`p`,me,u(r(U)(`researchView.researchCost`))+`:`,1),d(`div`,he,[(m(),c(i,null,p(ye,e=>t(d(`div`,{key:e.key,class:`flex items-center gap-1.5 sm:gap-2`},[f(de,{type:e.key,size:`sm`},null,8,[`type`]),d(`span`,ge,u(r(U)(`resources.${e.key}`))+`:`,1),d(`span`,{class:ie([`font-medium text-xs sm:text-sm`,r(w)(G.value.resources[e.key],$(a,Q(a)+1)[e.key])])},u(r(C)($(a,Q(a)+1)[e.key])),3)]),[[ee,e.key!==`darkMatter`||$(a,Q(a)+1).darkMatter>0]])),64))])]),f(r(y),{onClick:e=>Se(a),disabled:!Ce(a),class:`w-full`},{default:n(()=>[e(u(be(a)),1)]),_:2},1032,[`onClick`,`disabled`])])]),_:2},1024)]),_:2},1024))),128))]),f(r(j),{open:q.value,"onUpdate:open":o[0]||=e=>q.value=e},{default:n(()=>[f(r(A),null,{default:n(()=>[f(r(T),null,{default:n(()=>[f(r(k),null,{default:n(()=>[e(u(J.value),1)]),_:1}),f(r(D),{class:`whitespace-pre-line`},{default:n(()=>[e(u(Y.value),1)]),_:1})]),_:1}),f(r(x),null,{default:n(()=>[f(r(E),null,{default:n(()=>[e(u(r(U)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])])):ne(``,!0)}});export{H as default}; \ No newline at end of file diff --git a/docs/assets/ResearchView-BoGXU7Gy.js b/docs/assets/ResearchView-BoGXU7Gy.js new file mode 100644 index 0000000..debf20d --- /dev/null +++ b/docs/assets/ResearchView-BoGXU7Gy.js @@ -0,0 +1,2 @@ +import{$t as e,En as t,J as n,On as r,Rn as i,Yn as a,ar as o,at as s,cn as ee,cr as c,dn as l,fn as u,ln as te,nt as d,on as f,pn as ne,q as re,qt as ie,rn as p,rr as m,sn as h,tt as g,un as _,zn as ae}from"./game-logic-BBFCPVtv.js";import"./vendor-pinia-L_8CmDWM.js";import"./vendor-vue-router-0mfLVB6Y.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-BC9uiVvf.js";import"./vendor-others-Bce0hM6h.js";import"./vendor-reka-ui-DR3m_AkV.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-Djj-oRw9.js";import"./vendor-icons-Ccm2_GPI.js";import{t as oe}from"./CardDescription-DduF5EVY.js";import{d as v,v as y}from"./game-config-DRP-gbpS.js";import{$ as se,A as ce,F as le,I as ue,J as de,K as b,L as x,M as S,N as C,X as w,d as T,f as E,j as D,k as O,l as k,m as A,o as j,p as M,x as N}from"./index-B4KMqZ_y.js";import{t as P}from"./useGameConfig-DLqfPHtW.js";import{t as F}from"./CardUnlockOverlay-CspXlcWR.js";import{t as I}from"./UnlockRequirement-DJ9dN5JL.js";var L={key:0,class:`container mx-auto p-4 sm:p-6`},R={class:`text-2xl sm:text-3xl font-bold mb-4 sm:mb-6`},z={class:`grid grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4`},fe={class:`mb-2`},B={class:`flex flex-col sm:flex-row sm:justify-between sm:items-start gap-2`},V={class:`space-y-2.5 sm:space-y-3`},pe={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},me={class:`text-muted-foreground mb-1 sm:mb-2`},he={class:`space-y-1 sm:space-y-1.5`},ge={class:`text-xs`},H=ne({__name:`ResearchView`,setup(ne){let H=se(),_e=N(),{t:U}=w(),{TECHNOLOGIES:W,BUILDINGS:ve}=P(),G=f(()=>H.currentPlanet),K=f(()=>H.player),q=a(!1),J=a(``),Y=a(``),ye=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`darkMatter`}],X=e=>{if(!H.currentPlanet||!n(H.currentPlanet,e,H.player.technologies,H.player.researchQueue).valid)return!1;let t=H.player.technologies[e]||0,{queueItem:r}=re(H.currentPlanet,e,t,H.player.officers,H.player.technologies);return H.player.researchQueue.push(r),!0},Z=e=>{if(!G.value)return!1;let t=W.value[e],n=d(t,Q(e)+1);return!n||Object.keys(n).length===0?!0:g(G.value,H.player.technologies,n)},be=e=>{if(!G.value)return U(`researchView.research`);let t=W.value[e],n=Q(e);if(t.maxLevel!==void 0&&n>=t.maxLevel)return U(`researchView.maxLevelReached`);let r=s(H.player.technologies);return K.value.researchQueue.length>=r||Z(e)?U(`researchView.research`):U(`buildingsView.requirementsNotMet`)},xe=e=>{let t=W.value[e],n=d(t,Q(e)+1);if(!n||!G.value)return``;let r=[];for(let[e,t]of Object.entries(n))if(Object.values(v).includes(e)){let n=e,i=G.value.buildings[n]||0,a=ve.value[n]?.name||n,o=i>=t?`✓`:`✗`;r.push(`${o} ${a}: Lv ${t} (${U(`common.current`)}: Lv ${i})`)}else if(Object.values(y).includes(e)){let n=e,i=H.player.technologies[n]||0,a=W.value[n]?.name||n,o=i>=t?`✓`:`✗`;r.push(`${o} ${a}: Lv ${t} (${U(`common.current`)}: Lv ${i})`)}return r.join(` +`)},Se=e=>{if(!Z(e)){J.value=U(`common.requirementsNotMet`),Y.value=xe(e),q.value=!0;return}X(e)||(J.value=U(`researchView.researchFailed`),Y.value=U(`researchView.researchFailedMessage`),q.value=!0)},Q=e=>K.value.technologies[e]||0,Ce=e=>{if(!G.value)return!1;let t=W.value[e],n=Q(e);if(t.maxLevel!==void 0&&n>=t.maxLevel)return!1;let r=s(H.player.technologies);if(K.value.researchQueue.length>=r)return!1;let i=$(e,n+1);return g(G.value,H.player.technologies,t.requirements)&&G.value.resources.metal>=i.metal&&G.value.resources.crystal>=i.crystal&&G.value.resources.deuterium>=i.deuterium&&G.value.resources.darkMatter>=i.darkMatter},$=(e,t)=>ie(e,t);return(n,a)=>G.value?(t(),_(`div`,L,[u(I,{"required-building":m(v).ResearchLab,"required-level":1},null,8,[`required-building`]),h(`h1`,R,c(m(U)(`researchView.title`)),1),h(`div`,z,[(t(!0),_(p,null,r(Object.values(m(y)),n=>(t(),ee(m(A),{key:n,class:`relative`},{default:i(()=>[u(F,{requirements:m(W)[n].requirements,currentLevel:Q(n)},null,8,[`requirements`,`currentLevel`]),u(m(E),null,{default:i(()=>[h(`div`,fe,[h(`div`,B,[u(m(T),{class:`text-sm sm:text-base lg:text-lg cursor-pointer hover:text-primary transition-colors underline decoration-dotted underline-offset-4 order-2 sm:order-1`,onClick:e=>m(_e).openTechnology(n,Q(n))},{default:i(()=>[l(c(m(W)[n].name),1)]),_:2},1032,[`onClick`]),u(m(b),{variant:`secondary`,class:`text-xs whitespace-nowrap self-start order-1 sm:order-2`},{default:i(()=>[l(` Lv `+c(Q(n)),1)]),_:2},1024)])]),u(m(oe),{class:`text-xs sm:text-sm`},{default:i(()=>[l(c(m(W)[n].description),1)]),_:2},1024)]),_:2},1024),u(m(M),null,{default:i(()=>[h(`div`,V,[h(`div`,pe,[h(`p`,me,c(m(U)(`researchView.researchCost`))+`:`,1),h(`div`,he,[(t(),_(p,null,r(ye,t=>ae(h(`div`,{key:t.key,class:`flex items-center gap-1.5 sm:gap-2`},[u(x,{type:t.key,size:`sm`},null,8,[`type`]),h(`span`,ge,c(m(U)(`resources.${t.key}`))+`:`,1),h(`span`,{class:o([`font-medium text-xs sm:text-sm`,m(k)(G.value.resources[t.key],$(n,Q(n)+1)[t.key])])},c(m(j)($(n,Q(n)+1)[t.key])),3)]),[[e,t.key!==`darkMatter`||$(n,Q(n)+1).darkMatter>0]])),64))])]),u(m(de),{onClick:e=>Se(n),disabled:!Ce(n),class:`w-full`},{default:i(()=>[l(c(be(n)),1)]),_:2},1032,[`onClick`,`disabled`])])]),_:2},1024)]),_:2},1024))),128))]),u(m(ue),{open:q.value,"onUpdate:open":a[0]||=e=>q.value=e},{default:i(()=>[u(m(C),null,{default:i(()=>[u(m(ce),null,{default:i(()=>[u(m(O),null,{default:i(()=>[l(c(J.value),1)]),_:1}),u(m(S),{class:`whitespace-pre-line`},{default:i(()=>[l(c(Y.value),1)]),_:1})]),_:1}),u(m(D),null,{default:i(()=>[u(m(le),null,{default:i(()=>[l(c(m(U)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])])):te(``,!0)}});export{H as default}; \ No newline at end of file diff --git a/docs/assets/SelectValue-DmEWUfvu.js b/docs/assets/SelectValue-8cT4Hu-1.js similarity index 52% rename from docs/assets/SelectValue-DmEWUfvu.js rename to docs/assets/SelectValue-8cT4Hu-1.js index 88bb573..b89e425 100644 --- a/docs/assets/SelectValue-DmEWUfvu.js +++ b/docs/assets/SelectValue-8cT4Hu-1.js @@ -1 +1 @@ -import{En as e,Gn as t,Jn as n,Xt as r,Yt as i,_n as a,en as o,ln as s,mn as c,qn as l,rn as u,tn as d}from"./game-logic-Bi1l7y4K.js";import{c as f}from"./vendor-others-DTUzJ7S-.js";import{$ as p,S as m,_ as h,b as g,d as _,et as v,f as y,g as b,h as x,m as S,p as C,v as w,x as T,y as E}from"./vendor-reka-ui-BEHIKScj.js";import{K as D,U as O,q as k}from"./vendor-icons-z9V6Jdbh.js";import{G as A}from"./index-BT5w6et-.js";var j=d({__name:`Select`,props:{open:{type:Boolean},defaultOpen:{type:Boolean},defaultValue:{},modelValue:{},by:{type:[String,Function]},dir:{},multiple:{type:Boolean},autocomplete:{},disabled:{type:Boolean},name:{},required:{type:Boolean}},emits:[`update:modelValue`,`update:open`],setup(i,{emit:o}){let l=p(i,o);return(i,o)=>(c(),r(t(m),s({"data-slot":`select`},t(l)),{default:e(e=>[a(i.$slots,`default`,n(u(e)))]),_:3},16))}}),M=d({inheritAttrs:!1,__name:`SelectContent`,props:{forceMount:{type:Boolean},position:{default:`popper`},bodyLock:{type:Boolean},side:{},sideOffset:{},sideFlip:{type:Boolean},align:{},alignOffset:{},alignFlip:{type:Boolean},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},disableUpdateOnLayoutShift:{type:Boolean},prioritizePosition:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},class:{}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(n,{emit:i}){let u=n,d=i,m=p(f(u,`class`),d);return(i,d)=>(c(),r(t(b),null,{default:e(()=>[o(t(T),s({"data-slot":`select-content`},{...i.$attrs,...t(m)},{class:t(A)(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--reka-select-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border shadow-md`,n.position===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,u.class)}),{default:e(()=>[o(t(I)),o(t(_),{class:l(t(A)(`p-1`,n.position===`popper`&&`h-[var(--reka-select-trigger-height)] w-full min-w-[var(--reka-select-trigger-width)] scroll-my-1`))},{default:e(()=>[a(i.$slots,`default`)]),_:3},8,[`class`]),o(t(F))]),_:3},16,[`class`])]),_:3}))}}),N={class:`absolute right-2 flex size-3.5 items-center justify-center`},P=d({__name:`SelectItem`,props:{value:{},disabled:{type:Boolean},textValue:{},asChild:{type:Boolean},as:{},class:{}},setup(n){let l=n,u=v(f(l,`class`));return(n,d)=>(c(),r(t(E),s({"data-slot":`select-item`},t(u),{class:t(A)(`focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2`,l.class)}),{default:e(()=>[i(`span`,N,[o(t(w),null,{default:e(()=>[a(n.$slots,`indicator-icon`,{},()=>[o(t(k),{class:`size-4`})])]),_:3})]),o(t(h),null,{default:e(()=>[a(n.$slots,`default`)]),_:3})]),_:3},16,[`class`]))}}),F=d({__name:`SelectScrollDownButton`,props:{asChild:{type:Boolean},as:{},class:{}},setup(n){let i=n,l=v(f(i,`class`));return(n,u)=>(c(),r(t(x),s({"data-slot":`select-scroll-down-button`},t(l),{class:t(A)(`flex cursor-default items-center justify-center py-1`,i.class)}),{default:e(()=>[a(n.$slots,`default`,{},()=>[o(t(D),{class:`size-4`})])]),_:3},16,[`class`]))}}),I=d({__name:`SelectScrollUpButton`,props:{asChild:{type:Boolean},as:{},class:{}},setup(n){let i=n,l=v(f(i,`class`));return(n,u)=>(c(),r(t(S),s({"data-slot":`select-scroll-up-button`},t(l),{class:t(A)(`flex cursor-default items-center justify-center py-1`,i.class)}),{default:e(()=>[a(n.$slots,`default`,{},()=>[o(t(O),{class:`size-4`})])]),_:3},16,[`class`]))}}),L=d({__name:`SelectTrigger`,props:{disabled:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},class:{},size:{default:`default`}},setup(n){let i=n,l=v(f(i,`class`,`size`));return(u,d)=>(c(),r(t(C),s({"data-slot":`select-trigger`,"data-size":n.size},t(l),{class:t(A)(`border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,i.class)}),{default:e(()=>[a(u.$slots,`default`),o(t(g),{"as-child":``},{default:e(()=>[o(t(D),{class:`size-4 opacity-50`})]),_:1})]),_:3},16,[`data-size`,`class`]))}}),R=d({__name:`SelectValue`,props:{placeholder:{},asChild:{type:Boolean},as:{}},setup(n){let i=n;return(n,o)=>(c(),r(t(y),s({"data-slot":`select-value`},i),{default:e(()=>[a(n.$slots,`default`)]),_:3},16))}});export{j as a,M as i,L as n,P as r,R as t}; \ No newline at end of file +import{En as e,Rn as t,ar as n,cn as r,fn as i,hn as a,kn as o,or as s,pn as c,rr as l,sn as u,xn as d}from"./game-logic-BBFCPVtv.js";import{l as f}from"./vendor-others-Bce0hM6h.js";import{$ as p,S as m,_ as h,b as g,d as _,et as v,f as y,g as b,h as x,m as S,p as C,v as w,x as T,y as E}from"./vendor-reka-ui-DR3m_AkV.js";import{X as D,Z as O,q as k}from"./vendor-icons-Ccm2_GPI.js";import{Y as A}from"./index-B4KMqZ_y.js";var j=c({__name:`Select`,props:{open:{type:Boolean},defaultOpen:{type:Boolean},defaultValue:{},modelValue:{},by:{type:[String,Function]},dir:{},multiple:{type:Boolean},autocomplete:{},disabled:{type:Boolean},name:{},required:{type:Boolean}},emits:[`update:modelValue`,`update:open`],setup(n,{emit:i}){let c=p(n,i);return(n,i)=>(e(),r(l(m),d({"data-slot":`select`},l(c)),{default:t(e=>[o(n.$slots,`default`,s(a(e)))]),_:3},16))}}),M=c({inheritAttrs:!1,__name:`SelectContent`,props:{forceMount:{type:Boolean},position:{default:`popper`},bodyLock:{type:Boolean},side:{},sideOffset:{},sideFlip:{type:Boolean},align:{},alignOffset:{},alignFlip:{type:Boolean},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},disableUpdateOnLayoutShift:{type:Boolean},prioritizePosition:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},class:{}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(a,{emit:s}){let c=a,u=s,m=p(f(c,`class`),u);return(s,u)=>(e(),r(l(b),null,{default:t(()=>[i(l(T),d({"data-slot":`select-content`},{...s.$attrs,...l(m)},{class:l(A)(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--reka-select-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border shadow-md`,a.position===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,c.class)}),{default:t(()=>[i(l(I)),i(l(_),{class:n(l(A)(`p-1`,a.position===`popper`&&`h-[var(--reka-select-trigger-height)] w-full min-w-[var(--reka-select-trigger-width)] scroll-my-1`))},{default:t(()=>[o(s.$slots,`default`)]),_:3},8,[`class`]),i(l(F))]),_:3},16,[`class`])]),_:3}))}}),N={class:`absolute right-2 flex size-3.5 items-center justify-center`},P=c({__name:`SelectItem`,props:{value:{},disabled:{type:Boolean},textValue:{},asChild:{type:Boolean},as:{},class:{}},setup(n){let a=n,s=v(f(a,`class`));return(n,c)=>(e(),r(l(E),d({"data-slot":`select-item`},l(s),{class:l(A)(`focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2`,a.class)}),{default:t(()=>[u(`span`,N,[i(l(w),null,{default:t(()=>[o(n.$slots,`indicator-icon`,{},()=>[i(l(O),{class:`size-4`})])]),_:3})]),i(l(h),null,{default:t(()=>[o(n.$slots,`default`)]),_:3})]),_:3},16,[`class`]))}}),F=c({__name:`SelectScrollDownButton`,props:{asChild:{type:Boolean},as:{},class:{}},setup(n){let a=n,s=v(f(a,`class`));return(n,c)=>(e(),r(l(x),d({"data-slot":`select-scroll-down-button`},l(s),{class:l(A)(`flex cursor-default items-center justify-center py-1`,a.class)}),{default:t(()=>[o(n.$slots,`default`,{},()=>[i(l(D),{class:`size-4`})])]),_:3},16,[`class`]))}}),I=c({__name:`SelectScrollUpButton`,props:{asChild:{type:Boolean},as:{},class:{}},setup(n){let a=n,s=v(f(a,`class`));return(n,c)=>(e(),r(l(S),d({"data-slot":`select-scroll-up-button`},l(s),{class:l(A)(`flex cursor-default items-center justify-center py-1`,a.class)}),{default:t(()=>[o(n.$slots,`default`,{},()=>[i(l(k),{class:`size-4`})])]),_:3},16,[`class`]))}}),L=c({__name:`SelectTrigger`,props:{disabled:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},class:{},size:{default:`default`}},setup(n){let a=n,s=v(f(a,`class`,`size`));return(c,u)=>(e(),r(l(C),d({"data-slot":`select-trigger`,"data-size":n.size},l(s),{class:l(A)(`border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,a.class)}),{default:t(()=>[o(c.$slots,`default`),i(l(g),{"as-child":``},{default:t(()=>[i(l(D),{class:`size-4 opacity-50`})]),_:1})]),_:3},16,[`data-size`,`class`]))}}),R=c({__name:`SelectValue`,props:{placeholder:{},asChild:{type:Boolean},as:{}},setup(n){let i=n;return(n,a)=>(e(),r(l(y),d({"data-slot":`select-value`},i),{default:t(()=>[o(n.$slots,`default`)]),_:3},16))}});export{j as a,M as i,L as n,P as r,R as t}; \ No newline at end of file diff --git a/docs/assets/SettingsView-CqA4xeYn.js b/docs/assets/SettingsView-CqA4xeYn.js new file mode 100644 index 0000000..beee5ac --- /dev/null +++ b/docs/assets/SettingsView-CqA4xeYn.js @@ -0,0 +1 @@ +import{An as e,En as t,Rn as n,Tn as r,Yn as i,ar as a,cn as o,cr as s,dn as c,fn as l,ln as ee,on as u,pn as d,rn as f,rr as p,sn as m,un as h,wn as g}from"./game-logic-BBFCPVtv.js";import"./vendor-pinia-L_8CmDWM.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-BC9uiVvf.js";import{n as _}from"./vendor-others-Bce0hM6h.js";import"./vendor-reka-ui-DR3m_AkV.js";import{t as v}from"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-Djj-oRw9.js";import{D as te,H as ne,S as re,V as ie,a as ae,c as oe,x as se,y as ce}from"./vendor-icons-Ccm2_GPI.js";import{t as y}from"./CardDescription-DduF5EVY.js";import{$ as le,A as ue,F as de,I as fe,J as b,M as pe,N as x,P as me,X as he,d as S,et as C,f as w,i as T,j as E,k as D,m as O,n as k,p as A,r as j}from"./index-B4KMqZ_y.js";var M=v(),N={class:`container mx-auto p-4 sm:p-6 space-y-6`},P={class:`flex items-center justify-between`},F={class:`text-2xl font-bold`},I={class:`flex items-center justify-between p-4 border rounded-lg`},L={class:`space-y-1`},R={class:`font-medium`},ge={class:`text-sm text-muted-foreground`},_e={class:`flex items-center justify-between p-4 border rounded-lg`},ve={class:`space-y-1`},ye={class:`font-medium`},be={class:`text-sm text-muted-foreground`},xe={class:`flex gap-2`},Se={class:`flex items-center justify-between p-4 border rounded-lg border-destructive/50`},Ce={class:`space-y-1`},we={class:`font-medium text-destructive`},Te={class:`text-sm text-muted-foreground`},Ee={class:`flex flex-col sm:flex-row items-start sm:items-center justify-between p-4 border rounded-lg gap-3`},De={class:`space-y-1 flex-1`},Oe={class:`font-medium`},ke={class:`text-sm text-muted-foreground`},Ae={class:`flex items-center gap-2 sm:gap-4 w-full sm:w-auto`},je={class:`flex items-center gap-2 flex-1 sm:flex-initial`},Me={class:`min-w-[60px] text-center font-medium`},Ne={class:`flex items-center justify-between p-4 border rounded-lg`},Pe={class:`space-y-1`},Fe={class:`font-medium`},Ie={class:`text-sm text-muted-foreground`},Le={class:`space-y-2`},z={class:`flex items-center justify-between text-sm`},Re={class:`text-muted-foreground`},ze={class:`font-medium`},Be={class:`flex items-center justify-between text-sm`},Ve={class:`text-muted-foreground`},He={class:`font-medium`},Ue={class:`pt-2`},We={class:`pt-2 border-t space-y-2`},Ge={class:`text-sm font-medium`},Ke={class:`flex flex-col gap-2`},qe={class:`ml-auto text-xs text-muted-foreground`},B=d({__name:`SettingsView`,setup(d){let{t:v}=he(),B=le(),V=i(),H=i(!1),U=i(!1),W=i(``),G=i(!1),K=i(``),q=i(``),J=null,Y=u(()=>k(B.player.lastManualUpdateCheck||0)),X=()=>{if(Y.value){W.value=``;return}let e=B.player.lastManualUpdateCheck||0,t=300*1e3-(Date.now()-e);if(t<=0){W.value=``;return}let n=Math.floor(t/6e4),r=Math.floor(t%6e4/1e3);W.value=`${String(n).padStart(2,`0`)}:${String(r).padStart(2,`0`)}`},Z=null;g(()=>{X(),Z=setInterval(X,1e3)}),r(()=>{Z&&clearInterval(Z)});let Je=()=>{window.open(`https://github.com/${C.author.name}/${C.name}`,`_blank`)},Ye=()=>{window.open(`https://qm.qq.com/q/${C.id}`,`_blank`)},Q=i(!1),$=i(null),Xe=async()=>{if(!(U.value||!Y.value)){U.value=!0;try{let e=await j(B.player.lastManualUpdateCheck||0,e=>{B.player.lastManualUpdateCheck=e});e?($.value=e,Q.value=!0):_.success(v(`settings.upToDate`))}catch(e){console.error(`Failed to check for updates:`,e),_.error(v(`settings.checkUpdateFailed`))}finally{U.value=!1}}},Ze=async()=>{try{H.value=!0;let e=localStorage.getItem(C.name),t=localStorage.getItem(`${C.name}-universe`),n=localStorage.getItem(`${C.name}-npcs`);if(!e){_.error(v(`settings.exportFailed`));return}let r={game:e,npcs:n,universe:t||null},i=`${C.name}-${new Date().toISOString().slice(0,10)}-${Date.now()}.json`,a=JSON.stringify(r,null,2);(0,M.saveAs)(new Blob([a],{type:`application/json`}),i),_.success(v(`settings.exportSuccess`))}catch(e){console.error(`Export failed:`,e),_.error(v(`settings.exportFailed`))}finally{H.value=!1}},Qe=()=>{V.value?.click()},$e=e=>{let t=e.target.files?.[0];t&&(K.value=v(`settings.importConfirmTitle`),q.value=v(`settings.importConfirmMessage`),G.value=!0,B.isPaused=!0,J=()=>et(t))},et=async e=>{try{let t=new FileReader;t.onload=e=>{try{let t=e.target?.result;if(typeof t==`string`){let e=JSON.parse(t);if(typeof e==`string`||!e.game){localStorage.setItem(C.name,t),_.success(v(`settings.importSuccess`)),setTimeout(()=>window.location.reload(),1e3);return}e.game&&localStorage.setItem(C.name,e.game),e.universe&&localStorage.setItem(`${C.name}-universe`,e.universe),e.npcs&&localStorage.setItem(`${C.name}-npcs`,e.npcs),_.success(v(`settings.importSuccess`)),setTimeout(()=>window.location.reload(),1e3)}else _.error(v(`settings.importFailed`))}catch(e){let t=e instanceof Error?e.message:String(e);_.error(v(`settings.importFailed`)+`: `+t)}},t.readAsText(e)}catch(e){console.error(`Import failed:`,e),_.error(v(`settings.importFailed`))}},tt=()=>{K.value=v(`settings.clearConfirmTitle`),q.value=v(`settings.clearConfirmMessage`),G.value=!0,J=nt},nt=()=>{B.isPaused=!0;try{localStorage.clear(),window.location.reload()}catch(e){console.error(`Failed to clear data:`,e),window.location.reload()}},rt=()=>{B.gameSpeed<10&&(B.gameSpeed=Math.min(10,B.gameSpeed+.5),_.success(v(`settings.speedChanged`,{speed:B.gameSpeed})))},it=()=>{B.gameSpeed>.5&&(B.gameSpeed=Math.max(.5,B.gameSpeed-.5),_.success(v(`settings.speedChanged`,{speed:B.gameSpeed})))},at=()=>{B.gameSpeed=1,_.success(v(`settings.speedReset`))},ot=()=>{B.isPaused=!B.isPaused,B.isPaused?_.info(v(`settings.gamePaused`)):_.success(v(`settings.gameResumed`))},st=()=>{J&&=(J(),null),G.value=!1},ct=()=>{B.isPaused=!1,J=null,G.value=!1,V.value&&(V.value.value=``)};return(r,i)=>(t(),h(`div`,N,[m(`div`,P,[m(`h1`,F,s(p(v)(`nav.settings`)),1)]),l(p(O),null,{default:n(()=>[l(p(w),null,{default:n(()=>[l(p(S),null,{default:n(()=>[c(s(p(v)(`settings.dataManagement`)),1)]),_:1}),l(p(y),null,{default:n(()=>[c(s(p(v)(`settings.dataManagementDesc`)),1)]),_:1})]),_:1}),l(p(A),{class:`space-y-4`},{default:n(()=>[m(`div`,I,[m(`div`,L,[m(`h3`,R,s(p(v)(`settings.exportData`)),1),m(`p`,ge,s(p(v)(`settings.exportDataDesc`)),1)]),l(p(b),{onClick:Ze,disabled:H.value},{default:n(()=>[l(p(ne),{class:`mr-2 h-4 w-4`}),c(` `+s(H.value?p(v)(`settings.exporting`):p(v)(`settings.export`)),1)]),_:1},8,[`disabled`])]),m(`div`,_e,[m(`div`,ve,[m(`h3`,ye,s(p(v)(`settings.importData`)),1),m(`p`,be,s(p(v)(`settings.importDataDesc`)),1)]),m(`div`,xe,[m(`input`,{ref_key:`fileInputRef`,ref:V,type:`file`,accept:`.json`,class:`hidden`,onChange:$e},null,544),l(p(b),{onClick:Qe,variant:`outline`},{default:n(()=>[l(p(ae),{class:`mr-2 h-4 w-4`}),c(` `+s(p(v)(`settings.selectFile`)),1)]),_:1})])]),m(`div`,Se,[m(`div`,Ce,[m(`h3`,we,s(p(v)(`settings.clearData`)),1),m(`p`,Te,s(p(v)(`settings.clearDataDesc`)),1)]),l(p(b),{onClick:tt,variant:`destructive`},{default:n(()=>[l(p(oe),{class:`mr-2 h-4 w-4`}),c(` `+s(p(v)(`settings.clear`)),1)]),_:1})])]),_:1})]),_:1}),l(p(O),null,{default:n(()=>[l(p(w),null,{default:n(()=>[l(p(S),null,{default:n(()=>[c(s(p(v)(`settings.gameSettings`)),1)]),_:1}),l(p(y),null,{default:n(()=>[c(s(p(v)(`settings.gameSettingsDesc`)),1)]),_:1})]),_:1}),l(p(A),{class:`space-y-4`},{default:n(()=>[m(`div`,Ee,[m(`div`,De,[m(`h3`,Oe,s(p(v)(`settings.gameSpeed`)),1),m(`p`,ke,s(p(v)(`settings.gameSpeedDesc`)),1)]),m(`div`,Ae,[m(`div`,je,[l(p(b),{onClick:it,variant:`outline`,size:`sm`,disabled:p(B).gameSpeed<=.5},{default:n(()=>[...i[2]||=[c(`-`,-1)]]),_:1},8,[`disabled`]),m(`span`,Me,s(p(B).gameSpeed||1)+`x`,1),l(p(b),{onClick:rt,variant:`outline`,size:`sm`,disabled:p(B).gameSpeed>=10},{default:n(()=>[...i[3]||=[c(`+`,-1)]]),_:1},8,[`disabled`])]),l(p(b),{onClick:at,variant:`ghost`,size:`sm`},{default:n(()=>[c(s(p(v)(`settings.reset`)),1)]),_:1})])]),m(`div`,Ne,[m(`div`,Pe,[m(`h3`,Fe,s(p(v)(`settings.gamePause`)),1),m(`p`,Ie,s(p(v)(`settings.gamePauseDesc`)),1)]),l(p(b),{onClick:ot,variant:p(B).isPaused?`default`:`outline`},{default:n(()=>[(t(),o(e(p(B).isPaused?p(se):p(re)),{class:`mr-2 h-4 w-4`})),c(` `+s(p(B).isPaused?p(v)(`settings.resume`):p(v)(`settings.pause`)),1)]),_:1},8,[`variant`])])]),_:1})]),_:1}),l(p(O),null,{default:n(()=>[l(p(w),null,{default:n(()=>[l(p(S),null,{default:n(()=>[c(s(p(v)(`settings.about`)),1)]),_:1})]),_:1}),l(p(A),{class:`space-y-4`},{default:n(()=>[m(`div`,Le,[m(`div`,z,[m(`span`,Re,s(p(v)(`settings.version`))+`:`,1),m(`span`,ze,s(p(C).version),1)]),m(`div`,Be,[m(`span`,Ve,s(p(v)(`settings.buildDate`))+`:`,1),m(`span`,He,s(p(C).buildDate),1)]),m(`div`,Ue,[l(p(b),{onClick:Xe,variant:`outline`,size:`sm`,disabled:U.value||!Y.value,class:`w-full`},{default:n(()=>[l(p(ce),{class:a([`mr-2 h-4 w-4`,{"animate-spin":U.value}])},null,8,[`class`]),U.value?(t(),h(f,{key:0},[c(s(p(v)(`settings.checking`)),1)],64)):!Y.value&&W.value?(t(),h(f,{key:1},[c(s(W.value),1)],64)):(t(),h(f,{key:2},[c(s(p(v)(`settings.checkUpdate`)),1)],64))]),_:1},8,[`disabled`])])]),m(`div`,We,[m(`h3`,Ge,s(p(v)(`settings.community`)),1),m(`div`,Ke,[l(p(b),{variant:`outline`,class:`w-full justify-start`,onClick:Je},{default:n(()=>[l(p(ie),{class:`mr-2 h-4 w-4`}),c(` `+s(p(v)(`settings.github`)),1)]),_:1}),p(B).locale===`zh-CN`||p(B).locale===`zh-TW`?(t(),o(p(b),{key:0,variant:`outline`,class:`w-full justify-start`,onClick:Ye},{default:n(()=>[l(p(te),{class:`mr-2 h-4 w-4`}),c(` `+s(p(v)(`settings.qqGroup`))+` `,1),m(`span`,qe,s(p(C).qq),1)]),_:1})):ee(``,!0)])])]),_:1})]),_:1}),l(p(fe),{open:G.value,"onUpdate:open":i[0]||=e=>G.value=e},{default:n(()=>[l(p(x),null,{default:n(()=>[l(p(ue),null,{default:n(()=>[l(p(D),null,{default:n(()=>[c(s(K.value),1)]),_:1}),l(p(pe),null,{default:n(()=>[c(s(q.value),1)]),_:1})]),_:1}),l(p(E),null,{default:n(()=>[l(p(me),{onClick:ct},{default:n(()=>[c(s(p(v)(`common.cancel`)),1)]),_:1}),l(p(de),{onClick:st},{default:n(()=>[c(s(p(v)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),l(T,{open:Q.value,"onUpdate:open":i[1]||=e=>Q.value=e,"version-info":$.value},null,8,[`open`,`version-info`])]))}});export{B as default}; \ No newline at end of file diff --git a/docs/assets/SettingsView-yJRibE1k.js b/docs/assets/SettingsView-yJRibE1k.js deleted file mode 100644 index b7fccbe..0000000 --- a/docs/assets/SettingsView-yJRibE1k.js +++ /dev/null @@ -1 +0,0 @@ -import{$t as e,En as t,Gn as n,Ln as r,Qt as i,Xn as a,Xt as o,Yt as s,Zt as ee,en as c,mn as l,tn as u,vn as te}from"./game-logic-Bi1l7y4K.js";import"./vendor-pinia-DqhKuBjp.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-Dr0JspcV.js";import{n as d}from"./vendor-others-DTUzJ7S-.js";import"./vendor-reka-ui-BEHIKScj.js";import{t as f}from"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CJcfYqoW.js";import{R as ne,T as re,b as ie,i as p,s as m,y as ae,z as oe}from"./vendor-icons-z9V6Jdbh.js";import{t as h}from"./CardDescription-BSLS07AU.js";import{J as g,K as se,W as _,_ as v,a as ce,b as y,c as b,i as x,l as S,o as C,q as w,r as T,s as E,u as D,v as O,y as k}from"./index-BT5w6et-.js";var A=f(),j={class:`container mx-auto p-4 sm:p-6 space-y-6`},M={class:`flex items-center justify-between`},N={class:`text-2xl font-bold`},P={class:`flex items-center justify-between p-4 border rounded-lg`},F={class:`space-y-1`},I={class:`font-medium`},L={class:`text-sm text-muted-foreground`},R={class:`flex items-center justify-between p-4 border rounded-lg`},z={class:`space-y-1`},B={class:`font-medium`},V={class:`text-sm text-muted-foreground`},H={class:`flex gap-2`},U={class:`flex items-center justify-between p-4 border rounded-lg border-destructive/50`},W={class:`space-y-1`},G={class:`font-medium text-destructive`},le={class:`text-sm text-muted-foreground`},ue={class:`flex items-center justify-between p-4 border rounded-lg`},de={class:`space-y-1`},fe={class:`font-medium`},pe={class:`text-sm text-muted-foreground`},me={class:`space-y-2`},he={class:`flex items-center justify-between text-sm`},ge={class:`text-muted-foreground`},_e={class:`font-medium`},ve={class:`flex items-center justify-between text-sm`},ye={class:`text-muted-foreground`},be={class:`font-medium`},xe={class:`pt-2 border-t space-y-2`},Se={class:`text-sm font-medium`},Ce={class:`flex flex-col gap-2`},we={class:`ml-auto text-xs text-muted-foreground`},K=u({__name:`SettingsView`,setup(u){let{t:f}=se(),K=w(),q=r(),J=r(!1),Y=r(!1),X=r(``),Z=r(``),Q=null,Te=()=>{window.open(`https://github.com/${g.author.name}/${g.name}`,`_blank`)},Ee=()=>{window.open(`https://qm.qq.com/q/${g.id}`,`_blank`)},De=async()=>{try{J.value=!0;let e=localStorage.getItem(g.name),t=localStorage.getItem(`${g.name}-universe`),n=localStorage.getItem(`${g.name}-npcs`);if(!e){d.error(f(`settings.exportFailed`));return}let r={game:e,npcs:n,universe:t||null},i=`${g.name}-${new Date().toISOString().slice(0,10)}-${Date.now()}.json`,a=JSON.stringify(r,null,2);(0,A.saveAs)(new Blob([a],{type:`application/json`}),i),d.success(f(`settings.exportSuccess`))}catch(e){console.error(`Export failed:`,e),d.error(f(`settings.exportFailed`))}finally{J.value=!1}},Oe=()=>{q.value?.click()},ke=e=>{let t=e.target.files?.[0];t&&(X.value=f(`settings.importConfirmTitle`),Z.value=f(`settings.importConfirmMessage`),Y.value=!0,K.isPaused=!0,Q=()=>Ae(t))},Ae=async e=>{try{let t=new FileReader;t.onload=e=>{try{let t=e.target?.result;if(typeof t==`string`){let e=JSON.parse(t);if(typeof e==`string`||!e.game){localStorage.setItem(g.name,t),d.success(f(`settings.importSuccess`)),setTimeout(()=>window.location.reload(),1e3);return}e.game&&localStorage.setItem(g.name,e.game),e.universe&&localStorage.setItem(`${g.name}-universe`,e.universe),e.npcs&&localStorage.setItem(`${g.name}-npcs`,e.npcs),d.success(f(`settings.importSuccess`)),setTimeout(()=>window.location.reload(),1e3)}else d.error(f(`settings.importFailed`))}catch(e){let t=e instanceof Error?e.message:String(e);d.error(f(`settings.importFailed`)+`: `+t)}},t.readAsText(e)}catch(e){console.error(`Import failed:`,e),d.error(f(`settings.importFailed`))}},$=()=>{X.value=f(`settings.clearConfirmTitle`),Z.value=f(`settings.clearConfirmMessage`),Y.value=!0,Q=je},je=()=>{localStorage.clear(),window.location.reload()},Me=()=>{K.isPaused=!K.isPaused,K.isPaused?d.info(f(`settings.gamePaused`)):d.success(f(`settings.gameResumed`))},Ne=()=>{Q&&=(Q(),null),Y.value=!1},Pe=()=>{K.isPaused=!1,Q=null,Y.value=!1,q.value&&(q.value.value=``)};return(r,u)=>(l(),i(`div`,j,[s(`div`,M,[s(`h1`,N,a(n(f)(`nav.settings`)),1)]),c(n(y),null,{default:t(()=>[c(n(O),null,{default:t(()=>[c(n(v),null,{default:t(()=>[e(a(n(f)(`settings.dataManagement`)),1)]),_:1}),c(n(h),null,{default:t(()=>[e(a(n(f)(`settings.dataManagementDesc`)),1)]),_:1})]),_:1}),c(n(k),{class:`space-y-4`},{default:t(()=>[s(`div`,P,[s(`div`,F,[s(`h3`,I,a(n(f)(`settings.exportData`)),1),s(`p`,L,a(n(f)(`settings.exportDataDesc`)),1)]),c(n(_),{onClick:De,disabled:J.value},{default:t(()=>[c(n(oe),{class:`mr-2 h-4 w-4`}),e(` `+a(J.value?n(f)(`settings.exporting`):n(f)(`settings.export`)),1)]),_:1},8,[`disabled`])]),s(`div`,R,[s(`div`,z,[s(`h3`,B,a(n(f)(`settings.importData`)),1),s(`p`,V,a(n(f)(`settings.importDataDesc`)),1)]),s(`div`,H,[s(`input`,{ref_key:`fileInputRef`,ref:q,type:`file`,accept:`.json`,class:`hidden`,onChange:ke},null,544),c(n(_),{onClick:Oe,variant:`outline`},{default:t(()=>[c(n(p),{class:`mr-2 h-4 w-4`}),e(` `+a(n(f)(`settings.selectFile`)),1)]),_:1})])]),s(`div`,U,[s(`div`,W,[s(`h3`,G,a(n(f)(`settings.clearData`)),1),s(`p`,le,a(n(f)(`settings.clearDataDesc`)),1)]),c(n(_),{onClick:$,variant:`destructive`},{default:t(()=>[c(n(m),{class:`mr-2 h-4 w-4`}),e(` `+a(n(f)(`settings.clear`)),1)]),_:1})])]),_:1})]),_:1}),c(n(y),null,{default:t(()=>[c(n(O),null,{default:t(()=>[c(n(v),null,{default:t(()=>[e(a(n(f)(`settings.gameSettings`)),1)]),_:1}),c(n(h),null,{default:t(()=>[e(a(n(f)(`settings.gameSettingsDesc`)),1)]),_:1})]),_:1}),c(n(k),{class:`space-y-4`},{default:t(()=>[s(`div`,ue,[s(`div`,de,[s(`h3`,fe,a(n(f)(`settings.gamePause`)),1),s(`p`,pe,a(n(f)(`settings.gamePauseDesc`)),1)]),c(n(_),{onClick:Me,variant:n(K).isPaused?`default`:`outline`},{default:t(()=>[(l(),o(te(n(K).isPaused?n(ae):n(ie)),{class:`mr-2 h-4 w-4`})),e(` `+a(n(K).isPaused?n(f)(`settings.resume`):n(f)(`settings.pause`)),1)]),_:1},8,[`variant`])])]),_:1})]),_:1}),c(n(y),null,{default:t(()=>[c(n(O),null,{default:t(()=>[c(n(v),null,{default:t(()=>[e(a(n(f)(`settings.about`)),1)]),_:1})]),_:1}),c(n(k),{class:`space-y-4`},{default:t(()=>[s(`div`,me,[s(`div`,he,[s(`span`,ge,a(n(f)(`settings.version`))+`:`,1),s(`span`,_e,a(n(g).version),1)]),s(`div`,ve,[s(`span`,ye,a(n(f)(`settings.buildDate`))+`:`,1),s(`span`,be,a(n(g).buildDate),1)])]),s(`div`,xe,[s(`h3`,Se,a(n(f)(`settings.community`)),1),s(`div`,Ce,[c(n(_),{variant:`outline`,class:`w-full justify-start`,onClick:Te},{default:t(()=>[c(n(ne),{class:`mr-2 h-4 w-4`}),e(` `+a(n(f)(`settings.github`)),1)]),_:1}),n(K).locale===`zh-CN`||n(K).locale===`zh-TW`?(l(),o(n(_),{key:0,variant:`outline`,class:`w-full justify-start`,onClick:Ee},{default:t(()=>[c(n(re),{class:`mr-2 h-4 w-4`}),e(` `+a(n(f)(`settings.qqGroup`))+` `,1),s(`span`,we,a(n(g).qq),1)]),_:1})):ee(``,!0)])])]),_:1})]),_:1}),c(n(D),{open:Y.value,"onUpdate:open":u[0]||=e=>Y.value=e},{default:t(()=>[c(n(E),null,{default:t(()=>[c(n(x),null,{default:t(()=>[c(n(T),null,{default:t(()=>[e(a(X.value),1)]),_:1}),c(n(C),null,{default:t(()=>[e(a(Z.value),1)]),_:1})]),_:1}),c(n(ce),null,{default:t(()=>[c(n(b),{onClick:Pe},{default:t(()=>[e(a(n(f)(`common.cancel`)),1)]),_:1}),c(n(S),{onClick:Ne},{default:t(()=>[e(a(n(f)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{K as default}; \ No newline at end of file diff --git a/docs/assets/ShipyardView-C8y8F-rK.js b/docs/assets/ShipyardView-C8y8F-rK.js deleted file mode 100644 index 4c0fa81..0000000 --- a/docs/assets/ShipyardView-C8y8F-rK.js +++ /dev/null @@ -1 +0,0 @@ -import{$t as e,Dn as t,En as n,Gn as r,Gt as i,Jt as a,Ln as o,Qt as s,Vt as c,Xn as l,Xt as ee,Yn as te,Yt as u,Zt as d,c as ne,en as f,gn as p,mn as m,o as re,qn as h,r as ie,s as ae,tn as oe,v as se}from"./game-logic-Bi1l7y4K.js";import"./vendor-pinia-DqhKuBjp.js";import"./vendor-vue-router-1sDnnIWZ.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-Dr0JspcV.js";import"./vendor-others-DTUzJ7S-.js";import"./vendor-reka-ui-BEHIKScj.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-CJcfYqoW.js";import"./vendor-icons-z9V6Jdbh.js";import{t as ce}from"./CardDescription-BSLS07AU.js";import{_ as g,d as le}from"./game-config-CG6z6nnH.js";import{D as _,K as v,L as ue,N as y,W as de,_ as fe,a as pe,b,f as x,g as S,h as C,i as w,l as T,o as E,q as D,r as O,s as k,u as A,v as j,y as M}from"./index-BT5w6et-.js";import{t as N}from"./useGameConfig-b98LOtBY.js";import{t as P}from"./CardUnlockOverlay-DYfgGY6J.js";import{t as F}from"./UnlockRequirement-CoWPiUl8.js";var I={key:0,class:`container mx-auto p-4 sm:p-6`},L={class:`text-2xl sm:text-3xl font-bold mb-4 sm:mb-6`},R={class:`mb-4 sm:mb-6 p-3 sm:p-4 bg-muted/50 rounded-lg border`},z={class:`flex items-center justify-between`},B={class:`text-sm sm:text-base font-medium`},me={class:`text-sm sm:text-base font-bold`},he={class:`mt-2`},ge={class:`w-full bg-background rounded-full h-2.5 sm:h-3 overflow-hidden`},_e={class:`grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4`},V={class:`space-y-3 sm:space-y-4`},ve={class:`grid grid-cols-2 gap-2 text-xs sm:text-sm`},ye={class:`text-muted-foreground`},be={class:`font-medium`},xe={class:`text-muted-foreground`},Se={class:`font-medium`},Ce={class:`text-muted-foreground`},we={class:`font-medium`},Te={class:`text-muted-foreground`},Ee={class:`font-medium`},De={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},Oe={class:`text-muted-foreground mb-1 sm:mb-2`},ke={class:`space-y-1 sm:space-y-1.5`},Ae={class:`text-xs`},je={class:`space-y-2`},Me={key:0,class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2 p-2.5 sm:p-3 bg-muted rounded-lg`},Ne={class:`font-medium text-muted-foreground`},Pe={class:`space-y-1 sm:space-y-1.5`},Fe={class:`text-xs`},H=oe({__name:`ShipyardView`,setup(oe){let H=D(),Ie=_(),{t:U}=v(),{SHIPS:W}=N(),G=a(()=>H.currentPlanet),K=o(!1),q=o(``),J=o(``),Y=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`darkMatter`}],X=a(()=>G.value?ae(G.value.fleet):0),Z=a(()=>G.value?ne(G.value,H.player.technologies):0),Q=o({[g.LightFighter]:0,[g.HeavyFighter]:0,[g.Cruiser]:0,[g.Battleship]:0,[g.Battlecruiser]:0,[g.Bomber]:0,[g.Destroyer]:0,[g.SmallCargo]:0,[g.LargeCargo]:0,[g.ColonyShip]:0,[g.Recycler]:0,[g.EspionageProbe]:0,[g.SolarSatellite]:0,[g.DarkMatterHarvester]:0,[g.Deathstar]:0}),Le=(e,t)=>{if(!H.currentPlanet||!re(H.currentPlanet,e,t,H.player.technologies).valid)return!1;let n=ie(H.currentPlanet,e,t,H.player.officers);return H.currentPlanet.buildQueue.push(n),!0},Re=e=>{let t=Q.value[e];if(t<=0){q.value=U(`shipyardView.inputError`),J.value=U(`shipyardView.inputErrorMessage`),K.value=!0;return}Le(e,t)?Q.value[e]=0:(q.value=U(`shipyardView.buildFailed`),J.value=U(`shipyardView.buildFailedMessage`),K.value=!0)},ze=e=>{if(!G.value)return!1;let t=Q.value[e];if(t<=0)return!1;let n=W.value[e],r={metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t};return se(G.value,H.player.technologies,n.requirements)&&G.value.resources.metal>=r.metal&&G.value.resources.crystal>=r.crystal&&G.value.resources.deuterium>=r.deuterium&&G.value.resources.darkMatter>=r.darkMatter},$=e=>{let t=Q.value[e],n=W.value[e];return{metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t}};return(a,o)=>G.value?(m(),s(`div`,I,[f(F,{"required-building":r(le).Shipyard,"required-level":1},null,8,[`required-building`]),u(`h1`,L,l(r(U)(`shipyardView.title`)),1),u(`div`,R,[u(`div`,z,[u(`div`,B,l(r(U)(`shipyardView.fleetStorage`))+`:`,1),u(`div`,me,[u(`span`,{class:h(X.value>Z.value?`text-destructive`:`text-primary`)},l(r(x)(X.value)),3),o[1]||=u(`span`,{class:`text-muted-foreground mx-1`},`/`,-1),u(`span`,null,l(r(x)(Z.value)),1)])]),u(`div`,he,[u(`div`,ge,[u(`div`,{class:h([`h-full transition-all duration-300`,X.value>Z.value?`bg-destructive`:`bg-primary`]),style:te({width:`${Math.min(X.value/Z.value*100,100)}%`})},null,6)])])]),u(`div`,_e,[(m(!0),s(i,null,p(Object.values(r(g)),a=>(m(),ee(r(b),{key:a,class:`relative`},{default:n(()=>[f(P,{requirements:r(W)[a].requirements},null,8,[`requirements`]),f(r(j),{class:`pb-3`},{default:n(()=>[f(r(fe),{class:`text-sm sm:text-base lg:text-lg cursor-pointer hover:text-primary transition-colors underline decoration-dotted underline-offset-4 mb-2`,onClick:e=>r(Ie).openShip(a)},{default:n(()=>[e(l(r(W)[a].name),1)]),_:2},1032,[`onClick`]),f(r(ce),{class:`text-xs sm:text-sm`},{default:n(()=>[e(l(r(W)[a].description),1)]),_:2},1024)]),_:2},1024),f(r(M),null,{default:n(()=>[u(`div`,V,[u(`div`,ve,[u(`div`,null,[u(`p`,ye,l(r(U)(`shipyardView.attack`)),1),u(`p`,be,l(r(W)[a].attack),1)]),u(`div`,null,[u(`p`,xe,l(r(U)(`shipyardView.shield`)),1),u(`p`,Se,l(r(W)[a].shield),1)]),u(`div`,null,[u(`p`,Ce,l(r(U)(`shipyardView.speed`)),1),u(`p`,we,l(r(W)[a].speed),1)]),u(`div`,null,[u(`p`,Te,l(r(U)(`shipyardView.cargoCapacity`)),1),u(`p`,Ee,l(r(x)(r(W)[a].cargoCapacity)),1)])]),u(`div`,De,[u(`p`,Oe,l(r(U)(`shipyardView.unitCost`))+`:`,1),u(`div`,ke,[(m(),s(i,null,p(Y,e=>t(u(`div`,{key:e.key,class:`flex items-center gap-1.5 sm:gap-2`},[f(y,{type:e.key,size:`sm`},null,8,[`type`]),u(`span`,Ae,l(r(U)(`resources.${e.key}`))+`:`,1),u(`span`,{class:h([`font-medium text-xs sm:text-sm`,r(C)(G.value.resources[e.key],r(W)[a].cost[e.key])])},l(r(x)(r(W)[a].cost[e.key])),3)]),[[c,e.key!==`darkMatter`||r(W)[a].cost.darkMatter>0]])),64))])]),u(`div`,je,[f(r(S),{for:`quantity-${a}`,class:`text-xs sm:text-sm`},{default:n(()=>[e(l(r(U)(`shipyardView.buildQuantity`)),1)]),_:1},8,[`for`]),f(r(ue),{id:`quantity-${a}`,modelValue:Q.value[a],"onUpdate:modelValue":e=>Q.value[a]=e,modelModifiers:{number:!0},type:`number`,min:`0`,placeholder:`0`,class:`text-sm`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])]),Q.value[a]>0?(m(),s(`div`,Me,[u(`p`,Ne,l(r(U)(`shipyardView.totalCost`))+`:`,1),u(`div`,Pe,[(m(),s(i,null,p(Y,e=>t(u(`div`,{key:e.key,class:`flex items-center gap-1.5 sm:gap-2`},[f(y,{type:e.key,size:`sm`},null,8,[`type`]),u(`span`,Fe,l(r(U)(`resources.${e.key}`))+`:`,1),u(`span`,{class:h([`font-medium text-xs sm:text-sm`,r(C)(G.value.resources[e.key],$(a)[e.key])])},l(r(x)($(a)[e.key])),3)]),[[c,e.key!==`darkMatter`||$(a).darkMatter>0]])),64))])])):d(``,!0),f(r(de),{onClick:e=>Re(a),disabled:!ze(a),class:`w-full`},{default:n(()=>[e(l(r(U)(`shipyardView.build`)),1)]),_:1},8,[`onClick`,`disabled`])])]),_:2},1024)]),_:2},1024))),128))]),f(r(A),{open:K.value,"onUpdate:open":o[0]||=e=>K.value=e},{default:n(()=>[f(r(k),null,{default:n(()=>[f(r(w),null,{default:n(()=>[f(r(O),null,{default:n(()=>[e(l(q.value),1)]),_:1}),f(r(E),{class:`whitespace-pre-line`},{default:n(()=>[e(l(J.value),1)]),_:1})]),_:1}),f(r(pe),null,{default:n(()=>[f(r(T),null,{default:n(()=>[e(l(r(U)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])])):d(``,!0)}});export{H as default}; \ No newline at end of file diff --git a/docs/assets/ShipyardView-DRH89hEQ.js b/docs/assets/ShipyardView-DRH89hEQ.js new file mode 100644 index 0000000..f95aad8 --- /dev/null +++ b/docs/assets/ShipyardView-DRH89hEQ.js @@ -0,0 +1 @@ +import{$t as e,En as t,On as n,Rn as r,Yn as i,ar as a,c as o,cn as ee,cr as s,dn as c,fn as l,ln as u,o as te,on as d,pn as ne,r as re,rn as f,rr as p,s as ie,sn as m,sr as ae,tt as oe,un as h,zn as g}from"./game-logic-BBFCPVtv.js";import"./vendor-pinia-L_8CmDWM.js";import"./vendor-vue-router-0mfLVB6Y.js";import"./vendor-crypto-CQM8pryk.js";import"./game-i18n-BC9uiVvf.js";import"./vendor-others-Bce0hM6h.js";import"./vendor-reka-ui-DR3m_AkV.js";import"./vendor-utils-BlvnUqQX.js";import"./vendor-vueuse-Djj-oRw9.js";import"./vendor-icons-Ccm2_GPI.js";import{t as se}from"./CardDescription-DduF5EVY.js";import{_,d as v}from"./game-config-DRP-gbpS.js";import{$ as y,A as ce,F as le,I as ue,J as de,L as b,M as fe,N as pe,V as x,X as S,d as C,f as w,j as T,k as E,l as D,m as O,o as k,p as A,u as j,x as M}from"./index-B4KMqZ_y.js";import{t as N}from"./useGameConfig-DLqfPHtW.js";import{t as P}from"./CardUnlockOverlay-CspXlcWR.js";import{t as F}from"./UnlockRequirement-DJ9dN5JL.js";var I={key:0,class:`container mx-auto p-4 sm:p-6`},L={class:`text-2xl sm:text-3xl font-bold mb-4 sm:mb-6`},R={class:`mb-4 sm:mb-6 p-3 sm:p-4 bg-muted/50 rounded-lg border`},z={class:`flex items-center justify-between`},B={class:`text-sm sm:text-base font-medium`},me={class:`text-sm sm:text-base font-bold`},he={class:`mt-2`},ge={class:`w-full bg-background rounded-full h-2.5 sm:h-3 overflow-hidden`},_e={class:`grid grid-cols-2 sm:grid-cols-3 gap-3 sm:gap-4`},V={class:`space-y-3 sm:space-y-4`},ve={class:`grid grid-cols-2 gap-2 text-xs sm:text-sm`},ye={class:`text-muted-foreground`},be={class:`font-medium`},xe={class:`text-muted-foreground`},Se={class:`font-medium`},Ce={class:`text-muted-foreground`},we={class:`font-medium`},Te={class:`text-muted-foreground`},Ee={class:`font-medium`},De={class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2`},Oe={class:`text-muted-foreground mb-1 sm:mb-2`},ke={class:`space-y-1 sm:space-y-1.5`},Ae={class:`text-xs`},je={class:`space-y-2`},Me={key:0,class:`text-xs sm:text-sm space-y-1.5 sm:space-y-2 p-2.5 sm:p-3 bg-muted rounded-lg`},Ne={class:`font-medium text-muted-foreground`},Pe={class:`space-y-1 sm:space-y-1.5`},Fe={class:`text-xs`},H=ne({__name:`ShipyardView`,setup(ne){let H=y(),Ie=M(),{t:U}=S(),{SHIPS:W}=N(),G=d(()=>H.currentPlanet),K=i(!1),q=i(``),J=i(``),Y=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`darkMatter`}],X=d(()=>G.value?ie(G.value.fleet):0),Z=d(()=>G.value?o(G.value,H.player.technologies):0),Q=i({[_.LightFighter]:0,[_.HeavyFighter]:0,[_.Cruiser]:0,[_.Battleship]:0,[_.Battlecruiser]:0,[_.Bomber]:0,[_.Destroyer]:0,[_.SmallCargo]:0,[_.LargeCargo]:0,[_.ColonyShip]:0,[_.Recycler]:0,[_.EspionageProbe]:0,[_.SolarSatellite]:0,[_.DarkMatterHarvester]:0,[_.Deathstar]:0}),Le=(e,t)=>{if(!H.currentPlanet||!te(H.currentPlanet,e,t,H.player.technologies).valid)return!1;let n=re(H.currentPlanet,e,t,H.player.officers);return H.currentPlanet.buildQueue.push(n),!0},Re=e=>{let t=Q.value[e];if(t<=0){q.value=U(`shipyardView.inputError`),J.value=U(`shipyardView.inputErrorMessage`),K.value=!0;return}Le(e,t)?Q.value[e]=0:(q.value=U(`shipyardView.buildFailed`),J.value=U(`shipyardView.buildFailedMessage`),K.value=!0)},ze=e=>{if(!G.value)return!1;let t=Q.value[e];if(t<=0)return!1;let n=W.value[e],r={metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t};return oe(G.value,H.player.technologies,n.requirements)&&G.value.resources.metal>=r.metal&&G.value.resources.crystal>=r.crystal&&G.value.resources.deuterium>=r.deuterium&&G.value.resources.darkMatter>=r.darkMatter},$=e=>{let t=Q.value[e],n=W.value[e];return{metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t}};return(i,o)=>G.value?(t(),h(`div`,I,[l(F,{"required-building":p(v).Shipyard,"required-level":1},null,8,[`required-building`]),m(`h1`,L,s(p(U)(`shipyardView.title`)),1),m(`div`,R,[m(`div`,z,[m(`div`,B,s(p(U)(`shipyardView.fleetStorage`))+`:`,1),m(`div`,me,[m(`span`,{class:a(X.value>Z.value?`text-destructive`:`text-primary`)},s(p(k)(X.value)),3),o[1]||=m(`span`,{class:`text-muted-foreground mx-1`},`/`,-1),m(`span`,null,s(p(k)(Z.value)),1)])]),m(`div`,he,[m(`div`,ge,[m(`div`,{class:a([`h-full transition-all duration-300`,X.value>Z.value?`bg-destructive`:`bg-primary`]),style:ae({width:`${Math.min(X.value/Z.value*100,100)}%`})},null,6)])])]),m(`div`,_e,[(t(!0),h(f,null,n(Object.values(p(_)),i=>(t(),ee(p(O),{key:i,class:`relative`},{default:r(()=>[l(P,{requirements:p(W)[i].requirements},null,8,[`requirements`]),l(p(w),{class:`pb-3`},{default:r(()=>[l(p(C),{class:`text-sm sm:text-base lg:text-lg cursor-pointer hover:text-primary transition-colors underline decoration-dotted underline-offset-4 mb-2`,onClick:e=>p(Ie).openShip(i)},{default:r(()=>[c(s(p(W)[i].name),1)]),_:2},1032,[`onClick`]),l(p(se),{class:`text-xs sm:text-sm`},{default:r(()=>[c(s(p(W)[i].description),1)]),_:2},1024)]),_:2},1024),l(p(A),null,{default:r(()=>[m(`div`,V,[m(`div`,ve,[m(`div`,null,[m(`p`,ye,s(p(U)(`shipyardView.attack`)),1),m(`p`,be,s(p(W)[i].attack),1)]),m(`div`,null,[m(`p`,xe,s(p(U)(`shipyardView.shield`)),1),m(`p`,Se,s(p(W)[i].shield),1)]),m(`div`,null,[m(`p`,Ce,s(p(U)(`shipyardView.speed`)),1),m(`p`,we,s(p(W)[i].speed),1)]),m(`div`,null,[m(`p`,Te,s(p(U)(`shipyardView.cargoCapacity`)),1),m(`p`,Ee,s(p(k)(p(W)[i].cargoCapacity)),1)])]),m(`div`,De,[m(`p`,Oe,s(p(U)(`shipyardView.unitCost`))+`:`,1),m(`div`,ke,[(t(),h(f,null,n(Y,t=>g(m(`div`,{key:t.key,class:`flex items-center gap-1.5 sm:gap-2`},[l(b,{type:t.key,size:`sm`},null,8,[`type`]),m(`span`,Ae,s(p(U)(`resources.${t.key}`))+`:`,1),m(`span`,{class:a([`font-medium text-xs sm:text-sm`,p(D)(G.value.resources[t.key],p(W)[i].cost[t.key])])},s(p(k)(p(W)[i].cost[t.key])),3)]),[[e,t.key!==`darkMatter`||p(W)[i].cost.darkMatter>0]])),64))])]),m(`div`,je,[l(p(j),{for:`quantity-${i}`,class:`text-xs sm:text-sm`},{default:r(()=>[c(s(p(U)(`shipyardView.buildQuantity`)),1)]),_:1},8,[`for`]),l(p(x),{id:`quantity-${i}`,modelValue:Q.value[i],"onUpdate:modelValue":e=>Q.value[i]=e,modelModifiers:{number:!0},type:`number`,min:`0`,placeholder:`0`,class:`text-sm`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])]),Q.value[i]>0?(t(),h(`div`,Me,[m(`p`,Ne,s(p(U)(`shipyardView.totalCost`))+`:`,1),m(`div`,Pe,[(t(),h(f,null,n(Y,t=>g(m(`div`,{key:t.key,class:`flex items-center gap-1.5 sm:gap-2`},[l(b,{type:t.key,size:`sm`},null,8,[`type`]),m(`span`,Fe,s(p(U)(`resources.${t.key}`))+`:`,1),m(`span`,{class:a([`font-medium text-xs sm:text-sm`,p(D)(G.value.resources[t.key],$(i)[t.key])])},s(p(k)($(i)[t.key])),3)]),[[e,t.key!==`darkMatter`||$(i).darkMatter>0]])),64))])])):u(``,!0),l(p(de),{onClick:e=>Re(i),disabled:!ze(i),class:`w-full`},{default:r(()=>[c(s(p(U)(`shipyardView.build`)),1)]),_:1},8,[`onClick`,`disabled`])])]),_:2},1024)]),_:2},1024))),128))]),l(p(ue),{open:K.value,"onUpdate:open":o[0]||=e=>K.value=e},{default:r(()=>[l(p(pe),null,{default:r(()=>[l(p(ce),null,{default:r(()=>[l(p(E),null,{default:r(()=>[c(s(q.value),1)]),_:1}),l(p(fe),{class:`whitespace-pre-line`},{default:r(()=>[c(s(J.value),1)]),_:1})]),_:1}),l(p(T),null,{default:r(()=>[l(p(le),null,{default:r(()=>[c(s(p(U)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])])):u(``,!0)}});export{H as default}; \ No newline at end of file diff --git a/docs/assets/TabsTrigger-BnZOhHbD.js b/docs/assets/TabsTrigger-BnZOhHbD.js new file mode 100644 index 0000000..138fcfb --- /dev/null +++ b/docs/assets/TabsTrigger-BnZOhHbD.js @@ -0,0 +1 @@ +import{En as e,Rn as t,cn as n,hn as r,kn as i,or as a,pn as o,rr as s,xn as c}from"./game-logic-BBFCPVtv.js";import{l}from"./vendor-others-Bce0hM6h.js";import{$ as u,c as d,et as f,l as p,s as m,u as h}from"./vendor-reka-ui-DR3m_AkV.js";import{Y as g}from"./index-B4KMqZ_y.js";var _=o({__name:`Tabs`,props:{defaultValue:{},orientation:{},dir:{},activationMode:{},modelValue:{},unmountOnHide:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:[`update:modelValue`],setup(o,{emit:d}){let f=o,p=d,m=u(l(f,`class`),p);return(o,l)=>(e(),n(s(h),c({"data-slot":`tabs`},s(m),{class:s(g)(`flex flex-col gap-2`,f.class)}),{default:t(e=>[i(o.$slots,`default`,a(r(e)))]),_:3},16,[`class`]))}}),v=o({__name:`TabsContent`,props:{value:{},forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(r){let a=r,o=l(a,`class`);return(r,l)=>(e(),n(s(p),c({"data-slot":`tabs-content`,class:s(g)(`flex-1 outline-none`,a.class)},s(o)),{default:t(()=>[i(r.$slots,`default`)]),_:3},16,[`class`]))}}),y=o({__name:`TabsList`,props:{loop:{type:Boolean},asChild:{type:Boolean},as:{},class:{},tabCount:{}},setup(r){let a=r,o=l(a,`class`,`tabCount`);return(l,u)=>(e(),n(s(d),c({"data-slot":`tabs-list`},s(o),{class:s(g)(`bg-muted text-muted-foreground inline-flex w-fit items-center justify-center rounded-lg p-[3px]`,r.tabCount&&r.tabCount>3?r.tabCount>6?`h-[85px] sm:h-9`:`h-[65px] sm:h-9`:`h-9`,a.class)}),{default:t(()=>[i(l.$slots,`default`)]),_:3},16,[`class`]))}}),b=o({__name:`TabsTrigger`,props:{value:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(r){let a=r,o=f(l(a,`class`));return(r,l)=>(e(),n(s(m),c({"data-slot":`tabs-trigger`,class:s(g)(`inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-all`,`text-muted-foreground hover:text-foreground`,`data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-md data-[state=active]:border-border`,`dark:data-[state=active]:bg-background dark:data-[state=active]:text-foreground dark:data-[state=active]:border-border dark:data-[state=active]:shadow-lg`,`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring focus-visible:ring-[3px] focus-visible:outline-1`,`disabled:pointer-events-none disabled:opacity-50`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,a.class)},s(o)),{default:t(()=>[i(r.$slots,`default`)]),_:3},16,[`class`]))}});export{_ as i,y as n,v as r,b as t}; \ No newline at end of file diff --git a/docs/assets/TabsTrigger-DrosU7aN.js b/docs/assets/TabsTrigger-DrosU7aN.js deleted file mode 100644 index 4190b14..0000000 --- a/docs/assets/TabsTrigger-DrosU7aN.js +++ /dev/null @@ -1 +0,0 @@ -import{En as e,Gn as t,Jn as n,Xt as r,_n as i,ln as a,mn as o,rn as s,tn as c}from"./game-logic-Bi1l7y4K.js";import{c as l}from"./vendor-others-DTUzJ7S-.js";import{$ as u,c as d,et as f,l as p,s as m,u as h}from"./vendor-reka-ui-BEHIKScj.js";import{G as g}from"./index-BT5w6et-.js";var _=c({__name:`Tabs`,props:{defaultValue:{},orientation:{},dir:{},activationMode:{},modelValue:{},unmountOnHide:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:[`update:modelValue`],setup(c,{emit:d}){let f=c,p=d,m=u(l(f,`class`),p);return(c,l)=>(o(),r(t(h),a({"data-slot":`tabs`},t(m),{class:t(g)(`flex flex-col gap-2`,f.class)}),{default:e(e=>[i(c.$slots,`default`,n(s(e)))]),_:3},16,[`class`]))}}),v=c({__name:`TabsContent`,props:{value:{},forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(n){let s=n,c=l(s,`class`);return(n,l)=>(o(),r(t(p),a({"data-slot":`tabs-content`,class:t(g)(`flex-1 outline-none`,s.class)},t(c)),{default:e(()=>[i(n.$slots,`default`)]),_:3},16,[`class`]))}}),y=c({__name:`TabsList`,props:{loop:{type:Boolean},asChild:{type:Boolean},as:{},class:{},tabCount:{}},setup(n){let s=n,c=l(s,`class`,`tabCount`);return(l,u)=>(o(),r(t(d),a({"data-slot":`tabs-list`},t(c),{class:t(g)(`bg-muted text-muted-foreground inline-flex w-fit items-center justify-center rounded-lg p-[3px]`,n.tabCount&&n.tabCount>3?n.tabCount>6?`h-[85px] sm:h-9`:`h-[65px] sm:h-9`:`h-9`,s.class)}),{default:e(()=>[i(l.$slots,`default`)]),_:3},16,[`class`]))}}),b=c({__name:`TabsTrigger`,props:{value:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(n){let s=n,c=f(l(s,`class`));return(n,l)=>(o(),r(t(m),a({"data-slot":`tabs-trigger`,class:t(g)(`inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-all`,`text-muted-foreground hover:text-foreground`,`data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-md data-[state=active]:border-border`,`dark:data-[state=active]:bg-background dark:data-[state=active]:text-foreground dark:data-[state=active]:border-border dark:data-[state=active]:shadow-lg`,`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring focus-visible:ring-[3px] focus-visible:outline-1`,`disabled:pointer-events-none disabled:opacity-50`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,s.class)},t(c)),{default:e(()=>[i(n.$slots,`default`)]),_:3},16,[`class`]))}});export{_ as i,y as n,v as r,b as t}; \ No newline at end of file diff --git a/docs/assets/TooltipProvider-BwjgS8_x.js b/docs/assets/TooltipProvider-BwjgS8_x.js deleted file mode 100644 index 4544a02..0000000 --- a/docs/assets/TooltipProvider-BwjgS8_x.js +++ /dev/null @@ -1 +0,0 @@ -import{En as e,Gn as t,Jn as n,Xt as r,_n as i,mn as a,rn as o,tn as s}from"./game-logic-Bi1l7y4K.js";import{a as c}from"./vendor-reka-ui-BEHIKScj.js";var l=s({__name:`TooltipProvider`,props:{delayDuration:{default:0},skipDelayDuration:{},disableHoverableContent:{type:Boolean},disableClosingTrigger:{type:Boolean},disabled:{type:Boolean},ignoreNonKeyboardFocus:{type:Boolean}},setup(s){let l=s;return(s,u)=>(a(),r(t(c),n(o(l)),{default:e(()=>[i(s.$slots,`default`)]),_:3},16))}});export{l as t}; \ No newline at end of file diff --git a/docs/assets/TooltipProvider-Cspoy8HK.js b/docs/assets/TooltipProvider-Cspoy8HK.js new file mode 100644 index 0000000..193e44b --- /dev/null +++ b/docs/assets/TooltipProvider-Cspoy8HK.js @@ -0,0 +1 @@ +import{En as e,Rn as t,cn as n,hn as r,kn as i,or as a,pn as o,rr as s}from"./game-logic-BBFCPVtv.js";import{a as c}from"./vendor-reka-ui-DR3m_AkV.js";var l=o({__name:`TooltipProvider`,props:{delayDuration:{default:0},skipDelayDuration:{},disableHoverableContent:{type:Boolean},disableClosingTrigger:{type:Boolean},disabled:{type:Boolean},ignoreNonKeyboardFocus:{type:Boolean}},setup(o){let l=o;return(o,u)=>(e(),n(s(c),a(r(l)),{default:t(()=>[i(o.$slots,`default`)]),_:3},16))}});export{l as t}; \ No newline at end of file diff --git a/docs/assets/UnlockRequirement-CoWPiUl8.js b/docs/assets/UnlockRequirement-CoWPiUl8.js deleted file mode 100644 index 0e0c17b..0000000 --- a/docs/assets/UnlockRequirement-CoWPiUl8.js +++ /dev/null @@ -1 +0,0 @@ -import{$t as e,En as t,Gn as n,Jt as r,Qt as i,Xn as a,Yt as o,Zt as s,en as c,mn as l,tn as u}from"./game-logic-Bi1l7y4K.js";import{o as d}from"./vendor-vue-router-1sDnnIWZ.js";import{D as f,J as p}from"./vendor-icons-z9V6Jdbh.js";import{t as m}from"./CardDescription-BSLS07AU.js";import{H as h,K as g,W as _,_ as v,b as y,q as b,v as x,y as S}from"./index-BT5w6et-.js";import{t as C}from"./useGameConfig-b98LOtBY.js";var w={key:0,class:`fixed inset-0 z-50 bg-background/80 backdrop-blur-sm flex items-center justify-center p-4`},T={class:`flex justify-center mb-4`},E={class:`rounded-full bg-muted p-4`},D={class:`p-4 bg-muted rounded-lg space-y-2`},O={class:`text-sm font-medium text-center`},k={class:`flex items-center justify-center gap-2`},A={class:`text-base sm:text-lg font-bold`},j={key:0,class:`text-xs text-center text-muted-foreground`},M={class:`flex gap-2`},N=u({__name:`UnlockRequirement`,props:{requiredBuilding:{},requiredLevel:{}},setup(u){let N=u,P=d(),F=b(),{t:I}=g(),{BUILDINGS:L}=C(),R=r(()=>L.value[N.requiredBuilding]?.name||N.requiredBuilding),z=r(()=>F.currentPlanet&&F.currentPlanet.buildings[N.requiredBuilding]||0),B=r(()=>z.value>=N.requiredLevel),V=()=>{P.push(`/buildings`)};return(r,d)=>B.value?s(``,!0):(l(),i(`div`,w,[c(n(y),{class:`max-w-md w-full`},{default:t(()=>[c(n(x),{class:`text-center`},{default:t(()=>[o(`div`,T,[o(`div`,E,[c(n(f),{size:48,class:`text-muted-foreground`})])]),c(n(v),{class:`text-xl sm:text-2xl`},{default:t(()=>[e(a(n(I)(`common.featureLocked`)),1)]),_:1}),c(n(m),{class:`text-sm sm:text-base`},{default:t(()=>[e(a(n(I)(`common.unlockRequired`)),1)]),_:1})]),_:1}),c(n(S),{class:`space-y-4`},{default:t(()=>[o(`div`,D,[o(`p`,O,a(n(I)(`common.requiredBuilding`))+`:`,1),o(`div`,k,[o(`span`,A,a(R.value),1),c(n(h),{variant:`default`},{default:t(()=>[e(`Lv `+a(u.requiredLevel),1)]),_:1})]),z.value===void 0?s(``,!0):(l(),i(`p`,j,a(n(I)(`common.currentLevel`))+`: Lv `+a(z.value),1))]),o(`div`,M,[c(n(_),{onClick:V,class:`flex-1`},{default:t(()=>[c(n(p),{size:16,class:`mr-2`}),e(` `+a(n(I)(`common.goToBuildings`)),1)]),_:1})])]),_:1})]),_:1})]))}});export{N as t}; \ No newline at end of file diff --git a/docs/assets/UnlockRequirement-DJ9dN5JL.js b/docs/assets/UnlockRequirement-DJ9dN5JL.js new file mode 100644 index 0000000..79d5af7 --- /dev/null +++ b/docs/assets/UnlockRequirement-DJ9dN5JL.js @@ -0,0 +1 @@ +import{En as e,Rn as t,cr as n,dn as r,fn as i,ln as a,on as o,pn as s,rr as c,sn as l,un as u}from"./game-logic-BBFCPVtv.js";import{o as d}from"./vendor-vue-router-0mfLVB6Y.js";import{Q as f,k as p}from"./vendor-icons-Ccm2_GPI.js";import{t as m}from"./CardDescription-DduF5EVY.js";import{$ as h,J as g,K as _,X as v,d as y,f as b,m as x,p as S}from"./index-B4KMqZ_y.js";import{t as C}from"./useGameConfig-DLqfPHtW.js";var w={key:0,class:`fixed inset-0 z-50 bg-background/80 backdrop-blur-sm flex items-center justify-center p-4`},T={class:`flex justify-center mb-4`},E={class:`rounded-full bg-muted p-4`},D={class:`p-4 bg-muted rounded-lg space-y-2`},O={class:`text-sm font-medium text-center`},k={class:`flex items-center justify-center gap-2`},A={class:`text-base sm:text-lg font-bold`},j={key:0,class:`text-xs text-center text-muted-foreground`},M={class:`flex gap-2`},N=s({__name:`UnlockRequirement`,props:{requiredBuilding:{},requiredLevel:{}},setup(s){let N=s,P=d(),F=h(),{t:I}=v(),{BUILDINGS:L}=C(),R=o(()=>L.value[N.requiredBuilding]?.name||N.requiredBuilding),z=o(()=>F.currentPlanet&&F.currentPlanet.buildings[N.requiredBuilding]||0),B=o(()=>z.value>=N.requiredLevel),V=()=>{P.push(`/buildings`)};return(o,d)=>B.value?a(``,!0):(e(),u(`div`,w,[i(c(x),{class:`max-w-md w-full`},{default:t(()=>[i(c(b),{class:`text-center`},{default:t(()=>[l(`div`,T,[l(`div`,E,[i(c(p),{size:48,class:`text-muted-foreground`})])]),i(c(y),{class:`text-xl sm:text-2xl`},{default:t(()=>[r(n(c(I)(`common.featureLocked`)),1)]),_:1}),i(c(m),{class:`text-sm sm:text-base`},{default:t(()=>[r(n(c(I)(`common.unlockRequired`)),1)]),_:1})]),_:1}),i(c(S),{class:`space-y-4`},{default:t(()=>[l(`div`,D,[l(`p`,O,n(c(I)(`common.requiredBuilding`))+`:`,1),l(`div`,k,[l(`span`,A,n(R.value),1),i(c(_),{variant:`default`},{default:t(()=>[r(`Lv `+n(s.requiredLevel),1)]),_:1})]),z.value===void 0?a(``,!0):(e(),u(`p`,j,n(c(I)(`common.currentLevel`))+`: Lv `+n(z.value),1))]),l(`div`,M,[i(c(g),{onClick:V,class:`flex-1`},{default:t(()=>[i(c(f),{size:16,class:`mr-2`}),r(` `+n(c(I)(`common.goToBuildings`)),1)]),_:1})])]),_:1})]),_:1})]))}});export{N as t}; \ No newline at end of file diff --git a/docs/assets/battle.worker-D3kgZwcy.js b/docs/assets/battle.worker-CkRIHUu5.js similarity index 63% rename from docs/assets/battle.worker-D3kgZwcy.js rename to docs/assets/battle.worker-CkRIHUu5.js index 4fc4550..7959886 100644 --- a/docs/assets/battle.worker-D3kgZwcy.js +++ b/docs/assets/battle.worker-CkRIHUu5.js @@ -1 +1 @@ -(function(){let e={MetalMine:`metalMine`,CrystalMine:`crystalMine`,DeuteriumSynthesizer:`deuteriumSynthesizer`,SolarPlant:`solarPlant`,FusionReactor:`fusionReactor`,RoboticsFactory:`roboticsFactory`,NaniteFactory:`naniteFactory`,Shipyard:`shipyard`,ResearchLab:`researchLab`,MetalStorage:`metalStorage`,CrystalStorage:`crystalStorage`,DeuteriumTank:`deuteriumTank`,DarkMatterCollector:`darkMatterCollector`,DarkMatterTank:`darkMatterTank`,MissileSilo:`missileSilo`,Terraformer:`terraformer`,LunarBase:`lunarBase`,SensorPhalanx:`sensorPhalanx`,JumpGate:`jumpGate`,PlanetDestroyerFactory:`planetDestroyerFactory`},t={EnergyTechnology:`energyTechnology`,LaserTechnology:`laserTechnology`,IonTechnology:`ionTechnology`,HyperspaceTechnology:`hyperspaceTechnology`,PlasmaTechnology:`plasmaTechnology`,ComputerTechnology:`computerTechnology`,EspionageTechnology:`espionageTechnology`,CombustionDrive:`combustionDrive`,ImpulseDrive:`impulseDrive`,HyperspaceDrive:`hyperspaceDrive`,WeaponsTechnology:`weaponsTechnology`,ShieldingTechnology:`shieldingTechnology`,ArmourTechnology:`armourTechnology`,Astrophysics:`astrophysics`,GravitonTechnology:`gravitonTechnology`,DarkMatterTechnology:`darkMatterTechnology`,TerraformingTechnology:`terraformingTechnology`,PlanetDestructionTech:`planetDestructionTech`},n={RocketLauncher:`rocketLauncher`,LightLaser:`lightLaser`,HeavyLaser:`heavyLaser`,GaussCannon:`gaussCannon`,IonCannon:`ionCannon`,PlasmaTurret:`plasmaTurret`,SmallShieldDome:`smallShieldDome`,LargeShieldDome:`largeShieldDome`,AntiBallisticMissile:`antiBallisticMissile`,InterplanetaryMissile:`interplanetaryMissile`,PlanetaryShield:`planetaryShield`},r={LightFighter:`lightFighter`,HeavyFighter:`heavyFighter`,Cruiser:`cruiser`,Battleship:`battleship`,Battlecruiser:`battlecruiser`,Bomber:`bomber`,Destroyer:`destroyer`,SmallCargo:`smallCargo`,LargeCargo:`largeCargo`,ColonyShip:`colonyShip`,Recycler:`recycler`,EspionageProbe:`espionageProbe`,SolarSatellite:`solarSatellite`,DarkMatterHarvester:`darkMatterHarvester`,Deathstar:`deathstar`},i={Commander:`commander`,Admiral:`admiral`,Engineer:`engineer`,Geologist:`geologist`,Technocrat:`technocrat`,DarkMatterSpecialist:`darkMatterSpecialist`};e.MetalMine,e.MetalMine,e.SolarPlant,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.CrystalMine,e.CrystalMine,e.SolarPlant,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.DeuteriumSynthesizer,e.DeuteriumSynthesizer,e.SolarPlant,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.SolarPlant,e.SolarPlant,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.FusionReactor,e.FusionReactor,t.EnergyTechnology,e.DeuteriumSynthesizer,e.RoboticsFactory,t.EnergyTechnology,e.RoboticsFactory,t.EnergyTechnology,e.NaniteFactory,e.RoboticsFactory,e.RoboticsFactory,e.MetalMine,e.CrystalMine,e.DeuteriumSynthesizer,e.ResearchLab,e.SolarPlant,e.ResearchLab,e.SolarPlant,e.MetalMine,e.CrystalMine,e.NaniteFactory,e.NaniteFactory,e.RoboticsFactory,e.ResearchLab,e.Shipyard,t.ComputerTechnology,e.ResearchLab,e.Shipyard,t.ComputerTechnology,e.Shipyard,e.Shipyard,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.ResearchLab,e.MetalMine,e.CrystalMine,e.DeuteriumSynthesizer,e.RoboticsFactory,e.MetalMine,e.CrystalMine,e.DeuteriumSynthesizer,e.RoboticsFactory,e.NaniteFactory,t.EnergyTechnology,e.MetalStorage,e.MetalStorage,e.MetalMine,e.MetalMine,e.RoboticsFactory,e.MetalMine,e.RoboticsFactory,e.CrystalStorage,e.CrystalStorage,e.CrystalMine,e.CrystalMine,e.RoboticsFactory,e.CrystalMine,e.RoboticsFactory,e.DeuteriumTank,e.DeuteriumTank,e.DeuteriumSynthesizer,e.DeuteriumSynthesizer,e.RoboticsFactory,e.DeuteriumSynthesizer,e.RoboticsFactory,e.DarkMatterCollector,e.DarkMatterCollector,e.ResearchLab,t.DarkMatterTechnology,e.ResearchLab,t.DarkMatterTechnology,e.RoboticsFactory,e.ResearchLab,t.DarkMatterTechnology,e.NaniteFactory,e.DarkMatterTank,e.DarkMatterTank,e.DarkMatterCollector,t.DarkMatterTechnology,e.DarkMatterCollector,e.RoboticsFactory,e.DarkMatterCollector,e.RoboticsFactory,t.DarkMatterTechnology,e.MissileSilo,e.MissileSilo,e.Shipyard,e.Shipyard,t.ComputerTechnology,e.Shipyard,t.ComputerTechnology,e.NaniteFactory,e.Terraformer,e.Terraformer,e.ResearchLab,e.RoboticsFactory,t.TerraformingTechnology,e.ResearchLab,t.TerraformingTechnology,e.NaniteFactory,e.ResearchLab,t.TerraformingTechnology,e.NaniteFactory,e.LunarBase,e.LunarBase,e.RoboticsFactory,e.RoboticsFactory,e.NaniteFactory,e.SensorPhalanx,e.SensorPhalanx,e.LunarBase,e.LunarBase,t.ComputerTechnology,e.LunarBase,t.ComputerTechnology,e.NaniteFactory,e.JumpGate,e.JumpGate,e.LunarBase,t.HyperspaceTechnology,e.LunarBase,t.HyperspaceTechnology,e.NaniteFactory,e.PlanetDestroyerFactory,e.PlanetDestroyerFactory,e.Shipyard,e.RoboticsFactory,e.NaniteFactory,t.PlanetDestructionTech,e.Shipyard,e.NaniteFactory,t.PlanetDestructionTech,t.HyperspaceTechnology,t.EnergyTechnology,t.EnergyTechnology,e.ResearchLab,e.ResearchLab,e.SolarPlant,e.ResearchLab,e.SolarPlant,e.RoboticsFactory,e.ResearchLab,e.RoboticsFactory,e.NaniteFactory,t.LaserTechnology,t.LaserTechnology,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.Shipyard,e.ResearchLab,t.EnergyTechnology,e.Shipyard,t.IonTechnology,t.IonTechnology,e.ResearchLab,t.LaserTechnology,t.EnergyTechnology,e.ResearchLab,t.LaserTechnology,t.EnergyTechnology,e.ResearchLab,t.LaserTechnology,e.NaniteFactory,t.HyperspaceTechnology,t.HyperspaceTechnology,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.Shipyard,e.ResearchLab,t.EnergyTechnology,e.NaniteFactory,t.PlasmaTechnology,t.PlasmaTechnology,e.ResearchLab,t.EnergyTechnology,t.LaserTechnology,t.IonTechnology,e.ResearchLab,t.EnergyTechnology,t.IonTechnology,e.NaniteFactory,e.ResearchLab,t.EnergyTechnology,t.IonTechnology,e.NaniteFactory,t.ComputerTechnology,t.ComputerTechnology,e.ResearchLab,e.ResearchLab,e.ResearchLab,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,t.EspionageTechnology,t.EspionageTechnology,e.ResearchLab,e.ResearchLab,t.ComputerTechnology,e.ResearchLab,t.ComputerTechnology,t.WeaponsTechnology,t.WeaponsTechnology,e.ResearchLab,e.ResearchLab,e.Shipyard,e.ResearchLab,e.Shipyard,e.NaniteFactory,t.ShieldingTechnology,t.ShieldingTechnology,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.NaniteFactory,t.ArmourTechnology,t.ArmourTechnology,e.ResearchLab,e.ResearchLab,e.Shipyard,e.ResearchLab,e.Shipyard,e.NaniteFactory,t.Astrophysics,t.Astrophysics,e.ResearchLab,t.EspionageTechnology,t.ImpulseDrive,e.ResearchLab,t.EspionageTechnology,e.ResearchLab,t.HyperspaceTechnology,e.NaniteFactory,t.GravitonTechnology,t.GravitonTechnology,e.ResearchLab,t.CombustionDrive,t.CombustionDrive,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.Shipyard,e.ResearchLab,t.EnergyTechnology,e.Shipyard,t.ImpulseDrive,t.ImpulseDrive,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.Shipyard,e.ResearchLab,t.EnergyTechnology,e.Shipyard,t.HyperspaceDrive,t.HyperspaceDrive,e.ResearchLab,t.HyperspaceTechnology,e.ResearchLab,t.HyperspaceTechnology,e.Shipyard,e.ResearchLab,t.HyperspaceTechnology,e.NaniteFactory,t.DarkMatterTechnology,t.DarkMatterTechnology,e.ResearchLab,t.HyperspaceTechnology,e.ResearchLab,t.HyperspaceTechnology,e.RoboticsFactory,t.EnergyTechnology,e.ResearchLab,t.HyperspaceTechnology,e.NaniteFactory,t.EnergyTechnology,t.TerraformingTechnology,t.TerraformingTechnology,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.RoboticsFactory,e.ResearchLab,t.EnergyTechnology,e.NaniteFactory,t.PlanetDestructionTech,t.PlanetDestructionTech,e.ResearchLab,t.HyperspaceTechnology,t.HyperspaceDrive,t.PlasmaTechnology,e.ResearchLab,t.HyperspaceTechnology,t.HyperspaceDrive,t.PlasmaTechnology,e.NaniteFactory;let a={[r.LightFighter]:{id:r.LightFighter,name:`轻型战斗机`,description:`基础战斗单位`,cost:{metal:3e3,crystal:1e3,deuterium:0,darkMatter:0,energy:0},buildTime:20,cargoCapacity:50,attack:50,shield:10,armor:400,speed:12500,fuelConsumption:20,storageUsage:5,requirements:{[e.Shipyard]:1,[t.CombustionDrive]:1}},[r.HeavyFighter]:{id:r.HeavyFighter,name:`重型战斗机`,description:`强力战斗单位`,cost:{metal:6e3,crystal:4e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,cargoCapacity:100,attack:150,shield:25,armor:1e3,speed:1e4,fuelConsumption:75,storageUsage:10,requirements:{[e.Shipyard]:3,[t.ImpulseDrive]:2}},[r.Cruiser]:{id:r.Cruiser,name:`巡洋舰`,description:`中型战舰`,cost:{metal:2e4,crystal:7e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:60,cargoCapacity:800,attack:400,shield:50,armor:2700,speed:15e3,fuelConsumption:300,storageUsage:15,requirements:{[e.Shipyard]:5,[t.ImpulseDrive]:4,[t.IonTechnology]:2}},[r.Battleship]:{id:r.Battleship,name:`战列舰`,description:`重型战舰`,cost:{metal:45e3,crystal:15e3,deuterium:0,darkMatter:0,energy:0},buildTime:90,cargoCapacity:1500,attack:1e3,shield:200,armor:6e3,speed:1e4,fuelConsumption:500,storageUsage:25,requirements:{[e.Shipyard]:7,[t.HyperspaceDrive]:4}},[r.Battlecruiser]:{id:r.Battlecruiser,name:`战列巡洋舰`,description:`快速强大的战斗舰船,擅长攻击战列舰`,cost:{metal:3e4,crystal:4e4,deuterium:15e3,darkMatter:0,energy:0},buildTime:70,cargoCapacity:750,attack:700,shield:400,armor:7e3,speed:1e4,fuelConsumption:250,storageUsage:20,requirements:{[e.Shipyard]:8,[t.HyperspaceDrive]:5,[t.HyperspaceTechnology]:5,[t.LaserTechnology]:12}},[r.Bomber]:{id:r.Bomber,name:`轰炸机`,description:`专门对付防御设施的轰炸舰`,cost:{metal:5e4,crystal:25e3,deuterium:15e3,darkMatter:0,energy:0},buildTime:100,cargoCapacity:500,attack:1e3,shield:500,armor:7500,speed:4e3,fuelConsumption:700,storageUsage:35,requirements:{[e.Shipyard]:8,[t.ImpulseDrive]:6,[t.PlasmaTechnology]:5}},[r.Destroyer]:{id:r.Destroyer,name:`驱逐舰`,description:`擅长摧毁大型舰船的猎杀者`,cost:{metal:6e4,crystal:5e4,deuterium:15e3,darkMatter:0,energy:0},buildTime:120,cargoCapacity:2e3,attack:2e3,shield:500,armor:11e3,speed:5e3,fuelConsumption:1e3,storageUsage:40,requirements:{[e.Shipyard]:9,[t.HyperspaceDrive]:6,[t.HyperspaceTechnology]:5}},[r.SmallCargo]:{id:r.SmallCargo,name:`小型运输船`,description:`运输资源`,cost:{metal:2e3,crystal:2e3,deuterium:0,darkMatter:0,energy:0},buildTime:15,cargoCapacity:5e3,attack:5,shield:10,armor:400,speed:5e3,fuelConsumption:10,storageUsage:10,requirements:{[e.Shipyard]:2,[t.CombustionDrive]:2}},[r.LargeCargo]:{id:r.LargeCargo,name:`大型运输船`,description:`大量运输资源`,cost:{metal:6e3,crystal:6e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,cargoCapacity:25e3,attack:5,shield:25,armor:1200,speed:7500,fuelConsumption:50,storageUsage:20,requirements:{[e.Shipyard]:4,[t.CombustionDrive]:6}},[r.ColonyShip]:{id:r.ColonyShip,name:`殖民船`,description:`建立新殖民地`,cost:{metal:1e4,crystal:2e4,deuterium:1e4,darkMatter:0,energy:0},buildTime:120,cargoCapacity:7500,attack:50,shield:100,armor:3e3,speed:2500,fuelConsumption:1e3,storageUsage:40,requirements:{[e.Shipyard]:4,[t.ImpulseDrive]:3}},[r.Recycler]:{id:r.Recycler,name:`回收船`,description:`回收废墟资源`,cost:{metal:1e4,crystal:6e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:60,cargoCapacity:2e4,attack:1,shield:10,armor:1600,speed:2e3,fuelConsumption:300,storageUsage:30,requirements:{[e.Shipyard]:4,[t.CombustionDrive]:6}},[r.EspionageProbe]:{id:r.EspionageProbe,name:`间谍探测器`,description:`侦察敌方星球`,cost:{metal:0,crystal:1e3,deuterium:0,darkMatter:0,energy:0},buildTime:5,cargoCapacity:5,attack:0,shield:0,armor:100,speed:1e8,fuelConsumption:1,storageUsage:2,requirements:{[e.Shipyard]:3,[t.CombustionDrive]:3}},[r.SolarSatellite]:{id:r.SolarSatellite,name:`太阳能卫星`,description:`提供额外能源,每个产生50点能量`,cost:{metal:0,crystal:2e3,deuterium:500,darkMatter:0,energy:0},buildTime:10,cargoCapacity:0,attack:1,shield:1,armor:200,speed:0,fuelConsumption:0,storageUsage:1,requirements:{[e.Shipyard]:1}},[r.DarkMatterHarvester]:{id:r.DarkMatterHarvester,name:`暗物质采集船`,description:`专门用于采集暗物质的特殊飞船`,cost:{metal:1e5,crystal:15e4,deuterium:5e4,darkMatter:0,energy:0},buildTime:120,cargoCapacity:1e3,attack:10,shield:50,armor:2e3,speed:5e3,fuelConsumption:500,storageUsage:50,requirements:{[e.Shipyard]:8,[t.HyperspaceDrive]:5,[t.DarkMatterTechnology]:1}},[r.Deathstar]:{id:r.Deathstar,name:`死星`,description:`终极武器,能够摧毁整个行星`,cost:{metal:5e6,crystal:4e6,deuterium:1e6,darkMatter:5e4,energy:0},buildTime:600,cargoCapacity:1e6,attack:2e5,shield:5e4,armor:9e5,speed:100,fuelConsumption:1,storageUsage:100,requirements:{[e.PlanetDestroyerFactory]:10,[t.PlanetDestructionTech]:7,[t.HyperspaceDrive]:7}}},o={[n.RocketLauncher]:{id:n.RocketLauncher,name:`火箭发射器`,description:`基础防御设施`,cost:{metal:2e3,crystal:0,deuterium:0,darkMatter:0,energy:0},buildTime:10,attack:80,shield:20,armor:200,requirements:{[e.Shipyard]:1}},[n.LightLaser]:{id:n.LightLaser,name:`轻型激光炮`,description:`激光防御武器`,cost:{metal:1500,crystal:500,deuterium:0,darkMatter:0,energy:0},buildTime:12,attack:100,shield:25,armor:200,requirements:{[e.Shipyard]:2,[t.LaserTechnology]:3}},[n.HeavyLaser]:{id:n.HeavyLaser,name:`重型激光炮`,description:`强力激光武器`,cost:{metal:6e3,crystal:2e3,deuterium:0,darkMatter:0,energy:0},buildTime:20,attack:250,shield:100,armor:800,requirements:{[e.Shipyard]:4,[t.LaserTechnology]:6}},[n.GaussCannon]:{id:n.GaussCannon,name:`高斯炮`,description:`电磁加速武器`,cost:{metal:2e4,crystal:15e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:35,attack:1100,shield:200,armor:3500,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:6}},[n.IonCannon]:{id:n.IonCannon,name:`离子炮`,description:`离子武器系统`,cost:{metal:2e3,crystal:6e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,attack:150,shield:500,armor:800,requirements:{[e.Shipyard]:4,[t.IonTechnology]:4}},[n.PlasmaTurret]:{id:n.PlasmaTurret,name:`等离子炮台`,description:`最强防御武器`,cost:{metal:5e4,crystal:5e4,deuterium:3e4,darkMatter:0,energy:0},buildTime:60,attack:3e3,shield:300,armor:1e4,requirements:{[e.Shipyard]:8,[t.PlasmaTechnology]:7}},[n.SmallShieldDome]:{id:n.SmallShieldDome,name:`小型护盾罩`,description:`保护星球的能量护盾`,cost:{metal:1e4,crystal:1e4,deuterium:0,darkMatter:0,energy:0},buildTime:30,attack:1,shield:2e3,armor:2e3,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:3}},[n.LargeShieldDome]:{id:n.LargeShieldDome,name:`大型护盾罩`,description:`强大的星球护盾`,cost:{metal:5e4,crystal:5e4,deuterium:0,darkMatter:0,energy:0},buildTime:60,attack:1,shield:1e4,armor:1e4,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:6}},[n.PlanetaryShield]:{id:n.PlanetaryShield,name:`行星护盾`,description:`保护行星免受毁灭攻击的超级护盾`,cost:{metal:2e6,crystal:2e6,deuterium:1e6,darkMatter:5e4,energy:0},buildTime:180,attack:1,shield:1e5,armor:1e5,requirements:{[e.Shipyard]:10,[t.EnergyTechnology]:10,[t.HyperspaceTechnology]:8}},[n.AntiBallisticMissile]:{id:n.AntiBallisticMissile,name:`反弹道导弹`,description:`拦截敌方导弹,每个可拦截1枚星际导弹`,cost:{metal:8e3,crystal:0,deuterium:2e3,darkMatter:0,energy:0},buildTime:20,attack:1,shield:1,armor:800,requirements:{[e.MissileSilo]:2}},[n.InterplanetaryMissile]:{id:n.InterplanetaryMissile,name:`星际导弹`,description:`可以攻击其他星球的防御设施,射程取决于脉冲引擎等级`,cost:{metal:12500,crystal:2500,deuterium:1e4,darkMatter:0,energy:0},buildTime:30,attack:12e3,shield:1,armor:1500,requirements:{[e.MissileSilo]:4,[t.ImpulseDrive]:1}}};i.Commander,i.Commander,i.Admiral,i.Admiral,i.Engineer,i.Engineer,i.Geologist,i.Geologist,i.Technocrat,i.Technocrat,i.DarkMatterSpecialist,i.DarkMatterSpecialist;let s={SIMULATE_BATTLE:`SIMULATE_BATTLE`,CALCULATE_PLUNDER:`CALCULATE_PLUNDER`,CALCULATE_DEBRIS:`CALCULATE_DEBRIS`,SUCCESS:`SUCCESS`,ERROR:`ERROR`},c=(e,t=0,n=.1)=>Math.floor(e*(1+t*n)),l=(e,t=!1)=>{let n=[];if(e.ships){for(let[t,r]of Object.entries(e.ships))if(r>0){let i=a[t];n.push({type:t,count:r,attack:c(i.attack,e.weaponTech),shield:c(i.shield,e.shieldTech),armor:c(i.armor,e.armorTech)})}}if(t&&e.defense){for(let[t,r]of Object.entries(e.defense))if(r>0){let i=o[t];n.push({type:t,count:r,attack:c(i.attack,e.weaponTech),shield:c(i.shield,e.shieldTech),armor:c(i.armor,e.armorTech)})}}return n},u=(e,t)=>{let n=e.attack,r=t.shield,i=t.armor,a=0,o=0;if(n.01)return{destroyed:0,damagedShield:0};let s=n;if(s>r)s-=r,o=r;else return o=s,{destroyed:0,damagedShield:o};if(s>i)a=1;else{let e=s/i;Math.random(){let n={},i={},a={};for(let n of e)for(let e=0;e0){if(o.count-=s,Object.values(r).includes(o.type)){let e=o.type;i[e]=(i[e]||0)+s}else{let e=o.type;a[e]=(a[e]||0)+s}o.count<=0&&t.splice(e,1)}}for(let r of t)for(let t=0;t0){i.count-=a;let r=i.type;n[r]=(n[r]||0)+a,i.count<=0&&e.splice(t,1)}}let o=e.reduce((e,t)=>e+t.count*t.attack,0),s=t.reduce((e,t)=>e+t.count*t.attack,0);return{attackerLosses:n,defenderLosses:{fleet:i,defense:a},attackerRemainingPower:o,defenderRemainingPower:s}},f=(e,t,n=6)=>{let i=l(e,!1),a=l(t,!0),o={},s={},c={},u=[],f=0;for(let e=0;e0&&(p[e]=n,c[e]=t-n)}let m={};for(let e of i)e.count>0&&(m[e.type]=e.count);let h={},g={};for(let e of a)e.count>0&&(Object.values(r).includes(e.type)?h[e.type]=e.count:g[e.type]=e.count);for(let[e,t]of Object.entries(p))g[e]=(g[e]||0)+t;let _;return _=i.length===0&&a.length===0?`draw`:i.length===0?`defender`:a.length===0?`attacker`:`draw`,{winner:_,rounds:f,attackerLosses:o,defenderLosses:{fleet:s,defense:c},attackerRemaining:m,defenderRemaining:{fleet:h,defense:g},roundDetails:u}},p=(e,t)=>{let n=0;for(let[e,r]of Object.entries(t)){let t=a[e];n+=t.cargoCapacity*r}let r={metal:Math.floor(e.metal*.5),crystal:Math.floor(e.crystal*.5),deuterium:Math.floor(e.deuterium*.5),darkMatter:Math.floor(e.darkMatter*.5),energy:0},i=r.metal+r.crystal+r.deuterium+r.darkMatter;if(n>=i)return r;let o=n/i;return{metal:Math.floor(r.metal*o),crystal:Math.floor(r.crystal*o),deuterium:Math.floor(r.deuterium*o),darkMatter:Math.floor(r.darkMatter*o),energy:0}},m=(e,t)=>{let n=0,r=0;for(let[t,i]of Object.entries(e)){let e=a[t];n+=e.cost.metal*i*.3,r+=e.cost.crystal*i*.3}for(let[e,i]of Object.entries(t.fleet)){let t=a[e];n+=t.cost.metal*i*.3,r+=t.cost.crystal*i*.3}for(let[e,i]of Object.entries(t.defense)){let t=o[e];n+=t.cost.metal*i*.3,r+=t.cost.crystal*i*.3}return{metal:Math.floor(n),crystal:Math.floor(r),deuterium:0,darkMatter:0,energy:0}};self.onmessage=e=>{let{id:t,type:n,payload:r}=e.data;try{let e;switch(n){case s.SIMULATE_BATTLE:{let{attacker:t,defender:n,maxRounds:i=6}=r;e=f(t,n,i);break}case s.CALCULATE_PLUNDER:{let{defenderResources:t,attackerFleet:n}=r;e=p(t,n);break}case s.CALCULATE_DEBRIS:{let{attackerLosses:t,defenderLosses:n}=r;e=m(t,n);break}default:throw Error(`Unknown message type: ${n}`)}let i={id:t,type:s.SUCCESS,success:!0,data:e};self.postMessage(i)}catch(e){let n={id:t,type:s.ERROR,success:!1,error:e instanceof Error?e.message:String(e)};self.postMessage(n)}}})(); \ No newline at end of file +(function(){let e={MetalMine:`metalMine`,CrystalMine:`crystalMine`,DeuteriumSynthesizer:`deuteriumSynthesizer`,SolarPlant:`solarPlant`,FusionReactor:`fusionReactor`,RoboticsFactory:`roboticsFactory`,NaniteFactory:`naniteFactory`,Shipyard:`shipyard`,ResearchLab:`researchLab`,MetalStorage:`metalStorage`,CrystalStorage:`crystalStorage`,DeuteriumTank:`deuteriumTank`,DarkMatterCollector:`darkMatterCollector`,DarkMatterTank:`darkMatterTank`,MissileSilo:`missileSilo`,Terraformer:`terraformer`,LunarBase:`lunarBase`,SensorPhalanx:`sensorPhalanx`,JumpGate:`jumpGate`,PlanetDestroyerFactory:`planetDestroyerFactory`},t={EnergyTechnology:`energyTechnology`,LaserTechnology:`laserTechnology`,IonTechnology:`ionTechnology`,HyperspaceTechnology:`hyperspaceTechnology`,PlasmaTechnology:`plasmaTechnology`,ComputerTechnology:`computerTechnology`,EspionageTechnology:`espionageTechnology`,CombustionDrive:`combustionDrive`,ImpulseDrive:`impulseDrive`,HyperspaceDrive:`hyperspaceDrive`,WeaponsTechnology:`weaponsTechnology`,ShieldingTechnology:`shieldingTechnology`,ArmourTechnology:`armourTechnology`,Astrophysics:`astrophysics`,GravitonTechnology:`gravitonTechnology`,DarkMatterTechnology:`darkMatterTechnology`,TerraformingTechnology:`terraformingTechnology`,PlanetDestructionTech:`planetDestructionTech`},n={RocketLauncher:`rocketLauncher`,LightLaser:`lightLaser`,HeavyLaser:`heavyLaser`,GaussCannon:`gaussCannon`,IonCannon:`ionCannon`,PlasmaTurret:`plasmaTurret`,SmallShieldDome:`smallShieldDome`,LargeShieldDome:`largeShieldDome`,AntiBallisticMissile:`antiBallisticMissile`,InterplanetaryMissile:`interplanetaryMissile`,PlanetaryShield:`planetaryShield`},r={LightFighter:`lightFighter`,HeavyFighter:`heavyFighter`,Cruiser:`cruiser`,Battleship:`battleship`,Battlecruiser:`battlecruiser`,Bomber:`bomber`,Destroyer:`destroyer`,SmallCargo:`smallCargo`,LargeCargo:`largeCargo`,ColonyShip:`colonyShip`,Recycler:`recycler`,EspionageProbe:`espionageProbe`,SolarSatellite:`solarSatellite`,DarkMatterHarvester:`darkMatterHarvester`,Deathstar:`deathstar`},i={Commander:`commander`,Admiral:`admiral`,Engineer:`engineer`,Geologist:`geologist`,Technocrat:`technocrat`,DarkMatterSpecialist:`darkMatterSpecialist`};e.MetalMine,e.MetalMine,e.SolarPlant,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.CrystalMine,e.CrystalMine,e.SolarPlant,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.DeuteriumSynthesizer,e.DeuteriumSynthesizer,e.SolarPlant,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.SolarPlant,e.SolarPlant,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.FusionReactor,e.FusionReactor,t.EnergyTechnology,e.DeuteriumSynthesizer,e.RoboticsFactory,t.EnergyTechnology,e.RoboticsFactory,t.EnergyTechnology,e.NaniteFactory,e.RoboticsFactory,e.RoboticsFactory,e.MetalMine,e.CrystalMine,e.DeuteriumSynthesizer,e.ResearchLab,e.SolarPlant,e.ResearchLab,e.SolarPlant,e.MetalMine,e.CrystalMine,e.NaniteFactory,e.NaniteFactory,e.RoboticsFactory,e.ResearchLab,e.Shipyard,t.ComputerTechnology,e.ResearchLab,e.Shipyard,t.ComputerTechnology,e.Shipyard,e.Shipyard,e.RoboticsFactory,e.RoboticsFactory,e.ResearchLab,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,e.ResearchLab,e.ResearchLab,e.MetalMine,e.CrystalMine,e.DeuteriumSynthesizer,e.RoboticsFactory,e.MetalMine,e.CrystalMine,e.DeuteriumSynthesizer,e.RoboticsFactory,e.NaniteFactory,t.EnergyTechnology,e.MetalStorage,e.MetalStorage,e.MetalMine,e.MetalMine,e.RoboticsFactory,e.MetalMine,e.RoboticsFactory,e.CrystalStorage,e.CrystalStorage,e.CrystalMine,e.CrystalMine,e.RoboticsFactory,e.CrystalMine,e.RoboticsFactory,e.DeuteriumTank,e.DeuteriumTank,e.DeuteriumSynthesizer,e.DeuteriumSynthesizer,e.RoboticsFactory,e.DeuteriumSynthesizer,e.RoboticsFactory,e.DarkMatterCollector,e.DarkMatterCollector,e.ResearchLab,t.DarkMatterTechnology,e.ResearchLab,t.DarkMatterTechnology,e.RoboticsFactory,e.ResearchLab,t.DarkMatterTechnology,e.NaniteFactory,e.DarkMatterTank,e.DarkMatterTank,e.DarkMatterCollector,t.DarkMatterTechnology,e.DarkMatterCollector,e.RoboticsFactory,e.DarkMatterCollector,e.RoboticsFactory,t.DarkMatterTechnology,e.MissileSilo,e.MissileSilo,e.Shipyard,e.Shipyard,t.ComputerTechnology,e.Shipyard,t.ComputerTechnology,e.NaniteFactory,e.Terraformer,e.Terraformer,e.ResearchLab,e.RoboticsFactory,t.TerraformingTechnology,e.ResearchLab,t.TerraformingTechnology,e.NaniteFactory,e.ResearchLab,t.TerraformingTechnology,e.NaniteFactory,e.LunarBase,e.LunarBase,e.RoboticsFactory,e.RoboticsFactory,e.NaniteFactory,e.SensorPhalanx,e.SensorPhalanx,e.LunarBase,e.LunarBase,t.ComputerTechnology,e.LunarBase,t.ComputerTechnology,e.NaniteFactory,e.JumpGate,e.JumpGate,e.LunarBase,t.HyperspaceTechnology,e.LunarBase,t.HyperspaceTechnology,e.NaniteFactory,e.PlanetDestroyerFactory,e.PlanetDestroyerFactory,e.Shipyard,e.RoboticsFactory,e.NaniteFactory,t.PlanetDestructionTech,e.Shipyard,e.NaniteFactory,t.PlanetDestructionTech,t.HyperspaceTechnology,t.EnergyTechnology,t.EnergyTechnology,e.ResearchLab,e.ResearchLab,e.SolarPlant,e.ResearchLab,e.SolarPlant,e.RoboticsFactory,e.ResearchLab,e.RoboticsFactory,e.NaniteFactory,t.LaserTechnology,t.LaserTechnology,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.Shipyard,e.ResearchLab,t.EnergyTechnology,e.Shipyard,t.IonTechnology,t.IonTechnology,e.ResearchLab,t.LaserTechnology,t.EnergyTechnology,e.ResearchLab,t.LaserTechnology,t.EnergyTechnology,e.ResearchLab,t.LaserTechnology,e.NaniteFactory,t.HyperspaceTechnology,t.HyperspaceTechnology,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.Shipyard,e.ResearchLab,t.EnergyTechnology,e.NaniteFactory,t.PlasmaTechnology,t.PlasmaTechnology,e.ResearchLab,t.EnergyTechnology,t.LaserTechnology,t.IonTechnology,e.ResearchLab,t.EnergyTechnology,t.IonTechnology,e.NaniteFactory,e.ResearchLab,t.EnergyTechnology,t.IonTechnology,e.NaniteFactory,t.ComputerTechnology,t.ComputerTechnology,e.ResearchLab,e.ResearchLab,e.ResearchLab,e.RoboticsFactory,e.ResearchLab,e.NaniteFactory,t.EspionageTechnology,t.EspionageTechnology,e.ResearchLab,e.ResearchLab,t.ComputerTechnology,e.ResearchLab,t.ComputerTechnology,t.WeaponsTechnology,t.WeaponsTechnology,e.ResearchLab,e.ResearchLab,e.Shipyard,e.ResearchLab,e.Shipyard,e.NaniteFactory,t.ShieldingTechnology,t.ShieldingTechnology,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.NaniteFactory,t.ArmourTechnology,t.ArmourTechnology,e.ResearchLab,e.ResearchLab,e.Shipyard,e.ResearchLab,e.Shipyard,e.NaniteFactory,t.Astrophysics,t.Astrophysics,e.ResearchLab,t.EspionageTechnology,t.ImpulseDrive,e.ResearchLab,t.EspionageTechnology,e.ResearchLab,t.HyperspaceTechnology,e.NaniteFactory,t.GravitonTechnology,t.GravitonTechnology,e.ResearchLab,t.CombustionDrive,t.CombustionDrive,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.Shipyard,e.ResearchLab,t.EnergyTechnology,e.Shipyard,t.ImpulseDrive,t.ImpulseDrive,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.Shipyard,e.ResearchLab,t.EnergyTechnology,e.Shipyard,t.HyperspaceDrive,t.HyperspaceDrive,e.ResearchLab,t.HyperspaceTechnology,e.ResearchLab,t.HyperspaceTechnology,e.Shipyard,e.ResearchLab,t.HyperspaceTechnology,e.NaniteFactory,t.DarkMatterTechnology,t.DarkMatterTechnology,e.ResearchLab,t.HyperspaceTechnology,e.ResearchLab,t.HyperspaceTechnology,e.RoboticsFactory,t.EnergyTechnology,e.ResearchLab,t.HyperspaceTechnology,e.NaniteFactory,t.EnergyTechnology,t.TerraformingTechnology,t.TerraformingTechnology,e.ResearchLab,t.EnergyTechnology,e.ResearchLab,t.EnergyTechnology,e.RoboticsFactory,e.ResearchLab,t.EnergyTechnology,e.NaniteFactory,t.PlanetDestructionTech,t.PlanetDestructionTech,e.ResearchLab,t.HyperspaceTechnology,t.HyperspaceDrive,t.PlasmaTechnology,e.ResearchLab,t.HyperspaceTechnology,t.HyperspaceDrive,t.PlasmaTechnology,e.NaniteFactory;let a={[r.LightFighter]:{id:r.LightFighter,name:`轻型战斗机`,description:`基础战斗单位`,cost:{metal:3e3,crystal:1e3,deuterium:0,darkMatter:0,energy:0},buildTime:20,cargoCapacity:50,attack:50,shield:10,armor:400,speed:12500,fuelConsumption:20,storageUsage:5,requirements:{[e.Shipyard]:1,[t.CombustionDrive]:1}},[r.HeavyFighter]:{id:r.HeavyFighter,name:`重型战斗机`,description:`强力战斗单位`,cost:{metal:6e3,crystal:4e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,cargoCapacity:100,attack:150,shield:25,armor:1e3,speed:1e4,fuelConsumption:75,storageUsage:10,requirements:{[e.Shipyard]:3,[t.ImpulseDrive]:2}},[r.Cruiser]:{id:r.Cruiser,name:`巡洋舰`,description:`中型战舰`,cost:{metal:2e4,crystal:7e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:60,cargoCapacity:800,attack:400,shield:50,armor:2700,speed:15e3,fuelConsumption:300,storageUsage:15,requirements:{[e.Shipyard]:5,[t.ImpulseDrive]:4,[t.IonTechnology]:2}},[r.Battleship]:{id:r.Battleship,name:`战列舰`,description:`重型战舰`,cost:{metal:45e3,crystal:15e3,deuterium:0,darkMatter:0,energy:0},buildTime:90,cargoCapacity:1500,attack:1e3,shield:200,armor:6e3,speed:1e4,fuelConsumption:500,storageUsage:25,requirements:{[e.Shipyard]:7,[t.HyperspaceDrive]:4}},[r.Battlecruiser]:{id:r.Battlecruiser,name:`战列巡洋舰`,description:`快速强大的战斗舰船,擅长攻击战列舰`,cost:{metal:3e4,crystal:4e4,deuterium:15e3,darkMatter:0,energy:0},buildTime:70,cargoCapacity:750,attack:700,shield:400,armor:7e3,speed:1e4,fuelConsumption:250,storageUsage:20,requirements:{[e.Shipyard]:8,[t.HyperspaceDrive]:5,[t.HyperspaceTechnology]:5,[t.LaserTechnology]:12}},[r.Bomber]:{id:r.Bomber,name:`轰炸机`,description:`专门对付防御设施的轰炸舰`,cost:{metal:5e4,crystal:25e3,deuterium:15e3,darkMatter:0,energy:0},buildTime:100,cargoCapacity:500,attack:1e3,shield:500,armor:7500,speed:4e3,fuelConsumption:700,storageUsage:35,requirements:{[e.Shipyard]:8,[t.ImpulseDrive]:6,[t.PlasmaTechnology]:5}},[r.Destroyer]:{id:r.Destroyer,name:`驱逐舰`,description:`擅长摧毁大型舰船的猎杀者`,cost:{metal:6e4,crystal:5e4,deuterium:15e3,darkMatter:0,energy:0},buildTime:120,cargoCapacity:2e3,attack:2e3,shield:500,armor:11e3,speed:5e3,fuelConsumption:1e3,storageUsage:40,requirements:{[e.Shipyard]:9,[t.HyperspaceDrive]:6,[t.HyperspaceTechnology]:5}},[r.SmallCargo]:{id:r.SmallCargo,name:`小型运输船`,description:`运输资源`,cost:{metal:2e3,crystal:2e3,deuterium:0,darkMatter:0,energy:0},buildTime:15,cargoCapacity:5e3,attack:5,shield:10,armor:400,speed:5e3,fuelConsumption:10,storageUsage:10,requirements:{[e.Shipyard]:2,[t.CombustionDrive]:2}},[r.LargeCargo]:{id:r.LargeCargo,name:`大型运输船`,description:`大量运输资源`,cost:{metal:6e3,crystal:6e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,cargoCapacity:25e3,attack:5,shield:25,armor:1200,speed:7500,fuelConsumption:50,storageUsage:20,requirements:{[e.Shipyard]:4,[t.CombustionDrive]:6}},[r.ColonyShip]:{id:r.ColonyShip,name:`殖民船`,description:`建立新殖民地`,cost:{metal:1e4,crystal:2e4,deuterium:1e4,darkMatter:0,energy:0},buildTime:120,cargoCapacity:7500,attack:50,shield:100,armor:3e3,speed:2500,fuelConsumption:1e3,storageUsage:40,requirements:{[e.Shipyard]:4,[t.ImpulseDrive]:3}},[r.Recycler]:{id:r.Recycler,name:`回收船`,description:`回收废墟资源`,cost:{metal:1e4,crystal:6e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:60,cargoCapacity:2e4,attack:1,shield:10,armor:1600,speed:2e3,fuelConsumption:300,storageUsage:30,requirements:{[e.Shipyard]:4,[t.CombustionDrive]:6}},[r.EspionageProbe]:{id:r.EspionageProbe,name:`间谍探测器`,description:`侦察敌方星球`,cost:{metal:0,crystal:1e3,deuterium:0,darkMatter:0,energy:0},buildTime:5,cargoCapacity:5,attack:0,shield:0,armor:100,speed:1e8,fuelConsumption:1,storageUsage:2,requirements:{[e.Shipyard]:3,[t.CombustionDrive]:3}},[r.SolarSatellite]:{id:r.SolarSatellite,name:`太阳能卫星`,description:`提供额外能源,每个产生50点能量`,cost:{metal:0,crystal:2e3,deuterium:500,darkMatter:0,energy:0},buildTime:10,cargoCapacity:0,attack:1,shield:1,armor:200,speed:0,fuelConsumption:0,storageUsage:1,requirements:{[e.Shipyard]:1}},[r.DarkMatterHarvester]:{id:r.DarkMatterHarvester,name:`暗物质采集船`,description:`专门用于采集暗物质的特殊飞船`,cost:{metal:1e5,crystal:15e4,deuterium:5e4,darkMatter:0,energy:0},buildTime:120,cargoCapacity:1e3,attack:10,shield:50,armor:2e3,speed:5e3,fuelConsumption:500,storageUsage:50,requirements:{[e.Shipyard]:8,[t.HyperspaceDrive]:5,[t.DarkMatterTechnology]:1}},[r.Deathstar]:{id:r.Deathstar,name:`死星`,description:`终极武器,能够摧毁整个行星`,cost:{metal:5e6,crystal:4e6,deuterium:1e6,darkMatter:5e4,energy:0},buildTime:600,cargoCapacity:1e6,attack:2e5,shield:5e4,armor:9e5,speed:100,fuelConsumption:1,storageUsage:100,requirements:{[e.PlanetDestroyerFactory]:3,[t.PlanetDestructionTech]:7,[t.HyperspaceDrive]:7}}},o={[n.RocketLauncher]:{id:n.RocketLauncher,name:`火箭发射器`,description:`基础防御设施`,cost:{metal:2e3,crystal:0,deuterium:0,darkMatter:0,energy:0},buildTime:10,attack:80,shield:20,armor:200,requirements:{[e.Shipyard]:1}},[n.LightLaser]:{id:n.LightLaser,name:`轻型激光炮`,description:`激光防御武器`,cost:{metal:1500,crystal:500,deuterium:0,darkMatter:0,energy:0},buildTime:12,attack:100,shield:25,armor:200,requirements:{[e.Shipyard]:2,[t.LaserTechnology]:3}},[n.HeavyLaser]:{id:n.HeavyLaser,name:`重型激光炮`,description:`强力激光武器`,cost:{metal:6e3,crystal:2e3,deuterium:0,darkMatter:0,energy:0},buildTime:20,attack:250,shield:100,armor:800,requirements:{[e.Shipyard]:4,[t.LaserTechnology]:6}},[n.GaussCannon]:{id:n.GaussCannon,name:`高斯炮`,description:`电磁加速武器`,cost:{metal:2e4,crystal:15e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:35,attack:1100,shield:200,armor:3500,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:6}},[n.IonCannon]:{id:n.IonCannon,name:`离子炮`,description:`离子武器系统`,cost:{metal:2e3,crystal:6e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,attack:150,shield:500,armor:800,requirements:{[e.Shipyard]:4,[t.IonTechnology]:4}},[n.PlasmaTurret]:{id:n.PlasmaTurret,name:`等离子炮台`,description:`最强防御武器`,cost:{metal:5e4,crystal:5e4,deuterium:3e4,darkMatter:0,energy:0},buildTime:60,attack:3e3,shield:300,armor:1e4,requirements:{[e.Shipyard]:8,[t.PlasmaTechnology]:7}},[n.SmallShieldDome]:{id:n.SmallShieldDome,name:`小型护盾罩`,description:`保护星球的能量护盾`,cost:{metal:1e4,crystal:1e4,deuterium:0,darkMatter:0,energy:0},buildTime:30,attack:1,shield:2e3,armor:2e3,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:3}},[n.LargeShieldDome]:{id:n.LargeShieldDome,name:`大型护盾罩`,description:`强大的星球护盾`,cost:{metal:5e4,crystal:5e4,deuterium:0,darkMatter:0,energy:0},buildTime:60,attack:1,shield:1e4,armor:1e4,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:6}},[n.PlanetaryShield]:{id:n.PlanetaryShield,name:`行星护盾`,description:`保护行星免受毁灭攻击的超级护盾`,cost:{metal:2e6,crystal:2e6,deuterium:1e6,darkMatter:5e4,energy:0},buildTime:180,attack:1,shield:1e5,armor:1e5,requirements:{[e.Shipyard]:10,[t.EnergyTechnology]:10,[t.HyperspaceTechnology]:8}},[n.AntiBallisticMissile]:{id:n.AntiBallisticMissile,name:`反弹道导弹`,description:`拦截敌方导弹,每个可拦截1枚星际导弹`,cost:{metal:8e3,crystal:0,deuterium:2e3,darkMatter:0,energy:0},buildTime:20,attack:1,shield:1,armor:800,requirements:{[e.MissileSilo]:2}},[n.InterplanetaryMissile]:{id:n.InterplanetaryMissile,name:`星际导弹`,description:`可以攻击其他星球的防御设施,射程取决于脉冲引擎等级`,cost:{metal:12500,crystal:2500,deuterium:1e4,darkMatter:0,energy:0},buildTime:30,attack:12e3,shield:1,armor:1500,requirements:{[e.MissileSilo]:4,[t.ImpulseDrive]:1}}};i.Commander,i.Commander,i.Admiral,i.Admiral,i.Engineer,i.Engineer,i.Geologist,i.Geologist,i.Technocrat,i.Technocrat,i.DarkMatterSpecialist,i.DarkMatterSpecialist;let s={SIMULATE_BATTLE:`SIMULATE_BATTLE`,CALCULATE_PLUNDER:`CALCULATE_PLUNDER`,CALCULATE_DEBRIS:`CALCULATE_DEBRIS`,SUCCESS:`SUCCESS`,ERROR:`ERROR`},c=(e,t=0,n=.1)=>Math.floor(e*(1+t*n)),l=(e,t=!1)=>{let n=[];if(e.ships){for(let[t,r]of Object.entries(e.ships))if(r>0){let i=a[t];n.push({type:t,count:r,attack:c(i.attack,e.weaponTech),shield:c(i.shield,e.shieldTech),armor:c(i.armor,e.armorTech)})}}if(t&&e.defense){for(let[t,r]of Object.entries(e.defense))if(r>0){let i=o[t];n.push({type:t,count:r,attack:c(i.attack,e.weaponTech),shield:c(i.shield,e.shieldTech),armor:c(i.armor,e.armorTech)})}}return n},u=(e,t)=>{let n=e.attack,r=t.shield,i=t.armor,a=0,o=0;if(n.01)return{destroyed:0,damagedShield:0};let s=n;if(s>r)s-=r,o=r;else return o=s,{destroyed:0,damagedShield:o};if(s>i)a=1;else{let e=s/i;Math.random(){let n={},i={},a={};for(let n of e)for(let e=0;e0){if(o.count-=s,Object.values(r).includes(o.type)){let e=o.type;i[e]=(i[e]||0)+s}else{let e=o.type;a[e]=(a[e]||0)+s}o.count<=0&&t.splice(e,1)}}for(let r of t)for(let t=0;t0){i.count-=a;let r=i.type;n[r]=(n[r]||0)+a,i.count<=0&&e.splice(t,1)}}let o=e.reduce((e,t)=>e+t.count*t.attack,0),s=t.reduce((e,t)=>e+t.count*t.attack,0);return{attackerLosses:n,defenderLosses:{fleet:i,defense:a},attackerRemainingPower:o,defenderRemainingPower:s}},f=(e,t,n=6)=>{let i=l(e,!1),a=l(t,!0),o={},s={},c={},u=[],f=0;for(let e=0;e0&&(p[e]=n,c[e]=t-n)}let m={};for(let e of i)e.count>0&&(m[e.type]=e.count);let h={},g={};for(let e of a)e.count>0&&(Object.values(r).includes(e.type)?h[e.type]=e.count:g[e.type]=e.count);for(let[e,t]of Object.entries(p))g[e]=(g[e]||0)+t;let _;return _=i.length===0&&a.length===0?`draw`:i.length===0?`defender`:a.length===0?`attacker`:`draw`,{winner:_,rounds:f,attackerLosses:o,defenderLosses:{fleet:s,defense:c},attackerRemaining:m,defenderRemaining:{fleet:h,defense:g},roundDetails:u}},p=(e,t)=>{let n=0;for(let[e,r]of Object.entries(t)){let t=a[e];n+=t.cargoCapacity*r}let r={metal:Math.floor(e.metal*.5),crystal:Math.floor(e.crystal*.5),deuterium:Math.floor(e.deuterium*.5),darkMatter:Math.floor(e.darkMatter*.5),energy:0},i=r.metal+r.crystal+r.deuterium+r.darkMatter;if(n>=i)return r;let o=n/i;return{metal:Math.floor(r.metal*o),crystal:Math.floor(r.crystal*o),deuterium:Math.floor(r.deuterium*o),darkMatter:Math.floor(r.darkMatter*o),energy:0}},m=(e,t)=>{let n=0,r=0;for(let[t,i]of Object.entries(e)){let e=a[t];n+=e.cost.metal*i*.3,r+=e.cost.crystal*i*.3}for(let[e,i]of Object.entries(t.fleet)){let t=a[e];n+=t.cost.metal*i*.3,r+=t.cost.crystal*i*.3}for(let[e,i]of Object.entries(t.defense)){let t=o[e];n+=t.cost.metal*i*.3,r+=t.cost.crystal*i*.3}return{metal:Math.floor(n),crystal:Math.floor(r),deuterium:0,darkMatter:0,energy:0}};self.onmessage=e=>{let{id:t,type:n,payload:r}=e.data;try{let e;switch(n){case s.SIMULATE_BATTLE:{let{attacker:t,defender:n,maxRounds:i=6}=r;e=f(t,n,i);break}case s.CALCULATE_PLUNDER:{let{defenderResources:t,attackerFleet:n}=r;e=p(t,n);break}case s.CALCULATE_DEBRIS:{let{attackerLosses:t,defenderLosses:n}=r;e=m(t,n);break}default:throw Error(`Unknown message type: ${n}`)}let i={id:t,type:s.SUCCESS,success:!0,data:e};self.postMessage(i)}catch(e){let n={id:t,type:s.ERROR,success:!1,error:e instanceof Error?e.message:String(e)};self.postMessage(n)}}})(); \ No newline at end of file diff --git a/docs/assets/empty-Ds0PR_Pd.js b/docs/assets/empty-Ds0PR_Pd.js new file mode 100644 index 0000000..ad779c4 --- /dev/null +++ b/docs/assets/empty-Ds0PR_Pd.js @@ -0,0 +1 @@ +import{En as e,ar as t,kn as n,pn as r,rr as i,un as a}from"./game-logic-BBFCPVtv.js";import{z as o}from"./vendor-others-Bce0hM6h.js";import{Y as s}from"./index-B4KMqZ_y.js";var c=r({__name:`Empty`,props:{class:{}},setup(r){let o=r;return(r,c)=>(e(),a(`div`,{"data-slot":`empty`,class:t(i(s)(`flex min-w-0 flex-1 flex-col items-center justify-center gap-6 text-balance rounded-lg border-dashed p-6 text-center md:p-12`,o.class))},[n(r.$slots,`default`)],2))}}),l=r({__name:`EmptyContent`,props:{class:{}},setup(r){let o=r;return(r,c)=>(e(),a(`div`,{"data-slot":`empty-content`,class:t(i(s)(`flex w-full min-w-0 max-w-sm flex-col items-center gap-4 text-balance text-sm`,o.class))},[n(r.$slots,`default`)],2))}}),u=r({__name:`EmptyDescription`,props:{class:{}},setup(r){return(r,o)=>(e(),a(`p`,{"data-slot":`empty-description`,class:t(i(s)(`text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4`,r.$attrs.class??``))},[n(r.$slots,`default`)],2))}}),d=r({__name:`EmptyHeader`,props:{class:{}},setup(r){let o=r;return(r,c)=>(e(),a(`div`,{"data-slot":`empty-header`,class:t(i(s)(`flex max-w-sm flex-col items-center gap-2 text-center`,o.class))},[n(r.$slots,`default`)],2))}}),f=[`data-variant`],p=r({__name:`EmptyMedia`,props:{class:{},variant:{}},setup(r){let o=r;return(c,l)=>(e(),a(`div`,{"data-slot":`empty-icon`,"data-variant":r.variant,class:t(i(s)(i(h)({variant:r.variant}),o.class))},[n(c.$slots,`default`)],10,f))}}),m=r({__name:`EmptyTitle`,props:{class:{}},setup(r){let o=r;return(r,c)=>(e(),a(`div`,{"data-slot":`empty-title`,class:t(i(s)(`text-lg font-medium tracking-tight`,o.class))},[n(r.$slots,`default`)],2))}});const h=o(`mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0`,{variants:{variant:{default:`bg-transparent`,icon:`bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6`}},defaultVariants:{variant:`default`}});export{l as a,u as i,p as n,c as o,d as r,m as t}; \ No newline at end of file diff --git a/docs/assets/game-config-CG6z6nnH.js b/docs/assets/game-config-CG6z6nnH.js deleted file mode 100644 index 516d0ec..0000000 --- a/docs/assets/game-config-CG6z6nnH.js +++ /dev/null @@ -1 +0,0 @@ -const e={MetalMine:`metalMine`,CrystalMine:`crystalMine`,DeuteriumSynthesizer:`deuteriumSynthesizer`,SolarPlant:`solarPlant`,FusionReactor:`fusionReactor`,RoboticsFactory:`roboticsFactory`,NaniteFactory:`naniteFactory`,Shipyard:`shipyard`,ResearchLab:`researchLab`,MetalStorage:`metalStorage`,CrystalStorage:`crystalStorage`,DeuteriumTank:`deuteriumTank`,DarkMatterCollector:`darkMatterCollector`,DarkMatterTank:`darkMatterTank`,MissileSilo:`missileSilo`,Terraformer:`terraformer`,LunarBase:`lunarBase`,SensorPhalanx:`sensorPhalanx`,JumpGate:`jumpGate`,PlanetDestroyerFactory:`planetDestroyerFactory`},t={EnergyTechnology:`energyTechnology`,LaserTechnology:`laserTechnology`,IonTechnology:`ionTechnology`,HyperspaceTechnology:`hyperspaceTechnology`,PlasmaTechnology:`plasmaTechnology`,ComputerTechnology:`computerTechnology`,EspionageTechnology:`espionageTechnology`,CombustionDrive:`combustionDrive`,ImpulseDrive:`impulseDrive`,HyperspaceDrive:`hyperspaceDrive`,WeaponsTechnology:`weaponsTechnology`,ShieldingTechnology:`shieldingTechnology`,ArmourTechnology:`armourTechnology`,Astrophysics:`astrophysics`,GravitonTechnology:`gravitonTechnology`,DarkMatterTechnology:`darkMatterTechnology`,TerraformingTechnology:`terraformingTechnology`,PlanetDestructionTech:`planetDestructionTech`},n={RocketLauncher:`rocketLauncher`,LightLaser:`lightLaser`,HeavyLaser:`heavyLaser`,GaussCannon:`gaussCannon`,IonCannon:`ionCannon`,PlasmaTurret:`plasmaTurret`,SmallShieldDome:`smallShieldDome`,LargeShieldDome:`largeShieldDome`,AntiBallisticMissile:`antiBallisticMissile`,InterplanetaryMissile:`interplanetaryMissile`,PlanetaryShield:`planetaryShield`},r={LightFighter:`lightFighter`,HeavyFighter:`heavyFighter`,Cruiser:`cruiser`,Battleship:`battleship`,Battlecruiser:`battlecruiser`,Bomber:`bomber`,Destroyer:`destroyer`,SmallCargo:`smallCargo`,LargeCargo:`largeCargo`,ColonyShip:`colonyShip`,Recycler:`recycler`,EspionageProbe:`espionageProbe`,SolarSatellite:`solarSatellite`,DarkMatterHarvester:`darkMatterHarvester`,Deathstar:`deathstar`},i={Attack:`attack`,Transport:`transport`,Colonize:`colonize`,Spy:`spy`,Deploy:`deploy`,Expedition:`expedition`,HarvestDarkMatter:`harvestDarkMatter`,Recycle:`recycle`,Destroy:`destroy`},a={Hostile:`hostile`,Neutral:`neutral`,Friendly:`friendly`},o={GiftResources:`giftResources`,Attack:`attack`,Spy:`spy`,StealDebris:`stealDebris`,AllyAttacked:`allyAttacked`},s={Commander:`commander`,Admiral:`admiral`,Engineer:`engineer`,Geologist:`geologist`,Technocrat:`technocrat`,DarkMatterSpecialist:`darkMatterSpecialist`},c={[e.MetalMine]:{id:e.MetalMine,name:`金属矿`,description:`开采金属资源`,baseCost:{metal:60,crystal:15,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:1.5,spaceUsage:1,planetOnly:!0,requirements:{[e.SolarPlant]:1},levelRequirements:{10:{[e.RoboticsFactory]:2},20:{[e.RoboticsFactory]:5,[e.ResearchLab]:3},30:{[e.NaniteFactory]:1,[e.ResearchLab]:8}}},[e.CrystalMine]:{id:e.CrystalMine,name:`晶体矿`,description:`开采晶体资源`,baseCost:{metal:48,crystal:24,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:1.6,spaceUsage:1,planetOnly:!0,requirements:{[e.SolarPlant]:1},levelRequirements:{10:{[e.RoboticsFactory]:2},20:{[e.RoboticsFactory]:5,[e.ResearchLab]:3},30:{[e.NaniteFactory]:1,[e.ResearchLab]:8}}},[e.DeuteriumSynthesizer]:{id:e.DeuteriumSynthesizer,name:`重氢合成器`,description:`合成重氢资源`,baseCost:{metal:225,crystal:75,deuterium:0,darkMatter:0,energy:0},baseTime:20,costMultiplier:1.5,spaceUsage:2,planetOnly:!0,requirements:{[e.SolarPlant]:1},levelRequirements:{10:{[e.RoboticsFactory]:2},20:{[e.RoboticsFactory]:5,[e.ResearchLab]:3},30:{[e.NaniteFactory]:1,[e.ResearchLab]:8}}},[e.SolarPlant]:{id:e.SolarPlant,name:`太阳能电站`,description:`提供能源`,baseCost:{metal:75,crystal:30,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:1.5,spaceUsage:2,levelRequirements:{15:{[e.RoboticsFactory]:3},25:{[e.RoboticsFactory]:6,[e.ResearchLab]:5},35:{[e.NaniteFactory]:1,[e.ResearchLab]:10}}},[e.FusionReactor]:{id:e.FusionReactor,name:`核聚变反应堆`,description:`使用重氢产生大量能源`,baseCost:{metal:900,crystal:360,deuterium:180,darkMatter:0,energy:0},baseTime:30,costMultiplier:1.8,spaceUsage:4,requirements:{[t.EnergyTechnology]:3,[e.DeuteriumSynthesizer]:5},levelRequirements:{10:{[e.RoboticsFactory]:5,[t.EnergyTechnology]:6},20:{[e.RoboticsFactory]:8,[t.EnergyTechnology]:10,[e.NaniteFactory]:2}}},[e.RoboticsFactory]:{id:e.RoboticsFactory,name:`机器人工厂`,description:`加快建造速度`,baseCost:{metal:400,crystal:120,deuterium:200,darkMatter:0,energy:0},baseTime:40,costMultiplier:2,spaceUsage:4,requirements:{[e.MetalMine]:2,[e.CrystalMine]:2,[e.DeuteriumSynthesizer]:2},levelRequirements:{5:{[e.ResearchLab]:3,[e.SolarPlant]:8},8:{[e.ResearchLab]:6,[e.SolarPlant]:12,[e.MetalMine]:12,[e.CrystalMine]:12}}},[e.NaniteFactory]:{id:e.NaniteFactory,name:`纳米工厂`,description:`增加建造队列数量,每级+1队列`,baseCost:{metal:1e6,crystal:5e5,deuterium:1e5,darkMatter:0,energy:0},baseTime:240,costMultiplier:2,spaceUsage:8,maxLevel:10,requirements:{[e.RoboticsFactory]:10},levelRequirements:{3:{[e.ResearchLab]:10,[e.Shipyard]:8,[t.ComputerTechnology]:8},5:{[e.ResearchLab]:12,[e.Shipyard]:10,[t.ComputerTechnology]:10}}},[e.Shipyard]:{id:e.Shipyard,name:`船坞`,description:`建造舰船`,baseCost:{metal:400,crystal:200,deuterium:100,darkMatter:0,energy:0},baseTime:30,costMultiplier:2,spaceUsage:5,fleetStorageBonus:1e3,requirements:{[e.RoboticsFactory]:2},levelRequirements:{8:{[e.RoboticsFactory]:5,[e.ResearchLab]:5},12:{[e.RoboticsFactory]:8,[e.ResearchLab]:8,[e.NaniteFactory]:2}}},[e.ResearchLab]:{id:e.ResearchLab,name:`研究实验室`,description:`研究科技`,baseCost:{metal:200,crystal:400,deuterium:200,darkMatter:0,energy:0},baseTime:30,costMultiplier:2,spaceUsage:3,requirements:{[e.MetalMine]:3,[e.CrystalMine]:3,[e.DeuteriumSynthesizer]:3},levelRequirements:{8:{[e.RoboticsFactory]:5,[e.MetalMine]:10,[e.CrystalMine]:10,[e.DeuteriumSynthesizer]:10},12:{[e.RoboticsFactory]:8,[e.NaniteFactory]:1,[t.EnergyTechnology]:5}}},[e.MetalStorage]:{id:e.MetalStorage,name:`金属仓库`,description:`增加金属存储上限`,baseCost:{metal:1e3,crystal:0,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:2,spaceUsage:1,requirements:{[e.MetalMine]:2},levelRequirements:{8:{[e.MetalMine]:15,[e.RoboticsFactory]:3},12:{[e.MetalMine]:25,[e.RoboticsFactory]:6}}},[e.CrystalStorage]:{id:e.CrystalStorage,name:`晶体仓库`,description:`增加晶体存储上限`,baseCost:{metal:1e3,crystal:500,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:2,spaceUsage:1,requirements:{[e.CrystalMine]:2},levelRequirements:{8:{[e.CrystalMine]:15,[e.RoboticsFactory]:3},12:{[e.CrystalMine]:25,[e.RoboticsFactory]:6}}},[e.DeuteriumTank]:{id:e.DeuteriumTank,name:`重氢罐`,description:`增加重氢存储上限`,baseCost:{metal:1e3,crystal:1e3,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:2,spaceUsage:1,requirements:{[e.DeuteriumSynthesizer]:2},levelRequirements:{8:{[e.DeuteriumSynthesizer]:15,[e.RoboticsFactory]:3},12:{[e.DeuteriumSynthesizer]:25,[e.RoboticsFactory]:6}}},[e.DarkMatterCollector]:{id:e.DarkMatterCollector,name:`暗物质收集器`,description:`收集稀有的暗物质资源`,baseCost:{metal:5e4,crystal:1e5,deuterium:5e4,darkMatter:0,energy:0},baseTime:90,costMultiplier:2,spaceUsage:6,planetOnly:!0,requirements:{[e.ResearchLab]:5,[t.DarkMatterTechnology]:1},levelRequirements:{5:{[e.ResearchLab]:8,[t.DarkMatterTechnology]:3,[e.RoboticsFactory]:8},8:{[e.ResearchLab]:10,[t.DarkMatterTechnology]:5,[e.NaniteFactory]:2}}},[e.DarkMatterTank]:{id:e.DarkMatterTank,name:`暗物质储罐`,description:`增加暗物质存储上限`,baseCost:{metal:1e4,crystal:1e4,deuterium:5e3,darkMatter:0,energy:0},baseTime:20,costMultiplier:2,spaceUsage:2,planetOnly:!0,requirements:{[e.DarkMatterCollector]:2,[t.DarkMatterTechnology]:1},levelRequirements:{8:{[e.DarkMatterCollector]:8,[e.RoboticsFactory]:3},12:{[e.DarkMatterCollector]:15,[e.RoboticsFactory]:6,[t.DarkMatterTechnology]:3}}},[e.MissileSilo]:{id:e.MissileSilo,name:`导弹发射井`,description:`存储和发射导弹,每级可存储10枚导弹`,baseCost:{metal:2e4,crystal:2e4,deuterium:1e3,darkMatter:0,energy:0},baseTime:45,costMultiplier:2,spaceUsage:5,maxLevel:10,requirements:{[e.Shipyard]:1},levelRequirements:{5:{[e.Shipyard]:5,[t.ComputerTechnology]:3},8:{[e.Shipyard]:8,[t.ComputerTechnology]:6,[e.NaniteFactory]:2}}},[e.Terraformer]:{id:e.Terraformer,name:`地形改造器`,description:`改造行星地形,每级增加5个可用空间`,baseCost:{metal:0,crystal:5e4,deuterium:1e5,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,spaceUsage:5,planetOnly:!0,requirements:{[e.ResearchLab]:10,[e.RoboticsFactory]:8,[t.TerraformingTechnology]:1},levelRequirements:{5:{[e.ResearchLab]:12,[t.TerraformingTechnology]:3,[e.NaniteFactory]:1},8:{[e.ResearchLab]:14,[t.TerraformingTechnology]:5,[e.NaniteFactory]:3}}},[e.LunarBase]:{id:e.LunarBase,name:`月球基地`,description:`增加月球可用空间`,baseCost:{metal:2e4,crystal:4e4,deuterium:2e4,darkMatter:0,energy:0},baseTime:45,costMultiplier:2,spaceUsage:0,moonOnly:!0,levelRequirements:{5:{[e.RoboticsFactory]:5},8:{[e.RoboticsFactory]:8,[e.NaniteFactory]:1}}},[e.SensorPhalanx]:{id:e.SensorPhalanx,name:`传感器阵列`,description:`侦测周围星系的舰队活动`,baseCost:{metal:2e4,crystal:4e4,deuterium:2e4,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,spaceUsage:6,moonOnly:!0,requirements:{[e.LunarBase]:1},levelRequirements:{5:{[e.LunarBase]:5,[t.ComputerTechnology]:5},8:{[e.LunarBase]:8,[t.ComputerTechnology]:8,[e.NaniteFactory]:2}}},[e.JumpGate]:{id:e.JumpGate,name:`跳跃门`,description:`瞬间传送舰队到其他月球`,baseCost:{metal:2e6,crystal:4e6,deuterium:2e6,darkMatter:5e4,energy:0},baseTime:240,costMultiplier:2,spaceUsage:10,moonOnly:!0,maxLevel:5,requirements:{[e.LunarBase]:1,[t.HyperspaceTechnology]:7},levelRequirements:{3:{[e.LunarBase]:5,[t.HyperspaceTechnology]:10,[e.NaniteFactory]:3}}},[e.PlanetDestroyerFactory]:{id:e.PlanetDestroyerFactory,name:`行星毁灭者工厂`,description:`建造能够摧毁行星的终极武器`,baseCost:{metal:5e6,crystal:4e6,deuterium:1e6,darkMatter:1e5,energy:0},baseTime:300,costMultiplier:2,spaceUsage:15,planetOnly:!0,maxLevel:3,requirements:{[e.Shipyard]:12,[e.RoboticsFactory]:10,[e.NaniteFactory]:5,[t.PlanetDestructionTech]:1},levelRequirements:{3:{[e.Shipyard]:14,[e.NaniteFactory]:8,[t.PlanetDestructionTech]:3,[t.HyperspaceTechnology]:10}}}},l={[t.EnergyTechnology]:{id:t.EnergyTechnology,name:`能源技术`,description:`加快研究速度`,baseCost:{metal:0,crystal:800,deuterium:400,darkMatter:0,energy:0},baseTime:30,costMultiplier:2,requirements:{[e.ResearchLab]:1},levelRequirements:{5:{[e.ResearchLab]:3,[e.SolarPlant]:10},8:{[e.ResearchLab]:5,[e.SolarPlant]:15,[e.RoboticsFactory]:3},12:{[e.ResearchLab]:8,[e.RoboticsFactory]:6,[e.NaniteFactory]:1}}},[t.LaserTechnology]:{id:t.LaserTechnology,name:`激光技术`,description:`开发激光武器`,baseCost:{metal:200,crystal:100,deuterium:0,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:1,[t.EnergyTechnology]:2},levelRequirements:{6:{[e.ResearchLab]:5,[t.EnergyTechnology]:5,[e.Shipyard]:3},10:{[e.ResearchLab]:8,[t.EnergyTechnology]:8,[e.Shipyard]:6}}},[t.IonTechnology]:{id:t.IonTechnology,name:`离子技术`,description:`开发离子武器`,baseCost:{metal:1e3,crystal:300,deuterium:100,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:4,[t.LaserTechnology]:5,[t.EnergyTechnology]:4},levelRequirements:{5:{[e.ResearchLab]:8,[t.LaserTechnology]:10,[t.EnergyTechnology]:8},8:{[e.ResearchLab]:10,[t.LaserTechnology]:12,[e.NaniteFactory]:2}}},[t.HyperspaceTechnology]:{id:t.HyperspaceTechnology,name:`超空间技术`,description:`研究超空间跳跃`,baseCost:{metal:0,crystal:4e3,deuterium:2e3,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:7,[t.EnergyTechnology]:5},levelRequirements:{5:{[e.ResearchLab]:10,[t.EnergyTechnology]:8,[e.Shipyard]:5},8:{[e.ResearchLab]:12,[t.EnergyTechnology]:10,[e.NaniteFactory]:2}}},[t.PlasmaTechnology]:{id:t.PlasmaTechnology,name:`等离子技术`,description:`开发等离子武器`,baseCost:{metal:2e3,crystal:4e3,deuterium:1e3,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:4,[t.EnergyTechnology]:8,[t.LaserTechnology]:10,[t.IonTechnology]:5},levelRequirements:{5:{[e.ResearchLab]:10,[t.EnergyTechnology]:12,[t.IonTechnology]:8,[e.NaniteFactory]:1},8:{[e.ResearchLab]:12,[t.EnergyTechnology]:15,[t.IonTechnology]:10,[e.NaniteFactory]:3}}},[t.ComputerTechnology]:{id:t.ComputerTechnology,name:`计算机技术`,description:`增加研究队列数量,每级+1队列`,baseCost:{metal:0,crystal:400,deuterium:600,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,fleetStorageBonus:500,maxLevel:10,requirements:{[e.ResearchLab]:1},levelRequirements:{3:{[e.ResearchLab]:5},5:{[e.ResearchLab]:8,[e.RoboticsFactory]:5},8:{[e.ResearchLab]:10,[e.NaniteFactory]:2}}},[t.EspionageTechnology]:{id:t.EspionageTechnology,name:`间谍技术`,description:`提高间谍探测效果,每级提高1级侦查深度`,baseCost:{metal:200,crystal:1e3,deuterium:200,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:3},levelRequirements:{5:{[e.ResearchLab]:6,[t.ComputerTechnology]:3},8:{[e.ResearchLab]:8,[t.ComputerTechnology]:5}}},[t.WeaponsTechnology]:{id:t.WeaponsTechnology,name:`武器技术`,description:`提高舰船和防御的攻击力,每级+10%`,baseCost:{metal:800,crystal:200,deuterium:0,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:4},levelRequirements:{5:{[e.ResearchLab]:7,[e.Shipyard]:4},10:{[e.ResearchLab]:10,[e.Shipyard]:8,[e.NaniteFactory]:2}}},[t.ShieldingTechnology]:{id:t.ShieldingTechnology,name:`护盾技术`,description:`提高舰船和防御的护盾值,每级+10%`,baseCost:{metal:200,crystal:600,deuterium:0,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:6,[t.EnergyTechnology]:3},levelRequirements:{5:{[e.ResearchLab]:8,[t.EnergyTechnology]:6},10:{[e.ResearchLab]:10,[t.EnergyTechnology]:10,[e.NaniteFactory]:2}}},[t.ArmourTechnology]:{id:t.ArmourTechnology,name:`装甲技术`,description:`提高舰船和防御的装甲值,每级+10%`,baseCost:{metal:1e3,crystal:0,deuterium:0,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:2},levelRequirements:{5:{[e.ResearchLab]:6,[e.Shipyard]:3},10:{[e.ResearchLab]:10,[e.Shipyard]:7,[e.NaniteFactory]:1}}},[t.Astrophysics]:{id:t.Astrophysics,name:`天体物理学`,description:`每级增加1个殖民地槽位,增加探险成功率`,baseCost:{metal:4e3,crystal:8e3,deuterium:4e3,darkMatter:0,energy:0},baseTime:60,costMultiplier:1.75,requirements:{[e.ResearchLab]:3,[t.EspionageTechnology]:4,[t.ImpulseDrive]:3},levelRequirements:{5:{[e.ResearchLab]:8,[t.EspionageTechnology]:8},10:{[e.ResearchLab]:12,[t.HyperspaceTechnology]:5,[e.NaniteFactory]:3}}},[t.GravitonTechnology]:{id:t.GravitonTechnology,name:`引力技术`,description:`研究引力操纵,死星的必要技术`,baseCost:{metal:0,crystal:0,deuterium:0,darkMatter:3e5,energy:0},baseTime:0,costMultiplier:3,maxLevel:1,requirements:{[e.ResearchLab]:12}},[t.CombustionDrive]:{id:t.CombustionDrive,name:`燃烧引擎`,description:`基础推进系统`,baseCost:{metal:400,crystal:0,deuterium:600,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:1,[t.EnergyTechnology]:1},levelRequirements:{5:{[e.ResearchLab]:5,[t.EnergyTechnology]:3,[e.Shipyard]:2},8:{[e.ResearchLab]:8,[t.EnergyTechnology]:5,[e.Shipyard]:5}}},[t.ImpulseDrive]:{id:t.ImpulseDrive,name:`脉冲引擎`,description:`高级推进系统`,baseCost:{metal:2e3,crystal:4e3,deuterium:600,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:2,[t.EnergyTechnology]:1},levelRequirements:{5:{[e.ResearchLab]:6,[t.EnergyTechnology]:4,[e.Shipyard]:3},8:{[e.ResearchLab]:8,[t.EnergyTechnology]:6,[e.Shipyard]:6}}},[t.HyperspaceDrive]:{id:t.HyperspaceDrive,name:`超空间引擎`,description:`超空间推进系统`,baseCost:{metal:1e4,crystal:2e4,deuterium:6e3,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:7,[t.HyperspaceTechnology]:3},levelRequirements:{5:{[e.ResearchLab]:10,[t.HyperspaceTechnology]:6,[e.Shipyard]:8},8:{[e.ResearchLab]:12,[t.HyperspaceTechnology]:8,[e.NaniteFactory]:3}}},[t.DarkMatterTechnology]:{id:t.DarkMatterTechnology,name:`暗物质技术`,description:`研究暗物质的性质和应用`,baseCost:{metal:1e5,crystal:2e5,deuterium:1e5,darkMatter:0,energy:0},baseTime:180,costMultiplier:2,requirements:{[e.ResearchLab]:8,[t.HyperspaceTechnology]:5},levelRequirements:{3:{[e.ResearchLab]:10,[t.HyperspaceTechnology]:8,[e.RoboticsFactory]:10,[t.EnergyTechnology]:10},5:{[e.ResearchLab]:12,[t.HyperspaceTechnology]:10,[e.NaniteFactory]:2,[t.EnergyTechnology]:12}}},[t.TerraformingTechnology]:{id:t.TerraformingTechnology,name:`地形改造技术`,description:`研究行星地形改造技术,每级为所有行星增加5个可用空间`,baseCost:{metal:0,crystal:2e4,deuterium:4e4,darkMatter:0,energy:0},baseTime:90,costMultiplier:2,requirements:{[e.ResearchLab]:8,[t.EnergyTechnology]:6},levelRequirements:{5:{[e.ResearchLab]:12,[t.EnergyTechnology]:10,[e.RoboticsFactory]:10},8:{[e.ResearchLab]:14,[t.EnergyTechnology]:12,[e.NaniteFactory]:3}}},[t.PlanetDestructionTech]:{id:t.PlanetDestructionTech,name:`行星毁灭技术`,description:`研究如何摧毁整个行星的恐怖技术`,baseCost:{metal:4e6,crystal:8e6,deuterium:4e6,darkMatter:2e5,energy:0},baseTime:300,costMultiplier:2,maxLevel:5,requirements:{[e.ResearchLab]:12,[t.HyperspaceTechnology]:8,[t.HyperspaceDrive]:6,[t.PlasmaTechnology]:7},levelRequirements:{3:{[e.ResearchLab]:14,[t.HyperspaceTechnology]:12,[t.HyperspaceDrive]:10,[t.PlasmaTechnology]:10,[e.NaniteFactory]:5}}}},u={[r.LightFighter]:{id:r.LightFighter,name:`轻型战斗机`,description:`基础战斗单位`,cost:{metal:3e3,crystal:1e3,deuterium:0,darkMatter:0,energy:0},buildTime:20,cargoCapacity:50,attack:50,shield:10,armor:400,speed:12500,fuelConsumption:20,storageUsage:5,requirements:{[e.Shipyard]:1,[t.CombustionDrive]:1}},[r.HeavyFighter]:{id:r.HeavyFighter,name:`重型战斗机`,description:`强力战斗单位`,cost:{metal:6e3,crystal:4e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,cargoCapacity:100,attack:150,shield:25,armor:1e3,speed:1e4,fuelConsumption:75,storageUsage:10,requirements:{[e.Shipyard]:3,[t.ImpulseDrive]:2}},[r.Cruiser]:{id:r.Cruiser,name:`巡洋舰`,description:`中型战舰`,cost:{metal:2e4,crystal:7e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:60,cargoCapacity:800,attack:400,shield:50,armor:2700,speed:15e3,fuelConsumption:300,storageUsage:15,requirements:{[e.Shipyard]:5,[t.ImpulseDrive]:4,[t.IonTechnology]:2}},[r.Battleship]:{id:r.Battleship,name:`战列舰`,description:`重型战舰`,cost:{metal:45e3,crystal:15e3,deuterium:0,darkMatter:0,energy:0},buildTime:90,cargoCapacity:1500,attack:1e3,shield:200,armor:6e3,speed:1e4,fuelConsumption:500,storageUsage:25,requirements:{[e.Shipyard]:7,[t.HyperspaceDrive]:4}},[r.Battlecruiser]:{id:r.Battlecruiser,name:`战列巡洋舰`,description:`快速强大的战斗舰船,擅长攻击战列舰`,cost:{metal:3e4,crystal:4e4,deuterium:15e3,darkMatter:0,energy:0},buildTime:70,cargoCapacity:750,attack:700,shield:400,armor:7e3,speed:1e4,fuelConsumption:250,storageUsage:20,requirements:{[e.Shipyard]:8,[t.HyperspaceDrive]:5,[t.HyperspaceTechnology]:5,[t.LaserTechnology]:12}},[r.Bomber]:{id:r.Bomber,name:`轰炸机`,description:`专门对付防御设施的轰炸舰`,cost:{metal:5e4,crystal:25e3,deuterium:15e3,darkMatter:0,energy:0},buildTime:100,cargoCapacity:500,attack:1e3,shield:500,armor:7500,speed:4e3,fuelConsumption:700,storageUsage:35,requirements:{[e.Shipyard]:8,[t.ImpulseDrive]:6,[t.PlasmaTechnology]:5}},[r.Destroyer]:{id:r.Destroyer,name:`驱逐舰`,description:`擅长摧毁大型舰船的猎杀者`,cost:{metal:6e4,crystal:5e4,deuterium:15e3,darkMatter:0,energy:0},buildTime:120,cargoCapacity:2e3,attack:2e3,shield:500,armor:11e3,speed:5e3,fuelConsumption:1e3,storageUsage:40,requirements:{[e.Shipyard]:9,[t.HyperspaceDrive]:6,[t.HyperspaceTechnology]:5}},[r.SmallCargo]:{id:r.SmallCargo,name:`小型运输船`,description:`运输资源`,cost:{metal:2e3,crystal:2e3,deuterium:0,darkMatter:0,energy:0},buildTime:15,cargoCapacity:5e3,attack:5,shield:10,armor:400,speed:5e3,fuelConsumption:10,storageUsage:10,requirements:{[e.Shipyard]:2,[t.CombustionDrive]:2}},[r.LargeCargo]:{id:r.LargeCargo,name:`大型运输船`,description:`大量运输资源`,cost:{metal:6e3,crystal:6e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,cargoCapacity:25e3,attack:5,shield:25,armor:1200,speed:7500,fuelConsumption:50,storageUsage:20,requirements:{[e.Shipyard]:4,[t.CombustionDrive]:6}},[r.ColonyShip]:{id:r.ColonyShip,name:`殖民船`,description:`建立新殖民地`,cost:{metal:1e4,crystal:2e4,deuterium:1e4,darkMatter:0,energy:0},buildTime:120,cargoCapacity:7500,attack:50,shield:100,armor:3e3,speed:2500,fuelConsumption:1e3,storageUsage:40,requirements:{[e.Shipyard]:4,[t.ImpulseDrive]:3}},[r.Recycler]:{id:r.Recycler,name:`回收船`,description:`回收废墟资源`,cost:{metal:1e4,crystal:6e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:60,cargoCapacity:2e4,attack:1,shield:10,armor:1600,speed:2e3,fuelConsumption:300,storageUsage:30,requirements:{[e.Shipyard]:4,[t.CombustionDrive]:6}},[r.EspionageProbe]:{id:r.EspionageProbe,name:`间谍探测器`,description:`侦察敌方星球`,cost:{metal:0,crystal:1e3,deuterium:0,darkMatter:0,energy:0},buildTime:5,cargoCapacity:5,attack:0,shield:0,armor:100,speed:1e8,fuelConsumption:1,storageUsage:2,requirements:{[e.Shipyard]:3,[t.CombustionDrive]:3}},[r.SolarSatellite]:{id:r.SolarSatellite,name:`太阳能卫星`,description:`提供额外能源,每个产生50点能量`,cost:{metal:0,crystal:2e3,deuterium:500,darkMatter:0,energy:0},buildTime:10,cargoCapacity:0,attack:1,shield:1,armor:200,speed:0,fuelConsumption:0,storageUsage:1,requirements:{[e.Shipyard]:1}},[r.DarkMatterHarvester]:{id:r.DarkMatterHarvester,name:`暗物质采集船`,description:`专门用于采集暗物质的特殊飞船`,cost:{metal:1e5,crystal:15e4,deuterium:5e4,darkMatter:0,energy:0},buildTime:120,cargoCapacity:1e3,attack:10,shield:50,armor:2e3,speed:5e3,fuelConsumption:500,storageUsage:50,requirements:{[e.Shipyard]:8,[t.HyperspaceDrive]:5,[t.DarkMatterTechnology]:1}},[r.Deathstar]:{id:r.Deathstar,name:`死星`,description:`终极武器,能够摧毁整个行星`,cost:{metal:5e6,crystal:4e6,deuterium:1e6,darkMatter:5e4,energy:0},buildTime:600,cargoCapacity:1e6,attack:2e5,shield:5e4,armor:9e5,speed:100,fuelConsumption:1,storageUsage:100,requirements:{[e.PlanetDestroyerFactory]:10,[t.PlanetDestructionTech]:7,[t.HyperspaceDrive]:7}}},d={[n.RocketLauncher]:{id:n.RocketLauncher,name:`火箭发射器`,description:`基础防御设施`,cost:{metal:2e3,crystal:0,deuterium:0,darkMatter:0,energy:0},buildTime:10,attack:80,shield:20,armor:200,requirements:{[e.Shipyard]:1}},[n.LightLaser]:{id:n.LightLaser,name:`轻型激光炮`,description:`激光防御武器`,cost:{metal:1500,crystal:500,deuterium:0,darkMatter:0,energy:0},buildTime:12,attack:100,shield:25,armor:200,requirements:{[e.Shipyard]:2,[t.LaserTechnology]:3}},[n.HeavyLaser]:{id:n.HeavyLaser,name:`重型激光炮`,description:`强力激光武器`,cost:{metal:6e3,crystal:2e3,deuterium:0,darkMatter:0,energy:0},buildTime:20,attack:250,shield:100,armor:800,requirements:{[e.Shipyard]:4,[t.LaserTechnology]:6}},[n.GaussCannon]:{id:n.GaussCannon,name:`高斯炮`,description:`电磁加速武器`,cost:{metal:2e4,crystal:15e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:35,attack:1100,shield:200,armor:3500,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:6}},[n.IonCannon]:{id:n.IonCannon,name:`离子炮`,description:`离子武器系统`,cost:{metal:2e3,crystal:6e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,attack:150,shield:500,armor:800,requirements:{[e.Shipyard]:4,[t.IonTechnology]:4}},[n.PlasmaTurret]:{id:n.PlasmaTurret,name:`等离子炮台`,description:`最强防御武器`,cost:{metal:5e4,crystal:5e4,deuterium:3e4,darkMatter:0,energy:0},buildTime:60,attack:3e3,shield:300,armor:1e4,requirements:{[e.Shipyard]:8,[t.PlasmaTechnology]:7}},[n.SmallShieldDome]:{id:n.SmallShieldDome,name:`小型护盾罩`,description:`保护星球的能量护盾`,cost:{metal:1e4,crystal:1e4,deuterium:0,darkMatter:0,energy:0},buildTime:30,attack:1,shield:2e3,armor:2e3,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:3}},[n.LargeShieldDome]:{id:n.LargeShieldDome,name:`大型护盾罩`,description:`强大的星球护盾`,cost:{metal:5e4,crystal:5e4,deuterium:0,darkMatter:0,energy:0},buildTime:60,attack:1,shield:1e4,armor:1e4,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:6}},[n.PlanetaryShield]:{id:n.PlanetaryShield,name:`行星护盾`,description:`保护行星免受毁灭攻击的超级护盾`,cost:{metal:2e6,crystal:2e6,deuterium:1e6,darkMatter:5e4,energy:0},buildTime:180,attack:1,shield:1e5,armor:1e5,requirements:{[e.Shipyard]:10,[t.EnergyTechnology]:10,[t.HyperspaceTechnology]:8}},[n.AntiBallisticMissile]:{id:n.AntiBallisticMissile,name:`反弹道导弹`,description:`拦截敌方导弹,每个可拦截1枚星际导弹`,cost:{metal:8e3,crystal:0,deuterium:2e3,darkMatter:0,energy:0},buildTime:20,attack:1,shield:1,armor:800,requirements:{[e.MissileSilo]:2}},[n.InterplanetaryMissile]:{id:n.InterplanetaryMissile,name:`星际导弹`,description:`可以攻击其他星球的防御设施,射程取决于脉冲引擎等级`,cost:{metal:12500,crystal:2500,deuterium:1e4,darkMatter:0,energy:0},buildTime:30,attack:12e3,shield:1,armor:1500,requirements:{[e.MissileSilo]:4,[t.ImpulseDrive]:1}}},f={[s.Commander]:{id:s.Commander,name:`指挥官`,description:`提升建筑速度和管理能力`,cost:{metal:0,crystal:5e4,deuterium:25e3,darkMatter:7e3,energy:0},weeklyMaintenance:{metal:0,crystal:5e3,deuterium:2500,darkMatter:900,energy:0},benefits:{buildingSpeedBonus:10,additionalBuildQueue:1,storageCapacityBonus:10}},[s.Admiral]:{id:s.Admiral,name:`上将`,description:`提升舰队作战能力`,cost:{metal:5e4,crystal:25e3,deuterium:0,darkMatter:7e3,energy:0},weeklyMaintenance:{metal:5e3,crystal:2500,deuterium:0,darkMatter:900,energy:0},benefits:{additionalFleetSlots:2,fleetSpeedBonus:10,fuelConsumptionReduction:10}},[s.Engineer]:{id:s.Engineer,name:`工程师`,description:`增强防御和能量系统`,cost:{metal:4e4,crystal:2e4,deuterium:1e4,darkMatter:7e3,energy:0},weeklyMaintenance:{metal:4e3,crystal:2e3,deuterium:1e3,darkMatter:900,energy:0},benefits:{defenseBonus:15,energyProductionBonus:10,buildingSpeedBonus:5}},[s.Geologist]:{id:s.Geologist,name:`地质学家`,description:`提高资源开采效率`,cost:{metal:3e4,crystal:3e4,deuterium:2e4,darkMatter:7e3,energy:0},weeklyMaintenance:{metal:3e3,crystal:3e3,deuterium:2e3,darkMatter:900,energy:0},benefits:{resourceProductionBonus:15,storageCapacityBonus:10}},[s.Technocrat]:{id:s.Technocrat,name:`技术专家`,description:`加快科技研究速度`,cost:{metal:2e4,crystal:4e4,deuterium:2e4,darkMatter:7e3,energy:0},weeklyMaintenance:{metal:2e3,crystal:4e3,deuterium:2e3,darkMatter:900,energy:0},benefits:{researchSpeedBonus:15}},[s.DarkMatterSpecialist]:{id:s.DarkMatterSpecialist,name:`暗物质专家`,description:`提升暗物质采集效率`,cost:{metal:5e4,crystal:1e5,deuterium:5e4,darkMatter:100,energy:0},weeklyMaintenance:{metal:5e3,crystal:1e4,deuterium:5e3,darkMatter:10,energy:0},benefits:{darkMatterProductionBonus:25}}},p={minDebrisField:1e5,baseChance:1,maxChance:20,chancePerDebris:1e5,baseSize:60,lunarBaseSpaceBonus:5},m={baseSize:200,terraformerSpaceBonus:5,terraformingTechSpaceBonus:3},h={baseStorage:1e3,shipyardBonus:1e3,computerTechBonus:500},g={MIN_REPUTATION:-100,MAX_REPUTATION:100,HOSTILE_THRESHOLD:-20,FRIENDLY_THRESHOLD:20,REPUTATION_CHANGES:{GIFT_BASE:0,GIFT_PER_1K_RESOURCES:2,GIFT_MIN_VALUE:500,GIFT_MAX_SINGLE:20,ATTACK:-15,ATTACK_WIN:-25,ATTACK_DESTROY_PLANET:-50,SPY_DETECTED:-5,SPY_UNDETECTED:-2,STEAL_DEBRIS:-10,DESTROY_FLEET:-3,HELP_ATTACK_ENEMY:15,LONG_PEACE_DECAY:1,TRADE:5,ALLY_ATTACKED:-10,ALLY_HELPED:5},NATURAL_DECAY:{ENABLED:!0,INTERVAL:168*3600,TOWARDS_NEUTRAL_RATE:2},BEHAVIOR_MODIFIERS:{HOSTILE_ATTACK_MULTIPLIER:2,HOSTILE_SPY_MULTIPLIER:1.5,FRIENDLY_ATTACK_PROBABILITY:0,FRIENDLY_SPY_PROBABILITY:.5,NEUTRAL_ATTACK_PROBABILITY:1,NEUTRAL_SPY_PROBABILITY:1},NPC_GIFT_CONFIG:{ENABLED:!0,MIN_REPUTATION:60,CHECK_INTERVAL:24*3600,GIFT_PROBABILITY:.05,GIFT_AMOUNT:{METAL:{min:1e3,max:5e3},CRYSTAL:{min:500,max:2500},DEUTERIUM:{min:200,max:1e3}}},GIFT_ACCEPTANCE_CONFIG:{NPC_REJECTION_BASE_PROBABILITY:.3,NPC_REJECTION_REPUTATION_MODIFIER:.01,MIN_REJECTION_PROBABILITY:.05,MAX_REJECTION_PROBABILITY:.8,GIFT_EXPIRATION_DAYS:7,REJECTION_REPUTATION_PENALTY:-5}},_={SIMULATE_BATTLE:`SIMULATE_BATTLE`,CALCULATE_PLUNDER:`CALCULATE_PLUNDER`,CALCULATE_DEBRIS:`CALCULATE_DEBRIS`,SUCCESS:`SUCCESS`,ERROR:`ERROR`};export{r as _,h as a,m as c,e as d,n as f,a as g,s as h,g as i,u as l,i as m,c as n,p as o,o as p,d as r,f as s,_ as t,l as u,t as v}; \ No newline at end of file diff --git a/docs/assets/game-config-DRP-gbpS.js b/docs/assets/game-config-DRP-gbpS.js new file mode 100644 index 0000000..c0e2772 --- /dev/null +++ b/docs/assets/game-config-DRP-gbpS.js @@ -0,0 +1 @@ +const e={MetalMine:`metalMine`,CrystalMine:`crystalMine`,DeuteriumSynthesizer:`deuteriumSynthesizer`,SolarPlant:`solarPlant`,FusionReactor:`fusionReactor`,RoboticsFactory:`roboticsFactory`,NaniteFactory:`naniteFactory`,Shipyard:`shipyard`,ResearchLab:`researchLab`,MetalStorage:`metalStorage`,CrystalStorage:`crystalStorage`,DeuteriumTank:`deuteriumTank`,DarkMatterCollector:`darkMatterCollector`,DarkMatterTank:`darkMatterTank`,MissileSilo:`missileSilo`,Terraformer:`terraformer`,LunarBase:`lunarBase`,SensorPhalanx:`sensorPhalanx`,JumpGate:`jumpGate`,PlanetDestroyerFactory:`planetDestroyerFactory`},t={EnergyTechnology:`energyTechnology`,LaserTechnology:`laserTechnology`,IonTechnology:`ionTechnology`,HyperspaceTechnology:`hyperspaceTechnology`,PlasmaTechnology:`plasmaTechnology`,ComputerTechnology:`computerTechnology`,EspionageTechnology:`espionageTechnology`,CombustionDrive:`combustionDrive`,ImpulseDrive:`impulseDrive`,HyperspaceDrive:`hyperspaceDrive`,WeaponsTechnology:`weaponsTechnology`,ShieldingTechnology:`shieldingTechnology`,ArmourTechnology:`armourTechnology`,Astrophysics:`astrophysics`,GravitonTechnology:`gravitonTechnology`,DarkMatterTechnology:`darkMatterTechnology`,TerraformingTechnology:`terraformingTechnology`,PlanetDestructionTech:`planetDestructionTech`},n={RocketLauncher:`rocketLauncher`,LightLaser:`lightLaser`,HeavyLaser:`heavyLaser`,GaussCannon:`gaussCannon`,IonCannon:`ionCannon`,PlasmaTurret:`plasmaTurret`,SmallShieldDome:`smallShieldDome`,LargeShieldDome:`largeShieldDome`,AntiBallisticMissile:`antiBallisticMissile`,InterplanetaryMissile:`interplanetaryMissile`,PlanetaryShield:`planetaryShield`},r={LightFighter:`lightFighter`,HeavyFighter:`heavyFighter`,Cruiser:`cruiser`,Battleship:`battleship`,Battlecruiser:`battlecruiser`,Bomber:`bomber`,Destroyer:`destroyer`,SmallCargo:`smallCargo`,LargeCargo:`largeCargo`,ColonyShip:`colonyShip`,Recycler:`recycler`,EspionageProbe:`espionageProbe`,SolarSatellite:`solarSatellite`,DarkMatterHarvester:`darkMatterHarvester`,Deathstar:`deathstar`},i={Attack:`attack`,Transport:`transport`,Colonize:`colonize`,Spy:`spy`,Deploy:`deploy`,Expedition:`expedition`,HarvestDarkMatter:`harvestDarkMatter`,Recycle:`recycle`,Destroy:`destroy`,MissileAttack:`missileAttack`},a={Hostile:`hostile`,Neutral:`neutral`,Friendly:`friendly`},o={GiftResources:`giftResources`,Attack:`attack`,Spy:`spy`,StealDebris:`stealDebris`,AllyAttacked:`allyAttacked`},s={Commander:`commander`,Admiral:`admiral`,Engineer:`engineer`,Geologist:`geologist`,Technocrat:`technocrat`,DarkMatterSpecialist:`darkMatterSpecialist`},c={[e.MetalMine]:{id:e.MetalMine,name:`金属矿`,description:`开采金属资源`,baseCost:{metal:60,crystal:15,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:1.5,spaceUsage:1,planetOnly:!0,requirements:{[e.SolarPlant]:1},levelRequirements:{10:{[e.RoboticsFactory]:2},20:{[e.RoboticsFactory]:5,[e.ResearchLab]:3},30:{[e.NaniteFactory]:1,[e.ResearchLab]:8}}},[e.CrystalMine]:{id:e.CrystalMine,name:`晶体矿`,description:`开采晶体资源`,baseCost:{metal:48,crystal:24,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:1.6,spaceUsage:1,planetOnly:!0,requirements:{[e.SolarPlant]:1},levelRequirements:{10:{[e.RoboticsFactory]:2},20:{[e.RoboticsFactory]:5,[e.ResearchLab]:3},30:{[e.NaniteFactory]:1,[e.ResearchLab]:8}}},[e.DeuteriumSynthesizer]:{id:e.DeuteriumSynthesizer,name:`重氢合成器`,description:`合成重氢资源`,baseCost:{metal:225,crystal:75,deuterium:0,darkMatter:0,energy:0},baseTime:20,costMultiplier:1.5,spaceUsage:2,planetOnly:!0,requirements:{[e.SolarPlant]:1},levelRequirements:{10:{[e.RoboticsFactory]:2},20:{[e.RoboticsFactory]:5,[e.ResearchLab]:3},30:{[e.NaniteFactory]:1,[e.ResearchLab]:8}}},[e.SolarPlant]:{id:e.SolarPlant,name:`太阳能电站`,description:`提供能源`,baseCost:{metal:75,crystal:30,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:1.5,spaceUsage:2,levelRequirements:{15:{[e.RoboticsFactory]:3},25:{[e.RoboticsFactory]:6,[e.ResearchLab]:5},35:{[e.NaniteFactory]:1,[e.ResearchLab]:10}}},[e.FusionReactor]:{id:e.FusionReactor,name:`核聚变反应堆`,description:`使用重氢产生大量能源`,baseCost:{metal:900,crystal:360,deuterium:180,darkMatter:0,energy:0},baseTime:30,costMultiplier:1.8,spaceUsage:4,requirements:{[t.EnergyTechnology]:3,[e.DeuteriumSynthesizer]:5},levelRequirements:{10:{[e.RoboticsFactory]:5,[t.EnergyTechnology]:6},20:{[e.RoboticsFactory]:8,[t.EnergyTechnology]:10,[e.NaniteFactory]:2}}},[e.RoboticsFactory]:{id:e.RoboticsFactory,name:`机器人工厂`,description:`加快建造速度`,baseCost:{metal:400,crystal:120,deuterium:200,darkMatter:0,energy:0},baseTime:40,costMultiplier:2,spaceUsage:4,requirements:{[e.MetalMine]:2,[e.CrystalMine]:2,[e.DeuteriumSynthesizer]:2},levelRequirements:{5:{[e.ResearchLab]:3,[e.SolarPlant]:8},8:{[e.ResearchLab]:6,[e.SolarPlant]:12,[e.MetalMine]:12,[e.CrystalMine]:12}}},[e.NaniteFactory]:{id:e.NaniteFactory,name:`纳米工厂`,description:`增加建造队列数量,每级+1队列`,baseCost:{metal:1e6,crystal:5e5,deuterium:1e5,darkMatter:0,energy:0},baseTime:240,costMultiplier:2,spaceUsage:8,maxLevel:10,requirements:{[e.RoboticsFactory]:10},levelRequirements:{3:{[e.ResearchLab]:10,[e.Shipyard]:8,[t.ComputerTechnology]:8},5:{[e.ResearchLab]:12,[e.Shipyard]:10,[t.ComputerTechnology]:10}}},[e.Shipyard]:{id:e.Shipyard,name:`船坞`,description:`建造舰船`,baseCost:{metal:400,crystal:200,deuterium:100,darkMatter:0,energy:0},baseTime:30,costMultiplier:2,spaceUsage:5,fleetStorageBonus:1e3,requirements:{[e.RoboticsFactory]:2},levelRequirements:{8:{[e.RoboticsFactory]:5,[e.ResearchLab]:5},12:{[e.RoboticsFactory]:8,[e.ResearchLab]:8,[e.NaniteFactory]:2}}},[e.ResearchLab]:{id:e.ResearchLab,name:`研究实验室`,description:`研究科技`,baseCost:{metal:200,crystal:400,deuterium:200,darkMatter:0,energy:0},baseTime:30,costMultiplier:2,spaceUsage:3,requirements:{[e.MetalMine]:3,[e.CrystalMine]:3,[e.DeuteriumSynthesizer]:3},levelRequirements:{8:{[e.RoboticsFactory]:5,[e.MetalMine]:10,[e.CrystalMine]:10,[e.DeuteriumSynthesizer]:10},12:{[e.RoboticsFactory]:8,[e.NaniteFactory]:1,[t.EnergyTechnology]:5}}},[e.MetalStorage]:{id:e.MetalStorage,name:`金属仓库`,description:`增加金属存储上限`,baseCost:{metal:1e3,crystal:0,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:2,spaceUsage:1,requirements:{[e.MetalMine]:2},levelRequirements:{8:{[e.MetalMine]:15,[e.RoboticsFactory]:3},12:{[e.MetalMine]:25,[e.RoboticsFactory]:6}}},[e.CrystalStorage]:{id:e.CrystalStorage,name:`晶体仓库`,description:`增加晶体存储上限`,baseCost:{metal:1e3,crystal:500,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:2,spaceUsage:1,requirements:{[e.CrystalMine]:2},levelRequirements:{8:{[e.CrystalMine]:15,[e.RoboticsFactory]:3},12:{[e.CrystalMine]:25,[e.RoboticsFactory]:6}}},[e.DeuteriumTank]:{id:e.DeuteriumTank,name:`重氢罐`,description:`增加重氢存储上限`,baseCost:{metal:1e3,crystal:1e3,deuterium:0,darkMatter:0,energy:0},baseTime:15,costMultiplier:2,spaceUsage:1,requirements:{[e.DeuteriumSynthesizer]:2},levelRequirements:{8:{[e.DeuteriumSynthesizer]:15,[e.RoboticsFactory]:3},12:{[e.DeuteriumSynthesizer]:25,[e.RoboticsFactory]:6}}},[e.DarkMatterCollector]:{id:e.DarkMatterCollector,name:`暗物质收集器`,description:`收集稀有的暗物质资源`,baseCost:{metal:5e4,crystal:1e5,deuterium:5e4,darkMatter:0,energy:0},baseTime:90,costMultiplier:2,spaceUsage:6,planetOnly:!0,requirements:{[e.ResearchLab]:5,[t.DarkMatterTechnology]:1},levelRequirements:{5:{[e.ResearchLab]:8,[t.DarkMatterTechnology]:3,[e.RoboticsFactory]:8},8:{[e.ResearchLab]:10,[t.DarkMatterTechnology]:5,[e.NaniteFactory]:2}}},[e.DarkMatterTank]:{id:e.DarkMatterTank,name:`暗物质储罐`,description:`增加暗物质存储上限`,baseCost:{metal:1e4,crystal:1e4,deuterium:5e3,darkMatter:0,energy:0},baseTime:20,costMultiplier:2,spaceUsage:2,planetOnly:!0,requirements:{[e.DarkMatterCollector]:2,[t.DarkMatterTechnology]:1},levelRequirements:{8:{[e.DarkMatterCollector]:8,[e.RoboticsFactory]:3},12:{[e.DarkMatterCollector]:15,[e.RoboticsFactory]:6,[t.DarkMatterTechnology]:3}}},[e.MissileSilo]:{id:e.MissileSilo,name:`导弹发射井`,description:`存储和发射导弹,每级可存储10枚导弹`,baseCost:{metal:2e4,crystal:2e4,deuterium:1e3,darkMatter:0,energy:0},baseTime:45,costMultiplier:2,spaceUsage:5,maxLevel:10,requirements:{[e.Shipyard]:1},levelRequirements:{5:{[e.Shipyard]:5,[t.ComputerTechnology]:3},8:{[e.Shipyard]:8,[t.ComputerTechnology]:6,[e.NaniteFactory]:2}}},[e.Terraformer]:{id:e.Terraformer,name:`地形改造器`,description:`改造行星地形,每级增加30个可用空间`,baseCost:{metal:0,crystal:5e4,deuterium:1e5,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,spaceUsage:5,planetOnly:!0,requirements:{[e.ResearchLab]:10,[e.RoboticsFactory]:8,[t.TerraformingTechnology]:1},levelRequirements:{5:{[e.ResearchLab]:12,[t.TerraformingTechnology]:3,[e.NaniteFactory]:1},8:{[e.ResearchLab]:14,[t.TerraformingTechnology]:5,[e.NaniteFactory]:3}}},[e.LunarBase]:{id:e.LunarBase,name:`月球基地`,description:`增加月球可用空间`,baseCost:{metal:2e4,crystal:4e4,deuterium:2e4,darkMatter:0,energy:0},baseTime:45,costMultiplier:2,spaceUsage:0,moonOnly:!0,levelRequirements:{5:{[e.RoboticsFactory]:5},8:{[e.RoboticsFactory]:8,[e.NaniteFactory]:1}}},[e.SensorPhalanx]:{id:e.SensorPhalanx,name:`传感器阵列`,description:`侦测周围星系的舰队活动`,baseCost:{metal:2e4,crystal:4e4,deuterium:2e4,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,spaceUsage:6,moonOnly:!0,requirements:{[e.LunarBase]:1},levelRequirements:{5:{[e.LunarBase]:5,[t.ComputerTechnology]:5},8:{[e.LunarBase]:8,[t.ComputerTechnology]:8,[e.NaniteFactory]:2}}},[e.JumpGate]:{id:e.JumpGate,name:`跳跃门`,description:`瞬间传送舰队到其他月球`,baseCost:{metal:2e6,crystal:4e6,deuterium:2e6,darkMatter:5e4,energy:0},baseTime:240,costMultiplier:2,spaceUsage:10,moonOnly:!0,maxLevel:5,requirements:{[e.LunarBase]:1,[t.HyperspaceTechnology]:7},levelRequirements:{3:{[e.LunarBase]:5,[t.HyperspaceTechnology]:10,[e.NaniteFactory]:3}}},[e.PlanetDestroyerFactory]:{id:e.PlanetDestroyerFactory,name:`行星毁灭者工厂`,description:`建造能够摧毁行星的终极武器`,baseCost:{metal:5e6,crystal:4e6,deuterium:1e6,darkMatter:1e5,energy:0},baseTime:300,costMultiplier:2,spaceUsage:15,planetOnly:!0,maxLevel:3,requirements:{[e.Shipyard]:12,[e.RoboticsFactory]:10,[e.NaniteFactory]:5,[t.PlanetDestructionTech]:1},levelRequirements:{3:{[e.Shipyard]:14,[e.NaniteFactory]:8,[t.PlanetDestructionTech]:3,[t.HyperspaceTechnology]:10}}}},l={[t.EnergyTechnology]:{id:t.EnergyTechnology,name:`能源技术`,description:`加快研究速度`,baseCost:{metal:0,crystal:800,deuterium:400,darkMatter:0,energy:0},baseTime:30,costMultiplier:2,requirements:{[e.ResearchLab]:1},levelRequirements:{5:{[e.ResearchLab]:3,[e.SolarPlant]:10},8:{[e.ResearchLab]:5,[e.SolarPlant]:15,[e.RoboticsFactory]:3},12:{[e.ResearchLab]:8,[e.RoboticsFactory]:6,[e.NaniteFactory]:1}}},[t.LaserTechnology]:{id:t.LaserTechnology,name:`激光技术`,description:`开发激光武器`,baseCost:{metal:200,crystal:100,deuterium:0,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:1,[t.EnergyTechnology]:2},levelRequirements:{6:{[e.ResearchLab]:5,[t.EnergyTechnology]:5,[e.Shipyard]:3},10:{[e.ResearchLab]:8,[t.EnergyTechnology]:8,[e.Shipyard]:6}}},[t.IonTechnology]:{id:t.IonTechnology,name:`离子技术`,description:`开发离子武器`,baseCost:{metal:1e3,crystal:300,deuterium:100,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:4,[t.LaserTechnology]:5,[t.EnergyTechnology]:4},levelRequirements:{5:{[e.ResearchLab]:8,[t.LaserTechnology]:10,[t.EnergyTechnology]:8},8:{[e.ResearchLab]:10,[t.LaserTechnology]:12,[e.NaniteFactory]:2}}},[t.HyperspaceTechnology]:{id:t.HyperspaceTechnology,name:`超空间技术`,description:`研究超空间跳跃`,baseCost:{metal:0,crystal:4e3,deuterium:2e3,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:7,[t.EnergyTechnology]:5},levelRequirements:{5:{[e.ResearchLab]:10,[t.EnergyTechnology]:8,[e.Shipyard]:5},8:{[e.ResearchLab]:12,[t.EnergyTechnology]:10,[e.NaniteFactory]:2}}},[t.PlasmaTechnology]:{id:t.PlasmaTechnology,name:`等离子技术`,description:`开发等离子武器`,baseCost:{metal:2e3,crystal:4e3,deuterium:1e3,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:4,[t.EnergyTechnology]:8,[t.LaserTechnology]:10,[t.IonTechnology]:5},levelRequirements:{5:{[e.ResearchLab]:10,[t.EnergyTechnology]:12,[t.IonTechnology]:8,[e.NaniteFactory]:1},8:{[e.ResearchLab]:12,[t.EnergyTechnology]:15,[t.IonTechnology]:10,[e.NaniteFactory]:3}}},[t.ComputerTechnology]:{id:t.ComputerTechnology,name:`计算机技术`,description:`增加研究队列数量,每级+1队列`,baseCost:{metal:0,crystal:400,deuterium:600,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,fleetStorageBonus:500,maxLevel:10,requirements:{[e.ResearchLab]:1},levelRequirements:{3:{[e.ResearchLab]:5},5:{[e.ResearchLab]:8,[e.RoboticsFactory]:5},8:{[e.ResearchLab]:10,[e.NaniteFactory]:2}}},[t.EspionageTechnology]:{id:t.EspionageTechnology,name:`间谍技术`,description:`提高间谍探测效果,每级提高1级侦查深度`,baseCost:{metal:200,crystal:1e3,deuterium:200,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:3},levelRequirements:{5:{[e.ResearchLab]:6,[t.ComputerTechnology]:3},8:{[e.ResearchLab]:8,[t.ComputerTechnology]:5}}},[t.WeaponsTechnology]:{id:t.WeaponsTechnology,name:`武器技术`,description:`提高舰船和防御的攻击力,每级+10%`,baseCost:{metal:800,crystal:200,deuterium:0,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:4},levelRequirements:{5:{[e.ResearchLab]:7,[e.Shipyard]:4},10:{[e.ResearchLab]:10,[e.Shipyard]:8,[e.NaniteFactory]:2}}},[t.ShieldingTechnology]:{id:t.ShieldingTechnology,name:`护盾技术`,description:`提高舰船和防御的护盾值,每级+10%`,baseCost:{metal:200,crystal:600,deuterium:0,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:6,[t.EnergyTechnology]:3},levelRequirements:{5:{[e.ResearchLab]:8,[t.EnergyTechnology]:6},10:{[e.ResearchLab]:10,[t.EnergyTechnology]:10,[e.NaniteFactory]:2}}},[t.ArmourTechnology]:{id:t.ArmourTechnology,name:`装甲技术`,description:`提高舰船和防御的装甲值,每级+10%`,baseCost:{metal:1e3,crystal:0,deuterium:0,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:2},levelRequirements:{5:{[e.ResearchLab]:6,[e.Shipyard]:3},10:{[e.ResearchLab]:10,[e.Shipyard]:7,[e.NaniteFactory]:1}}},[t.Astrophysics]:{id:t.Astrophysics,name:`天体物理学`,description:`每级增加1个殖民地槽位,增加探险成功率`,baseCost:{metal:4e3,crystal:8e3,deuterium:4e3,darkMatter:0,energy:0},baseTime:60,costMultiplier:1.75,requirements:{[e.ResearchLab]:3,[t.EspionageTechnology]:4,[t.ImpulseDrive]:3},levelRequirements:{5:{[e.ResearchLab]:8,[t.EspionageTechnology]:8},10:{[e.ResearchLab]:12,[t.HyperspaceTechnology]:5,[e.NaniteFactory]:3}}},[t.GravitonTechnology]:{id:t.GravitonTechnology,name:`引力技术`,description:`研究引力操纵,死星的必要技术`,baseCost:{metal:0,crystal:0,deuterium:0,darkMatter:3e5,energy:0},baseTime:0,costMultiplier:3,maxLevel:1,requirements:{[e.ResearchLab]:12}},[t.CombustionDrive]:{id:t.CombustionDrive,name:`燃烧引擎`,description:`基础推进系统`,baseCost:{metal:400,crystal:0,deuterium:600,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:1,[t.EnergyTechnology]:1},levelRequirements:{5:{[e.ResearchLab]:5,[t.EnergyTechnology]:3,[e.Shipyard]:2},8:{[e.ResearchLab]:8,[t.EnergyTechnology]:5,[e.Shipyard]:5}}},[t.ImpulseDrive]:{id:t.ImpulseDrive,name:`脉冲引擎`,description:`高级推进系统`,baseCost:{metal:2e3,crystal:4e3,deuterium:600,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:2,[t.EnergyTechnology]:1},levelRequirements:{5:{[e.ResearchLab]:6,[t.EnergyTechnology]:4,[e.Shipyard]:3},8:{[e.ResearchLab]:8,[t.EnergyTechnology]:6,[e.Shipyard]:6}}},[t.HyperspaceDrive]:{id:t.HyperspaceDrive,name:`超空间引擎`,description:`超空间推进系统`,baseCost:{metal:1e4,crystal:2e4,deuterium:6e3,darkMatter:0,energy:0},baseTime:60,costMultiplier:2,requirements:{[e.ResearchLab]:7,[t.HyperspaceTechnology]:3},levelRequirements:{5:{[e.ResearchLab]:10,[t.HyperspaceTechnology]:6,[e.Shipyard]:8},8:{[e.ResearchLab]:12,[t.HyperspaceTechnology]:8,[e.NaniteFactory]:3}}},[t.DarkMatterTechnology]:{id:t.DarkMatterTechnology,name:`暗物质技术`,description:`研究暗物质的性质和应用`,baseCost:{metal:1e5,crystal:2e5,deuterium:1e5,darkMatter:0,energy:0},baseTime:180,costMultiplier:2,requirements:{[e.ResearchLab]:8,[t.HyperspaceTechnology]:5},levelRequirements:{3:{[e.ResearchLab]:10,[t.HyperspaceTechnology]:8,[e.RoboticsFactory]:10,[t.EnergyTechnology]:10},5:{[e.ResearchLab]:12,[t.HyperspaceTechnology]:10,[e.NaniteFactory]:2,[t.EnergyTechnology]:12}}},[t.TerraformingTechnology]:{id:t.TerraformingTechnology,name:`地形改造技术`,description:`研究行星地形改造技术,每级为所有行星增加30个可用空间`,baseCost:{metal:0,crystal:2e4,deuterium:4e4,darkMatter:0,energy:0},baseTime:90,costMultiplier:2,requirements:{[e.ResearchLab]:8,[t.EnergyTechnology]:6},levelRequirements:{5:{[e.ResearchLab]:12,[t.EnergyTechnology]:10,[e.RoboticsFactory]:10},8:{[e.ResearchLab]:14,[t.EnergyTechnology]:12,[e.NaniteFactory]:3}}},[t.PlanetDestructionTech]:{id:t.PlanetDestructionTech,name:`行星毁灭技术`,description:`研究如何摧毁整个行星的恐怖技术`,baseCost:{metal:4e6,crystal:8e6,deuterium:4e6,darkMatter:2e5,energy:0},baseTime:300,costMultiplier:2,maxLevel:5,requirements:{[e.ResearchLab]:12,[t.HyperspaceTechnology]:8,[t.HyperspaceDrive]:6,[t.PlasmaTechnology]:7},levelRequirements:{3:{[e.ResearchLab]:14,[t.HyperspaceTechnology]:12,[t.HyperspaceDrive]:10,[t.PlasmaTechnology]:10,[e.NaniteFactory]:5}}}},u={[r.LightFighter]:{id:r.LightFighter,name:`轻型战斗机`,description:`基础战斗单位`,cost:{metal:3e3,crystal:1e3,deuterium:0,darkMatter:0,energy:0},buildTime:20,cargoCapacity:50,attack:50,shield:10,armor:400,speed:12500,fuelConsumption:20,storageUsage:5,requirements:{[e.Shipyard]:1,[t.CombustionDrive]:1}},[r.HeavyFighter]:{id:r.HeavyFighter,name:`重型战斗机`,description:`强力战斗单位`,cost:{metal:6e3,crystal:4e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,cargoCapacity:100,attack:150,shield:25,armor:1e3,speed:1e4,fuelConsumption:75,storageUsage:10,requirements:{[e.Shipyard]:3,[t.ImpulseDrive]:2}},[r.Cruiser]:{id:r.Cruiser,name:`巡洋舰`,description:`中型战舰`,cost:{metal:2e4,crystal:7e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:60,cargoCapacity:800,attack:400,shield:50,armor:2700,speed:15e3,fuelConsumption:300,storageUsage:15,requirements:{[e.Shipyard]:5,[t.ImpulseDrive]:4,[t.IonTechnology]:2}},[r.Battleship]:{id:r.Battleship,name:`战列舰`,description:`重型战舰`,cost:{metal:45e3,crystal:15e3,deuterium:0,darkMatter:0,energy:0},buildTime:90,cargoCapacity:1500,attack:1e3,shield:200,armor:6e3,speed:1e4,fuelConsumption:500,storageUsage:25,requirements:{[e.Shipyard]:7,[t.HyperspaceDrive]:4}},[r.Battlecruiser]:{id:r.Battlecruiser,name:`战列巡洋舰`,description:`快速强大的战斗舰船,擅长攻击战列舰`,cost:{metal:3e4,crystal:4e4,deuterium:15e3,darkMatter:0,energy:0},buildTime:70,cargoCapacity:750,attack:700,shield:400,armor:7e3,speed:1e4,fuelConsumption:250,storageUsage:20,requirements:{[e.Shipyard]:8,[t.HyperspaceDrive]:5,[t.HyperspaceTechnology]:5,[t.LaserTechnology]:12}},[r.Bomber]:{id:r.Bomber,name:`轰炸机`,description:`专门对付防御设施的轰炸舰`,cost:{metal:5e4,crystal:25e3,deuterium:15e3,darkMatter:0,energy:0},buildTime:100,cargoCapacity:500,attack:1e3,shield:500,armor:7500,speed:4e3,fuelConsumption:700,storageUsage:35,requirements:{[e.Shipyard]:8,[t.ImpulseDrive]:6,[t.PlasmaTechnology]:5}},[r.Destroyer]:{id:r.Destroyer,name:`驱逐舰`,description:`擅长摧毁大型舰船的猎杀者`,cost:{metal:6e4,crystal:5e4,deuterium:15e3,darkMatter:0,energy:0},buildTime:120,cargoCapacity:2e3,attack:2e3,shield:500,armor:11e3,speed:5e3,fuelConsumption:1e3,storageUsage:40,requirements:{[e.Shipyard]:9,[t.HyperspaceDrive]:6,[t.HyperspaceTechnology]:5}},[r.SmallCargo]:{id:r.SmallCargo,name:`小型运输船`,description:`运输资源`,cost:{metal:2e3,crystal:2e3,deuterium:0,darkMatter:0,energy:0},buildTime:15,cargoCapacity:5e3,attack:5,shield:10,armor:400,speed:5e3,fuelConsumption:10,storageUsage:10,requirements:{[e.Shipyard]:2,[t.CombustionDrive]:2}},[r.LargeCargo]:{id:r.LargeCargo,name:`大型运输船`,description:`大量运输资源`,cost:{metal:6e3,crystal:6e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,cargoCapacity:25e3,attack:5,shield:25,armor:1200,speed:7500,fuelConsumption:50,storageUsage:20,requirements:{[e.Shipyard]:4,[t.CombustionDrive]:6}},[r.ColonyShip]:{id:r.ColonyShip,name:`殖民船`,description:`建立新殖民地`,cost:{metal:1e4,crystal:2e4,deuterium:1e4,darkMatter:0,energy:0},buildTime:120,cargoCapacity:7500,attack:50,shield:100,armor:3e3,speed:2500,fuelConsumption:1e3,storageUsage:40,requirements:{[e.Shipyard]:4,[t.ImpulseDrive]:3}},[r.Recycler]:{id:r.Recycler,name:`回收船`,description:`回收废墟资源`,cost:{metal:1e4,crystal:6e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:60,cargoCapacity:2e4,attack:1,shield:10,armor:1600,speed:2e3,fuelConsumption:300,storageUsage:30,requirements:{[e.Shipyard]:4,[t.CombustionDrive]:6}},[r.EspionageProbe]:{id:r.EspionageProbe,name:`间谍探测器`,description:`侦察敌方星球`,cost:{metal:0,crystal:1e3,deuterium:0,darkMatter:0,energy:0},buildTime:5,cargoCapacity:5,attack:0,shield:0,armor:100,speed:1e8,fuelConsumption:1,storageUsage:2,requirements:{[e.Shipyard]:3,[t.CombustionDrive]:3}},[r.SolarSatellite]:{id:r.SolarSatellite,name:`太阳能卫星`,description:`提供额外能源,每个产生50点能量`,cost:{metal:0,crystal:2e3,deuterium:500,darkMatter:0,energy:0},buildTime:10,cargoCapacity:0,attack:1,shield:1,armor:200,speed:0,fuelConsumption:0,storageUsage:1,requirements:{[e.Shipyard]:1}},[r.DarkMatterHarvester]:{id:r.DarkMatterHarvester,name:`暗物质采集船`,description:`专门用于采集暗物质的特殊飞船`,cost:{metal:1e5,crystal:15e4,deuterium:5e4,darkMatter:0,energy:0},buildTime:120,cargoCapacity:1e3,attack:10,shield:50,armor:2e3,speed:5e3,fuelConsumption:500,storageUsage:50,requirements:{[e.Shipyard]:8,[t.HyperspaceDrive]:5,[t.DarkMatterTechnology]:1}},[r.Deathstar]:{id:r.Deathstar,name:`死星`,description:`终极武器,能够摧毁整个行星`,cost:{metal:5e6,crystal:4e6,deuterium:1e6,darkMatter:5e4,energy:0},buildTime:600,cargoCapacity:1e6,attack:2e5,shield:5e4,armor:9e5,speed:100,fuelConsumption:1,storageUsage:100,requirements:{[e.PlanetDestroyerFactory]:3,[t.PlanetDestructionTech]:7,[t.HyperspaceDrive]:7}}},d={[n.RocketLauncher]:{id:n.RocketLauncher,name:`火箭发射器`,description:`基础防御设施`,cost:{metal:2e3,crystal:0,deuterium:0,darkMatter:0,energy:0},buildTime:10,attack:80,shield:20,armor:200,requirements:{[e.Shipyard]:1}},[n.LightLaser]:{id:n.LightLaser,name:`轻型激光炮`,description:`激光防御武器`,cost:{metal:1500,crystal:500,deuterium:0,darkMatter:0,energy:0},buildTime:12,attack:100,shield:25,armor:200,requirements:{[e.Shipyard]:2,[t.LaserTechnology]:3}},[n.HeavyLaser]:{id:n.HeavyLaser,name:`重型激光炮`,description:`强力激光武器`,cost:{metal:6e3,crystal:2e3,deuterium:0,darkMatter:0,energy:0},buildTime:20,attack:250,shield:100,armor:800,requirements:{[e.Shipyard]:4,[t.LaserTechnology]:6}},[n.GaussCannon]:{id:n.GaussCannon,name:`高斯炮`,description:`电磁加速武器`,cost:{metal:2e4,crystal:15e3,deuterium:2e3,darkMatter:0,energy:0},buildTime:35,attack:1100,shield:200,armor:3500,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:6}},[n.IonCannon]:{id:n.IonCannon,name:`离子炮`,description:`离子武器系统`,cost:{metal:2e3,crystal:6e3,deuterium:0,darkMatter:0,energy:0},buildTime:30,attack:150,shield:500,armor:800,requirements:{[e.Shipyard]:4,[t.IonTechnology]:4}},[n.PlasmaTurret]:{id:n.PlasmaTurret,name:`等离子炮台`,description:`最强防御武器`,cost:{metal:5e4,crystal:5e4,deuterium:3e4,darkMatter:0,energy:0},buildTime:60,attack:3e3,shield:300,armor:1e4,requirements:{[e.Shipyard]:8,[t.PlasmaTechnology]:7}},[n.SmallShieldDome]:{id:n.SmallShieldDome,name:`小型护盾罩`,description:`保护星球的能量护盾`,cost:{metal:1e4,crystal:1e4,deuterium:0,darkMatter:0,energy:0},buildTime:30,attack:1,shield:2e3,armor:2e3,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:3}},[n.LargeShieldDome]:{id:n.LargeShieldDome,name:`大型护盾罩`,description:`强大的星球护盾`,cost:{metal:5e4,crystal:5e4,deuterium:0,darkMatter:0,energy:0},buildTime:60,attack:1,shield:1e4,armor:1e4,requirements:{[e.Shipyard]:6,[t.EnergyTechnology]:6}},[n.PlanetaryShield]:{id:n.PlanetaryShield,name:`行星护盾`,description:`保护行星免受毁灭攻击的超级护盾`,cost:{metal:2e6,crystal:2e6,deuterium:1e6,darkMatter:5e4,energy:0},buildTime:180,attack:1,shield:1e5,armor:1e5,requirements:{[e.Shipyard]:10,[t.EnergyTechnology]:10,[t.HyperspaceTechnology]:8}},[n.AntiBallisticMissile]:{id:n.AntiBallisticMissile,name:`反弹道导弹`,description:`拦截敌方导弹,每个可拦截1枚星际导弹`,cost:{metal:8e3,crystal:0,deuterium:2e3,darkMatter:0,energy:0},buildTime:20,attack:1,shield:1,armor:800,requirements:{[e.MissileSilo]:2}},[n.InterplanetaryMissile]:{id:n.InterplanetaryMissile,name:`星际导弹`,description:`可以攻击其他星球的防御设施,射程取决于脉冲引擎等级`,cost:{metal:12500,crystal:2500,deuterium:1e4,darkMatter:0,energy:0},buildTime:30,attack:12e3,shield:1,armor:1500,requirements:{[e.MissileSilo]:4,[t.ImpulseDrive]:1}}},f={[s.Commander]:{id:s.Commander,name:`指挥官`,description:`提升建筑速度和管理能力`,cost:{metal:0,crystal:5e4,deuterium:25e3,darkMatter:7e3,energy:0},weeklyMaintenance:{metal:0,crystal:5e3,deuterium:2500,darkMatter:900,energy:0},benefits:{buildingSpeedBonus:10,additionalBuildQueue:1,storageCapacityBonus:10}},[s.Admiral]:{id:s.Admiral,name:`上将`,description:`提升舰队作战能力`,cost:{metal:5e4,crystal:25e3,deuterium:0,darkMatter:7e3,energy:0},weeklyMaintenance:{metal:5e3,crystal:2500,deuterium:0,darkMatter:900,energy:0},benefits:{additionalFleetSlots:2,fleetSpeedBonus:10,fuelConsumptionReduction:10}},[s.Engineer]:{id:s.Engineer,name:`工程师`,description:`增强防御和能量系统`,cost:{metal:4e4,crystal:2e4,deuterium:1e4,darkMatter:7e3,energy:0},weeklyMaintenance:{metal:4e3,crystal:2e3,deuterium:1e3,darkMatter:900,energy:0},benefits:{defenseBonus:15,energyProductionBonus:10,buildingSpeedBonus:5}},[s.Geologist]:{id:s.Geologist,name:`地质学家`,description:`提高资源开采效率`,cost:{metal:3e4,crystal:3e4,deuterium:2e4,darkMatter:7e3,energy:0},weeklyMaintenance:{metal:3e3,crystal:3e3,deuterium:2e3,darkMatter:900,energy:0},benefits:{resourceProductionBonus:15,storageCapacityBonus:10}},[s.Technocrat]:{id:s.Technocrat,name:`技术专家`,description:`加快科技研究速度`,cost:{metal:2e4,crystal:4e4,deuterium:2e4,darkMatter:7e3,energy:0},weeklyMaintenance:{metal:2e3,crystal:4e3,deuterium:2e3,darkMatter:900,energy:0},benefits:{researchSpeedBonus:15}},[s.DarkMatterSpecialist]:{id:s.DarkMatterSpecialist,name:`暗物质专家`,description:`提升暗物质采集效率`,cost:{metal:5e4,crystal:1e5,deuterium:5e4,darkMatter:100,energy:0},weeklyMaintenance:{metal:5e3,crystal:1e4,deuterium:5e3,darkMatter:10,energy:0},benefits:{darkMatterProductionBonus:25}}},p={minDebrisField:1e5,baseChance:1,maxChance:20,chancePerDebris:1e5,baseSize:100,lunarBaseSpaceBonus:30},m={baseSize:300,terraformerSpaceBonus:30,terraformingTechSpaceBonus:30},h={baseStorage:1e3,shipyardBonus:1e3,computerTechBonus:500},g={MIN_REPUTATION:-100,MAX_REPUTATION:100,HOSTILE_THRESHOLD:-20,FRIENDLY_THRESHOLD:20,REPUTATION_CHANGES:{GIFT_BASE:0,GIFT_PER_1K_RESOURCES:2,GIFT_MIN_VALUE:500,GIFT_MAX_SINGLE:20,ATTACK:-15,ATTACK_WIN:-25,ATTACK_DESTROY_PLANET:-50,SPY_DETECTED:-5,SPY_UNDETECTED:-2,STEAL_DEBRIS:-10,DESTROY_FLEET:-3,HELP_ATTACK_ENEMY:15,LONG_PEACE_DECAY:1,TRADE:5,ALLY_ATTACKED:-10,ALLY_HELPED:5},NATURAL_DECAY:{ENABLED:!0,INTERVAL:168*3600,TOWARDS_NEUTRAL_RATE:2},BEHAVIOR_MODIFIERS:{HOSTILE_ATTACK_MULTIPLIER:2,HOSTILE_SPY_MULTIPLIER:1.5,FRIENDLY_ATTACK_PROBABILITY:0,FRIENDLY_SPY_PROBABILITY:.5,NEUTRAL_ATTACK_PROBABILITY:1,NEUTRAL_SPY_PROBABILITY:1},NPC_GIFT_CONFIG:{ENABLED:!0,MIN_REPUTATION:60,CHECK_INTERVAL:24*3600,GIFT_PROBABILITY:.05,GIFT_AMOUNT:{METAL:{min:1e3,max:5e3},CRYSTAL:{min:500,max:2500},DEUTERIUM:{min:200,max:1e3}}},GIFT_ACCEPTANCE_CONFIG:{NPC_REJECTION_BASE_PROBABILITY:.3,NPC_REJECTION_REPUTATION_MODIFIER:.01,MIN_REJECTION_PROBABILITY:.05,MAX_REJECTION_PROBABILITY:.8,GIFT_EXPIRATION_DAYS:7,REJECTION_REPUTATION_PENALTY:-5}},_={SIMULATE_BATTLE:`SIMULATE_BATTLE`,CALCULATE_PLUNDER:`CALCULATE_PLUNDER`,CALCULATE_DEBRIS:`CALCULATE_DEBRIS`,SUCCESS:`SUCCESS`,ERROR:`ERROR`};export{r as _,h as a,m as c,e as d,n as f,a as g,s as h,g as i,u as l,i as m,c as n,p as o,o as p,d as r,f as s,_ as t,l as u,t as v}; \ No newline at end of file diff --git a/docs/assets/game-i18n-BC9uiVvf.js b/docs/assets/game-i18n-BC9uiVvf.js new file mode 100644 index 0000000..4fcabd5 --- /dev/null +++ b/docs/assets/game-i18n-BC9uiVvf.js @@ -0,0 +1,120 @@ +var e={common:{confirm:`确认`,cancel:`取消`,delete:`删除`,edit:`编辑`,save:`保存`,close:`关闭`,back:`返回`,next:`下一步`,previous:`上一步`,submit:`提交`,reset:`重置`,search:`搜索`,filter:`筛选`,loading:`加载中...`,noData:`暂无数据`,error:`错误`,success:`成功`,warning:`警告`,info:`信息`,resourceType:`资源类型`,playerName:`指挥官`,timeHour:`时`,timeMinute:`分`,timeSecond:`秒`,featureLocked:`功能已锁定`,unlockRequired:`需要解锁前置建筑`,requiredBuilding:`所需建筑`,currentLevel:`当前等级`,goToBuildings:`前往建筑页面`,locked:`已锁定`,viewRequirements:`查看前置条件`,requirementsNotMet:`前置条件未满足`,current:`当前`,level:`等级`,gmModeActivated:`GM 模式已激活!请查看导航菜单。`},errors:{requirementsNotMet:`不满足前置条件`,insufficientResources:`资源不足`,insufficientFleetStorage:`舰队仓储空间不足`,shieldDomeLimit:`护盾罩数量限制`,missileSiloLimit:`导弹发射井容量不足`,insufficientMissiles:`星际导弹数量不足`,invalidMissileCount:`导弹数量无效`,targetOutOfRange:`目标超出射程`,cannotAttackOwnPlanet:`不能攻击自己的星球`,launchFailed:`发射失败`,fleetMissionsFull:`舰队任务槽位已满`,insufficientFleet:`舰队数量不足`,insufficientFuel:`燃料不足`,planetOnly:`该建筑只能在行星上建造`,moonOnly:`该建筑只能在月球上建造`,buildQueueFull:`建造队列已满`,insufficientSpace:`空间不足`,buildingLevelZero:`建筑等级为0,无法拆除`,researchQueueFull:`研究队列已满`,moonExists:`已存在月球`,insufficientDebris:`残骸场不足`},nav:{overview:`总览`,buildings:`建筑`,research:`研究`,shipyard:`船坞`,defense:`防御`,fleet:`舰队`,officers:`军官`,simulator:`模拟`,galaxy:`星系`,diplomacy:`外交`,messages:`消息`,settings:`设置`,gm:`GM`},sidebar:{language:`语言`,lightMode:`日间模式`,darkMode:`夜间模式`,collapse:`收起菜单`,expand:`展开菜单`},resources:{metal:`金属`,crystal:`晶体`,deuterium:`重氢`,darkMatter:`暗物质`,energy:`电力`,production:`产量`,consumption:`消耗`,capacity:`容量`,current:`当前储量`,max:`最大容量`,perHour:`小时`,perMinute:`分钟`,hour:`小时`,noEnergy:`电力不足`},planet:{planet:`星球`,moon:`月球`,colony:`殖民地`,position:`位置`,coordinates:`坐标`,switchToMoon:`查看月球`,backToPlanet:`返回母星`,switchPlanet:`切换星球`,currentPlanet:`当前星球`,fields:`场地`,temperature:`温度`,homePlanet:`母星`,planetPrefix:`星球`,moonSuffix:`的月球`,colonyPrefix:`殖民地`},player:{points:`总积分`},buildings:{metalMine:`金属矿`,crystalMine:`晶体矿`,deuteriumSynthesizer:`重氢合成器`,solarPlant:`太阳能电站`,fusionReactor:`核聚变反应堆`,roboticsFactory:`机器人工厂`,naniteFactory:`纳米工厂`,shipyard:`船坞`,researchLab:`研究实验室`,metalStorage:`金属仓库`,crystalStorage:`晶体仓库`,deuteriumTank:`重氢罐`,darkMatterCollector:`暗物质收集器`,darkMatterTank:`暗物质储罐`,missileSilo:`导弹发射井`,terraformer:`地形改造器`,lunarBase:`月球基地`,sensorPhalanx:`传感器阵列`,jumpGate:`跳跃门`,planetDestroyerFactory:`行星毁灭者工厂`,buildTime:`建造时间`,production:`产量`,consumption:`消耗`,totalCost:`累积成本`,totalPoints:`累积积分`,levelRange:`等级范围`,storageCapacity:`容量`,energyProduction:`电力产出`,fleetStorage:`舰队仓储`,buildQueueBonus:`建造队列`,spaceBonus:`空间加成`,buildSpeedBonus:`建造速度加成`,researchSpeedBonus:`研究速度加成`,missileCapacity:`导弹容量`},buildingDescriptions:{metalMine:`开采金属资源`,crystalMine:`开采晶体资源`,deuteriumSynthesizer:`合成重氢资源`,solarPlant:`提供能源`,fusionReactor:`使用重氢产生大量能源`,roboticsFactory:`加快建造速度`,naniteFactory:`增加建造队列数量,每级+1队列(最多10级)`,shipyard:`建造舰船`,researchLab:`研究科技`,metalStorage:`增加金属存储上限`,crystalStorage:`增加晶体存储上限`,deuteriumTank:`增加重氢存储上限`,darkMatterCollector:`收集稀有的暗物质资源`,darkMatterTank:`增加暗物质存储上限`,missileSilo:`存储和发射导弹,每级可存储10枚导弹`,terraformer:`改造行星地形,每级增加30个可用空间`,lunarBase:`增加月球可用空间,每级+30空间`,sensorPhalanx:`侦测周围星系的舰队活动`,jumpGate:`瞬间传送舰队到其他月球`,planetDestroyerFactory:`建造能够摧毁行星的终极武器`},ships:{lightFighter:`轻型战斗机`,heavyFighter:`重型战斗机`,cruiser:`巡洋舰`,battleship:`战列舰`,battlecruiser:`战列巡洋舰`,bomber:`轰炸机`,destroyer:`驱逐舰`,smallCargo:`小型运输船`,largeCargo:`大型运输船`,colonyShip:`殖民船`,recycler:`回收船`,espionageProbe:`间谍探测器`,solarSatellite:`太阳能卫星`,darkMatterHarvester:`暗物质采集船`,deathstar:`死星`},shipDescriptions:{lightFighter:`基础战斗单位`,heavyFighter:`重装战斗机`,cruiser:`中型战舰,攻守平衡`,battleship:`强力战舰`,battlecruiser:`快速强大的战斗舰船,擅长攻击战列舰`,bomber:`专门对付防御设施的轰炸舰`,destroyer:`擅长摧毁大型舰船的猎杀者`,smallCargo:`运输少量资源`,largeCargo:`运输大量资源`,colonyShip:`用于殖民新星球`,recycler:`收集残骸场资源`,espionageProbe:`侦察敌方星球`,solarSatellite:`提供额外能源,每个产生50点电力`,darkMatterHarvester:`专门用于采集暗物质的特殊飞船`,deathstar:`终极武器,能够摧毁整个行星`},defenses:{rocketLauncher:`火箭发射器`,lightLaser:`轻型激光炮`,heavyLaser:`重型激光炮`,gaussCannon:`高斯炮`,ionCannon:`离子炮`,plasmaTurret:`等离子炮塔`,smallShieldDome:`小型护盾罩`,largeShieldDome:`大型护盾罩`,antiBallisticMissile:`反弹道导弹`,interplanetaryMissile:`星际导弹`,planetaryShield:`行星护盾`},defenseDescriptions:{rocketLauncher:`基础防御设施`,lightLaser:`轻型电力武器`,heavyLaser:`重型电力武器`,gaussCannon:`高速动能武器`,ionCannon:`破坏护盾的利器`,plasmaTurret:`强力防御设施`,smallShieldDome:`保护整个星球的小型护盾`,largeShieldDome:`保护整个星球的大型护盾`,antiBallisticMissile:`拦截敌方导弹,每个可拦截1枚星际导弹`,interplanetaryMissile:`可以攻击其他星球的防御设施`,planetaryShield:`保护行星免受毁灭攻击的超级护盾`},research:{researchTime:`研究时间`,totalCost:`累积成本`,totalPoints:`累积积分`,levelRange:`等级范围`,attackBonus:`攻击加成`,shieldBonus:`护盾加成`,armorBonus:`装甲加成`,spyLevel:`侦查等级`,researchQueueBonus:`研究队列`,colonySlots:`殖民地槽位`,forAllPlanets:`(全局)`,speedBonus:`速度加成`,researchSpeedBonus:`研究速度加成`},technologies:{energyTechnology:`能源技术`,laserTechnology:`激光技术`,ionTechnology:`离子技术`,hyperspaceTechnology:`超空间技术`,plasmaTechnology:`等离子技术`,computerTechnology:`计算机技术`,espionageTechnology:`间谍技术`,weaponsTechnology:`武器技术`,shieldingTechnology:`护盾技术`,armourTechnology:`装甲技术`,astrophysics:`天体物理学`,gravitonTechnology:`引力技术`,combustionDrive:`燃烧引擎`,impulseDrive:`脉冲引擎`,hyperspaceDrive:`超空间引擎`,darkMatterTechnology:`暗物质技术`,terraformingTechnology:`地形改造技术`,planetDestructionTech:`行星毁灭技术`},technologyDescriptions:{energyTechnology:`提高能源利用效率`,laserTechnology:`激光武器和防御的基础`,ionTechnology:`离子武器技术`,hyperspaceTechnology:`超空间跳跃技术`,plasmaTechnology:`等离子武器技术`,computerTechnology:`增加研究队列数量,每级+1队列(最多10级)`,espionageTechnology:`提高间谍探测效果,每级提高1级侦查深度`,weaponsTechnology:`提高舰船和防御的攻击力,每级+10%`,shieldingTechnology:`提高舰船和防御的护盾值,每级+10%`,armourTechnology:`提高舰船和防御的装甲值,每级+10%`,astrophysics:`每级增加1个殖民地槽位,增加探险成功率`,gravitonTechnology:`研究引力操纵,死星的必要技术`,combustionDrive:`基础推进技术`,impulseDrive:`中级推进技术`,hyperspaceDrive:`高级推进技术`,darkMatterTechnology:`研究暗物质的性质和应用`,terraformingTechnology:`研究行星地形改造技术,每级为所有行星增加30个可用空间`,planetDestructionTech:`研究如何摧毁整个行星的恐怖技术`},officers:{commander:`指挥官`,admiral:`上将`,engineer:`工程师`,geologist:`地质学家`,technocrat:`技术专家`,darkMatterSpecialist:`暗物质专家`,resourceBonus:`资源产量加成`,darkMatterBonus:`暗物质产量加成`,energyBonus:`电力产量加成`},officerDescriptions:{commander:`提升建筑速度和管理能力`,admiral:`提升舰队战斗力和速度`,engineer:`提升能源和防御能力`,geologist:`提升资源产量`,technocrat:`提升研究速度和间谍能力`,darkMatterSpecialist:`提升暗物质采集效率`},queue:{buildQueueBonus:`建造队列`,spaceBonus:`空间加成`,researchQueueBonus:`研究队列`,building:`建造中`,researching:`研究中`,remaining:`剩余时间`,cancel:`取消`,cancelBuild:`取消建造`,cancelResearch:`取消研究`,confirmCancel:`确定要取消吗?将返还50%的资源。`,level:`等级`,quantity:`数量`,upgradeToLevel:`升级到等级`},overview:{title:`星球总览`,resourceOverview:`资源概览`,fleetInfo:`舰队`,currentShips:`当前星球的舰船数量`,productionSources:`资源获取来源`,productionSourcesDesc:`详细的资源产量及加成信息`,consumptionSources:`电力消耗来源`,consumptionSourcesDesc:`各建筑的电力消耗详情`,totalProduction:`总产量`,totalConsumption:`总消耗`,noConsumption:`当前无电力消耗`},buildingsView:{title:`建筑`,usedSpace:`已用空间`,spaceUsage:`占用空间`,level:`等级`,upgradeCost:`升级消耗`,buildTime:`建造时间`,upgrade:`升级`,maxLevelReached:`等级已满`,requirementsNotMet:`条件不足`,upgradeFailed:`升级失败`,upgradeFailedMessage:`请检查资源是否足够、空间是否充足或是否有其他建造任务。`,demolish:`拆除`,demolishRefund:`拆除返还`,demolishFailed:`拆除失败`,demolishFailedMessage:`无法拆除该建筑,请检查建造队列是否已满或建筑等级是否为0。`,confirmDemolish:`确认拆除`,confirmDemolishMessage:`确定要拆除`},researchView:{title:`研究`,researchCost:`研究消耗`,research:`研究`,maxLevelReached:`等级已满`,researchFailed:`研究失败`,researchFailedMessage:`请检查资源是否足够、前置条件是否满足,或是否有其他研究任务。`},shipyard:{attack:`攻击力`,shield:`护盾`,armor:`装甲`,speed:`速度`,cargoCapacity:`载货量`,fuelConsumption:`燃料消耗`,buildCost:`建造成本`,buildTime:`建造时间`,perUnit:`每个单位`,batchCalculator:`批量建造计算器`,quantity:`数量`,totalCost:`总成本`,totalTime:`总时间`},shipyardView:{title:`船坞`,fleetStorage:`舰队仓储`,attack:`攻击力`,shield:`护盾`,speed:`速度`,cargoCapacity:`载货量`,unitCost:`单位成本`,buildQuantity:`建造数量`,totalCost:`总成本`,build:`建造`,inputError:`输入错误`,inputErrorMessage:`请输入建造数量!`,buildFailed:`建造失败`,buildFailedMessage:`请检查资源是否足够或前置条件是否满足。`},defense:{attack:`攻击力`,shield:`护盾`,armor:`装甲`,buildCost:`建造成本`,buildTime:`建造时间`,perUnit:`每个单位`,batchCalculator:`批量建造计算器`,quantity:`数量`,totalCost:`总成本`,totalTime:`总时间`},defenseView:{title:`防御设施`,attack:`攻击力`,shield:`护盾`,armor:`装甲`,buildTime:`建造时间`,seconds:`秒`,unitCost:`单位成本`,buildQuantity:`建造数量`,totalCost:`总成本`,build:`建造`,shieldDomeBuilt:`护盾罩已建造`,missileCapacity:`导弹容量`,inputError:`输入错误`,inputErrorMessage:`请输入建造数量!`,buildFailed:`建造失败`,buildFailedMessage:`请检查资源是否足够或前置条件是否满足。护盾罩只能建造一个。`},fleetView:{title:`舰队管理`,fleetOverview:`舰队总览`,sendFleet:`派遣舰队`,flightMissions:`飞行任务`,currentPlanetFleet:`当前星球舰队`,attack:`攻击`,shield:`护盾`,armor:`装甲`,speed:`速度`,cargo:`载货`,selectFleet:`选择舰队`,selectFleetDescription:`选择要派遣的舰船数量`,available:`可用`,all:`全部`,targetCoordinates:`目标坐标`,galaxy:`银河系`,system:`星系`,position:`位置`,missionType:`任务类型`,missionInfo:`任务信息`,fuelConsumption:`燃料消耗`,flightTime:`飞行时间`,attackMission:`攻击`,transport:`运输`,colonize:`殖民`,spy:`侦察`,deploy:`部署`,recycle:`回收`,destroy:`行星毁灭`,transportResources:`运输资源`,totalCargoCapacity:`总载货量`,used:`已用`,noFlightMissions:`暂无飞行任务`,outbound:`前往`,returning:`返回`,fleetComposition:`舰队组成`,carryingResources:`携带资源`,arrivalTime:`到达时间`,returnTime:`返回时间`,recallFleet:`召回舰队`,sendFailed:`派遣失败`,sendFailedMessage:`请检查舰队数量、燃料是否充足,或载货量是否超出限制。`,recallFailed:`召回失败`,recallFailedMessage:`该任务无法召回。`,unknownPlanet:`未知星球`,fleetMissionSlots:`舰队任务槽位`,noShipsSelected:`未选择舰船`,cannotSendToOwnPlanet:`无法派遣舰队到自己的星球`,cargoExceedsCapacity:`载货量超出限制`,noColonyShip:`需要殖民船才能执行殖民任务`,noDebrisAtTarget:`目标坐标没有残骸场或残骸场已空`,noDeathstar:`需要死星才能执行毁灭任务`,giftMode:`赠送模式`,giftModeDescription:`将资源作为礼物赠送给`,estimatedReputationGain:`预计好感度增加`},officersView:{title:`军官`,activated:`已激活`,inactive:`未激活`,activeStatus:`激活状态`,expirationTime:`到期时间`,remainingTime:`剩余时间`,recruitCost:`招募成本`,days:`天`,benefitsBonus:`效果加成`,resourceProduction:`资源产量`,darkMatterProduction:`暗物质产量`,energyProduction:`电量产出`,buildingSpeed:`建筑速度`,researchSpeed:`研究速度`,fleetSpeed:`舰队速度`,fuelConsumption:`燃料消耗`,defense:`防御力`,storageCapacity:`仓储容量`,buildQueue:`建筑队列`,fleetSlots:`舰队槽位`,hire:`招募`,renew:`续约`,dismiss:`解雇`,hireTitle:`招募军官`,hireMessage:`确定要招募 {name} 吗?有效期为7天。`,renewTitle:`续约军官`,renewMessage:`确定要为 {name} 续约7天吗?`,dismissTitle:`解雇军官`,dismissMessage:`确定要解雇 {name} 吗?不会返还任何费用。`,hireFailed:`招募失败`,renewFailed:`续约失败`,insufficientResources:`资源不足!`},galaxyView:{title:`星系`,selectCoordinates:`选择坐标`,galaxy:`银河系`,selectGalaxy:`选择银河系`,system:`星系`,selectSystem:`选择星系`,view:`查看`,myPlanet:`我的星球`,myPlanets:`查看我的星系`,npcPlanets:`NPC星球`,selectPlanetToView:`选择星球以查看其所在星系`,totalPositions:`共10个星球位置`,mine:`我的`,hostile:`敌对`,emptySlot:`空位 - 可殖民`,scout:`侦察`,attack:`攻击`,missileAttack:`导弹攻击`,colonize:`殖民`,switch:`切换`,recycle:`回收`,sendGift:`赠送礼物`,debris:`残骸`,debrisField:`残骸场`,scoutPlanetTitle:`侦察星球`,attackPlanetTitle:`攻击星球`,missileAttackTitle:`导弹攻击`,colonizePlanetTitle:`殖民星球`,recyclePlanetTitle:`回收残骸`,giftPlanetTitle:`赠送礼物`,scoutPlanetMessage:`确定要派遣间谍探测器侦察星球 [{coordinates}] 吗? + +请前往舰队页面选择舰船并派遣。`,attackPlanetMessage:`确定要攻击星球 [{coordinates}] 吗? + +请前往舰队页面选择舰船并派遣。`,missileAttackMessage:`向星球 [{coordinates}] 发射导弹`,missileCount:`导弹数量`,availableMissiles:`可用导弹`,missileRange:`射程`,systems:`系统`,distance:`距离`,flightTime:`飞行时间`,launchMissile:`发射`,missileLaunched:`导弹已发射`,cancel:`取消`,colonizePlanetMessage:`确定要殖民位置 [{coordinates}] 吗? + +请前往舰队页面派遣殖民船。`,recyclePlanetMessage:`确定要回收位置 [{coordinates}] 的残骸吗? + +请前往舰队页面派遣回收船。`,giftPlanetMessage:`确定要向星球 [{coordinates}] 赠送资源吗? + +请前往舰队页面选择运输船并装载资源。`},messagesView:{title:`消息中心`,battles:`战斗`,spy:`侦查`,npc:`NPC`,battleReports:`战斗报告`,spyReports:`间谍报告`,noBattleReports:`暂无战斗报告`,noSpyReports:`暂无间谍报告`,battleReport:`战斗报告`,spyReport:`间谍报告`,victory:`胜利`,defeat:`失败`,draw:`平局`,attackerFleet:`攻击方舰队`,defenderFleet:`防守方舰队`,defenderDefense:`防守方防御`,attackerLosses:`攻击方损失`,defenderLosses:`防守方损失`,noLosses:`无损失`,plunder:`掠夺资源`,debrisField:`残骸场`,resources:`资源`,fleet:`舰队`,defense:`防御`,buildings:`建筑`,unread:`未读`,targetPlanet:`目标星球`,attackerRemaining:`攻击方剩余`,defenderRemaining:`防守方剩余`,moonChance:`月球生成概率`,showRoundDetails:`显示回合详情`,hideRoundDetails:`隐藏回合详情`,round:`第{round}回合`,attackerRemainingPower:`攻击方剩余火力`,defenderRemainingPower:`防守方剩余火力`,spied:`被侦查`,spiedNotification:`被侦查通知`,noSpiedNotifications:`暂无被侦查通知`,detected:`已发现`,undetected:`未发现`,missions:`任务`,noMissionReports:`暂无任务报告`,success:`成功`,failed:`失败`,npcActivity:`NPC活动`,noNPCActivity:`暂无NPC活动通知`,npcRecycleActivity:`NPC回收残骸`,gifts:`礼物`,giftRejected:`被拒绝`,noGiftNotifications:`暂无礼物通知`,noGiftRejected:`暂无拒绝记录`,giftFrom:`{npcName}的礼物`,giftRejectedBy:`{npcName}拒绝了礼物`,giftResources:`礼物资源`,rejectedResources:`被拒绝的资源`,expectedReputation:`预计好感度`,currentReputation:`当前好感度`,acceptGift:`接受`,rejectGift:`拒绝`,rejectionReason:{hostile:`对方对你有敌意,不接受礼物`,neutral_distrust:`对方对你缺乏信任`,polite_decline:`对方礼貌地拒绝了`}},missionReports:{transportSuccess:`运输任务成功完成`,transportFailed:`运输任务失败`,colonizeSuccess:`殖民任务成功,新星球已建立`,colonizeFailed:`殖民任务失败`,deploySuccess:`部署任务成功完成`,deployFailed:`部署任务失败`,recycleSuccess:`回收任务成功完成`,recycleFailed:`回收任务失败,目标位置没有残骸`,destroySuccess:`行星毁灭任务成功执行`,destroyFailed:`行星毁灭任务失败`,missileAttackSuccess:`导弹攻击成功`,missileAttackFailed:`导弹攻击失败,目标星球不存在`,missileAttackIntercepted:`所有导弹被拦截`,hits:`枚命中`},simulatorView:{title:`战斗模拟器`,attacker:`攻击方`,defender:`防守方`,attackerConfig:`攻击方配置`,attackerConfigDesc:`设置攻击方的舰队和科技等级`,defenderConfig:`防守方配置`,defenderConfigDesc:`设置防守方的舰队、防御和科技等级`,fleet:`舰队`,defenseStructures:`防御设施`,techLevels:`科技等级`,weapon:`武器`,shield:`护盾`,armor:`装甲`,defenderResources:`防守方资源(用于掠夺计算)`,startSimulation:`开始模拟`,reset:`重置`,battleResult:`战斗结果`,attackerVictory:`攻击方胜利`,defenderVictory:`防守方胜利`,draw:`平局`,afterRounds:`经过 {rounds} 回合战斗`,attackerLosses:`攻击方损失`,defenderLosses:`防守方损失`,noLosses:`无损失`,attackerRemaining:`攻击方剩余`,defenderRemaining:`防守方剩余`,allDestroyed:`全部摧毁`,plunderableResources:`可掠夺资源`,debrisField:`残骸场`,moonChance:`月球生成概率`,showRoundDetails:`显示回合详情`,hideRoundDetails:`隐藏回合详情`,round:`第 {round} 回合`,attackerRemainingPower:`攻击方剩余火力`,defenderRemainingPower:`防守方剩余火力`},settings:{dataManagement:`数据管理`,dataManagementDesc:`导出、导入或清除游戏数据`,exportData:`导出数据`,exportDataDesc:`将游戏进度导出为JSON文件`,export:`导出`,exporting:`导出中...`,exportSuccess:`导出成功`,exportFailed:`导出失败,请重试`,importData:`导入数据`,importDataDesc:`从JSON文件恢复游戏进度`,selectFile:`导入`,importSuccess:`导入成功`,importConfirmTitle:`确认导入数据`,importConfirmMessage:`导入数据将覆盖当前游戏进度,此操作不可撤销。确定要继续吗?`,importFailed:`导入失败,请检查文件格式`,clearData:`清除数据`,clearDataDesc:`删除所有游戏数据并重置游戏`,clear:`清除`,clearConfirmTitle:`确认清除数据`,clearConfirmMessage:`这将删除所有游戏数据并重新开始,此操作不可撤销。确定要继续吗?`,gameSettings:`游戏设置`,gameSettingsDesc:`调整游戏参数和偏好设置`,gamePause:`游戏暂停`,gamePauseDesc:`暂停或恢复游戏时间和资源生产`,pause:`暂停`,resume:`恢复`,gamePaused:`游戏已暂停`,gameResumed:`游戏已恢复`,playerName:`玩家名称`,gameSpeed:`资源产出速度`,gameSpeedDesc:`当前资源产出速度倍率`,speedChanged:`资源产出速度已更改为 {speed}x`,speedReset:`资源产出速度已重置为 1x`,reset:`重置`,about:`关于`,version:`版本`,latestVersion:`最新版本`,checkUpdate:`检查更新`,checking:`检查中...`,newVersionAvailable:`发现新版本 {version}`,upToDate:`已是最新版本`,checkUpdateCooldown:`请稍后再试(5分钟冷却时间)`,checkUpdateFailed:`检查更新失败,请检查网络连接`,viewUpdate:`查看更新`,updateAvailable:`有新版本可用。点击查看更新内容。`,download:`下载`,goToDownload:`前往下载`,buildDate:`构建日期`,community:`社区`,github:`GitHub 仓库`,qqGroup:`QQ 交流群`},gmView:{title:`GM 管理面板`,adminOnly:`仅管理员`,selectPlanet:`选择星球`,choosePlanet:`选择一个星球`,resources:`资源`,buildings:`建筑`,research:`科技`,ships:`舰船`,defense:`防御`,officers:`军官`,modifyResources:`修改资源`,resourcesDesc:`快速修改星球资源数量`,modifyBuildings:`修改建筑`,buildingsDesc:`快速设置建筑等级`,modifyResearch:`修改科技`,researchDesc:`快速设置科技等级`,modifyShips:`修改舰船`,shipsDesc:`快速设置舰船数量`,modifyDefense:`修改防御`,defenseDesc:`快速设置防御数量`,modifyOfficers:`修改军官`,officersDesc:`快速设置军官到期时间`,days:`天`,npcTesting:`NPC 测试`,npcTestingDesc:`测试NPC侦查和攻击行为`,selectNPC:`选择NPC`,chooseNPC:`选择一个NPC`,targetPlanet:`目标星球`,chooseTarget:`选择目标星球`,testSpy:`测试侦查`,testAttack:`测试攻击`,testSpyAndAttack:`测试侦查&攻击`,testSpyMessage:`点击确认以加速侦查任务`,testAttackMessage:`点击确认以加速攻击任务`,testSpyAndAttackMessage:`点击确认以加速任务执行`,initializeFleet:`初始化NPC舰队`,accelerateMissions:`加速所有任务(5秒)`,selectNPCFirst:`请先选择一个NPC`,npcNoProbes:`NPC没有间谍探测器`,npcNoSpyReport:`NPC需要先侦查`,npcMissionFailed:`创建任务失败`,npcNoPlanets:`NPC没有星球`,npcWillSpyIn5s:`{npcName}将在5秒后侦查`,npcWillAttackIn5s:`{npcName}将在5秒后攻击`,npcWillSpyAndAttack:`{npcName}将在5秒后侦查,10秒后攻击`,acceleratedMissions:`已加速{count}个任务至5秒后`,npcFleetInitialized:`{npcName}舰队已初始化`,npcFleetDetails:`100 间谍探测器 +500 轻型战机 +300 重型战机 +200 巡洋舰 +100 战列舰 +50 轰炸机 +30 毁灭者 +20 战列巡洋舰`,dangerZone:`危险区域`,dangerZoneDesc:`以下操作不可撤销,请谨慎操作`,resetGame:`重置游戏`,resetGameConfirm:`确定要重置游戏吗?这将删除所有数据!`},alerts:{npcSpyIncoming:`NPC侦查即将到达`,npcAttackIncoming:`NPC舰队来袭!`,npcFleetIncoming:`NPC舰队接近`,ships:`艘舰船`,spiedBy:`被侦查`,attackedBy:`被攻击`,detectionSuccess:`侦查被发现`,detectionFailed:`侦查未被发现`,npcSpiedYourPlanet:`NPC侦查了你的星球`,npcAttackedYourPlanet:`NPC攻击了你的星球`},diplomacy:{title:`外交`,description:`管理与NPC的外交关系`,tabs:{all:`全部`,friendly:`友好`,neutral:`中立`,hostile:`敌对`},noNpcs:`暂无NPC`,noFriendlyNpcs:`暂无友好NPC`,noNeutralNpcs:`暂无中立NPC`,noHostileNpcs:`暂无敌对NPC`,recentEvents:`最近事件`,recentEventsDescription:`最近的外交活动记录`,ago:`前`,status:{friendly:`友好`,neutral:`中立`,hostile:`敌对`},planets:`个星球`,allies:`个盟友`,reputation:`好感度`,alliedWith:`盟友`,more:`更多`,actions:{gift:`赠送资源`,viewPlanets:`查看星球`},lastEvent:`最近活动`,events:{gift:`赠送资源`,attack:`攻击`,allyAttacked:`攻击盟友`,spy:`侦查`,stealDebris:`抢夺残骸`},reports:{giftedResources:`赠送了 {metal}金属 {crystal}晶体 {deuterium}氘`,receivedGiftFromPlayer:`收到玩家的礼物`,giftedToNpc:`你向{npcName}赠送了资源。好感度+{reputation}`,rejectedPlayerGift:`拒绝了玩家的礼物`,npcRejectedGift:`{npcName}拒绝了你的礼物。好感度{reputation}`,attackedNpc:`攻击了{npcName}`,wasAttackedByPlayer:`被玩家攻击`,youAttackedNpc:`你攻击了{npcName}`,playerAttackedAlly:`玩家攻击了盟友{allyName}`,allyDispleased:`{allyName}对你攻击盟友{targetName}感到不满`,wasSpiedByPlayer:`被玩家侦查(被发现:{detected})`,spyDetected:`你的侦查被{npcName}发现了`,stoleDebrisFromTerritory:`从{npcName}的领地抢夺了残骸`,playerStoleDebris:`玩家从领地抢夺了残骸`,recycledDebrisNearNpc:`你在{npcName}的星球附近回收了残骸。他们很不高兴。`,giftedResourcesToPlayer:`向玩家赠送了资源`,receivedGiftFromNpc:`收到了{npcName}的礼物`,acceptedGiftFromNpc:`你接受了{npcName}的礼物:{metal}金属 {crystal}晶体 {deuterium}氘`,playerRejectedGift:`玩家拒绝了礼物`,rejectedGiftFromNpc:`你拒绝了{npcName}的礼物。好感度{reputation}`}},pagination:{previous:`上一页`,next:`下一页`,first:`首页`,last:`末页`,page:`第 {page} 页`},notFound:{title:`页面未找到`,description:`抱歉,您访问的页面不存在`,goHome:`返回首页`}},t={common:{confirm:`確認`,cancel:`取消`,delete:`刪除`,edit:`編輯`,save:`儲存`,close:`關閉`,back:`返回`,next:`下一步`,previous:`上一步`,submit:`提交`,reset:`重置`,search:`搜尋`,filter:`篩選`,loading:`載入中...`,noData:`暫無資料`,error:`錯誤`,success:`成功`,warning:`警告`,info:`資訊`,resourceType:`資源類型`,playerName:`指揮官`,timeHour:`時`,timeMinute:`分`,timeSecond:`秒`,featureLocked:`功能已鎖定`,unlockRequired:`需要解鎖前置建築`,requiredBuilding:`所需建築`,currentLevel:`當前等級`,goToBuildings:`前往建築頁面`,locked:`已鎖定`,viewRequirements:`查看前置條件`,requirementsNotMet:`前置條件未滿足`,current:`當前`,level:`等級`,gmModeActivated:`GM 模式已啟用!請查看導航選單。`},errors:{requirementsNotMet:`不滿足前置條件`,insufficientResources:`資源不足`,insufficientFleetStorage:`艦隊倉儲空間不足`,shieldDomeLimit:`護盾罩數量限制`,missileSiloLimit:`導彈發射井容量已滿`,insufficientMissiles:`星際導彈數量不足`,invalidMissileCount:`導彈數量無效`,targetOutOfRange:`目標超出射程`,cannotAttackOwnPlanet:`不能攻擊自己的星球`,fleetMissionsFull:`艦隊任務槽位已滿`,insufficientFleet:`艦隊數量不足`,insufficientFuel:`燃料不足`,planetOnly:`該建築只能在行星上建造`,moonOnly:`該建築只能在月球上建造`,buildQueueFull:`建造隊列已滿`,insufficientSpace:`空間不足`,buildingLevelZero:`建築等級為0,無法拆除`,researchQueueFull:`研究隊列已滿`,moonExists:`已存在月球`,insufficientDebris:`殘骸場不足`},nav:{overview:`總覽`,buildings:`建築`,research:`研究`,shipyard:`船塢`,defense:`防禦`,fleet:`艦隊`,officers:`軍官`,simulator:`模擬`,galaxy:`星系`,diplomacy:`Diplomacy`,messages:`訊息`,settings:`設定`,gm:`GM`},sidebar:{language:`語言`,lightMode:`日間模式`,darkMode:`夜間模式`,collapse:`收起選單`,expand:`展開選單`},resources:{metal:`金屬`,crystal:`晶體`,deuterium:`重氫`,darkMatter:`暗物質`,energy:`電力`,production:`產量`,consumption:`消耗`,capacity:`容量`,current:`當前儲量`,max:`最大容量`,perHour:`小時`,perMinute:`分鐘`,hour:`小時`,noEnergy:`電力不足`},planet:{planet:`星球`,moon:`月球`,colony:`殖民地`,position:`位置`,coordinates:`座標`,switchToMoon:`查看月球`,backToPlanet:`返回母星`,switchPlanet:`切換星球`,currentPlanet:`當前星球`,fields:`場地`,temperature:`溫度`,homePlanet:`母星`,planetPrefix:`星球`,moonSuffix:`的月球`,colonyPrefix:`殖民地`},player:{points:`總積分`},buildings:{metalMine:`金屬礦`,crystalMine:`晶體礦`,deuteriumSynthesizer:`重氫合成器`,solarPlant:`太陽能電站`,fusionReactor:`核聚變反應堆`,roboticsFactory:`機器人工廠`,naniteFactory:`納米工廠`,shipyard:`船塢`,researchLab:`研究實驗室`,metalStorage:`金屬倉庫`,crystalStorage:`晶體倉庫`,deuteriumTank:`重氫罐`,darkMatterCollector:`暗物質收集器`,darkMatterTank:`暗物質儲罐`,missileSilo:`導彈發射井`,terraformer:`地形改造器`,lunarBase:`月球基地`,sensorPhalanx:`傳感器陣列`,jumpGate:`跳躍門`,planetDestroyerFactory:`行星毀滅者工廠`,buildTime:`建造時間`,production:`產量`,consumption:`消耗`,totalCost:`累積成本`,totalPoints:`累積積分`,levelRange:`等級範圍`,capacity:`容量/效果`,storageCapacity:`容量`,energyProduction:`電力產出`,fleetStorage:`艦隊倉儲`,buildQueue:`建造隊列`,buildQueueBonus:`建造隊列`,spaceBonus:`空間加成`,buildSpeedBonus:`建造速度加成`,researchSpeedBonus:`研究速度加成`,planetSpace:`行星空間`,moonSpace:`月球空間`,missileCapacity:`導彈容量`},buildingDescriptions:{metalMine:`開採金屬資源`,crystalMine:`開採晶體資源`,deuteriumSynthesizer:`合成重氫資源`,solarPlant:`提供能源`,fusionReactor:`使用重氫產生大量能源`,roboticsFactory:`加快建造速度`,naniteFactory:`增加建造佇列數量,每級+1佇列(最多10級)`,shipyard:`建造艦船`,researchLab:`研究科技`,metalStorage:`增加金屬儲存上限`,crystalStorage:`增加晶體儲存上限`,deuteriumTank:`增加重氫儲存上限`,darkMatterCollector:`收集稀有的暗物質資源`,darkMatterTank:`增加暗物質儲存上限`,missileSilo:`存儲和發射導彈,每級可存儲10枚導彈`,terraformer:`改造行星地形,每級增加30個可用空間`,lunarBase:`增加月球可用空間,每級+30空間`,sensorPhalanx:`偵測周圍星系的艦隊活動`,jumpGate:`瞬間傳送艦隊到其他月球`,planetDestroyerFactory:`建造能夠摧毀行星的終極武器`},ships:{lightFighter:`輕型戰鬥機`,heavyFighter:`重型戰鬥機`,cruiser:`巡洋艦`,battleship:`戰列艦`,battlecruiser:`戰列巡洋艦`,bomber:`轟炸機`,destroyer:`驅逐艦`,smallCargo:`小型運輸船`,largeCargo:`大型運輸船`,colonyShip:`殖民船`,recycler:`回收船`,espionageProbe:`間諜探測器`,solarSatellite:`太陽能衛星`,darkMatterHarvester:`暗物質採集船`,deathstar:`死星`},shipDescriptions:{lightFighter:`基礎戰鬥單位`,heavyFighter:`重裝戰鬥機`,cruiser:`中型戰艦,攻守平衡`,battleship:`強力戰艦`,battlecruiser:`快速強大的戰鬥艦船,擅長攻擊戰列艦`,bomber:`專門對付防禦設施的轟炸艦`,destroyer:`擅長摧毀大型艦船的獵殺者`,smallCargo:`運輸少量資源`,largeCargo:`運輸大量資源`,colonyShip:`用於殖民新星球`,recycler:`收集殘骸場資源`,espionageProbe:`偵察敵方星球`,solarSatellite:`提供額外能源,每個產生50點電力`,darkMatterHarvester:`專門用於採集暗物質的特殊飛船`,deathstar:`終極武器,能夠摧毀整個行星`},defenses:{rocketLauncher:`火箭發射器`,lightLaser:`輕型激光炮`,heavyLaser:`重型激光炮`,gaussCannon:`高斯炮`,ionCannon:`離子炮`,plasmaTurret:`等離子炮塔`,smallShieldDome:`小型護盾罩`,largeShieldDome:`大型護盾罩`,antiBallisticMissile:`反彈道導彈`,interplanetaryMissile:`星際導彈`,planetaryShield:`行星護盾`},defenseDescriptions:{rocketLauncher:`基礎防禦設施`,lightLaser:`輕型電力武器`,heavyLaser:`重型電力武器`,gaussCannon:`高速動能武器`,ionCannon:`破壞護盾的利器`,plasmaTurret:`強力防禦設施`,smallShieldDome:`保護整個星球的小型護盾`,largeShieldDome:`保護整個星球的大型護盾`,antiBallisticMissile:`攔截敵方導彈,每個可攔截1枚星際導彈`,interplanetaryMissile:`可以攻擊其他星球的防禦設施`,planetaryShield:`保護行星免受毀滅攻擊的超級護盾`},research:{researchTime:`研究時間`,totalCost:`累積成本`,totalPoints:`累積積分`,levelRange:`等級範圍`,capacity:`容量/效果`,attackBonus:`攻擊加成`,shieldBonus:`護盾加成`,armorBonus:`裝甲加成`,spyLevel:`偵查等級`,researchQueueBonus:`研究隊列`,colonySlots:`殖民地槽位`,forAllPlanets:`(全局)`,speedBonus:`速度加成`,researchSpeedBonus:`研究速度加成`},technologies:{energyTechnology:`能源技術`,laserTechnology:`激光技術`,ionTechnology:`離子技術`,hyperspaceTechnology:`超空間技術`,plasmaTechnology:`等離子技術`,computerTechnology:`計算機技術`,espionageTechnology:`間諜技術`,weaponsTechnology:`武器技術`,shieldingTechnology:`護盾技術`,armourTechnology:`裝甲技術`,astrophysics:`天體物理學`,gravitonTechnology:`引力技術`,combustionDrive:`燃燒引擎`,impulseDrive:`脈衝引擎`,hyperspaceDrive:`超空間引擎`,darkMatterTechnology:`暗物質技術`,terraformingTechnology:`地形改造技術`,planetDestructionTech:`行星毀滅技術`},technologyDescriptions:{energyTechnology:`提高能源利用效率`,laserTechnology:`激光武器和防禦的基礎`,ionTechnology:`離子武器技術`,hyperspaceTechnology:`超空間跳躍技術`,plasmaTechnology:`等離子武器技術`,computerTechnology:`增加研究佇列數量,每級+1佇列(最多10級)`,espionageTechnology:`提高間諜探測效果,每級提高1級偵查深度`,weaponsTechnology:`提高艦船和防禦的攻擊力,每級+10%`,shieldingTechnology:`提高艦船和防禦的護盾值,每級+10%`,armourTechnology:`提高艦船和防禦的裝甲值,每級+10%`,astrophysics:`每級增加1個殖民地槽位,增加探險成功率`,gravitonTechnology:`研究引力操縱,死星的必要技術`,combustionDrive:`基礎推進技術`,impulseDrive:`中級推進技術`,hyperspaceDrive:`高級推進技術`,darkMatterTechnology:`研究暗物質的性質和應用`,terraformingTechnology:`研究行星地形改造技術,每級為所有行星增加30個可用空間`,planetDestructionTech:`研究如何摧毀整個行星的恐怖技術`},officers:{commander:`指揮官`,admiral:`上將`,engineer:`工程師`,geologist:`地質學家`,technocrat:`技術專家`,darkMatterSpecialist:`暗物質專家`,resourceBonus:`資源生產加成`,darkMatterBonus:`暗物質生產加成`,energyBonus:`電力產量加成`},officerDescriptions:{commander:`提升建築速度和管理能力`,admiral:`提升艦隊戰鬥力和速度`,engineer:`提升能源和防禦能力`,geologist:`提升資源產量`,technocrat:`提升研究速度和間諜能力`,darkMatterSpecialist:`提升暗物質採集效率`},queue:{buildQueue:`建造佇列`,researchQueue:`研究佇列`,building:`建造中`,researching:`研究中`,remaining:`剩餘時間`,cancel:`取消`,cancelBuild:`取消建造`,cancelResearch:`取消研究`,confirmCancel:`確定要取消嗎?將返還50%的資源。`,level:`等級`,gmModeActivated:``,upgradeToLevel:`升級到等級`},overview:{title:`星球總覽`,resourceOverview:`資源概覽`,fleetInfo:`艦隊資訊`,currentShips:`當前星球的艦船數量`,productionSources:`生產來源`,productionSourcesDesc:`詳細資源生產和加成資訊`,consumptionSources:`電力消耗來源`,consumptionSourcesDesc:`各建築的電力消耗詳情`,totalProduction:`總產量`,totalConsumption:`總消耗`,noConsumption:`當前無電力消耗`},buildingsView:{title:`建築`,usedSpace:`已用空間`,spaceUsage:`佔用空間`,level:`等級`,gmModeActivated:``,upgradeCost:`升級消耗`,buildTime:`建造時間`,upgrade:`升級`,maxLevelReached:`等級已滿`,requirementsNotMet:`條件不足`,upgradeFailed:`升級失敗`,upgradeFailedMessage:`請檢查資源是否足夠、空間是否充足或是否有其他建造任務。`,demolish:`拆除`,demolishRefund:`拆除返還`,demolishFailed:`拆除失敗`,demolishFailedMessage:`無法拆除該建築,請檢查建造隊列是否已滿或建築等級是否為0。`,confirmDemolish:`確認拆除`,confirmDemolishMessage:`確定要拆除以下建築嗎?`},researchView:{title:`研究`,researchCost:`研究消耗`,research:`研究`,maxLevelReached:`等級已滿`,researchFailed:`研究失敗`,researchFailedMessage:`請檢查資源是否足夠、前置條件是否滿足,或是否有其他研究任務。`},shipyard:{attack:`攻擊力`,missileAttack:`導彈攻擊`,shield:`護盾`,armor:`裝甲`,speed:`速度`,cargoCapacity:`載貨量`,fuelConsumption:`燃料消耗`,buildCost:`建造成本`,buildTime:`建造時間`,perUnit:`每個單位`,batchCalculator:`批量建造計算器`,quantity:`數量`,totalCost:`總成本`,totalTime:`總時間`},shipyardView:{title:`船塢`,fleetStorage:`艦隊倉儲`,attack:`攻擊力`,missileAttack:`導彈攻擊`,shield:`護盾`,speed:`速度`,cargoCapacity:`載貨量`,unitCost:`單位成本`,buildQuantity:`建造數量`,totalCost:`總成本`,build:`建造`,inputError:`輸入錯誤`,inputErrorMessage:`請輸入建造數量!`,buildFailed:`建造失敗`,buildFailedMessage:`請檢查資源是否足夠或前置條件是否滿足。`},defense:{attack:`攻擊力`,missileAttack:`導彈攻擊`,shield:`護盾`,armor:`裝甲`,buildCost:`建造成本`,buildTime:`建造時間`,perUnit:`每個單位`,batchCalculator:`批量建造計算器`,quantity:`數量`,totalCost:`總成本`,totalTime:`總時間`},defenseView:{title:`防禦設施`,attack:`攻擊力`,missileAttack:`導彈攻擊`,shield:`護盾`,armor:`裝甲`,buildTime:`建造時間`,seconds:`秒`,unitCost:`單位成本`,buildQuantity:`建造數量`,totalCost:`總成本`,build:`建造`,shieldDomeBuilt:`護盾罩已建造`,missileCapacity:`導彈容量`,inputError:`輸入錯誤`,inputErrorMessage:`請輸入建造數量!`,buildFailed:`建造失敗`,buildFailedMessage:`請檢查資源是否足夠或前置條件是否滿足。護盾罩只能建造一個。`},fleetView:{title:`艦隊管理`,fleetOverview:`艦隊總覽`,sendFleet:`派遣艦隊`,flightMissions:`飛行任務`,currentPlanetFleet:`當前星球艦隊`,attack:`攻擊`,missileAttack:`導彈攻擊`,shield:`護盾`,armor:`裝甲`,speed:`速度`,cargo:`載貨`,selectFleet:`選擇艦隊`,selectFleetDescription:`選擇要派遣的艦船數量`,available:`可用`,all:`全部`,targetCoordinates:`目標座標`,galaxy:`銀河系`,diplomacy:`Diplomacy`,system:`星系`,position:`位置`,missionType:`任務類型`,missionInfo:`任務資訊`,fuelConsumption:`燃料消耗`,flightTime:`飛行時間`,attackMission:`攻擊`,transport:`運輸`,colonize:`殖民`,spy:`偵察`,deploy:`部署`,recycle:`回收`,transportResources:`運輸資源`,totalCargoCapacity:`總載貨量`,used:`已用`,noFlightMissions:`暫無飛行任務`,outbound:`前往`,returning:`返回`,fleetComposition:`艦隊組成`,carryingResources:`攜帶資源`,arrivalTime:`到達時間`,returnTime:`返回時間`,recallFleet:`召回艦隊`,sendFailed:`派遣失敗`,sendFailedMessage:`請檢查艦隊數量、燃料是否充足,或載貨量是否超出限制。`,recallFailed:`召回失敗`,recallFailedMessage:`該任務無法召回。`,unknownPlanet:`未知星球`,fleetMissionSlots:`艦隊任務槽位`,noShipsSelected:`未選擇艦船`,cannotSendToOwnPlanet:`無法派遣艦隊到自己的星球`,cargoExceedsCapacity:`載貨量超出限制`,noColonyShip:`需要殖民船才能執行殖民任務`,noDebrisAtTarget:`目標坐標沒有殘骸場或殘骸場已空`,noDeathstar:`需要死星才能執行毀滅任務`,giftMode:`贈送模式`,giftModeDescription:`將資源作為禮物贈送給`,estimatedReputationGain:`預計好感度增加`},officersView:{title:`軍官`,activated:`已啟用`,inactive:`未啟用`,activeStatus:`啟用狀態`,expirationTime:`到期時間`,remainingTime:`剩餘時間`,recruitCost:`招募成本`,days:`天`,benefitsBonus:`效果加成`,resourceProduction:`資源產量`,darkMatterProduction:`暗物質產量`,energyProduction:`電量產出`,buildingSpeed:`建築速度`,researchSpeed:`研究速度`,fleetSpeed:`艦隊速度`,fuelConsumption:`燃料消耗`,defense:`防禦力`,storageCapacity:`倉儲容量`,buildQueue:`建築佇列`,fleetSlots:`艦隊槽位`,hire:`招募`,renew:`續約`,dismiss:`解雇`,hireTitle:`招募軍官`,hireMessage:`確定要招募 {name} 嗎?有效期為7天。`,renewTitle:`續約軍官`,renewMessage:`確定要為 {name} 續約7天嗎?`,dismissTitle:`解雇軍官`,dismissMessage:`確定要解雇 {name} 嗎?不會返還任何費用。`,hireFailed:`招募失敗`,renewFailed:`續約失敗`,insufficientResources:`資源不足!`},galaxyView:{title:`星系`,selectCoordinates:`選擇座標`,galaxy:`銀河系`,diplomacy:`Diplomacy`,selectGalaxy:`選擇銀河系`,system:`星系`,selectSystem:`選擇星系`,view:`查看`,myPlanet:`我的星球`,myPlanets:`查看我的星系`,npcPlanets:`NPC星球`,selectPlanetToView:`選擇星球以查看其所在星系`,totalPositions:`共10個星球位置`,mine:`我的`,hostile:`敵對`,emptySlot:`空位 - 可殖民`,scout:`偵察`,attack:`攻擊`,missileAttack:`導彈攻擊`,colonize:`殖民`,switch:`切換`,recycle:`回收`,debrisField:`殘骸場`,scoutPlanetTitle:`偵察星球`,attackPlanetTitle:`攻擊星球`,missileAttackTitle:`導彈攻擊`,colonizePlanetTitle:`殖民星球`,recyclePlanetTitle:`回收殘骸`,scoutPlanetMessage:`確定要派遣間諜探測器偵察星球 [{coordinates}] 嗎? + +請前往艦隊頁面選擇艦船並派遣。`,attackPlanetMessage:`確定要攻擊星球 [{coordinates}] 嗎? + +請前往艦隊頁面選擇艦船並派遣。`,missileAttackMessage:`向星球 [{coordinates}] 發射星際導彈`,missileCount:`導彈數量`,availableMissiles:`可用導彈`,missileRange:`導彈射程`,systems:`星系`,distance:`距離`,flightTime:`飛行時間`,launchMissile:`發射`,cancel:`取消`,colonizePlanetMessage:`確定要殖民位置 [{coordinates}] 嗎? + +請前往艦隊頁面派遣殖民船。`,recyclePlanetMessage:`確定要回收位置 [{coordinates}] 的殘骸嗎? + +請前往艦隊頁面派遣回收船。`,sendGift:`贈送禮物`,debris:`殘骸`,giftPlanetTitle:`贈送禮物`,giftPlanetMessage:`確定要向星球 [{coordinates}] 贈送資源嗎? + +請前往艦隊頁面選擇運輸船並裝載資源。`},messagesView:{title:`訊息中心`,battles:`戰鬥`,spy:`偵查`,npc:`NPC`,battleReports:`戰鬥報告`,spyReports:`間諜報告`,noBattleReports:`暫無戰鬥報告`,noSpyReports:`暫無間諜報告`,battleReport:`戰鬥報告`,spyReport:`間諜報告`,victory:`勝利`,defeat:`失敗`,draw:`平局`,attackerFleet:`攻擊方艦隊`,defenderFleet:`防守方艦隊`,defenderDefense:`防守方防禦`,attackerLosses:`攻擊方損失`,defenderLosses:`防守方損失`,noLosses:`無損失`,plunder:`掠奪資源`,debrisField:`殘骸場`,resources:`資源`,fleet:`艦隊`,defense:`防禦`,buildings:`建築`,unread:`未讀`,targetPlanet:`目標星球`,attackerRemaining:`攻擊方剩餘`,defenderRemaining:`防守方剩餘`,moonChance:`月球生成機率`,showRoundDetails:`顯示回合詳情`,hideRoundDetails:`隱藏回合詳情`,round:`第{round}回合`,attackerRemainingPower:`攻擊方剩餘火力`,defenderRemainingPower:`防守方剩餘火力`,spied:`被偵查`,spiedNotification:`被偵查通知`,noSpiedNotifications:`暫無被偵查通知`,detected:`已發現`,undetected:`未發現`,missions:`任務`,noMissionReports:`暫無任務報告`,success:`成功`,failed:`失敗`,npcActivity:`NPC活動`,noNPCActivity:`暫無NPC活動通知`,npcRecycleActivity:`NPC回收殘骸`,gifts:`禮物`,giftRejected:`被拒絕`,noGiftNotifications:`暫無禮物通知`,noGiftRejected:`暫無拒絕記錄`,giftFrom:`{npcName}的禮物`,giftRejectedBy:`{npcName}拒絕了禮物`,giftResources:`禮物資源`,rejectedResources:`被拒絕的資源`,expectedReputation:`預計好感度`,currentReputation:`當前好感度`,acceptGift:`接受`,rejectGift:`拒絕`,rejectionReason:{hostile:`對方對你有敵意,不接受禮物`,neutral_distrust:`對方對你缺乏信任`,polite_decline:`對方禮貌地拒絕了`}},missionReports:{transportSuccess:`運輸任務成功完成`,transportFailed:`運輸任務失敗`,colonizeSuccess:`殖民任務成功,新星球已建立`,colonizeFailed:`殖民任務失敗`,deploySuccess:`部署任務成功完成`,deployFailed:`部署任務失敗`,recycleSuccess:`回收任務成功完成`,recycleFailed:`回收任務失敗,目標位置沒有殘骸`,destroySuccess:`行星毀滅任務成功執行`,destroyFailed:`行星毀滅任務失敗`},simulatorView:{title:`戰鬥模擬器`,attacker:`攻擊方`,defender:`防守方`,attackerConfig:`攻擊方配置`,attackerConfigDesc:`設置攻擊方的艦隊和科技等級`,defenderConfig:`防守方配置`,defenderConfigDesc:`設置防守方的艦隊、防禦和科技等級`,fleet:`艦隊`,defenseStructures:`防禦設施`,techLevels:`科技等級`,weapon:`武器`,shield:`護盾`,armor:`裝甲`,defenderResources:`防守方資源(用於掠奪計算)`,startSimulation:`開始模擬`,reset:`重置`,battleResult:`戰鬥結果`,attackerVictory:`攻擊方勝利`,defenderVictory:`防守方勝利`,draw:`平局`,afterRounds:`經過 {rounds} 回合戰鬥`,attackerLosses:`攻擊方損失`,defenderLosses:`防守方損失`,noLosses:`無損失`,attackerRemaining:`攻擊方剩餘`,defenderRemaining:`防守方剩餘`,allDestroyed:`全部摧毀`,plunderableResources:`可掠奪資源`,debrisField:`殘骸場`,moonChance:`月球生成機率`,showRoundDetails:`顯示回合詳情`,hideRoundDetails:`隱藏回合詳情`,round:`第 {round} 回合`,attackerRemainingPower:`攻擊方剩餘火力`,defenderRemainingPower:`防守方剩餘火力`},settings:{dataManagement:`資料管理`,dataManagementDesc:`匯出、匯入或清除遊戲資料`,exportData:`匯出資料`,exportDataDesc:`將遊戲進度匯出為JSON檔案`,export:`匯出`,exporting:`匯出中...`,exportSuccess:`匯出成功`,exportFailed:`匯出失敗,請重試`,importData:`匯入資料`,importDataDesc:`從JSON檔案恢復遊戲進度`,selectFile:`匯入`,importSuccess:`匯入成功`,importConfirmTitle:`確認匯入資料`,importConfirmMessage:`匯入資料將覆蓋目前遊戲進度,此操作不可撤銷。確定要繼續嗎?`,importFailed:`匯入失敗,請檢查檔案格式`,clearData:`清除資料`,clearDataDesc:`刪除所有遊戲資料並重置遊戲`,clear:`清除`,clearConfirmTitle:`確認清除資料`,clearConfirmMessage:`這將刪除所有遊戲資料並重新開始,此操作不可撤銷。確定要繼續嗎?`,gameSettings:`遊戲設定`,gameSettingsDesc:`調整遊戲參數和偏好設定`,gamePause:`遊戲暫停`,gamePauseDesc:`暫停或恢復遊戲時間和資源生產`,pause:`暫停`,resume:`恢復`,gamePaused:`遊戲已暫停`,gameResumed:`遊戲已恢復`,playerName:`玩家名稱`,gameSpeed:`資源產出速度`,gameSpeedDesc:`目前資源產出速度倍率`,speedChanged:`資源產出速度已更改為 {speed}x`,speedReset:`資源產出速度已重置為 1x`,reset:`重置`,about:`關於`,version:`版本`,latestVersion:`最新版本`,checkUpdate:`檢查更新`,checking:`檢查中...`,newVersionAvailable:`發現新版本 {version}`,upToDate:`已是最新版本`,checkUpdateCooldown:`請稍後再試(5分鐘冷卻時間)`,checkUpdateFailed:`檢查更新失敗,請檢查網路連線`,viewUpdate:`查看更新`,updateAvailable:`有新版本可用。點擊查看更新內容。`,download:`下載`,goToDownload:`前往下載`,buildDate:`建置日期`,community:`社群`,github:`GitHub 儲存庫`,qqGroup:`QQ 交流群`},gmView:{title:`GM 管理面板`,adminOnly:`僅管理員`,selectPlanet:`選擇星球`,choosePlanet:`選擇一個星球`,resources:`資源`,buildings:`建築`,research:`科技`,ships:`艦船`,defense:`防禦`,officers:`軍官`,modifyResources:`修改資源`,resourcesDesc:`快速修改星球資源數量`,modifyBuildings:`修改建築`,buildingsDesc:`快速設定建築等級`,modifyResearch:`修改科技`,researchDesc:`快速設定科技等級`,modifyShips:`修改艦船`,shipsDesc:`快速設定艦船數量`,modifyDefense:`修改防禦`,defenseDesc:`快速設定防禦數量`,modifyOfficers:`修改軍官`,officersDesc:`快速設定軍官到期時間`,days:`天`,npcTesting:`NPC 測試`,npcTestingDesc:`測試NPC偵查和攻擊行為`,selectNPC:`選擇NPC`,chooseNPC:`選擇一個NPC`,targetPlanet:`目標星球`,chooseTarget:`選擇目標星球`,testSpy:`測試偵查`,testAttack:`測試攻擊`,testSpyAndAttack:`測試偵查&攻擊`,testSpyMessage:`點擊確認以加速偵查任務`,testAttackMessage:`點擊確認以加速攻擊任務`,testSpyAndAttackMessage:`點擊確認以加速任務執行`,initializeFleet:`初始化NPC艦隊`,accelerateMissions:`加速所有任務(5秒)`,selectNPCFirst:`請先選擇一個NPC`,npcNoProbes:`NPC沒有間諜探測器`,npcNoSpyReport:`NPC需要先偵查`,npcMissionFailed:`創建任務失敗`,npcNoPlanets:`NPC沒有星球`,npcWillSpyIn5s:`{npcName}將在5秒後偵查`,npcWillAttackIn5s:`{npcName}將在5秒後攻擊`,npcWillSpyAndAttack:`{npcName}將在5秒後偵查,10秒後攻擊`,acceleratedMissions:`已加速{count}個任務至5秒後`,npcFleetInitialized:`{npcName}艦隊已初始化`,npcFleetDetails:`100 間諜探測器 +500 輕型戰機 +300 重型戰機 +200 巡洋艦 +100 戰列艦 +50 轟炸機 +30 毀滅者 +20 戰列巡洋艦`,dangerZone:`危險區域`,dangerZoneDesc:`以下操作不可撤銷,請謹慎操作`,resetGame:`重置遊戲`,resetGameConfirm:`確定要重置遊戲嗎?這將刪除所有資料!`},alerts:{npcSpyIncoming:`NPC偵查即將到達`,npcAttackIncoming:`NPC艦隊來襲!`,npcFleetIncoming:`NPC艦隊接近`,ships:`艘艦船`,spiedBy:`被偵查`,attackedBy:`被攻擊`,detectionSuccess:`偵查被發現`,detectionFailed:`偵查未被發現`,npcSpiedYourPlanet:`NPC偵查了你的星球`,npcAttackedYourPlanet:`NPC攻擊了你的星球`},diplomacy:{title:`外交`,description:`管理與NPC的外交關係`,tabs:{all:`全部`,friendly:`友好`,neutral:`中立`,hostile:`敵對`},noNpcs:`沒有NPC`,noFriendlyNpcs:`沒有友好的NPC`,noNeutralNpcs:`沒有中立的NPC`,noHostileNpcs:`沒有敵對的NPC`,recentEvents:`最近事件`,recentEventsDescription:`最近的外交活動記錄`,ago:`前`,status:{friendly:`友好`,neutral:`中立`,hostile:`敵對`},planets:`星球`,allies:`盟友`,reputation:`聲望`,alliedWith:`結盟對象`,more:`更多`,actions:{gift:`贈送禮物`,viewPlanets:`查看星球`},lastEvent:`最近事件`,events:{gift:`已贈送禮物`,attack:`攻擊`,missileAttack:`導彈攻擊`,allyAttacked:`盟友被攻擊`,spy:`間諜活動`,stealDebris:`掠奪殘骸`},reports:{giftedResources:`贈送了 {metal}金屬 {crystal}晶體 {deuterium}氘`,receivedGiftFromPlayer:`收到玩家的禮物`,giftedToNpc:`你向{npcName}贈送了資源。好感度+{reputation}`,rejectedPlayerGift:`拒絕了玩家的禮物`,npcRejectedGift:`{npcName}拒絕了你的禮物。好感度{reputation}`,attackedNpc:`攻擊了{npcName}`,wasAttackedByPlayer:`被玩家攻擊`,youAttackedNpc:`你攻擊了{npcName}`,playerAttackedAlly:`玩家攻擊了盟友{allyName}`,allyDispleased:`{allyName}對你攻擊盟友{targetName}感到不滿`,wasSpiedByPlayer:`被玩家偵查(被發現:{detected})`,spyDetected:`你的偵查被{npcName}發現了`,stoleDebrisFromTerritory:`從{npcName}的領地掠奪了殘骸`,playerStoleDebris:`玩家從領地掠奪了殘骸`,recycledDebrisNearNpc:`你在{npcName}的星球附近回收了殘骸。他們很不高興。`,giftedResourcesToPlayer:`向玩家贈送了資源`,receivedGiftFromNpc:`收到了{npcName}的禮物`,acceptedGiftFromNpc:`你接受了{npcName}的禮物:{metal}金屬 {crystal}晶體 {deuterium}氘`,playerRejectedGift:`玩家拒絕了禮物`,rejectedGiftFromNpc:`你拒絕了{npcName}的禮物。好感度{reputation}`}},pagination:{previous:`上一頁`,next:`下一頁`,first:`首頁`,last:`末頁`,page:`第 {page} 頁`},notFound:{title:`找不到頁面`,description:`抱歉,您訪問的頁面不存在`,goHome:`返回首頁`}},n={common:{confirm:`Confirm`,cancel:`Cancel`,delete:`Delete`,edit:`Edit`,save:`Save`,close:`Close`,back:`Back`,next:`Next`,previous:`Previous`,submit:`Submit`,reset:`Reset`,search:`Search`,filter:`Filter`,loading:`Loading...`,noData:`No Data`,error:`Error`,success:`Success`,warning:`Warning`,info:`Info`,resourceType:`Resource Type`,playerName:`Commander`,timeHour:`h`,timeMinute:`m`,timeSecond:`s`,featureLocked:`Feature Locked`,unlockRequired:`Building Required`,requiredBuilding:`Required Building`,currentLevel:`Current Level`,goToBuildings:`Go to Buildings`,locked:`Locked`,viewRequirements:`View Requirements`,requirementsNotMet:`Requirements Not Met`,current:`Current`,level:`Level`,gmModeActivated:`GM Mode Activated! Check the navigation menu.`},errors:{requirementsNotMet:`Requirements not met`,insufficientResources:`Insufficient resources`,insufficientFleetStorage:`Insufficient fleet storage`,shieldDomeLimit:`Shield dome limit reached`,missileSiloLimit:`Missile silo capacity exceeded`,insufficientMissiles:`Insufficient interplanetary missiles`,invalidMissileCount:`Invalid missile count`,targetOutOfRange:`Target out of range`,cannotAttackOwnPlanet:`Cannot attack your own planet`,fleetMissionsFull:`Fleet mission slots full`,insufficientFleet:`Insufficient fleet`,insufficientFuel:`Insufficient fuel`,planetOnly:`This building can only be built on planets`,moonOnly:`This building can only be built on moons`,buildQueueFull:`Build queue full`,insufficientSpace:`Insufficient space`,buildingLevelZero:`Building level is 0, cannot demolish`,researchQueueFull:`Research queue full`,moonExists:`Moon already exists`,insufficientDebris:`Insufficient debris field`},nav:{overview:`Overview`,buildings:`Buildings`,research:`Research`,shipyard:`Shipyard`,defense:`Defense`,fleet:`Fleet`,officers:`Officers`,simulator:`Simulator`,galaxy:`Galaxy`,diplomacy:`Diplomacy`,messages:`Messages`,settings:`Settings`,gm:`GM`},sidebar:{language:`Language`,lightMode:`Light Mode`,darkMode:`Dark Mode`,collapse:`Collapse`,expand:`Expand`},resources:{metal:`Metal`,crystal:`Crystal`,deuterium:`Deuterium`,darkMatter:`Dark Matter`,energy:`Energy`,production:`Production`,consumption:`Consumption`,capacity:`Capacity`,current:`Current`,max:`Max Capacity`,perHour:`hour`,perMinute:`min`,hour:`hour`,noEnergy:`No Energy`},planet:{planet:`Planet`,moon:`Moon`,colony:`Colony`,position:`Position`,coordinates:`Coordinates`,switchToMoon:`View Moon`,backToPlanet:`Back to Planet`,switchPlanet:`Switch Planet`,currentPlanet:`Current Planet`,fields:`Fields`,temperature:`Temperature`,homePlanet:`Home Planet`,planetPrefix:`Planet`,moonSuffix:`'s Moon`,colonyPrefix:`Colony`},player:{points:`Total Points`},buildings:{metalMine:`Metal Mine`,crystalMine:`Crystal Mine`,deuteriumSynthesizer:`Deuterium Synthesizer`,solarPlant:`Solar Plant`,fusionReactor:`Fusion Reactor`,roboticsFactory:`Robotics Factory`,naniteFactory:`Nanite Factory`,shipyard:`Shipyard`,researchLab:`Research Lab`,metalStorage:`Metal Storage`,crystalStorage:`Crystal Storage`,deuteriumTank:`Deuterium Tank`,darkMatterCollector:`Dark Matter Collector`,darkMatterTank:`Dark Matter Tank`,missileSilo:`Missile Silo`,terraformer:`Terraformer`,lunarBase:`Lunar Base`,sensorPhalanx:`Sensor Phalanx`,jumpGate:`Jump Gate`,planetDestroyerFactory:`Planet Destroyer Factory`,buildTime:`Build Time`,production:`Production`,consumption:`Consumption`,totalCost:`Total Cost`,totalPoints:`Total Points`,levelRange:`Level Range`,storageCapacity:`Capacity`,energyProduction:`Energy Production`,fleetStorage:`Fleet Storage`,buildQueueBonus:`Build Queue`,spaceBonus:`Space Bonus`,buildSpeedBonus:`Build Speed Bonus`,researchSpeedBonus:`Research Speed Bonus`,missileCapacity:`Missile Capacity`},buildingDescriptions:{metalMine:`Extracts metal resources`,crystalMine:`Extracts crystal resources`,deuteriumSynthesizer:`Synthesizes deuterium resources`,solarPlant:`Provides energy`,fusionReactor:`Uses deuterium to generate large amounts of energy`,roboticsFactory:`Accelerates construction speed`,naniteFactory:`Increases build queue capacity, +1 per level (max 10 levels)`,shipyard:`Constructs ships`,researchLab:`Researches technologies`,metalStorage:`Increases metal storage capacity`,crystalStorage:`Increases crystal storage capacity`,deuteriumTank:`Increases deuterium storage capacity`,darkMatterCollector:`Collects rare dark matter resources`,darkMatterTank:`Increases dark matter storage capacity`,missileSilo:`Stores and launches missiles, 10 missiles per level`,terraformer:`Terraforms planet surface, adds 30 available space per level`,lunarBase:`Increases available space on the moon, +30 space per level`,sensorPhalanx:`Detects fleet activities in surrounding systems`,jumpGate:`Instantly transfers fleets to other moons`,planetDestroyerFactory:`Constructs ultimate weapons capable of destroying planets`},ships:{lightFighter:`Light Fighter`,heavyFighter:`Heavy Fighter`,cruiser:`Cruiser`,battleship:`Battleship`,battlecruiser:`Battlecruiser`,bomber:`Bomber`,destroyer:`Destroyer`,smallCargo:`Small Cargo`,largeCargo:`Large Cargo`,colonyShip:`Colony Ship`,recycler:`Recycler`,espionageProbe:`Espionage Probe`,solarSatellite:`Solar Satellite`,darkMatterHarvester:`Dark Matter Harvester`,deathstar:`Deathstar`},shipDescriptions:{lightFighter:`Basic combat unit`,heavyFighter:`Heavily armored fighter`,cruiser:`Medium warship, balanced offense and defense`,battleship:`Powerful warship`,battlecruiser:`Fast powerful warship, excels at attacking battleships`,bomber:`Specialized ship for attacking defense structures`,destroyer:`Hunter specialized in destroying large ships`,smallCargo:`Transports small amounts of resources`,largeCargo:`Transports large amounts of resources`,colonyShip:`Used to colonize new planets`,recycler:`Collects debris field resources`,espionageProbe:`Scouts enemy planets`,solarSatellite:`Provides extra energy, generates 50 energy per satellite`,darkMatterHarvester:`Special ship for harvesting dark matter`,deathstar:`Ultimate weapon capable of destroying entire planets`},defenses:{rocketLauncher:`Rocket Launcher`,lightLaser:`Light Laser`,heavyLaser:`Heavy Laser`,gaussCannon:`Gauss Cannon`,ionCannon:`Ion Cannon`,plasmaTurret:`Plasma Turret`,smallShieldDome:`Small Shield Dome`,largeShieldDome:`Large Shield Dome`,antiBallisticMissile:`Anti-Ballistic Missile`,interplanetaryMissile:`Interplanetary Missile`,planetaryShield:`Planetary Shield`},defenseDescriptions:{rocketLauncher:`Basic defense facility`,lightLaser:`Light energy weapon`,heavyLaser:`Heavy energy weapon`,gaussCannon:`High-speed kinetic weapon`,ionCannon:`Effective against shields`,plasmaTurret:`Powerful defense facility`,smallShieldDome:`Small shield protecting the entire planet`,largeShieldDome:`Large shield protecting the entire planet`,antiBallisticMissile:`Intercepts enemy missiles, can intercept 1 interplanetary missile each`,interplanetaryMissile:`Can attack defense structures on other planets`,planetaryShield:`Super shield protecting planet from destruction attacks`},research:{researchTime:`Research Time`,totalCost:`Total Cost`,totalPoints:`Total Points`,levelRange:`Level Range`,attackBonus:`Attack Bonus`,shieldBonus:`Shield Bonus`,armorBonus:`Armor Bonus`,spyLevel:`Spy Level`,researchQueueBonus:`Research Queue`,colonySlots:`Colony Slots`,forAllPlanets:`(Global)`,speedBonus:`Speed Bonus`,researchSpeedBonus:`Research Speed Bonus`},technologies:{energyTechnology:`Energy Technology`,laserTechnology:`Laser Technology`,ionTechnology:`Ion Technology`,hyperspaceTechnology:`Hyperspace Technology`,plasmaTechnology:`Plasma Technology`,computerTechnology:`Computer Technology`,espionageTechnology:`Espionage Technology`,weaponsTechnology:`Weapons Technology`,shieldingTechnology:`Shielding Technology`,armourTechnology:`Armour Technology`,astrophysics:`Astrophysics`,gravitonTechnology:`Graviton Technology`,combustionDrive:`Combustion Drive`,impulseDrive:`Impulse Drive`,hyperspaceDrive:`Hyperspace Drive`,darkMatterTechnology:`Dark Matter Technology`,terraformingTechnology:`Terraforming Technology`,planetDestructionTech:`Planet Destruction Technology`},technologyDescriptions:{energyTechnology:`Improves energy efficiency`,laserTechnology:`Foundation of laser weapons and defense`,ionTechnology:`Ion weapon technology`,hyperspaceTechnology:`Hyperspace jump technology`,plasmaTechnology:`Plasma weapon technology`,computerTechnology:`Increases research queue capacity, +1 per level (max 10 levels)`,espionageTechnology:`Improves spy probe effectiveness, +1 espionage level per level`,weaponsTechnology:`Increases ship and defense attack power by 10% per level`,shieldingTechnology:`Increases ship and defense shields by 10% per level`,armourTechnology:`Increases ship and defense armour by 10% per level`,astrophysics:`Each level adds 1 colony slot and increases expedition success rate`,gravitonTechnology:`Studies graviton manipulation, required for Death Star`,combustionDrive:`Basic propulsion technology`,impulseDrive:`Intermediate propulsion technology`,hyperspaceDrive:`Advanced propulsion technology`,darkMatterTechnology:`Research into dark matter properties and applications`,terraformingTechnology:`Research planet terraforming technology, adds 30 available space to all planets per level`,planetDestructionTech:`Terrifying technology for destroying entire planets`},officers:{commander:`Commander`,admiral:`Admiral`,engineer:`Engineer`,geologist:`Geologist`,technocrat:`Technocrat`,darkMatterSpecialist:`Dark Matter Specialist`,resourceBonus:`Resource Production Bonus`,darkMatterBonus:`Dark Matter Production Bonus`,energyBonus:`Energy Production Bonus`},officerDescriptions:{commander:`Improves building speed and management`,admiral:`Improves fleet combat and speed`,engineer:`Improves energy and defense`,geologist:`Improves resource production`,technocrat:`Improves research speed and espionage`,darkMatterSpecialist:`Improves dark matter collection efficiency`},queue:{buildQueueBonus:`Build Queue`,spaceBonus:`Space Bonus`,buildSpeedBonus:`Build Speed Bonus`,researchSpeedBonus:`Research Speed Bonus`,researchQueueBonus:`Research Queue`,building:`Building`,researching:`Researching`,remaining:`Remaining`,cancel:`Cancel`,cancelBuild:`Cancel Build`,cancelResearch:`Cancel Research`,confirmCancel:`Are you sure you want to cancel? 50% of resources will be refunded.`,level:`Level`,quantity:`Quantity`,upgradeToLevel:`Upgrade to Level`},overview:{title:`Planet Overview`,resourceOverview:`Resources`,fleetInfo:`Fleet`,currentShips:`Ships on this planet`,productionSources:`Production Sources`,productionSourcesDesc:`Detailed resource production and bonus information`,consumptionSources:`Consumption Sources`,consumptionSourcesDesc:`Energy consumption details for buildings`,totalProduction:`Total Production`,totalConsumption:`Total Consumption`,noConsumption:`No energy consumption`},buildingsView:{title:`Buildings`,usedSpace:`Used Space`,spaceUsage:`Space Usage`,level:`Level`,upgradeCost:`Upgrade Cost`,buildTime:`Build Time`,upgrade:`Upgrade`,maxLevelReached:`Max Level Reached`,requirementsNotMet:`Requirements Not Met`,upgradeFailed:`Upgrade Failed`,upgradeFailedMessage:`Please check if you have enough resources, space, or if there are other build tasks.`,demolish:`Demolish`,demolishRefund:`Demolish Refund`,demolishFailed:`Demolish Failed`,demolishFailedMessage:`Unable to demolish this building. Please check if the build queue is full or the building level is 0.`,confirmDemolish:`Confirm Demolish`,confirmDemolishMessage:`Are you sure you want to demolish`},researchView:{title:`Research`,researchCost:`Research Cost`,research:`Research`,maxLevelReached:`Max Level Reached`,researchFailed:`Research Failed`,researchFailedMessage:`Please check if you have enough resources, prerequisites are met, or if there are other research tasks.`},shipyard:{attack:`Attack`,missileAttack:`Missile Attack`,shield:`Shield`,armor:`Armor`,speed:`Speed`,cargoCapacity:`Cargo Capacity`,fuelConsumption:`Fuel Consumption`,buildCost:`Build Cost`,buildTime:`Build Time`,perUnit:`Per Unit`,batchCalculator:`Batch Calculator`,quantity:`Quantity`,totalCost:`Total Cost`,totalTime:`Total Time`},shipyardView:{title:`Shipyard`,fleetStorage:`Fleet Storage`,attack:`Attack`,missileAttack:`Missile Attack`,shield:`Shield`,speed:`Speed`,cargoCapacity:`Cargo Capacity`,unitCost:`Unit Cost`,buildQuantity:`Build Quantity`,totalCost:`Total Cost`,build:`Build`,inputError:`Input Error`,inputErrorMessage:`Please enter build quantity!`,buildFailed:`Build Failed`,buildFailedMessage:`Please check if you have enough resources or if prerequisites are met.`},defense:{attack:`Attack`,missileAttack:`Missile Attack`,shield:`Shield`,armor:`Armor`,buildCost:`Build Cost`,buildTime:`Build Time`,perUnit:`Per Unit`,batchCalculator:`Batch Calculator`,quantity:`Quantity`,totalCost:`Total Cost`,totalTime:`Total Time`},defenseView:{title:`Defense`,attack:`Attack`,missileAttack:`Missile Attack`,shield:`Shield`,armor:`Armor`,buildTime:`Build Time`,seconds:`s`,unitCost:`Unit Cost`,buildQuantity:`Build Quantity`,totalCost:`Total Cost`,build:`Build`,shieldDomeBuilt:`Shield dome already built`,missileCapacity:`Missile Capacity`,inputError:`Input Error`,inputErrorMessage:`Please enter build quantity!`,buildFailed:`Build Failed`,buildFailedMessage:`Please check if you have enough resources or if prerequisites are met. Shield domes can only be built once.`},fleetView:{title:`Fleet Management`,fleetOverview:`Fleet Overview`,sendFleet:`Send Fleet`,flightMissions:`Flight Missions`,currentPlanetFleet:`Current Planet Fleet`,attack:`Attack`,missileAttack:`Missile Attack`,shield:`Shield`,armor:`Armor`,speed:`Speed`,cargo:`Cargo`,selectFleet:`Select Fleet`,selectFleetDescription:`Select the number of ships to send`,available:`Available`,all:`All`,targetCoordinates:`Target Coordinates`,galaxy:`Galaxy`,system:`System`,position:`Position`,missionType:`Mission Type`,missionInfo:`Mission Info`,fuelConsumption:`Fuel Consumption`,flightTime:`Flight Time`,attackMission:`Attack`,transport:`Transport`,colonize:`Colonize`,spy:`Spy`,deploy:`Deploy`,recycle:`Recycle`,destroy:`Planet Destruction`,transportResources:`Transport Resources`,totalCargoCapacity:`Total Cargo Capacity`,used:`Used`,noFlightMissions:`No flight missions`,outbound:`Outbound`,returning:`Returning`,fleetComposition:`Fleet Composition`,carryingResources:`Carrying Resources`,arrivalTime:`Arrival Time`,returnTime:`Return Time`,recallFleet:`Recall Fleet`,sendFailed:`Send Failed`,sendFailedMessage:`Please check fleet count, fuel availability, or cargo capacity limits.`,recallFailed:`Recall Failed`,recallFailedMessage:`This mission cannot be recalled.`,unknownPlanet:`Unknown Planet`,fleetMissionSlots:`Fleet Mission Slots`,noShipsSelected:`No ships selected`,cannotSendToOwnPlanet:`Cannot send fleet to your own planet`,cargoExceedsCapacity:`Cargo exceeds capacity`,noColonyShip:`Colony ship required for colonization mission`,noDebrisAtTarget:`No debris field at target coordinates or debris field is empty`,noDeathstar:`Deathstar required for destruction mission`,giftMode:`Gift Mode`,giftModeDescription:`Send resources as a gift to`,estimatedReputationGain:`Estimated reputation gain`},officersView:{title:`Officers`,activated:`Activated`,inactive:`Inactive`,activeStatus:`Active Status`,expirationTime:`Expiration Time`,remainingTime:`Remaining Time`,recruitCost:`Recruitment Cost`,days:`days`,benefitsBonus:`Benefits Bonus`,resourceProduction:`Resource Production`,darkMatterProduction:`Dark Matter Production`,energyProduction:`Energy Production`,buildingSpeed:`Building Speed`,researchSpeed:`Research Speed`,fleetSpeed:`Fleet Speed`,fuelConsumption:`Fuel Consumption`,defense:`Defense`,storageCapacity:`Storage Capacity`,buildQueueBonus:`Build Queue`,spaceBonus:`Space Bonus`,buildSpeedBonus:`Build Speed Bonus`,researchSpeedBonus:`Research Speed Bonus`,fleetSlots:`Fleet Slots`,hire:`Hire`,renew:`Renew`,dismiss:`Dismiss`,hireTitle:`Hire Officer`,hireMessage:`Are you sure you want to hire {name}? Valid for 7 days.`,renewTitle:`Renew Officer`,renewMessage:`Are you sure you want to renew {name} for 7 days?`,dismissTitle:`Dismiss Officer`,dismissMessage:`Are you sure you want to dismiss {name}? No refunds will be given.`,hireFailed:`Hire Failed`,renewFailed:`Renew Failed`,insufficientResources:`Insufficient resources!`},galaxyView:{title:`Galaxy`,selectCoordinates:`Select Coordinates`,galaxy:`Galaxy`,selectGalaxy:`Select Galaxy`,system:`System`,selectSystem:`Select System`,view:`View`,myPlanet:`My Planet`,myPlanets:`View My Systems`,npcPlanets:`NPC Planets`,selectPlanetToView:`Select planet to view its system`,totalPositions:`10 planet positions total`,mine:`Mine`,hostile:`Hostile`,emptySlot:`Empty - Colonizable`,scout:`Scout`,attack:`Attack`,missileAttack:`Missile Attack`,colonize:`Colonize`,switch:`Switch`,recycle:`Recycle`,debrisField:`Debris Field`,scoutPlanetTitle:`Scout Planet`,attackPlanetTitle:`Attack Planet`,missileAttackTitle:`Missile Attack`,colonizePlanetTitle:`Colonize Planet`,recyclePlanetTitle:`Recycle Debris`,scoutPlanetMessage:`Are you sure you want to send espionage probes to scout planet [{coordinates}]? + +Please go to the fleet page to select ships and send.`,attackPlanetMessage:`Are you sure you want to attack planet [{coordinates}]? + +Please go to the fleet page to select ships and send.`,missileAttackMessage:`Launch interplanetary missiles to attack planet [{coordinates}]`,missileCount:`Missile Count`,availableMissiles:`Available Missiles`,missileRange:`Missile Range`,systems:`systems`,distance:`Distance`,flightTime:`Flight Time`,launchMissile:`Launch`,cancel:`Cancel`,colonizePlanetMessage:`Are you sure you want to colonize position [{coordinates}]? + +Please go to the fleet page to send a colony ship.`,recyclePlanetMessage:`Are you sure you want to recycle debris at position [{coordinates}]? + +Please go to the fleet page to send recycler ships.`,sendGift:`Send Gift`,debris:`Debris`,giftPlanetTitle:`Send Gift`,giftPlanetMessage:`Are you sure you want to send resources as a gift to planet [{coordinates}]? + +Please go to the fleet page to select transport ships and load resources.`},messagesView:{title:`Messages`,battles:`Battles`,spy:`Spy`,npc:`NPC`,battleReports:`Battle Reports`,spyReports:`Spy Reports`,noBattleReports:`No battle reports`,noSpyReports:`No spy reports`,battleReport:`Battle Report`,spyReport:`Spy Report`,victory:`Victory`,defeat:`Defeat`,draw:`Draw`,attackerFleet:`Attacker Fleet`,defenderFleet:`Defender Fleet`,defenderDefense:`Defender Defense`,attackerLosses:`Attacker Losses`,defenderLosses:`Defender Losses`,noLosses:`No losses`,plunder:`Plunder`,debrisField:`Debris Field`,resources:`Resources`,fleet:`Fleet`,defense:`Defense`,buildings:`Buildings`,unread:`Unread`,targetPlanet:`Target Planet`,spied:`Spied`,spiedNotification:`Spied Notification`,noSpiedNotifications:`No spied notifications`,detected:`Detected`,undetected:`Undetected`,missions:`Missions`,noMissionReports:`No mission reports`,success:`Success`,failed:`Failed`,npcActivity:`NPC Activity`,noNPCActivity:`No NPC activity notifications`,npcRecycleActivity:`NPC Recycling Debris`,gifts:`Gifts`,giftRejected:`Rejected`,noGiftNotifications:`No gift notifications`,noGiftRejected:`No rejected gifts`,giftFrom:`Gift from {npcName}`,giftRejectedBy:`{npcName} rejected the gift`,giftResources:`Gift resources`,rejectedResources:`Rejected resources`,expectedReputation:`Expected reputation`,currentReputation:`Current reputation`,acceptGift:`Accept`,rejectGift:`Reject`,rejectionReason:{hostile:`They are hostile towards you and do not accept gifts`,neutral_distrust:`They lack trust in you`,polite_decline:`They politely declined`}},missionReports:{transportSuccess:`Transport mission completed successfully`,transportFailed:`Transport mission failed`,colonizeSuccess:`Colonization mission successful, new planet established`,colonizeFailed:`Colonization mission failed`,deploySuccess:`Deployment mission completed successfully`,deployFailed:`Deployment mission failed`,recycleSuccess:`Recycling mission completed successfully`,recycleFailed:`Recycling mission failed, no debris at target location`,destroySuccess:`Planet destruction mission executed successfully`,destroyFailed:`Planet destruction mission failed`},simulatorView:{title:`Battle Simulator`,attacker:`Attacker`,defender:`Defender`,attackerConfig:`Attacker Configuration`,attackerConfigDesc:`Configure attacker fleet and technology levels`,defenderConfig:`Defender Configuration`,defenderConfigDesc:`Configure defender fleet, defense, and technology levels`,fleet:`Fleet`,defenseStructures:`Defense Structures`,techLevels:`Technology Levels`,weapon:`Weapon`,shield:`Shield`,armor:`Armor`,defenderResources:`Defender Resources (for plunder calculation)`,startSimulation:`Start Simulation`,reset:`Reset`,battleResult:`Battle Result`,attackerVictory:`Attacker Victory`,defenderVictory:`Defender Victory`,draw:`Draw`,afterRounds:`After {rounds} rounds`,attackerLosses:`Attacker Losses`,defenderLosses:`Defender Losses`,noLosses:`No losses`,attackerRemaining:`Attacker Remaining`,defenderRemaining:`Defender Remaining`,allDestroyed:`All destroyed`,plunderableResources:`Plunderable Resources`,debrisField:`Debris Field`,moonChance:`Moon chance`,showRoundDetails:`Show round details`,hideRoundDetails:`Hide round details`,round:`Round {round}`,attackerRemainingPower:`Attacker remaining power`,defenderRemainingPower:`Defender remaining power`,spied:`Spied`,spiedNotification:`Spied Notification`,noSpiedNotifications:`No spied notifications`,detected:`Detected`,undetected:`Undetected`},settings:{dataManagement:`Data Management`,dataManagementDesc:`Export, import, or clear game data`,exportData:`Export Data`,exportDataDesc:`Export game progress as JSON file`,export:`Export`,exporting:`Exporting...`,exportSuccess:`Export successful`,exportFailed:`Export failed, please try again`,importData:`Import Data`,importDataDesc:`Restore game progress from JSON file`,selectFile:`Select File`,importSuccess:`Import successful`,importConfirmTitle:`Confirm Import`,importConfirmMessage:`Importing will overwrite current game progress. This action cannot be undone. Continue?`,importFailed:`Import failed, please check file format`,clearData:`Clear Data`,clearDataDesc:`Delete all game data and reset`,clear:`Clear`,clearConfirmTitle:`Confirm Clear Data`,clearConfirmMessage:`This will delete all game data and start over. This action cannot be undone. Continue?`,gameSettings:`Game Settings`,gameSettingsDesc:`Adjust game parameters and preferences`,gamePause:`Game Pause`,gamePauseDesc:`Pause or resume game time and resource production`,pause:`Pause`,resume:`Resume`,gamePaused:`Game paused`,gameResumed:`Game resumed`,playerName:`Player Name`,gameSpeed:`Resource Production Speed`,gameSpeedDesc:`Current resource production speed multiplier`,speedChanged:`Resource production speed changed to {speed}x`,speedReset:`Resource production speed reset to 1x`,reset:`Reset`,about:`About`,version:`Version`,latestVersion:`Latest Version`,checkUpdate:`Check Update`,checking:`Checking...`,newVersionAvailable:`New version {version} available`,upToDate:`Already up to date`,checkUpdateCooldown:`Please try again later (5 minute cooldown)`,checkUpdateFailed:`Failed to check for updates, please check your network connection`,viewUpdate:`View Update`,updateAvailable:`A new version is available. Click to view release notes.`,download:`Download`,goToDownload:`Go to Download`,buildDate:`Build Date`,community:`Community`,github:`GitHub Repository`,qqGroup:`QQ Group`},gmView:{title:`GM Control Panel`,adminOnly:`Admin Only`,selectPlanet:`Select Planet`,choosePlanet:`Choose a planet`,resources:`Resources`,buildings:`Buildings`,research:`Research`,ships:`Ships`,defense:`Defense`,officers:`Officers`,modifyResources:`Modify Resources`,resourcesDesc:`Quickly modify planet resources`,modifyBuildings:`Modify Buildings`,buildingsDesc:`Quickly set building levels`,modifyResearch:`Modify Research`,researchDesc:`Quickly set research levels`,modifyShips:`Modify Ships`,shipsDesc:`Quickly set ship counts`,modifyDefense:`Modify Defense`,defenseDesc:`Quickly set defense counts`,modifyOfficers:`Modify Officers`,officersDesc:`Quickly set officer expiration time`,days:`d`,npcTesting:`NPC Testing`,npcTestingDesc:`Test NPC spy and attack behavior`,selectNPC:`Select NPC`,chooseNPC:`Choose an NPC`,targetPlanet:`Target Planet`,chooseTarget:`Choose target planet`,testSpy:`Test Spy`,testAttack:`Test Attack`,testSpyAndAttack:`Test Spy & Attack`,testSpyMessage:`Click confirm to accelerate the spy mission`,testAttackMessage:`Click confirm to accelerate the attack mission`,testSpyAndAttackMessage:`Click confirm to accelerate the missions`,initializeFleet:`Initialize NPC Fleet`,accelerateMissions:`Accelerate All Missions (5s)`,selectNPCFirst:`Please select an NPC first`,npcNoProbes:`NPC has no spy probes`,npcNoSpyReport:`NPC needs to spy first`,npcMissionFailed:`Failed to create mission`,npcNoPlanets:`NPC has no planets`,npcWillSpyIn5s:`{npcName} will spy in 5 seconds`,npcWillAttackIn5s:`{npcName} will attack in 5 seconds`,npcWillSpyAndAttack:`{npcName} will spy in 5s and attack in 10s`,acceleratedMissions:`Accelerated {count} missions to 5 seconds`,npcFleetInitialized:`{npcName} fleet initialized`,npcFleetDetails:`100 Spy Probes +500 Light Fighters +300 Heavy Fighters +200 Cruisers +100 Battleships +50 Bombers +30 Destroyers +20 Battlecruisers`,dangerZone:`Danger Zone`,dangerZoneDesc:`The following operations are irreversible`,resetGame:`Reset Game`,resetGameConfirm:`Are you sure you want to reset the game? This will delete all data!`},alerts:{npcSpyIncoming:`NPC Spy Probe Incoming`,npcAttackIncoming:`NPC Fleet Attack Incoming!`,npcFleetIncoming:`NPC Fleet Approaching`,ships:`ships`,spiedBy:`Spied By`,attackedBy:`Attacked By`,detectionSuccess:`Spy detected`,detectionFailed:`Spy not detected`,npcSpiedYourPlanet:`NPC spied your planet`,npcAttackedYourPlanet:`NPC attacked your planet`},diplomacy:{title:`Diplomacy`,description:`Manage diplomatic relations with NPCs`,tabs:{all:`All`,friendly:`Friendly`,neutral:`Neutral`,hostile:`Hostile`},noNpcs:`No NPCs`,noFriendlyNpcs:`No friendly NPCs`,noNeutralNpcs:`No neutral NPCs`,noHostileNpcs:`No hostile NPCs`,recentEvents:`Recent Events`,recentEventsDescription:`Recent diplomatic activity log`,ago:`ago`,status:{friendly:`Friendly`,neutral:`Neutral`,hostile:`Hostile`},planets:`planets`,allies:`allies`,reputation:`Reputation`,alliedWith:`Allied with`,more:`more`,actions:{gift:`Send Gift`,viewPlanets:`View Planets`},lastEvent:`Last Event`,events:{gift:`Sent Gift`,attack:`Attack`,missileAttack:`Missile Attack`,allyAttacked:`Ally Attacked`,spy:`Espionage`,stealDebris:`Debris Stolen`},reports:{giftedResources:`Gifted {metal}M {crystal}C {deuterium}D`,receivedGiftFromPlayer:`Received gift from player`,giftedToNpc:`You gifted resources to {npcName}. Reputation +{reputation}`,rejectedPlayerGift:`Rejected player's gift`,npcRejectedGift:`{npcName} rejected your gift. Reputation {reputation}`,attackedNpc:`Attacked {npcName}`,wasAttackedByPlayer:`Was attacked by player`,youAttackedNpc:`You attacked {npcName}`,playerAttackedAlly:`Player attacked ally {allyName}`,allyDispleased:`{allyName} is displeased that you attacked their ally {targetName}`,wasSpiedByPlayer:`Was spied by player (detected: {detected})`,spyDetected:`Your espionage was detected by {npcName}`,stoleDebrisFromTerritory:`Stole debris from {npcName}'s territory`,playerStoleDebris:`Player stole debris from territory`,recycledDebrisNearNpc:`You recycled debris near {npcName}'s planet. They are displeased.`,giftedResourcesToPlayer:`Gifted resources to player`,receivedGiftFromNpc:`Received gift from {npcName}`,acceptedGiftFromNpc:`You accepted a gift from {npcName}: {metal}M {crystal}C {deuterium}D`,playerRejectedGift:`Player rejected gift`,rejectedGiftFromNpc:`You rejected a gift from {npcName}. Reputation {reputation}`}},pagination:{previous:`Previous`,next:`Next`,first:`First`,last:`Last`,page:`Page {page}`},notFound:{title:`Page Not Found`,description:`Sorry, the page you are looking for does not exist`,goHome:`Go Home`}},r={common:{confirm:`Bestätigen`,cancel:`Abbrechen`,delete:`Löschen`,edit:`Bearbeiten`,save:`Speichern`,close:`Schließen`,back:`Zurück`,next:`Weiter`,previous:`Vorherige`,submit:`Absenden`,reset:`Zurücksetzen`,search:`Suchen`,filter:`Filtern`,loading:`Laden...`,noData:`Keine Daten`,error:`Fehler`,success:`Erfolg`,warning:`Warnung`,info:`Info`,resourceType:`Ressourcentyp`,playerName:`Kommandant`,timeHour:`Std`,timeMinute:`Min`,timeSecond:`Sek`,featureLocked:`Funktion gesperrt`,unlockRequired:`Gebäude erforderlich`,requiredBuilding:`Erforderliches Gebäude`,currentLevel:`Aktuelles Level`,goToBuildings:`Zu Gebäuden`,locked:`Gesperrt`,viewRequirements:`Anforderungen anzeigen`,requirementsNotMet:`Anforderungen nicht erfüllt`,current:`Aktuell`,level:`Stufe`,gmModeActivated:`GM-Modus aktiviert! Überprüfen Sie das Navigationsmenü.`},errors:{requirementsNotMet:`Anforderungen nicht erfüllt`,insufficientResources:`Unzureichende Ressourcen`,insufficientFleetStorage:`Unzureichender Flottenspeicher`,shieldDomeLimit:`Schildkuppel-Limit erreicht`,missileSiloLimit:`Raketensilokapazität überschritten`,insufficientMissiles:`Unzureichende Interkontinentalraketen`,invalidMissileCount:`Ungültige Raketenanzahl`,targetOutOfRange:`Ziel außer Reichweite`,cannotAttackOwnPlanet:`Eigenen Planeten kann nicht angegriffen werden`,fleetMissionsFull:`Flottenmissionsplätze voll`,insufficientFleet:`Unzureichende Flotte`,insufficientFuel:`Unzureichender Treibstoff`,planetOnly:`Dieses Gebäude kann nur auf Planeten gebaut werden`,moonOnly:`Dieses Gebäude kann nur auf Monden gebaut werden`,buildQueueFull:`Bauauftrag voll`,insufficientSpace:`Unzureichender Platz`,buildingLevelZero:`Gebäudelevel ist 0, kann nicht abgerissen werden`,researchQueueFull:`Forschungsauftrag voll`,moonExists:`Mond existiert bereits`,insufficientDebris:`Unzureichendes Trümmerfeld`},nav:{overview:`Übersicht`,buildings:`Gebäude`,research:`Forschung`,shipyard:`Raumschiffwerft`,defense:`Verteidigung`,fleet:`Flotte`,officers:`Offiziere`,simulator:`Simulator`,galaxy:`Galaxie`,diplomacy:`Diplomacy`,messages:`Nachrichten`,settings:`Einstellungen`,gm:`GM`},sidebar:{language:`Sprache`,lightMode:`Heller Modus`,darkMode:`Dunkler Modus`,collapse:`Einklappen`,expand:`Ausklappen`},resources:{metal:`Metall`,crystal:`Kristall`,deuterium:`Deuterium`,darkMatter:`Dunkle Materie`,energy:`Energie`,production:`Produktion`,consumption:`Verbrauch`,capacity:`Kapazität`,current:`Aktuell`,max:`Max. Kapazität`,perHour:`Stunde`,perMinute:`Min`,hour:`Stunde`,noEnergy:`Keine Energie`},planet:{planet:`Planet`,moon:`Mond`,colony:`Kolonie`,position:`Position`,coordinates:`Koordinaten`,switchToMoon:`Zum Mond`,backToPlanet:`Zurück zum Planeten`,switchPlanet:`Planet wechseln`,currentPlanet:`Aktueller Planet`,fields:`Felder`,temperature:`Temperatur`,homePlanet:`Heimatplanet`,planetPrefix:`Planet`,moonSuffix:`s Mond`,colonyPrefix:`Kolonie`},player:{points:`Gesamtpunkte`},buildings:{metalMine:`Metallmine`,crystalMine:`Kristallmine`,deuteriumSynthesizer:`Deuterium-Synthesizer`,solarPlant:`Solarkraftwerk`,fusionReactor:`Fusionsreaktor`,roboticsFactory:`Roboterfabrik`,naniteFactory:`Nanitenfabrik`,shipyard:`Raumschiffwerft`,researchLab:`Forschungslabor`,metalStorage:`Metallspeicher`,crystalStorage:`Kristallspeicher`,deuteriumTank:`Deuteriumtank`,darkMatterCollector:`Dunkle-Materie-Kollektor`,darkMatterTank:`Dunkle-Materie-Tank`,missileSilo:`Raketensilo`,terraformer:`Terraformer`,lunarBase:`Mondbasis`,sensorPhalanx:`Sensorphalanx`,jumpGate:`Sprungtor`,planetDestroyerFactory:`Planetenzerstörer-Fabrik`,buildTime:`Bauzeit`,production:`Produktion`,consumption:`Verbrauch`,totalCost:`Gesamtkosten`,totalPoints:`Gesamtpunkte`,levelRange:`Stufenbereich`,capacity:`Capacity/Effect`,storageCapacity:`Capacity`,energyProduction:`Energy Production`,fleetStorage:`Fleet Storage`,buildQueue:`Build Queue`,buildQueueBonus:`Bauauftrag`,spaceBonus:`Raumbonus`,buildSpeedBonus:`Baugeschwindigkeitsbonus`,researchSpeedBonus:`Forschungsgeschwindigkeitsbonus`,planetSpace:`Planet Space`,moonSpace:`Moon Space`,missileCapacity:`Missile Capacity`},buildingDescriptions:{metalMine:`Fördert Metallressourcen`,crystalMine:`Fördert Kristallressourcen`,deuteriumSynthesizer:`Synthesiert Deuteriumressourcen`,solarPlant:`Liefert Energie`,fusionReactor:`Nutzt Deuterium zur Erzeugung großer Energiemengen`,roboticsFactory:`Beschleunigt Baugeschwindigkeit`,naniteFactory:`Erhöht Bauauftragskapazität, +1 pro Stufe (max 10 Stufen)`,shipyard:`Baut Schiffe`,researchLab:`Erforscht Technologien`,metalStorage:`Erhöht Metallspeicherkapazität`,crystalStorage:`Erhöht Kristallspeicherkapazität`,deuteriumTank:`Erhöht Deuteriumspeicherkapazität`,darkMatterCollector:`Sammelt seltene Dunkle-Materie-Ressourcen`,darkMatterTank:`Erhöht Dunkle-Materie-Speicherkapazität`,missileSilo:`Lagert und startet Raketen, 10 Raketen pro Stufe`,terraformer:`Terraformt Planetenoberfläche, erhöht verfügbaren Platz um 30 pro Stufe`,lunarBase:`Erhöht verfügbaren Platz auf dem Mond, +30 Platz pro Stufe`,sensorPhalanx:`Erkennt Flottenaktivitäten in umliegenden Systemen`,jumpGate:`Überträgt Flotten sofort zu anderen Monden`,planetDestroyerFactory:`Konstruiert ultimative Waffen zur Zerstörung von Planeten`},ships:{lightFighter:`Leichter Jäger`,heavyFighter:`Schwerer Jäger`,cruiser:`Kreuzer`,battleship:`Schlachtschiff`,battlecruiser:`Schlachtkreuzer`,bomber:`Bomber`,destroyer:`Zerstörer`,smallCargo:`Kleiner Transporter`,largeCargo:`Großer Transporter`,colonyShip:`Kolonieschiff`,recycler:`Recycler`,espionageProbe:`Spionagesonde`,solarSatellite:`Solarsatellit`,darkMatterHarvester:`Dunkle-Materie-Ernter`,deathstar:`Todesstern`},shipDescriptions:{lightFighter:`Grundlegende Kampfeinheit`,heavyFighter:`Schwer gepanzerter Jäger`,cruiser:`Mittleres Kriegsschiff, ausgewogene Offensive und Defensive`,battleship:`Mächtiges Kriegsschiff`,battlecruiser:`Schnelles mächtiges Kriegsschiff, hervorragend gegen Schlachtschiffe`,bomber:`Spezialisiertes Schiff zum Angriff auf Verteidigungsanlagen`,destroyer:`Jäger spezialisiert auf Zerstörung großer Schiffe`,smallCargo:`Transportiert kleine Mengen Ressourcen`,largeCargo:`Transportiert große Mengen Ressourcen`,colonyShip:`Zur Kolonisierung neuer Planeten`,recycler:`Sammelt Trümmerfeld-Ressourcen`,espionageProbe:`Späht feindliche Planeten aus`,solarSatellite:`Liefert zusätzliche Energie, erzeugt 50 Energie pro Satellit`,darkMatterHarvester:`Spezielles Schiff zum Ernten von Dunkler Materie`,deathstar:`Ultimative Waffe, die ganze Planeten zerstören kann`},defenses:{rocketLauncher:`Raketenwerfer`,lightLaser:`Leichtes Lasergeschütz`,heavyLaser:`Schweres Lasergeschütz`,gaussCannon:`Gaußkanone`,ionCannon:`Ionengeschütz`,plasmaTurret:`Plasmawerfer`,smallShieldDome:`Kleine Schildkuppel`,largeShieldDome:`Große Schildkuppel`,antiBallisticMissile:`Abfangrakete`,interplanetaryMissile:`Interkontinentalrakete`,planetaryShield:`Planetarschild`},defenseDescriptions:{rocketLauncher:`Grundlegende Verteidigungsanlage`,lightLaser:`Leichte Energiewaffe`,heavyLaser:`Schwere Energiewaffe`,gaussCannon:`Hochgeschwindigkeits-Kinetikwaffe`,ionCannon:`Effektiv gegen Schilde`,plasmaTurret:`Mächtige Verteidigungsanlage`,smallShieldDome:`Kleiner Schild zum Schutz des gesamten Planeten`,largeShieldDome:`Großer Schild zum Schutz des gesamten Planeten`,antiBallisticMissile:`Fängt feindliche Raketen ab, kann 1 Interkontinentalrakete abfangen`,interplanetaryMissile:`Kann Verteidigungsanlagen auf anderen Planeten angreifen`,planetaryShield:`Superschild zum Schutz des Planeten vor Vernichtungsangriffen`},research:{researchTime:`Forschungszeit`,totalCost:`Gesamtkosten`,totalPoints:`Gesamtpunkte`,levelRange:`Stufenbereich`,capacity:`Capacity/Effect`,storageCapacity:`Capacity`,energyProduction:`Energy Production`,fleetStorage:`Fleet Storage`,buildQueue:`Build Queue`,planetSpace:`Planet Space`,moonSpace:`Moon Space`,missileCapacity:`Missile Capacity`},technologies:{energyTechnology:`Energietechnik`,laserTechnology:`Lasertechnik`,ionTechnology:`Ionentechnik`,hyperspaceTechnology:`Hyperraumtechnik`,plasmaTechnology:`Plasmatechnik`,computerTechnology:`Computertechnologie`,espionageTechnology:`Spionagetechnik`,weaponsTechnology:`Waffentechnik`,shieldingTechnology:`Schildtechnik`,armourTechnology:`Panzerung`,astrophysics:`Astrophysik`,gravitonTechnology:`Gravitontechnik`,combustionDrive:`Verbrennungsantrieb`,impulseDrive:`Impulsantrieb`,hyperspaceDrive:`Hyperraumantrieb`,darkMatterTechnology:`Dunkle-Materie-Technologie`,terraformingTechnology:`Terraforming-Technologie`,planetDestructionTech:`Planetenzerstörungstechnologie`},technologyDescriptions:{energyTechnology:`Verbessert Energieeffizienz`,laserTechnology:`Grundlage für Laserwaffen und -verteidigung`,ionTechnology:`Ionenwaffentechnologie`,hyperspaceTechnology:`Hyperraumsprung-Technologie`,plasmaTechnology:`Plasmawaffentechnologie`,computerTechnology:`Erhöht Forschungsauftragskapazität, +1 pro Stufe (max 10 Stufen)`,espionageTechnology:`Verbessert Sondenwirksamkeit, +1 Spionagestufe pro Stufe`,weaponsTechnology:`Erhöht Angriffskraft von Schiffen und Verteidigung um 10% pro Stufe`,shieldingTechnology:`Erhöht Schilde von Schiffen und Verteidigung um 10% pro Stufe`,armourTechnology:`Erhöht Panzerung von Schiffen und Verteidigung um 10% pro Stufe`,astrophysics:`Jede Stufe fügt 1 Kolonieslot hinzu und erhöht Expeditionserfolgsrate`,gravitonTechnology:`Erforscht Gravitonmanipulation, erforderlich für Todesstern`,combustionDrive:`Grundlegende Antriebstechnologie`,impulseDrive:`Mittlere Antriebstechnologie`,hyperspaceDrive:`Fortgeschrittene Antriebstechnologie`,darkMatterTechnology:`Forschung zu Eigenschaften und Anwendungen von Dunkler Materie`,terraformingTechnology:`Forschung zur Planeten-Terraforming-Technologie, erhöht verfügbaren Platz aller Planeten um 30 pro Stufe`,planetDestructionTech:`Schreckliche Technologie zur Zerstörung ganzer Planeten`},officers:{commander:`Kommandant`,admiral:`Admiral`,engineer:`Ingenieur`,geologist:`Geologe`,technocrat:`Technokrat`,darkMatterSpecialist:`Dunkle-Materie-Spezialist`,resourceBonus:`Ressourcenproduktionsbonus`,darkMatterBonus:`Dunkle-Materie-Produktionsbonus`,energyBonus:`Energieproduktionsbonus`},officerDescriptions:{commander:`Verbessert Baugeschwindigkeit und Management`,admiral:`Verbessert Flottenkampf und Geschwindigkeit`,engineer:`Verbessert Energie und Verteidigung`,geologist:`Verbessert Ressourcenproduktion`,technocrat:`Verbessert Forschungsgeschwindigkeit und Spionage`,darkMatterSpecialist:`Verbessert Dunkle-Materie-Sammlungseffizienz`},queue:{buildQueue:`Bauauftrag`,researchQueue:`Forschungsauftrag`,building:`Im Bau`,researching:`In Forschung`,remaining:`Verbleibend`,cancel:`Abbrechen`,cancelBuild:`Bau abbrechen`,cancelResearch:`Forschung abbrechen`,confirmCancel:`Möchten Sie wirklich abbrechen? 50% der Ressourcen werden zurückerstattet.`,level:`Stufe`,gmModeActivated:``,upgradeToLevel:`Auf Stufe aufrüsten`},overview:{title:`Planetenübersicht`,resourceOverview:`Ressourcen`,fleetInfo:`Flotte`,currentShips:`Schiffe auf diesem Planeten`,productionSources:`Produktionsquellen`,productionSourcesDesc:`Detaillierte Ressourcenproduktion und Bonusinformationen`,consumptionSources:`Verbrauchsquellen`,consumptionSourcesDesc:`Energieverbrauchsdetails für Gebäude`,totalProduction:`Gesamtproduktion`,totalConsumption:`Gesamtverbrauch`,noConsumption:`Kein Energieverbrauch`},buildingsView:{title:`Gebäude`,usedSpace:`Verwendeter Platz`,spaceUsage:`Platzbedarf`,level:`Stufe`,gmModeActivated:``,upgradeCost:`Ausbaukosten`,buildTime:`Bauzeit`,upgrade:`Ausbauen`,maxLevelReached:`Maximale Stufe erreicht`,requirementsNotMet:`Anforderungen nicht erfüllt`,upgradeFailed:`Ausbau fehlgeschlagen`,upgradeFailedMessage:`Bitte überprüfen Sie, ob Sie genügend Ressourcen, Platz oder keine anderen Bauaufträge haben.`,demolish:`Abreißen`,demolishRefund:`Abriss-Rückerstattung`,demolishFailed:`Abriss fehlgeschlagen`,demolishFailedMessage:`Abriss nicht möglich. Bitte überprüfen Sie, ob die Bauqueue voll ist oder die Gebäudestufe 0 ist.`,confirmDemolish:``,confirmDemolishMessage:``},researchView:{title:`Forschung`,researchCost:`Forschungskosten`,research:`Forschen`,maxLevelReached:`Maximale Stufe erreicht`,researchFailed:`Forschung fehlgeschlagen`,researchFailedMessage:`Bitte überprüfen Sie, ob Sie genügend Ressourcen haben, die Voraussetzungen erfüllt sind oder keine anderen Forschungsaufträge vorhanden sind.`},shipyard:{attack:`Angriff`,missileAttack:`Raketenangriff`,shield:`Schild`,armor:`Panzerung`,speed:`Geschwindigkeit`,cargoCapacity:`Ladekapazität`,fuelConsumption:`Treibstoffverbrauch`,buildCost:`Baukosten`,buildTime:`Bauzeit`,perUnit:`Pro Einheit`,batchCalculator:`Batch-Rechner`,quantity:`Menge`,totalCost:`Gesamtkosten`,totalTime:`Gesamtzeit`},shipyardView:{title:`Raumschiffwerft`,fleetStorage:`Flottenspeicher`,attack:`Angriff`,missileAttack:`Raketenangriff`,shield:`Schild`,speed:`Geschwindigkeit`,cargoCapacity:`Ladekapazität`,unitCost:`Stückkosten`,buildQuantity:`Baumenge`,totalCost:`Gesamtkosten`,build:`Bauen`,inputError:`Eingabefehler`,inputErrorMessage:`Bitte Baumenge eingeben!`,buildFailed:`Bau fehlgeschlagen`,buildFailedMessage:`Bitte überprüfen Sie, ob Sie genügend Ressourcen haben oder die Voraussetzungen erfüllt sind.`},defense:{attack:`Angriff`,missileAttack:`Raketenangriff`,shield:`Schild`,armor:`Panzerung`,buildCost:`Baukosten`,buildTime:`Bauzeit`,perUnit:`Pro Einheit`,batchCalculator:`Batch-Rechner`,quantity:`Menge`,totalCost:`Gesamtkosten`,totalTime:`Gesamtzeit`},defenseView:{title:`Verteidigung`,attack:`Angriff`,missileAttack:`Raketenangriff`,shield:`Schild`,armor:`Panzerung`,buildTime:`Bauzeit`,seconds:`s`,unitCost:`Stückkosten`,buildQuantity:`Baumenge`,totalCost:`Gesamtkosten`,build:`Bauen`,shieldDomeBuilt:`Schildkuppel bereits gebaut`,missileCapacity:`Raketenkapazität`,inputError:`Eingabefehler`,inputErrorMessage:`Bitte Baumenge eingeben!`,buildFailed:`Bau fehlgeschlagen`,buildFailedMessage:`Bitte überprüfen Sie, ob Sie genügend Ressourcen haben oder die Voraussetzungen erfüllt sind. Schildkuppeln können nur einmal gebaut werden.`},fleetView:{title:`Flottenverwaltung`,fleetOverview:`Flottenübersicht`,sendFleet:`Flotte senden`,flightMissions:`Flugmissionen`,currentPlanetFleet:`Flotte auf diesem Planeten`,attack:`Angriff`,missileAttack:`Raketenangriff`,shield:`Schild`,armor:`Panzerung`,speed:`Geschwindigkeit`,cargo:`Fracht`,selectFleet:`Flotte auswählen`,selectFleetDescription:`Wählen Sie die Anzahl der zu sendenden Schiffe`,available:`Verfügbar`,all:`Alle`,targetCoordinates:`Zielkoordinaten`,galaxy:`Galaxie`,diplomacy:`Diplomacy`,system:`System`,position:`Position`,missionType:`Missionstyp`,missionInfo:`Missionsinfo`,fuelConsumption:`Treibstoffverbrauch`,flightTime:`Flugzeit`,attackMission:`Angriff`,transport:`Transport`,colonize:`Kolonisieren`,spy:`Spionage`,deploy:`Stationieren`,recycle:`Recyceln`,transportResources:`Ressourcen transportieren`,totalCargoCapacity:`Gesamtladekapazität`,used:`Verwendet`,noFlightMissions:`Keine Flugmissionen`,outbound:`Hinflug`,returning:`Rückflug`,fleetComposition:`Flottenzusammensetzung`,carryingResources:`Transportierte Ressourcen`,arrivalTime:`Ankunftszeit`,returnTime:`Rückkehrzeit`,recallFleet:`Flotte zurückrufen`,sendFailed:`Senden fehlgeschlagen`,sendFailedMessage:`Bitte überprüfen Sie Flottenanzahl, Treibstoffverfügbarkeit oder Ladekapazitätsgrenzen.`,recallFailed:`Zurückrufen fehlgeschlagen`,recallFailedMessage:`Diese Mission kann nicht zurückgerufen werden.`,unknownPlanet:`Unbekannter Planet`,fleetMissionSlots:`Flottenmissionsplätze`,noShipsSelected:`Keine Schiffe ausgewählt`,cannotSendToOwnPlanet:`Flotte kann nicht zu eigenem Planeten gesendet werden`,cargoExceedsCapacity:`Fracht überschreitet Kapazität`,noColonyShip:`Kolonieschiff für Kolonisierungsmission erforderlich`,noDebrisAtTarget:`Kein Trümmerfeld an Zielkoordinaten oder Trümmerfeld ist leer`,noDeathstar:`Todesstern für Zerstörungsmission erforderlich`,giftMode:`Geschenkmodus`,giftModeDescription:`Ressourcen als Geschenk senden an`,estimatedReputationGain:`Geschätzter Reputationsgewinn`},officersView:{title:`Offiziere`,activated:`Aktiviert`,inactive:`Inaktiv`,activeStatus:`Aktivierungsstatus`,expirationTime:`Ablaufzeit`,remainingTime:`Verbleibende Zeit`,recruitCost:`Rekrutierungskosten`,days:`Tage`,benefitsBonus:`Vorteile`,resourceProduction:`Ressourcenproduktion`,darkMatterProduction:`Dunkle-Materie-Produktion`,energyProduction:`Energieproduktion`,buildingSpeed:`Baugeschwindigkeit`,researchSpeed:`Forschungsgeschwindigkeit`,fleetSpeed:`Flottengeschwindigkeit`,fuelConsumption:`Treibstoffverbrauch`,defense:`Verteidigung`,storageCapacity:`Lagerkapazität`,buildQueue:`Bauauftrag`,fleetSlots:`Flottenslots`,hire:`Rekrutieren`,renew:`Verlängern`,dismiss:`Entlassen`,hireTitle:`Offizier rekrutieren`,hireMessage:`Möchten Sie wirklich {name} rekrutieren? Gültig für 7 Tage.`,renewTitle:`Offizier verlängern`,renewMessage:`Möchten Sie wirklich {name} für 7 Tage verlängern?`,dismissTitle:`Offizier entlassen`,dismissMessage:`Möchten Sie wirklich {name} entlassen? Es werden keine Kosten zurückerstattet.`,hireFailed:`Rekrutierung fehlgeschlagen`,renewFailed:`Verlängerung fehlgeschlagen`,insufficientResources:`Nicht genug Ressourcen!`},galaxyView:{title:`Galaxie`,selectCoordinates:`Koordinaten auswählen`,galaxy:`Galaxie`,diplomacy:`Diplomacy`,selectGalaxy:`Galaxie auswählen`,system:`System`,selectSystem:`System auswählen`,view:`Anzeigen`,myPlanet:`Mein Planet`,myPlanets:`Meine Systeme ansehen`,npcPlanets:`NPC-Planeten`,selectPlanetToView:`Planet auswählen, um sein System anzuzeigen`,totalPositions:`Insgesamt 10 Planetenpositionen`,mine:`Mein`,hostile:`Feindlich`,emptySlot:`Leer - Kolonisierbar`,scout:`Spähen`,attack:`Angriff`,missileAttack:`Raketenangriff`,colonize:`Kolonisieren`,switch:`Wechseln`,recycle:`Recyceln`,debrisField:`Trümmerfeld`,scoutPlanetTitle:`Planet ausspionieren`,attackPlanetTitle:`Planet angreifen`,missileAttackTitle:`Raketenangriff`,colonizePlanetTitle:`Planet kolonisieren`,recyclePlanetTitle:`Trümmer recyceln`,scoutPlanetMessage:`Möchten Sie wirklich Spionagesonden senden, um Planet [{coordinates}] auszuspionieren? + +Bitte gehen Sie zur Flottenseite, um Schiffe auszuwählen und zu senden.`,attackPlanetMessage:`Möchten Sie wirklich Planet [{coordinates}] angreifen? + +Bitte gehen Sie zur Flottenseite, um Schiffe auszuwählen und zu senden.`,missileAttackMessage:`Interkontinentalraketen starten, um Planet [{coordinates}] anzugreifen`,missileCount:`Raketenanzahl`,availableMissiles:`Verfügbare Raketen`,missileRange:`Raketenreichweite`,systems:`Systeme`,distance:`Entfernung`,flightTime:`Flugzeit`,launchMissile:`Starten`,cancel:`Abbrechen`,colonizePlanetMessage:`Möchten Sie wirklich Position [{coordinates}] kolonisieren? + +Bitte gehen Sie zur Flottenseite, um ein Kolonieschiff zu senden.`,recyclePlanetMessage:`Möchten Sie wirklich Trümmer bei Position [{coordinates}] recyceln? + +Bitte gehen Sie zur Flottenseite, um Recycler zu senden.`,sendGift:`Geschenk senden`,debris:`Trümmer`,giftPlanetTitle:`Geschenk senden`,giftPlanetMessage:`Möchten Sie wirklich Ressourcen als Geschenk an Planet [{coordinates}] senden? + +Bitte gehen Sie zur Flottenseite, um Transporter auszuwählen und Ressourcen zu laden.`},messagesView:{title:`Nachrichten`,battles:`Kämpfe`,spy:`Spionage`,npc:`NPC`,spied:`Ausspioniert`,battleReports:`Kampfberichte`,spyReports:`Spionageberichte`,noBattleReports:`Keine Kampfberichte`,noSpyReports:`Keine Spionageberichte`,noSpiedNotifications:`Keine Ausspionierungs-Benachrichtigungen`,battleReport:`Kampfbericht`,spyReport:`Spionagebericht`,spiedNotification:`Ausspionierungs-Benachrichtigung`,victory:`Sieg`,defeat:`Niederlage`,draw:`Unentschieden`,detected:`Entdeckt`,undetected:`Unentdeckt`,attackerFleet:`Angreiferflotte`,defenderFleet:`Verteidigerflotte`,defenderDefense:`Verteidigerverteidigung`,attackerLosses:`Angreiferverluste`,defenderLosses:`Verteidigerverluste`,noLosses:`Keine Verluste`,plunder:`Beute`,debrisField:`Trümmerfeld`,resources:`Ressourcen`,fleet:`Flotte`,defense:`Verteidigung`,buildings:`Gebäude`,unread:`Ungelesen`,targetPlanet:`Zielplanet`,attackerRemaining:`Angreifer verblieben`,defenderRemaining:`Verteidiger verblieben`,moonChance:`Mondchance`,showRoundDetails:`Rundendetails anzeigen`,hideRoundDetails:`Rundendetails ausblenden`,round:`Runde {round}`,attackerRemainingPower:`Verbleibende Angreiferkraft`,defenderRemainingPower:`Verbleibende Verteidigerkraft`,missions:`Missionen`,noMissionReports:`Keine Missionsberichte`,success:`Erfolg`,failed:`Fehlgeschlagen`,npcActivity:`NPC-Aktivität`,noNPCActivity:`Keine NPC-Aktivitätsbenachrichtigungen`,npcRecycleActivity:`NPC recycelt Trümmer`,gifts:`Geschenke`,giftRejected:`Abgelehnt`,noGiftNotifications:`Keine Geschenkbenachrichtigungen`,noGiftRejected:`Keine abgelehnten Geschenke`,giftFrom:`Geschenk von {npcName}`,giftRejectedBy:`{npcName} hat das Geschenk abgelehnt`,giftResources:`Geschenk-Ressourcen`,rejectedResources:`Abgelehnte Ressourcen`,expectedReputation:`Erwarteter Ruf`,currentReputation:`Aktueller Ruf`,acceptGift:`Annehmen`,rejectGift:`Ablehnen`,rejectionReason:{hostile:`Sie sind feindlich und nehmen keine Geschenke an`,neutral_distrust:`Sie vertrauen Ihnen nicht`,polite_decline:`Sie lehnten höflich ab`}},missionReports:{transportSuccess:`Transportmission erfolgreich abgeschlossen`,transportFailed:`Transportmission fehlgeschlagen`,colonizeSuccess:`Kolonisierungsmission erfolgreich, neuer Planet gegründet`,colonizeFailed:`Kolonisierungsmission fehlgeschlagen`,deploySuccess:`Einsatzmission erfolgreich abgeschlossen`,deployFailed:`Einsatzmission fehlgeschlagen`,recycleSuccess:`Recyclingmission erfolgreich abgeschlossen`,recycleFailed:`Recyclingmission fehlgeschlagen, keine Trümmer am Zielort`,destroySuccess:`Planetenzerstörungsmission erfolgreich ausgeführt`,destroyFailed:`Planetenzerstörungsmission fehlgeschlagen`},simulatorView:{title:`Kampfsimulator`,attacker:`Angreifer`,defender:`Verteidiger`,attackerConfig:`Angreiferkonfiguration`,attackerConfigDesc:`Angreiferflotte und Technologiestufen konfigurieren`,defenderConfig:`Verteidigerkonfiguration`,defenderConfigDesc:`Verteidigerflotte, Verteidigung und Technologiestufen konfigurieren`,fleet:`Flotte`,defenseStructures:`Verteidigungsanlagen`,techLevels:`Technologiestufen`,weapon:`Waffe`,shield:`Schild`,armor:`Panzerung`,defenderResources:`Verteidigerressourcen (für Beuteberechnung)`,startSimulation:`Simulation starten`,reset:`Zurücksetzen`,battleResult:`Kampfergebnis`,attackerVictory:`Angreifer Sieg`,defenderVictory:`Verteidiger Sieg`,draw:`Unentschieden`,afterRounds:`Nach {rounds} Runden`,attackerLosses:`Angreiferverluste`,defenderLosses:`Verteidigerverluste`,noLosses:`Keine Verluste`,attackerRemaining:`Angreifer verblieben`,defenderRemaining:`Verteidiger verblieben`,allDestroyed:`Alle zerstört`,plunderableResources:`Erbeutbare Ressourcen`,debrisField:`Trümmerfeld`,moonChance:`Mondchance`,showRoundDetails:`Rundendetails anzeigen`,hideRoundDetails:`Rundendetails ausblenden`,round:`Runde {round}`,attackerRemainingPower:`Verbleibende Angreiferkraft`,defenderRemainingPower:`Verbleibende Verteidigerkraft`},settings:{dataManagement:`Datenverwaltung`,dataManagementDesc:`Spieldaten exportieren, importieren oder löschen`,exportData:`Daten exportieren`,exportDataDesc:`Spielfortschritt als JSON-Datei exportieren`,export:`Exportieren`,exporting:`Exportieren...`,exportSuccess:`Export erfolgreich`,exportFailed:`Export fehlgeschlagen, bitte erneut versuchen`,importData:`Daten importieren`,importDataDesc:`Spielfortschritt aus JSON-Datei wiederherstellen`,selectFile:`Datei auswählen`,importSuccess:`Import erfolgreich`,importConfirmTitle:`Import bestätigen`,importConfirmMessage:`Beim Importieren wird der aktuelle Spielfortschritt überschrieben. Diese Aktion kann nicht rückgängig gemacht werden. Fortfahren?`,importFailed:`Import fehlgeschlagen, bitte Dateiformat überprüfen`,clearData:`Daten löschen`,clearDataDesc:`Alle Spieldaten löschen und zurücksetzen`,clear:`Löschen`,clearConfirmTitle:`Löschen bestätigen`,clearConfirmMessage:`Alle Spieldaten werden gelöscht und von vorne begonnen. Diese Aktion kann nicht rückgängig gemacht werden. Fortfahren?`,gameSettings:`Spieleinstellungen`,gameSettingsDesc:`Spielparameter und Einstellungen anpassen`,gamePause:`Spielpause`,gamePauseDesc:`Spielzeit und Ressourcenproduktion pausieren oder fortsetzen`,pause:`Pausieren`,resume:`Fortsetzen`,gamePaused:`Spiel pausiert`,gameResumed:`Spiel fortgesetzt`,playerName:`Spielername`,gameSpeed:`Ressourcenproduktionsgeschwindigkeit`,gameSpeedDesc:`Aktueller Ressourcenproduktionsgeschwindigkeitsmultiplikator`,speedChanged:`Ressourcenproduktionsgeschwindigkeit auf {speed}x geändert`,speedReset:`Ressourcenproduktionsgeschwindigkeit auf 1x zurückgesetzt`,reset:`Zurücksetzen`,about:`Über`,version:`Version`,latestVersion:`Neueste Version`,checkUpdate:`Update prüfen`,checking:`Prüfen...`,newVersionAvailable:`Neue Version {version} verfügbar`,upToDate:`Bereits auf dem neuesten Stand`,checkUpdateCooldown:`Bitte versuchen Sie es später erneut (5 Minuten Abklingzeit)`,checkUpdateFailed:`Update-Prüfung fehlgeschlagen, bitte überprüfen Sie Ihre Netzwerkverbindung`,viewUpdate:`Update ansehen`,updateAvailable:`Eine neue Version ist verfügbar. Klicken Sie, um die Versionshinweise anzuzeigen.`,download:`Herunterladen`,goToDownload:`Zum Download`,buildDate:`Build-Datum`,community:`Community`,github:`GitHub-Repository`,qqGroup:`QQ-Gruppe`},gmView:{title:`GM-Kontrollpanel`,adminOnly:`Nur Admin`,selectPlanet:`Planet auswählen`,choosePlanet:`Einen Planeten auswählen`,resources:`Ressourcen`,buildings:`Gebäude`,research:`Forschung`,ships:`Schiffe`,defense:`Verteidigung`,officers:`Offiziere`,modifyResources:`Ressourcen ändern`,resourcesDesc:`Planetenressourcen schnell ändern`,modifyBuildings:`Gebäude ändern`,buildingsDesc:`Gebäudelevel schnell festlegen`,modifyResearch:`Forschung ändern`,researchDesc:`Forschungslevel schnell festlegen`,modifyShips:`Schiffe ändern`,shipsDesc:`Schiffsanzahl schnell festlegen`,modifyDefense:`Verteidigung ändern`,defenseDesc:`Verteidigungsanzahl schnell festlegen`,modifyOfficers:`Offiziere ändern`,officersDesc:`Offiziersablaufzeit schnell festlegen`,days:`T`,npcTesting:`NPC-Test`,npcTestingDesc:`NPC-Spionage- und Angriffsverhalten testen`,selectNPC:`NPC auswählen`,chooseNPC:`Wählen Sie einen NPC`,targetPlanet:`Zielplanet`,chooseTarget:`Zielplanet auswählen`,testSpy:`Spionage testen`,testAttack:`Angriff testen`,testSpyAndAttack:`Spionage & Angriff testen`,testSpyMessage:`Klicken Sie auf Bestätigen, um die Spionagemission zu beschleunigen`,testAttackMessage:`Klicken Sie auf Bestätigen, um die Angriffsmission zu beschleunigen`,testSpyAndAttackMessage:`Klicken Sie auf Bestätigen, um die Missionen zu beschleunigen`,initializeFleet:`NPC-Flotte initialisieren`,accelerateMissions:`Alle Missionen beschleunigen (5s)`,selectNPCFirst:`Bitte wählen Sie zuerst einen NPC`,npcNoProbes:`NPC hat keine Spionagesonden`,npcNoSpyReport:`NPC muss zuerst spionieren`,npcMissionFailed:`Mission konnte nicht erstellt werden`,npcNoPlanets:`NPC hat keine Planeten`,npcWillSpyIn5s:`{npcName} wird in 5 Sekunden spionieren`,npcWillAttackIn5s:`{npcName} wird in 5 Sekunden angreifen`,npcWillSpyAndAttack:`{npcName} wird in 5s spionieren und in 10s angreifen`,acceleratedMissions:`{count} Missionen auf 5 Sekunden beschleunigt`,npcFleetInitialized:`{npcName} Flotte initialisiert`,npcFleetDetails:`100 Spionagesonden +500 Leichte Jäger +300 Schwere Jäger +200 Kreuzer +100 Schlachtschiffe +50 Bomber +30 Zerstörer +20 Schlachtkreuzer`,dangerZone:`Gefahrenzone`,dangerZoneDesc:`Die folgenden Vorgänge sind irreversibel`,resetGame:`Spiel zurücksetzen`,resetGameConfirm:`Möchten Sie das Spiel wirklich zurücksetzen? Alle Daten werden gelöscht!`},alerts:{npcSpyIncoming:`NPC-Spionagesonde nähert sich`,npcAttackIncoming:`NPC-Flotten-Angriff im Anmarsch!`,npcFleetIncoming:`NPC-Flotte nähert sich`,ships:`Schiffe`,spiedBy:`Ausspioniert von`,attackedBy:`Angegriffen von`,detectionSuccess:`Spionage entdeckt`,detectionFailed:`Spionage nicht entdeckt`,npcSpiedYourPlanet:`NPC hat deinen Planeten ausspioniert`,npcAttackedYourPlanet:`NPC hat deinen Planeten angegriffen`},diplomacy:{title:`Diplomatie`,description:`Verwalte diplomatische Beziehungen mit NPCs`,tabs:{all:`Alle`,friendly:`Freundlich`,neutral:`Neutral`,hostile:`Feindlich`},noNpcs:`Keine NPCs`,noFriendlyNpcs:`Keine freundlichen NPCs`,noNeutralNpcs:`Keine neutralen NPCs`,noHostileNpcs:`Keine feindlichen NPCs`,recentEvents:`Aktuelle Ereignisse`,recentEventsDescription:`Protokoll der jüngsten diplomatischen Aktivitäten`,ago:`vor`,status:{friendly:`Freundlich`,neutral:`Neutral`,hostile:`Feindlich`},planets:`Planeten`,allies:`Verbündete`,reputation:`Ansehen`,alliedWith:`Verbündet mit`,more:`weitere`,actions:{gift:`Geschenk senden`,viewPlanets:`Planeten ansehen`},lastEvent:`Letztes Ereignis`,events:{gift:`Geschenk gesendet`,attack:`Angriff`,missileAttack:`Raketenangriff`,allyAttacked:`Verbündeter angegriffen`,spy:`Spionage`,stealDebris:`Trümmer gestohlen`},reports:{giftedResources:`{metal}M {crystal}K {deuterium}D geschenkt`,receivedGiftFromPlayer:`Geschenk von Spieler erhalten`,giftedToNpc:`Sie haben {npcName} Ressourcen geschenkt. Ansehen +{reputation}`,rejectedPlayerGift:`Geschenk des Spielers abgelehnt`,npcRejectedGift:`{npcName} hat Ihr Geschenk abgelehnt. Ansehen {reputation}`,attackedNpc:`{npcName} angegriffen`,wasAttackedByPlayer:`Wurde von Spieler angegriffen`,youAttackedNpc:`Sie haben {npcName} angegriffen`,playerAttackedAlly:`Spieler hat Verbündeten {allyName} angegriffen`,allyDispleased:`{allyName} ist unzufrieden, dass Sie ihren Verbündeten {targetName} angegriffen haben`,wasSpiedByPlayer:`Wurde von Spieler ausspioniert (entdeckt: {detected})`,spyDetected:`Ihre Spionage wurde von {npcName} entdeckt`,stoleDebrisFromTerritory:`Trümmer aus {npcName}s Territorium gestohlen`,playerStoleDebris:`Spieler hat Trümmer aus Territorium gestohlen`,recycledDebrisNearNpc:`Sie haben Trümmer in der Nähe von {npcName}s Planeten recycelt. Sie sind unzufrieden.`,giftedResourcesToPlayer:`Ressourcen an Spieler geschenkt`,receivedGiftFromNpc:`Geschenk von {npcName} erhalten`,acceptedGiftFromNpc:`Sie haben ein Geschenk von {npcName} angenommen: {metal}M {crystal}K {deuterium}D`,playerRejectedGift:`Spieler hat Geschenk abgelehnt`,rejectedGiftFromNpc:`Sie haben ein Geschenk von {npcName} abgelehnt. Ansehen {reputation}`}},pagination:{previous:`Vorherige`,next:`Nächste`,first:`Erste`,last:`Letzte`,page:`Seite {page}`},notFound:{title:`Seite nicht gefunden`,description:`Entschuldigung, die gesuchte Seite existiert nicht`,goHome:`Zur Startseite`}},i={common:{confirm:`Подтвердить`,cancel:`Отмена`,delete:`Удалить`,edit:`Редактировать`,save:`Сохранить`,close:`Закрыть`,back:`Назад`,next:`Далее`,previous:`Предыдущий`,submit:`Отправить`,reset:`Сбросить`,search:`Поиск`,filter:`Фильтр`,loading:`Загрузка...`,noData:`Нет данных`,error:`Ошибка`,success:`Успешно`,warning:`Предупреждение`,info:`Информация`,resourceType:`Тип ресурса`,playerName:`Командир`,timeHour:`ч`,timeMinute:`мин`,timeSecond:`сек`,featureLocked:`Функция заблокирована`,unlockRequired:`Требуется здание`,requiredBuilding:`Необходимое здание`,currentLevel:`Текущий уровень`,goToBuildings:`К зданиям`,locked:`Заблокировано`,viewRequirements:`Просмотр требований`,requirementsNotMet:`Требования не выполнены`,current:`Текущий`,level:`Уровень`,gmModeActivated:`Режим GM активирован! Проверьте навигационное меню.`},errors:{requirementsNotMet:`Требования не выполнены`,insufficientResources:`Недостаточно ресурсов`,insufficientFleetStorage:`Недостаточно места для флота`,shieldDomeLimit:`Достигнут лимит щитовых куполов`,missileSiloLimit:`Превышена вместимость ракетной шахты`,insufficientMissiles:`Недостаточно межпланетных ракет`,invalidMissileCount:`Неверное количество ракет`,targetOutOfRange:`Цель вне дальности`,cannotAttackOwnPlanet:`Нельзя атаковать свою планету`,fleetMissionsFull:`Слоты миссий флота заполнены`,insufficientFleet:`Недостаточно флота`,insufficientFuel:`Недостаточно топлива`,planetOnly:`Это здание можно построить только на планетах`,moonOnly:`Это здание можно построить только на лунах`,buildQueueFull:`Очередь строительства заполнена`,insufficientSpace:`Недостаточно места`,buildingLevelZero:`Уровень здания 0, нельзя снести`,researchQueueFull:`Очередь исследований заполнена`,moonExists:`Луна уже существует`,insufficientDebris:`Недостаточно обломков`},nav:{overview:`Обзор`,buildings:`Здания`,research:`Исследования`,shipyard:`Верфь`,defense:`Оборона`,fleet:`Флот`,officers:`Офицеры`,simulator:`Симулятор`,galaxy:`Галактика`,diplomacy:`Diplomacy`,messages:`Сообщения`,settings:`Настройки`,gm:`GM`},sidebar:{language:`Язык`,lightMode:`Светлая тема`,darkMode:`Тёмная тема`,collapse:`Свернуть`,expand:`Развернуть`},resources:{metal:`Металл`,crystal:`Кристалл`,deuterium:`Дейтерий`,darkMatter:`Тёмная материя`,energy:`Энергия`,production:`Производство`,consumption:`Потребление`,capacity:`Вместимость`,current:`Текущий`,max:`Макс. вместимость`,perHour:`час`,perMinute:`мин`,hour:`час`,noEnergy:`Нет энергии`},planet:{planet:`Планета`,moon:`Луна`,colony:`Колония`,position:`Позиция`,coordinates:`Координаты`,switchToMoon:`На луну`,backToPlanet:`Вернуться на планету`,switchPlanet:`Переключить планету`,currentPlanet:`Текущая планета`,fields:`Поля`,temperature:`Температура`,homePlanet:`Родная планета`,planetPrefix:`Планета`,moonSuffix:`я луна`,colonyPrefix:`Колония`},player:{points:`Всего очков`},buildings:{metalMine:`Рудник металла`,crystalMine:`Рудник кристалла`,deuteriumSynthesizer:`Синтезатор дейтерия`,solarPlant:`Солнечная электростанция`,fusionReactor:`Термоядерный реактор`,roboticsFactory:`Фабрика роботов`,naniteFactory:`Нанитная фабрика`,shipyard:`Верфь`,researchLab:`Исследовательская лаборатория`,metalStorage:`Хранилище металла`,crystalStorage:`Хранилище кристалла`,deuteriumTank:`Цистерна дейтерия`,darkMatterCollector:`Коллектор тёмной материи`,darkMatterTank:`Резервуар тёмной материи`,missileSilo:`Ракетная шахта`,terraformer:`Терраформер`,lunarBase:`Лунная база`,sensorPhalanx:`Сенсорная фаланга`,jumpGate:`Прыжковые ворота`,planetDestroyerFactory:`Фабрика разрушителей планет`,buildTime:`Время строительства`,production:`Производство`,consumption:`Потребление`,totalCost:`Общая стоимость`,totalPoints:`Общие очки`,levelRange:`Диапазон уровней`,capacity:`Capacity/Effect`,storageCapacity:`Capacity`,energyProduction:`Energy Production`,fleetStorage:`Fleet Storage`,buildQueue:`Build Queue`,buildQueueBonus:`Очередь строительства`,spaceBonus:`Бонус пространства`,buildSpeedBonus:`Бонус скорости строительства`,researchSpeedBonus:`Бонус скорости исследования`,planetSpace:`Planet Space`,moonSpace:`Moon Space`,missileCapacity:`Missile Capacity`},buildingDescriptions:{metalMine:`Добывает металлические ресурсы`,crystalMine:`Добывает кристаллические ресурсы`,deuteriumSynthesizer:`Синтезирует дейтериевые ресурсы`,solarPlant:`Обеспечивает энергией`,fusionReactor:`Использует дейтерий для производства большого количества энергии`,roboticsFactory:`Ускоряет скорость строительства`,naniteFactory:`Увеличивает вместимость очереди строительства, +1 за уровень (макс 10 уровней)`,shipyard:`Строит корабли`,researchLab:`Исследует технологии`,metalStorage:`Увеличивает ёмкость хранилища металла`,crystalStorage:`Увеличивает ёмкость хранилища кристалла`,deuteriumTank:`Увеличивает ёмкость хранилища дейтерия`,darkMatterCollector:`Собирает редкие ресурсы тёмной материи`,darkMatterTank:`Увеличивает ёмкость хранилища тёмной материи`,missileSilo:`Хранит и запускает ракеты, 10 ракет на уровень`,terraformer:`Терраформирует поверхность планеты, увеличивает доступное пространство на 30 за уровень`,lunarBase:`Увеличивает доступное пространство на луне, +30 пространства за уровень`,sensorPhalanx:`Обнаруживает активность флота в окружающих системах`,jumpGate:`Мгновенно переносит флоты на другие луны`,planetDestroyerFactory:`Производит абсолютное оружие, способное уничтожать планеты`},ships:{lightFighter:`Лёгкий истребитель`,heavyFighter:`Тяжёлый истребитель`,cruiser:`Крейсер`,battleship:`Линкор`,battlecruiser:`Линейный крейсер`,bomber:`Бомбардировщик`,destroyer:`Эсминец`,smallCargo:`Малый транспорт`,largeCargo:`Большой транспорт`,colonyShip:`Колонизатор`,recycler:`Переработчик`,espionageProbe:`Шпионский зонд`,solarSatellite:`Солнечный спутник`,darkMatterHarvester:`Сборщик тёмной материи`,deathstar:`Звезда Смерти`},shipDescriptions:{lightFighter:`Базовая боевая единица`,heavyFighter:`Тяжелобронированный истребитель`,cruiser:`Средний боевой корабль, сбалансированная атака и защита`,battleship:`Мощный боевой корабль`,battlecruiser:`Быстрый мощный боевой корабль, отлично атакует линкоры`,bomber:`Специализированный корабль для атаки оборонительных сооружений`,destroyer:`Охотник, специализирующийся на уничтожении крупных кораблей`,smallCargo:`Транспортирует небольшое количество ресурсов`,largeCargo:`Транспортирует большое количество ресурсов`,colonyShip:`Используется для колонизации новых планет`,recycler:`Собирает ресурсы с поля обломков`,espionageProbe:`Разведывает вражеские планеты`,solarSatellite:`Обеспечивает дополнительную энергию, генерирует 50 энергии на спутник`,darkMatterHarvester:`Специальный корабль для сбора тёмной материи`,deathstar:`Абсолютное оружие, способное уничтожать целые планеты`},defenses:{rocketLauncher:`Ракетная установка`,lightLaser:`Лёгкий лазер`,heavyLaser:`Тяжёлый лазер`,gaussCannon:`Гауссова пушка`,ionCannon:`Ионное орудие`,plasmaTurret:`Плазменная турель`,smallShieldDome:`Малый щитовой купол`,largeShieldDome:`Большой щитовой купол`,antiBallisticMissile:`Противоракета`,interplanetaryMissile:`Межпланетная ракета`,planetaryShield:`Планетарный щит`},defenseDescriptions:{rocketLauncher:`Базовое оборонительное сооружение`,lightLaser:`Лёгкое энергетическое оружие`,heavyLaser:`Тяжёлое энергетическое оружие`,gaussCannon:`Высокоскоростное кинетическое оружие`,ionCannon:`Эффективно против щитов`,plasmaTurret:`Мощное оборонительное сооружение`,smallShieldDome:`Малый щит, защищающий всю планету`,largeShieldDome:`Большой щит, защищающий всю планету`,antiBallisticMissile:`Перехватывает вражеские ракеты, может перехватить 1 межпланетную ракету`,interplanetaryMissile:`Может атаковать оборонительные сооружения на других планетах`,planetaryShield:`Суперщит, защищающий планету от атак уничтожения`},research:{researchTime:`Время исследования`,totalCost:`Общая стоимость`,totalPoints:`Общие очки`,levelRange:`Диапазон уровней`,capacity:`Capacity/Effect`,storageCapacity:`Capacity`,energyProduction:`Energy Production`,fleetStorage:`Fleet Storage`,buildQueue:`Build Queue`,planetSpace:`Planet Space`,moonSpace:`Moon Space`,missileCapacity:`Missile Capacity`},technologies:{energyTechnology:`Энергетическая технология`,laserTechnology:`Лазерная технология`,ionTechnology:`Ионная технология`,hyperspaceTechnology:`Гиперпространственная технология`,plasmaTechnology:`Плазменная технология`,computerTechnology:`Компьютерная технология`,espionageTechnology:`Шпионаж`,weaponsTechnology:`Оружие`,shieldingTechnology:`Щиты`,armourTechnology:`Броня`,astrophysics:`Астрофизика`,gravitonTechnology:`Гравитоны`,combustionDrive:`Реактивный двигатель`,impulseDrive:`Импульсный двигатель`,hyperspaceDrive:`Гиперпространственный двигатель`,darkMatterTechnology:`Технология тёмной материи`,terraformingTechnology:`Технология терраформирования`,planetDestructionTech:`Технология уничтожения планет`},technologyDescriptions:{energyTechnology:`Улучшает энергоэффективность`,laserTechnology:`Основа лазерного оружия и обороны`,ionTechnology:`Технология ионного оружия`,hyperspaceTechnology:`Технология гиперпространственных прыжков`,plasmaTechnology:`Технология плазменного оружия`,computerTechnology:`Увеличивает вместимость очереди исследований, +1 за уровень (макс 10 уровней)`,espionageTechnology:`Повышает эффективность зондов, +1 уровень шпионажа за уровень`,weaponsTechnology:`Увеличивает силу атаки кораблей и обороны на 10% за уровень`,shieldingTechnology:`Увеличивает щиты кораблей и обороны на 10% за уровень`,armourTechnology:`Увеличивает броню кораблей и обороны на 10% за уровень`,astrophysics:`Каждый уровень добавляет 1 слот колонии и повышает шанс успеха экспедиций`,gravitonTechnology:`Изучает манипуляцию гравитонами, требуется для Звезды смерти`,combustionDrive:`Базовая технология двигателей`,impulseDrive:`Средняя технология двигателей`,hyperspaceDrive:`Продвинутая технология двигателей`,darkMatterTechnology:`Исследование свойств и применения тёмной материи`,terraformingTechnology:`Исследование технологии терраформирования планет, увеличивает доступное пространство всех планет на 30 за уровень`,planetDestructionTech:`Исследование ужасающей технологии уничтожения целых планет`},officers:{commander:`Командир`,admiral:`Адмирал`,engineer:`Инженер`,geologist:`Геолог`,technocrat:`Технократ`,darkMatterSpecialist:`Специалист по тёмной материи`,resourceBonus:`Бонус производства ресурсов`,darkMatterBonus:`Бонус производства тёмной материи`,energyBonus:`Бонус производства энергии`},officerDescriptions:{commander:`Улучшает скорость строительства и управление`,admiral:`Улучшает боевую мощь и скорость флота`,engineer:`Улучшает энергию и оборону`,geologist:`Улучшает производство ресурсов`,technocrat:`Улучшает скорость исследований и шпионаж`,darkMatterSpecialist:`Улучшает эффективность сбора тёмной материи`},queue:{buildQueue:`Очередь строительства`,researchQueue:`Очередь исследований`,building:`Строится`,researching:`Исследуется`,remaining:`Осталось`,cancel:`Отменить`,cancelBuild:`Отменить строительство`,cancelResearch:`Отменить исследование`,confirmCancel:`Вы уверены, что хотите отменить? 50% ресурсов будет возвращено.`,level:`Уровень`,gmModeActivated:``,upgradeToLevel:`Улучшить до уровня`},overview:{title:`Обзор планеты`,resourceOverview:`Ресурсы`,fleetInfo:`Флот`,currentShips:`Корабли на этой планете`,productionSources:`Источники производства`,productionSourcesDesc:`Подробная информация о производстве ресурсов и бонусах`,consumptionSources:`Источники потребления`,consumptionSourcesDesc:`Детали потребления энергии зданиями`,totalProduction:`Общее производство`,totalConsumption:`Общее потребление`,noConsumption:`Нет потребления энергии`},buildingsView:{title:`Здания`,usedSpace:`Использовано полей`,spaceUsage:`Использование полей`,level:`Уровень`,gmModeActivated:``,upgradeCost:`Стоимость улучшения`,buildTime:`Время строительства`,upgrade:`Улучшить`,maxLevelReached:`Достигнут максимальный уровень`,requirementsNotMet:`Требования не выполнены`,upgradeFailed:`Улучшение не удалось`,upgradeFailedMessage:`Пожалуйста, проверьте, достаточно ли у вас ресурсов, места или нет других задач строительства.`,demolish:`Снести`,demolishRefund:`Возврат от сноса`,demolishFailed:`Снос не удался`,demolishFailedMessage:`Невозможно снести это здание. Проверьте, не заполнена ли очередь строительства или уровень здания не равен 0.`,confirmDemolish:`Подтвердить снос`,confirmDemolishMessage:`Вы уверены, что хотите снести следующее здание?`},researchView:{title:`Исследования`,researchCost:`Стоимость исследования`,research:`Исследовать`,maxLevelReached:`Достигнут максимальный уровень`,researchFailed:`Исследование не удалось`,researchFailedMessage:`Пожалуйста, проверьте, достаточно ли у вас ресурсов, выполнены ли предварительные условия или нет других исследовательских задач.`},shipyard:{attack:`Атака`,missileAttack:`Ракетная атака`,shield:`Щит`,armor:`Броня`,speed:`Скорость`,cargoCapacity:`Грузоподъёмность`,fuelConsumption:`Расход топлива`,buildCost:`Стоимость постройки`,buildTime:`Время строительства`,perUnit:`За единицу`,batchCalculator:`Калькулятор партий`,quantity:`Количество`,totalCost:`Общая стоимость`,totalTime:`Общее время`},shipyardView:{title:`Верфь`,fleetStorage:`Хранилище флота`,attack:`Атака`,missileAttack:`Ракетная атака`,shield:`Щит`,speed:`Скорость`,cargoCapacity:`Грузоподъёмность`,unitCost:`Стоимость единицы`,buildQuantity:`Количество для постройки`,totalCost:`Общая стоимость`,build:`Построить`,inputError:`Ошибка ввода`,inputErrorMessage:`Пожалуйста, введите количество для постройки!`,buildFailed:`Постройка не удалась`,buildFailedMessage:`Пожалуйста, проверьте, достаточно ли у вас ресурсов или выполнены ли предварительные условия.`},defense:{attack:`Атака`,missileAttack:`Ракетная атака`,shield:`Щит`,armor:`Броня`,buildCost:`Стоимость постройки`,buildTime:`Время строительства`,perUnit:`За единицу`,batchCalculator:`Калькулятор партий`,quantity:`Количество`,totalCost:`Общая стоимость`,totalTime:`Общее время`},defenseView:{title:`Оборона`,attack:`Атака`,missileAttack:`Ракетная атака`,shield:`Щит`,armor:`Броня`,buildTime:`Время постройки`,seconds:`с`,unitCost:`Стоимость единицы`,buildQuantity:`Количество для постройки`,totalCost:`Общая стоимость`,build:`Построить`,shieldDomeBuilt:`Щитовой купол уже построен`,missileCapacity:`Вместимость ракет`,inputError:`Ошибка ввода`,inputErrorMessage:`Пожалуйста, введите количество для постройки!`,buildFailed:`Постройка не удалась`,buildFailedMessage:`Пожалуйста, проверьте, достаточно ли у вас ресурсов или выполнены ли предварительные условия. Щитовые купола можно построить только один раз.`},fleetView:{title:`Управление флотом`,fleetOverview:`Обзор флота`,sendFleet:`Отправить флот`,flightMissions:`Полетные миссии`,currentPlanetFleet:`Флот на этой планете`,attack:`Атака`,missileAttack:`Ракетная атака`,shield:`Щит`,armor:`Броня`,speed:`Скорость`,cargo:`Груз`,selectFleet:`Выбрать флот`,selectFleetDescription:`Выберите количество кораблей для отправки`,available:`Доступно`,all:`Все`,targetCoordinates:`Целевые координаты`,galaxy:`Галактика`,diplomacy:`Diplomacy`,system:`Система`,position:`Позиция`,missionType:`Тип миссии`,missionInfo:`Информация о миссии`,fuelConsumption:`Расход топлива`,flightTime:`Время полета`,attackMission:`Атака`,transport:`Транспорт`,colonize:`Колонизация`,spy:`Разведка`,deploy:`Размещение`,recycle:`Переработка`,transportResources:`Транспортировка ресурсов`,totalCargoCapacity:`Общая грузоподъёмность`,used:`Использовано`,noFlightMissions:`Нет полетных миссий`,outbound:`Туда`,returning:`Возвращение`,fleetComposition:`Состав флота`,carryingResources:`Перевозимые ресурсы`,arrivalTime:`Время прибытия`,returnTime:`Время возврата`,recallFleet:`Отозвать флот`,sendFailed:`Отправка не удалась`,sendFailedMessage:`Пожалуйста, проверьте количество флота, наличие топлива или ограничения грузоподъёмности.`,recallFailed:`Отзыв не удался`,recallFailedMessage:`Эта миссия не может быть отозвана.`,unknownPlanet:`Неизвестная планета`,fleetMissionSlots:`Слоты миссий флота`,noShipsSelected:`Корабли не выбраны`,cannotSendToOwnPlanet:`Невозможно отправить флот на свою планету`,cargoExceedsCapacity:`Груз превышает вместимость`,noColonyShip:`Для колонизационной миссии требуется колониальный корабль`,noDebrisAtTarget:`Нет поля обломков по целевым координатам или поле обломков пусто`,noDeathstar:`Для миссии разрушения требуется Звезда Смерти`,giftMode:`Режим подарка`,giftModeDescription:`Отправить ресурсы в подарок`,estimatedReputationGain:`Ожидаемый прирост репутации`},officersView:{title:`Офицеры`,activated:`Активирован`,inactive:`Неактивен`,activeStatus:`Статус активации`,expirationTime:`Время истечения`,remainingTime:`Оставшееся время`,recruitCost:`Стоимость найма`,days:`дн.`,benefitsBonus:`Бонусы`,resourceProduction:`Производство ресурсов`,darkMatterProduction:`Производство тёмной материи`,energyProduction:`Производство энергии`,buildingSpeed:`Скорость строительства`,researchSpeed:`Скорость исследований`,fleetSpeed:`Скорость флота`,fuelConsumption:`Расход топлива`,defense:`Защита`,storageCapacity:`Вместимость хранилища`,buildQueue:`Очередь строительства`,fleetSlots:`Слоты флота`,hire:`Нанять`,renew:`Продлить`,dismiss:`Уволить`,hireTitle:`Нанять офицера`,hireMessage:`Вы уверены, что хотите нанять {name}? Действует 7 дней.`,renewTitle:`Продлить офицера`,renewMessage:`Вы уверены, что хотите продлить {name} на 7 дней?`,dismissTitle:`Уволить офицера`,dismissMessage:`Вы уверены, что хотите уволить {name}? Средства не возвращаются.`,hireFailed:`Найм не удался`,renewFailed:`Продление не удалось`,insufficientResources:`Недостаточно ресурсов!`},galaxyView:{title:`Галактика`,selectCoordinates:`Выбрать координаты`,galaxy:`Галактика`,diplomacy:`Diplomacy`,selectGalaxy:`Выбрать галактику`,system:`Система`,selectSystem:`Выбрать систему`,view:`Показать`,myPlanet:`Моя планета`,myPlanets:`Просмотр моих систем`,npcPlanets:`Планеты NPC`,selectPlanetToView:`Выберите планету для просмотра её системы`,totalPositions:`Всего 10 позиций планет`,mine:`Моя`,hostile:`Враждебная`,emptySlot:`Пусто - можно колонизировать`,scout:`Разведка`,attack:`Атака`,missileAttack:`Ракетная атака`,colonize:`Колонизация`,switch:`Переключить`,recycle:`Переработка`,debrisField:`Поле обломков`,scoutPlanetTitle:`Разведать планету`,attackPlanetTitle:`Атаковать планету`,missileAttackTitle:`Ракетная атака`,colonizePlanetTitle:`Колонизировать планету`,recyclePlanetTitle:`Переработать обломки`,scoutPlanetMessage:`Вы уверены, что хотите отправить шпионские зонды для разведки планеты [{coordinates}]? + +Перейдите на страницу флота, чтобы выбрать корабли и отправить.`,attackPlanetMessage:`Вы уверены, что хотите атаковать планету [{coordinates}]? + +Перейдите на страницу флота, чтобы выбрать корабли и отправить.`,missileAttackMessage:`Запустить межпланетные ракеты по планете [{coordinates}]`,missileCount:`Количество ракет`,availableMissiles:`Доступно ракет`,missileRange:`Дальность ракет`,systems:`систем`,distance:`Расстояние`,flightTime:`Время полета`,launchMissile:`Запустить`,cancel:`Отмена`,colonizePlanetMessage:`Вы уверены, что хотите колонизировать позицию [{coordinates}]? + +Перейдите на страницу флота, чтобы отправить колонизационный корабль.`,recyclePlanetMessage:`Вы уверены, что хотите переработать обломки в позиции [{coordinates}]? + +Перейдите на страницу флота, чтобы отправить переработчики.`,sendGift:`Отправить подарок`,debris:`Обломки`,giftPlanetTitle:`Отправить подарок`,giftPlanetMessage:`Вы уверены, что хотите отправить ресурсы в подарок планете [{coordinates}]? + +Перейдите на страницу флота, чтобы выбрать транспортные корабли и загрузить ресурсы.`},messagesView:{title:`Сообщения`,battles:`Битвы`,spy:`Разведка`,npc:`NPC`,battleReports:`Отчёты о боях`,spyReports:`Отчёты разведки`,noBattleReports:`Нет отчётов о боях`,noSpyReports:`Нет отчётов разведки`,battleReport:`Отчёт о бое`,spyReport:`Отчёт разведки`,victory:`Победа`,defeat:`Поражение`,draw:`Ничья`,attackerFleet:`Флот нападающего`,defenderFleet:`Флот защитника`,defenderDefense:`Оборона защитника`,attackerLosses:`Потери нападающего`,defenderLosses:`Потери защитника`,noLosses:`Без потерь`,plunder:`Добыча`,debrisField:`Поле обломков`,resources:`Ресурсы`,fleet:`Флот`,defense:`Оборона`,buildings:`Здания`,unread:`Непрочитано`,targetPlanet:`Целевая планета`,attackerRemaining:`Осталось у нападающего`,defenderRemaining:`Осталось у защитника`,moonChance:`Шанс появления луны`,showRoundDetails:`Показать детали раундов`,hideRoundDetails:`Скрыть детали раундов`,round:`Раунд {round}`,attackerRemainingPower:`Оставшаяся мощь нападающего`,defenderRemainingPower:`Оставшаяся мощь защитника`,spied:`Шпионаж`,spiedNotification:`Уведомление о шпионаже`,noSpiedNotifications:`Нет уведомлений о шпионаже`,detected:`Обнаружено`,undetected:`Не обнаружено`,missions:`Миссии`,noMissionReports:`Нет отчётов о миссиях`,success:`Успех`,failed:`Неудача`,npcActivity:`Активность NPC`,noNPCActivity:`Нет уведомлений об активности NPC`,npcRecycleActivity:`NPC перерабатывает обломки`,gifts:`Подарки`,giftRejected:`Отклонено`,noGiftNotifications:`Нет уведомлений о подарках`,noGiftRejected:`Нет отклоненных подарков`,giftFrom:`Подарок от {npcName}`,giftRejectedBy:`{npcName} отклонил подарок`,giftResources:`Ресурсы подарка`,rejectedResources:`Отклоненные ресурсы`,expectedReputation:`Ожидаемая репутация`,currentReputation:`Текущая репутация`,acceptGift:`Принять`,rejectGift:`Отклонить`,rejectionReason:{hostile:`Они враждебны и не принимают подарки`,neutral_distrust:`Они вам не доверяют`,polite_decline:`Вежливо отказались`}},missionReports:{transportSuccess:`Миссия транспортировки успешно завершена`,transportFailed:`Миссия транспортировки провалена`,colonizeSuccess:`Миссия колонизации успешна, новая планета создана`,colonizeFailed:`Миссия колонизации провалена`,deploySuccess:`Миссия размещения успешно завершена`,deployFailed:`Миссия размещения провалена`,recycleSuccess:`Миссия переработки успешно завершена`,recycleFailed:`Миссия переработки провалена, нет обломков в целевой позиции`,destroySuccess:`Миссия уничтожения планеты успешно выполнена`,destroyFailed:`Миссия уничтожения планеты провалена`},simulatorView:{title:`Симулятор боя`,attacker:`Нападающий`,defender:`Защитник`,attackerConfig:`Настройки нападающего`,attackerConfigDesc:`Настроить флот и уровни технологий нападающего`,defenderConfig:`Настройки защитника`,defenderConfigDesc:`Настроить флот, оборону и уровни технологий защитника`,fleet:`Флот`,defenseStructures:`Оборонительные сооружения`,techLevels:`Уровни технологий`,weapon:`Оружие`,shield:`Щит`,armor:`Броня`,defenderResources:`Ресурсы защитника (для расчёта добычи)`,startSimulation:`Начать симуляцию`,reset:`Сбросить`,battleResult:`Результат боя`,attackerVictory:`Победа нападающего`,defenderVictory:`Победа защитника`,draw:`Ничья`,afterRounds:`После {rounds} раундов`,attackerLosses:`Потери нападающего`,defenderLosses:`Потери защитника`,noLosses:`Без потерь`,attackerRemaining:`Осталось у нападающего`,defenderRemaining:`Осталось у защитника`,allDestroyed:`Всё уничтожено`,plunderableResources:`Доступная добыча`,debrisField:`Поле обломков`,moonChance:`Шанс появления луны`,showRoundDetails:`Показать детали раундов`,hideRoundDetails:`Скрыть детали раундов`,round:`Раунд {round}`,attackerRemainingPower:`Оставшаяся мощь нападающего`,defenderRemainingPower:`Оставшаяся мощь защитника`},settings:{dataManagement:`Управление данными`,dataManagementDesc:`Экспорт, импорт или очистка игровых данных`,exportData:`Экспорт данных`,exportDataDesc:`Экспортировать прогресс игры в JSON файл`,export:`Экспорт`,exporting:`Экспорт...`,exportSuccess:`Экспорт успешен`,exportFailed:`Экспорт не удался, попробуйте еще раз`,importData:`Импорт данных`,importDataDesc:`Восстановить прогресс игры из JSON файла`,selectFile:`Выбрать файл`,importSuccess:`Импорт успешен`,importConfirmTitle:`Подтвердить импорт`,importConfirmMessage:`Импорт перезапишет текущий прогресс игры. Это действие невозможно отменить. Продолжить?`,importFailed:`Импорт не удался, проверьте формат файла`,clearData:`Очистить данные`,clearDataDesc:`Удалить все игровые данные и сбросить`,clear:`Очистить`,clearConfirmTitle:`Подтвердить очистку данных`,clearConfirmMessage:`Все игровые данные будут удалены и игра начнется заново. Это действие невозможно отменить. Продолжить?`,gameSettings:`Настройки игры`,gameSettingsDesc:`Настроить параметры и предпочтения игры`,gamePause:`Пауза игры`,gamePauseDesc:`Приостановить или возобновить игровое время и производство ресурсов`,pause:`Пауза`,resume:`Возобновить`,gamePaused:`Игра приостановлена`,gameResumed:`Игра возобновлена`,playerName:`Имя игрока`,gameSpeed:`Скорость производства ресурсов`,gameSpeedDesc:`Текущий множитель скорости производства ресурсов`,speedChanged:`Скорость производства ресурсов изменена на {speed}x`,speedReset:`Скорость производства ресурсов сброшена на 1x`,reset:`Сбросить`,about:`О программе`,version:`Версия`,latestVersion:`Последняя версия`,checkUpdate:`Проверить обновление`,checking:`Проверка...`,newVersionAvailable:`Доступна новая версия {version}`,upToDate:`Уже актуальная версия`,checkUpdateCooldown:`Пожалуйста, попробуйте позже (5 минут перезарядки)`,checkUpdateFailed:`Не удалось проверить обновления, проверьте подключение к Интернету`,viewUpdate:`Просмотреть обновление`,updateAvailable:`Доступна новая версия. Нажмите, чтобы просмотреть примечания к выпуску.`,download:`Скачать`,goToDownload:`Перейти к загрузке`,buildDate:`Дата сборки`,community:`Сообщество`,github:`Репозиторий GitHub`,qqGroup:`Группа QQ`},gmView:{title:`Панель управления GM`,adminOnly:`Только для администратора`,selectPlanet:`Выбрать планету`,choosePlanet:`Выберите планету`,resources:`Ресурсы`,buildings:`Здания`,research:`Исследования`,ships:`Корабли`,defense:`Оборона`,officers:`Офицеры`,modifyResources:`Изменить ресурсы`,resourcesDesc:`Быстрое изменение ресурсов планеты`,modifyBuildings:`Изменить здания`,buildingsDesc:`Быстрая установка уровней зданий`,modifyResearch:`Изменить исследования`,researchDesc:`Быстрая установка уровней исследований`,modifyShips:`Изменить корабли`,shipsDesc:`Быстрая установка количества кораблей`,modifyDefense:`Изменить оборону`,defenseDesc:`Быстрая установка количества обороны`,modifyOfficers:`Изменить офицеров`,officersDesc:`Быстрая установка времени истечения офицеров`,days:`д`,npcTesting:`Тестирование NPC`,npcTestingDesc:`Тестирование разведки и атак NPC`,selectNPC:`Выбрать NPC`,chooseNPC:`Выберите NPC`,targetPlanet:`Целевая планета`,chooseTarget:`Выберите целевую планету`,testSpy:`Тест разведки`,testAttack:`Тест атаки`,testSpyAndAttack:`Тест разведки и атаки`,testSpyMessage:`Нажмите подтвердить, чтобы ускорить миссию разведки`,testAttackMessage:`Нажмите подтвердить, чтобы ускорить миссию атаки`,testSpyAndAttackMessage:`Нажмите подтвердить, чтобы ускорить миссии`,initializeFleet:`Инициализировать флот NPC`,accelerateMissions:`Ускорить все миссии (5с)`,selectNPCFirst:`Сначала выберите NPC`,npcNoProbes:`У NPC нет шпионских зондов`,npcNoSpyReport:`NPC нужно сначала разведать`,npcMissionFailed:`Не удалось создать миссию`,npcNoPlanets:`У NPC нет планет`,npcWillSpyIn5s:`{npcName} проведет разведку через 5 секунд`,npcWillAttackIn5s:`{npcName} атакует через 5 секунд`,npcWillSpyAndAttack:`{npcName} проведет разведку через 5с и атакует через 10с`,acceleratedMissions:`Ускорено {count} миссий до 5 секунд`,npcFleetInitialized:`Флот {npcName} инициализирован`,npcFleetDetails:`100 шпионских зондов +500 легких истребителей +300 тяжелых истребителей +200 крейсеров +100 линкоров +50 бомбардировщиков +30 эсминцев +20 линейных крейсеров`,dangerZone:`Опасная зона`,dangerZoneDesc:`Следующие операции необратимы`,resetGame:`Сбросить игру`,resetGameConfirm:`Вы уверены, что хотите сбросить игру? Все данные будут удалены!`},alerts:{npcSpyIncoming:`Приближается шпионский зонд NPC`,npcAttackIncoming:`Атака флота NPC приближается!`,npcFleetIncoming:`Приближается флот NPC`,ships:`кораблей`,spiedBy:`Разведан`,attackedBy:`Атакован`,detectionSuccess:`Разведка обнаружена`,detectionFailed:`Разведка не обнаружена`,npcSpiedYourPlanet:`NPC разведал вашу планету`,npcAttackedYourPlanet:`NPC атаковал вашу планету`},diplomacy:{title:`Дипломатия`,description:`Управление дипломатическими отношениями с NPC`,tabs:{all:`Все`,friendly:`Дружественные`,neutral:`Нейтральные`,hostile:`Враждебные`},noNpcs:`Нет NPC`,noFriendlyNpcs:`Нет дружественных NPC`,noNeutralNpcs:`Нет нейтральных NPC`,noHostileNpcs:`Нет враждебных NPC`,recentEvents:`Недавние события`,recentEventsDescription:`Журнал последних дипломатических действий`,ago:`назад`,status:{friendly:`Дружественный`,neutral:`Нейтральный`,hostile:`Враждебный`},planets:`планет`,allies:`союзников`,reputation:`Репутация`,alliedWith:`В союзе с`,more:`еще`,actions:{gift:`Отправить подарок`,viewPlanets:`Посмотреть планеты`},lastEvent:`Последнее событие`,events:{gift:`Подарок отправлен`,attack:`Атака`,missileAttack:`Ракетная атака`,allyAttacked:`Союзник атакован`,spy:`Шпионаж`,stealDebris:`Обломки украдены`},reports:{giftedResources:`Подарено {metal}M {crystal}C {deuterium}D`,receivedGiftFromPlayer:`Получен подарок от игрока`,giftedToNpc:`Вы подарили ресурсы {npcName}. Репутация +{reputation}`,rejectedPlayerGift:`Отклонен подарок игрока`,npcRejectedGift:`{npcName} отклонил ваш подарок. Репутация {reputation}`,attackedNpc:`Атакован {npcName}`,wasAttackedByPlayer:`Был атакован игроком`,youAttackedNpc:`Вы атаковали {npcName}`,playerAttackedAlly:`Игрок атаковал союзника {allyName}`,allyDispleased:`{allyName} недоволен тем, что вы атаковали их союзника {targetName}`,wasSpiedByPlayer:`Был разведан игроком (обнаружен: {detected})`,spyDetected:`Ваш шпионаж был обнаружен {npcName}`,stoleDebrisFromTerritory:`Украдены обломки с территории {npcName}`,playerStoleDebris:`Игрок украл обломки с территории`,recycledDebrisNearNpc:`Вы переработали обломки возле планеты {npcName}. Они недовольны.`,giftedResourcesToPlayer:`Подарены ресурсы игроку`,receivedGiftFromNpc:`Получен подарок от {npcName}`,acceptedGiftFromNpc:`Вы приняли подарок от {npcName}: {metal}M {crystal}C {deuterium}D`,playerRejectedGift:`Игрок отклонил подарок`,rejectedGiftFromNpc:`Вы отклонили подарок от {npcName}. Репутация {reputation}`}},pagination:{previous:`Предыдущая`,next:`Следующая`,first:`Первая`,last:`Последняя`,page:`Страница {page}`},notFound:{title:`Страница не найдена`,description:`Извините, страница, которую вы ищете, не существует`,goHome:`На главную`}},a={common:{confirm:`확인`,cancel:`취소`,delete:`삭제`,edit:`편집`,save:`저장`,close:`닫기`,back:`돌아가기`,next:`다음`,previous:`이전`,submit:`제출`,reset:`초기화`,search:`검색`,filter:`필터`,loading:`로딩 중...`,noData:`데이터 없음`,error:`오류`,success:`성공`,warning:`경고`,info:`정보`,resourceType:`자원 유형`,playerName:`사령관`,timeHour:`시간`,timeMinute:`분`,timeSecond:`초`,featureLocked:`기능 잠김`,unlockRequired:`건물 필요`,requiredBuilding:`필요한 건물`,currentLevel:`현재 레벨`,goToBuildings:`건물로 이동`,locked:`잠김`,viewRequirements:`요구사항 보기`,requirementsNotMet:`요구사항 미충족`,current:`현재`,level:`레벨`,gmModeActivated:`GM 모드가 활성화되었습니다! 탐색 메뉴를 확인하세요.`},errors:{requirementsNotMet:`전제 조건 미충족`,insufficientResources:`자원 부족`,insufficientFleetStorage:`함대 저장소 부족`,shieldDomeLimit:`실드 돔 한도 도달`,missileSiloLimit:`미사일 사일로 용량 초과`,insufficientMissiles:`행성간 미사일 부족`,invalidMissileCount:`잘못된 미사일 수량`,targetOutOfRange:`목표가 사정거리 밖`,cannotAttackOwnPlanet:`자신의 행성 공격 불가`,fleetMissionsFull:`함대 임무 슬롯 가득 참`,insufficientFleet:`함대 부족`,insufficientFuel:`연료 부족`,planetOnly:`이 건물은 행성에서만 지을 수 있습니다`,moonOnly:`이 건물은 위성에서만 지을 수 있습니다`,buildQueueFull:`건설 대기열 가득 참`,insufficientSpace:`공간 부족`,buildingLevelZero:`건물 레벨이 0이므로 철거할 수 없습니다`,researchQueueFull:`연구 대기열 가득 참`,moonExists:`위성이 이미 존재합니다`,insufficientDebris:`잔해장 부족`},nav:{overview:`개요`,buildings:`건물`,research:`연구`,shipyard:`조선소`,defense:`방어`,fleet:`함대`,officers:`장교`,simulator:`시뮬레이터`,galaxy:`은하계`,diplomacy:`Diplomacy`,messages:`메시지`,settings:`설정`,gm:`GM`},sidebar:{language:`언어`,lightMode:`라이트 모드`,darkMode:`다크 모드`,collapse:`메뉴 접기`,expand:`메뉴 펼치기`},resources:{metal:`금속`,crystal:`크리스탈`,deuterium:`중수소`,darkMatter:`암흑 물질`,energy:`에너지`,production:`생산량`,consumption:`소비량`,capacity:`용량`,current:`현재 저장량`,max:`최대 용량`,perHour:`시간`,perMinute:`분`,hour:`시간`,noEnergy:`에너지 부족`},planet:{planet:`행성`,moon:`위성`,colony:`식민지`,position:`위치`,coordinates:`좌표`,switchToMoon:`위성 보기`,backToPlanet:`모행성으로 돌아가기`,switchPlanet:`행성 전환`,currentPlanet:`현재 행성`,fields:`필드`,temperature:`온도`,homePlanet:`모행성`,planetPrefix:`행성`,moonSuffix:`의 위성`,colonyPrefix:`식민지`},player:{points:`총 점수`},buildings:{metalMine:`금속 광산`,crystalMine:`크리스탈 광산`,deuteriumSynthesizer:`중수소 합성기`,solarPlant:`태양광 발전소`,fusionReactor:`핵융합 반응로`,roboticsFactory:`로봇 공장`,naniteFactory:`나노 공장`,shipyard:`조선소`,researchLab:`연구소`,metalStorage:`금속 창고`,crystalStorage:`크리스탈 창고`,deuteriumTank:`중수소 탱크`,darkMatterCollector:`암흑 물질 수집기`,darkMatterTank:`암흑 물질 탱크`,missileSilo:`미사일 발사대`,terraformer:`지형 변환기`,lunarBase:`달 기지`,sensorPhalanx:`센서 팔랑크스`,jumpGate:`점프 게이트`,planetDestroyerFactory:`행성 파괴 공장`,buildTime:`건설 시간`,production:`생산량`,consumption:`소비`,totalCost:`총 비용`,totalPoints:`총 점수`,levelRange:`레벨 범위`,capacity:`Capacity/Effect`,storageCapacity:`Capacity`,energyProduction:`Energy Production`,fleetStorage:`Fleet Storage`,buildQueue:`Build Queue`,buildQueueBonus:`건설 대기열`,spaceBonus:`공간 보너스`,buildSpeedBonus:`건설 속도 보너스`,researchSpeedBonus:`연구 속도 보너스`,planetSpace:`Planet Space`,moonSpace:`Moon Space`,missileCapacity:`Missile Capacity`},buildingDescriptions:{metalMine:`금속 자원 채굴`,crystalMine:`크리스탈 자원 채굴`,deuteriumSynthesizer:`중수소 자원 합성`,solarPlant:`에너지 제공`,fusionReactor:`중수소를 사용하여 대량의 에너지 생산`,roboticsFactory:`건설 속도 향상`,naniteFactory:`건설 대기열 수 증가, 레벨당 +1 (최대 10레벨)`,shipyard:`함선 건조`,researchLab:`기술 연구`,metalStorage:`금속 저장 용량 증가`,crystalStorage:`크리스탈 저장 용량 증가`,deuteriumTank:`중수소 저장 용량 증가`,darkMatterCollector:`희귀한 암흑 물질 자원 수집`,darkMatterTank:`암흑 물질 저장 용량 증가`,missileSilo:`미사일을 저장 및 발사, 레벨당 10발`,terraformer:`행성 지형 개조, 레벨당 가용 공간 30 증가`,lunarBase:`달 가용 공간 증가, 레벨당 +30 공간`,sensorPhalanx:`주변 행성계의 함대 활동 감지`,jumpGate:`다른 위성으로 함대 순간 이동`,planetDestroyerFactory:`행성을 파괴할 수 있는 궁극 병기 건조`},ships:{lightFighter:`경전투기`,heavyFighter:`중전투기`,cruiser:`순양함`,battleship:`전함`,battlecruiser:`순양전함`,bomber:`폭격기`,destroyer:`구축함`,smallCargo:`소형 수송선`,largeCargo:`대형 수송선`,colonyShip:`식민선`,recycler:`재활용선`,espionageProbe:`정찰기`,solarSatellite:`태양광 위성`,darkMatterHarvester:`암흑 물질 채취선`,deathstar:`데스스타`},shipDescriptions:{lightFighter:`기본 전투 유닛`,heavyFighter:`중장갑 전투기`,cruiser:`중형 전함, 공격과 방어 균형`,battleship:`강력한 전함`,battlecruiser:`빠르고 강력한 전투함, 전함 공격에 탁월`,bomber:`방어 시설 공격 전문 함선`,destroyer:`대형 함선 파괴 전문 헌터`,smallCargo:`소량의 자원 운송`,largeCargo:`대량의 자원 운송`,colonyShip:`새로운 행성 식민에 사용`,recycler:`잔해장 자원 수집`,espionageProbe:`적 행성 정찰`,solarSatellite:`추가 에너지 제공, 위성당 50 에너지 생성`,darkMatterHarvester:`암흑 물질 채취 전용 특수 함선`,deathstar:`행성 전체를 파괴할 수 있는 궁극 병기`},defenses:{rocketLauncher:`로켓 발사대`,lightLaser:`경량 레이저포`,heavyLaser:`중형 레이저포`,gaussCannon:`가우스 캐논`,ionCannon:`이온 캐논`,plasmaTurret:`플라즈마 포탑`,smallShieldDome:`소형 실드 돔`,largeShieldDome:`대형 실드 돔`,antiBallisticMissile:`요격 미사일`,interplanetaryMissile:`행성간 미사일`,planetaryShield:`행성 실드`},defenseDescriptions:{rocketLauncher:`기본 방어 시설`,lightLaser:`경량 에너지 무기`,heavyLaser:`중형 에너지 무기`,gaussCannon:`고속 운동 에너지 무기`,ionCannon:`실드 파괴의 이기`,plasmaTurret:`강력한 방어 시설`,smallShieldDome:`행성 전체를 보호하는 소형 실드`,largeShieldDome:`행성 전체를 보호하는 대형 실드`,antiBallisticMissile:`적 미사일 요격, 행성간 미사일 1발 요격 가능`,interplanetaryMissile:`다른 행성의 방어 시설 공격 가능`,planetaryShield:`파괴 공격으로부터 행성을 보호하는 초급 실드`},research:{researchTime:`연구 시간`,totalCost:`총 비용`,totalPoints:`총 점수`,levelRange:`레벨 범위`,capacity:`Capacity/Effect`,storageCapacity:`Capacity`,energyProduction:`Energy Production`,fleetStorage:`Fleet Storage`,buildQueue:`Build Queue`,planetSpace:`Planet Space`,moonSpace:`Moon Space`,missileCapacity:`Missile Capacity`},technologies:{energyTechnology:`에너지 기술`,laserTechnology:`레이저 기술`,ionTechnology:`이온 기술`,hyperspaceTechnology:`초공간 기술`,plasmaTechnology:`플라즈마 기술`,computerTechnology:`컴퓨터 기술`,espionageTechnology:`스파이 기술`,weaponsTechnology:`무기 기술`,shieldingTechnology:`실드 기술`,armourTechnology:`장갑 기술`,astrophysics:`천체물리학`,gravitonTechnology:`중력자 기술`,combustionDrive:`연소 엔진`,impulseDrive:`임펄스 엔진`,hyperspaceDrive:`초공간 엔진`,darkMatterTechnology:`암흑 물질 기술`,terraformingTechnology:`지형 변환 기술`,planetDestructionTech:`행성 파괴 기술`},technologyDescriptions:{energyTechnology:`에너지 이용 효율 향상`,laserTechnology:`레이저 무기와 방어의 기초`,ionTechnology:`이온 무기 기술`,hyperspaceTechnology:`초공간 점프 기술`,plasmaTechnology:`플라즈마 무기 기술`,computerTechnology:`연구 대기열 수 증가, 레벨당 +1 (최대 10레벨)`,espionageTechnology:`스파이 탐사기 효과 향상, 레벨당 정찰 깊이 +1`,weaponsTechnology:`함선과 방어의 공격력 레벨당 10% 증가`,shieldingTechnology:`함선과 방어의 실드 레벨당 10% 증가`,armourTechnology:`함선과 방어의 장갑 레벨당 10% 증가`,astrophysics:`레벨당 식민지 슬롯 +1, 탐험 성공률 향상`,gravitonTechnology:`중력 조작 연구, 데스스타 필요 기술`,combustionDrive:`기본 추진 기술`,impulseDrive:`중급 추진 기술`,hyperspaceDrive:`고급 추진 기술`,darkMatterTechnology:`암흑 물질의 성질과 응용 연구`,terraformingTechnology:`행성 지형 개조 기술 연구, 레벨당 모든 행성의 가용 공간 30 증가`,planetDestructionTech:`행성 전체를 파괴하는 공포의 기술 연구`},officers:{commander:`사령관`,admiral:`제독`,engineer:`엔지니어`,geologist:`지질학자`,technocrat:`기술 전문가`,darkMatterSpecialist:`암흑 물질 전문가`,resourceBonus:`자원 생산 보너스`,darkMatterBonus:`암흑 물질 생산 보너스`,energyBonus:`에너지 생산 보너스`},officerDescriptions:{commander:`건설 속도 및 관리 능력 향상`,admiral:`함대 전투력 및 속도 향상`,engineer:`에너지 및 방어력 향상`,geologist:`자원 생산량 향상`,technocrat:`연구 속도 및 정찰 능력 향상`,darkMatterSpecialist:`암흑 물질 수집 효율 향상`},queue:{buildQueue:`건설 대기열`,researchQueue:`연구 대기열`,building:`건설 중`,researching:`연구 중`,remaining:`남은 시간`,cancel:`취소`,cancelBuild:`건설 취소`,cancelResearch:`연구 취소`,confirmCancel:`취소하시겠습니까? 자원의 50%가 환불됩니다.`,level:`레벨`,gmModeActivated:``,upgradeToLevel:`레벨로 업그레이드`},overview:{title:`행성 개요`,resourceOverview:`자원 개요`,fleetInfo:`함대`,currentShips:`현재 행성의 함선 수`,productionSources:`생산 소스`,productionSourcesDesc:`상세 자원 생산 및 보너스 정보`,consumptionSources:`소비 소스`,consumptionSourcesDesc:`건물 에너지 소비 세부 정보`,totalProduction:`총 생산량`,totalConsumption:`총 소비량`,noConsumption:`에너지 소비 없음`},buildingsView:{title:`건물`,usedSpace:`사용된 공간`,spaceUsage:`공간 사용`,level:`레벨`,gmModeActivated:``,upgradeCost:`업그레이드 비용`,buildTime:`건설 시간`,upgrade:`업그레이드`,maxLevelReached:`최대 레벨 도달`,requirementsNotMet:`요구 사항 미충족`,upgradeFailed:`업그레이드 실패`,upgradeFailedMessage:`자원이 충분한지, 공간이 충분한지, 또는 다른 건설 작업이 있는지 확인하세요.`,demolish:`철거`,demolishRefund:`철거 환불`,demolishFailed:`철거 실패`,demolishFailedMessage:`이 건물을 철거할 수 없습니다. 건설 대기열이 가득 찼거나 건물 레벨이 0인지 확인하세요.`,confirmDemolish:`철거 확인`,confirmDemolishMessage:`다음 건물을 철거하시겠습니까?`},researchView:{title:`연구`,researchCost:`연구 비용`,research:`연구`,maxLevelReached:`최대 레벨 도달`,researchFailed:`연구 실패`,researchFailedMessage:`자원이 충분한지, 전제 조건이 충족되었는지, 또는 다른 연구 작업이 있는지 확인하세요.`},shipyard:{attack:`공격력`,missileAttack:`미사일 공격`,shield:`쉴드`,armor:`장갑`,speed:`속도`,cargoCapacity:`화물 용량`,fuelConsumption:`연료 소비`,buildCost:`건설 비용`,buildTime:`건설 시간`,perUnit:`단위당`,batchCalculator:`일괄 계산기`,quantity:`수량`,totalCost:`총 비용`,totalTime:`총 시간`},shipyardView:{title:`조선소`,fleetStorage:`함대 저장소`,attack:`공격력`,missileAttack:`미사일 공격`,shield:`실드`,speed:`속도`,cargoCapacity:`적재량`,unitCost:`단위 비용`,buildQuantity:`건조 수량`,totalCost:`총 비용`,build:`건조`,inputError:`입력 오류`,inputErrorMessage:`건조 수량을 입력하세요!`,buildFailed:`건조 실패`,buildFailedMessage:`자원이 충분한지 또는 전제 조건이 충족되었는지 확인하세요.`},defense:{attack:`공격력`,missileAttack:`미사일 공격`,shield:`쉴드`,armor:`장갑`,buildCost:`건설 비용`,buildTime:`건설 시간`,perUnit:`단위당`,batchCalculator:`일괄 계산기`,quantity:`수량`,totalCost:`총 비용`,totalTime:`총 시간`},defenseView:{title:`방어 시설`,attack:`공격력`,missileAttack:`미사일 공격`,shield:`실드`,armor:`장갑`,buildTime:`건설 시간`,seconds:`초`,unitCost:`단위 비용`,buildQuantity:`건조 수량`,totalCost:`총 비용`,build:`건조`,shieldDomeBuilt:`실드 돔이 이미 건설됨`,missileCapacity:`미사일 용량`,inputError:`입력 오류`,inputErrorMessage:`건조 수량을 입력하세요!`,buildFailed:`건조 실패`,buildFailedMessage:`자원이 충분한지 또는 전제 조건이 충족되었는지 확인하세요. 실드 돔은 하나만 건설할 수 있습니다.`},fleetView:{title:`함대 관리`,fleetOverview:`함대 개요`,sendFleet:`함대 파견`,flightMissions:`비행 임무`,currentPlanetFleet:`현재 행성 함대`,attack:`공격`,missileAttack:`미사일 공격`,shield:`실드`,armor:`장갑`,speed:`속도`,cargo:`화물`,selectFleet:`함대 선택`,selectFleetDescription:`파견할 함선 수 선택`,available:`사용 가능`,all:`전체`,targetCoordinates:`목표 좌표`,galaxy:`은하계`,diplomacy:`Diplomacy`,system:`행성계`,position:`위치`,missionType:`임무 유형`,missionInfo:`임무 정보`,fuelConsumption:`연료 소비`,flightTime:`비행 시간`,attackMission:`공격`,transport:`수송`,colonize:`식민`,spy:`정찰`,deploy:`배치`,recycle:`회수`,transportResources:`자원 수송`,totalCargoCapacity:`총 적재량`,used:`사용됨`,noFlightMissions:`비행 임무 없음`,outbound:`이동 중`,returning:`귀환 중`,fleetComposition:`함대 구성`,carryingResources:`운반 자원`,arrivalTime:`도착 시간`,returnTime:`귀환 시간`,recallFleet:`함대 소환`,sendFailed:`파견 실패`,sendFailedMessage:`함대 수, 연료 충분 여부 또는 적재량 한계를 확인하세요.`,recallFailed:`소환 실패`,recallFailedMessage:`이 임무는 소환할 수 없습니다.`,unknownPlanet:`알 수 없는 행성`,fleetMissionSlots:`함대 임무 슬롯`,noShipsSelected:`선택된 함선 없음`,cannotSendToOwnPlanet:`자신의 행성으로 함대를 파견할 수 없습니다`,cargoExceedsCapacity:`적재량이 용량을 초과합니다`,noColonyShip:`식민 임무를 위해 식민선이 필요합니다`,noDebrisAtTarget:`대상 좌표에 잔해장이 없거나 잔해장이 비어 있습니다`,noDeathstar:`파괴 임무를 위해 데스스타가 필요합니다`,giftMode:`선물 모드`,giftModeDescription:`자원을 선물로 보내기`,estimatedReputationGain:`예상 평판 획득`},officersView:{title:`장교`,activated:`활성화됨`,inactive:`비활성`,activeStatus:`활성 상태`,expirationTime:`만료 시간`,remainingTime:`남은 시간`,recruitCost:`모집 비용`,days:`일`,benefitsBonus:`효과 보너스`,resourceProduction:`자원 생산량`,darkMatterProduction:`암흑 물질 생산량`,energyProduction:`에너지 생산량`,buildingSpeed:`건설 속도`,researchSpeed:`연구 속도`,fleetSpeed:`함대 속도`,fuelConsumption:`연료 소비`,defense:`방어력`,storageCapacity:`저장 용량`,buildQueue:`건설 대기열`,fleetSlots:`함대 슬롯`,hire:`고용`,renew:`갱신`,dismiss:`해고`,hireTitle:`장교 고용`,hireMessage:`{name}을(를) 고용하시겠습니까? 유효 기간은 7일입니다.`,renewTitle:`장교 갱신`,renewMessage:`{name}을(를) 7일간 갱신하시겠습니까?`,dismissTitle:`장교 해고`,dismissMessage:`{name}을(를) 해고하시겠습니까? 비용은 환불되지 않습니다.`,hireFailed:`고용 실패`,renewFailed:`갱신 실패`,insufficientResources:`자원 부족!`},galaxyView:{title:`은하계`,selectCoordinates:`좌표 선택`,galaxy:`은하계`,diplomacy:`Diplomacy`,selectGalaxy:`은하계 선택`,system:`행성계`,selectSystem:`행성계 선택`,view:`보기`,myPlanet:`내 행성`,myPlanets:`내 행성계 보기`,npcPlanets:`NPC 행성들`,selectPlanetToView:`행성을 선택하여 행성계 보기`,totalPositions:`총 10개 행성 위치`,mine:`내 것`,hostile:`적대`,emptySlot:`빈 자리 - 식민 가능`,scout:`정찰`,attack:`공격`,missileAttack:`미사일 공격`,colonize:`식민`,switch:`전환`,recycle:`회수`,debrisField:`잔해 필드`,scoutPlanetTitle:`행성 정찰`,attackPlanetTitle:`행성 공격`,missileAttackTitle:`미사일 공격`,colonizePlanetTitle:`행성 식민`,recyclePlanetTitle:`잔해 회수`,scoutPlanetMessage:`행성 [{coordinates}]을(를) 정찰하기 위해 정찰기를 보내시겠습니까? + +함대 페이지로 이동하여 함선을 선택하고 파견하세요.`,attackPlanetMessage:`행성 [{coordinates}]을(를) 공격하시겠습니까? + +함대 페이지로 이동하여 함선을 선택하고 파견하세요.`,missileAttackMessage:`행성 [{coordinates}]에 행성간 미사일 발사`,missileCount:`미사일 수량`,availableMissiles:`사용 가능한 미사일`,missileRange:`미사일 사정거리`,systems:`시스템`,distance:`거리`,flightTime:`비행 시간`,launchMissile:`발사`,cancel:`취소`,colonizePlanetMessage:`위치 [{coordinates}]을(를) 식민하시겠습니까? + +함대 페이지로 이동하여 식민선을 파견하세요.`,recyclePlanetMessage:`위치 [{coordinates}]의 잔해를 회수하시겠습니까? + +함대 페이지로 이동하여 회수선을 파견하세요.`,sendGift:`선물 보내기`,debris:`잔해`,giftPlanetTitle:`선물 보내기`,giftPlanetMessage:`행성 [{coordinates}]에 자원을 선물로 보내시겠습니까? + +함대 페이지로 이동하여 수송선을 선택하고 자원을 적재하세요.`},messagesView:{title:`메시지 센터`,battles:`전투`,spy:`정찰`,npc:`NPC`,battleReports:`전투 보고서`,spyReports:`정찰 보고서`,noBattleReports:`전투 보고서 없음`,noSpyReports:`정찰 보고서 없음`,battleReport:`전투 보고서`,spyReport:`정찰 보고서`,victory:`승리`,defeat:`패배`,draw:`무승부`,attackerFleet:`공격자 함대`,defenderFleet:`방어자 함대`,defenderDefense:`방어자 방어`,attackerLosses:`공격자 손실`,defenderLosses:`방어자 손실`,noLosses:`손실 없음`,plunder:`약탈 자원`,debrisField:`잔해장`,resources:`자원`,fleet:`함대`,defense:`방어`,buildings:`건물`,unread:`읽지 않음`,targetPlanet:`목표 행성`,attackerRemaining:`공격자 잔여`,defenderRemaining:`방어자 잔여`,moonChance:`위성 생성 확률`,showRoundDetails:`라운드 상세 표시`,hideRoundDetails:`라운드 상세 숨기기`,round:`제{round}라운드`,attackerRemainingPower:`공격자 잔여 화력`,defenderRemainingPower:`방어자 잔여 화력`,spied:`정찰당함`,spiedNotification:`정찰 알림`,noSpiedNotifications:`정찰 알림 없음`,detected:`발견됨`,undetected:`미발견`,missions:`임무`,noMissionReports:`임무 보고서 없음`,success:`성공`,failed:`실패`,npcActivity:`NPC 활동`,noNPCActivity:`NPC 활동 알림 없음`,npcRecycleActivity:`NPC가 잔해 회수`,gifts:`선물`,giftRejected:`거부됨`,noGiftNotifications:`선물 알림 없음`,noGiftRejected:`거부된 기록 없음`,giftFrom:`{npcName}의 선물`,giftRejectedBy:`{npcName}가 선물을 거부했습니다`,giftResources:`선물 자원`,rejectedResources:`거부된 자원`,expectedReputation:`예상 평판`,currentReputation:`현재 평판`,acceptGift:`수락`,rejectGift:`거부`,rejectionReason:{hostile:`상대방이 적대적이어서 선물을 받지 않습니다`,neutral_distrust:`상대방이 당신을 신뢰하지 않습니다`,polite_decline:`정중하게 거절했습니다`}},missionReports:{transportSuccess:`수송 임무가 성공적으로 완료되었습니다`,transportFailed:`수송 임무 실패`,colonizeSuccess:`식민 임무 성공, 새로운 행성이 건설되었습니다`,colonizeFailed:`식민 임무 실패`,deploySuccess:`배치 임무가 성공적으로 완료되었습니다`,deployFailed:`배치 임무 실패`,recycleSuccess:`회수 임무가 성공적으로 완료되었습니다`,recycleFailed:`회수 임무 실패, 목표 위치에 잔해가 없습니다`,destroySuccess:`행성 파괴 임무가 성공적으로 실행되었습니다`,destroyFailed:`행성 파괴 임무 실패`},simulatorView:{title:`전투 시뮬레이터`,attacker:`공격자`,defender:`방어자`,attackerConfig:`공격자 설정`,attackerConfigDesc:`공격자의 함대와 기술 레벨 설정`,defenderConfig:`방어자 설정`,defenderConfigDesc:`방어자의 함대, 방어 및 기술 레벨 설정`,fleet:`함대`,defenseStructures:`방어 시설`,techLevels:`기술 레벨`,weapon:`무기`,shield:`실드`,armor:`장갑`,defenderResources:`방어자 자원 (약탈 계산용)`,startSimulation:`시뮬레이션 시작`,reset:`초기화`,battleResult:`전투 결과`,attackerVictory:`공격자 승리`,defenderVictory:`방어자 승리`,draw:`무승부`,afterRounds:`{rounds}회 전투 후`,attackerLosses:`공격자 손실`,defenderLosses:`방어자 손실`,noLosses:`손실 없음`,attackerRemaining:`공격자 잔여`,defenderRemaining:`방어자 잔여`,allDestroyed:`모두 파괴됨`,plunderableResources:`약탈 가능 자원`,debrisField:`잔해장`,moonChance:`위성 생성 확률`,showRoundDetails:`라운드 상세 표시`,hideRoundDetails:`라운드 상세 숨기기`,round:`제 {round} 라운드`,attackerRemainingPower:`공격자 잔여 화력`,defenderRemainingPower:`방어자 잔여 화력`},settings:{dataManagement:`데이터 관리`,dataManagementDesc:`게임 데이터 내보내기, 가져오기 또는 지우기`,exportData:`데이터 내보내기`,exportDataDesc:`게임 진행 상황을 JSON 파일로 내보내기`,export:`내보내기`,exporting:`내보내는 중...`,exportSuccess:`내보내기 성공`,exportFailed:`내보내기 실패, 다시 시도해주세요`,importData:`데이터 가져오기`,importDataDesc:`JSON 파일에서 게임 진행 상황 복원`,selectFile:`파일 선택`,importSuccess:`가져오기 성공`,importConfirmTitle:`가져오기 확인`,importConfirmMessage:`가져오기를 하면 현재 게임 진행 상황이 덮어쓰기됩니다. 이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?`,importFailed:`가져오기 실패, 파일 형식을 확인해주세요`,clearData:`데이터 지우기`,clearDataDesc:`모든 게임 데이터 삭제 및 초기화`,clear:`지우기`,clearConfirmTitle:`데이터 지우기 확인`,clearConfirmMessage:`모든 게임 데이터가 삭제되고 처음부터 시작됩니다. 이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?`,gameSettings:`게임 설정`,gameSettingsDesc:`게임 매개변수 및 설정 조정`,gamePause:`게임 일시정지`,gamePauseDesc:`게임 시간 및 자원 생산 일시정지 또는 재개`,pause:`일시정지`,resume:`재개`,gamePaused:`게임이 일시정지되었습니다`,gameResumed:`게임이 재개되었습니다`,playerName:`플레이어 이름`,gameSpeed:`자원 생산 속도`,gameSpeedDesc:`현재 자원 생산 속도 배율`,speedChanged:`자원 생산 속도가 {speed}x로 변경되었습니다`,speedReset:`자원 생산 속도가 1x로 재설정되었습니다`,reset:`재설정`,about:`정보`,version:`버전`,latestVersion:`최신 버전`,checkUpdate:`업데이트 확인`,checking:`확인 중...`,newVersionAvailable:`새 버전 {version} 사용 가능`,upToDate:`이미 최신 버전입니다`,checkUpdateCooldown:`나중에 다시 시도해주세요 (5분 쿨다운)`,checkUpdateFailed:`업데이트 확인 실패, 네트워크 연결을 확인하세요`,viewUpdate:`업데이트 보기`,updateAvailable:`새 버전이 사용 가능합니다. 릴리스 노트를 보려면 클릭하세요.`,download:`다운로드`,goToDownload:`다운로드로 이동`,buildDate:`빌드 날짜`,community:`커뮤니티`,github:`GitHub 저장소`,qqGroup:`QQ 그룹`},gmView:{title:`GM 제어판`,adminOnly:`관리자 전용`,selectPlanet:`행성 선택`,choosePlanet:`행성을 선택하세요`,resources:`자원`,buildings:`건물`,research:`연구`,ships:`함선`,defense:`방어`,officers:`장교`,modifyResources:`자원 수정`,resourcesDesc:`행성 자원을 빠르게 수정`,modifyBuildings:`건물 수정`,buildingsDesc:`건물 레벨을 빠르게 설정`,modifyResearch:`연구 수정`,researchDesc:`연구 레벨을 빠르게 설정`,modifyShips:`함선 수정`,shipsDesc:`함선 수량을 빠르게 설정`,modifyDefense:`방어 수정`,defenseDesc:`방어 수량을 빠르게 설정`,modifyOfficers:`장교 수정`,officersDesc:`장교 만료 시간을 빠르게 설정`,days:`일`,npcTesting:`NPC 테스트`,npcTestingDesc:`NPC 정찰 및 공격 동작 테스트`,selectNPC:`NPC 선택`,chooseNPC:`NPC를 선택하세요`,targetPlanet:`목표 행성`,chooseTarget:`목표 행성 선택`,testSpy:`정찰 테스트`,testAttack:`공격 테스트`,testSpyAndAttack:`정찰 & 공격 테스트`,testSpyMessage:`확인을 클릭하여 정찰 임무를 가속화`,testAttackMessage:`확인을 클릭하여 공격 임무를 가속화`,testSpyAndAttackMessage:`확인을 클릭하여 임무를 가속화`,initializeFleet:`NPC 함대 초기化`,accelerateMissions:`모든 임무 가속(5초)`,selectNPCFirst:`먼저 NPC를 선택하세요`,npcNoProbes:`NPC에 정찰 프로브가 없습니다`,npcNoSpyReport:`NPC가 먼저 정찰해야 합니다`,npcMissionFailed:`임무 생성 실패`,npcNoPlanets:`NPC에 행성이 없습니다`,npcWillSpyIn5s:`{npcName}이(가) 5초 후에 정찰합니다`,npcWillAttackIn5s:`{npcName}이(가) 5초 후에 공격합니다`,npcWillSpyAndAttack:`{npcName}이(가) 5초 후에 정찰하고 10초 후에 공격합니다`,acceleratedMissions:`{count}개의 임무를 5초로 가속화했습니다`,npcFleetInitialized:`{npcName} 함대가 초기화되었습니다`,npcFleetDetails:`100 정찰 프로브 +500 경전투기 +300 중전투기 +200 순양함 +100 전함 +50 폭격기 +30 구축함 +20 순양전함`,dangerZone:`위험 구역`,dangerZoneDesc:`다음 작업은 되돌릴 수 없습니다`,resetGame:`게임 초기화`,resetGameConfirm:`게임을 초기화하시겠습니까? 모든 데이터가 삭제됩니다!`},alerts:{npcSpyIncoming:`NPC 정찰 프로브 접근 중`,npcAttackIncoming:`NPC 함대 공격 진행 중!`,npcFleetIncoming:`NPC 함대 접근 중`,ships:`척`,spiedBy:`정찰당함`,attackedBy:`공격당함`,detectionSuccess:`정찰 발견됨`,detectionFailed:`정찰 미발견`,npcSpiedYourPlanet:`NPC가 당신의 행성을 정찰했습니다`,npcAttackedYourPlanet:`NPC가 당신의 행성을 공격했습니다`},diplomacy:{title:`외교`,description:`NPC와의 외교 관계 관리`,tabs:{all:`전체`,friendly:`우호적`,neutral:`중립`,hostile:`적대적`},noNpcs:`NPC 없음`,noFriendlyNpcs:`우호적인 NPC 없음`,noNeutralNpcs:`중립적인 NPC 없음`,noHostileNpcs:`적대적인 NPC 없음`,recentEvents:`최근 이벤트`,recentEventsDescription:`최근 외교 활동 로그`,ago:`전`,status:{friendly:`우호적`,neutral:`중립`,hostile:`적대적`},planets:`행성`,allies:`동맹`,reputation:`평판`,alliedWith:`동맹 관계`,more:`더보기`,actions:{gift:`선물 보내기`,viewPlanets:`행성 보기`},lastEvent:`최근 이벤트`,events:{gift:`선물 전송`,attack:`공격`,missileAttack:`미사일 공격`,allyAttacked:`동맹 공격당함`,spy:`정찰`,stealDebris:`잔해 약탈`},reports:{giftedResources:`{metal}M {crystal}C {deuterium}D 선물함`,receivedGiftFromPlayer:`플레이어로부터 선물을 받았습니다`,giftedToNpc:`{npcName}에게 자원을 선물했습니다. 평판 +{reputation}`,rejectedPlayerGift:`플레이어의 선물을 거부했습니다`,npcRejectedGift:`{npcName}이(가) 당신의 선물을 거부했습니다. 평판 {reputation}`,attackedNpc:`{npcName}을(를) 공격했습니다`,wasAttackedByPlayer:`플레이어에게 공격당했습니다`,youAttackedNpc:`당신은 {npcName}을(를) 공격했습니다`,playerAttackedAlly:`플레이어가 동맹 {allyName}을(를) 공격했습니다`,allyDispleased:`{allyName}은(는) 당신이 동맹 {targetName}을(를) 공격한 것에 불만입니다`,wasSpiedByPlayer:`플레이어에게 정찰당했습니다 (발견: {detected})`,spyDetected:`당신의 정찰이 {npcName}에게 발견되었습니다`,stoleDebrisFromTerritory:`{npcName}의 영역에서 잔해를 약탈했습니다`,playerStoleDebris:`플레이어가 영역에서 잔해를 약탈했습니다`,recycledDebrisNearNpc:`{npcName}의 행성 근처에서 잔해를 수집했습니다. 그들은 불만족스러워합니다.`,giftedResourcesToPlayer:`플레이어에게 자원을 선물했습니다`,receivedGiftFromNpc:`{npcName}로부터 선물을 받았습니다`,acceptedGiftFromNpc:`{npcName}의 선물을 받았습니다: {metal}M {crystal}C {deuterium}D`,playerRejectedGift:`플레이어가 선물을 거부했습니다`,rejectedGiftFromNpc:`{npcName}의 선물을 거부했습니다. 평판 {reputation}`}},pagination:{previous:`이전`,next:`다음`,first:`처음`,last:`마지막`,page:`{page}페이지`},notFound:{title:`페이지를 찾을 수 없습니다`,description:`죄송합니다. 찾으시는 페이지가 존재하지 않습니다`,goHome:`홈으로 이동`}},o={common:{confirm:`確認`,cancel:`キャンセル`,delete:`削除`,edit:`編集`,save:`保存`,close:`閉じる`,back:`戻る`,next:`次へ`,previous:`前へ`,submit:`送信`,reset:`リセット`,search:`検索`,filter:`フィルター`,loading:`読み込み中...`,noData:`データなし`,error:`エラー`,success:`成功`,warning:`警告`,info:`情報`,resourceType:`資源タイプ`,playerName:`司令官`,timeHour:`時間`,timeMinute:`分`,timeSecond:`秒`,featureLocked:`機能がロックされています`,unlockRequired:`建物が必要です`,requiredBuilding:`必要な建物`,currentLevel:`現在のレベル`,goToBuildings:`建物へ移動`,locked:`ロック済み`,viewRequirements:`必要条件を表示`,requirementsNotMet:`必要条件が満たされていません`,current:`現在`,level:`レベル`,gmModeActivated:`GMモードが有効になりました!ナビゲーションメニューをご確認ください。`},errors:{requirementsNotMet:`前提条件を満たしていません`,insufficientResources:`資源が不足しています`,insufficientFleetStorage:`艦隊ストレージが不足しています`,shieldDomeLimit:`シールドドームの上限に達しました`,missileSiloLimit:`ミサイル格納庫の容量を超えています`,insufficientMissiles:`惑星間ミサイルが不足しています`,invalidMissileCount:`ミサイル数が無効です`,targetOutOfRange:`ターゲットが射程外です`,cannotAttackOwnPlanet:`自分の惑星を攻撃できません`,fleetMissionsFull:`艦隊ミッションスロットが満杯です`,insufficientFleet:`艦隊が不足しています`,insufficientFuel:`燃料が不足しています`,planetOnly:`この建物は惑星でのみ建設できます`,moonOnly:`この建物は月でのみ建設できます`,buildQueueFull:`建設キューが満杯です`,insufficientSpace:`スペースが不足しています`,buildingLevelZero:`建物レベルが0のため、解体できません`,researchQueueFull:`研究キューが満杯です`,moonExists:`月は既に存在します`,insufficientDebris:`残骸フィールドが不足しています`},nav:{overview:`概要`,buildings:`建物`,research:`研究`,shipyard:`造船所`,defense:`防衛`,fleet:`艦隊`,officers:`士官`,simulator:`シミュレーター`,galaxy:`銀河`,diplomacy:`Diplomacy`,messages:`メッセージ`,settings:`設定`,gm:`GM`},sidebar:{language:`言語`,lightMode:`ライトモード`,darkMode:`ダークモード`,collapse:`メニューを閉じる`,expand:`メニューを開く`},resources:{metal:`金属`,crystal:`クリスタル`,deuterium:`重水素`,darkMatter:`ダークマター`,energy:`エネルギー`,production:`生産量`,consumption:`消費量`,capacity:`容量`,current:`現在の貯蔵量`,max:`最大容量`,perHour:`時間`,perMinute:`分`,hour:`時間`,noEnergy:`エネルギー不足`},planet:{planet:`惑星`,moon:`月`,colony:`コロニー`,position:`位置`,coordinates:`座標`,switchToMoon:`月を表示`,backToPlanet:`母星に戻る`,switchPlanet:`惑星を切り替える`,currentPlanet:`現在の惑星`,fields:`フィールド`,temperature:`温度`,homePlanet:`母星`,planetPrefix:`惑星`,moonSuffix:`の月`,colonyPrefix:`コロニー`},player:{points:`総ポイント`},buildings:{metalMine:`金属鉱山`,crystalMine:`クリスタル鉱山`,deuteriumSynthesizer:`重水素合成装置`,solarPlant:`太陽光発電所`,fusionReactor:`核融合炉`,roboticsFactory:`ロボット工場`,naniteFactory:`ナノマシン工場`,shipyard:`造船所`,researchLab:`研究所`,metalStorage:`金属倉庫`,crystalStorage:`クリスタル倉庫`,deuteriumTank:`重水素タンク`,darkMatterCollector:`ダークマター採取装置`,darkMatterTank:`ダークマタータンク`,missileSilo:`ミサイル格納庫`,terraformer:`テラフォーマー`,lunarBase:`月面基地`,sensorPhalanx:`センサーファランクス`,jumpGate:`ジャンプゲート`,planetDestroyerFactory:`惑星破壊工場`,buildTime:`建設時間`,production:`生産量`,consumption:`消費`,totalCost:`総コスト`,totalPoints:`総ポイント`,levelRange:`レベル範囲`,capacity:`Capacity/Effect`,storageCapacity:`Capacity`,energyProduction:`Energy Production`,fleetStorage:`Fleet Storage`,buildQueue:`Build Queue`,buildQueueBonus:`建造隊列`,spaceBonus:`スペースボーナス`,buildSpeedBonus:`建設速度ボーナス`,researchSpeedBonus:`研究速度ボーナス`,planetSpace:`Planet Space`,moonSpace:`Moon Space`,missileCapacity:`Missile Capacity`},buildingDescriptions:{metalMine:`金属資源を採掘`,crystalMine:`クリスタル資源を採掘`,deuteriumSynthesizer:`重水素資源を合成`,solarPlant:`エネルギーを供給`,fusionReactor:`重水素を使用して大量のエネルギーを生成`,roboticsFactory:`建設速度を向上`,naniteFactory:`建設キュー数を増加、レベル毎に+1(最大10レベル)`,shipyard:`艦船を建造`,researchLab:`技術を研究`,metalStorage:`金属の貯蔵上限を増加`,crystalStorage:`クリスタルの貯蔵上限を増加`,deuteriumTank:`重水素の貯蔵上限を増加`,darkMatterCollector:`希少なダークマター資源を収集`,darkMatterTank:`ダークマターの貯蔵上限を増加`,missileSilo:`ミサイルを保管・発射、レベル毎に10発`,terraformer:`惑星地形を改造、レベル毎に利用可能スペース30増加`,lunarBase:`月の利用可能スペースを増加、レベル毎に+30スペース`,sensorPhalanx:`周辺星系の艦隊活動を探知`,jumpGate:`他の月へ艦隊を瞬間移動`,planetDestroyerFactory:`惑星を破壊できる究極兵器を建造`},ships:{lightFighter:`軽戦闘機`,heavyFighter:`重戦闘機`,cruiser:`巡洋艦`,battleship:`戦艦`,battlecruiser:`巡洋戦艦`,bomber:`爆撃機`,destroyer:`駆逐艦`,smallCargo:`小型輸送船`,largeCargo:`大型輸送船`,colonyShip:`コロニーシップ`,recycler:`リサイクラー`,espionageProbe:`スパイプローブ`,solarSatellite:`太陽光衛星`,darkMatterHarvester:`ダークマター採取船`,deathstar:`デススター`},shipDescriptions:{lightFighter:`基本戦闘ユニット`,heavyFighter:`重装甲戦闘機`,cruiser:`中型戦艦、攻守バランス型`,battleship:`強力な戦艦`,battlecruiser:`高速強力な戦闘艦、戦艦への攻撃に優れる`,bomber:`防御施設への攻撃に特化した艦船`,destroyer:`大型艦の破壊に特化したハンター`,smallCargo:`少量の資源を輸送`,largeCargo:`大量の資源を輸送`,colonyShip:`新惑星の植民に使用`,recycler:`デブリフィールドの資源を回収`,espionageProbe:`敵惑星を偵察`,solarSatellite:`追加エネルギーを提供、衛星1つにつき50エネルギー生成`,darkMatterHarvester:`ダークマター採取専用の特殊艦`,deathstar:`惑星全体を破壊できる究極兵器`},defenses:{rocketLauncher:`ロケットランチャー`,lightLaser:`ライトレーザー`,heavyLaser:`ヘビーレーザー`,gaussCannon:`ガウスキャノン`,ionCannon:`イオンキャノン`,plasmaTurret:`プラズマタレット`,smallShieldDome:`小型シールドドーム`,largeShieldDome:`大型シールドドーム`,antiBallisticMissile:`迎撃ミサイル`,interplanetaryMissile:`惑星間ミサイル`,planetaryShield:`惑星シールド`},defenseDescriptions:{rocketLauncher:`基本防衛施設`,lightLaser:`軽量エネルギー兵器`,heavyLaser:`重型エネルギー兵器`,gaussCannon:`高速運動エネルギー兵器`,ionCannon:`シールド破壊に効果的`,plasmaTurret:`強力な防衛施設`,smallShieldDome:`惑星全体を保護する小型シールド`,largeShieldDome:`惑星全体を保護する大型シールド`,antiBallisticMissile:`敵ミサイルを迎撃、惑星間ミサイル1発を迎撃可能`,interplanetaryMissile:`他の惑星の防御施設を攻撃可能`,planetaryShield:`破壊攻撃から惑星を保護する超級シールド`},research:{researchTime:`研究時間`,totalCost:`総コスト`,totalPoints:`総ポイント`,levelRange:`レベル範囲`,capacity:`Capacity/Effect`,storageCapacity:`Capacity`,energyProduction:`Energy Production`,fleetStorage:`Fleet Storage`,buildQueue:`Build Queue`,planetSpace:`Planet Space`,moonSpace:`Moon Space`,missileCapacity:`Missile Capacity`},technologies:{energyTechnology:`エネルギー技術`,laserTechnology:`レーザー技術`,ionTechnology:`イオン技術`,hyperspaceTechnology:`ハイパースペース技術`,plasmaTechnology:`プラズマ技術`,computerTechnology:`コンピューター技術`,espionageTechnology:`スパイ技術`,weaponsTechnology:`兵器技術`,shieldingTechnology:`シールド技術`,armourTechnology:`装甲技術`,astrophysics:`天体物理学`,gravitonTechnology:`重力技術`,combustionDrive:`燃焼ドライブ`,impulseDrive:`インパルスドライブ`,hyperspaceDrive:`ハイパースペースドライブ`,darkMatterTechnology:`ダークマター技術`,terraformingTechnology:`テラフォーミング技術`,planetDestructionTech:`惑星破壊技術`},technologyDescriptions:{energyTechnology:`エネルギー利用効率を向上`,laserTechnology:`レーザー兵器と防衛の基礎`,ionTechnology:`イオン兵器技術`,hyperspaceTechnology:`ハイパースペースジャンプ技術`,plasmaTechnology:`プラズマ兵器技術`,computerTechnology:`研究キュー数を増加、レベル毎に+1(最大10レベル)`,espionageTechnology:`スパイ探査機の効果を向上、レベル毎に偵察深度+1`,weaponsTechnology:`艦船と防御の攻撃力をレベル毎に10%増加`,shieldingTechnology:`艦船と防御のシールドをレベル毎に10%増加`,armourTechnology:`艦船と防御の装甲をレベル毎に10%増加`,astrophysics:`レベル毎に植民地スロット+1、探検成功率を向上`,gravitonTechnology:`重力操作を研究、デススターに必要`,combustionDrive:`基本推進技術`,impulseDrive:`中級推進技術`,hyperspaceDrive:`高級推進技術`,darkMatterTechnology:`ダークマターの性質と応用を研究`,terraformingTechnology:`惑星地形改造技術を研究、レベル毎に全惑星の利用可能スペース30増加`,planetDestructionTech:`惑星全体を破壊する恐怖の技術を研究`},officers:{commander:`司令官`,admiral:`提督`,engineer:`エンジニア`,geologist:`地質学者`,technocrat:`技術専門家`,darkMatterSpecialist:`ダークマター専門家`,resourceBonus:`資源生産ボーナス`,darkMatterBonus:`ダークマター生産ボーナス`,energyBonus:`エネルギー生産ボーナス`},officerDescriptions:{commander:`建設速度と管理能力を向上`,admiral:`艦隊戦闘力と速度を向上`,engineer:`エネルギーと防御力を向上`,geologist:`資源生産量を向上`,technocrat:`研究速度と偵察能力を向上`,darkMatterSpecialist:`ダークマター採取効率を向上`},queue:{buildQueue:`建設キュー`,researchQueue:`研究キュー`,building:`建設中`,researching:`研究中`,remaining:`残り時間`,cancel:`キャンセル`,cancelBuild:`建設キャンセル`,cancelResearch:`研究キャンセル`,confirmCancel:`キャンセルしますか?資源の50%が返還されます。`,level:`レベル`,gmModeActivated:``,upgradeToLevel:`レベルにアップグレード`},shipyard:{attack:`攻撃力`,missileAttack:`ミサイル攻撃`,shield:`シールド`,armor:`装甲`,speed:`速度`,cargoCapacity:`貨物容量`,fuelConsumption:`燃料消費`,buildCost:`建設コスト`,buildTime:`建設時間`,perUnit:`ユニットあたり`,batchCalculator:`一括計算機`,quantity:`数量`,totalCost:`総コスト`,totalTime:`総時間`},overview:{title:`惑星概要`,resourceOverview:`資源概要`,fleetInfo:`艦隊`,currentShips:`現在の惑星の艦船数`,productionSources:`生産源`,productionSourcesDesc:`詳細な資源生産とボーナス情報`,consumptionSources:`消費源`,consumptionSourcesDesc:`建物のエネルギー消費詳細`,totalProduction:`総生産量`,totalConsumption:`総消費量`,noConsumption:`エネルギー消費なし`},buildingsView:{title:`建物`,usedSpace:`使用済みスペース`,spaceUsage:`スペース使用量`,level:`レベル`,gmModeActivated:``,upgradeCost:`アップグレードコスト`,buildTime:`建設時間`,upgrade:`アップグレード`,maxLevelReached:`最大レベルに達しました`,requirementsNotMet:`要件が満たされていません`,upgradeFailed:`アップグレード失敗`,upgradeFailedMessage:`資源が十分か、スペースが十分か、または他の建設タスクがないか確認してください。`,demolish:`解体`,demolishRefund:`解体返還`,demolishFailed:`解体失敗`,demolishFailedMessage:`この建物を解体できません。建設キューが満杯か、建物レベルが0でないか確認してください。`,confirmDemolish:`解体確認`,confirmDemolishMessage:`以下の建物を解体しますか?`},researchView:{title:`研究`,researchCost:`研究コスト`,research:`研究`,maxLevelReached:`最大レベルに達しました`,researchFailed:`研究失敗`,researchFailedMessage:`資源が十分か、前提条件が満たされているか、または他の研究タスクがないか確認してください。`},defense:{attack:`攻撃力`,missileAttack:`ミサイル攻撃`,shield:`シールド`,armor:`装甲`,buildCost:`建設コスト`,buildTime:`建設時間`,perUnit:`ユニットあたり`,batchCalculator:`一括計算機`,quantity:`数量`,totalCost:`総コスト`,totalTime:`総時間`},shipyardView:{title:`造船所`,fleetStorage:`艦隊ストレージ`,attack:`攻撃力`,missileAttack:`ミサイル攻撃`,shield:`シールド`,speed:`速度`,cargoCapacity:`積載量`,unitCost:`ユニットコスト`,buildQuantity:`建造数`,totalCost:`総コスト`,build:`建造`,inputError:`入力エラー`,inputErrorMessage:`建造数を入力してください!`,buildFailed:`建造失敗`,buildFailedMessage:`資源が十分か、前提条件が満たされているか確認してください。`},defenseView:{title:`防衛施設`,attack:`攻撃力`,missileAttack:`ミサイル攻撃`,shield:`シールド`,armor:`装甲`,buildTime:`建設時間`,seconds:`秒`,unitCost:`ユニットコスト`,buildQuantity:`建造数`,totalCost:`総コスト`,build:`建造`,shieldDomeBuilt:`シールドドーム建設済み`,missileCapacity:`ミサイル容量`,inputError:`入力エラー`,inputErrorMessage:`建造数を入力してください!`,buildFailed:`建造失敗`,buildFailedMessage:`資源が十分か、前提条件が満たされているか確認してください。シールドドームは1つのみ建設できます。`},fleetView:{title:`艦隊管理`,fleetOverview:`艦隊概要`,sendFleet:`艦隊派遣`,flightMissions:`飛行ミッション`,currentPlanetFleet:`現在の惑星艦隊`,attack:`攻撃`,missileAttack:`ミサイル攻撃`,shield:`シールド`,armor:`装甲`,speed:`速度`,cargo:`貨物`,selectFleet:`艦隊選択`,selectFleetDescription:`派遣する艦船数を選択`,available:`利用可能`,all:`全て`,targetCoordinates:`目標座標`,galaxy:`銀河`,diplomacy:`Diplomacy`,system:`星系`,position:`位置`,missionType:`ミッションタイプ`,missionInfo:`ミッション情報`,fuelConsumption:`燃料消費`,flightTime:`飛行時間`,attackMission:`攻撃`,transport:`輸送`,colonize:`植民`,spy:`偵察`,deploy:`配備`,recycle:`回収`,transportResources:`資源輸送`,totalCargoCapacity:`総積載量`,used:`使用済み`,noFlightMissions:`飛行ミッションなし`,outbound:`往路`,returning:`帰路`,fleetComposition:`艦隊構成`,carryingResources:`運搬資源`,arrivalTime:`到着時刻`,returnTime:`帰還時刻`,recallFleet:`艦隊召還`,sendFailed:`派遣失敗`,sendFailedMessage:`艦隊数、燃料の充足、または積載量の制限を確認してください。`,recallFailed:`召還失敗`,recallFailedMessage:`このミッションは召還できません。`,unknownPlanet:`未知の惑星`,fleetMissionSlots:`艦隊ミッションスロット`,noShipsSelected:`艦船が選択されていません`,cannotSendToOwnPlanet:`自分の惑星に艦隊を派遣できません`,cargoExceedsCapacity:`積載量が容量を超えています`,noColonyShip:`植民ミッションにはコロニーシップが必要です`,noDebrisAtTarget:`目標座標にデブリフィールドがないか、デブリフィールドが空です`,noDeathstar:`破壊ミッションにはデススターが必要です`,giftMode:`ギフトモード`,giftModeDescription:`資源を贈り物として送る`,estimatedReputationGain:`推定評判獲得`},officersView:{title:`士官`,activated:`アクティブ`,inactive:`非アクティブ`,activeStatus:`アクティブ状態`,expirationTime:`期限切れ時刻`,remainingTime:`残り時間`,recruitCost:`募集コスト`,days:`日`,benefitsBonus:`効果ボーナス`,resourceProduction:`資源生産量`,darkMatterProduction:`ダークマター生産量`,energyProduction:`エネルギー生産量`,buildingSpeed:`建設速度`,researchSpeed:`研究速度`,fleetSpeed:`艦隊速度`,fuelConsumption:`燃料消費`,defense:`防御力`,storageCapacity:`貯蔵容量`,buildQueue:`建設キュー`,fleetSlots:`艦隊スロット`,hire:`雇用`,renew:`更新`,dismiss:`解雇`,hireTitle:`士官雇用`,hireMessage:`{name}を雇用しますか?有効期限は7日間です。`,renewTitle:`士官更新`,renewMessage:`{name}を7日間更新しますか?`,dismissTitle:`士官解雇`,dismissMessage:`{name}を解雇しますか?費用は返金されません。`,hireFailed:`雇用失敗`,renewFailed:`更新失敗`,insufficientResources:`資源不足!`},galaxyView:{title:`銀河`,selectCoordinates:`座標選択`,galaxy:`銀河`,diplomacy:`Diplomacy`,selectGalaxy:`銀河を選択`,system:`星系`,selectSystem:`星系を選択`,view:`表示`,myPlanet:`自分の惑星`,myPlanets:`自分の星系を表示`,npcPlanets:`NPCの惑星`,selectPlanetToView:`惑星を選択して星系を表示`,totalPositions:`全10惑星位置`,mine:`自分`,hostile:`敵対`,emptySlot:`空き - 植民可能`,scout:`偵察`,attack:`攻撃`,missileAttack:`ミサイル攻撃`,colonize:`植民`,switch:`切り替え`,recycle:`回収`,debrisField:`デブリフィールド`,scoutPlanetTitle:`惑星偵察`,attackPlanetTitle:`惑星攻撃`,missileAttackTitle:`ミサイル攻撃`,colonizePlanetTitle:`惑星植民`,recyclePlanetTitle:`デブリ回収`,scoutPlanetMessage:`惑星[{coordinates}]にスパイプローブを送りますか? + +艦隊ページに移動して艦船を選択して派遣してください。`,attackPlanetMessage:`惑星[{coordinates}]を攻撃しますか? + +艦隊ページに移動して艦船を選択して派遣してください。`,missileAttackMessage:`惑星[{coordinates}]に惑星間ミサイルを発射`,missileCount:`ミサイル数`,availableMissiles:`利用可能なミサイル`,missileRange:`ミサイル射程`,systems:`システム`,distance:`距離`,flightTime:`飛行時間`,launchMissile:`発射`,cancel:`キャンセル`,colonizePlanetMessage:`位置[{coordinates}]を植民しますか? + +艦隊ページに移動してコロニーシップを派遣してください。`,recyclePlanetMessage:`位置[{coordinates}]のデブリを回収しますか? + +艦隊ページに移動してリサイクラーを派遣してください。`,sendGift:`ギフト送信`,debris:`破片`,giftPlanetTitle:`ギフト送信`,giftPlanetMessage:`惑星[{coordinates}]にリソースを贈りますか? + +艦隊ページに移動して輸送船を選択し、リソースを積載してください。`},messagesView:{title:`メッセージセンター`,battles:`戦闘`,spy:`スパイ`,npc:`NPC`,battleReports:`戦闘レポート`,spyReports:`スパイレポート`,noBattleReports:`戦闘レポートなし`,noSpyReports:`スパイレポートなし`,battleReport:`戦闘レポート`,spyReport:`スパイレポート`,victory:`勝利`,defeat:`敗北`,draw:`引き分け`,attackerFleet:`攻撃側艦隊`,defenderFleet:`防御側艦隊`,defenderDefense:`防御側防衛`,attackerLosses:`攻撃側損失`,defenderLosses:`防御側損失`,noLosses:`損失なし`,plunder:`略奪資源`,debrisField:`デブリフィールド`,resources:`資源`,fleet:`艦隊`,defense:`防衛`,buildings:`建物`,unread:`未読`,targetPlanet:`目標惑星`,attackerRemaining:`攻撃側残存`,defenderRemaining:`防御側残存`,moonChance:`月生成確率`,showRoundDetails:`ラウンド詳細表示`,hideRoundDetails:`ラウンド詳細非表示`,round:`第{round}ラウンド`,attackerRemainingPower:`攻撃側残存火力`,defenderRemainingPower:`防御側残存火力`,spied:`偵察された`,spiedNotification:`偵察通知`,noSpiedNotifications:`偵察通知はありません`,detected:`発見された`,undetected:`未発見`,missions:`ミッション`,noMissionReports:`ミッションレポートなし`,success:`成功`,failed:`失敗`,npcActivity:`NPC活動`,noNPCActivity:`NPC活動通知はありません`,npcRecycleActivity:`NPCがデブリを回収`,gifts:`ギフト`,giftRejected:`拒否`,noGiftNotifications:`ギフト通知はありません`,noGiftRejected:`拒否された記録はありません`,giftFrom:`{npcName}からのギフト`,giftRejectedBy:`{npcName}がギフトを拒否しました`,giftResources:`ギフトリソース`,rejectedResources:`拒否されたリソース`,expectedReputation:`期待される評判`,currentReputation:`現在の評判`,acceptGift:`受け取る`,rejectGift:`拒否`,rejectionReason:{hostile:`相手は敵対的でギフトを受け取りません`,neutral_distrust:`相手はあなたを信頼していません`,polite_decline:`丁重に断りました`}},missionReports:{transportSuccess:`輸送ミッションが正常に完了しました`,transportFailed:`輸送ミッションが失敗しました`,colonizeSuccess:`植民ミッション成功、新しい惑星が確立されました`,colonizeFailed:`植民ミッションが失敗しました`,deploySuccess:`配備ミッションが正常に完了しました`,deployFailed:`配備ミッションが失敗しました`,recycleSuccess:`回収ミッションが正常に完了しました`,recycleFailed:`回収ミッションが失敗しました。目標位置にデブリがありません`,destroySuccess:`惑星破壊ミッションが正常に実行されました`,destroyFailed:`惑星破壊ミッションが失敗しました`},simulatorView:{title:`戦闘シミュレーター`,attacker:`攻撃側`,defender:`防御側`,attackerConfig:`攻撃側設定`,attackerConfigDesc:`攻撃側の艦隊と技術レベルを設定`,defenderConfig:`防御側設定`,defenderConfigDesc:`防御側の艦隊、防衛、技術レベルを設定`,fleet:`艦隊`,defenseStructures:`防衛施設`,techLevels:`技術レベル`,weapon:`武器`,shield:`シールド`,armor:`装甲`,defenderResources:`防御側資源(略奪計算用)`,startSimulation:`シミュレーション開始`,reset:`リセット`,battleResult:`戦闘結果`,attackerVictory:`攻撃側勝利`,defenderVictory:`防御側勝利`,draw:`引き分け`,afterRounds:`{rounds}ラウンド後`,attackerLosses:`攻撃側損失`,defenderLosses:`防御側損失`,noLosses:`損失なし`,attackerRemaining:`攻撃側残存`,defenderRemaining:`防御側残存`,allDestroyed:`全て破壊`,plunderableResources:`略奪可能資源`,debrisField:`デブリフィールド`,moonChance:`月生成確率`,showRoundDetails:`ラウンド詳細表示`,hideRoundDetails:`ラウンド詳細非表示`,round:`第{round}ラウンド`,attackerRemainingPower:`攻撃側残存火力`,defenderRemainingPower:`防御側残存火力`},settings:{dataManagement:`データ管理`,dataManagementDesc:`ゲームデータのエクスポート、インポート、またはクリア`,exportData:`データエクスポート`,exportDataDesc:`ゲームの進行状況をJSONファイルとしてエクスポート`,export:`エクスポート`,exporting:`エクスポート中...`,exportSuccess:`エクスポート成功`,exportFailed:`エクスポートに失敗しました。もう一度お試しください`,importData:`データインポート`,importDataDesc:`JSONファイルからゲームの進行状況を復元`,selectFile:`ファイルを選択`,importSuccess:`インポート成功`,importConfirmTitle:`インポート確認`,importConfirmMessage:`インポートすると現在のゲームの進行状況が上書きされます。この操作は元に戻せません。続行しますか?`,importFailed:`インポートに失敗しました。ファイル形式を確認してください`,clearData:`データクリア`,clearDataDesc:`すべてのゲームデータを削除してリセット`,clear:`クリア`,clearConfirmTitle:`データクリア確認`,clearConfirmMessage:`すべてのゲームデータが削除され、最初からやり直します。この操作は元に戻せません。続行しますか?`,gameSettings:`ゲーム設定`,gameSettingsDesc:`ゲームパラメータと設定を調整`,gamePause:`ゲーム一時停止`,gamePauseDesc:`ゲーム時間と資源生産を一時停止または再開`,pause:`一時停止`,resume:`再開`,gamePaused:`ゲームを一時停止しました`,gameResumed:`ゲームを再開しました`,playerName:`プレイヤー名`,gameSpeed:`資源生産速度`,gameSpeedDesc:`現在の資源生産速度倍率`,speedChanged:`資源生産速度を{speed}xに変更しました`,speedReset:`資源生産速度を1xにリセットしました`,reset:`リセット`,about:`について`,version:`バージョン`,latestVersion:`最新バージョン`,checkUpdate:`アップデート確認`,checking:`確認中...`,newVersionAvailable:`新バージョン{version}が利用可能です`,upToDate:`最新バージョンです`,checkUpdateCooldown:`しばらくしてから再度お試しください(5分間のクールダウン)`,checkUpdateFailed:`アップデートの確認に失敗しました。ネットワーク接続を確認してください`,viewUpdate:`更新を表示`,updateAvailable:`新しいバージョンが利用可能です。クリックしてリリースノートを表示します。`,download:`ダウンロード`,goToDownload:`ダウンロードへ`,buildDate:`ビルド日`,community:`コミュニティ`,github:`GitHubリポジトリ`,qqGroup:`QQグループ`},gmView:{title:`GMコントロールパネル`,adminOnly:`管理者専用`,selectPlanet:`惑星を選択`,choosePlanet:`惑星を選択してください`,resources:`資源`,buildings:`建物`,research:`研究`,ships:`艦船`,defense:`防衛`,officers:`士官`,modifyResources:`資源を変更`,resourcesDesc:`惑星の資源を素早く変更`,modifyBuildings:`建物を変更`,buildingsDesc:`建物レベルを素早く設定`,modifyResearch:`研究を変更`,researchDesc:`研究レベルを素早く設定`,modifyShips:`艦船を変更`,shipsDesc:`艦船数を素早く設定`,modifyDefense:`防衛を変更`,defenseDesc:`防衛数を素早く設定`,modifyOfficers:`士官を変更`,officersDesc:`士官の有効期限を素早く設定`,days:`日`,npcTesting:`NPCテスト`,npcTestingDesc:`NPCの偵察と攻撃動作をテスト`,selectNPC:`NPCを選択`,chooseNPC:`NPCを選択してください`,targetPlanet:`ターゲット惑星`,chooseTarget:`ターゲット惑星を選択`,testSpy:`偵察テスト`,testAttack:`攻撃テスト`,testSpyAndAttack:`偵察&攻撃テスト`,testSpyMessage:`確認をクリックして偵察ミッションを加速`,testAttackMessage:`確認をクリックして攻撃ミッションを加速`,testSpyAndAttackMessage:`確認をクリックしてミッションを加速`,initializeFleet:`NPC艦隊を初期化`,accelerateMissions:`すべてのミッションを加速(5秒)`,selectNPCFirst:`最初にNPCを選択してください`,npcNoProbes:`NPCには偵察プローブがありません`,npcNoSpyReport:`NPCは最初に偵察する必要があります`,npcMissionFailed:`ミッションの作成に失敗しました`,npcNoPlanets:`NPCに惑星がありません`,npcWillSpyIn5s:`{npcName}は5秒後に偵察します`,npcWillAttackIn5s:`{npcName}は5秒後に攻撃します`,npcWillSpyAndAttack:`{npcName}は5秒後に偵察し、10秒後に攻撃します`,acceleratedMissions:`{count}個のミッションを5秒後に加速しました`,npcFleetInitialized:`{npcName}艦隊が初期化されました`,npcFleetDetails:`100 偵察プローブ +500 軽戦闘機 +300 重戦闘機 +200 巡洋艦 +100 戦艦 +50 爆撃機 +30 駆逐艦 +20 巡洋戦艦`,dangerZone:`危険ゾーン`,dangerZoneDesc:`以下の操作は元に戻せません`,resetGame:`ゲームをリセット`,resetGameConfirm:`ゲームをリセットしてもよろしいですか?すべてのデータが削除されます!`},alerts:{npcSpyIncoming:`NPC偵察プローブが接近中`,npcAttackIncoming:`NPC艦隊攻撃が接近中!`,npcFleetIncoming:`NPC艦隊が接近中`,ships:`隻`,spiedBy:`偵察された`,attackedBy:`攻撃された`,detectionSuccess:`偵察が発見された`,detectionFailed:`偵察が発見されなかった`,npcSpiedYourPlanet:`NPCがあなたの惑星を偵察しました`,npcAttackedYourPlanet:`NPCがあなたの惑星を攻撃しました`},diplomacy:{title:`外交`,description:`NPCとの外交関係を管理`,tabs:{all:`すべて`,friendly:`友好的`,neutral:`中立`,hostile:`敵対的`},noNpcs:`NPCなし`,noFriendlyNpcs:`友好的なNPCなし`,noNeutralNpcs:`中立なNPCなし`,noHostileNpcs:`敵対的なNPCなし`,recentEvents:`最近のイベント`,recentEventsDescription:`最近の外交活動ログ`,ago:`前`,status:{friendly:`友好的`,neutral:`中立`,hostile:`敵対的`},planets:`惑星`,allies:`同盟`,reputation:`評判`,alliedWith:`同盟関係`,more:`その他`,actions:{gift:`ギフトを送る`,viewPlanets:`惑星を表示`},lastEvent:`最後のイベント`,events:{gift:`ギフト送信`,attack:`攻撃`,missileAttack:`ミサイル攻撃`,allyAttacked:`同盟が攻撃された`,spy:`諜報活動`,stealDebris:`残骸を略奪`},reports:{giftedResources:`{metal}M {crystal}C {deuterium}Dを贈呈`,receivedGiftFromPlayer:`プレイヤーからギフトを受け取りました`,giftedToNpc:`{npcName}にリソースを贈呈しました。評判+{reputation}`,rejectedPlayerGift:`プレイヤーのギフトを拒否しました`,npcRejectedGift:`{npcName}があなたのギフトを拒否しました。評判{reputation}`,attackedNpc:`{npcName}を攻撃しました`,wasAttackedByPlayer:`プレイヤーに攻撃されました`,youAttackedNpc:`あなたは{npcName}を攻撃しました`,playerAttackedAlly:`プレイヤーが同盟{allyName}を攻撃しました`,allyDispleased:`{allyName}はあなたが同盟{targetName}を攻撃したことに不満です`,wasSpiedByPlayer:`プレイヤーに偵察されました(発見:{detected})`,spyDetected:`あなたの偵察が{npcName}に発見されました`,stoleDebrisFromTerritory:`{npcName}の領域から残骸を略奪しました`,playerStoleDebris:`プレイヤーが領域から残骸を略奪しました`,recycledDebrisNearNpc:`{npcName}の惑星近くで残骸を回収しました。彼らは不満です。`,giftedResourcesToPlayer:`プレイヤーにリソースを贈呈しました`,receivedGiftFromNpc:`{npcName}からギフトを受け取りました`,acceptedGiftFromNpc:`{npcName}からのギフトを受け取りました:{metal}M {crystal}C {deuterium}D`,playerRejectedGift:`プレイヤーがギフトを拒否しました`,rejectedGiftFromNpc:`{npcName}からのギフトを拒否しました。評判{reputation}`}},pagination:{previous:`前へ`,next:`次へ`,first:`最初`,last:`最後`,page:`{page}ページ`},notFound:{title:`ページが見つかりません`,description:`申し訳ございません。お探しのページは存在しません`,goHome:`ホームに戻る`}};const s={"zh-CN":e,"zh-TW":t,en:n,de:r,ru:i,ko:a,ja:o},c={"zh-CN":`简体中文`,"zh-TW":`繁體中文`,en:`English`,de:`Deutsch`,ru:`Русский`,ko:`한국어`,ja:`日本語`},l=()=>{let e=(navigator.language||navigator.languages&&navigator.languages[0]||`zh-CN`).toLowerCase();return e.startsWith(`zh-tw`)||e.startsWith(`zh-hant`)||e.startsWith(`zh-hk`)||e.startsWith(`zh-mo`)?`zh-TW`:e.startsWith(`zh`)?`zh-CN`:e.startsWith(`ja`)?`ja`:e.startsWith(`ko`)?`ko`:e.startsWith(`en`)?`en`:e.startsWith(`de`)?`de`:e.startsWith(`ru`)?`ru`:`zh-CN`};export{c as n,s as r,l as t}; \ No newline at end of file diff --git a/docs/assets/game-i18n-Dr0JspcV.js b/docs/assets/game-i18n-Dr0JspcV.js deleted file mode 100644 index ec64baf..0000000 --- a/docs/assets/game-i18n-Dr0JspcV.js +++ /dev/null @@ -1,71 +0,0 @@ -var e={common:{confirm:`确认`,cancel:`取消`,delete:`删除`,edit:`编辑`,save:`保存`,close:`关闭`,back:`返回`,next:`下一步`,previous:`上一步`,submit:`提交`,reset:`重置`,search:`搜索`,filter:`筛选`,loading:`加载中...`,noData:`暂无数据`,error:`错误`,success:`成功`,warning:`警告`,info:`信息`,resourceType:`资源类型`,playerName:`指挥官`,timeHour:`时`,timeMinute:`分`,timeSecond:`秒`,featureLocked:`功能已锁定`,unlockRequired:`需要解锁前置建筑`,requiredBuilding:`所需建筑`,currentLevel:`当前等级`,goToBuildings:`前往建筑页面`,locked:`已锁定`,viewRequirements:`查看前置条件`,requirementsNotMet:`前置条件未满足`,current:`当前`,level:`等级`},errors:{requirementsNotMet:`不满足前置条件`,insufficientResources:`资源不足`,insufficientFleetStorage:`舰队仓储空间不足`,shieldDomeLimit:`护盾罩数量限制`,fleetMissionsFull:`舰队任务槽位已满`,insufficientFleet:`舰队数量不足`,insufficientFuel:`燃料不足`,planetOnly:`该建筑只能在行星上建造`,moonOnly:`该建筑只能在月球上建造`,buildQueueFull:`建造队列已满`,insufficientSpace:`空间不足`,buildingLevelZero:`建筑等级为0,无法拆除`,researchQueueFull:`研究队列已满`,moonExists:`已存在月球`,insufficientDebris:`残骸场不足`},nav:{overview:`总览`,buildings:`建筑`,research:`研究`,shipyard:`船坞`,defense:`防御`,fleet:`舰队`,officers:`军官`,simulator:`模拟`,galaxy:`星系`,diplomacy:`外交`,messages:`消息`,settings:`设置`,gm:`GM`},sidebar:{language:`语言`,lightMode:`日间模式`,darkMode:`夜间模式`,collapse:`收起菜单`,expand:`展开菜单`},resources:{metal:`金属`,crystal:`晶体`,deuterium:`重氢`,darkMatter:`暗物质`,energy:`电力`,production:`产量`,consumption:`消耗`,capacity:`容量`,current:`当前储量`,max:`最大容量`,perHour:`小时`,perMinute:`分钟`,hour:`小时`,noEnergy:`电力不足`},planet:{planet:`星球`,moon:`月球`,colony:`殖民地`,position:`位置`,coordinates:`坐标`,switchToMoon:`查看月球`,backToPlanet:`返回母星`,switchPlanet:`切换星球`,currentPlanet:`当前星球`,fields:`场地`,temperature:`温度`,homePlanet:`母星`,planetPrefix:`星球`,moonSuffix:`的月球`,colonyPrefix:`殖民地`},player:{points:`总积分`},buildings:{metalMine:`金属矿`,crystalMine:`晶体矿`,deuteriumSynthesizer:`重氢合成器`,solarPlant:`太阳能电站`,fusionReactor:`核聚变反应堆`,roboticsFactory:`机器人工厂`,naniteFactory:`纳米工厂`,shipyard:`船坞`,researchLab:`研究实验室`,metalStorage:`金属仓库`,crystalStorage:`晶体仓库`,deuteriumTank:`重氢罐`,darkMatterCollector:`暗物质收集器`,darkMatterTank:`暗物质储罐`,missileSilo:`导弹发射井`,terraformer:`地形改造器`,lunarBase:`月球基地`,sensorPhalanx:`传感器阵列`,jumpGate:`跳跃门`,planetDestroyerFactory:`行星毁灭者工厂`,buildTime:`建造时间`,production:`产量`,consumption:`消耗`,totalCost:`累积成本`,totalPoints:`累积积分`,levelRange:`等级范围`,storageCapacity:`容量`,energyProduction:`电力产出`,fleetStorage:`舰队仓储`,buildQueueBonus:`建造队列`,spaceBonus:`空间加成`,buildSpeedBonus:`建造速度加成`,researchSpeedBonus:`研究速度加成`,missileCapacity:`导弹容量`},buildingDescriptions:{metalMine:`开采金属资源`,crystalMine:`开采晶体资源`,deuteriumSynthesizer:`合成重氢资源`,solarPlant:`提供能源`,fusionReactor:`使用重氢产生大量能源`,roboticsFactory:`加快建造速度`,naniteFactory:`增加建造队列数量,每级+1队列(最多10级)`,shipyard:`建造舰船`,researchLab:`研究科技`,metalStorage:`增加金属存储上限`,crystalStorage:`增加晶体存储上限`,deuteriumTank:`增加重氢存储上限`,darkMatterCollector:`收集稀有的暗物质资源`,darkMatterTank:`增加暗物质存储上限`,missileSilo:`存储和发射导弹,每级可存储10枚导弹`,terraformer:`改造行星地形,每级增加5个可用空间`,lunarBase:`增加月球可用空间,每级+5空间`,sensorPhalanx:`侦测周围星系的舰队活动`,jumpGate:`瞬间传送舰队到其他月球`,planetDestroyerFactory:`建造能够摧毁行星的终极武器`},ships:{lightFighter:`轻型战斗机`,heavyFighter:`重型战斗机`,cruiser:`巡洋舰`,battleship:`战列舰`,battlecruiser:`战列巡洋舰`,bomber:`轰炸机`,destroyer:`驱逐舰`,smallCargo:`小型运输船`,largeCargo:`大型运输船`,colonyShip:`殖民船`,recycler:`回收船`,espionageProbe:`间谍探测器`,solarSatellite:`太阳能卫星`,darkMatterHarvester:`暗物质采集船`,deathstar:`死星`},shipDescriptions:{lightFighter:`基础战斗单位`,heavyFighter:`重装战斗机`,cruiser:`中型战舰,攻守平衡`,battleship:`强力战舰`,battlecruiser:`快速强大的战斗舰船,擅长攻击战列舰`,bomber:`专门对付防御设施的轰炸舰`,destroyer:`擅长摧毁大型舰船的猎杀者`,smallCargo:`运输少量资源`,largeCargo:`运输大量资源`,colonyShip:`用于殖民新星球`,recycler:`收集残骸场资源`,espionageProbe:`侦察敌方星球`,solarSatellite:`提供额外能源,每个产生50点电力`,darkMatterHarvester:`专门用于采集暗物质的特殊飞船`,deathstar:`终极武器,能够摧毁整个行星`},defenses:{rocketLauncher:`火箭发射器`,lightLaser:`轻型激光炮`,heavyLaser:`重型激光炮`,gaussCannon:`高斯炮`,ionCannon:`离子炮`,plasmaTurret:`等离子炮塔`,smallShieldDome:`小型护盾罩`,largeShieldDome:`大型护盾罩`,antiBallisticMissile:`反弹道导弹`,interplanetaryMissile:`星际导弹`,planetaryShield:`行星护盾`},defenseDescriptions:{rocketLauncher:`基础防御设施`,lightLaser:`轻型电力武器`,heavyLaser:`重型电力武器`,gaussCannon:`高速动能武器`,ionCannon:`破坏护盾的利器`,plasmaTurret:`强力防御设施`,smallShieldDome:`保护整个星球的小型护盾`,largeShieldDome:`保护整个星球的大型护盾`,antiBallisticMissile:`拦截敌方导弹,每个可拦截1枚星际导弹`,interplanetaryMissile:`可以攻击其他星球的防御设施`,planetaryShield:`保护行星免受毁灭攻击的超级护盾`},research:{researchTime:`研究时间`,totalCost:`累积成本`,totalPoints:`累积积分`,levelRange:`等级范围`,attackBonus:`攻击加成`,shieldBonus:`护盾加成`,armorBonus:`装甲加成`,spyLevel:`侦查等级`,researchQueueBonus:`研究队列`,colonySlots:`殖民地槽位`,forAllPlanets:`(全局)`,speedBonus:`速度加成`,researchSpeedBonus:`研究速度加成`},technologies:{energyTechnology:`能源技术`,laserTechnology:`激光技术`,ionTechnology:`离子技术`,hyperspaceTechnology:`超空间技术`,plasmaTechnology:`等离子技术`,computerTechnology:`计算机技术`,espionageTechnology:`间谍技术`,weaponsTechnology:`武器技术`,shieldingTechnology:`护盾技术`,armourTechnology:`装甲技术`,astrophysics:`天体物理学`,gravitonTechnology:`引力技术`,combustionDrive:`燃烧引擎`,impulseDrive:`脉冲引擎`,hyperspaceDrive:`超空间引擎`,darkMatterTechnology:`暗物质技术`,terraformingTechnology:`地形改造技术`,planetDestructionTech:`行星毁灭技术`},technologyDescriptions:{energyTechnology:`提高能源利用效率`,laserTechnology:`激光武器和防御的基础`,ionTechnology:`离子武器技术`,hyperspaceTechnology:`超空间跳跃技术`,plasmaTechnology:`等离子武器技术`,computerTechnology:`增加研究队列数量,每级+1队列(最多10级)`,espionageTechnology:`提高间谍探测效果,每级提高1级侦查深度`,weaponsTechnology:`提高舰船和防御的攻击力,每级+10%`,shieldingTechnology:`提高舰船和防御的护盾值,每级+10%`,armourTechnology:`提高舰船和防御的装甲值,每级+10%`,astrophysics:`每级增加1个殖民地槽位,增加探险成功率`,gravitonTechnology:`研究引力操纵,死星的必要技术`,combustionDrive:`基础推进技术`,impulseDrive:`中级推进技术`,hyperspaceDrive:`高级推进技术`,darkMatterTechnology:`研究暗物质的性质和应用`,terraformingTechnology:`研究行星地形改造技术,每级为所有行星增加3个可用空间`,planetDestructionTech:`研究如何摧毁整个行星的恐怖技术`},officers:{commander:`指挥官`,admiral:`上将`,engineer:`工程师`,geologist:`地质学家`,technocrat:`技术专家`,darkMatterSpecialist:`暗物质专家`,resourceBonus:`资源产量加成`,darkMatterBonus:`暗物质产量加成`,energyBonus:`电力产量加成`},officerDescriptions:{commander:`提升建筑速度和管理能力`,admiral:`提升舰队战斗力和速度`,engineer:`提升能源和防御能力`,geologist:`提升资源产量`,technocrat:`提升研究速度和间谍能力`,darkMatterSpecialist:`提升暗物质采集效率`},queue:{buildQueueBonus:`建造队列`,spaceBonus:`空间加成`,researchQueueBonus:`研究队列`,building:`建造中`,researching:`研究中`,remaining:`剩余时间`,cancel:`取消`,cancelBuild:`取消建造`,cancelResearch:`取消研究`,confirmCancel:`确定要取消吗?将返还50%的资源。`,level:`等级`,quantity:`数量`,upgradeToLevel:`升级到等级`},overview:{title:`星球总览`,resourceOverview:`资源概览`,fleetInfo:`舰队`,currentShips:`当前星球的舰船数量`,productionSources:`资源获取来源`,productionSourcesDesc:`详细的资源产量及加成信息`,consumptionSources:`电力消耗来源`,consumptionSourcesDesc:`各建筑的电力消耗详情`,totalProduction:`总产量`,totalConsumption:`总消耗`,noConsumption:`当前无电力消耗`},buildingsView:{title:`建筑`,usedSpace:`已用空间`,spaceUsage:`占用空间`,level:`等级`,upgradeCost:`升级消耗`,buildTime:`建造时间`,upgrade:`升级`,maxLevelReached:`等级已满`,requirementsNotMet:`条件不足`,upgradeFailed:`升级失败`,upgradeFailedMessage:`请检查资源是否足够、空间是否充足或是否有其他建造任务。`,demolish:`拆除`,demolishRefund:`拆除返还`,demolishFailed:`拆除失败`,demolishFailedMessage:`无法拆除该建筑,请检查建造队列是否已满或建筑等级是否为0。`,confirmDemolish:`确认拆除`,confirmDemolishMessage:`确定要拆除`},researchView:{title:`研究`,researchCost:`研究消耗`,research:`研究`,maxLevelReached:`等级已满`,researchFailed:`研究失败`,researchFailedMessage:`请检查资源是否足够、前置条件是否满足,或是否有其他研究任务。`},shipyard:{attack:`攻击力`,shield:`护盾`,armor:`装甲`,speed:`速度`,cargoCapacity:`载货量`,fuelConsumption:`燃料消耗`,buildCost:`建造成本`,buildTime:`建造时间`,perUnit:`每个单位`,batchCalculator:`批量建造计算器`,quantity:`数量`,totalCost:`总成本`,totalTime:`总时间`},shipyardView:{title:`船坞`,fleetStorage:`舰队仓储`,attack:`攻击力`,shield:`护盾`,speed:`速度`,cargoCapacity:`载货量`,unitCost:`单位成本`,buildQuantity:`建造数量`,totalCost:`总成本`,build:`建造`,inputError:`输入错误`,inputErrorMessage:`请输入建造数量!`,buildFailed:`建造失败`,buildFailedMessage:`请检查资源是否足够或前置条件是否满足。`},defense:{attack:`攻击力`,shield:`护盾`,armor:`装甲`,buildCost:`建造成本`,buildTime:`建造时间`,perUnit:`每个单位`,batchCalculator:`批量建造计算器`,quantity:`数量`,totalCost:`总成本`,totalTime:`总时间`},defenseView:{title:`防御设施`,attack:`攻击力`,shield:`护盾`,armor:`装甲`,buildTime:`建造时间`,seconds:`秒`,unitCost:`单位成本`,buildQuantity:`建造数量`,totalCost:`总成本`,build:`建造`,shieldDomeBuilt:`护盾罩已建造`,inputError:`输入错误`,inputErrorMessage:`请输入建造数量!`,buildFailed:`建造失败`,buildFailedMessage:`请检查资源是否足够或前置条件是否满足。护盾罩只能建造一个。`},fleetView:{title:`舰队管理`,fleetOverview:`舰队总览`,sendFleet:`派遣舰队`,flightMissions:`飞行任务`,currentPlanetFleet:`当前星球舰队`,attack:`攻击`,shield:`护盾`,armor:`装甲`,speed:`速度`,cargo:`载货`,selectFleet:`选择舰队`,selectFleetDescription:`选择要派遣的舰船数量`,available:`可用`,all:`全部`,targetCoordinates:`目标坐标`,galaxy:`银河系`,system:`星系`,position:`位置`,missionType:`任务类型`,missionInfo:`任务信息`,fuelConsumption:`燃料消耗`,flightTime:`飞行时间`,attackMission:`攻击`,transport:`运输`,colonize:`殖民`,spy:`侦察`,deploy:`部署`,recycle:`回收`,destroy:`行星毁灭`,transportResources:`运输资源`,totalCargoCapacity:`总载货量`,used:`已用`,noFlightMissions:`暂无飞行任务`,outbound:`前往`,returning:`返回`,fleetComposition:`舰队组成`,carryingResources:`携带资源`,arrivalTime:`到达时间`,returnTime:`返回时间`,recallFleet:`召回舰队`,sendFailed:`派遣失败`,sendFailedMessage:`请检查舰队数量、燃料是否充足,或载货量是否超出限制。`,recallFailed:`召回失败`,recallFailedMessage:`该任务无法召回。`,unknownPlanet:`未知星球`,fleetMissionSlots:`舰队任务槽位`,noShipsSelected:`未选择舰船`,cannotSendToOwnPlanet:`无法派遣舰队到自己的星球`,cargoExceedsCapacity:`载货量超出限制`,noColonyShip:`需要殖民船才能执行殖民任务`,noDebrisAtTarget:`目标坐标没有残骸场或残骸场已空`,noDeathstar:`需要死星才能执行毁灭任务`,giftMode:`赠送模式`,giftModeDescription:`将资源作为礼物赠送给`,estimatedReputationGain:`预计好感度增加`},officersView:{title:`军官`,activated:`已激活`,inactive:`未激活`,activeStatus:`激活状态`,expirationTime:`到期时间`,remainingTime:`剩余时间`,recruitCost:`招募成本`,days:`天`,benefitsBonus:`效果加成`,resourceProduction:`资源产量`,darkMatterProduction:`暗物质产量`,energyProduction:`电量产出`,buildingSpeed:`建筑速度`,researchSpeed:`研究速度`,fleetSpeed:`舰队速度`,fuelConsumption:`燃料消耗`,defense:`防御力`,storageCapacity:`仓储容量`,buildQueue:`建筑队列`,fleetSlots:`舰队槽位`,hire:`招募`,renew:`续约`,dismiss:`解雇`,hireTitle:`招募军官`,hireMessage:`确定要招募 {name} 吗?有效期为7天。`,renewTitle:`续约军官`,renewMessage:`确定要为 {name} 续约7天吗?`,dismissTitle:`解雇军官`,dismissMessage:`确定要解雇 {name} 吗?不会返还任何费用。`,hireFailed:`招募失败`,renewFailed:`续约失败`,insufficientResources:`资源不足!`},galaxyView:{title:`星系`,selectCoordinates:`选择坐标`,galaxy:`银河系`,selectGalaxy:`选择银河系`,system:`星系`,selectSystem:`选择星系`,view:`查看`,myPlanet:`我的星球`,myPlanets:`我的星球`,npcPlanets:`NPC星球`,selectPlanetToView:`选择要查看的星球`,totalPositions:`共10个星球位置`,mine:`我的`,hostile:`敌对`,emptySlot:`空位 - 可殖民`,scout:`侦察`,attack:`攻击`,colonize:`殖民`,switch:`切换`,recycle:`回收`,sendGift:`赠送礼物`,debris:`残骸`,debrisField:`残骸场`,scoutPlanetTitle:`侦察星球`,attackPlanetTitle:`攻击星球`,colonizePlanetTitle:`殖民星球`,recyclePlanetTitle:`回收残骸`,giftPlanetTitle:`赠送礼物`,scoutPlanetMessage:`确定要派遣间谍探测器侦察星球 [{coordinates}] 吗? - -请前往舰队页面选择舰船并派遣。`,attackPlanetMessage:`确定要攻击星球 [{coordinates}] 吗? - -请前往舰队页面选择舰船并派遣。`,colonizePlanetMessage:`确定要殖民位置 [{coordinates}] 吗? - -请前往舰队页面派遣殖民船。`,recyclePlanetMessage:`确定要回收位置 [{coordinates}] 的残骸吗? - -请前往舰队页面派遣回收船。`,giftPlanetMessage:`确定要向星球 [{coordinates}] 赠送资源吗? - -请前往舰队页面选择运输船并装载资源。`},messagesView:{title:`消息中心`,battles:`战斗`,spy:`侦查`,npc:`NPC`,battleReports:`战斗报告`,spyReports:`间谍报告`,noBattleReports:`暂无战斗报告`,noSpyReports:`暂无间谍报告`,battleReport:`战斗报告`,spyReport:`间谍报告`,victory:`胜利`,defeat:`失败`,draw:`平局`,attackerFleet:`攻击方舰队`,defenderFleet:`防守方舰队`,defenderDefense:`防守方防御`,attackerLosses:`攻击方损失`,defenderLosses:`防守方损失`,noLosses:`无损失`,plunder:`掠夺资源`,debrisField:`残骸场`,resources:`资源`,fleet:`舰队`,defense:`防御`,buildings:`建筑`,unread:`未读`,targetPlanet:`目标星球`,attackerRemaining:`攻击方剩余`,defenderRemaining:`防守方剩余`,moonChance:`月球生成概率`,showRoundDetails:`显示回合详情`,hideRoundDetails:`隐藏回合详情`,round:`第{round}回合`,attackerRemainingPower:`攻击方剩余火力`,defenderRemainingPower:`防守方剩余火力`,spied:`被侦查`,spiedNotification:`被侦查通知`,noSpiedNotifications:`暂无被侦查通知`,detected:`已发现`,undetected:`未发现`,missions:`任务`,noMissionReports:`暂无任务报告`,success:`成功`,failed:`失败`,npcActivity:`NPC活动`,noNPCActivity:`暂无NPC活动通知`,npcRecycleActivity:`NPC回收残骸`,gifts:`礼物`,giftRejected:`被拒绝`,noGiftNotifications:`暂无礼物通知`,noGiftRejected:`暂无拒绝记录`,giftFrom:`{npcName}的礼物`,giftRejectedBy:`{npcName}拒绝了礼物`,giftResources:`礼物资源`,rejectedResources:`被拒绝的资源`,expectedReputation:`预计好感度`,currentReputation:`当前好感度`,acceptGift:`接受`,rejectGift:`拒绝`,rejectionReason:{hostile:`对方对你有敌意,不接受礼物`,neutral_distrust:`对方对你缺乏信任`,polite_decline:`对方礼貌地拒绝了`}},missionReports:{transportSuccess:`运输任务成功完成`,transportFailed:`运输任务失败`,colonizeSuccess:`殖民任务成功,新星球已建立`,colonizeFailed:`殖民任务失败`,deploySuccess:`部署任务成功完成`,deployFailed:`部署任务失败`,recycleSuccess:`回收任务成功完成`,recycleFailed:`回收任务失败,目标位置没有残骸`,destroySuccess:`行星毁灭任务成功执行`,destroyFailed:`行星毁灭任务失败`},simulatorView:{title:`战斗模拟器`,attacker:`攻击方`,defender:`防守方`,attackerConfig:`攻击方配置`,attackerConfigDesc:`设置攻击方的舰队和科技等级`,defenderConfig:`防守方配置`,defenderConfigDesc:`设置防守方的舰队、防御和科技等级`,fleet:`舰队`,defenseStructures:`防御设施`,techLevels:`科技等级`,weapon:`武器`,shield:`护盾`,armor:`装甲`,defenderResources:`防守方资源(用于掠夺计算)`,startSimulation:`开始模拟`,reset:`重置`,battleResult:`战斗结果`,attackerVictory:`攻击方胜利`,defenderVictory:`防守方胜利`,draw:`平局`,afterRounds:`经过 {rounds} 回合战斗`,attackerLosses:`攻击方损失`,defenderLosses:`防守方损失`,noLosses:`无损失`,attackerRemaining:`攻击方剩余`,defenderRemaining:`防守方剩余`,allDestroyed:`全部摧毁`,plunderableResources:`可掠夺资源`,debrisField:`残骸场`,moonChance:`月球生成概率`,showRoundDetails:`显示回合详情`,hideRoundDetails:`隐藏回合详情`,round:`第 {round} 回合`,attackerRemainingPower:`攻击方剩余火力`,defenderRemainingPower:`防守方剩余火力`},settings:{dataManagement:`数据管理`,dataManagementDesc:`导出、导入或清除游戏数据`,exportData:`导出数据`,exportDataDesc:`将游戏进度导出为JSON文件`,export:`导出`,exporting:`导出中...`,exportSuccess:`导出成功`,exportFailed:`导出失败,请重试`,importData:`导入数据`,importDataDesc:`从JSON文件恢复游戏进度`,selectFile:`导入`,importSuccess:`导入成功`,importConfirmTitle:`确认导入数据`,importConfirmMessage:`导入数据将覆盖当前游戏进度,此操作不可撤销。确定要继续吗?`,importFailed:`导入失败,请检查文件格式`,clearData:`清除数据`,clearDataDesc:`删除所有游戏数据并重置游戏`,clear:`清除`,clearConfirmTitle:`确认清除数据`,clearConfirmMessage:`这将删除所有游戏数据并重新开始,此操作不可撤销。确定要继续吗?`,gameSettings:`游戏设置`,gameSettingsDesc:`调整游戏参数和偏好设置`,gamePause:`游戏暂停`,gamePauseDesc:`暂停或恢复游戏时间和资源生产`,pause:`暂停`,resume:`恢复`,gamePaused:`游戏已暂停`,gameResumed:`游戏已恢复`,playerName:`玩家名称`,gameSpeed:`游戏速度`,gameSpeedDesc:`当前游戏速度倍率`,about:`关于`,version:`版本`,buildDate:`构建日期`,community:`社区`,github:`GitHub 仓库`,qqGroup:`QQ 交流群`},gmView:{title:`GM 管理面板`,adminOnly:`仅管理员`,selectPlanet:`选择星球`,choosePlanet:`选择一个星球`,resources:`资源`,buildings:`建筑`,research:`科技`,ships:`舰船`,defense:`防御`,officers:`军官`,modifyResources:`修改资源`,resourcesDesc:`快速修改星球资源数量`,modifyBuildings:`修改建筑`,buildingsDesc:`快速设置建筑等级`,modifyResearch:`修改科技`,researchDesc:`快速设置科技等级`,modifyShips:`修改舰船`,shipsDesc:`快速设置舰船数量`,modifyDefense:`修改防御`,defenseDesc:`快速设置防御数量`,modifyOfficers:`修改军官`,officersDesc:`快速设置军官到期时间`,days:`天`,npcTesting:`NPC 测试`,npcTestingDesc:`测试NPC侦查和攻击行为`,selectNPC:`选择NPC`,chooseNPC:`选择一个NPC`,targetPlanet:`目标星球`,chooseTarget:`选择目标星球`,testSpy:`测试侦查`,testAttack:`测试攻击`,testSpyAndAttack:`测试侦查&攻击`,initializeFleet:`初始化NPC舰队`,accelerateMissions:`加速所有任务(5秒)`,selectNPCFirst:`请先选择一个NPC`,npcNoProbes:`NPC没有间谍探测器`,npcNoSpyReport:`NPC需要先侦查`,npcMissionFailed:`创建任务失败`,dangerZone:`危险区域`,dangerZoneDesc:`以下操作不可撤销,请谨慎操作`,resetGame:`重置游戏`,resetGameConfirm:`确定要重置游戏吗?这将删除所有数据!`},alerts:{npcSpyIncoming:`NPC侦查即将到达`,npcAttackIncoming:`NPC舰队来袭!`,npcFleetIncoming:`NPC舰队接近`,ships:`艘舰船`,spiedBy:`被侦查`,attackedBy:`被攻击`,detectionSuccess:`侦查被发现`,detectionFailed:`侦查未被发现`,npcSpiedYourPlanet:`NPC侦查了你的星球`,npcAttackedYourPlanet:`NPC攻击了你的星球`},diplomacy:{title:`外交`,description:`管理与NPC的外交关系`,tabs:{all:`全部`,friendly:`友好`,neutral:`中立`,hostile:`敌对`},noNpcs:`暂无NPC`,noFriendlyNpcs:`暂无友好NPC`,noNeutralNpcs:`暂无中立NPC`,noHostileNpcs:`暂无敌对NPC`,recentEvents:`最近事件`,recentEventsDescription:`最近的外交活动记录`,ago:`前`,status:{friendly:`友好`,neutral:`中立`,hostile:`敌对`},planets:`个星球`,allies:`个盟友`,reputation:`好感度`,alliedWith:`盟友`,more:`更多`,actions:{gift:`赠送资源`,viewPlanets:`查看星球`},lastEvent:`最近活动`,events:{gift:`赠送资源`,attack:`攻击`,allyAttacked:`攻击盟友`,spy:`侦查`,stealDebris:`抢夺残骸`}},pagination:{previous:`上一页`,next:`下一页`,first:`首页`,last:`末页`,page:`第 {page} 页`}},t={common:{confirm:`確認`,cancel:`取消`,delete:`刪除`,edit:`編輯`,save:`儲存`,close:`關閉`,back:`返回`,next:`下一步`,previous:`上一步`,submit:`提交`,reset:`重置`,search:`搜尋`,filter:`篩選`,loading:`載入中...`,noData:`暫無資料`,error:`錯誤`,success:`成功`,warning:`警告`,info:`資訊`,resourceType:`資源類型`,playerName:`指揮官`,timeHour:`時`,timeMinute:`分`,timeSecond:`秒`,featureLocked:`功能已鎖定`,unlockRequired:`需要解鎖前置建築`,requiredBuilding:`所需建築`,currentLevel:`當前等級`,goToBuildings:`前往建築頁面`,locked:`已鎖定`,viewRequirements:`查看前置條件`,requirementsNotMet:`前置條件未滿足`,current:`當前`,level:`等級`},errors:{requirementsNotMet:`不滿足前置條件`,insufficientResources:`資源不足`,insufficientFleetStorage:`艦隊倉儲空間不足`,shieldDomeLimit:`護盾罩數量限制`,fleetMissionsFull:`艦隊任務槽位已滿`,insufficientFleet:`艦隊數量不足`,insufficientFuel:`燃料不足`,planetOnly:`該建築只能在行星上建造`,moonOnly:`該建築只能在月球上建造`,buildQueueFull:`建造隊列已滿`,insufficientSpace:`空間不足`,buildingLevelZero:`建築等級為0,無法拆除`,researchQueueFull:`研究隊列已滿`,moonExists:`已存在月球`,insufficientDebris:`殘骸場不足`},nav:{overview:`總覽`,buildings:`建築`,research:`研究`,shipyard:`船塢`,defense:`防禦`,fleet:`艦隊`,officers:`軍官`,simulator:`模擬`,galaxy:`星系`,diplomacy:`Diplomacy`,messages:`訊息`,settings:`設定`,gm:`GM`},sidebar:{language:`語言`,lightMode:`日間模式`,darkMode:`夜間模式`,collapse:`收起選單`,expand:`展開選單`},resources:{metal:`金屬`,crystal:`晶體`,deuterium:`重氫`,darkMatter:`暗物質`,energy:`電力`,production:`產量`,consumption:`消耗`,capacity:`容量`,current:`當前儲量`,max:`最大容量`,perHour:`小時`,perMinute:`分鐘`,hour:`小時`,noEnergy:`電力不足`},planet:{planet:`星球`,moon:`月球`,colony:`殖民地`,position:`位置`,coordinates:`座標`,switchToMoon:`查看月球`,backToPlanet:`返回母星`,switchPlanet:`切換星球`,currentPlanet:`當前星球`,fields:`場地`,temperature:`溫度`,homePlanet:`母星`,planetPrefix:`星球`,moonSuffix:`的月球`,colonyPrefix:`殖民地`},player:{points:`總積分`},buildings:{metalMine:`金屬礦`,crystalMine:`晶體礦`,deuteriumSynthesizer:`重氫合成器`,solarPlant:`太陽能電站`,fusionReactor:`核聚變反應堆`,roboticsFactory:`機器人工廠`,naniteFactory:`納米工廠`,shipyard:`船塢`,researchLab:`研究實驗室`,metalStorage:`金屬倉庫`,crystalStorage:`晶體倉庫`,deuteriumTank:`重氫罐`,darkMatterCollector:`暗物質收集器`,darkMatterTank:`暗物質儲罐`,missileSilo:`導彈發射井`,terraformer:`地形改造器`,lunarBase:`月球基地`,sensorPhalanx:`傳感器陣列`,jumpGate:`跳躍門`,planetDestroyerFactory:`行星毀滅者工廠`,buildTime:`建造時間`,production:`產量`,consumption:`消耗`,totalCost:`累積成本`,totalPoints:`累積積分`,levelRange:`等級範圍`,capacity:`容量/效果`,storageCapacity:`容量`,energyProduction:`電力產出`,fleetStorage:`艦隊倉儲`,buildQueue:`建造隊列`,buildQueueBonus:`建造隊列`,spaceBonus:`空間加成`,buildSpeedBonus:`建造速度加成`,researchSpeedBonus:`研究速度加成`,planetSpace:`行星空間`,moonSpace:`月球空間`,missileCapacity:`導彈容量`},buildingDescriptions:{metalMine:`開採金屬資源`,crystalMine:`開採晶體資源`,deuteriumSynthesizer:`合成重氫資源`,solarPlant:`提供能源`,fusionReactor:`使用重氫產生大量能源`,roboticsFactory:`加快建造速度`,naniteFactory:`增加建造佇列數量,每級+1佇列(最多10級)`,shipyard:`建造艦船`,researchLab:`研究科技`,metalStorage:`增加金屬儲存上限`,crystalStorage:`增加晶體儲存上限`,deuteriumTank:`增加重氫儲存上限`,darkMatterCollector:`收集稀有的暗物質資源`,darkMatterTank:`增加暗物質儲存上限`,missileSilo:`存儲和發射導彈,每級可存儲10枚導彈`,terraformer:`改造行星地形,每級增加5個可用空間`,lunarBase:`增加月球可用空間,每級+5空間`,sensorPhalanx:`偵測周圍星系的艦隊活動`,jumpGate:`瞬間傳送艦隊到其他月球`,planetDestroyerFactory:`建造能夠摧毀行星的終極武器`},ships:{lightFighter:`輕型戰鬥機`,heavyFighter:`重型戰鬥機`,cruiser:`巡洋艦`,battleship:`戰列艦`,battlecruiser:`戰列巡洋艦`,bomber:`轟炸機`,destroyer:`驅逐艦`,smallCargo:`小型運輸船`,largeCargo:`大型運輸船`,colonyShip:`殖民船`,recycler:`回收船`,espionageProbe:`間諜探測器`,solarSatellite:`太陽能衛星`,darkMatterHarvester:`暗物質採集船`,deathstar:`死星`},shipDescriptions:{lightFighter:`基礎戰鬥單位`,heavyFighter:`重裝戰鬥機`,cruiser:`中型戰艦,攻守平衡`,battleship:`強力戰艦`,battlecruiser:`快速強大的戰鬥艦船,擅長攻擊戰列艦`,bomber:`專門對付防禦設施的轟炸艦`,destroyer:`擅長摧毀大型艦船的獵殺者`,smallCargo:`運輸少量資源`,largeCargo:`運輸大量資源`,colonyShip:`用於殖民新星球`,recycler:`收集殘骸場資源`,espionageProbe:`偵察敵方星球`,solarSatellite:`提供額外能源,每個產生50點電力`,darkMatterHarvester:`專門用於採集暗物質的特殊飛船`,deathstar:`終極武器,能夠摧毀整個行星`},defenses:{rocketLauncher:`火箭發射器`,lightLaser:`輕型激光炮`,heavyLaser:`重型激光炮`,gaussCannon:`高斯炮`,ionCannon:`離子炮`,plasmaTurret:`等離子炮塔`,smallShieldDome:`小型護盾罩`,largeShieldDome:`大型護盾罩`,antiBallisticMissile:`反彈道導彈`,interplanetaryMissile:`星際導彈`,planetaryShield:`行星護盾`},defenseDescriptions:{rocketLauncher:`基礎防禦設施`,lightLaser:`輕型電力武器`,heavyLaser:`重型電力武器`,gaussCannon:`高速動能武器`,ionCannon:`破壞護盾的利器`,plasmaTurret:`強力防禦設施`,smallShieldDome:`保護整個星球的小型護盾`,largeShieldDome:`保護整個星球的大型護盾`,antiBallisticMissile:`攔截敵方導彈,每個可攔截1枚星際導彈`,interplanetaryMissile:`可以攻擊其他星球的防禦設施`,planetaryShield:`保護行星免受毀滅攻擊的超級護盾`},research:{researchTime:`研究時間`,totalCost:`累積成本`,totalPoints:`累積積分`,levelRange:`等級範圍`,capacity:`容量/效果`,attackBonus:`攻擊加成`,shieldBonus:`護盾加成`,armorBonus:`裝甲加成`,spyLevel:`偵查等級`,researchQueueBonus:`研究隊列`,colonySlots:`殖民地槽位`,forAllPlanets:`(全局)`,speedBonus:`速度加成`,researchSpeedBonus:`研究速度加成`},technologies:{energyTechnology:`能源技術`,laserTechnology:`激光技術`,ionTechnology:`離子技術`,hyperspaceTechnology:`超空間技術`,plasmaTechnology:`等離子技術`,computerTechnology:`計算機技術`,espionageTechnology:`間諜技術`,weaponsTechnology:`武器技術`,shieldingTechnology:`護盾技術`,armourTechnology:`裝甲技術`,astrophysics:`天體物理學`,gravitonTechnology:`引力技術`,combustionDrive:`燃燒引擎`,impulseDrive:`脈衝引擎`,hyperspaceDrive:`超空間引擎`,darkMatterTechnology:`暗物質技術`,terraformingTechnology:`地形改造技術`,planetDestructionTech:`行星毀滅技術`},technologyDescriptions:{energyTechnology:`提高能源利用效率`,laserTechnology:`激光武器和防禦的基礎`,ionTechnology:`離子武器技術`,hyperspaceTechnology:`超空間跳躍技術`,plasmaTechnology:`等離子武器技術`,computerTechnology:`增加研究佇列數量,每級+1佇列(最多10級)`,espionageTechnology:`提高間諜探測效果,每級提高1級偵查深度`,weaponsTechnology:`提高艦船和防禦的攻擊力,每級+10%`,shieldingTechnology:`提高艦船和防禦的護盾值,每級+10%`,armourTechnology:`提高艦船和防禦的裝甲值,每級+10%`,astrophysics:`每級增加1個殖民地槽位,增加探險成功率`,gravitonTechnology:`研究引力操縱,死星的必要技術`,combustionDrive:`基礎推進技術`,impulseDrive:`中級推進技術`,hyperspaceDrive:`高級推進技術`,darkMatterTechnology:`研究暗物質的性質和應用`,terraformingTechnology:`研究行星地形改造技術,每級為所有行星增加3個可用空間`,planetDestructionTech:`研究如何摧毀整個行星的恐怖技術`},officers:{commander:`指揮官`,admiral:`上將`,engineer:`工程師`,geologist:`地質學家`,technocrat:`技術專家`,darkMatterSpecialist:`暗物質專家`,resourceBonus:`資源生產加成`,darkMatterBonus:`暗物質生產加成`,energyBonus:`電力產量加成`},officerDescriptions:{commander:`提升建築速度和管理能力`,admiral:`提升艦隊戰鬥力和速度`,engineer:`提升能源和防禦能力`,geologist:`提升資源產量`,technocrat:`提升研究速度和間諜能力`,darkMatterSpecialist:`提升暗物質採集效率`},queue:{buildQueue:`建造佇列`,researchQueue:`研究佇列`,building:`建造中`,researching:`研究中`,remaining:`剩餘時間`,cancel:`取消`,cancelBuild:`取消建造`,cancelResearch:`取消研究`,confirmCancel:`確定要取消嗎?將返還50%的資源。`,level:`等級`,upgradeToLevel:`升級到等級`},overview:{title:`星球總覽`,resourceOverview:`資源概覽`,fleetInfo:`艦隊資訊`,currentShips:`當前星球的艦船數量`,productionSources:`生產來源`,productionSourcesDesc:`詳細資源生產和加成資訊`,consumptionSources:`電力消耗來源`,consumptionSourcesDesc:`各建築的電力消耗詳情`,totalProduction:`總產量`,totalConsumption:`總消耗`,noConsumption:`當前無電力消耗`},buildingsView:{title:`建築`,usedSpace:`已用空間`,spaceUsage:`佔用空間`,level:`等級`,upgradeCost:`升級消耗`,buildTime:`建造時間`,upgrade:`升級`,maxLevelReached:`等級已滿`,requirementsNotMet:`條件不足`,upgradeFailed:`升級失敗`,upgradeFailedMessage:`請檢查資源是否足夠、空間是否充足或是否有其他建造任務。`,demolish:`拆除`,demolishRefund:`拆除返還`,demolishFailed:`拆除失敗`,demolishFailedMessage:`無法拆除該建築,請檢查建造隊列是否已滿或建築等級是否為0。`,confirmDemolish:``,confirmDemolishMessage:``},researchView:{title:`研究`,researchCost:`研究消耗`,research:`研究`,maxLevelReached:`等級已滿`,researchFailed:`研究失敗`,researchFailedMessage:`請檢查資源是否足夠、前置條件是否滿足,或是否有其他研究任務。`},shipyard:{attack:`攻擊力`,shield:`護盾`,armor:`裝甲`,speed:`速度`,cargoCapacity:`載貨量`,fuelConsumption:`燃料消耗`,buildCost:`建造成本`,buildTime:`建造時間`,perUnit:`每個單位`,batchCalculator:`批量建造計算器`,quantity:`數量`,totalCost:`總成本`,totalTime:`總時間`},shipyardView:{title:`船塢`,fleetStorage:`艦隊倉儲`,attack:`攻擊力`,shield:`護盾`,speed:`速度`,cargoCapacity:`載貨量`,unitCost:`單位成本`,buildQuantity:`建造數量`,totalCost:`總成本`,build:`建造`,inputError:`輸入錯誤`,inputErrorMessage:`請輸入建造數量!`,buildFailed:`建造失敗`,buildFailedMessage:`請檢查資源是否足夠或前置條件是否滿足。`},defense:{attack:`攻擊力`,shield:`護盾`,armor:`裝甲`,buildCost:`建造成本`,buildTime:`建造時間`,perUnit:`每個單位`,batchCalculator:`批量建造計算器`,quantity:`數量`,totalCost:`總成本`,totalTime:`總時間`},defenseView:{title:`防禦設施`,attack:`攻擊力`,shield:`護盾`,armor:`裝甲`,buildTime:`建造時間`,seconds:`秒`,unitCost:`單位成本`,buildQuantity:`建造數量`,totalCost:`總成本`,build:`建造`,shieldDomeBuilt:`護盾罩已建造`,inputError:`輸入錯誤`,inputErrorMessage:`請輸入建造數量!`,buildFailed:`建造失敗`,buildFailedMessage:`請檢查資源是否足夠或前置條件是否滿足。護盾罩只能建造一個。`},fleetView:{title:`艦隊管理`,fleetOverview:`艦隊總覽`,sendFleet:`派遣艦隊`,flightMissions:`飛行任務`,currentPlanetFleet:`當前星球艦隊`,attack:`攻擊`,shield:`護盾`,armor:`裝甲`,speed:`速度`,cargo:`載貨`,selectFleet:`選擇艦隊`,selectFleetDescription:`選擇要派遣的艦船數量`,available:`可用`,all:`全部`,targetCoordinates:`目標座標`,galaxy:`銀河系`,diplomacy:`Diplomacy`,system:`星系`,position:`位置`,missionType:`任務類型`,missionInfo:`任務資訊`,fuelConsumption:`燃料消耗`,flightTime:`飛行時間`,attackMission:`攻擊`,transport:`運輸`,colonize:`殖民`,spy:`偵察`,deploy:`部署`,recycle:`回收`,transportResources:`運輸資源`,totalCargoCapacity:`總載貨量`,used:`已用`,noFlightMissions:`暫無飛行任務`,outbound:`前往`,returning:`返回`,fleetComposition:`艦隊組成`,carryingResources:`攜帶資源`,arrivalTime:`到達時間`,returnTime:`返回時間`,recallFleet:`召回艦隊`,sendFailed:`派遣失敗`,sendFailedMessage:`請檢查艦隊數量、燃料是否充足,或載貨量是否超出限制。`,recallFailed:`召回失敗`,recallFailedMessage:`該任務無法召回。`,unknownPlanet:`未知星球`,fleetMissionSlots:`艦隊任務槽位`,noShipsSelected:`未選擇艦船`,cannotSendToOwnPlanet:`無法派遣艦隊到自己的星球`,cargoExceedsCapacity:`載貨量超出限制`,noColonyShip:`需要殖民船才能執行殖民任務`,noDebrisAtTarget:`目標坐標沒有殘骸場或殘骸場已空`,noDeathstar:`需要死星才能執行毀滅任務`,giftMode:`贈送模式`,giftModeDescription:`將資源作為禮物贈送給`,estimatedReputationGain:`預計好感度增加`},officersView:{title:`軍官`,activated:`已啟用`,inactive:`未啟用`,activeStatus:`啟用狀態`,expirationTime:`到期時間`,remainingTime:`剩餘時間`,recruitCost:`招募成本`,days:`天`,benefitsBonus:`效果加成`,resourceProduction:`資源產量`,darkMatterProduction:`暗物質產量`,energyProduction:`電量產出`,buildingSpeed:`建築速度`,researchSpeed:`研究速度`,fleetSpeed:`艦隊速度`,fuelConsumption:`燃料消耗`,defense:`防禦力`,storageCapacity:`倉儲容量`,buildQueue:`建築佇列`,fleetSlots:`艦隊槽位`,hire:`招募`,renew:`續約`,dismiss:`解雇`,hireTitle:`招募軍官`,hireMessage:`確定要招募 {name} 嗎?有效期為7天。`,renewTitle:`續約軍官`,renewMessage:`確定要為 {name} 續約7天嗎?`,dismissTitle:`解雇軍官`,dismissMessage:`確定要解雇 {name} 嗎?不會返還任何費用。`,hireFailed:`招募失敗`,renewFailed:`續約失敗`,insufficientResources:`資源不足!`},galaxyView:{title:`星系`,selectCoordinates:`選擇座標`,galaxy:`銀河系`,diplomacy:`Diplomacy`,selectGalaxy:`選擇銀河系`,system:`星系`,selectSystem:`選擇星系`,view:`查看`,myPlanet:`我的星球`,myPlanets:`我的星球`,npcPlanets:`NPC星球`,selectPlanetToView:`選擇要查看的星球`,totalPositions:`共10個星球位置`,mine:`我的`,hostile:`敵對`,emptySlot:`空位 - 可殖民`,scout:`偵察`,attack:`攻擊`,colonize:`殖民`,switch:`切換`,recycle:`回收`,debrisField:`殘骸場`,scoutPlanetTitle:`偵察星球`,attackPlanetTitle:`攻擊星球`,colonizePlanetTitle:`殖民星球`,recyclePlanetTitle:`回收殘骸`,scoutPlanetMessage:`確定要派遣間諜探測器偵察星球 [{coordinates}] 嗎? - -請前往艦隊頁面選擇艦船並派遣。`,attackPlanetMessage:`確定要攻擊星球 [{coordinates}] 嗎? - -請前往艦隊頁面選擇艦船並派遣。`,colonizePlanetMessage:`確定要殖民位置 [{coordinates}] 嗎? - -請前往艦隊頁面派遣殖民船。`,recyclePlanetMessage:`確定要回收位置 [{coordinates}] 的殘骸嗎? - -請前往艦隊頁面派遣回收船。`,sendGift:`贈送禮物`,debris:`殘骸`,giftPlanetTitle:`贈送禮物`,giftPlanetMessage:`確定要向星球 [{coordinates}] 贈送資源嗎? - -請前往艦隊頁面選擇運輸船並裝載資源。`},messagesView:{title:`訊息中心`,battles:`戰鬥`,spy:`偵查`,npc:`NPC`,battleReports:`戰鬥報告`,spyReports:`間諜報告`,noBattleReports:`暫無戰鬥報告`,noSpyReports:`暫無間諜報告`,battleReport:`戰鬥報告`,spyReport:`間諜報告`,victory:`勝利`,defeat:`失敗`,draw:`平局`,attackerFleet:`攻擊方艦隊`,defenderFleet:`防守方艦隊`,defenderDefense:`防守方防禦`,attackerLosses:`攻擊方損失`,defenderLosses:`防守方損失`,noLosses:`無損失`,plunder:`掠奪資源`,debrisField:`殘骸場`,resources:`資源`,fleet:`艦隊`,defense:`防禦`,buildings:`建築`,unread:`未讀`,targetPlanet:`目標星球`,attackerRemaining:`攻擊方剩餘`,defenderRemaining:`防守方剩餘`,moonChance:`月球生成機率`,showRoundDetails:`顯示回合詳情`,hideRoundDetails:`隱藏回合詳情`,round:`第{round}回合`,attackerRemainingPower:`攻擊方剩餘火力`,defenderRemainingPower:`防守方剩餘火力`,spied:`被偵查`,spiedNotification:`被偵查通知`,noSpiedNotifications:`暫無被偵查通知`,detected:`已發現`,undetected:`未發現`,missions:`任務`,noMissionReports:`暫無任務報告`,success:`成功`,failed:`失敗`,npcActivity:`NPC活動`,noNPCActivity:`暫無NPC活動通知`,npcRecycleActivity:`NPC回收殘骸`,gifts:`禮物`,giftRejected:`被拒絕`,noGiftNotifications:`暫無禮物通知`,noGiftRejected:`暫無拒絕記錄`,giftFrom:`{npcName}的禮物`,giftRejectedBy:`{npcName}拒絕了禮物`,giftResources:`禮物資源`,rejectedResources:`被拒絕的資源`,expectedReputation:`預計好感度`,currentReputation:`當前好感度`,acceptGift:`接受`,rejectGift:`拒絕`,rejectionReason:{hostile:`對方對你有敵意,不接受禮物`,neutral_distrust:`對方對你缺乏信任`,polite_decline:`對方禮貌地拒絕了`}},missionReports:{transportSuccess:`運輸任務成功完成`,transportFailed:`運輸任務失敗`,colonizeSuccess:`殖民任務成功,新星球已建立`,colonizeFailed:`殖民任務失敗`,deploySuccess:`部署任務成功完成`,deployFailed:`部署任務失敗`,recycleSuccess:`回收任務成功完成`,recycleFailed:`回收任務失敗,目標位置沒有殘骸`,destroySuccess:`行星毀滅任務成功執行`,destroyFailed:`行星毀滅任務失敗`},simulatorView:{title:`戰鬥模擬器`,attacker:`攻擊方`,defender:`防守方`,attackerConfig:`攻擊方配置`,attackerConfigDesc:`設置攻擊方的艦隊和科技等級`,defenderConfig:`防守方配置`,defenderConfigDesc:`設置防守方的艦隊、防禦和科技等級`,fleet:`艦隊`,defenseStructures:`防禦設施`,techLevels:`科技等級`,weapon:`武器`,shield:`護盾`,armor:`裝甲`,defenderResources:`防守方資源(用於掠奪計算)`,startSimulation:`開始模擬`,reset:`重置`,battleResult:`戰鬥結果`,attackerVictory:`攻擊方勝利`,defenderVictory:`防守方勝利`,draw:`平局`,afterRounds:`經過 {rounds} 回合戰鬥`,attackerLosses:`攻擊方損失`,defenderLosses:`防守方損失`,noLosses:`無損失`,attackerRemaining:`攻擊方剩餘`,defenderRemaining:`防守方剩餘`,allDestroyed:`全部摧毀`,plunderableResources:`可掠奪資源`,debrisField:`殘骸場`,moonChance:`月球生成機率`,showRoundDetails:`顯示回合詳情`,hideRoundDetails:`隱藏回合詳情`,round:`第 {round} 回合`,attackerRemainingPower:`攻擊方剩餘火力`,defenderRemainingPower:`防守方剩餘火力`},settings:{dataManagement:`資料管理`,dataManagementDesc:`匯出、匯入或清除遊戲資料`,exportData:`匯出資料`,exportDataDesc:`將遊戲進度匯出為JSON檔案`,export:`匯出`,exporting:`匯出中...`,exportSuccess:`匯出成功`,exportFailed:`匯出失敗,請重試`,importData:`匯入資料`,importDataDesc:`從JSON檔案恢復遊戲進度`,selectFile:`匯入`,importSuccess:`匯入成功`,importConfirmTitle:`確認匯入資料`,importConfirmMessage:`匯入資料將覆蓋目前遊戲進度,此操作不可撤銷。確定要繼續嗎?`,importFailed:`匯入失敗,請檢查檔案格式`,clearData:`清除資料`,clearDataDesc:`刪除所有遊戲資料並重置遊戲`,clear:`清除`,clearConfirmTitle:`確認清除資料`,clearConfirmMessage:`這將刪除所有遊戲資料並重新開始,此操作不可撤銷。確定要繼續嗎?`,gameSettings:`遊戲設定`,gameSettingsDesc:`調整遊戲參數和偏好設定`,gamePause:`遊戲暫停`,gamePauseDesc:`暫停或恢復遊戲時間和資源生產`,pause:`暫停`,resume:`恢復`,gamePaused:`遊戲已暫停`,gameResumed:`遊戲已恢復`,playerName:`玩家名稱`,gameSpeed:`遊戲速度`,gameSpeedDesc:`目前遊戲速度倍率`,about:`關於`,version:`版本`,buildDate:`建置日期`,community:`社群`,github:`GitHub 儲存庫`,qqGroup:`QQ 交流群`},gmView:{title:`GM 管理面板`,adminOnly:`僅管理員`,selectPlanet:`選擇星球`,choosePlanet:`選擇一個星球`,resources:`資源`,buildings:`建築`,research:`科技`,ships:`艦船`,defense:`防禦`,officers:`軍官`,modifyResources:`修改資源`,resourcesDesc:`快速修改星球資源數量`,modifyBuildings:`修改建築`,buildingsDesc:`快速設定建築等級`,modifyResearch:`修改科技`,researchDesc:`快速設定科技等級`,modifyShips:`修改艦船`,shipsDesc:`快速設定艦船數量`,modifyDefense:`修改防禦`,defenseDesc:`快速設定防禦數量`,modifyOfficers:`修改軍官`,officersDesc:`快速設定軍官到期時間`,days:`天`,npcTesting:`NPC 測試`,npcTestingDesc:`測試NPC偵查和攻擊行為`,selectNPC:`選擇NPC`,chooseNPC:`選擇一個NPC`,targetPlanet:`目標星球`,chooseTarget:`選擇目標星球`,testSpy:`測試偵查`,testAttack:`測試攻擊`,testSpyAndAttack:`測試偵查&攻擊`,initializeFleet:`初始化NPC艦隊`,accelerateMissions:`加速所有任務(5秒)`,selectNPCFirst:`請先選擇一個NPC`,npcNoProbes:`NPC沒有間諜探測器`,npcNoSpyReport:`NPC需要先偵查`,npcMissionFailed:`創建任務失敗`,dangerZone:`危險區域`,dangerZoneDesc:`以下操作不可撤銷,請謹慎操作`,resetGame:`重置遊戲`,resetGameConfirm:`確定要重置遊戲嗎?這將刪除所有資料!`},alerts:{npcSpyIncoming:`NPC偵查即將到達`,npcAttackIncoming:`NPC艦隊來襲!`,npcFleetIncoming:`NPC艦隊接近`,ships:`艘艦船`,spiedBy:`被偵查`,attackedBy:`被攻擊`,detectionSuccess:`偵查被發現`,detectionFailed:`偵查未被發現`,npcSpiedYourPlanet:`NPC偵查了你的星球`,npcAttackedYourPlanet:`NPC攻擊了你的星球`},diplomacy:{title:`外交`,description:`管理與NPC的外交關係`,tabs:{all:`全部`,friendly:`友好`,neutral:`中立`,hostile:`敵對`},noNpcs:`沒有NPC`,noFriendlyNpcs:`沒有友好的NPC`,noNeutralNpcs:`沒有中立的NPC`,noHostileNpcs:`沒有敵對的NPC`,recentEvents:`最近事件`,recentEventsDescription:`最近的外交活動記錄`,ago:`前`,status:{friendly:`友好`,neutral:`中立`,hostile:`敵對`},planets:`星球`,allies:`盟友`,reputation:`聲望`,alliedWith:`結盟對象`,more:`更多`,actions:{gift:`贈送禮物`,viewPlanets:`查看星球`},lastEvent:`最近事件`,events:{gift:`已贈送禮物`,attack:`攻擊`,allyAttacked:`盟友被攻擊`,spy:`間諜活動`,stealDebris:`掠奪殘骸`}},pagination:{previous:`上一頁`,next:`下一頁`,first:`首頁`,last:`末頁`,page:`第 {page} 頁`}},n={common:{confirm:`Confirm`,cancel:`Cancel`,delete:`Delete`,edit:`Edit`,save:`Save`,close:`Close`,back:`Back`,next:`Next`,previous:`Previous`,submit:`Submit`,reset:`Reset`,search:`Search`,filter:`Filter`,loading:`Loading...`,noData:`No Data`,error:`Error`,success:`Success`,warning:`Warning`,info:`Info`,resourceType:`Resource Type`,playerName:`Commander`,timeHour:`h`,timeMinute:`m`,timeSecond:`s`,featureLocked:`Feature Locked`,unlockRequired:`Building Required`,requiredBuilding:`Required Building`,currentLevel:`Current Level`,goToBuildings:`Go to Buildings`,locked:`Locked`,viewRequirements:`View Requirements`,requirementsNotMet:`Requirements Not Met`,current:`Current`,level:`Level`},errors:{requirementsNotMet:`Requirements not met`,insufficientResources:`Insufficient resources`,insufficientFleetStorage:`Insufficient fleet storage`,shieldDomeLimit:`Shield dome limit reached`,fleetMissionsFull:`Fleet mission slots full`,insufficientFleet:`Insufficient fleet`,insufficientFuel:`Insufficient fuel`,planetOnly:`This building can only be built on planets`,moonOnly:`This building can only be built on moons`,buildQueueFull:`Build queue full`,insufficientSpace:`Insufficient space`,buildingLevelZero:`Building level is 0, cannot demolish`,researchQueueFull:`Research queue full`,moonExists:`Moon already exists`,insufficientDebris:`Insufficient debris field`},nav:{overview:`Overview`,buildings:`Buildings`,research:`Research`,shipyard:`Shipyard`,defense:`Defense`,fleet:`Fleet`,officers:`Officers`,simulator:`Simulator`,galaxy:`Galaxy`,diplomacy:`Diplomacy`,messages:`Messages`,settings:`Settings`,gm:`GM`},sidebar:{language:`Language`,lightMode:`Light Mode`,darkMode:`Dark Mode`,collapse:`Collapse`,expand:`Expand`},resources:{metal:`Metal`,crystal:`Crystal`,deuterium:`Deuterium`,darkMatter:`Dark Matter`,energy:`Energy`,production:`Production`,consumption:`Consumption`,capacity:`Capacity`,current:`Current`,max:`Max Capacity`,perHour:`hour`,perMinute:`min`,hour:`hour`,noEnergy:`No Energy`},planet:{planet:`Planet`,moon:`Moon`,colony:`Colony`,position:`Position`,coordinates:`Coordinates`,switchToMoon:`View Moon`,backToPlanet:`Back to Planet`,switchPlanet:`Switch Planet`,currentPlanet:`Current Planet`,fields:`Fields`,temperature:`Temperature`,homePlanet:`Home Planet`,planetPrefix:`Planet`,moonSuffix:`'s Moon`,colonyPrefix:`Colony`},player:{points:`Total Points`},buildings:{metalMine:`Metal Mine`,crystalMine:`Crystal Mine`,deuteriumSynthesizer:`Deuterium Synthesizer`,solarPlant:`Solar Plant`,fusionReactor:`Fusion Reactor`,roboticsFactory:`Robotics Factory`,naniteFactory:`Nanite Factory`,shipyard:`Shipyard`,researchLab:`Research Lab`,metalStorage:`Metal Storage`,crystalStorage:`Crystal Storage`,deuteriumTank:`Deuterium Tank`,darkMatterCollector:`Dark Matter Collector`,darkMatterTank:`Dark Matter Tank`,missileSilo:`Missile Silo`,terraformer:`Terraformer`,lunarBase:`Lunar Base`,sensorPhalanx:`Sensor Phalanx`,jumpGate:`Jump Gate`,planetDestroyerFactory:`Planet Destroyer Factory`,buildTime:`Build Time`,production:`Production`,consumption:`Consumption`,totalCost:`Total Cost`,totalPoints:`Total Points`,levelRange:`Level Range`,storageCapacity:`Capacity`,energyProduction:`Energy Production`,fleetStorage:`Fleet Storage`,buildQueueBonus:`Build Queue`,spaceBonus:`Space Bonus`,buildSpeedBonus:`Build Speed Bonus`,researchSpeedBonus:`Research Speed Bonus`,missileCapacity:`Missile Capacity`},buildingDescriptions:{metalMine:`Extracts metal resources`,crystalMine:`Extracts crystal resources`,deuteriumSynthesizer:`Synthesizes deuterium resources`,solarPlant:`Provides energy`,fusionReactor:`Uses deuterium to generate large amounts of energy`,roboticsFactory:`Accelerates construction speed`,naniteFactory:`Increases build queue capacity, +1 per level (max 10 levels)`,shipyard:`Constructs ships`,researchLab:`Researches technologies`,metalStorage:`Increases metal storage capacity`,crystalStorage:`Increases crystal storage capacity`,deuteriumTank:`Increases deuterium storage capacity`,darkMatterCollector:`Collects rare dark matter resources`,darkMatterTank:`Increases dark matter storage capacity`,missileSilo:`Stores and launches missiles, 10 missiles per level`,terraformer:`Terraforms planet surface, adds 5 available space per level`,lunarBase:`Increases available space on the moon, +5 space per level`,sensorPhalanx:`Detects fleet activities in surrounding systems`,jumpGate:`Instantly transfers fleets to other moons`,planetDestroyerFactory:`Constructs ultimate weapons capable of destroying planets`},ships:{lightFighter:`Light Fighter`,heavyFighter:`Heavy Fighter`,cruiser:`Cruiser`,battleship:`Battleship`,battlecruiser:`Battlecruiser`,bomber:`Bomber`,destroyer:`Destroyer`,smallCargo:`Small Cargo`,largeCargo:`Large Cargo`,colonyShip:`Colony Ship`,recycler:`Recycler`,espionageProbe:`Espionage Probe`,solarSatellite:`Solar Satellite`,darkMatterHarvester:`Dark Matter Harvester`,deathstar:`Deathstar`},shipDescriptions:{lightFighter:`Basic combat unit`,heavyFighter:`Heavily armored fighter`,cruiser:`Medium warship, balanced offense and defense`,battleship:`Powerful warship`,battlecruiser:`Fast powerful warship, excels at attacking battleships`,bomber:`Specialized ship for attacking defense structures`,destroyer:`Hunter specialized in destroying large ships`,smallCargo:`Transports small amounts of resources`,largeCargo:`Transports large amounts of resources`,colonyShip:`Used to colonize new planets`,recycler:`Collects debris field resources`,espionageProbe:`Scouts enemy planets`,solarSatellite:`Provides extra energy, generates 50 energy per satellite`,darkMatterHarvester:`Special ship for harvesting dark matter`,deathstar:`Ultimate weapon capable of destroying entire planets`},defenses:{rocketLauncher:`Rocket Launcher`,lightLaser:`Light Laser`,heavyLaser:`Heavy Laser`,gaussCannon:`Gauss Cannon`,ionCannon:`Ion Cannon`,plasmaTurret:`Plasma Turret`,smallShieldDome:`Small Shield Dome`,largeShieldDome:`Large Shield Dome`,antiBallisticMissile:`Anti-Ballistic Missile`,interplanetaryMissile:`Interplanetary Missile`,planetaryShield:`Planetary Shield`},defenseDescriptions:{rocketLauncher:`Basic defense facility`,lightLaser:`Light energy weapon`,heavyLaser:`Heavy energy weapon`,gaussCannon:`High-speed kinetic weapon`,ionCannon:`Effective against shields`,plasmaTurret:`Powerful defense facility`,smallShieldDome:`Small shield protecting the entire planet`,largeShieldDome:`Large shield protecting the entire planet`,antiBallisticMissile:`Intercepts enemy missiles, can intercept 1 interplanetary missile each`,interplanetaryMissile:`Can attack defense structures on other planets`,planetaryShield:`Super shield protecting planet from destruction attacks`},research:{researchTime:`Research Time`,totalCost:`Total Cost`,totalPoints:`Total Points`,levelRange:`Level Range`,attackBonus:`Attack Bonus`,shieldBonus:`Shield Bonus`,armorBonus:`Armor Bonus`,spyLevel:`Spy Level`,researchQueueBonus:`Research Queue`,colonySlots:`Colony Slots`,forAllPlanets:`(Global)`,speedBonus:`Speed Bonus`,researchSpeedBonus:`Research Speed Bonus`},technologies:{energyTechnology:`Energy Technology`,laserTechnology:`Laser Technology`,ionTechnology:`Ion Technology`,hyperspaceTechnology:`Hyperspace Technology`,plasmaTechnology:`Plasma Technology`,computerTechnology:`Computer Technology`,espionageTechnology:`Espionage Technology`,weaponsTechnology:`Weapons Technology`,shieldingTechnology:`Shielding Technology`,armourTechnology:`Armour Technology`,astrophysics:`Astrophysics`,gravitonTechnology:`Graviton Technology`,combustionDrive:`Combustion Drive`,impulseDrive:`Impulse Drive`,hyperspaceDrive:`Hyperspace Drive`,darkMatterTechnology:`Dark Matter Technology`,terraformingTechnology:`Terraforming Technology`,planetDestructionTech:`Planet Destruction Technology`},technologyDescriptions:{energyTechnology:`Improves energy efficiency`,laserTechnology:`Foundation of laser weapons and defense`,ionTechnology:`Ion weapon technology`,hyperspaceTechnology:`Hyperspace jump technology`,plasmaTechnology:`Plasma weapon technology`,computerTechnology:`Increases research queue capacity, +1 per level (max 10 levels)`,espionageTechnology:`Improves spy probe effectiveness, +1 espionage level per level`,weaponsTechnology:`Increases ship and defense attack power by 10% per level`,shieldingTechnology:`Increases ship and defense shields by 10% per level`,armourTechnology:`Increases ship and defense armour by 10% per level`,astrophysics:`Each level adds 1 colony slot and increases expedition success rate`,gravitonTechnology:`Studies graviton manipulation, required for Death Star`,combustionDrive:`Basic propulsion technology`,impulseDrive:`Intermediate propulsion technology`,hyperspaceDrive:`Advanced propulsion technology`,darkMatterTechnology:`Research into dark matter properties and applications`,terraformingTechnology:`Research planet terraforming technology, adds 3 available space to all planets per level`,planetDestructionTech:`Terrifying technology for destroying entire planets`},officers:{commander:`Commander`,admiral:`Admiral`,engineer:`Engineer`,geologist:`Geologist`,technocrat:`Technocrat`,darkMatterSpecialist:`Dark Matter Specialist`,resourceBonus:`Resource Production Bonus`,darkMatterBonus:`Dark Matter Production Bonus`,energyBonus:`Energy Production Bonus`},officerDescriptions:{commander:`Improves building speed and management`,admiral:`Improves fleet combat and speed`,engineer:`Improves energy and defense`,geologist:`Improves resource production`,technocrat:`Improves research speed and espionage`,darkMatterSpecialist:`Improves dark matter collection efficiency`},queue:{buildQueueBonus:`Build Queue`,spaceBonus:`Space Bonus`,buildSpeedBonus:`Build Speed Bonus`,researchSpeedBonus:`Research Speed Bonus`,researchQueueBonus:`Research Queue`,building:`Building`,researching:`Researching`,remaining:`Remaining`,cancel:`Cancel`,cancelBuild:`Cancel Build`,cancelResearch:`Cancel Research`,confirmCancel:`Are you sure you want to cancel? 50% of resources will be refunded.`,level:`Level`,quantity:`Quantity`,upgradeToLevel:`Upgrade to Level`},overview:{title:`Planet Overview`,resourceOverview:`Resources`,fleetInfo:`Fleet`,currentShips:`Ships on this planet`,productionSources:`Production Sources`,productionSourcesDesc:`Detailed resource production and bonus information`,consumptionSources:`Consumption Sources`,consumptionSourcesDesc:`Energy consumption details for buildings`,totalProduction:`Total Production`,totalConsumption:`Total Consumption`,noConsumption:`No energy consumption`},buildingsView:{title:`Buildings`,usedSpace:`Used Space`,spaceUsage:`Space Usage`,level:`Level`,upgradeCost:`Upgrade Cost`,buildTime:`Build Time`,upgrade:`Upgrade`,maxLevelReached:`Max Level Reached`,requirementsNotMet:`Requirements Not Met`,upgradeFailed:`Upgrade Failed`,upgradeFailedMessage:`Please check if you have enough resources, space, or if there are other build tasks.`,demolish:`Demolish`,demolishRefund:`Demolish Refund`,demolishFailed:`Demolish Failed`,demolishFailedMessage:`Unable to demolish this building. Please check if the build queue is full or the building level is 0.`,confirmDemolish:`Confirm Demolish`,confirmDemolishMessage:`Are you sure you want to demolish`},researchView:{title:`Research`,researchCost:`Research Cost`,research:`Research`,maxLevelReached:`Max Level Reached`,researchFailed:`Research Failed`,researchFailedMessage:`Please check if you have enough resources, prerequisites are met, or if there are other research tasks.`},shipyard:{attack:`Attack`,shield:`Shield`,armor:`Armor`,speed:`Speed`,cargoCapacity:`Cargo Capacity`,fuelConsumption:`Fuel Consumption`,buildCost:`Build Cost`,buildTime:`Build Time`,perUnit:`Per Unit`,batchCalculator:`Batch Calculator`,quantity:`Quantity`,totalCost:`Total Cost`,totalTime:`Total Time`},shipyardView:{title:`Shipyard`,fleetStorage:`Fleet Storage`,attack:`Attack`,shield:`Shield`,speed:`Speed`,cargoCapacity:`Cargo Capacity`,unitCost:`Unit Cost`,buildQuantity:`Build Quantity`,totalCost:`Total Cost`,build:`Build`,inputError:`Input Error`,inputErrorMessage:`Please enter build quantity!`,buildFailed:`Build Failed`,buildFailedMessage:`Please check if you have enough resources or if prerequisites are met.`},defense:{attack:`Attack`,shield:`Shield`,armor:`Armor`,buildCost:`Build Cost`,buildTime:`Build Time`,perUnit:`Per Unit`,batchCalculator:`Batch Calculator`,quantity:`Quantity`,totalCost:`Total Cost`,totalTime:`Total Time`},defenseView:{title:`Defense`,attack:`Attack`,shield:`Shield`,armor:`Armor`,buildTime:`Build Time`,seconds:`s`,unitCost:`Unit Cost`,buildQuantity:`Build Quantity`,totalCost:`Total Cost`,build:`Build`,shieldDomeBuilt:`Shield dome already built`,inputError:`Input Error`,inputErrorMessage:`Please enter build quantity!`,buildFailed:`Build Failed`,buildFailedMessage:`Please check if you have enough resources or if prerequisites are met. Shield domes can only be built once.`},fleetView:{title:`Fleet Management`,fleetOverview:`Fleet Overview`,sendFleet:`Send Fleet`,flightMissions:`Flight Missions`,currentPlanetFleet:`Current Planet Fleet`,attack:`Attack`,shield:`Shield`,armor:`Armor`,speed:`Speed`,cargo:`Cargo`,selectFleet:`Select Fleet`,selectFleetDescription:`Select the number of ships to send`,available:`Available`,all:`All`,targetCoordinates:`Target Coordinates`,galaxy:`Galaxy`,system:`System`,position:`Position`,missionType:`Mission Type`,missionInfo:`Mission Info`,fuelConsumption:`Fuel Consumption`,flightTime:`Flight Time`,attackMission:`Attack`,transport:`Transport`,colonize:`Colonize`,spy:`Spy`,deploy:`Deploy`,recycle:`Recycle`,destroy:`Planet Destruction`,transportResources:`Transport Resources`,totalCargoCapacity:`Total Cargo Capacity`,used:`Used`,noFlightMissions:`No flight missions`,outbound:`Outbound`,returning:`Returning`,fleetComposition:`Fleet Composition`,carryingResources:`Carrying Resources`,arrivalTime:`Arrival Time`,returnTime:`Return Time`,recallFleet:`Recall Fleet`,sendFailed:`Send Failed`,sendFailedMessage:`Please check fleet count, fuel availability, or cargo capacity limits.`,recallFailed:`Recall Failed`,recallFailedMessage:`This mission cannot be recalled.`,unknownPlanet:`Unknown Planet`,fleetMissionSlots:`Fleet Mission Slots`,noShipsSelected:`No ships selected`,cannotSendToOwnPlanet:`Cannot send fleet to your own planet`,cargoExceedsCapacity:`Cargo exceeds capacity`,noColonyShip:`Colony ship required for colonization mission`,noDebrisAtTarget:`No debris field at target coordinates or debris field is empty`,noDeathstar:`Deathstar required for destruction mission`,giftMode:`Gift Mode`,giftModeDescription:`Send resources as a gift to`,estimatedReputationGain:`Estimated reputation gain`},officersView:{title:`Officers`,activated:`Activated`,inactive:`Inactive`,activeStatus:`Active Status`,expirationTime:`Expiration Time`,remainingTime:`Remaining Time`,recruitCost:`Recruitment Cost`,days:`days`,benefitsBonus:`Benefits Bonus`,resourceProduction:`Resource Production`,darkMatterProduction:`Dark Matter Production`,energyProduction:`Energy Production`,buildingSpeed:`Building Speed`,researchSpeed:`Research Speed`,fleetSpeed:`Fleet Speed`,fuelConsumption:`Fuel Consumption`,defense:`Defense`,storageCapacity:`Storage Capacity`,buildQueueBonus:`Build Queue`,spaceBonus:`Space Bonus`,buildSpeedBonus:`Build Speed Bonus`,researchSpeedBonus:`Research Speed Bonus`,fleetSlots:`Fleet Slots`,hire:`Hire`,renew:`Renew`,dismiss:`Dismiss`,hireTitle:`Hire Officer`,hireMessage:`Are you sure you want to hire {name}? Valid for 7 days.`,renewTitle:`Renew Officer`,renewMessage:`Are you sure you want to renew {name} for 7 days?`,dismissTitle:`Dismiss Officer`,dismissMessage:`Are you sure you want to dismiss {name}? No refunds will be given.`,hireFailed:`Hire Failed`,renewFailed:`Renew Failed`,insufficientResources:`Insufficient resources!`},galaxyView:{title:`Galaxy`,selectCoordinates:`Select Coordinates`,galaxy:`Galaxy`,selectGalaxy:`Select Galaxy`,system:`System`,selectSystem:`Select System`,view:`View`,myPlanet:`My Planet`,myPlanets:`My Planets`,npcPlanets:`NPC Planets`,selectPlanetToView:`Select planet to view`,totalPositions:`10 planet positions total`,mine:`Mine`,hostile:`Hostile`,emptySlot:`Empty - Colonizable`,scout:`Scout`,attack:`Attack`,colonize:`Colonize`,switch:`Switch`,recycle:`Recycle`,debrisField:`Debris Field`,scoutPlanetTitle:`Scout Planet`,attackPlanetTitle:`Attack Planet`,colonizePlanetTitle:`Colonize Planet`,recyclePlanetTitle:`Recycle Debris`,scoutPlanetMessage:`Are you sure you want to send espionage probes to scout planet [{coordinates}]? - -Please go to the fleet page to select ships and send.`,attackPlanetMessage:`Are you sure you want to attack planet [{coordinates}]? - -Please go to the fleet page to select ships and send.`,colonizePlanetMessage:`Are you sure you want to colonize position [{coordinates}]? - -Please go to the fleet page to send a colony ship.`,recyclePlanetMessage:`Are you sure you want to recycle debris at position [{coordinates}]? - -Please go to the fleet page to send recycler ships.`,sendGift:`Send Gift`,debris:`Debris`,giftPlanetTitle:`Send Gift`,giftPlanetMessage:`Are you sure you want to send resources as a gift to planet [{coordinates}]? - -Please go to the fleet page to select transport ships and load resources.`},messagesView:{title:`Messages`,battles:`Battles`,spy:`Spy`,npc:`NPC`,battleReports:`Battle Reports`,spyReports:`Spy Reports`,noBattleReports:`No battle reports`,noSpyReports:`No spy reports`,battleReport:`Battle Report`,spyReport:`Spy Report`,victory:`Victory`,defeat:`Defeat`,draw:`Draw`,attackerFleet:`Attacker Fleet`,defenderFleet:`Defender Fleet`,defenderDefense:`Defender Defense`,attackerLosses:`Attacker Losses`,defenderLosses:`Defender Losses`,noLosses:`No losses`,plunder:`Plunder`,debrisField:`Debris Field`,resources:`Resources`,fleet:`Fleet`,defense:`Defense`,buildings:`Buildings`,unread:`Unread`,targetPlanet:`Target Planet`,spied:`Spied`,spiedNotification:`Spied Notification`,noSpiedNotifications:`No spied notifications`,detected:`Detected`,undetected:`Undetected`,missions:`Missions`,noMissionReports:`No mission reports`,success:`Success`,failed:`Failed`,npcActivity:`NPC Activity`,noNPCActivity:`No NPC activity notifications`,npcRecycleActivity:`NPC Recycling Debris`,gifts:`Gifts`,giftRejected:`Rejected`,noGiftNotifications:`No gift notifications`,noGiftRejected:`No rejected gifts`,giftFrom:`Gift from {npcName}`,giftRejectedBy:`{npcName} rejected the gift`,giftResources:`Gift resources`,rejectedResources:`Rejected resources`,expectedReputation:`Expected reputation`,currentReputation:`Current reputation`,acceptGift:`Accept`,rejectGift:`Reject`,rejectionReason:{hostile:`They are hostile towards you and do not accept gifts`,neutral_distrust:`They lack trust in you`,polite_decline:`They politely declined`}},missionReports:{transportSuccess:`Transport mission completed successfully`,transportFailed:`Transport mission failed`,colonizeSuccess:`Colonization mission successful, new planet established`,colonizeFailed:`Colonization mission failed`,deploySuccess:`Deployment mission completed successfully`,deployFailed:`Deployment mission failed`,recycleSuccess:`Recycling mission completed successfully`,recycleFailed:`Recycling mission failed, no debris at target location`,destroySuccess:`Planet destruction mission executed successfully`,destroyFailed:`Planet destruction mission failed`},simulatorView:{title:`Battle Simulator`,attacker:`Attacker`,defender:`Defender`,attackerConfig:`Attacker Configuration`,attackerConfigDesc:`Configure attacker fleet and technology levels`,defenderConfig:`Defender Configuration`,defenderConfigDesc:`Configure defender fleet, defense, and technology levels`,fleet:`Fleet`,defenseStructures:`Defense Structures`,techLevels:`Technology Levels`,weapon:`Weapon`,shield:`Shield`,armor:`Armor`,defenderResources:`Defender Resources (for plunder calculation)`,startSimulation:`Start Simulation`,reset:`Reset`,battleResult:`Battle Result`,attackerVictory:`Attacker Victory`,defenderVictory:`Defender Victory`,draw:`Draw`,afterRounds:`After {rounds} rounds`,attackerLosses:`Attacker Losses`,defenderLosses:`Defender Losses`,noLosses:`No losses`,attackerRemaining:`Attacker Remaining`,defenderRemaining:`Defender Remaining`,allDestroyed:`All destroyed`,plunderableResources:`Plunderable Resources`,debrisField:`Debris Field`,moonChance:`Moon chance`,showRoundDetails:`Show round details`,hideRoundDetails:`Hide round details`,round:`Round {round}`,attackerRemainingPower:`Attacker remaining power`,defenderRemainingPower:`Defender remaining power`,spied:`Spied`,spiedNotification:`Spied Notification`,noSpiedNotifications:`No spied notifications`,detected:`Detected`,undetected:`Undetected`},settings:{dataManagement:`Data Management`,dataManagementDesc:`Export, import, or clear game data`,exportData:`Export Data`,exportDataDesc:`Export game progress as JSON file`,export:`Export`,exporting:`Exporting...`,exportSuccess:`Export successful`,exportFailed:`Export failed, please try again`,importData:`Import Data`,importDataDesc:`Restore game progress from JSON file`,selectFile:`Select File`,importSuccess:`Import successful`,importConfirmTitle:`Confirm Import`,importConfirmMessage:`Importing will overwrite current game progress. This action cannot be undone. Continue?`,importFailed:`Import failed, please check file format`,clearData:`Clear Data`,clearDataDesc:`Delete all game data and reset`,clear:`Clear`,clearConfirmTitle:`Confirm Clear Data`,clearConfirmMessage:`This will delete all game data and start over. This action cannot be undone. Continue?`,gameSettings:`Game Settings`,gameSettingsDesc:`Adjust game parameters and preferences`,gamePause:`Game Pause`,gamePauseDesc:`Pause or resume game time and resource production`,pause:`Pause`,resume:`Resume`,gamePaused:`Game paused`,gameResumed:`Game resumed`,playerName:`Player Name`,gameSpeed:`Game Speed`,gameSpeedDesc:`Current game speed multiplier`,about:`About`,version:`Version`,buildDate:`Build Date`,community:`Community`,github:`GitHub Repository`,qqGroup:`QQ Group`},gmView:{title:`GM Control Panel`,adminOnly:`Admin Only`,selectPlanet:`Select Planet`,choosePlanet:`Choose a planet`,resources:`Resources`,buildings:`Buildings`,research:`Research`,ships:`Ships`,defense:`Defense`,officers:`Officers`,modifyResources:`Modify Resources`,resourcesDesc:`Quickly modify planet resources`,modifyBuildings:`Modify Buildings`,buildingsDesc:`Quickly set building levels`,modifyResearch:`Modify Research`,researchDesc:`Quickly set research levels`,modifyShips:`Modify Ships`,shipsDesc:`Quickly set ship counts`,modifyDefense:`Modify Defense`,defenseDesc:`Quickly set defense counts`,modifyOfficers:`Modify Officers`,officersDesc:`Quickly set officer expiration time`,days:`d`,npcTesting:`NPC Testing`,npcTestingDesc:`Test NPC spy and attack behavior`,selectNPC:`Select NPC`,chooseNPC:`Choose an NPC`,targetPlanet:`Target Planet`,chooseTarget:`Choose target planet`,testSpy:`Test Spy`,testAttack:`Test Attack`,testSpyAndAttack:`Test Spy & Attack`,initializeFleet:`Initialize NPC Fleet`,accelerateMissions:`Accelerate All Missions (5s)`,selectNPCFirst:`Please select an NPC first`,npcNoProbes:`NPC has no spy probes`,npcNoSpyReport:`NPC needs to spy first`,npcMissionFailed:`Failed to create mission`,dangerZone:`Danger Zone`,dangerZoneDesc:`The following operations are irreversible`,resetGame:`Reset Game`,resetGameConfirm:`Are you sure you want to reset the game? This will delete all data!`},alerts:{npcSpyIncoming:`NPC Spy Probe Incoming`,npcAttackIncoming:`NPC Fleet Attack Incoming!`,npcFleetIncoming:`NPC Fleet Approaching`,ships:`ships`,spiedBy:`Spied By`,attackedBy:`Attacked By`,detectionSuccess:`Spy detected`,detectionFailed:`Spy not detected`,npcSpiedYourPlanet:`NPC spied your planet`,npcAttackedYourPlanet:`NPC attacked your planet`},diplomacy:{title:`Diplomacy`,description:`Manage diplomatic relations with NPCs`,tabs:{all:`All`,friendly:`Friendly`,neutral:`Neutral`,hostile:`Hostile`},noNpcs:`No NPCs`,noFriendlyNpcs:`No friendly NPCs`,noNeutralNpcs:`No neutral NPCs`,noHostileNpcs:`No hostile NPCs`,recentEvents:`Recent Events`,recentEventsDescription:`Recent diplomatic activity log`,ago:`ago`,status:{friendly:`Friendly`,neutral:`Neutral`,hostile:`Hostile`},planets:`planets`,allies:`allies`,reputation:`Reputation`,alliedWith:`Allied with`,more:`more`,actions:{gift:`Send Gift`,viewPlanets:`View Planets`},lastEvent:`Last Event`,events:{gift:`Sent Gift`,attack:`Attack`,allyAttacked:`Ally Attacked`,spy:`Espionage`,stealDebris:`Debris Stolen`}},pagination:{previous:`Previous`,next:`Next`,first:`First`,last:`Last`,page:`Page {page}`}},r={common:{confirm:`Bestätigen`,cancel:`Abbrechen`,delete:`Löschen`,edit:`Bearbeiten`,save:`Speichern`,close:`Schließen`,back:`Zurück`,next:`Weiter`,previous:`Vorherige`,submit:`Absenden`,reset:`Zurücksetzen`,search:`Suchen`,filter:`Filtern`,loading:`Laden...`,noData:`Keine Daten`,error:`Fehler`,success:`Erfolg`,warning:`Warnung`,info:`Info`,resourceType:`Ressourcentyp`,playerName:`Kommandant`,timeHour:`Std`,timeMinute:`Min`,timeSecond:`Sek`,featureLocked:`Funktion gesperrt`,unlockRequired:`Gebäude erforderlich`,requiredBuilding:`Erforderliches Gebäude`,currentLevel:`Aktuelles Level`,goToBuildings:`Zu Gebäuden`,locked:`Gesperrt`,viewRequirements:`Anforderungen anzeigen`,requirementsNotMet:`Anforderungen nicht erfüllt`,current:`Aktuell`,level:`Stufe`},errors:{requirementsNotMet:`Anforderungen nicht erfüllt`,insufficientResources:`Unzureichende Ressourcen`,insufficientFleetStorage:`Unzureichender Flottenspeicher`,shieldDomeLimit:`Schildkuppel-Limit erreicht`,fleetMissionsFull:`Flottenmissionsplätze voll`,insufficientFleet:`Unzureichende Flotte`,insufficientFuel:`Unzureichender Treibstoff`,planetOnly:`Dieses Gebäude kann nur auf Planeten gebaut werden`,moonOnly:`Dieses Gebäude kann nur auf Monden gebaut werden`,buildQueueFull:`Bauauftrag voll`,insufficientSpace:`Unzureichender Platz`,buildingLevelZero:`Gebäudelevel ist 0, kann nicht abgerissen werden`,researchQueueFull:`Forschungsauftrag voll`,moonExists:`Mond existiert bereits`,insufficientDebris:`Unzureichendes Trümmerfeld`},nav:{overview:`Übersicht`,buildings:`Gebäude`,research:`Forschung`,shipyard:`Raumschiffwerft`,defense:`Verteidigung`,fleet:`Flotte`,officers:`Offiziere`,simulator:`Simulator`,galaxy:`Galaxie`,diplomacy:`Diplomacy`,messages:`Nachrichten`,settings:`Einstellungen`,gm:`GM`},sidebar:{language:`Sprache`,lightMode:`Heller Modus`,darkMode:`Dunkler Modus`,collapse:`Einklappen`,expand:`Ausklappen`},resources:{metal:`Metall`,crystal:`Kristall`,deuterium:`Deuterium`,darkMatter:`Dunkle Materie`,energy:`Energie`,production:`Produktion`,consumption:`Verbrauch`,capacity:`Kapazität`,current:`Aktuell`,max:`Max. Kapazität`,perHour:`Stunde`,perMinute:`Min`,hour:`Stunde`,noEnergy:`Keine Energie`},planet:{planet:`Planet`,moon:`Mond`,colony:`Kolonie`,position:`Position`,coordinates:`Koordinaten`,switchToMoon:`Zum Mond`,backToPlanet:`Zurück zum Planeten`,switchPlanet:`Planet wechseln`,currentPlanet:`Aktueller Planet`,fields:`Felder`,temperature:`Temperatur`,homePlanet:`Heimatplanet`,planetPrefix:`Planet`,moonSuffix:`s Mond`,colonyPrefix:`Kolonie`},player:{points:`Gesamtpunkte`},buildings:{metalMine:`Metallmine`,crystalMine:`Kristallmine`,deuteriumSynthesizer:`Deuterium-Synthesizer`,solarPlant:`Solarkraftwerk`,fusionReactor:`Fusionsreaktor`,roboticsFactory:`Roboterfabrik`,naniteFactory:`Nanitenfabrik`,shipyard:`Raumschiffwerft`,researchLab:`Forschungslabor`,metalStorage:`Metallspeicher`,crystalStorage:`Kristallspeicher`,deuteriumTank:`Deuteriumtank`,darkMatterCollector:`Dunkle-Materie-Kollektor`,darkMatterTank:`Dunkle-Materie-Tank`,missileSilo:`Raketensilo`,terraformer:`Terraformer`,lunarBase:`Mondbasis`,sensorPhalanx:`Sensorphalanx`,jumpGate:`Sprungtor`,planetDestroyerFactory:`Planetenzerstörer-Fabrik`,buildTime:`Bauzeit`,production:`Produktion`,consumption:`Verbrauch`,totalCost:`Gesamtkosten`,totalPoints:`Gesamtpunkte`,levelRange:`Stufenbereich`,capacity:`Capacity/Effect`,storageCapacity:`Capacity`,energyProduction:`Energy Production`,fleetStorage:`Fleet Storage`,buildQueue:`Build Queue`,buildQueueBonus:`Bauauftrag`,spaceBonus:`Raumbonus`,buildSpeedBonus:`Baugeschwindigkeitsbonus`,researchSpeedBonus:`Forschungsgeschwindigkeitsbonus`,planetSpace:`Planet Space`,moonSpace:`Moon Space`,missileCapacity:`Missile Capacity`},buildingDescriptions:{metalMine:`Fördert Metallressourcen`,crystalMine:`Fördert Kristallressourcen`,deuteriumSynthesizer:`Synthesiert Deuteriumressourcen`,solarPlant:`Liefert Energie`,fusionReactor:`Nutzt Deuterium zur Erzeugung großer Energiemengen`,roboticsFactory:`Beschleunigt Baugeschwindigkeit`,naniteFactory:`Erhöht Bauauftragskapazität, +1 pro Stufe (max 10 Stufen)`,shipyard:`Baut Schiffe`,researchLab:`Erforscht Technologien`,metalStorage:`Erhöht Metallspeicherkapazität`,crystalStorage:`Erhöht Kristallspeicherkapazität`,deuteriumTank:`Erhöht Deuteriumspeicherkapazität`,darkMatterCollector:`Sammelt seltene Dunkle-Materie-Ressourcen`,darkMatterTank:`Erhöht Dunkle-Materie-Speicherkapazität`,missileSilo:`Lagert und startet Raketen, 10 Raketen pro Stufe`,terraformer:`Terraformt Planetenoberfläche, erhöht verfügbaren Platz um 5 pro Stufe`,lunarBase:`Erhöht verfügbaren Platz auf dem Mond, +5 Platz pro Stufe`,sensorPhalanx:`Erkennt Flottenaktivitäten in umliegenden Systemen`,jumpGate:`Überträgt Flotten sofort zu anderen Monden`,planetDestroyerFactory:`Konstruiert ultimative Waffen zur Zerstörung von Planeten`},ships:{lightFighter:`Leichter Jäger`,heavyFighter:`Schwerer Jäger`,cruiser:`Kreuzer`,battleship:`Schlachtschiff`,battlecruiser:`Schlachtkreuzer`,bomber:`Bomber`,destroyer:`Zerstörer`,smallCargo:`Kleiner Transporter`,largeCargo:`Großer Transporter`,colonyShip:`Kolonieschiff`,recycler:`Recycler`,espionageProbe:`Spionagesonde`,solarSatellite:`Solarsatellit`,darkMatterHarvester:`Dunkle-Materie-Ernter`,deathstar:`Todesstern`},shipDescriptions:{lightFighter:`Grundlegende Kampfeinheit`,heavyFighter:`Schwer gepanzerter Jäger`,cruiser:`Mittleres Kriegsschiff, ausgewogene Offensive und Defensive`,battleship:`Mächtiges Kriegsschiff`,battlecruiser:`Schnelles mächtiges Kriegsschiff, hervorragend gegen Schlachtschiffe`,bomber:`Spezialisiertes Schiff zum Angriff auf Verteidigungsanlagen`,destroyer:`Jäger spezialisiert auf Zerstörung großer Schiffe`,smallCargo:`Transportiert kleine Mengen Ressourcen`,largeCargo:`Transportiert große Mengen Ressourcen`,colonyShip:`Zur Kolonisierung neuer Planeten`,recycler:`Sammelt Trümmerfeld-Ressourcen`,espionageProbe:`Späht feindliche Planeten aus`,solarSatellite:`Liefert zusätzliche Energie, erzeugt 50 Energie pro Satellit`,darkMatterHarvester:`Spezielles Schiff zum Ernten von Dunkler Materie`,deathstar:`Ultimative Waffe, die ganze Planeten zerstören kann`},defenses:{rocketLauncher:`Raketenwerfer`,lightLaser:`Leichtes Lasergeschütz`,heavyLaser:`Schweres Lasergeschütz`,gaussCannon:`Gaußkanone`,ionCannon:`Ionengeschütz`,plasmaTurret:`Plasmawerfer`,smallShieldDome:`Kleine Schildkuppel`,largeShieldDome:`Große Schildkuppel`,antiBallisticMissile:`Abfangrakete`,interplanetaryMissile:`Interkontinentalrakete`,planetaryShield:`Planetarschild`},defenseDescriptions:{rocketLauncher:`Grundlegende Verteidigungsanlage`,lightLaser:`Leichte Energiewaffe`,heavyLaser:`Schwere Energiewaffe`,gaussCannon:`Hochgeschwindigkeits-Kinetikwaffe`,ionCannon:`Effektiv gegen Schilde`,plasmaTurret:`Mächtige Verteidigungsanlage`,smallShieldDome:`Kleiner Schild zum Schutz des gesamten Planeten`,largeShieldDome:`Großer Schild zum Schutz des gesamten Planeten`,antiBallisticMissile:`Fängt feindliche Raketen ab, kann 1 Interkontinentalrakete abfangen`,interplanetaryMissile:`Kann Verteidigungsanlagen auf anderen Planeten angreifen`,planetaryShield:`Superschild zum Schutz des Planeten vor Vernichtungsangriffen`},research:{researchTime:`Forschungszeit`,totalCost:`Gesamtkosten`,totalPoints:`Gesamtpunkte`,levelRange:`Stufenbereich`,capacity:`Capacity/Effect`,storageCapacity:`Capacity`,energyProduction:`Energy Production`,fleetStorage:`Fleet Storage`,buildQueue:`Build Queue`,planetSpace:`Planet Space`,moonSpace:`Moon Space`,missileCapacity:`Missile Capacity`},technologies:{energyTechnology:`Energietechnik`,laserTechnology:`Lasertechnik`,ionTechnology:`Ionentechnik`,hyperspaceTechnology:`Hyperraumtechnik`,plasmaTechnology:`Plasmatechnik`,computerTechnology:`Computertechnologie`,espionageTechnology:`Spionagetechnik`,weaponsTechnology:`Waffentechnik`,shieldingTechnology:`Schildtechnik`,armourTechnology:`Panzerung`,astrophysics:`Astrophysik`,gravitonTechnology:`Gravitontechnik`,combustionDrive:`Verbrennungsantrieb`,impulseDrive:`Impulsantrieb`,hyperspaceDrive:`Hyperraumantrieb`,darkMatterTechnology:`Dunkle-Materie-Technologie`,terraformingTechnology:`Terraforming-Technologie`,planetDestructionTech:`Planetenzerstörungstechnologie`},technologyDescriptions:{energyTechnology:`Verbessert Energieeffizienz`,laserTechnology:`Grundlage für Laserwaffen und -verteidigung`,ionTechnology:`Ionenwaffentechnologie`,hyperspaceTechnology:`Hyperraumsprung-Technologie`,plasmaTechnology:`Plasmawaffentechnologie`,computerTechnology:`Erhöht Forschungsauftragskapazität, +1 pro Stufe (max 10 Stufen)`,espionageTechnology:`Verbessert Sondenwirksamkeit, +1 Spionagestufe pro Stufe`,weaponsTechnology:`Erhöht Angriffskraft von Schiffen und Verteidigung um 10% pro Stufe`,shieldingTechnology:`Erhöht Schilde von Schiffen und Verteidigung um 10% pro Stufe`,armourTechnology:`Erhöht Panzerung von Schiffen und Verteidigung um 10% pro Stufe`,astrophysics:`Jede Stufe fügt 1 Kolonieslot hinzu und erhöht Expeditionserfolgsrate`,gravitonTechnology:`Erforscht Gravitonmanipulation, erforderlich für Todesstern`,combustionDrive:`Grundlegende Antriebstechnologie`,impulseDrive:`Mittlere Antriebstechnologie`,hyperspaceDrive:`Fortgeschrittene Antriebstechnologie`,darkMatterTechnology:`Forschung zu Eigenschaften und Anwendungen von Dunkler Materie`,terraformingTechnology:`Forschung zur Planeten-Terraforming-Technologie, erhöht verfügbaren Platz aller Planeten um 3 pro Stufe`,planetDestructionTech:`Schreckliche Technologie zur Zerstörung ganzer Planeten`},officers:{commander:`Kommandant`,admiral:`Admiral`,engineer:`Ingenieur`,geologist:`Geologe`,technocrat:`Technokrat`,darkMatterSpecialist:`Dunkle-Materie-Spezialist`,resourceBonus:`Ressourcenproduktionsbonus`,darkMatterBonus:`Dunkle-Materie-Produktionsbonus`,energyBonus:`Energieproduktionsbonus`},officerDescriptions:{commander:`Verbessert Baugeschwindigkeit und Management`,admiral:`Verbessert Flottenkampf und Geschwindigkeit`,engineer:`Verbessert Energie und Verteidigung`,geologist:`Verbessert Ressourcenproduktion`,technocrat:`Verbessert Forschungsgeschwindigkeit und Spionage`,darkMatterSpecialist:`Verbessert Dunkle-Materie-Sammlungseffizienz`},queue:{buildQueue:`Bauauftrag`,researchQueue:`Forschungsauftrag`,building:`Im Bau`,researching:`In Forschung`,remaining:`Verbleibend`,cancel:`Abbrechen`,cancelBuild:`Bau abbrechen`,cancelResearch:`Forschung abbrechen`,confirmCancel:`Möchten Sie wirklich abbrechen? 50% der Ressourcen werden zurückerstattet.`,level:`Stufe`,upgradeToLevel:`Auf Stufe aufrüsten`},overview:{title:`Planetenübersicht`,resourceOverview:`Ressourcen`,fleetInfo:`Flotte`,currentShips:`Schiffe auf diesem Planeten`,productionSources:`Produktionsquellen`,productionSourcesDesc:`Detaillierte Ressourcenproduktion und Bonusinformationen`,consumptionSources:`Verbrauchsquellen`,consumptionSourcesDesc:`Energieverbrauchsdetails für Gebäude`,totalProduction:`Gesamtproduktion`,totalConsumption:`Gesamtverbrauch`,noConsumption:`Kein Energieverbrauch`},buildingsView:{title:`Gebäude`,usedSpace:`Verwendeter Platz`,spaceUsage:`Platzbedarf`,level:`Stufe`,upgradeCost:`Ausbaukosten`,buildTime:`Bauzeit`,upgrade:`Ausbauen`,maxLevelReached:`Maximale Stufe erreicht`,requirementsNotMet:`Anforderungen nicht erfüllt`,upgradeFailed:`Ausbau fehlgeschlagen`,upgradeFailedMessage:`Bitte überprüfen Sie, ob Sie genügend Ressourcen, Platz oder keine anderen Bauaufträge haben.`,demolish:`Abreißen`,demolishRefund:`Abriss-Rückerstattung`,demolishFailed:`Abriss fehlgeschlagen`,demolishFailedMessage:`Abriss nicht möglich. Bitte überprüfen Sie, ob die Bauqueue voll ist oder die Gebäudestufe 0 ist.`,confirmDemolish:``,confirmDemolishMessage:``},researchView:{title:`Forschung`,researchCost:`Forschungskosten`,research:`Forschen`,maxLevelReached:`Maximale Stufe erreicht`,researchFailed:`Forschung fehlgeschlagen`,researchFailedMessage:`Bitte überprüfen Sie, ob Sie genügend Ressourcen haben, die Voraussetzungen erfüllt sind oder keine anderen Forschungsaufträge vorhanden sind.`},shipyard:{attack:`Angriff`,shield:`Schild`,armor:`Panzerung`,speed:`Geschwindigkeit`,cargoCapacity:`Ladekapazität`,fuelConsumption:`Treibstoffverbrauch`,buildCost:`Baukosten`,buildTime:`Bauzeit`,perUnit:`Pro Einheit`,batchCalculator:`Batch-Rechner`,quantity:`Menge`,totalCost:`Gesamtkosten`,totalTime:`Gesamtzeit`},shipyardView:{title:`Raumschiffwerft`,fleetStorage:`Flottenspeicher`,attack:`Angriff`,shield:`Schild`,speed:`Geschwindigkeit`,cargoCapacity:`Ladekapazität`,unitCost:`Stückkosten`,buildQuantity:`Baumenge`,totalCost:`Gesamtkosten`,build:`Bauen`,inputError:`Eingabefehler`,inputErrorMessage:`Bitte Baumenge eingeben!`,buildFailed:`Bau fehlgeschlagen`,buildFailedMessage:`Bitte überprüfen Sie, ob Sie genügend Ressourcen haben oder die Voraussetzungen erfüllt sind.`},defense:{attack:`Angriff`,shield:`Schild`,armor:`Panzerung`,buildCost:`Baukosten`,buildTime:`Bauzeit`,perUnit:`Pro Einheit`,batchCalculator:`Batch-Rechner`,quantity:`Menge`,totalCost:`Gesamtkosten`,totalTime:`Gesamtzeit`},defenseView:{title:`Verteidigung`,attack:`Angriff`,shield:`Schild`,armor:`Panzerung`,buildTime:`Bauzeit`,seconds:`s`,unitCost:`Stückkosten`,buildQuantity:`Baumenge`,totalCost:`Gesamtkosten`,build:`Bauen`,shieldDomeBuilt:`Schildkuppel bereits gebaut`,inputError:`Eingabefehler`,inputErrorMessage:`Bitte Baumenge eingeben!`,buildFailed:`Bau fehlgeschlagen`,buildFailedMessage:`Bitte überprüfen Sie, ob Sie genügend Ressourcen haben oder die Voraussetzungen erfüllt sind. Schildkuppeln können nur einmal gebaut werden.`},fleetView:{title:`Flottenverwaltung`,fleetOverview:`Flottenübersicht`,sendFleet:`Flotte senden`,flightMissions:`Flugmissionen`,currentPlanetFleet:`Flotte auf diesem Planeten`,attack:`Angriff`,shield:`Schild`,armor:`Panzerung`,speed:`Geschwindigkeit`,cargo:`Fracht`,selectFleet:`Flotte auswählen`,selectFleetDescription:`Wählen Sie die Anzahl der zu sendenden Schiffe`,available:`Verfügbar`,all:`Alle`,targetCoordinates:`Zielkoordinaten`,galaxy:`Galaxie`,diplomacy:`Diplomacy`,system:`System`,position:`Position`,missionType:`Missionstyp`,missionInfo:`Missionsinfo`,fuelConsumption:`Treibstoffverbrauch`,flightTime:`Flugzeit`,attackMission:`Angriff`,transport:`Transport`,colonize:`Kolonisieren`,spy:`Spionage`,deploy:`Stationieren`,recycle:`Recyceln`,transportResources:`Ressourcen transportieren`,totalCargoCapacity:`Gesamtladekapazität`,used:`Verwendet`,noFlightMissions:`Keine Flugmissionen`,outbound:`Hinflug`,returning:`Rückflug`,fleetComposition:`Flottenzusammensetzung`,carryingResources:`Transportierte Ressourcen`,arrivalTime:`Ankunftszeit`,returnTime:`Rückkehrzeit`,recallFleet:`Flotte zurückrufen`,sendFailed:`Senden fehlgeschlagen`,sendFailedMessage:`Bitte überprüfen Sie Flottenanzahl, Treibstoffverfügbarkeit oder Ladekapazitätsgrenzen.`,recallFailed:`Zurückrufen fehlgeschlagen`,recallFailedMessage:`Diese Mission kann nicht zurückgerufen werden.`,unknownPlanet:`Unbekannter Planet`,fleetMissionSlots:`Flottenmissionsplätze`,noShipsSelected:`Keine Schiffe ausgewählt`,cannotSendToOwnPlanet:`Flotte kann nicht zu eigenem Planeten gesendet werden`,cargoExceedsCapacity:`Fracht überschreitet Kapazität`,noColonyShip:`Kolonieschiff für Kolonisierungsmission erforderlich`,noDebrisAtTarget:`Kein Trümmerfeld an Zielkoordinaten oder Trümmerfeld ist leer`,noDeathstar:`Todesstern für Zerstörungsmission erforderlich`,giftMode:`Geschenkmodus`,giftModeDescription:`Ressourcen als Geschenk senden an`,estimatedReputationGain:`Geschätzter Reputationsgewinn`},officersView:{title:`Offiziere`,activated:`Aktiviert`,inactive:`Inaktiv`,activeStatus:`Aktivierungsstatus`,expirationTime:`Ablaufzeit`,remainingTime:`Verbleibende Zeit`,recruitCost:`Rekrutierungskosten`,days:`Tage`,benefitsBonus:`Vorteile`,resourceProduction:`Ressourcenproduktion`,darkMatterProduction:`Dunkle-Materie-Produktion`,energyProduction:`Energieproduktion`,buildingSpeed:`Baugeschwindigkeit`,researchSpeed:`Forschungsgeschwindigkeit`,fleetSpeed:`Flottengeschwindigkeit`,fuelConsumption:`Treibstoffverbrauch`,defense:`Verteidigung`,storageCapacity:`Lagerkapazität`,buildQueue:`Bauauftrag`,fleetSlots:`Flottenslots`,hire:`Rekrutieren`,renew:`Verlängern`,dismiss:`Entlassen`,hireTitle:`Offizier rekrutieren`,hireMessage:`Möchten Sie wirklich {name} rekrutieren? Gültig für 7 Tage.`,renewTitle:`Offizier verlängern`,renewMessage:`Möchten Sie wirklich {name} für 7 Tage verlängern?`,dismissTitle:`Offizier entlassen`,dismissMessage:`Möchten Sie wirklich {name} entlassen? Es werden keine Kosten zurückerstattet.`,hireFailed:`Rekrutierung fehlgeschlagen`,renewFailed:`Verlängerung fehlgeschlagen`,insufficientResources:`Nicht genug Ressourcen!`},galaxyView:{title:`Galaxie`,selectCoordinates:`Koordinaten auswählen`,galaxy:`Galaxie`,diplomacy:`Diplomacy`,selectGalaxy:`Galaxie auswählen`,system:`System`,selectSystem:`System auswählen`,view:`Anzeigen`,myPlanet:`Mein Planet`,myPlanets:`Meine Planeten`,npcPlanets:`NPC-Planeten`,selectPlanetToView:`Planet zum Anzeigen auswählen`,totalPositions:`Insgesamt 10 Planetenpositionen`,mine:`Mein`,hostile:`Feindlich`,emptySlot:`Leer - Kolonisierbar`,scout:`Spähen`,attack:`Angriff`,colonize:`Kolonisieren`,switch:`Wechseln`,recycle:`Recyceln`,debrisField:`Trümmerfeld`,scoutPlanetTitle:`Planet ausspionieren`,attackPlanetTitle:`Planet angreifen`,colonizePlanetTitle:`Planet kolonisieren`,recyclePlanetTitle:`Trümmer recyceln`,scoutPlanetMessage:`Möchten Sie wirklich Spionagesonden senden, um Planet [{coordinates}] auszuspionieren? - -Bitte gehen Sie zur Flottenseite, um Schiffe auszuwählen und zu senden.`,attackPlanetMessage:`Möchten Sie wirklich Planet [{coordinates}] angreifen? - -Bitte gehen Sie zur Flottenseite, um Schiffe auszuwählen und zu senden.`,colonizePlanetMessage:`Möchten Sie wirklich Position [{coordinates}] kolonisieren? - -Bitte gehen Sie zur Flottenseite, um ein Kolonieschiff zu senden.`,recyclePlanetMessage:`Möchten Sie wirklich Trümmer bei Position [{coordinates}] recyceln? - -Bitte gehen Sie zur Flottenseite, um Recycler zu senden.`,sendGift:`Geschenk senden`,debris:`Trümmer`,giftPlanetTitle:`Geschenk senden`,giftPlanetMessage:`Möchten Sie wirklich Ressourcen als Geschenk an Planet [{coordinates}] senden? - -Bitte gehen Sie zur Flottenseite, um Transporter auszuwählen und Ressourcen zu laden.`},messagesView:{title:`Nachrichten`,battles:`Kämpfe`,spy:`Spionage`,npc:`NPC`,spied:`Ausspioniert`,battleReports:`Kampfberichte`,spyReports:`Spionageberichte`,noBattleReports:`Keine Kampfberichte`,noSpyReports:`Keine Spionageberichte`,noSpiedNotifications:`Keine Ausspionierungs-Benachrichtigungen`,battleReport:`Kampfbericht`,spyReport:`Spionagebericht`,spiedNotification:`Ausspionierungs-Benachrichtigung`,victory:`Sieg`,defeat:`Niederlage`,draw:`Unentschieden`,detected:`Entdeckt`,undetected:`Unentdeckt`,attackerFleet:`Angreiferflotte`,defenderFleet:`Verteidigerflotte`,defenderDefense:`Verteidigerverteidigung`,attackerLosses:`Angreiferverluste`,defenderLosses:`Verteidigerverluste`,noLosses:`Keine Verluste`,plunder:`Beute`,debrisField:`Trümmerfeld`,resources:`Ressourcen`,fleet:`Flotte`,defense:`Verteidigung`,buildings:`Gebäude`,unread:`Ungelesen`,targetPlanet:`Zielplanet`,attackerRemaining:`Angreifer verblieben`,defenderRemaining:`Verteidiger verblieben`,moonChance:`Mondchance`,showRoundDetails:`Rundendetails anzeigen`,hideRoundDetails:`Rundendetails ausblenden`,round:`Runde {round}`,attackerRemainingPower:`Verbleibende Angreiferkraft`,defenderRemainingPower:`Verbleibende Verteidigerkraft`,missions:`Missionen`,noMissionReports:`Keine Missionsberichte`,success:`Erfolg`,failed:`Fehlgeschlagen`,npcActivity:`NPC-Aktivität`,noNPCActivity:`Keine NPC-Aktivitätsbenachrichtigungen`,npcRecycleActivity:`NPC recycelt Trümmer`,gifts:`Geschenke`,giftRejected:`Abgelehnt`,noGiftNotifications:`Keine Geschenkbenachrichtigungen`,noGiftRejected:`Keine abgelehnten Geschenke`,giftFrom:`Geschenk von {npcName}`,giftRejectedBy:`{npcName} hat das Geschenk abgelehnt`,giftResources:`Geschenk-Ressourcen`,rejectedResources:`Abgelehnte Ressourcen`,expectedReputation:`Erwarteter Ruf`,currentReputation:`Aktueller Ruf`,acceptGift:`Annehmen`,rejectGift:`Ablehnen`,rejectionReason:{hostile:`Sie sind feindlich und nehmen keine Geschenke an`,neutral_distrust:`Sie vertrauen Ihnen nicht`,polite_decline:`Sie lehnten höflich ab`}},missionReports:{transportSuccess:`Transportmission erfolgreich abgeschlossen`,transportFailed:`Transportmission fehlgeschlagen`,colonizeSuccess:`Kolonisierungsmission erfolgreich, neuer Planet gegründet`,colonizeFailed:`Kolonisierungsmission fehlgeschlagen`,deploySuccess:`Einsatzmission erfolgreich abgeschlossen`,deployFailed:`Einsatzmission fehlgeschlagen`,recycleSuccess:`Recyclingmission erfolgreich abgeschlossen`,recycleFailed:`Recyclingmission fehlgeschlagen, keine Trümmer am Zielort`,destroySuccess:`Planetenzerstörungsmission erfolgreich ausgeführt`,destroyFailed:`Planetenzerstörungsmission fehlgeschlagen`},simulatorView:{title:`Kampfsimulator`,attacker:`Angreifer`,defender:`Verteidiger`,attackerConfig:`Angreiferkonfiguration`,attackerConfigDesc:`Angreiferflotte und Technologiestufen konfigurieren`,defenderConfig:`Verteidigerkonfiguration`,defenderConfigDesc:`Verteidigerflotte, Verteidigung und Technologiestufen konfigurieren`,fleet:`Flotte`,defenseStructures:`Verteidigungsanlagen`,techLevels:`Technologiestufen`,weapon:`Waffe`,shield:`Schild`,armor:`Panzerung`,defenderResources:`Verteidigerressourcen (für Beuteberechnung)`,startSimulation:`Simulation starten`,reset:`Zurücksetzen`,battleResult:`Kampfergebnis`,attackerVictory:`Angreifer Sieg`,defenderVictory:`Verteidiger Sieg`,draw:`Unentschieden`,afterRounds:`Nach {rounds} Runden`,attackerLosses:`Angreiferverluste`,defenderLosses:`Verteidigerverluste`,noLosses:`Keine Verluste`,attackerRemaining:`Angreifer verblieben`,defenderRemaining:`Verteidiger verblieben`,allDestroyed:`Alle zerstört`,plunderableResources:`Erbeutbare Ressourcen`,debrisField:`Trümmerfeld`,moonChance:`Mondchance`,showRoundDetails:`Rundendetails anzeigen`,hideRoundDetails:`Rundendetails ausblenden`,round:`Runde {round}`,attackerRemainingPower:`Verbleibende Angreiferkraft`,defenderRemainingPower:`Verbleibende Verteidigerkraft`},settings:{dataManagement:`Datenverwaltung`,dataManagementDesc:`Spieldaten exportieren, importieren oder löschen`,exportData:`Daten exportieren`,exportDataDesc:`Spielfortschritt als JSON-Datei exportieren`,export:`Exportieren`,exporting:`Exportieren...`,exportSuccess:`Export erfolgreich`,exportFailed:`Export fehlgeschlagen, bitte erneut versuchen`,importData:`Daten importieren`,importDataDesc:`Spielfortschritt aus JSON-Datei wiederherstellen`,selectFile:`Datei auswählen`,importSuccess:`Import erfolgreich`,importConfirmTitle:`Import bestätigen`,importConfirmMessage:`Beim Importieren wird der aktuelle Spielfortschritt überschrieben. Diese Aktion kann nicht rückgängig gemacht werden. Fortfahren?`,importFailed:`Import fehlgeschlagen, bitte Dateiformat überprüfen`,clearData:`Daten löschen`,clearDataDesc:`Alle Spieldaten löschen und zurücksetzen`,clear:`Löschen`,clearConfirmTitle:`Löschen bestätigen`,clearConfirmMessage:`Alle Spieldaten werden gelöscht und von vorne begonnen. Diese Aktion kann nicht rückgängig gemacht werden. Fortfahren?`,gameSettings:`Spieleinstellungen`,gameSettingsDesc:`Spielparameter und Einstellungen anpassen`,gamePause:`Spielpause`,gamePauseDesc:`Spielzeit und Ressourcenproduktion pausieren oder fortsetzen`,pause:`Pausieren`,resume:`Fortsetzen`,gamePaused:`Spiel pausiert`,gameResumed:`Spiel fortgesetzt`,playerName:`Spielername`,gameSpeed:`Spielgeschwindigkeit`,gameSpeedDesc:`Aktueller Spielgeschwindigkeitsmultiplikator`,about:`Über`,version:`Version`,buildDate:`Build-Datum`,community:`Community`,github:`GitHub-Repository`,qqGroup:`QQ-Gruppe`},gmView:{title:`GM-Kontrollpanel`,adminOnly:`Nur Admin`,selectPlanet:`Planet auswählen`,choosePlanet:`Einen Planeten auswählen`,resources:`Ressourcen`,buildings:`Gebäude`,research:`Forschung`,ships:`Schiffe`,defense:`Verteidigung`,officers:`Offiziere`,modifyResources:`Ressourcen ändern`,resourcesDesc:`Planetenressourcen schnell ändern`,modifyBuildings:`Gebäude ändern`,buildingsDesc:`Gebäudelevel schnell festlegen`,modifyResearch:`Forschung ändern`,researchDesc:`Forschungslevel schnell festlegen`,modifyShips:`Schiffe ändern`,shipsDesc:`Schiffsanzahl schnell festlegen`,modifyDefense:`Verteidigung ändern`,defenseDesc:`Verteidigungsanzahl schnell festlegen`,modifyOfficers:`Offiziere ändern`,officersDesc:`Offiziersablaufzeit schnell festlegen`,days:`T`,npcTesting:`NPC-Test`,npcTestingDesc:`NPC-Spionage- und Angriffsverhalten testen`,selectNPC:`NPC auswählen`,chooseNPC:`Wählen Sie einen NPC`,targetPlanet:`Zielplanet`,chooseTarget:`Zielplanet auswählen`,testSpy:`Spionage testen`,testAttack:`Angriff testen`,testSpyAndAttack:`Spionage & Angriff testen`,initializeFleet:`NPC-Flotte initialisieren`,accelerateMissions:`Alle Missionen beschleunigen (5s)`,selectNPCFirst:`Bitte wählen Sie zuerst einen NPC`,npcNoProbes:`NPC hat keine Spionagesonden`,npcNoSpyReport:`NPC muss zuerst spionieren`,npcMissionFailed:`Mission konnte nicht erstellt werden`,dangerZone:`Gefahrenzone`,dangerZoneDesc:`Die folgenden Vorgänge sind irreversibel`,resetGame:`Spiel zurücksetzen`,resetGameConfirm:`Möchten Sie das Spiel wirklich zurücksetzen? Alle Daten werden gelöscht!`},alerts:{npcSpyIncoming:`NPC-Spionagesonde nähert sich`,npcAttackIncoming:`NPC-Flotten-Angriff im Anmarsch!`,npcFleetIncoming:`NPC-Flotte nähert sich`,ships:`Schiffe`,spiedBy:`Ausspioniert von`,attackedBy:`Angegriffen von`,detectionSuccess:`Spionage entdeckt`,detectionFailed:`Spionage nicht entdeckt`,npcSpiedYourPlanet:`NPC hat deinen Planeten ausspioniert`,npcAttackedYourPlanet:`NPC hat deinen Planeten angegriffen`},diplomacy:{title:`Diplomatie`,description:`Verwalte diplomatische Beziehungen mit NPCs`,tabs:{all:`Alle`,friendly:`Freundlich`,neutral:`Neutral`,hostile:`Feindlich`},noNpcs:`Keine NPCs`,noFriendlyNpcs:`Keine freundlichen NPCs`,noNeutralNpcs:`Keine neutralen NPCs`,noHostileNpcs:`Keine feindlichen NPCs`,recentEvents:`Aktuelle Ereignisse`,recentEventsDescription:`Protokoll der jüngsten diplomatischen Aktivitäten`,ago:`vor`,status:{friendly:`Freundlich`,neutral:`Neutral`,hostile:`Feindlich`},planets:`Planeten`,allies:`Verbündete`,reputation:`Ansehen`,alliedWith:`Verbündet mit`,more:`weitere`,actions:{gift:`Geschenk senden`,viewPlanets:`Planeten ansehen`},lastEvent:`Letztes Ereignis`,events:{gift:`Geschenk gesendet`,attack:`Angriff`,allyAttacked:`Verbündeter angegriffen`,spy:`Spionage`,stealDebris:`Trümmer gestohlen`}},pagination:{previous:`Vorherige`,next:`Nächste`,first:`Erste`,last:`Letzte`,page:`Seite {page}`}},i={common:{confirm:`Подтвердить`,cancel:`Отмена`,delete:`Удалить`,edit:`Редактировать`,save:`Сохранить`,close:`Закрыть`,back:`Назад`,next:`Далее`,previous:`Предыдущий`,submit:`Отправить`,reset:`Сбросить`,search:`Поиск`,filter:`Фильтр`,loading:`Загрузка...`,noData:`Нет данных`,error:`Ошибка`,success:`Успешно`,warning:`Предупреждение`,info:`Информация`,resourceType:`Тип ресурса`,playerName:`Командир`,timeHour:`ч`,timeMinute:`мин`,timeSecond:`сек`,featureLocked:`Функция заблокирована`,unlockRequired:`Требуется здание`,requiredBuilding:`Необходимое здание`,currentLevel:`Текущий уровень`,goToBuildings:`К зданиям`,locked:`Заблокировано`,viewRequirements:`Просмотр требований`,requirementsNotMet:`Требования не выполнены`,current:`Текущий`,level:`Уровень`},errors:{requirementsNotMet:`Требования не выполнены`,insufficientResources:`Недостаточно ресурсов`,insufficientFleetStorage:`Недостаточно места для флота`,shieldDomeLimit:`Достигнут лимит щитовых куполов`,fleetMissionsFull:`Слоты миссий флота заполнены`,insufficientFleet:`Недостаточно флота`,insufficientFuel:`Недостаточно топлива`,planetOnly:`Это здание можно построить только на планетах`,moonOnly:`Это здание можно построить только на лунах`,buildQueueFull:`Очередь строительства заполнена`,insufficientSpace:`Недостаточно места`,buildingLevelZero:`Уровень здания 0, нельзя снести`,researchQueueFull:`Очередь исследований заполнена`,moonExists:`Луна уже существует`,insufficientDebris:`Недостаточно обломков`},nav:{overview:`Обзор`,buildings:`Здания`,research:`Исследования`,shipyard:`Верфь`,defense:`Оборона`,fleet:`Флот`,officers:`Офицеры`,simulator:`Симулятор`,galaxy:`Галактика`,diplomacy:`Diplomacy`,messages:`Сообщения`,settings:`Настройки`,gm:`GM`},sidebar:{language:`Язык`,lightMode:`Светлая тема`,darkMode:`Тёмная тема`,collapse:`Свернуть`,expand:`Развернуть`},resources:{metal:`Металл`,crystal:`Кристалл`,deuterium:`Дейтерий`,darkMatter:`Тёмная материя`,energy:`Энергия`,production:`Производство`,consumption:`Потребление`,capacity:`Вместимость`,current:`Текущий`,max:`Макс. вместимость`,perHour:`час`,perMinute:`мин`,hour:`час`,noEnergy:`Нет энергии`},planet:{planet:`Планета`,moon:`Луна`,colony:`Колония`,position:`Позиция`,coordinates:`Координаты`,switchToMoon:`На луну`,backToPlanet:`Вернуться на планету`,switchPlanet:`Переключить планету`,currentPlanet:`Текущая планета`,fields:`Поля`,temperature:`Температура`,homePlanet:`Родная планета`,planetPrefix:`Планета`,moonSuffix:`я луна`,colonyPrefix:`Колония`},player:{points:`Всего очков`},buildings:{metalMine:`Рудник металла`,crystalMine:`Рудник кристалла`,deuteriumSynthesizer:`Синтезатор дейтерия`,solarPlant:`Солнечная электростанция`,fusionReactor:`Термоядерный реактор`,roboticsFactory:`Фабрика роботов`,naniteFactory:`Нанитная фабрика`,shipyard:`Верфь`,researchLab:`Исследовательская лаборатория`,metalStorage:`Хранилище металла`,crystalStorage:`Хранилище кристалла`,deuteriumTank:`Цистерна дейтерия`,darkMatterCollector:`Коллектор тёмной материи`,darkMatterTank:`Резервуар тёмной материи`,missileSilo:`Ракетная шахта`,terraformer:`Терраформер`,lunarBase:`Лунная база`,sensorPhalanx:`Сенсорная фаланга`,jumpGate:`Прыжковые ворота`,planetDestroyerFactory:`Фабрика разрушителей планет`,buildTime:`Время строительства`,production:`Производство`,consumption:`Потребление`,totalCost:`Общая стоимость`,totalPoints:`Общие очки`,levelRange:`Диапазон уровней`,capacity:`Capacity/Effect`,storageCapacity:`Capacity`,energyProduction:`Energy Production`,fleetStorage:`Fleet Storage`,buildQueue:`Build Queue`,buildQueueBonus:`Очередь строительства`,spaceBonus:`Бонус пространства`,buildSpeedBonus:`Бонус скорости строительства`,researchSpeedBonus:`Бонус скорости исследования`,planetSpace:`Planet Space`,moonSpace:`Moon Space`,missileCapacity:`Missile Capacity`},buildingDescriptions:{metalMine:`Добывает металлические ресурсы`,crystalMine:`Добывает кристаллические ресурсы`,deuteriumSynthesizer:`Синтезирует дейтериевые ресурсы`,solarPlant:`Обеспечивает энергией`,fusionReactor:`Использует дейтерий для производства большого количества энергии`,roboticsFactory:`Ускоряет скорость строительства`,naniteFactory:`Увеличивает вместимость очереди строительства, +1 за уровень (макс 10 уровней)`,shipyard:`Строит корабли`,researchLab:`Исследует технологии`,metalStorage:`Увеличивает ёмкость хранилища металла`,crystalStorage:`Увеличивает ёмкость хранилища кристалла`,deuteriumTank:`Увеличивает ёмкость хранилища дейтерия`,darkMatterCollector:`Собирает редкие ресурсы тёмной материи`,darkMatterTank:`Увеличивает ёмкость хранилища тёмной материи`,missileSilo:`Хранит и запускает ракеты, 10 ракет на уровень`,terraformer:`Терраформирует поверхность планеты, увеличивает доступное пространство на 5 за уровень`,lunarBase:`Увеличивает доступное пространство на луне, +5 пространства за уровень`,sensorPhalanx:`Обнаруживает активность флота в окружающих системах`,jumpGate:`Мгновенно переносит флоты на другие луны`,planetDestroyerFactory:`Производит абсолютное оружие, способное уничтожать планеты`},ships:{lightFighter:`Лёгкий истребитель`,heavyFighter:`Тяжёлый истребитель`,cruiser:`Крейсер`,battleship:`Линкор`,battlecruiser:`Линейный крейсер`,bomber:`Бомбардировщик`,destroyer:`Эсминец`,smallCargo:`Малый транспорт`,largeCargo:`Большой транспорт`,colonyShip:`Колонизатор`,recycler:`Переработчик`,espionageProbe:`Шпионский зонд`,solarSatellite:`Солнечный спутник`,darkMatterHarvester:`Сборщик тёмной материи`,deathstar:`Звезда Смерти`},shipDescriptions:{lightFighter:`Базовая боевая единица`,heavyFighter:`Тяжелобронированный истребитель`,cruiser:`Средний боевой корабль, сбалансированная атака и защита`,battleship:`Мощный боевой корабль`,battlecruiser:`Быстрый мощный боевой корабль, отлично атакует линкоры`,bomber:`Специализированный корабль для атаки оборонительных сооружений`,destroyer:`Охотник, специализирующийся на уничтожении крупных кораблей`,smallCargo:`Транспортирует небольшое количество ресурсов`,largeCargo:`Транспортирует большое количество ресурсов`,colonyShip:`Используется для колонизации новых планет`,recycler:`Собирает ресурсы с поля обломков`,espionageProbe:`Разведывает вражеские планеты`,solarSatellite:`Обеспечивает дополнительную энергию, генерирует 50 энергии на спутник`,darkMatterHarvester:`Специальный корабль для сбора тёмной материи`,deathstar:`Абсолютное оружие, способное уничтожать целые планеты`},defenses:{rocketLauncher:`Ракетная установка`,lightLaser:`Лёгкий лазер`,heavyLaser:`Тяжёлый лазер`,gaussCannon:`Гауссова пушка`,ionCannon:`Ионное орудие`,plasmaTurret:`Плазменная турель`,smallShieldDome:`Малый щитовой купол`,largeShieldDome:`Большой щитовой купол`,antiBallisticMissile:`Противоракета`,interplanetaryMissile:`Межпланетная ракета`,planetaryShield:`Планетарный щит`},defenseDescriptions:{rocketLauncher:`Базовое оборонительное сооружение`,lightLaser:`Лёгкое энергетическое оружие`,heavyLaser:`Тяжёлое энергетическое оружие`,gaussCannon:`Высокоскоростное кинетическое оружие`,ionCannon:`Эффективно против щитов`,plasmaTurret:`Мощное оборонительное сооружение`,smallShieldDome:`Малый щит, защищающий всю планету`,largeShieldDome:`Большой щит, защищающий всю планету`,antiBallisticMissile:`Перехватывает вражеские ракеты, может перехватить 1 межпланетную ракету`,interplanetaryMissile:`Может атаковать оборонительные сооружения на других планетах`,planetaryShield:`Суперщит, защищающий планету от атак уничтожения`},research:{researchTime:`Время исследования`,totalCost:`Общая стоимость`,totalPoints:`Общие очки`,levelRange:`Диапазон уровней`,capacity:`Capacity/Effect`,storageCapacity:`Capacity`,energyProduction:`Energy Production`,fleetStorage:`Fleet Storage`,buildQueue:`Build Queue`,planetSpace:`Planet Space`,moonSpace:`Moon Space`,missileCapacity:`Missile Capacity`},technologies:{energyTechnology:`Энергетическая технология`,laserTechnology:`Лазерная технология`,ionTechnology:`Ионная технология`,hyperspaceTechnology:`Гиперпространственная технология`,plasmaTechnology:`Плазменная технология`,computerTechnology:`Компьютерная технология`,espionageTechnology:`Шпионаж`,weaponsTechnology:`Оружие`,shieldingTechnology:`Щиты`,armourTechnology:`Броня`,astrophysics:`Астрофизика`,gravitonTechnology:`Гравитоны`,combustionDrive:`Реактивный двигатель`,impulseDrive:`Импульсный двигатель`,hyperspaceDrive:`Гиперпространственный двигатель`,darkMatterTechnology:`Технология тёмной материи`,terraformingTechnology:`Технология терраформирования`,planetDestructionTech:`Технология уничтожения планет`},technologyDescriptions:{energyTechnology:`Улучшает энергоэффективность`,laserTechnology:`Основа лазерного оружия и обороны`,ionTechnology:`Технология ионного оружия`,hyperspaceTechnology:`Технология гиперпространственных прыжков`,plasmaTechnology:`Технология плазменного оружия`,computerTechnology:`Увеличивает вместимость очереди исследований, +1 за уровень (макс 10 уровней)`,espionageTechnology:`Повышает эффективность зондов, +1 уровень шпионажа за уровень`,weaponsTechnology:`Увеличивает силу атаки кораблей и обороны на 10% за уровень`,shieldingTechnology:`Увеличивает щиты кораблей и обороны на 10% за уровень`,armourTechnology:`Увеличивает броню кораблей и обороны на 10% за уровень`,astrophysics:`Каждый уровень добавляет 1 слот колонии и повышает шанс успеха экспедиций`,gravitonTechnology:`Изучает манипуляцию гравитонами, требуется для Звезды смерти`,combustionDrive:`Базовая технология двигателей`,impulseDrive:`Средняя технология двигателей`,hyperspaceDrive:`Продвинутая технология двигателей`,darkMatterTechnology:`Исследование свойств и применения тёмной материи`,terraformingTechnology:`Исследование технологии терраформирования планет, увеличивает доступное пространство всех планет на 3 за уровень`,planetDestructionTech:`Исследование ужасающей технологии уничтожения целых планет`},officers:{commander:`Командир`,admiral:`Адмирал`,engineer:`Инженер`,geologist:`Геолог`,technocrat:`Технократ`,darkMatterSpecialist:`Специалист по тёмной материи`,resourceBonus:`Бонус производства ресурсов`,darkMatterBonus:`Бонус производства тёмной материи`,energyBonus:`Бонус производства энергии`},officerDescriptions:{commander:`Улучшает скорость строительства и управление`,admiral:`Улучшает боевую мощь и скорость флота`,engineer:`Улучшает энергию и оборону`,geologist:`Улучшает производство ресурсов`,technocrat:`Улучшает скорость исследований и шпионаж`,darkMatterSpecialist:`Улучшает эффективность сбора тёмной материи`},queue:{buildQueue:`Очередь строительства`,researchQueue:`Очередь исследований`,building:`Строится`,researching:`Исследуется`,remaining:`Осталось`,cancel:`Отменить`,cancelBuild:`Отменить строительство`,cancelResearch:`Отменить исследование`,confirmCancel:`Вы уверены, что хотите отменить? 50% ресурсов будет возвращено.`,level:`Уровень`,upgradeToLevel:`Улучшить до уровня`},overview:{title:`Обзор планеты`,resourceOverview:`Ресурсы`,fleetInfo:`Флот`,currentShips:`Корабли на этой планете`,productionSources:`Источники производства`,productionSourcesDesc:`Подробная информация о производстве ресурсов и бонусах`,consumptionSources:`Источники потребления`,consumptionSourcesDesc:`Детали потребления энергии зданиями`,totalProduction:`Общее производство`,totalConsumption:`Общее потребление`,noConsumption:`Нет потребления энергии`},buildingsView:{title:`Здания`,usedSpace:`Использовано полей`,spaceUsage:`Использование полей`,level:`Уровень`,upgradeCost:`Стоимость улучшения`,buildTime:`Время строительства`,upgrade:`Улучшить`,maxLevelReached:`Достигнут максимальный уровень`,requirementsNotMet:`Требования не выполнены`,upgradeFailed:`Улучшение не удалось`,upgradeFailedMessage:`Пожалуйста, проверьте, достаточно ли у вас ресурсов, места или нет других задач строительства.`,demolish:`Снести`,demolishRefund:`Возврат от сноса`,demolishFailed:`Снос не удался`,demolishFailedMessage:`Невозможно снести это здание. Проверьте, не заполнена ли очередь строительства или уровень здания не равен 0.`,confirmDemolish:``,confirmDemolishMessage:``},researchView:{title:`Исследования`,researchCost:`Стоимость исследования`,research:`Исследовать`,maxLevelReached:`Достигнут максимальный уровень`,researchFailed:`Исследование не удалось`,researchFailedMessage:`Пожалуйста, проверьте, достаточно ли у вас ресурсов, выполнены ли предварительные условия или нет других исследовательских задач.`},shipyard:{attack:`Атака`,shield:`Щит`,armor:`Броня`,speed:`Скорость`,cargoCapacity:`Грузоподъёмность`,fuelConsumption:`Расход топлива`,buildCost:`Стоимость постройки`,buildTime:`Время строительства`,perUnit:`За единицу`,batchCalculator:`Калькулятор партий`,quantity:`Количество`,totalCost:`Общая стоимость`,totalTime:`Общее время`},shipyardView:{title:`Верфь`,fleetStorage:`Хранилище флота`,attack:`Атака`,shield:`Щит`,speed:`Скорость`,cargoCapacity:`Грузоподъёмность`,unitCost:`Стоимость единицы`,buildQuantity:`Количество для постройки`,totalCost:`Общая стоимость`,build:`Построить`,inputError:`Ошибка ввода`,inputErrorMessage:`Пожалуйста, введите количество для постройки!`,buildFailed:`Постройка не удалась`,buildFailedMessage:`Пожалуйста, проверьте, достаточно ли у вас ресурсов или выполнены ли предварительные условия.`},defense:{attack:`Атака`,shield:`Щит`,armor:`Броня`,buildCost:`Стоимость постройки`,buildTime:`Время строительства`,perUnit:`За единицу`,batchCalculator:`Калькулятор партий`,quantity:`Количество`,totalCost:`Общая стоимость`,totalTime:`Общее время`},defenseView:{title:`Оборона`,attack:`Атака`,shield:`Щит`,armor:`Броня`,buildTime:`Время постройки`,seconds:`с`,unitCost:`Стоимость единицы`,buildQuantity:`Количество для постройки`,totalCost:`Общая стоимость`,build:`Построить`,shieldDomeBuilt:`Щитовой купол уже построен`,inputError:`Ошибка ввода`,inputErrorMessage:`Пожалуйста, введите количество для постройки!`,buildFailed:`Постройка не удалась`,buildFailedMessage:`Пожалуйста, проверьте, достаточно ли у вас ресурсов или выполнены ли предварительные условия. Щитовые купола можно построить только один раз.`},fleetView:{title:`Управление флотом`,fleetOverview:`Обзор флота`,sendFleet:`Отправить флот`,flightMissions:`Полетные миссии`,currentPlanetFleet:`Флот на этой планете`,attack:`Атака`,shield:`Щит`,armor:`Броня`,speed:`Скорость`,cargo:`Груз`,selectFleet:`Выбрать флот`,selectFleetDescription:`Выберите количество кораблей для отправки`,available:`Доступно`,all:`Все`,targetCoordinates:`Целевые координаты`,galaxy:`Галактика`,diplomacy:`Diplomacy`,system:`Система`,position:`Позиция`,missionType:`Тип миссии`,missionInfo:`Информация о миссии`,fuelConsumption:`Расход топлива`,flightTime:`Время полета`,attackMission:`Атака`,transport:`Транспорт`,colonize:`Колонизация`,spy:`Разведка`,deploy:`Размещение`,recycle:`Переработка`,transportResources:`Транспортировка ресурсов`,totalCargoCapacity:`Общая грузоподъёмность`,used:`Использовано`,noFlightMissions:`Нет полетных миссий`,outbound:`Туда`,returning:`Возвращение`,fleetComposition:`Состав флота`,carryingResources:`Перевозимые ресурсы`,arrivalTime:`Время прибытия`,returnTime:`Время возврата`,recallFleet:`Отозвать флот`,sendFailed:`Отправка не удалась`,sendFailedMessage:`Пожалуйста, проверьте количество флота, наличие топлива или ограничения грузоподъёмности.`,recallFailed:`Отзыв не удался`,recallFailedMessage:`Эта миссия не может быть отозвана.`,unknownPlanet:`Неизвестная планета`,fleetMissionSlots:`Слоты миссий флота`,noShipsSelected:`Корабли не выбраны`,cannotSendToOwnPlanet:`Невозможно отправить флот на свою планету`,cargoExceedsCapacity:`Груз превышает вместимость`,noColonyShip:`Для колонизационной миссии требуется колониальный корабль`,noDebrisAtTarget:`Нет поля обломков по целевым координатам или поле обломков пусто`,noDeathstar:`Для миссии разрушения требуется Звезда Смерти`,giftMode:`Режим подарка`,giftModeDescription:`Отправить ресурсы в подарок`,estimatedReputationGain:`Ожидаемый прирост репутации`},officersView:{title:`Офицеры`,activated:`Активирован`,inactive:`Неактивен`,activeStatus:`Статус активации`,expirationTime:`Время истечения`,remainingTime:`Оставшееся время`,recruitCost:`Стоимость найма`,days:`дн.`,benefitsBonus:`Бонусы`,resourceProduction:`Производство ресурсов`,darkMatterProduction:`Производство тёмной материи`,energyProduction:`Производство энергии`,buildingSpeed:`Скорость строительства`,researchSpeed:`Скорость исследований`,fleetSpeed:`Скорость флота`,fuelConsumption:`Расход топлива`,defense:`Защита`,storageCapacity:`Вместимость хранилища`,buildQueue:`Очередь строительства`,fleetSlots:`Слоты флота`,hire:`Нанять`,renew:`Продлить`,dismiss:`Уволить`,hireTitle:`Нанять офицера`,hireMessage:`Вы уверены, что хотите нанять {name}? Действует 7 дней.`,renewTitle:`Продлить офицера`,renewMessage:`Вы уверены, что хотите продлить {name} на 7 дней?`,dismissTitle:`Уволить офицера`,dismissMessage:`Вы уверены, что хотите уволить {name}? Средства не возвращаются.`,hireFailed:`Найм не удался`,renewFailed:`Продление не удалось`,insufficientResources:`Недостаточно ресурсов!`},galaxyView:{title:`Галактика`,selectCoordinates:`Выбрать координаты`,galaxy:`Галактика`,diplomacy:`Diplomacy`,selectGalaxy:`Выбрать галактику`,system:`Система`,selectSystem:`Выбрать систему`,view:`Показать`,myPlanet:`Моя планета`,myPlanets:`Мои планеты`,npcPlanets:`Планеты NPC`,selectPlanetToView:`Выберите планету для просмотра`,totalPositions:`Всего 10 позиций планет`,mine:`Моя`,hostile:`Враждебная`,emptySlot:`Пусто - можно колонизировать`,scout:`Разведка`,attack:`Атака`,colonize:`Колонизация`,switch:`Переключить`,recycle:`Переработка`,debrisField:`Поле обломков`,scoutPlanetTitle:`Разведать планету`,attackPlanetTitle:`Атаковать планету`,colonizePlanetTitle:`Колонизировать планету`,recyclePlanetTitle:`Переработать обломки`,scoutPlanetMessage:`Вы уверены, что хотите отправить шпионские зонды для разведки планеты [{coordinates}]? - -Перейдите на страницу флота, чтобы выбрать корабли и отправить.`,attackPlanetMessage:`Вы уверены, что хотите атаковать планету [{coordinates}]? - -Перейдите на страницу флота, чтобы выбрать корабли и отправить.`,colonizePlanetMessage:`Вы уверены, что хотите колонизировать позицию [{coordinates}]? - -Перейдите на страницу флота, чтобы отправить колонизационный корабль.`,recyclePlanetMessage:`Вы уверены, что хотите переработать обломки в позиции [{coordinates}]? - -Перейдите на страницу флота, чтобы отправить переработчики.`,sendGift:`Отправить подарок`,debris:`Обломки`,giftPlanetTitle:`Отправить подарок`,giftPlanetMessage:`Вы уверены, что хотите отправить ресурсы в подарок планете [{coordinates}]? - -Перейдите на страницу флота, чтобы выбрать транспортные корабли и загрузить ресурсы.`},messagesView:{title:`Сообщения`,battles:`Битвы`,spy:`Разведка`,npc:`NPC`,battleReports:`Отчёты о боях`,spyReports:`Отчёты разведки`,noBattleReports:`Нет отчётов о боях`,noSpyReports:`Нет отчётов разведки`,battleReport:`Отчёт о бое`,spyReport:`Отчёт разведки`,victory:`Победа`,defeat:`Поражение`,draw:`Ничья`,attackerFleet:`Флот нападающего`,defenderFleet:`Флот защитника`,defenderDefense:`Оборона защитника`,attackerLosses:`Потери нападающего`,defenderLosses:`Потери защитника`,noLosses:`Без потерь`,plunder:`Добыча`,debrisField:`Поле обломков`,resources:`Ресурсы`,fleet:`Флот`,defense:`Оборона`,buildings:`Здания`,unread:`Непрочитано`,targetPlanet:`Целевая планета`,attackerRemaining:`Осталось у нападающего`,defenderRemaining:`Осталось у защитника`,moonChance:`Шанс появления луны`,showRoundDetails:`Показать детали раундов`,hideRoundDetails:`Скрыть детали раундов`,round:`Раунд {round}`,attackerRemainingPower:`Оставшаяся мощь нападающего`,defenderRemainingPower:`Оставшаяся мощь защитника`,spied:`Шпионаж`,spiedNotification:`Уведомление о шпионаже`,noSpiedNotifications:`Нет уведомлений о шпионаже`,detected:`Обнаружено`,undetected:`Не обнаружено`,missions:`Миссии`,noMissionReports:`Нет отчётов о миссиях`,success:`Успех`,failed:`Неудача`,npcActivity:`Активность NPC`,noNPCActivity:`Нет уведомлений об активности NPC`,npcRecycleActivity:`NPC перерабатывает обломки`,gifts:`Подарки`,giftRejected:`Отклонено`,noGiftNotifications:`Нет уведомлений о подарках`,noGiftRejected:`Нет отклоненных подарков`,giftFrom:`Подарок от {npcName}`,giftRejectedBy:`{npcName} отклонил подарок`,giftResources:`Ресурсы подарка`,rejectedResources:`Отклоненные ресурсы`,expectedReputation:`Ожидаемая репутация`,currentReputation:`Текущая репутация`,acceptGift:`Принять`,rejectGift:`Отклонить`,rejectionReason:{hostile:`Они враждебны и не принимают подарки`,neutral_distrust:`Они вам не доверяют`,polite_decline:`Вежливо отказались`}},missionReports:{transportSuccess:`Миссия транспортировки успешно завершена`,transportFailed:`Миссия транспортировки провалена`,colonizeSuccess:`Миссия колонизации успешна, новая планета создана`,colonizeFailed:`Миссия колонизации провалена`,deploySuccess:`Миссия размещения успешно завершена`,deployFailed:`Миссия размещения провалена`,recycleSuccess:`Миссия переработки успешно завершена`,recycleFailed:`Миссия переработки провалена, нет обломков в целевой позиции`,destroySuccess:`Миссия уничтожения планеты успешно выполнена`,destroyFailed:`Миссия уничтожения планеты провалена`},simulatorView:{title:`Симулятор боя`,attacker:`Нападающий`,defender:`Защитник`,attackerConfig:`Настройки нападающего`,attackerConfigDesc:`Настроить флот и уровни технологий нападающего`,defenderConfig:`Настройки защитника`,defenderConfigDesc:`Настроить флот, оборону и уровни технологий защитника`,fleet:`Флот`,defenseStructures:`Оборонительные сооружения`,techLevels:`Уровни технологий`,weapon:`Оружие`,shield:`Щит`,armor:`Броня`,defenderResources:`Ресурсы защитника (для расчёта добычи)`,startSimulation:`Начать симуляцию`,reset:`Сбросить`,battleResult:`Результат боя`,attackerVictory:`Победа нападающего`,defenderVictory:`Победа защитника`,draw:`Ничья`,afterRounds:`После {rounds} раундов`,attackerLosses:`Потери нападающего`,defenderLosses:`Потери защитника`,noLosses:`Без потерь`,attackerRemaining:`Осталось у нападающего`,defenderRemaining:`Осталось у защитника`,allDestroyed:`Всё уничтожено`,plunderableResources:`Доступная добыча`,debrisField:`Поле обломков`,moonChance:`Шанс появления луны`,showRoundDetails:`Показать детали раундов`,hideRoundDetails:`Скрыть детали раундов`,round:`Раунд {round}`,attackerRemainingPower:`Оставшаяся мощь нападающего`,defenderRemainingPower:`Оставшаяся мощь защитника`},settings:{dataManagement:`Управление данными`,dataManagementDesc:`Экспорт, импорт или очистка игровых данных`,exportData:`Экспорт данных`,exportDataDesc:`Экспортировать прогресс игры в JSON файл`,export:`Экспорт`,exporting:`Экспорт...`,exportSuccess:`Экспорт успешен`,exportFailed:`Экспорт не удался, попробуйте еще раз`,importData:`Импорт данных`,importDataDesc:`Восстановить прогресс игры из JSON файла`,selectFile:`Выбрать файл`,importSuccess:`Импорт успешен`,importConfirmTitle:`Подтвердить импорт`,importConfirmMessage:`Импорт перезапишет текущий прогресс игры. Это действие невозможно отменить. Продолжить?`,importFailed:`Импорт не удался, проверьте формат файла`,clearData:`Очистить данные`,clearDataDesc:`Удалить все игровые данные и сбросить`,clear:`Очистить`,clearConfirmTitle:`Подтвердить очистку данных`,clearConfirmMessage:`Все игровые данные будут удалены и игра начнется заново. Это действие невозможно отменить. Продолжить?`,gameSettings:`Настройки игры`,gameSettingsDesc:`Настроить параметры и предпочтения игры`,gamePause:`Пауза игры`,gamePauseDesc:`Приостановить или возобновить игровое время и производство ресурсов`,pause:`Пауза`,resume:`Возобновить`,gamePaused:`Игра приостановлена`,gameResumed:`Игра возобновлена`,playerName:`Имя игрока`,gameSpeed:`Скорость игры`,gameSpeedDesc:`Текущий множитель скорости игры`,about:`О программе`,version:`Версия`,buildDate:`Дата сборки`,community:`Сообщество`,github:`Репозиторий GitHub`,qqGroup:`Группа QQ`},gmView:{title:`Панель управления GM`,adminOnly:`Только для администратора`,selectPlanet:`Выбрать планету`,choosePlanet:`Выберите планету`,resources:`Ресурсы`,buildings:`Здания`,research:`Исследования`,ships:`Корабли`,defense:`Оборона`,officers:`Офицеры`,modifyResources:`Изменить ресурсы`,resourcesDesc:`Быстрое изменение ресурсов планеты`,modifyBuildings:`Изменить здания`,buildingsDesc:`Быстрая установка уровней зданий`,modifyResearch:`Изменить исследования`,researchDesc:`Быстрая установка уровней исследований`,modifyShips:`Изменить корабли`,shipsDesc:`Быстрая установка количества кораблей`,modifyDefense:`Изменить оборону`,defenseDesc:`Быстрая установка количества обороны`,modifyOfficers:`Изменить офицеров`,officersDesc:`Быстрая установка времени истечения офицеров`,days:`д`,npcTesting:`Тестирование NPC`,npcTestingDesc:`Тестирование разведки и атак NPC`,selectNPC:`Выбрать NPC`,chooseNPC:`Выберите NPC`,targetPlanet:`Целевая планета`,chooseTarget:`Выберите целевую планету`,testSpy:`Тест разведки`,testAttack:`Тест атаки`,testSpyAndAttack:`Тест разведки и атаки`,initializeFleet:`Инициализировать флот NPC`,accelerateMissions:`Ускорить все миссии (5с)`,selectNPCFirst:`Сначала выберите NPC`,npcNoProbes:`У NPC нет шпионских зондов`,npcNoSpyReport:`NPC нужно сначала разведать`,npcMissionFailed:`Не удалось создать миссию`,dangerZone:`Опасная зона`,dangerZoneDesc:`Следующие операции необратимы`,resetGame:`Сбросить игру`,resetGameConfirm:`Вы уверены, что хотите сбросить игру? Все данные будут удалены!`},alerts:{npcSpyIncoming:`Приближается шпионский зонд NPC`,npcAttackIncoming:`Атака флота NPC приближается!`,npcFleetIncoming:`Приближается флот NPC`,ships:`кораблей`,spiedBy:`Разведан`,attackedBy:`Атакован`,detectionSuccess:`Разведка обнаружена`,detectionFailed:`Разведка не обнаружена`,npcSpiedYourPlanet:`NPC разведал вашу планету`,npcAttackedYourPlanet:`NPC атаковал вашу планету`},diplomacy:{title:`Дипломатия`,description:`Управление дипломатическими отношениями с NPC`,tabs:{all:`Все`,friendly:`Дружественные`,neutral:`Нейтральные`,hostile:`Враждебные`},noNpcs:`Нет NPC`,noFriendlyNpcs:`Нет дружественных NPC`,noNeutralNpcs:`Нет нейтральных NPC`,noHostileNpcs:`Нет враждебных NPC`,recentEvents:`Недавние события`,recentEventsDescription:`Журнал последних дипломатических действий`,ago:`назад`,status:{friendly:`Дружественный`,neutral:`Нейтральный`,hostile:`Враждебный`},planets:`планет`,allies:`союзников`,reputation:`Репутация`,alliedWith:`В союзе с`,more:`еще`,actions:{gift:`Отправить подарок`,viewPlanets:`Посмотреть планеты`},lastEvent:`Последнее событие`,events:{gift:`Подарок отправлен`,attack:`Атака`,allyAttacked:`Союзник атакован`,spy:`Шпионаж`,stealDebris:`Обломки украдены`}},pagination:{previous:`Предыдущая`,next:`Следующая`,first:`Первая`,last:`Последняя`,page:`Страница {page}`}},a={common:{confirm:`확인`,cancel:`취소`,delete:`삭제`,edit:`편집`,save:`저장`,close:`닫기`,back:`돌아가기`,next:`다음`,previous:`이전`,submit:`제출`,reset:`초기화`,search:`검색`,filter:`필터`,loading:`로딩 중...`,noData:`데이터 없음`,error:`오류`,success:`성공`,warning:`경고`,info:`정보`,resourceType:`자원 유형`,playerName:`사령관`,timeHour:`시간`,timeMinute:`분`,timeSecond:`초`,featureLocked:`기능 잠김`,unlockRequired:`건물 필요`,requiredBuilding:`필요한 건물`,currentLevel:`현재 레벨`,goToBuildings:`건물로 이동`,locked:`잠김`,viewRequirements:`요구사항 보기`,requirementsNotMet:`요구사항 미충족`,current:`현재`,level:`레벨`},errors:{requirementsNotMet:`전제 조건 미충족`,insufficientResources:`자원 부족`,insufficientFleetStorage:`함대 저장소 부족`,shieldDomeLimit:`실드 돔 한도 도달`,fleetMissionsFull:`함대 임무 슬롯 가득 참`,insufficientFleet:`함대 부족`,insufficientFuel:`연료 부족`,planetOnly:`이 건물은 행성에서만 지을 수 있습니다`,moonOnly:`이 건물은 위성에서만 지을 수 있습니다`,buildQueueFull:`건설 대기열 가득 참`,insufficientSpace:`공간 부족`,buildingLevelZero:`건물 레벨이 0이므로 철거할 수 없습니다`,researchQueueFull:`연구 대기열 가득 참`,moonExists:`위성이 이미 존재합니다`,insufficientDebris:`잔해장 부족`},nav:{overview:`개요`,buildings:`건물`,research:`연구`,shipyard:`조선소`,defense:`방어`,fleet:`함대`,officers:`장교`,simulator:`시뮬레이터`,galaxy:`은하계`,diplomacy:`Diplomacy`,messages:`메시지`,settings:`설정`,gm:`GM`},sidebar:{language:`언어`,lightMode:`라이트 모드`,darkMode:`다크 모드`,collapse:`메뉴 접기`,expand:`메뉴 펼치기`},resources:{metal:`금속`,crystal:`크리스탈`,deuterium:`중수소`,darkMatter:`암흑 물질`,energy:`에너지`,production:`생산량`,consumption:`소비량`,capacity:`용량`,current:`현재 저장량`,max:`최대 용량`,perHour:`시간`,perMinute:`분`,hour:`시간`,noEnergy:`에너지 부족`},planet:{planet:`행성`,moon:`위성`,colony:`식민지`,position:`위치`,coordinates:`좌표`,switchToMoon:`위성 보기`,backToPlanet:`모행성으로 돌아가기`,switchPlanet:`행성 전환`,currentPlanet:`현재 행성`,fields:`필드`,temperature:`온도`,homePlanet:`모행성`,planetPrefix:`행성`,moonSuffix:`의 위성`,colonyPrefix:`식민지`},player:{points:`총 점수`},buildings:{metalMine:`금속 광산`,crystalMine:`크리스탈 광산`,deuteriumSynthesizer:`중수소 합성기`,solarPlant:`태양광 발전소`,fusionReactor:`핵융합 반응로`,roboticsFactory:`로봇 공장`,naniteFactory:`나노 공장`,shipyard:`조선소`,researchLab:`연구소`,metalStorage:`금속 창고`,crystalStorage:`크리스탈 창고`,deuteriumTank:`중수소 탱크`,darkMatterCollector:`암흑 물질 수집기`,darkMatterTank:`암흑 물질 탱크`,missileSilo:`미사일 발사대`,terraformer:`지형 변환기`,lunarBase:`달 기지`,sensorPhalanx:`센서 팔랑크스`,jumpGate:`점프 게이트`,planetDestroyerFactory:`행성 파괴 공장`,buildTime:`건설 시간`,production:`생산량`,consumption:`소비`,totalCost:`총 비용`,totalPoints:`총 점수`,levelRange:`레벨 범위`,capacity:`Capacity/Effect`,storageCapacity:`Capacity`,energyProduction:`Energy Production`,fleetStorage:`Fleet Storage`,buildQueue:`Build Queue`,buildQueueBonus:`건설 대기열`,spaceBonus:`공간 보너스`,buildSpeedBonus:`건설 속도 보너스`,researchSpeedBonus:`연구 속도 보너스`,planetSpace:`Planet Space`,moonSpace:`Moon Space`,missileCapacity:`Missile Capacity`},buildingDescriptions:{metalMine:`금속 자원 채굴`,crystalMine:`크리스탈 자원 채굴`,deuteriumSynthesizer:`중수소 자원 합성`,solarPlant:`에너지 제공`,fusionReactor:`중수소를 사용하여 대량의 에너지 생산`,roboticsFactory:`건설 속도 향상`,naniteFactory:`건설 대기열 수 증가, 레벨당 +1 (최대 10레벨)`,shipyard:`함선 건조`,researchLab:`기술 연구`,metalStorage:`금속 저장 용량 증가`,crystalStorage:`크리스탈 저장 용량 증가`,deuteriumTank:`중수소 저장 용량 증가`,darkMatterCollector:`희귀한 암흑 물질 자원 수집`,darkMatterTank:`암흑 물질 저장 용량 증가`,missileSilo:`미사일을 저장 및 발사, 레벨당 10발`,terraformer:`행성 지형 개조, 레벨당 가용 공간 5 증가`,lunarBase:`달 가용 공간 증가, 레벨당 +5 공간`,sensorPhalanx:`주변 행성계의 함대 활동 감지`,jumpGate:`다른 위성으로 함대 순간 이동`,planetDestroyerFactory:`행성을 파괴할 수 있는 궁극 병기 건조`},ships:{lightFighter:`경전투기`,heavyFighter:`중전투기`,cruiser:`순양함`,battleship:`전함`,battlecruiser:`순양전함`,bomber:`폭격기`,destroyer:`구축함`,smallCargo:`소형 수송선`,largeCargo:`대형 수송선`,colonyShip:`식민선`,recycler:`재활용선`,espionageProbe:`정찰기`,solarSatellite:`태양광 위성`,darkMatterHarvester:`암흑 물질 채취선`,deathstar:`데스스타`},shipDescriptions:{lightFighter:`기본 전투 유닛`,heavyFighter:`중장갑 전투기`,cruiser:`중형 전함, 공격과 방어 균형`,battleship:`강력한 전함`,battlecruiser:`빠르고 강력한 전투함, 전함 공격에 탁월`,bomber:`방어 시설 공격 전문 함선`,destroyer:`대형 함선 파괴 전문 헌터`,smallCargo:`소량의 자원 운송`,largeCargo:`대량의 자원 운송`,colonyShip:`새로운 행성 식민에 사용`,recycler:`잔해장 자원 수집`,espionageProbe:`적 행성 정찰`,solarSatellite:`추가 에너지 제공, 위성당 50 에너지 생성`,darkMatterHarvester:`암흑 물질 채취 전용 특수 함선`,deathstar:`행성 전체를 파괴할 수 있는 궁극 병기`},defenses:{rocketLauncher:`로켓 발사대`,lightLaser:`경량 레이저포`,heavyLaser:`중형 레이저포`,gaussCannon:`가우스 캐논`,ionCannon:`이온 캐논`,plasmaTurret:`플라즈마 포탑`,smallShieldDome:`소형 실드 돔`,largeShieldDome:`대형 실드 돔`,antiBallisticMissile:`요격 미사일`,interplanetaryMissile:`행성간 미사일`,planetaryShield:`행성 실드`},defenseDescriptions:{rocketLauncher:`기본 방어 시설`,lightLaser:`경량 에너지 무기`,heavyLaser:`중형 에너지 무기`,gaussCannon:`고속 운동 에너지 무기`,ionCannon:`실드 파괴의 이기`,plasmaTurret:`강력한 방어 시설`,smallShieldDome:`행성 전체를 보호하는 소형 실드`,largeShieldDome:`행성 전체를 보호하는 대형 실드`,antiBallisticMissile:`적 미사일 요격, 행성간 미사일 1발 요격 가능`,interplanetaryMissile:`다른 행성의 방어 시설 공격 가능`,planetaryShield:`파괴 공격으로부터 행성을 보호하는 초급 실드`},research:{researchTime:`연구 시간`,totalCost:`총 비용`,totalPoints:`총 점수`,levelRange:`레벨 범위`,capacity:`Capacity/Effect`,storageCapacity:`Capacity`,energyProduction:`Energy Production`,fleetStorage:`Fleet Storage`,buildQueue:`Build Queue`,planetSpace:`Planet Space`,moonSpace:`Moon Space`,missileCapacity:`Missile Capacity`},technologies:{energyTechnology:`에너지 기술`,laserTechnology:`레이저 기술`,ionTechnology:`이온 기술`,hyperspaceTechnology:`초공간 기술`,plasmaTechnology:`플라즈마 기술`,computerTechnology:`컴퓨터 기술`,espionageTechnology:`스파이 기술`,weaponsTechnology:`무기 기술`,shieldingTechnology:`실드 기술`,armourTechnology:`장갑 기술`,astrophysics:`천체물리학`,gravitonTechnology:`중력자 기술`,combustionDrive:`연소 엔진`,impulseDrive:`임펄스 엔진`,hyperspaceDrive:`초공간 엔진`,darkMatterTechnology:`암흑 물질 기술`,terraformingTechnology:`지형 변환 기술`,planetDestructionTech:`행성 파괴 기술`},technologyDescriptions:{energyTechnology:`에너지 이용 효율 향상`,laserTechnology:`레이저 무기와 방어의 기초`,ionTechnology:`이온 무기 기술`,hyperspaceTechnology:`초공간 점프 기술`,plasmaTechnology:`플라즈마 무기 기술`,computerTechnology:`연구 대기열 수 증가, 레벨당 +1 (최대 10레벨)`,espionageTechnology:`스파이 탐사기 효과 향상, 레벨당 정찰 깊이 +1`,weaponsTechnology:`함선과 방어의 공격력 레벨당 10% 증가`,shieldingTechnology:`함선과 방어의 실드 레벨당 10% 증가`,armourTechnology:`함선과 방어의 장갑 레벨당 10% 증가`,astrophysics:`레벨당 식민지 슬롯 +1, 탐험 성공률 향상`,gravitonTechnology:`중력 조작 연구, 데스스타 필요 기술`,combustionDrive:`기본 추진 기술`,impulseDrive:`중급 추진 기술`,hyperspaceDrive:`고급 추진 기술`,darkMatterTechnology:`암흑 물질의 성질과 응용 연구`,terraformingTechnology:`행성 지형 개조 기술 연구, 레벨당 모든 행성의 가용 공간 3 증가`,planetDestructionTech:`행성 전체를 파괴하는 공포의 기술 연구`},officers:{commander:`사령관`,admiral:`제독`,engineer:`엔지니어`,geologist:`지질학자`,technocrat:`기술 전문가`,darkMatterSpecialist:`암흑 물질 전문가`,resourceBonus:`자원 생산 보너스`,darkMatterBonus:`암흑 물질 생산 보너스`,energyBonus:`에너지 생산 보너스`},officerDescriptions:{commander:`건설 속도 및 관리 능력 향상`,admiral:`함대 전투력 및 속도 향상`,engineer:`에너지 및 방어력 향상`,geologist:`자원 생산량 향상`,technocrat:`연구 속도 및 정찰 능력 향상`,darkMatterSpecialist:`암흑 물질 수집 효율 향상`},queue:{buildQueue:`건설 대기열`,researchQueue:`연구 대기열`,building:`건설 중`,researching:`연구 중`,remaining:`남은 시간`,cancel:`취소`,cancelBuild:`건설 취소`,cancelResearch:`연구 취소`,confirmCancel:`취소하시겠습니까? 자원의 50%가 환불됩니다.`,level:`레벨`,upgradeToLevel:`레벨로 업그레이드`},overview:{title:`행성 개요`,resourceOverview:`자원 개요`,fleetInfo:`함대`,currentShips:`현재 행성의 함선 수`,productionSources:`생산 소스`,productionSourcesDesc:`상세 자원 생산 및 보너스 정보`,consumptionSources:`소비 소스`,consumptionSourcesDesc:`건물 에너지 소비 세부 정보`,totalProduction:`총 생산량`,totalConsumption:`총 소비량`,noConsumption:`에너지 소비 없음`},buildingsView:{title:`건물`,usedSpace:`사용된 공간`,spaceUsage:`공간 사용`,level:`레벨`,upgradeCost:`업그레이드 비용`,buildTime:`건설 시간`,upgrade:`업그레이드`,maxLevelReached:`최대 레벨 도달`,requirementsNotMet:`요구 사항 미충족`,upgradeFailed:`업그레이드 실패`,upgradeFailedMessage:`자원이 충분한지, 공간이 충분한지, 또는 다른 건설 작업이 있는지 확인하세요.`,demolish:`철거`,demolishRefund:`철거 환불`,demolishFailed:`철거 실패`,demolishFailedMessage:`이 건물을 철거할 수 없습니다. 건설 대기열이 가득 찼거나 건물 레벨이 0인지 확인하세요.`,confirmDemolish:``,confirmDemolishMessage:``},researchView:{title:`연구`,researchCost:`연구 비용`,research:`연구`,maxLevelReached:`최대 레벨 도달`,researchFailed:`연구 실패`,researchFailedMessage:`자원이 충분한지, 전제 조건이 충족되었는지, 또는 다른 연구 작업이 있는지 확인하세요.`},shipyard:{attack:`공격력`,shield:`쉴드`,armor:`장갑`,speed:`속도`,cargoCapacity:`화물 용량`,fuelConsumption:`연료 소비`,buildCost:`건설 비용`,buildTime:`건설 시간`,perUnit:`단위당`,batchCalculator:`일괄 계산기`,quantity:`수량`,totalCost:`총 비용`,totalTime:`총 시간`},shipyardView:{title:`조선소`,fleetStorage:`함대 저장소`,attack:`공격력`,shield:`실드`,speed:`속도`,cargoCapacity:`적재량`,unitCost:`단위 비용`,buildQuantity:`건조 수량`,totalCost:`총 비용`,build:`건조`,inputError:`입력 오류`,inputErrorMessage:`건조 수량을 입력하세요!`,buildFailed:`건조 실패`,buildFailedMessage:`자원이 충분한지 또는 전제 조건이 충족되었는지 확인하세요.`},defense:{attack:`공격력`,shield:`쉴드`,armor:`장갑`,buildCost:`건설 비용`,buildTime:`건설 시간`,perUnit:`단위당`,batchCalculator:`일괄 계산기`,quantity:`수량`,totalCost:`총 비용`,totalTime:`총 시간`},defenseView:{title:`방어 시설`,attack:`공격력`,shield:`실드`,armor:`장갑`,buildTime:`건설 시간`,seconds:`초`,unitCost:`단위 비용`,buildQuantity:`건조 수량`,totalCost:`총 비용`,build:`건조`,shieldDomeBuilt:`실드 돔이 이미 건설됨`,inputError:`입력 오류`,inputErrorMessage:`건조 수량을 입력하세요!`,buildFailed:`건조 실패`,buildFailedMessage:`자원이 충분한지 또는 전제 조건이 충족되었는지 확인하세요. 실드 돔은 하나만 건설할 수 있습니다.`},fleetView:{title:`함대 관리`,fleetOverview:`함대 개요`,sendFleet:`함대 파견`,flightMissions:`비행 임무`,currentPlanetFleet:`현재 행성 함대`,attack:`공격`,shield:`실드`,armor:`장갑`,speed:`속도`,cargo:`화물`,selectFleet:`함대 선택`,selectFleetDescription:`파견할 함선 수 선택`,available:`사용 가능`,all:`전체`,targetCoordinates:`목표 좌표`,galaxy:`은하계`,diplomacy:`Diplomacy`,system:`행성계`,position:`위치`,missionType:`임무 유형`,missionInfo:`임무 정보`,fuelConsumption:`연료 소비`,flightTime:`비행 시간`,attackMission:`공격`,transport:`수송`,colonize:`식민`,spy:`정찰`,deploy:`배치`,recycle:`회수`,transportResources:`자원 수송`,totalCargoCapacity:`총 적재량`,used:`사용됨`,noFlightMissions:`비행 임무 없음`,outbound:`이동 중`,returning:`귀환 중`,fleetComposition:`함대 구성`,carryingResources:`운반 자원`,arrivalTime:`도착 시간`,returnTime:`귀환 시간`,recallFleet:`함대 소환`,sendFailed:`파견 실패`,sendFailedMessage:`함대 수, 연료 충분 여부 또는 적재량 한계를 확인하세요.`,recallFailed:`소환 실패`,recallFailedMessage:`이 임무는 소환할 수 없습니다.`,unknownPlanet:`알 수 없는 행성`,fleetMissionSlots:`함대 임무 슬롯`,noShipsSelected:`선택된 함선 없음`,cannotSendToOwnPlanet:`자신의 행성으로 함대를 파견할 수 없습니다`,cargoExceedsCapacity:`적재량이 용량을 초과합니다`,noColonyShip:`식민 임무를 위해 식민선이 필요합니다`,noDebrisAtTarget:`대상 좌표에 잔해장이 없거나 잔해장이 비어 있습니다`,noDeathstar:`파괴 임무를 위해 데스스타가 필요합니다`,giftMode:`선물 모드`,giftModeDescription:`자원을 선물로 보내기`,estimatedReputationGain:`예상 평판 획득`},officersView:{title:`장교`,activated:`활성화됨`,inactive:`비활성`,activeStatus:`활성 상태`,expirationTime:`만료 시간`,remainingTime:`남은 시간`,recruitCost:`모집 비용`,days:`일`,benefitsBonus:`효과 보너스`,resourceProduction:`자원 생산량`,darkMatterProduction:`암흑 물질 생산량`,energyProduction:`에너지 생산량`,buildingSpeed:`건설 속도`,researchSpeed:`연구 속도`,fleetSpeed:`함대 속도`,fuelConsumption:`연료 소비`,defense:`방어력`,storageCapacity:`저장 용량`,buildQueue:`건설 대기열`,fleetSlots:`함대 슬롯`,hire:`고용`,renew:`갱신`,dismiss:`해고`,hireTitle:`장교 고용`,hireMessage:`{name}을(를) 고용하시겠습니까? 유효 기간은 7일입니다.`,renewTitle:`장교 갱신`,renewMessage:`{name}을(를) 7일간 갱신하시겠습니까?`,dismissTitle:`장교 해고`,dismissMessage:`{name}을(를) 해고하시겠습니까? 비용은 환불되지 않습니다.`,hireFailed:`고용 실패`,renewFailed:`갱신 실패`,insufficientResources:`자원 부족!`},galaxyView:{title:`은하계`,selectCoordinates:`좌표 선택`,galaxy:`은하계`,diplomacy:`Diplomacy`,selectGalaxy:`은하계 선택`,system:`행성계`,selectSystem:`행성계 선택`,view:`보기`,myPlanet:`내 행성`,myPlanets:`내 행성들`,npcPlanets:`NPC 행성들`,selectPlanetToView:`볼 행성 선택`,totalPositions:`총 10개 행성 위치`,mine:`내 것`,hostile:`적대`,emptySlot:`빈 자리 - 식민 가능`,scout:`정찰`,attack:`공격`,colonize:`식민`,switch:`전환`,recycle:`회수`,debrisField:`잔해 필드`,scoutPlanetTitle:`행성 정찰`,attackPlanetTitle:`행성 공격`,colonizePlanetTitle:`행성 식민`,recyclePlanetTitle:`잔해 회수`,scoutPlanetMessage:`행성 [{coordinates}]을(를) 정찰하기 위해 정찰기를 보내시겠습니까? - -함대 페이지로 이동하여 함선을 선택하고 파견하세요.`,attackPlanetMessage:`행성 [{coordinates}]을(를) 공격하시겠습니까? - -함대 페이지로 이동하여 함선을 선택하고 파견하세요.`,colonizePlanetMessage:`위치 [{coordinates}]을(를) 식민하시겠습니까? - -함대 페이지로 이동하여 식민선을 파견하세요.`,recyclePlanetMessage:`위치 [{coordinates}]의 잔해를 회수하시겠습니까? - -함대 페이지로 이동하여 회수선을 파견하세요.`,sendGift:`선물 보내기`,debris:`잔해`,giftPlanetTitle:`선물 보내기`,giftPlanetMessage:`행성 [{coordinates}]에 자원을 선물로 보내시겠습니까? - -함대 페이지로 이동하여 수송선을 선택하고 자원을 적재하세요.`},messagesView:{title:`메시지 센터`,battles:`전투`,spy:`정찰`,npc:`NPC`,battleReports:`전투 보고서`,spyReports:`정찰 보고서`,noBattleReports:`전투 보고서 없음`,noSpyReports:`정찰 보고서 없음`,battleReport:`전투 보고서`,spyReport:`정찰 보고서`,victory:`승리`,defeat:`패배`,draw:`무승부`,attackerFleet:`공격자 함대`,defenderFleet:`방어자 함대`,defenderDefense:`방어자 방어`,attackerLosses:`공격자 손실`,defenderLosses:`방어자 손실`,noLosses:`손실 없음`,plunder:`약탈 자원`,debrisField:`잔해장`,resources:`자원`,fleet:`함대`,defense:`방어`,buildings:`건물`,unread:`읽지 않음`,targetPlanet:`목표 행성`,attackerRemaining:`공격자 잔여`,defenderRemaining:`방어자 잔여`,moonChance:`위성 생성 확률`,showRoundDetails:`라운드 상세 표시`,hideRoundDetails:`라운드 상세 숨기기`,round:`제{round}라운드`,attackerRemainingPower:`공격자 잔여 화력`,defenderRemainingPower:`방어자 잔여 화력`,spied:`정찰당함`,spiedNotification:`정찰 알림`,noSpiedNotifications:`정찰 알림 없음`,detected:`발견됨`,undetected:`미발견`,missions:`임무`,noMissionReports:`임무 보고서 없음`,success:`성공`,failed:`실패`,npcActivity:`NPC 활동`,noNPCActivity:`NPC 활동 알림 없음`,npcRecycleActivity:`NPC가 잔해 회수`,gifts:`선물`,giftRejected:`거부됨`,noGiftNotifications:`선물 알림 없음`,noGiftRejected:`거부된 기록 없음`,giftFrom:`{npcName}의 선물`,giftRejectedBy:`{npcName}가 선물을 거부했습니다`,giftResources:`선물 자원`,rejectedResources:`거부된 자원`,expectedReputation:`예상 평판`,currentReputation:`현재 평판`,acceptGift:`수락`,rejectGift:`거부`,rejectionReason:{hostile:`상대방이 적대적이어서 선물을 받지 않습니다`,neutral_distrust:`상대방이 당신을 신뢰하지 않습니다`,polite_decline:`정중하게 거절했습니다`}},missionReports:{transportSuccess:`수송 임무가 성공적으로 완료되었습니다`,transportFailed:`수송 임무 실패`,colonizeSuccess:`식민 임무 성공, 새로운 행성이 건설되었습니다`,colonizeFailed:`식민 임무 실패`,deploySuccess:`배치 임무가 성공적으로 완료되었습니다`,deployFailed:`배치 임무 실패`,recycleSuccess:`회수 임무가 성공적으로 완료되었습니다`,recycleFailed:`회수 임무 실패, 목표 위치에 잔해가 없습니다`,destroySuccess:`행성 파괴 임무가 성공적으로 실행되었습니다`,destroyFailed:`행성 파괴 임무 실패`},simulatorView:{title:`전투 시뮬레이터`,attacker:`공격자`,defender:`방어자`,attackerConfig:`공격자 설정`,attackerConfigDesc:`공격자의 함대와 기술 레벨 설정`,defenderConfig:`방어자 설정`,defenderConfigDesc:`방어자의 함대, 방어 및 기술 레벨 설정`,fleet:`함대`,defenseStructures:`방어 시설`,techLevels:`기술 레벨`,weapon:`무기`,shield:`실드`,armor:`장갑`,defenderResources:`방어자 자원 (약탈 계산용)`,startSimulation:`시뮬레이션 시작`,reset:`초기화`,battleResult:`전투 결과`,attackerVictory:`공격자 승리`,defenderVictory:`방어자 승리`,draw:`무승부`,afterRounds:`{rounds}회 전투 후`,attackerLosses:`공격자 손실`,defenderLosses:`방어자 손실`,noLosses:`손실 없음`,attackerRemaining:`공격자 잔여`,defenderRemaining:`방어자 잔여`,allDestroyed:`모두 파괴됨`,plunderableResources:`약탈 가능 자원`,debrisField:`잔해장`,moonChance:`위성 생성 확률`,showRoundDetails:`라운드 상세 표시`,hideRoundDetails:`라운드 상세 숨기기`,round:`제 {round} 라운드`,attackerRemainingPower:`공격자 잔여 화력`,defenderRemainingPower:`방어자 잔여 화력`},settings:{dataManagement:`데이터 관리`,dataManagementDesc:`게임 데이터 내보내기, 가져오기 또는 지우기`,exportData:`데이터 내보내기`,exportDataDesc:`게임 진행 상황을 JSON 파일로 내보내기`,export:`내보내기`,exporting:`내보내는 중...`,exportSuccess:`내보내기 성공`,exportFailed:`내보내기 실패, 다시 시도해주세요`,importData:`데이터 가져오기`,importDataDesc:`JSON 파일에서 게임 진행 상황 복원`,selectFile:`파일 선택`,importSuccess:`가져오기 성공`,importConfirmTitle:`가져오기 확인`,importConfirmMessage:`가져오기를 하면 현재 게임 진행 상황이 덮어쓰기됩니다. 이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?`,importFailed:`가져오기 실패, 파일 형식을 확인해주세요`,clearData:`데이터 지우기`,clearDataDesc:`모든 게임 데이터 삭제 및 초기화`,clear:`지우기`,clearConfirmTitle:`데이터 지우기 확인`,clearConfirmMessage:`모든 게임 데이터가 삭제되고 처음부터 시작됩니다. 이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?`,gameSettings:`게임 설정`,gameSettingsDesc:`게임 매개변수 및 설정 조정`,gamePause:`게임 일시정지`,gamePauseDesc:`게임 시간 및 자원 생산 일시정지 또는 재개`,pause:`일시정지`,resume:`재개`,gamePaused:`게임이 일시정지되었습니다`,gameResumed:`게임이 재개되었습니다`,playerName:`플레이어 이름`,gameSpeed:`게임 속도`,gameSpeedDesc:`현재 게임 속도 배율`,about:`정보`,version:`버전`,buildDate:`빌드 날짜`,community:`커뮤니티`,github:`GitHub 저장소`,qqGroup:`QQ 그룹`},gmView:{title:`GM 제어판`,adminOnly:`관리자 전용`,selectPlanet:`행성 선택`,choosePlanet:`행성을 선택하세요`,resources:`자원`,buildings:`건물`,research:`연구`,ships:`함선`,defense:`방어`,officers:`장교`,modifyResources:`자원 수정`,resourcesDesc:`행성 자원을 빠르게 수정`,modifyBuildings:`건물 수정`,buildingsDesc:`건물 레벨을 빠르게 설정`,modifyResearch:`연구 수정`,researchDesc:`연구 레벨을 빠르게 설정`,modifyShips:`함선 수정`,shipsDesc:`함선 수량을 빠르게 설정`,modifyDefense:`방어 수정`,defenseDesc:`방어 수량을 빠르게 설정`,modifyOfficers:`장교 수정`,officersDesc:`장교 만료 시간을 빠르게 설정`,days:`일`,npcTesting:`NPC 테스트`,npcTestingDesc:`NPC 정찰 및 공격 동작 테스트`,selectNPC:`NPC 선택`,chooseNPC:`NPC를 선택하세요`,targetPlanet:`목표 행성`,chooseTarget:`목표 행성 선택`,testSpy:`정찰 테스트`,testAttack:`공격 테스트`,testSpyAndAttack:`정찰 & 공격 테스트`,initializeFleet:`NPC 함대 초기화`,accelerateMissions:`모든 임무 가속(5초)`,selectNPCFirst:`먼저 NPC를 선택하세요`,npcNoProbes:`NPC에 정찰 프로브가 없습니다`,npcNoSpyReport:`NPC가 먼저 정찰해야 합니다`,npcMissionFailed:`임무 생성 실패`,dangerZone:`위험 구역`,dangerZoneDesc:`다음 작업은 되돌릴 수 없습니다`,resetGame:`게임 초기화`,resetGameConfirm:`게임을 초기화하시겠습니까? 모든 데이터가 삭제됩니다!`},alerts:{npcSpyIncoming:`NPC 정찰 프로브 접근 중`,npcAttackIncoming:`NPC 함대 공격 진행 중!`,npcFleetIncoming:`NPC 함대 접근 중`,ships:`척`,spiedBy:`정찰당함`,attackedBy:`공격당함`,detectionSuccess:`정찰 발견됨`,detectionFailed:`정찰 미발견`,npcSpiedYourPlanet:`NPC가 당신의 행성을 정찰했습니다`,npcAttackedYourPlanet:`NPC가 당신의 행성을 공격했습니다`},diplomacy:{title:`외교`,description:`NPC와의 외교 관계 관리`,tabs:{all:`전체`,friendly:`우호적`,neutral:`중립`,hostile:`적대적`},noNpcs:`NPC 없음`,noFriendlyNpcs:`우호적인 NPC 없음`,noNeutralNpcs:`중립적인 NPC 없음`,noHostileNpcs:`적대적인 NPC 없음`,recentEvents:`최근 이벤트`,recentEventsDescription:`최근 외교 활동 로그`,ago:`전`,status:{friendly:`우호적`,neutral:`중립`,hostile:`적대적`},planets:`행성`,allies:`동맹`,reputation:`평판`,alliedWith:`동맹 관계`,more:`더보기`,actions:{gift:`선물 보내기`,viewPlanets:`행성 보기`},lastEvent:`최근 이벤트`,events:{gift:`선물 전송`,attack:`공격`,allyAttacked:`동맹 공격당함`,spy:`정찰`,stealDebris:`잔해 약탈`}},pagination:{previous:`이전`,next:`다음`,first:`처음`,last:`마지막`,page:`{page}페이지`}},o={common:{confirm:`確認`,cancel:`キャンセル`,delete:`削除`,edit:`編集`,save:`保存`,close:`閉じる`,back:`戻る`,next:`次へ`,previous:`前へ`,submit:`送信`,reset:`リセット`,search:`検索`,filter:`フィルター`,loading:`読み込み中...`,noData:`データなし`,error:`エラー`,success:`成功`,warning:`警告`,info:`情報`,resourceType:`資源タイプ`,playerName:`司令官`,timeHour:`時間`,timeMinute:`分`,timeSecond:`秒`,featureLocked:`機能がロックされています`,unlockRequired:`建物が必要です`,requiredBuilding:`必要な建物`,currentLevel:`現在のレベル`,goToBuildings:`建物へ移動`,locked:`ロック済み`,viewRequirements:`必要条件を表示`,requirementsNotMet:`必要条件が満たされていません`,current:`現在`,level:`レベル`},errors:{requirementsNotMet:`前提条件を満たしていません`,insufficientResources:`資源が不足しています`,insufficientFleetStorage:`艦隊ストレージが不足しています`,shieldDomeLimit:`シールドドームの上限に達しました`,fleetMissionsFull:`艦隊ミッションスロットが満杯です`,insufficientFleet:`艦隊が不足しています`,insufficientFuel:`燃料が不足しています`,planetOnly:`この建物は惑星でのみ建設できます`,moonOnly:`この建物は月でのみ建設できます`,buildQueueFull:`建設キューが満杯です`,insufficientSpace:`スペースが不足しています`,buildingLevelZero:`建物レベルが0のため、解体できません`,researchQueueFull:`研究キューが満杯です`,moonExists:`月は既に存在します`,insufficientDebris:`残骸フィールドが不足しています`},nav:{overview:`概要`,buildings:`建物`,research:`研究`,shipyard:`造船所`,defense:`防衛`,fleet:`艦隊`,officers:`士官`,simulator:`シミュレーター`,galaxy:`銀河`,diplomacy:`Diplomacy`,messages:`メッセージ`,settings:`設定`,gm:`GM`},sidebar:{language:`言語`,lightMode:`ライトモード`,darkMode:`ダークモード`,collapse:`メニューを閉じる`,expand:`メニューを開く`},resources:{metal:`金属`,crystal:`クリスタル`,deuterium:`重水素`,darkMatter:`ダークマター`,energy:`エネルギー`,production:`生産量`,consumption:`消費量`,capacity:`容量`,current:`現在の貯蔵量`,max:`最大容量`,perHour:`時間`,perMinute:`分`,hour:`時間`,noEnergy:`エネルギー不足`},planet:{planet:`惑星`,moon:`月`,colony:`コロニー`,position:`位置`,coordinates:`座標`,switchToMoon:`月を表示`,backToPlanet:`母星に戻る`,switchPlanet:`惑星を切り替える`,currentPlanet:`現在の惑星`,fields:`フィールド`,temperature:`温度`,homePlanet:`母星`,planetPrefix:`惑星`,moonSuffix:`の月`,colonyPrefix:`コロニー`},player:{points:`総ポイント`},buildings:{metalMine:`金属鉱山`,crystalMine:`クリスタル鉱山`,deuteriumSynthesizer:`重水素合成装置`,solarPlant:`太陽光発電所`,fusionReactor:`核融合炉`,roboticsFactory:`ロボット工場`,naniteFactory:`ナノマシン工場`,shipyard:`造船所`,researchLab:`研究所`,metalStorage:`金属倉庫`,crystalStorage:`クリスタル倉庫`,deuteriumTank:`重水素タンク`,darkMatterCollector:`ダークマター採取装置`,darkMatterTank:`ダークマタータンク`,missileSilo:`ミサイル格納庫`,terraformer:`テラフォーマー`,lunarBase:`月面基地`,sensorPhalanx:`センサーファランクス`,jumpGate:`ジャンプゲート`,planetDestroyerFactory:`惑星破壊工場`,buildTime:`建設時間`,production:`生産量`,consumption:`消費`,totalCost:`総コスト`,totalPoints:`総ポイント`,levelRange:`レベル範囲`,capacity:`Capacity/Effect`,storageCapacity:`Capacity`,energyProduction:`Energy Production`,fleetStorage:`Fleet Storage`,buildQueue:`Build Queue`,buildQueueBonus:`建造隊列`,spaceBonus:`スペースボーナス`,buildSpeedBonus:`建設速度ボーナス`,researchSpeedBonus:`研究速度ボーナス`,planetSpace:`Planet Space`,moonSpace:`Moon Space`,missileCapacity:`Missile Capacity`},buildingDescriptions:{metalMine:`金属資源を採掘`,crystalMine:`クリスタル資源を採掘`,deuteriumSynthesizer:`重水素資源を合成`,solarPlant:`エネルギーを供給`,fusionReactor:`重水素を使用して大量のエネルギーを生成`,roboticsFactory:`建設速度を向上`,naniteFactory:`建設キュー数を増加、レベル毎に+1(最大10レベル)`,shipyard:`艦船を建造`,researchLab:`技術を研究`,metalStorage:`金属の貯蔵上限を増加`,crystalStorage:`クリスタルの貯蔵上限を増加`,deuteriumTank:`重水素の貯蔵上限を増加`,darkMatterCollector:`希少なダークマター資源を収集`,darkMatterTank:`ダークマターの貯蔵上限を増加`,missileSilo:`ミサイルを保管・発射、レベル毎に10発`,terraformer:`惑星地形を改造、レベル毎に利用可能スペース5増加`,lunarBase:`月の利用可能スペースを増加、レベル毎に+5スペース`,sensorPhalanx:`周辺星系の艦隊活動を探知`,jumpGate:`他の月へ艦隊を瞬間移動`,planetDestroyerFactory:`惑星を破壊できる究極兵器を建造`},ships:{lightFighter:`軽戦闘機`,heavyFighter:`重戦闘機`,cruiser:`巡洋艦`,battleship:`戦艦`,battlecruiser:`巡洋戦艦`,bomber:`爆撃機`,destroyer:`駆逐艦`,smallCargo:`小型輸送船`,largeCargo:`大型輸送船`,colonyShip:`コロニーシップ`,recycler:`リサイクラー`,espionageProbe:`スパイプローブ`,solarSatellite:`太陽光衛星`,darkMatterHarvester:`ダークマター採取船`,deathstar:`デススター`},shipDescriptions:{lightFighter:`基本戦闘ユニット`,heavyFighter:`重装甲戦闘機`,cruiser:`中型戦艦、攻守バランス型`,battleship:`強力な戦艦`,battlecruiser:`高速強力な戦闘艦、戦艦への攻撃に優れる`,bomber:`防御施設への攻撃に特化した艦船`,destroyer:`大型艦の破壊に特化したハンター`,smallCargo:`少量の資源を輸送`,largeCargo:`大量の資源を輸送`,colonyShip:`新惑星の植民に使用`,recycler:`デブリフィールドの資源を回収`,espionageProbe:`敵惑星を偵察`,solarSatellite:`追加エネルギーを提供、衛星1つにつき50エネルギー生成`,darkMatterHarvester:`ダークマター採取専用の特殊艦`,deathstar:`惑星全体を破壊できる究極兵器`},defenses:{rocketLauncher:`ロケットランチャー`,lightLaser:`ライトレーザー`,heavyLaser:`ヘビーレーザー`,gaussCannon:`ガウスキャノン`,ionCannon:`イオンキャノン`,plasmaTurret:`プラズマタレット`,smallShieldDome:`小型シールドドーム`,largeShieldDome:`大型シールドドーム`,antiBallisticMissile:`迎撃ミサイル`,interplanetaryMissile:`惑星間ミサイル`,planetaryShield:`惑星シールド`},defenseDescriptions:{rocketLauncher:`基本防衛施設`,lightLaser:`軽量エネルギー兵器`,heavyLaser:`重型エネルギー兵器`,gaussCannon:`高速運動エネルギー兵器`,ionCannon:`シールド破壊に効果的`,plasmaTurret:`強力な防衛施設`,smallShieldDome:`惑星全体を保護する小型シールド`,largeShieldDome:`惑星全体を保護する大型シールド`,antiBallisticMissile:`敵ミサイルを迎撃、惑星間ミサイル1発を迎撃可能`,interplanetaryMissile:`他の惑星の防御施設を攻撃可能`,planetaryShield:`破壊攻撃から惑星を保護する超級シールド`},research:{researchTime:`研究時間`,totalCost:`総コスト`,totalPoints:`総ポイント`,levelRange:`レベル範囲`,capacity:`Capacity/Effect`,storageCapacity:`Capacity`,energyProduction:`Energy Production`,fleetStorage:`Fleet Storage`,buildQueue:`Build Queue`,planetSpace:`Planet Space`,moonSpace:`Moon Space`,missileCapacity:`Missile Capacity`},technologies:{energyTechnology:`エネルギー技術`,laserTechnology:`レーザー技術`,ionTechnology:`イオン技術`,hyperspaceTechnology:`ハイパースペース技術`,plasmaTechnology:`プラズマ技術`,computerTechnology:`コンピューター技術`,espionageTechnology:`スパイ技術`,weaponsTechnology:`兵器技術`,shieldingTechnology:`シールド技術`,armourTechnology:`装甲技術`,astrophysics:`天体物理学`,gravitonTechnology:`重力技術`,combustionDrive:`燃焼ドライブ`,impulseDrive:`インパルスドライブ`,hyperspaceDrive:`ハイパースペースドライブ`,darkMatterTechnology:`ダークマター技術`,terraformingTechnology:`テラフォーミング技術`,planetDestructionTech:`惑星破壊技術`},technologyDescriptions:{energyTechnology:`エネルギー利用効率を向上`,laserTechnology:`レーザー兵器と防衛の基礎`,ionTechnology:`イオン兵器技術`,hyperspaceTechnology:`ハイパースペースジャンプ技術`,plasmaTechnology:`プラズマ兵器技術`,computerTechnology:`研究キュー数を増加、レベル毎に+1(最大10レベル)`,espionageTechnology:`スパイ探査機の効果を向上、レベル毎に偵察深度+1`,weaponsTechnology:`艦船と防御の攻撃力をレベル毎に10%増加`,shieldingTechnology:`艦船と防御のシールドをレベル毎に10%増加`,armourTechnology:`艦船と防御の装甲をレベル毎に10%増加`,astrophysics:`レベル毎に植民地スロット+1、探検成功率を向上`,gravitonTechnology:`重力操作を研究、デススターに必要`,combustionDrive:`基本推進技術`,impulseDrive:`中級推進技術`,hyperspaceDrive:`高級推進技術`,darkMatterTechnology:`ダークマターの性質と応用を研究`,terraformingTechnology:`惑星地形改造技術を研究、レベル毎に全惑星の利用可能スペース3増加`,planetDestructionTech:`惑星全体を破壊する恐怖の技術を研究`},officers:{commander:`司令官`,admiral:`提督`,engineer:`エンジニア`,geologist:`地質学者`,technocrat:`技術専門家`,darkMatterSpecialist:`ダークマター専門家`,resourceBonus:`資源生産ボーナス`,darkMatterBonus:`ダークマター生産ボーナス`,energyBonus:`エネルギー生産ボーナス`},officerDescriptions:{commander:`建設速度と管理能力を向上`,admiral:`艦隊戦闘力と速度を向上`,engineer:`エネルギーと防御力を向上`,geologist:`資源生産量を向上`,technocrat:`研究速度と偵察能力を向上`,darkMatterSpecialist:`ダークマター採取効率を向上`},queue:{buildQueue:`建設キュー`,researchQueue:`研究キュー`,building:`建設中`,researching:`研究中`,remaining:`残り時間`,cancel:`キャンセル`,cancelBuild:`建設キャンセル`,cancelResearch:`研究キャンセル`,confirmCancel:`キャンセルしますか?資源の50%が返還されます。`,level:`レベル`,upgradeToLevel:`レベルにアップグレード`},shipyard:{attack:`攻撃力`,shield:`シールド`,armor:`装甲`,speed:`速度`,cargoCapacity:`貨物容量`,fuelConsumption:`燃料消費`,buildCost:`建設コスト`,buildTime:`建設時間`,perUnit:`ユニットあたり`,batchCalculator:`一括計算機`,quantity:`数量`,totalCost:`総コスト`,totalTime:`総時間`},overview:{title:`惑星概要`,resourceOverview:`資源概要`,fleetInfo:`艦隊`,currentShips:`現在の惑星の艦船数`,productionSources:`生産源`,productionSourcesDesc:`詳細な資源生産とボーナス情報`,consumptionSources:`消費源`,consumptionSourcesDesc:`建物のエネルギー消費詳細`,totalProduction:`総生産量`,totalConsumption:`総消費量`,noConsumption:`エネルギー消費なし`},buildingsView:{title:`建物`,usedSpace:`使用済みスペース`,spaceUsage:`スペース使用量`,level:`レベル`,upgradeCost:`アップグレードコスト`,buildTime:`建設時間`,upgrade:`アップグレード`,maxLevelReached:`最大レベルに達しました`,requirementsNotMet:`要件が満たされていません`,upgradeFailed:`アップグレード失敗`,upgradeFailedMessage:`資源が十分か、スペースが十分か、または他の建設タスクがないか確認してください。`,demolish:`解体`,demolishRefund:`解体返還`,demolishFailed:`解体失敗`,demolishFailedMessage:`この建物を解体できません。建設キューが満杯か、建物レベルが0でないか確認してください。`,confirmDemolish:``,confirmDemolishMessage:``},researchView:{title:`研究`,researchCost:`研究コスト`,research:`研究`,maxLevelReached:`最大レベルに達しました`,researchFailed:`研究失敗`,researchFailedMessage:`資源が十分か、前提条件が満たされているか、または他の研究タスクがないか確認してください。`},defense:{attack:`攻撃力`,shield:`シールド`,armor:`装甲`,buildCost:`建設コスト`,buildTime:`建設時間`,perUnit:`ユニットあたり`,batchCalculator:`一括計算機`,quantity:`数量`,totalCost:`総コスト`,totalTime:`総時間`},shipyardView:{title:`造船所`,fleetStorage:`艦隊ストレージ`,attack:`攻撃力`,shield:`シールド`,speed:`速度`,cargoCapacity:`積載量`,unitCost:`ユニットコスト`,buildQuantity:`建造数`,totalCost:`総コスト`,build:`建造`,inputError:`入力エラー`,inputErrorMessage:`建造数を入力してください!`,buildFailed:`建造失敗`,buildFailedMessage:`資源が十分か、前提条件が満たされているか確認してください。`},defenseView:{title:`防衛施設`,attack:`攻撃力`,shield:`シールド`,armor:`装甲`,buildTime:`建設時間`,seconds:`秒`,unitCost:`ユニットコスト`,buildQuantity:`建造数`,totalCost:`総コスト`,build:`建造`,shieldDomeBuilt:`シールドドーム建設済み`,inputError:`入力エラー`,inputErrorMessage:`建造数を入力してください!`,buildFailed:`建造失敗`,buildFailedMessage:`資源が十分か、前提条件が満たされているか確認してください。シールドドームは1つのみ建設できます。`},fleetView:{title:`艦隊管理`,fleetOverview:`艦隊概要`,sendFleet:`艦隊派遣`,flightMissions:`飛行ミッション`,currentPlanetFleet:`現在の惑星艦隊`,attack:`攻撃`,shield:`シールド`,armor:`装甲`,speed:`速度`,cargo:`貨物`,selectFleet:`艦隊選択`,selectFleetDescription:`派遣する艦船数を選択`,available:`利用可能`,all:`全て`,targetCoordinates:`目標座標`,galaxy:`銀河`,diplomacy:`Diplomacy`,system:`星系`,position:`位置`,missionType:`ミッションタイプ`,missionInfo:`ミッション情報`,fuelConsumption:`燃料消費`,flightTime:`飛行時間`,attackMission:`攻撃`,transport:`輸送`,colonize:`植民`,spy:`偵察`,deploy:`配備`,recycle:`回収`,transportResources:`資源輸送`,totalCargoCapacity:`総積載量`,used:`使用済み`,noFlightMissions:`飛行ミッションなし`,outbound:`往路`,returning:`帰路`,fleetComposition:`艦隊構成`,carryingResources:`運搬資源`,arrivalTime:`到着時刻`,returnTime:`帰還時刻`,recallFleet:`艦隊召還`,sendFailed:`派遣失敗`,sendFailedMessage:`艦隊数、燃料の充足、または積載量の制限を確認してください。`,recallFailed:`召還失敗`,recallFailedMessage:`このミッションは召還できません。`,unknownPlanet:`未知の惑星`,fleetMissionSlots:`艦隊ミッションスロット`,noShipsSelected:`艦船が選択されていません`,cannotSendToOwnPlanet:`自分の惑星に艦隊を派遣できません`,cargoExceedsCapacity:`積載量が容量を超えています`,noColonyShip:`植民ミッションにはコロニーシップが必要です`,noDebrisAtTarget:`目標座標にデブリフィールドがないか、デブリフィールドが空です`,noDeathstar:`破壊ミッションにはデススターが必要です`,giftMode:`ギフトモード`,giftModeDescription:`資源を贈り物として送る`,estimatedReputationGain:`推定評判獲得`},officersView:{title:`士官`,activated:`アクティブ`,inactive:`非アクティブ`,activeStatus:`アクティブ状態`,expirationTime:`期限切れ時刻`,remainingTime:`残り時間`,recruitCost:`募集コスト`,days:`日`,benefitsBonus:`効果ボーナス`,resourceProduction:`資源生産量`,darkMatterProduction:`ダークマター生産量`,energyProduction:`エネルギー生産量`,buildingSpeed:`建設速度`,researchSpeed:`研究速度`,fleetSpeed:`艦隊速度`,fuelConsumption:`燃料消費`,defense:`防御力`,storageCapacity:`貯蔵容量`,buildQueue:`建設キュー`,fleetSlots:`艦隊スロット`,hire:`雇用`,renew:`更新`,dismiss:`解雇`,hireTitle:`士官雇用`,hireMessage:`{name}を雇用しますか?有効期限は7日間です。`,renewTitle:`士官更新`,renewMessage:`{name}を7日間更新しますか?`,dismissTitle:`士官解雇`,dismissMessage:`{name}を解雇しますか?費用は返金されません。`,hireFailed:`雇用失敗`,renewFailed:`更新失敗`,insufficientResources:`資源不足!`},galaxyView:{title:`銀河`,selectCoordinates:`座標選択`,galaxy:`銀河`,diplomacy:`Diplomacy`,selectGalaxy:`銀河を選択`,system:`星系`,selectSystem:`星系を選択`,view:`表示`,myPlanet:`自分の惑星`,myPlanets:`私の惑星`,npcPlanets:`NPCの惑星`,selectPlanetToView:`表示する惑星を選択`,totalPositions:`全10惑星位置`,mine:`自分`,hostile:`敵対`,emptySlot:`空き - 植民可能`,scout:`偵察`,attack:`攻撃`,colonize:`植民`,switch:`切り替え`,recycle:`回収`,debrisField:`デブリフィールド`,scoutPlanetTitle:`惑星偵察`,attackPlanetTitle:`惑星攻撃`,colonizePlanetTitle:`惑星植民`,recyclePlanetTitle:`デブリ回収`,scoutPlanetMessage:`惑星[{coordinates}]にスパイプローブを送りますか? - -艦隊ページに移動して艦船を選択して派遣してください。`,attackPlanetMessage:`惑星[{coordinates}]を攻撃しますか? - -艦隊ページに移動して艦船を選択して派遣してください。`,colonizePlanetMessage:`位置[{coordinates}]を植民しますか? - -艦隊ページに移動してコロニーシップを派遣してください。`,recyclePlanetMessage:`位置[{coordinates}]のデブリを回収しますか? - -艦隊ページに移動してリサイクラーを派遣してください。`,sendGift:`ギフト送信`,debris:`破片`,giftPlanetTitle:`ギフト送信`,giftPlanetMessage:`惑星[{coordinates}]にリソースを贈りますか? - -艦隊ページに移動して輸送船を選択し、リソースを積載してください。`},messagesView:{title:`メッセージセンター`,battles:`戦闘`,spy:`スパイ`,npc:`NPC`,battleReports:`戦闘レポート`,spyReports:`スパイレポート`,noBattleReports:`戦闘レポートなし`,noSpyReports:`スパイレポートなし`,battleReport:`戦闘レポート`,spyReport:`スパイレポート`,victory:`勝利`,defeat:`敗北`,draw:`引き分け`,attackerFleet:`攻撃側艦隊`,defenderFleet:`防御側艦隊`,defenderDefense:`防御側防衛`,attackerLosses:`攻撃側損失`,defenderLosses:`防御側損失`,noLosses:`損失なし`,plunder:`略奪資源`,debrisField:`デブリフィールド`,resources:`資源`,fleet:`艦隊`,defense:`防衛`,buildings:`建物`,unread:`未読`,targetPlanet:`目標惑星`,attackerRemaining:`攻撃側残存`,defenderRemaining:`防御側残存`,moonChance:`月生成確率`,showRoundDetails:`ラウンド詳細表示`,hideRoundDetails:`ラウンド詳細非表示`,round:`第{round}ラウンド`,attackerRemainingPower:`攻撃側残存火力`,defenderRemainingPower:`防御側残存火力`,spied:`偵察された`,spiedNotification:`偵察通知`,noSpiedNotifications:`偵察通知はありません`,detected:`発見された`,undetected:`未発見`,missions:`ミッション`,noMissionReports:`ミッションレポートなし`,success:`成功`,failed:`失敗`,npcActivity:`NPC活動`,noNPCActivity:`NPC活動通知はありません`,npcRecycleActivity:`NPCがデブリを回収`,gifts:`ギフト`,giftRejected:`拒否`,noGiftNotifications:`ギフト通知はありません`,noGiftRejected:`拒否された記録はありません`,giftFrom:`{npcName}からのギフト`,giftRejectedBy:`{npcName}がギフトを拒否しました`,giftResources:`ギフトリソース`,rejectedResources:`拒否されたリソース`,expectedReputation:`期待される評判`,currentReputation:`現在の評判`,acceptGift:`受け取る`,rejectGift:`拒否`,rejectionReason:{hostile:`相手は敵対的でギフトを受け取りません`,neutral_distrust:`相手はあなたを信頼していません`,polite_decline:`丁重に断りました`}},missionReports:{transportSuccess:`輸送ミッションが正常に完了しました`,transportFailed:`輸送ミッションが失敗しました`,colonizeSuccess:`植民ミッション成功、新しい惑星が確立されました`,colonizeFailed:`植民ミッションが失敗しました`,deploySuccess:`配備ミッションが正常に完了しました`,deployFailed:`配備ミッションが失敗しました`,recycleSuccess:`回収ミッションが正常に完了しました`,recycleFailed:`回収ミッションが失敗しました。目標位置にデブリがありません`,destroySuccess:`惑星破壊ミッションが正常に実行されました`,destroyFailed:`惑星破壊ミッションが失敗しました`},simulatorView:{title:`戦闘シミュレーター`,attacker:`攻撃側`,defender:`防御側`,attackerConfig:`攻撃側設定`,attackerConfigDesc:`攻撃側の艦隊と技術レベルを設定`,defenderConfig:`防御側設定`,defenderConfigDesc:`防御側の艦隊、防衛、技術レベルを設定`,fleet:`艦隊`,defenseStructures:`防衛施設`,techLevels:`技術レベル`,weapon:`武器`,shield:`シールド`,armor:`装甲`,defenderResources:`防御側資源(略奪計算用)`,startSimulation:`シミュレーション開始`,reset:`リセット`,battleResult:`戦闘結果`,attackerVictory:`攻撃側勝利`,defenderVictory:`防御側勝利`,draw:`引き分け`,afterRounds:`{rounds}ラウンド後`,attackerLosses:`攻撃側損失`,defenderLosses:`防御側損失`,noLosses:`損失なし`,attackerRemaining:`攻撃側残存`,defenderRemaining:`防御側残存`,allDestroyed:`全て破壊`,plunderableResources:`略奪可能資源`,debrisField:`デブリフィールド`,moonChance:`月生成確率`,showRoundDetails:`ラウンド詳細表示`,hideRoundDetails:`ラウンド詳細非表示`,round:`第{round}ラウンド`,attackerRemainingPower:`攻撃側残存火力`,defenderRemainingPower:`防御側残存火力`},settings:{dataManagement:`データ管理`,dataManagementDesc:`ゲームデータのエクスポート、インポート、またはクリア`,exportData:`データエクスポート`,exportDataDesc:`ゲームの進行状況をJSONファイルとしてエクスポート`,export:`エクスポート`,exporting:`エクスポート中...`,exportSuccess:`エクスポート成功`,exportFailed:`エクスポートに失敗しました。もう一度お試しください`,importData:`データインポート`,importDataDesc:`JSONファイルからゲームの進行状況を復元`,selectFile:`ファイルを選択`,importSuccess:`インポート成功`,importConfirmTitle:`インポート確認`,importConfirmMessage:`インポートすると現在のゲームの進行状況が上書きされます。この操作は元に戻せません。続行しますか?`,importFailed:`インポートに失敗しました。ファイル形式を確認してください`,clearData:`データクリア`,clearDataDesc:`すべてのゲームデータを削除してリセット`,clear:`クリア`,clearConfirmTitle:`データクリア確認`,clearConfirmMessage:`すべてのゲームデータが削除され、最初からやり直します。この操作は元に戻せません。続行しますか?`,gameSettings:`ゲーム設定`,gameSettingsDesc:`ゲームパラメータと設定を調整`,gamePause:`ゲーム一時停止`,gamePauseDesc:`ゲーム時間と資源生産を一時停止または再開`,pause:`一時停止`,resume:`再開`,gamePaused:`ゲームを一時停止しました`,gameResumed:`ゲームを再開しました`,playerName:`プレイヤー名`,gameSpeed:`ゲーム速度`,gameSpeedDesc:`現在のゲーム速度倍率`,about:`について`,version:`バージョン`,buildDate:`ビルド日`,community:`コミュニティ`,github:`GitHubリポジトリ`,qqGroup:`QQグループ`},gmView:{title:`GMコントロールパネル`,adminOnly:`管理者専用`,selectPlanet:`惑星を選択`,choosePlanet:`惑星を選択してください`,resources:`資源`,buildings:`建物`,research:`研究`,ships:`艦船`,defense:`防衛`,officers:`士官`,modifyResources:`資源を変更`,resourcesDesc:`惑星の資源を素早く変更`,modifyBuildings:`建物を変更`,buildingsDesc:`建物レベルを素早く設定`,modifyResearch:`研究を変更`,researchDesc:`研究レベルを素早く設定`,modifyShips:`艦船を変更`,shipsDesc:`艦船数を素早く設定`,modifyDefense:`防衛を変更`,defenseDesc:`防衛数を素早く設定`,modifyOfficers:`士官を変更`,officersDesc:`士官の有効期限を素早く設定`,days:`日`,npcTesting:`NPCテスト`,npcTestingDesc:`NPCの偵察と攻撃動作をテスト`,selectNPC:`NPCを選択`,chooseNPC:`NPCを選択してください`,targetPlanet:`ターゲット惑星`,chooseTarget:`ターゲット惑星を選択`,testSpy:`偵察テスト`,testAttack:`攻撃テスト`,testSpyAndAttack:`偵察&攻撃テスト`,initializeFleet:`NPC艦隊を初期化`,accelerateMissions:`すべてのミッションを加速(5秒)`,selectNPCFirst:`最初にNPCを選択してください`,npcNoProbes:`NPCには偵察プローブがありません`,npcNoSpyReport:`NPCは最初に偵察する必要があります`,npcMissionFailed:`ミッションの作成に失敗しました`,dangerZone:`危険ゾーン`,dangerZoneDesc:`以下の操作は元に戻せません`,resetGame:`ゲームをリセット`,resetGameConfirm:`ゲームをリセットしてもよろしいですか?すべてのデータが削除されます!`},alerts:{npcSpyIncoming:`NPC偵察プローブが接近中`,npcAttackIncoming:`NPC艦隊攻撃が接近中!`,npcFleetIncoming:`NPC艦隊が接近中`,ships:`隻`,spiedBy:`偵察された`,attackedBy:`攻撃された`,detectionSuccess:`偵察が発見された`,detectionFailed:`偵察が発見されなかった`,npcSpiedYourPlanet:`NPCがあなたの惑星を偵察しました`,npcAttackedYourPlanet:`NPCがあなたの惑星を攻撃しました`},diplomacy:{title:`外交`,description:`NPCとの外交関係を管理`,tabs:{all:`すべて`,friendly:`友好的`,neutral:`中立`,hostile:`敵対的`},noNpcs:`NPCなし`,noFriendlyNpcs:`友好的なNPCなし`,noNeutralNpcs:`中立なNPCなし`,noHostileNpcs:`敵対的なNPCなし`,recentEvents:`最近のイベント`,recentEventsDescription:`最近の外交活動ログ`,ago:`前`,status:{friendly:`友好的`,neutral:`中立`,hostile:`敵対的`},planets:`惑星`,allies:`同盟`,reputation:`評判`,alliedWith:`同盟関係`,more:`その他`,actions:{gift:`ギフトを送る`,viewPlanets:`惑星を表示`},lastEvent:`最後のイベント`,events:{gift:`ギフト送信`,attack:`攻撃`,allyAttacked:`同盟が攻撃された`,spy:`諜報活動`,stealDebris:`残骸を略奪`}},pagination:{previous:`前へ`,next:`次へ`,first:`最初`,last:`最後`,page:`{page}ページ`}};const s={"zh-CN":e,"zh-TW":t,en:n,de:r,ru:i,ko:a,ja:o},c={"zh-CN":`简体中文`,"zh-TW":`繁體中文`,en:`English`,de:`Deutsch`,ru:`Русский`,ko:`한국어`,ja:`日本語`},l=()=>{let e=(navigator.language||navigator.languages&&navigator.languages[0]||`zh-CN`).toLowerCase();return e.startsWith(`zh-tw`)||e.startsWith(`zh-hant`)||e.startsWith(`zh-hk`)||e.startsWith(`zh-mo`)?`zh-TW`:e.startsWith(`zh`)?`zh-CN`:e.startsWith(`ja`)?`ja`:e.startsWith(`ko`)?`ko`:e.startsWith(`en`)?`en`:e.startsWith(`de`)?`de`:e.startsWith(`ru`)?`ru`:`zh-CN`};export{c as n,s as r,l as t}; \ No newline at end of file diff --git a/docs/assets/game-logic-BBFCPVtv.js b/docs/assets/game-logic-BBFCPVtv.js new file mode 100644 index 0000000..c873bac --- /dev/null +++ b/docs/assets/game-logic-BBFCPVtv.js @@ -0,0 +1,3 @@ +import{n as e}from"./rolldown-runtime-CIDIeb-o.js";import{r as t}from"./game-i18n-BC9uiVvf.js";import{_ as n,a as r,c as i,d as a,f as o,g as s,h as c,i as l,l as u,m as d,n as f,o as p,p as m,r as h,s as g,t as _,u as v,v as y}from"./game-config-DRP-gbpS.js";function b(e){let t=Object.create(null);for(let n of e.split(`,`))t[n]=1;return e=>e in t}var x={},S=[],C=()=>{},w=()=>!1,T=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),E=e=>e.startsWith(`onUpdate:`),D=Object.assign,ee=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},te=Object.prototype.hasOwnProperty,O=(e,t)=>te.call(e,t),k=Array.isArray,ne=e=>ce(e)===`[object Map]`,A=e=>ce(e)===`[object Set]`,re=e=>ce(e)===`[object Date]`,ie=e=>ce(e)===`[object RegExp]`,j=e=>typeof e==`function`,M=e=>typeof e==`string`,ae=e=>typeof e==`symbol`,N=e=>typeof e==`object`&&!!e,oe=e=>(N(e)||j(e))&&j(e.then)&&j(e.catch),se=Object.prototype.toString,ce=e=>se.call(e),le=e=>ce(e).slice(8,-1),ue=e=>ce(e)===`[object Object]`,de=e=>M(e)&&e!==`NaN`&&e[0]!==`-`&&``+parseInt(e,10)===e,fe=b(`,key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted`),pe=e=>{let t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},me=/-\w/g,P=pe(e=>e.replace(me,e=>e.slice(1).toUpperCase())),he=/\B([A-Z])/g,F=pe(e=>e.replace(he,`-$1`).toLowerCase()),ge=pe(e=>e.charAt(0).toUpperCase()+e.slice(1)),_e=pe(e=>e?`on${ge(e)}`:``),I=(e,t)=>!Object.is(e,t),ve=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},be=e=>{let t=parseFloat(e);return isNaN(t)?e:t},xe=e=>{let t=M(e)?Number(e):NaN;return isNaN(t)?e:t},Se,Ce=()=>Se||=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{},we=b(`Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol`);function Te(e){if(k(e)){let t={};for(let n=0;n{if(e){let n=e.split(De);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function Ae(e){let t=``;if(M(e))t=e;else if(k(e))for(let n=0;nIe(e,t))}var Re=e=>!!(e&&e.__v_isRef===!0),ze=e=>M(e)?e:e==null?``:k(e)||N(e)&&(e.toString===se||!j(e.toString))?Re(e)?ze(e.value):JSON.stringify(e,Be,2):String(e),Be=(e,t)=>Re(t)?Be(e,t.value):ne(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n],r)=>(e[Ve(t,r)+` =>`]=n,e),{})}:A(t)?{[`Set(${t.size})`]:[...t.values()].map(e=>Ve(e))}:ae(t)?Ve(t):N(t)&&!k(t)&&!ue(t)?String(t):t,Ve=(e,t=``)=>ae(e)?`Symbol(${e.description??t})`:e;function He(e){return e==null?`initial`:typeof e==`string`?e===``?` `:e:String(e)}var L,Ue=class{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=L,!e&&L&&(this.index=(L.scopes||=[]).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,t;if(this.scopes)for(e=0,t=this.scopes.length;e0&&--this._on===0&&(L=this.prevScope,this.prevScope=void 0)}stop(e){if(this._active){this._active=!1;let t,n;for(t=0,n=this.effects.length;t0)return;if(Ze){let e=Ze;for(Ze=void 0;e;){let t=e.next;e.next=void 0,e.flags&=-9,e=t}}let e;for(;Xe;){let t=Xe;for(Xe=void 0;t;){let n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(t){e||=t}t=n}}if(e)throw e}function tt(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function nt(e){let t,n=e.depsTail,r=n;for(;r;){let e=r.prevDep;r.version===-1?(r===n&&(n=e),at(r),ot(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=e}e.deps=t,e.depsTail=n}function rt(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(it(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function it(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===mt)||(e.globalVersion=mt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!rt(e))))return;e.flags|=2;let t=e.dep,n=R,r=lt;R=e,lt=!0;try{tt(e);let n=e.fn(e._value);(t.version===0||I(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(e){throw t.version++,e}finally{R=n,lt=r,nt(e),e.flags&=-3}}function at(e,t=!1){let{dep:n,prevSub:r,nextSub:i}=e;if(r&&(r.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let e=n.computed.deps;e;e=e.nextDep)at(e,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function ot(e){let{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}function st(e,t){e.effect instanceof Je&&(e=e.effect.fn);let n=new Je(e);t&&D(n,t);try{n.run()}catch(e){throw n.stop(),e}let r=n.run.bind(n);return r.effect=n,r}function ct(e){e.effect.stop()}var lt=!0,ut=[];function dt(){ut.push(lt),lt=!1}function ft(){let e=ut.pop();lt=e===void 0?!0:e}function pt(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let e=R;R=void 0;try{t()}finally{R=e}}}var mt=0,ht=class{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}},gt=class{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!R||!lt||R===this.computed)return;let t=this.activeLink;if(t===void 0||t.sub!==R)t=this.activeLink=new ht(R,this),R.deps?(t.prevDep=R.depsTail,R.depsTail.nextDep=t,R.depsTail=t):R.deps=R.depsTail=t,_t(t);else if(t.version===-1&&(t.version=this.version,t.nextDep)){let e=t.nextDep;e.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=e),t.prevDep=R.depsTail,t.nextDep=void 0,R.depsTail.nextDep=t,R.depsTail=t,R.deps===t&&(R.deps=e)}return t}trigger(e){this.version++,mt++,this.notify(e)}notify(e){$e();try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{et()}}};function _t(e){if(e.dep.sc++,e.sub.flags&4){let t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let e=t.deps;e;e=e.nextDep)_t(e)}let n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}var vt=new WeakMap,yt=Symbol(``),bt=Symbol(``),xt=Symbol(``);function z(e,t,n){if(lt&&R){let t=vt.get(e);t||vt.set(e,t=new Map);let r=t.get(n);r||(t.set(n,r=new gt),r.map=t,r.key=n),r.track()}}function St(e,t,n,r,i,a){let o=vt.get(e);if(!o){mt++;return}let s=e=>{e&&e.trigger()};if($e(),t===`clear`)o.forEach(s);else{let i=k(e),a=i&&de(n);if(i&&n===`length`){let e=Number(r);o.forEach((t,n)=>{(n===`length`||n===xt||!ae(n)&&n>=e)&&s(t)})}else switch((n!==void 0||o.has(void 0))&&s(o.get(n)),a&&s(o.get(xt)),t){case`add`:i?a&&s(o.get(`length`)):(s(o.get(yt)),ne(e)&&s(o.get(bt)));break;case`delete`:i||(s(o.get(yt)),ne(e)&&s(o.get(bt)));break;case`set`:ne(e)&&s(o.get(yt));break}}et()}function Ct(e,t){let n=vt.get(e);return n&&n.get(t)}function wt(e){let t=V(e);return t===e?t:(z(t,`iterate`,xt),B(e)?t:t.map(gn))}function Tt(e){return z(e=V(e),`iterate`,xt),e}function Et(e,t){return pn(e)?fn(e)?_n(gn(t)):_n(t):gn(t)}var Dt={__proto__:null,[Symbol.iterator](){return Ot(this,Symbol.iterator,e=>Et(this,e))},concat(...e){return wt(this).concat(...e.map(e=>k(e)?wt(e):e))},entries(){return Ot(this,`entries`,e=>(e[1]=Et(this,e[1]),e))},every(e,t){return At(this,`every`,e,t,void 0,arguments)},filter(e,t){return At(this,`filter`,e,t,e=>e.map(e=>Et(this,e)),arguments)},find(e,t){return At(this,`find`,e,t,e=>Et(this,e),arguments)},findIndex(e,t){return At(this,`findIndex`,e,t,void 0,arguments)},findLast(e,t){return At(this,`findLast`,e,t,e=>Et(this,e),arguments)},findLastIndex(e,t){return At(this,`findLastIndex`,e,t,void 0,arguments)},forEach(e,t){return At(this,`forEach`,e,t,void 0,arguments)},includes(...e){return Mt(this,`includes`,e)},indexOf(...e){return Mt(this,`indexOf`,e)},join(e){return wt(this).join(e)},lastIndexOf(...e){return Mt(this,`lastIndexOf`,e)},map(e,t){return At(this,`map`,e,t,void 0,arguments)},pop(){return Nt(this,`pop`)},push(...e){return Nt(this,`push`,e)},reduce(e,...t){return jt(this,`reduce`,e,t)},reduceRight(e,...t){return jt(this,`reduceRight`,e,t)},shift(){return Nt(this,`shift`)},some(e,t){return At(this,`some`,e,t,void 0,arguments)},splice(...e){return Nt(this,`splice`,e)},toReversed(){return wt(this).toReversed()},toSorted(e){return wt(this).toSorted(e)},toSpliced(...e){return wt(this).toSpliced(...e)},unshift(...e){return Nt(this,`unshift`,e)},values(){return Ot(this,`values`,e=>Et(this,e))}};function Ot(e,t,n){let r=Tt(e),i=r[t]();return r!==e&&!B(e)&&(i._next=i.next,i.next=()=>{let e=i._next();return e.done||(e.value=n(e.value)),e}),i}var kt=Array.prototype;function At(e,t,n,r,i,a){let o=Tt(e),s=o!==e&&!B(e),c=o[t];if(c!==kt[t]){let t=c.apply(e,a);return s?gn(t):t}let l=n;o!==e&&(s?l=function(t,r){return n.call(this,Et(e,t),r,e)}:n.length>2&&(l=function(t,r){return n.call(this,t,r,e)}));let u=c.call(o,l,r);return s&&i?i(u):u}function jt(e,t,n,r){let i=Tt(e),a=n;return i!==e&&(B(e)?n.length>3&&(a=function(t,r,i){return n.call(this,t,r,i,e)}):a=function(t,r,i){return n.call(this,t,Et(e,r),i,e)}),i[t](a,...r)}function Mt(e,t,n){let r=V(e);z(r,`iterate`,xt);let i=r[t](...n);return(i===-1||i===!1)&&mn(n[0])?(n[0]=V(n[0]),r[t](...n)):i}function Nt(e,t,n=[]){dt(),$e();let r=V(e)[t].apply(e,n);return et(),ft(),r}var Pt=b(`__proto__,__v_isRef,__isVue`),Ft=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!==`arguments`&&e!==`caller`).map(e=>Symbol[e]).filter(ae));function It(e){ae(e)||(e=String(e));let t=V(this);return z(t,`has`,e),t.hasOwnProperty(e)}var Lt=class{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){if(t===`__v_skip`)return e.__v_skip;let r=this._isReadonly,i=this._isShallow;if(t===`__v_isReactive`)return!r;if(t===`__v_isReadonly`)return r;if(t===`__v_isShallow`)return i;if(t===`__v_raw`)return n===(r?i?rn:nn:i?tn:en).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;let a=k(e);if(!r){let e;if(a&&(e=Dt[t]))return e;if(t===`hasOwnProperty`)return It}let o=Reflect.get(e,t,H(e)?e:n);if((ae(t)?Ft.has(t):Pt(t))||(r||z(e,`get`,t),i))return o;if(H(o)){let e=a&&de(t)?o:o.value;return r&&N(e)?ln(e):e}return N(o)?r?ln(o):sn(o):o}},Rt=class extends Lt{constructor(e=!1){super(!1,e)}set(e,t,n,r){let i=e[t],a=k(e)&&de(t);if(!this._isShallow){let e=pn(i);if(!B(n)&&!pn(n)&&(i=V(i),n=V(n)),!a&&H(i)&&!H(n))return e||(i.value=n),!0}let o=a?Number(t)e,Gt=e=>Reflect.getPrototypeOf(e);function Kt(e,t,n){return function(...r){let i=this.__v_raw,a=V(i),o=ne(a),s=e===`entries`||e===Symbol.iterator&&o,c=e===`keys`&&o,l=i[e](...r),u=n?Wt:t?_n:gn;return!t&&z(a,`iterate`,c?bt:yt),{next(){let{value:e,done:t}=l.next();return t?{value:e,done:t}:{value:s?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}function qt(e){return function(...t){return e===`delete`?!1:e===`clear`?void 0:this}}function Jt(e,t){let n={get(n){let r=this.__v_raw,i=V(r),a=V(n);e||(I(n,a)&&z(i,`get`,n),z(i,`get`,a));let{has:o}=Gt(i),s=t?Wt:e?_n:gn;if(o.call(i,n))return s(r.get(n));if(o.call(i,a))return s(r.get(a));r!==i&&r.get(n)},get size(){let t=this.__v_raw;return!e&&z(V(t),`iterate`,yt),t.size},has(t){let n=this.__v_raw,r=V(n),i=V(t);return e||(I(t,i)&&z(r,`has`,t),z(r,`has`,i)),t===i?n.has(t):n.has(t)||n.has(i)},forEach(n,r){let i=this,a=i.__v_raw,o=V(a),s=t?Wt:e?_n:gn;return!e&&z(o,`iterate`,yt),a.forEach((e,t)=>n.call(r,s(e),s(t),i))}};return D(n,e?{add:qt(`add`),set:qt(`set`),delete:qt(`delete`),clear:qt(`clear`)}:{add(e){!t&&!B(e)&&!pn(e)&&(e=V(e));let n=V(this);return Gt(n).has.call(n,e)||(n.add(e),St(n,`add`,e,e)),this},set(e,n){!t&&!B(n)&&!pn(n)&&(n=V(n));let r=V(this),{has:i,get:a}=Gt(r),o=i.call(r,e);o||=(e=V(e),i.call(r,e));let s=a.call(r,e);return r.set(e,n),o?I(n,s)&&St(r,`set`,e,n,s):St(r,`add`,e,n),this},delete(e){let t=V(this),{has:n,get:r}=Gt(t),i=n.call(t,e);i||=(e=V(e),n.call(t,e));let a=r?r.call(t,e):void 0,o=t.delete(e);return i&&St(t,`delete`,e,void 0,a),o},clear(){let e=V(this),t=e.size!==0,n=e.clear();return t&&St(e,`clear`,void 0,void 0,void 0),n}}),[`keys`,`values`,`entries`,Symbol.iterator].forEach(r=>{n[r]=Kt(r,e,t)}),n}function Yt(e,t){let n=Jt(e,t);return(t,r,i)=>r===`__v_isReactive`?!e:r===`__v_isReadonly`?e:r===`__v_raw`?t:Reflect.get(O(n,r)&&r in t?n:t,r,i)}var Xt={get:Yt(!1,!1)},Zt={get:Yt(!1,!0)},Qt={get:Yt(!0,!1)},$t={get:Yt(!0,!0)},en=new WeakMap,tn=new WeakMap,nn=new WeakMap,rn=new WeakMap;function an(e){switch(e){case`Object`:case`Array`:return 1;case`Map`:case`Set`:case`WeakMap`:case`WeakSet`:return 2;default:return 0}}function on(e){return e.__v_skip||!Object.isExtensible(e)?0:an(le(e))}function sn(e){return pn(e)?e:dn(e,!1,Bt,Xt,en)}function cn(e){return dn(e,!1,Ht,Zt,tn)}function ln(e){return dn(e,!0,Vt,Qt,nn)}function un(e){return dn(e,!0,Ut,$t,rn)}function dn(e,t,n,r,i){if(!N(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;let a=on(e);if(a===0)return e;let o=i.get(e);if(o)return o;let s=new Proxy(e,a===2?r:n);return i.set(e,s),s}function fn(e){return pn(e)?fn(e.__v_raw):!!(e&&e.__v_isReactive)}function pn(e){return!!(e&&e.__v_isReadonly)}function B(e){return!!(e&&e.__v_isShallow)}function mn(e){return e?!!e.__v_raw:!1}function V(e){let t=e&&e.__v_raw;return t?V(t):e}function hn(e){return!O(e,`__v_skip`)&&Object.isExtensible(e)&&ye(e,`__v_skip`,!0),e}var gn=e=>N(e)?sn(e):e,_n=e=>N(e)?ln(e):e;function H(e){return e?e.__v_isRef===!0:!1}function vn(e){return bn(e,!1)}function yn(e){return bn(e,!0)}function bn(e,t){return H(e)?e:new xn(e,t)}var xn=class{constructor(e,t){this.dep=new gt,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:V(e),this._value=t?e:gn(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){let t=this._rawValue,n=this.__v_isShallow||B(e)||pn(e);e=n?e:V(e),I(e,t)&&(this._rawValue=e,this._value=n?e:gn(e),this.dep.trigger())}};function Sn(e){e.dep&&e.dep.trigger()}function Cn(e){return H(e)?e.value:e}function wn(e){return j(e)?e():Cn(e)}var Tn={get:(e,t,n)=>t===`__v_raw`?e:Cn(Reflect.get(e,t,n)),set:(e,t,n,r)=>{let i=e[t];return H(i)&&!H(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function En(e){return fn(e)?e:new Proxy(e,Tn)}var Dn=class{constructor(e){this.__v_isRef=!0,this._value=void 0;let t=this.dep=new gt,{get:n,set:r}=e(t.track.bind(t),t.trigger.bind(t));this._get=n,this._set=r}get value(){return this._value=this._get()}set value(e){this._set(e)}};function On(e){return new Dn(e)}function kn(e){let t=k(e)?Array(e.length):{};for(let n in e)t[n]=Nn(e,n);return t}var An=class{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0,this._raw=V(e);let r=!0,i=e;if(!k(e)||!de(String(t)))do r=!mn(i)||B(i);while(r&&(i=i.__v_raw));this._shallow=r}get value(){let e=this._object[this._key];return this._shallow&&(e=Cn(e)),this._value=e===void 0?this._defaultValue:e}set value(e){if(this._shallow&&H(this._raw[this._key])){let t=this._object[this._key];if(H(t)){t.value=e;return}}this._object[this._key]=e}get dep(){return Ct(this._raw,this._key)}},jn=class{constructor(e){this._getter=e,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}};function Mn(e,t,n){return H(e)?e:j(e)?new jn(e):N(e)&&arguments.length>1?Nn(e,t,n):vn(e)}function Nn(e,t,n){return new An(e,t,n)}var Pn=class{constructor(e,t,n){this.fn=e,this.setter=t,this._value=void 0,this.dep=new gt(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=mt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&R!==this)return Qe(this,!0),!0}get value(){let e=this.dep.track();return it(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}};function Fn(e,t,n=!1){let r,i;return j(e)?r=e:(r=e.get,i=e.set),new Pn(r,i,n)}var In={GET:`get`,HAS:`has`,ITERATE:`iterate`},Ln={SET:`set`,ADD:`add`,DELETE:`delete`,CLEAR:`clear`},Rn={},zn=new WeakMap,Bn=void 0;function Vn(){return Bn}function Hn(e,t=!1,n=Bn){if(n){let t=zn.get(n);t||zn.set(n,t=[]),t.push(e)}}function Un(e,t,n=x){let{immediate:r,deep:i,once:a,scheduler:o,augmentJob:s,call:c}=n,l=e=>i?e:B(e)||i===!1||i===0?Wn(e,1):Wn(e),u,d,f,p,m=!1,h=!1;if(H(e)?(d=()=>e.value,m=B(e)):fn(e)?(d=()=>l(e),m=!0):k(e)?(h=!0,m=e.some(e=>fn(e)||B(e)),d=()=>e.map(e=>{if(H(e))return e.value;if(fn(e))return l(e);if(j(e))return c?c(e,2):e()})):d=j(e)?t?c?()=>c(e,2):e:()=>{if(f){dt();try{f()}finally{ft()}}let t=Bn;Bn=u;try{return c?c(e,3,[p]):e(p)}finally{Bn=t}}:C,t&&i){let e=d,t=i===!0?1/0:i;d=()=>Wn(e(),t)}let g=Ge(),_=()=>{u.stop(),g&&g.active&&ee(g.effects,u)};if(a&&t){let e=t;t=(...t)=>{e(...t),_()}}let v=h?Array(e.length).fill(Rn):Rn,y=e=>{if(!(!(u.flags&1)||!u.dirty&&!e))if(t){let e=u.run();if(i||m||(h?e.some((e,t)=>I(e,v[t])):I(e,v))){f&&f();let n=Bn;Bn=u;try{let n=[e,v===Rn?void 0:h&&v[0]===Rn?[]:v,p];v=e,c?c(t,3,n):t(...n)}finally{Bn=n}}}else u.run()};return s&&s(y),u=new Je(d),u.scheduler=o?()=>o(y,!1):y,p=e=>Hn(e,!1,u),f=u.onStop=()=>{let e=zn.get(u);if(e){if(c)c(e,4);else for(let t of e)t();zn.delete(u)}},t?r?y(!0):v=u.run():o?o(y.bind(null,!0),!0):u.run(),_.pause=u.pause.bind(u),_.resume=u.resume.bind(u),_.stop=_,_}function Wn(e,t=1/0,n){if(t<=0||!N(e)||e.__v_skip||(n||=new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,H(e))Wn(e.value,t,n);else if(k(e))for(let r=0;r{Wn(e,t,n)});else if(ue(e)){for(let r in e)Wn(e[r],t,n);for(let r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Wn(e[r],t,n)}return e}var Gn=[];function Kn(e){Gn.push(e)}function qn(){Gn.pop()}function Jn(e,t){}var Yn={SETUP_FUNCTION:0,0:`SETUP_FUNCTION`,RENDER_FUNCTION:1,1:`RENDER_FUNCTION`,NATIVE_EVENT_HANDLER:5,5:`NATIVE_EVENT_HANDLER`,COMPONENT_EVENT_HANDLER:6,6:`COMPONENT_EVENT_HANDLER`,VNODE_HOOK:7,7:`VNODE_HOOK`,DIRECTIVE_HOOK:8,8:`DIRECTIVE_HOOK`,TRANSITION_HOOK:9,9:`TRANSITION_HOOK`,APP_ERROR_HANDLER:10,10:`APP_ERROR_HANDLER`,APP_WARN_HANDLER:11,11:`APP_WARN_HANDLER`,FUNCTION_REF:12,12:`FUNCTION_REF`,ASYNC_COMPONENT_LOADER:13,13:`ASYNC_COMPONENT_LOADER`,SCHEDULER:14,14:`SCHEDULER`,COMPONENT_UPDATE:15,15:`COMPONENT_UPDATE`,APP_UNMOUNT_CLEANUP:16,16:`APP_UNMOUNT_CLEANUP`},Xn={sp:`serverPrefetch hook`,bc:`beforeCreate hook`,c:`created hook`,bm:`beforeMount hook`,m:`mounted hook`,bu:`beforeUpdate hook`,u:`updated`,bum:`beforeUnmount hook`,um:`unmounted hook`,a:`activated hook`,da:`deactivated hook`,ec:`errorCaptured hook`,rtc:`renderTracked hook`,rtg:`renderTriggered hook`,0:`setup function`,1:`render function`,2:`watcher getter`,3:`watcher callback`,4:`watcher cleanup function`,5:`native event handler`,6:`component event handler`,7:`vnode hook`,8:`directive hook`,9:`transition hook`,10:`app errorHandler`,11:`app warnHandler`,12:`ref function`,13:`async component loader`,14:`scheduler flush`,15:`component update`,16:`app unmount cleanup function`};function Zn(e,t,n,r){try{return r?e(...r):e()}catch(e){$n(e,t,n)}}function Qn(e,t,n,r){if(j(e)){let i=Zn(e,t,n,r);return i&&oe(i)&&i.catch(e=>{$n(e,t,n)}),i}if(k(e)){let i=[];for(let a=0;a>>1,i=U[r],a=mr(i);a=mr(n)?U.push(e):U.splice(cr(t),0,e),e.flags|=1,ur()}}function ur(){or||=ar.then(hr)}function dr(e){k(e)?nr.push(...e):rr&&e.id===-1?rr.splice(ir+1,0,e):e.flags&1||(nr.push(e),e.flags|=1),ur()}function fr(e,t,n=tr+1){for(;nmr(e)-mr(t));if(nr.length=0,rr){rr.push(...e);return}for(rr=e,ir=0;ire.id==null?e.flags&2?-1:1/0:e.id;function hr(e){try{for(tr=0;trgr.emit(e,...t)),_r=[]):typeof window<`u`&&window.HTMLElement&&!(window.navigator?.userAgent)?.includes(`jsdom`)?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(e=>{vr(e,t)}),setTimeout(()=>{gr||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,_r=[])},3e3)):_r=[]}var W=null,yr=null;function br(e){let t=W;return W=e,yr=e&&e.type.__scopeId||null,t}function xr(e){yr=e}function Sr(){yr=null}var Cr=e=>wr;function wr(e,t=W,n){if(!t||e._n)return e;let r=(...n)=>{r._d&&fs(-1);let i=br(t),a;try{a=e(...n)}finally{br(i),r._d&&fs(1)}return a};return r._n=!0,r._c=!0,r._d=!0,r}function Tr(e,t){if(W===null)return e;let n=Qs(W),r=e.dirs||=[];for(let e=0;ee.__isTeleport,kr=e=>e&&(e.disabled||e.disabled===``),Ar=e=>e&&(e.defer||e.defer===``),jr=e=>typeof SVGElement<`u`&&e instanceof SVGElement,Mr=e=>typeof MathMLElement==`function`&&e instanceof MathMLElement,Nr=(e,t)=>{let n=e&&e.to;return M(n)?t?t(n):null:n},Pr={name:`Teleport`,__isTeleport:!0,process(e,t,n,r,i,a,o,s,c,l){let{mc:u,pc:d,pbc:f,o:{insert:p,querySelector:m,createText:h,createComment:g}}=l,_=kr(t.props),{shapeFlag:v,children:y,dynamicChildren:b}=t;if(e==null){let e=t.el=h(``),l=t.anchor=h(``);p(e,n,r),p(l,n,r);let d=(e,t)=>{v&16&&u(y,e,t,i,a,o,s,c)},f=()=>{let e=t.target=Nr(t.props,m),n=zr(e,t,h,p);e&&(o!==`svg`&&jr(e)?o=`svg`:o!==`mathml`&&Mr(e)&&(o=`mathml`),i&&i.isCE&&(i.ce._teleportTargets||(i.ce._teleportTargets=new Set)).add(e),_||(d(e,n),Rr(t,!1)))};_&&(d(n,l),Rr(t,!0)),Ar(t.props)?(t.el.__isMounted=!1,K(()=>{f(),delete t.el.__isMounted},a)):f()}else{if(Ar(t.props)&&e.el.__isMounted===!1){K(()=>{Pr.process(e,t,n,r,i,a,o,s,c,l)},a);return}t.el=e.el,t.targetStart=e.targetStart;let u=t.anchor=e.anchor,p=t.target=e.target,h=t.targetAnchor=e.targetAnchor,g=kr(e.props),v=g?n:p,y=g?u:h;if(o===`svg`||jr(p)?o=`svg`:(o===`mathml`||Mr(p))&&(o=`mathml`),b?(f(e.dynamicChildren,b,v,i,a,o,s),Uo(e,t,!0)):c||d(e,t,v,y,i,a,o,s,!1),_)g?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Fr(t,n,u,l,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){let e=t.target=Nr(t.props,m);e&&Fr(t,e,null,l,0)}else g&&Fr(t,p,h,l,1);Rr(t,_)}},remove(e,t,n,{um:r,o:{remove:i}},a){let{shapeFlag:o,children:s,anchor:c,targetStart:l,targetAnchor:u,target:d,props:f}=e;if(d&&(i(l),i(u)),a&&i(c),o&16){let e=a||!kr(f);for(let i=0;i{e.isMounted=!0}),Wi(()=>{e.isUnmounting=!0}),e}var Ur=[Function,Array],Wr={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ur,onEnter:Ur,onAfterEnter:Ur,onEnterCancelled:Ur,onBeforeLeave:Ur,onLeave:Ur,onAfterLeave:Ur,onLeaveCancelled:Ur,onBeforeAppear:Ur,onAppear:Ur,onAfterAppear:Ur,onAppearCancelled:Ur},Gr=e=>{let t=e.subTree;return t.component?Gr(t.component):t},Kr={name:`BaseTransition`,props:Wr,setup(e,{slots:t}){let n=Q(),r=Hr();return()=>{let i=t.default&&ei(t.default(),!0);if(!i||!i.length)return;let a=qr(i),o=V(e),{mode:s}=o;if(r.isLeaving)return Zr(a);let c=Qr(a);if(!c)return Zr(a);let l=Xr(c,o,r,n,e=>l=e);c.type!==J&&$r(c,l);let u=n.subTree&&Qr(n.subTree);if(u&&u.type!==J&&!_s(u,c)&&Gr(n).type!==J){let e=Xr(u,o,r,n);if($r(u,e),s===`out-in`&&c.type!==J)return r.isLeaving=!0,e.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete e.afterLeave,u=void 0},Zr(a);s===`in-out`&&c.type!==J?e.delayLeave=(e,t,n)=>{let i=Yr(r,u);i[String(u.key)]=u,e[Br]=()=>{t(),e[Br]=void 0,delete l.delayedLeave,u=void 0},l.delayedLeave=()=>{n(),delete l.delayedLeave,u=void 0}}:u=void 0}else u&&=void 0;return a}}};function qr(e){let t=e[0];if(e.length>1){for(let n of e)if(n.type!==J){t=n;break}}return t}var Jr=Kr;function Yr(e,t){let{leavingVNodes:n}=e,r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Xr(e,t,n,r,i){let{appear:a,mode:o,persisted:s=!1,onBeforeEnter:c,onEnter:l,onAfterEnter:u,onEnterCancelled:d,onBeforeLeave:f,onLeave:p,onAfterLeave:m,onLeaveCancelled:h,onBeforeAppear:g,onAppear:_,onAfterAppear:v,onAppearCancelled:y}=t,b=String(e.key),x=Yr(n,e),S=(e,t)=>{e&&Qn(e,r,9,t)},C=(e,t)=>{let n=t[1];S(e,t),k(e)?e.every(e=>e.length<=1)&&n():e.length<=1&&n()},w={mode:o,persisted:s,beforeEnter(t){let r=c;if(!n.isMounted)if(a)r=g||c;else return;t[Br]&&t[Br](!0);let i=x[b];i&&_s(e,i)&&i.el[Br]&&i.el[Br](),S(r,[t])},enter(e){let t=l,r=u,i=d;if(!n.isMounted)if(a)t=_||l,r=v||u,i=y||d;else return;let o=!1,s=e[Vr]=t=>{o||(o=!0,S(t?i:r,[e]),w.delayedLeave&&w.delayedLeave(),e[Vr]=void 0)};t?C(t,[e,s]):s()},leave(t,r){let i=String(e.key);if(t[Vr]&&t[Vr](!0),n.isUnmounting)return r();S(f,[t]);let a=!1,o=t[Br]=n=>{a||(a=!0,r(),S(n?h:m,[t]),t[Br]=void 0,x[i]===e&&delete x[i])};x[i]=e,p?C(p,[t,o]):o()},clone(e){let a=Xr(e,t,n,r,i);return i&&i(a),a}};return w}function Zr(e){if(ki(e))return e=ws(e),e.children=null,e}function Qr(e){if(!ki(e))return Or(e.type)&&e.children?qr(e.children):e;if(e.component)return e.component.subTree;let{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&j(n.default))return n.default()}}function $r(e,t){e.shapeFlag&6&&e.component?(e.transition=t,$r(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ei(e,t=!1,n){let r=[],i=0;for(let a=0;a1)for(let e=0;eD({name:e.name},t,{setup:e}))():e}function ni(){let e=Q();return e?(e.appContext.config.idPrefix||`v`)+`-`+e.ids[0]+ e.ids[1]++:``}function ri(e){e.ids=[e.ids[0]+ e.ids[2]+++`-`,0,0]}function ii(e){let t=Q(),n=yn(null);if(t){let r=t.refs===x?t.refs={}:t.refs;Object.defineProperty(r,e,{enumerable:!0,get:()=>n.value,set:e=>n.value=e})}return n}var ai=new WeakMap;function oi(e,t,n,r,i=!1){if(k(e)){e.forEach((e,a)=>oi(e,t&&(k(t)?t[a]:t),n,r,i));return}if(Ei(r)&&!i){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&oi(e,t,n,r.component.subTree);return}let a=r.shapeFlag&4?Qs(r.component):r.el,o=i?null:a,{i:s,r:c}=e,l=t&&t.r,u=s.refs===x?s.refs={}:s.refs,d=s.setupState,f=V(d),p=d===x?w:e=>O(f,e),m=e=>!0;if(l!=null&&l!==c){if(si(t),M(l))u[l]=null,p(l)&&(d[l]=null);else if(H(l)){m(l)&&(l.value=null);let e=t;e.k&&(u[e.k]=null)}}if(j(c))Zn(c,s,12,[o,u]);else{let t=M(c),r=H(c);if(t||r){let s=()=>{if(e.f){let n=t?p(c)?d[c]:u[c]:m(c)||!e.k?c.value:u[e.k];if(i)k(n)&&ee(n,a);else if(k(n))n.includes(a)||n.push(a);else if(t)u[c]=[a],p(c)&&(d[c]=u[c]);else{let t=[a];m(c)&&(c.value=t),e.k&&(u[e.k]=t)}}else t?(u[c]=o,p(c)&&(d[c]=o)):r&&(m(c)&&(c.value=o),e.k&&(u[e.k]=o))};if(o){let t=()=>{s(),ai.delete(e)};t.id=-1,ai.set(e,t),K(t,n)}else si(e),s()}}}function si(e){let t=ai.get(e);t&&(t.flags|=8,ai.delete(e))}var ci=!1,li=()=>{ci||=(console.error(`Hydration completed but contains mismatches.`),!0)},ui=e=>e.namespaceURI.includes(`svg`)&&e.tagName!==`foreignObject`,di=e=>e.namespaceURI.includes(`MathML`),fi=e=>{if(e.nodeType===1){if(ui(e))return`svg`;if(di(e))return`mathml`}},pi=e=>e.nodeType===8;function mi(e){let{mt:t,p:n,o:{patchProp:r,createText:i,nextSibling:a,parentNode:o,remove:s,insert:c,createComment:l}}=e,u=(e,t)=>{if(!t.hasChildNodes()){n(null,e,t),pr(),t._vnode=e;return}d(t.firstChild,e,null,null,null),pr(),t._vnode=e},d=(n,r,s,l,u,y=!1)=>{y||=!!r.dynamicChildren;let b=pi(n)&&n.data===`[`,x=()=>h(n,r,s,l,u,b),{type:S,ref:C,shapeFlag:w,patchFlag:T}=r,E=n.nodeType;r.el=n,T===-2&&(y=!1,r.dynamicChildren=null);let D=null;switch(S){case os:E===3?(n.data!==r.children&&(li(),n.data=r.children),D=a(n)):r.children===``?(c(r.el=i(``),o(n),n),D=n):D=x();break;case J:v(n)?(D=a(n),_(r.el=n.content.firstChild,n,s)):D=E!==8||b?x():a(n);break;case ss:if(b&&(n=a(n),E=n.nodeType),E===1||E===3){D=n;let e=!r.children.length;for(let t=0;t{o||=!!t.dynamicChildren;let{type:c,props:l,patchFlag:u,shapeFlag:d,dirs:f,transition:m}=t,h=c===`input`||c===`option`;if(h||u!==-1){f&&Er(t,null,n,`created`);let c=!1;if(v(e)){c=Ho(null,m)&&n&&n.vnode.props&&n.vnode.props.appear;let r=e.content.firstChild;if(c){let e=r.getAttribute(`class`);e&&(r.$cls=e),m.beforeEnter(r)}_(r,e,n),t.el=e=r}if(d&16&&!(l&&(l.innerHTML||l.textContent))){let r=p(e.firstChild,t,e,n,i,a,o);for(;r;){_i(e,1)||li();let t=r;r=r.nextSibling,s(t)}}else if(d&8){let n=t.children;n[0]===` +`&&(e.tagName===`PRE`||e.tagName===`TEXTAREA`)&&(n=n.slice(1));let{textContent:r}=e;r!==n&&r!==n.replace(/\r\n|\r/g,` +`)&&(_i(e,0)||li(),e.textContent=t.children)}if(l){if(h||!o||u&48){let t=e.tagName.includes(`-`);for(let i in l)(h&&(i.endsWith(`value`)||i===`indeterminate`)||T(i)&&!fe(i)||i[0]===`.`||t)&&r(e,i,null,l[i],void 0,n)}else if(l.onClick)r(e,`onClick`,null,l.onClick,void 0,n);else if(u&4&&fn(l.style))for(let e in l.style)l.style[e]}let g;(g=l&&l.onVnodeBeforeMount)&&Ms(g,n,t),f&&Er(t,null,n,`beforeMount`),((g=l&&l.onVnodeMounted)||f||c)&&rs(()=>{g&&Ms(g,n,t),c&&m.enter(e),f&&Er(t,null,n,`mounted`)},i)}return e.nextSibling},p=(e,t,r,o,s,l,u)=>{u||=!!t.dynamicChildren;let f=t.children,p=f.length;for(let t=0;t{let{slotScopeIds:u}=t;u&&(i=i?i.concat(u):u);let d=o(e),f=p(a(e),t,d,n,r,i,s);return f&&pi(f)&&f.data===`]`?a(t.anchor=f):(li(),c(t.anchor=l(`]`),d,f),f)},h=(e,t,r,i,c,l)=>{if(_i(e.parentElement,1)||li(),t.el=null,l){let t=g(e);for(;;){let n=a(e);if(n&&n!==t)s(n);else break}}let u=a(e),d=o(e);return s(e),n(null,t,d,u,r,i,fi(d),c),r&&(r.vnode.el=t.el,vo(r,t.el)),u},g=(e,t=`[`,n=`]`)=>{let r=0;for(;e;)if(e=a(e),e&&pi(e)&&(e.data===t&&r++,e.data===n)){if(r===0)return a(e);r--}return e},_=(e,t,n)=>{let r=t.parentNode;r&&r.replaceChild(e,t);let i=n;for(;i;)i.vnode.el===t&&(i.vnode.el=i.subTree.el=e),i=i.parent},v=e=>e.nodeType===1&&e.tagName===`TEMPLATE`;return[u,d]}var hi=`data-allow-mismatch`,gi={0:`text`,1:`children`,2:`class`,3:`style`,4:`attribute`};function _i(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(hi);)e=e.parentElement;let n=e&&e.getAttribute(hi);if(n==null)return!1;if(n===``)return!0;{let e=n.split(`,`);return t===0&&e.includes(`children`)?!0:e.includes(gi[t])}}var vi=Ce().requestIdleCallback||(e=>setTimeout(e,1)),yi=Ce().cancelIdleCallback||(e=>clearTimeout(e)),bi=(e=1e4)=>t=>{let n=vi(t,{timeout:e});return()=>yi(n)};function xi(e){let{top:t,left:n,bottom:r,right:i}=e.getBoundingClientRect(),{innerHeight:a,innerWidth:o}=window;return(t>0&&t0&&r0&&n0&&i(t,n)=>{let r=new IntersectionObserver(e=>{for(let n of e)if(n.isIntersecting){r.disconnect(),t();break}},e);return n(e=>{if(e instanceof Element){if(xi(e))return t(),r.disconnect(),!1;r.observe(e)}}),()=>r.disconnect()},Ci=e=>t=>{if(e){let n=matchMedia(e);if(n.matches)t();else return n.addEventListener(`change`,t,{once:!0}),()=>n.removeEventListener(`change`,t)}},wi=(e=[])=>(t,n)=>{M(e)&&(e=[e]);let r=!1,i=e=>{r||(r=!0,a(),t(),e.target.dispatchEvent(new e.constructor(e.type,e)))},a=()=>{n(t=>{for(let n of e)t.removeEventListener(n,i)})};return n(t=>{for(let n of e)t.addEventListener(n,i,{once:!0})}),a};function Ti(e,t){if(pi(e)&&e.data===`[`){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(pi(r))if(r.data===`]`){if(--n===0)break}else r.data===`[`&&n++;r=r.nextSibling}}else t(e)}var Ei=e=>!!e.type.__asyncLoader;function Di(e){j(e)&&(e={loader:e});let{loader:t,loadingComponent:n,errorComponent:r,delay:i=200,hydrate:a,timeout:o,suspensible:s=!0,onError:c}=e,l=null,u,d=0,f=()=>(d++,l=null,p()),p=()=>{let e;return l||(e=l=t().catch(e=>{if(e=e instanceof Error?e:Error(String(e)),c)return new Promise((t,n)=>{c(e,()=>t(f()),()=>n(e),d+1)});throw e}).then(t=>e!==l&&l?l:(t&&(t.__esModule||t[Symbol.toStringTag]===`Module`)&&(t=t.default),u=t,t)))};return ti({name:`AsyncComponentWrapper`,__asyncLoader:p,__asyncHydrate(e,t,n){let r=!1;(t.bu||=[]).push(()=>r=!0);let i=()=>{r||n()},o=a?()=>{let n=a(i,t=>Ti(e,t));n&&(t.bum||=[]).push(n)}:i;u?o():p().then(()=>!t.isUnmounted&&o())},get __asyncResolved(){return u},setup(){let e=Z;if(ri(e),u)return()=>Oi(u,e);let t=t=>{l=null,$n(t,e,13,!r)};if(s&&e.suspense||Vs)return p().then(t=>()=>Oi(t,e)).catch(e=>(t(e),()=>r?X(r,{error:e}):null));let a=vn(!1),c=vn(),d=vn(!!i);return i&&setTimeout(()=>{d.value=!1},i),o!=null&&setTimeout(()=>{if(!a.value&&!c.value){let e=Error(`Async component timed out after ${o}ms.`);t(e),c.value=e}},o),p().then(()=>{a.value=!0,e.parent&&ki(e.parent.vnode)&&e.parent.update()}).catch(e=>{t(e),c.value=e}),()=>{if(a.value&&u)return Oi(u,e);if(c.value&&r)return X(r,{error:c.value});if(n&&!d.value)return Oi(n,e)}}})}function Oi(e,t){let{ref:n,props:r,children:i,ce:a}=t.vnode,o=X(e,r,i);return o.ref=n,o.ce=a,delete t.vnode.ce,o}var ki=e=>e.type.__isKeepAlive,Ai={name:`KeepAlive`,__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){let n=Q(),r=n.ctx;if(!r.renderer)return()=>{let e=t.default&&t.default();return e&&e.length===1?e[0]:e};let i=new Map,a=new Set,o=null,s=n.suspense,{renderer:{p:c,m:l,um:u,o:{createElement:d}}}=r,f=d(`div`);r.activate=(e,t,n,r,i)=>{let a=e.component;l(e,t,n,0,s),c(a.vnode,e,t,n,a,s,r,e.slotScopeIds,i),K(()=>{a.isDeactivated=!1,a.a&&ve(a.a);let t=e.props&&e.props.onVnodeMounted;t&&Ms(t,a.parent,e)},s)},r.deactivate=e=>{let t=e.component;Ko(t.m),Ko(t.a),l(e,f,null,1,s),K(()=>{t.da&&ve(t.da);let n=e.props&&e.props.onVnodeUnmounted;n&&Ms(n,t.parent,e),t.isDeactivated=!0},s)};function p(e){Ii(e),u(e,n,s,!0)}function m(e){i.forEach((t,n)=>{let r=$s(t.type);r&&!e(r)&&h(n)})}function h(e){let t=i.get(e);t&&(!o||!_s(t,o))?p(t):o&&Ii(o),i.delete(e),a.delete(e)}to(()=>[e.include,e.exclude],([e,t])=>{e&&m(t=>ji(e,t)),t&&m(e=>!ji(t,e))},{flush:`post`,deep:!0});let g=null,_=()=>{g!=null&&(qo(n.subTree.type)?K(()=>{i.set(g,Li(n.subTree))},n.subTree.suspense):i.set(g,Li(n.subTree)))};return Vi(_),Ui(_),Wi(()=>{i.forEach(e=>{let{subTree:t,suspense:r}=n,i=Li(t);if(e.type===i.type&&e.key===i.key){Ii(i);let e=i.component.da;e&&K(e,r);return}p(e)})}),()=>{if(g=null,!t.default)return o=null;let n=t.default(),r=n[0];if(n.length>1)return o=null,n;if(!gs(r)||!(r.shapeFlag&4)&&!(r.shapeFlag&128))return o=null,r;let s=Li(r);if(s.type===J)return o=null,s;let c=s.type,l=$s(Ei(s)?s.type.__asyncResolved||{}:c),{include:u,exclude:d,max:f}=e;if(u&&(!l||!ji(u,l))||d&&l&&ji(d,l))return s.shapeFlag&=-257,o=s,r;let p=s.key==null?c:s.key,m=i.get(p);return s.el&&(s=ws(s),r.shapeFlag&128&&(r.ssContent=s)),g=p,m?(s.el=m.el,s.component=m.component,s.transition&&$r(s,s.transition),s.shapeFlag|=512,a.delete(p),a.add(p)):(a.add(p),f&&a.size>parseInt(f,10)&&h(a.values().next().value)),s.shapeFlag|=256,o=s,qo(r.type)?r:s}}};function ji(e,t){return k(e)?e.some(e=>ji(e,t)):M(e)?e.split(`,`).includes(t):ie(e)?(e.lastIndex=0,e.test(t)):!1}function Mi(e,t){Pi(e,`a`,t)}function Ni(e,t){Pi(e,`da`,t)}function Pi(e,t,n=Z){let r=e.__wdc||=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()};if(Ri(t,r,n),n){let e=n.parent;for(;e&&e.parent;)ki(e.parent.vnode)&&Fi(r,t,n,e),e=e.parent}}function Fi(e,t,n,r){let i=Ri(t,e,r,!0);Gi(()=>{ee(r[t],i)},n)}function Ii(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Li(e){return e.shapeFlag&128?e.ssContent:e}function Ri(e,t,n=Z,r=!1){if(n){let i=n[e]||(n[e]=[]),a=t.__weh||=(...r)=>{dt();let i=Rs(n),a=Qn(t,n,e,r);return i(),ft(),a};return r?i.unshift(a):i.push(a),a}}var zi=e=>(t,n=Z)=>{(!Vs||e===`sp`)&&Ri(e,(...e)=>t(...e),n)},Bi=zi(`bm`),Vi=zi(`m`),Hi=zi(`bu`),Ui=zi(`u`),Wi=zi(`bum`),Gi=zi(`um`),Ki=zi(`sp`),qi=zi(`rtg`),Ji=zi(`rtc`);function Yi(e,t=Z){Ri(`ec`,e,t)}var Xi=`components`,Zi=`directives`;function Qi(e,t){return na(Xi,e,!0,t)||e}var $i=Symbol.for(`v-ndc`);function ea(e){return M(e)?na(Xi,e,!1)||e:e||$i}function ta(e){return na(Zi,e)}function na(e,t,n=!0,r=!1){let i=W||Z;if(i){let n=i.type;if(e===Xi){let e=$s(n,!1);if(e&&(e===t||e===P(t)||e===ge(P(t))))return n}let a=ra(i[e]||n[e],t)||ra(i.appContext[e],t);return!a&&r?n:a}}function ra(e,t){return e&&(e[t]||e[P(t)]||e[ge(P(t))])}function ia(e,t,n,r){let i,a=n&&n[r],o=k(e);if(o||M(e)){let n=o&&fn(e),r=!1,s=!1;n&&(r=!B(e),s=pn(e),e=Tt(e)),i=Array(e.length);for(let n=0,o=e.length;nt(e,n,void 0,a&&a[n]));else{let n=Object.keys(e);i=Array(n.length);for(let r=0,o=n.length;r{let t=r.fn(...e);return t&&(t.key=r.key),t}:r.fn)}return e}function oa(e,t,n={},r,i){if(W.ce||W.parent&&Ei(W.parent)&&W.parent.ce){let e=Object.keys(n).length>0;return t!==`default`&&(n.name=t),ls(),hs(q,null,[X(`slot`,n,r&&r())],e?-2:64)}let a=e[t];a&&a._c&&(a._d=!1),ls();let o=a&&sa(a(n)),s=n.key||o&&o.key,c=hs(q,{key:(s&&!ae(s)?s:`_${t}`)+(!o&&r?`_fb`:``)},o||(r?r():[]),o&&e._===1?64:-2);return!i&&c.scopeId&&(c.slotScopeIds=[c.scopeId+`-s`]),a&&a._c&&(a._d=!0),c}function sa(e){return e.some(e=>gs(e)?!(e.type===J||e.type===q&&!sa(e.children)):!0)?e:null}function ca(e,t){let n={};for(let r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:_e(r)]=e[r];return n}var la=e=>e?Bs(e)?Qs(e):la(e.parent):null,ua=D(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>la(e.parent),$root:e=>la(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Pa(e),$forceUpdate:e=>e.f||=()=>{lr(e.update)},$nextTick:e=>e.n||=sr.bind(e.proxy),$watch:e=>ro.bind(e)}),da=(e,t)=>e!==x&&!e.__isScriptSetup&&O(e,t),fa={get({_:e},t){if(t===`__v_skip`)return!0;let{ctx:n,setupState:r,data:i,props:a,accessCache:o,type:s,appContext:c}=e;if(t[0]!==`$`){let e=o[t];if(e!==void 0)switch(e){case 1:return r[t];case 2:return i[t];case 4:return n[t];case 3:return a[t]}else if(da(r,t))return o[t]=1,r[t];else if(i!==x&&O(i,t))return o[t]=2,i[t];else if(O(a,t))return o[t]=3,a[t];else if(n!==x&&O(n,t))return o[t]=4,n[t];else ka&&(o[t]=0)}let l=ua[t],u,d;if(l)return t===`$attrs`&&z(e.attrs,`get`,``),l(e);if((u=s.__cssModules)&&(u=u[t]))return u;if(n!==x&&O(n,t))return o[t]=4,n[t];if(d=c.config.globalProperties,O(d,t))return d[t]},set({_:e},t,n){let{data:r,setupState:i,ctx:a}=e;return da(i,t)?(i[t]=n,!0):r!==x&&O(r,t)?(r[t]=n,!0):O(e.props,t)||t[0]===`$`&&t.slice(1)in e?!1:(a[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:i,props:a,type:o}},s){let c;return!!(n[s]||e!==x&&s[0]!==`$`&&O(e,s)||da(t,s)||O(a,s)||O(r,s)||O(ua,s)||O(i.config.globalProperties,s)||(c=o.__cssModules)&&c[s])},defineProperty(e,t,n){return n.get==null?O(n,`value`)&&this.set(e,t,n.value,null):e._.accessCache[t]=0,Reflect.defineProperty(e,t,n)}},pa=D({},fa,{get(e,t){if(t!==Symbol.unscopables)return fa.get(e,t,e)},has(e,t){return t[0]!==`_`&&!we(t)}});function ma(){return null}function ha(){return null}function ga(e){}function _a(e){}function va(){return null}function ya(){}function ba(e,t){return null}function xa(){return Ca(`useSlots`).slots}function Sa(){return Ca(`useAttrs`).attrs}function Ca(e){let t=Q();return t.setupContext||=Zs(t)}function wa(e){return k(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e}function Ta(e,t){let n=wa(e);for(let e in t){if(e.startsWith(`__skip`))continue;let r=n[e];r?k(r)||j(r)?r=n[e]={type:r,default:t[e]}:r.default=t[e]:r===null&&(r=n[e]={default:t[e]}),r&&t[`__skip_${e}`]&&(r.skipFactory=!0)}return n}function Ea(e,t){return!e||!t?e||t:k(e)&&k(t)?e.concat(t):D({},wa(e),wa(t))}function Da(e,t){let n={};for(let r in e)t.includes(r)||Object.defineProperty(n,r,{enumerable:!0,get:()=>e[r]});return n}function Oa(e){let t=Q(),n=e();return zs(),oe(n)&&(n=n.catch(e=>{throw Rs(t),e})),[n,()=>Rs(t)]}var ka=!0;function Aa(e){let t=Pa(e),n=e.proxy,r=e.ctx;ka=!1,t.beforeCreate&&Ma(t.beforeCreate,e,`bc`);let{data:i,computed:a,methods:o,watch:s,provide:c,inject:l,created:u,beforeMount:d,mounted:f,beforeUpdate:p,updated:m,activated:h,deactivated:g,beforeDestroy:_,beforeUnmount:v,destroyed:y,unmounted:b,render:x,renderTracked:S,renderTriggered:w,errorCaptured:T,serverPrefetch:E,expose:D,inheritAttrs:ee,components:te,directives:O,filters:ne}=t;if(l&&ja(l,r,null),o)for(let e in o){let t=o[e];j(t)&&(r[e]=t.bind(n))}if(i){let t=i.call(n,n);N(t)&&(e.data=sn(t))}if(ka=!0,a)for(let e in a){let t=a[e],i=tc({get:j(t)?t.bind(n,n):j(t.get)?t.get.bind(n,n):C,set:!j(t)&&j(t.set)?t.set.bind(n):C});Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e})}if(s)for(let e in s)Na(s[e],r,n,e);if(c){let e=j(c)?c.call(n):c;Reflect.ownKeys(e).forEach(t=>{qa(t,e[t])})}u&&Ma(u,e,`c`);function A(e,t){k(t)?t.forEach(t=>e(t.bind(n))):t&&e(t.bind(n))}if(A(Bi,d),A(Vi,f),A(Hi,p),A(Ui,m),A(Mi,h),A(Ni,g),A(Yi,T),A(Ji,S),A(qi,w),A(Wi,v),A(Gi,b),A(Ki,E),k(D))if(D.length){let t=e.exposed||={};D.forEach(e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t,enumerable:!0})})}else e.exposed||={};x&&e.render===C&&(e.render=x),ee!=null&&(e.inheritAttrs=ee),te&&(e.components=te),O&&(e.directives=O),E&&ri(e)}function ja(e,t,n=C){for(let n in k(e)&&(e=za(e)),e){let r=e[n],i;i=N(r)?`default`in r?Ja(r.from||n,r.default,!0):Ja(r.from||n):Ja(r),H(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):t[n]=i}}function Ma(e,t,n){Qn(k(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function Na(e,t,n,r){let i=r.includes(`.`)?io(n,r):()=>n[r];if(M(e)){let n=t[e];j(n)&&to(i,n)}else if(j(e))to(i,e.bind(n));else if(N(e))if(k(e))e.forEach(e=>Na(e,t,n,r));else{let r=j(e.handler)?e.handler.bind(n):t[e.handler];j(r)&&to(i,r,e)}}function Pa(e){let t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCache:a,config:{optionMergeStrategies:o}}=e.appContext,s=a.get(t),c;return s?c=s:!i.length&&!n&&!r?c=t:(c={},i.length&&i.forEach(e=>Fa(c,e,o,!0)),Fa(c,t,o)),N(t)&&a.set(t,c),c}function Fa(e,t,n,r=!1){let{mixins:i,extends:a}=t;for(let o in a&&Fa(e,a,n,!0),i&&i.forEach(t=>Fa(e,t,n,!0)),t)if(!(r&&o===`expose`)){let r=Ia[o]||n&&n[o];e[o]=r?r(e[o],t[o]):t[o]}return e}var Ia={data:La,props:Va,emits:Va,methods:Ba,computed:Ba,beforeCreate:G,created:G,beforeMount:G,mounted:G,beforeUpdate:G,updated:G,beforeDestroy:G,beforeUnmount:G,destroyed:G,unmounted:G,activated:G,deactivated:G,errorCaptured:G,serverPrefetch:G,components:Ba,directives:Ba,watch:Ha,provide:La,inject:Ra};function La(e,t){return t?e?function(){return D(j(e)?e.call(this,this):e,j(t)?t.call(this,this):t)}:t:e}function Ra(e,t){return Ba(za(e),za(t))}function za(e){if(k(e)){let t={};for(let n=0;n1)return n&&j(t)?t.call(r&&r.proxy):t}}function Ya(){return!!(Q()||Ka)}var Xa=Symbol.for(`v-scx`),Za=()=>Ja(Xa);function Qa(e,t){return no(e,null,t)}function $a(e,t){return no(e,null,{flush:`post`})}function eo(e,t){return no(e,null,{flush:`sync`})}function to(e,t,n){return no(e,t,n)}function no(e,t,n=x){let{immediate:r,deep:i,flush:a,once:o}=n,s=D({},n),c=t&&r||!t&&a!==`post`,l;if(Vs){if(a===`sync`){let e=Za();l=e.__watcherHandles||=[]}else if(!c){let e=()=>{};return e.stop=C,e.resume=C,e.pause=C,e}}let u=Z;s.call=(e,t,n)=>Qn(e,u,t,n);let d=!1;a===`post`?s.scheduler=e=>{K(e,u&&u.suspense)}:a!==`sync`&&(d=!0,s.scheduler=(e,t)=>{t?e():lr(e)}),s.augmentJob=e=>{t&&(e.flags|=4),d&&(e.flags|=2,u&&(e.id=u.uid,e.i=u))};let f=Un(e,t,s);return Vs&&(l?l.push(f):c&&f()),f}function ro(e,t,n){let r=this.proxy,i=M(e)?e.includes(`.`)?io(r,e):()=>r[e]:e.bind(r,r),a;j(t)?a=t:(a=t.handler,n=t);let o=Rs(this),s=no(i,a.bind(r),n);return o(),s}function io(e,t){let n=t.split(`.`);return()=>{let t=e;for(let e=0;e{let c,l=x,u;return eo(()=>{let t=e[i];I(c,t)&&(c=t,s())}),{get(){return o(),n.get?n.get(c):c},set(e){let o=n.set?n.set(e):e;if(!I(o,c)&&!(l!==x&&I(e,l)))return;let d=r.vnode.props;d&&(t in d||i in d||a in d)&&(`onUpdate:${t}`in d||`onUpdate:${i}`in d||`onUpdate:${a}`in d)||(c=e,s()),r.emit(`update:${t}`,o),I(e,o)&&I(e,l)&&!I(o,u)&&s(),l=e,u=o}}});return s[Symbol.iterator]=()=>{let e=0;return{next(){return e<2?{value:e++?o||x:s,done:!1}:{done:!0}}}},s}var oo=(e,t)=>t===`modelValue`||t===`model-value`?e.modelModifiers:e[`${t}Modifiers`]||e[`${P(t)}Modifiers`]||e[`${F(t)}Modifiers`];function so(e,t,...n){if(e.isUnmounted)return;let r=e.vnode.props||x,i=n,a=t.startsWith(`update:`),o=a&&oo(r,t.slice(7));o&&(o.trim&&(i=n.map(e=>M(e)?e.trim():e)),o.number&&(i=n.map(be)));let s,c=r[s=_e(t)]||r[s=_e(P(t))];!c&&a&&(c=r[s=_e(F(t))]),c&&Qn(c,e,6,i);let l=r[s+`Once`];if(l){if(!e.emitted)e.emitted={};else if(e.emitted[s])return;e.emitted[s]=!0,Qn(l,e,6,i)}}var co=new WeakMap;function lo(e,t,n=!1){let r=n?co:t.emitsCache,i=r.get(e);if(i!==void 0)return i;let a=e.emits,o={},s=!1;if(!j(e)){let r=e=>{let n=lo(e,t,!0);n&&(s=!0,D(o,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return!a&&!s?(N(e)&&r.set(e,null),null):(k(a)?a.forEach(e=>o[e]=null):D(o,a),N(e)&&r.set(e,o),o)}function uo(e,t){return!e||!T(t)?!1:(t=t.slice(2).replace(/Once$/,``),O(e,t[0].toLowerCase()+t.slice(1))||O(e,F(t))||O(e,t))}function fo(e){let{type:t,vnode:n,proxy:r,withProxy:i,propsOptions:[a],slots:o,attrs:s,emit:c,render:l,renderCache:u,props:d,data:f,setupState:p,ctx:m,inheritAttrs:h}=e,g=br(e),_,v;try{if(n.shapeFlag&4){let e=i||r,t=e;_=Os(l.call(t,e,u,d,p,f,m)),v=s}else{let e=t;_=Os(e.length>1?e(d,{attrs:s,slots:o,emit:c}):e(d,null)),v=t.props?s:mo(s)}}catch(t){cs.length=0,$n(t,e,1),_=X(J)}let y=_;if(v&&h!==!1){let e=Object.keys(v),{shapeFlag:t}=y;e.length&&t&7&&(a&&e.some(E)&&(v=ho(v,a)),y=ws(y,v,!1,!0))}return n.dirs&&(y=ws(y,null,!1,!0),y.dirs=y.dirs?y.dirs.concat(n.dirs):n.dirs),n.transition&&$r(y,n.transition),_=y,br(g),_}function po(e,t=!0){let n;for(let t=0;t{let t;for(let n in e)(n===`class`||n===`style`||T(n))&&((t||={})[n]=e[n]);return t},ho=(e,t)=>{let n={};for(let r in e)(!E(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function go(e,t,n){let{props:r,children:i,component:a}=e,{props:o,children:s,patchFlag:c}=t,l=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?_o(r,o,l):!!o;if(c&8){let e=t.dynamicProps;for(let t=0;tObject.create(yo),xo=e=>Object.getPrototypeOf(e)===yo;function So(e,t,n,r=!1){let i={},a=bo();for(let n in e.propsDefaults=Object.create(null),wo(e,t,i,a),e.propsOptions[0])n in i||(i[n]=void 0);n?e.props=r?i:cn(i):e.type.props?e.props=i:e.props=a,e.attrs=a}function Co(e,t,n,r){let{props:i,attrs:a,vnode:{patchFlag:o}}=e,s=V(i),[c]=e.propsOptions,l=!1;if((r||o>0)&&!(o&16)){if(o&8){let n=e.vnode.dynamicProps;for(let r=0;r{c=!0;let[n,r]=Do(e,t,!0);D(o,n),r&&s.push(...r)};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}if(!a&&!c)return N(e)&&r.set(e,S),S;if(k(a))for(let e=0;ee===`_`||e===`_ctx`||e===`$stable`,Ao=e=>k(e)?e.map(Os):[Os(e)],jo=(e,t,n)=>{if(t._n)return t;let r=wr((...e)=>Ao(t(...e)),n);return r._c=!1,r},Mo=(e,t,n)=>{let r=e._ctx;for(let n in e){if(ko(n))continue;let i=e[n];if(j(i))t[n]=jo(n,i,r);else if(i!=null){let e=Ao(i);t[n]=()=>e}}},No=(e,t)=>{let n=Ao(t);e.slots.default=()=>n},Po=(e,t,n)=>{for(let r in t)(n||!ko(r))&&(e[r]=t[r])},Fo=(e,t,n)=>{let r=e.slots=bo();if(e.vnode.shapeFlag&32){let e=t._;e?(Po(r,t,n),n&&ye(r,`_`,e,!0)):Mo(t,r)}else t&&No(e,t)},Io=(e,t,n)=>{let{vnode:r,slots:i}=e,a=!0,o=x;if(r.shapeFlag&32){let e=t._;e?n&&e===1?a=!1:Po(i,t,n):(a=!t.$stable,Mo(t,i)),o=t}else t&&(No(e,t),o={default:1});if(a)for(let e in i)!ko(e)&&o[e]==null&&delete i[e]},K=rs;function Lo(e){return zo(e)}function Ro(e){return zo(e,mi)}function zo(e,t){let n=Ce();n.__VUE__=!0;let{insert:r,remove:i,patchProp:a,createElement:o,createText:s,createComment:c,setText:l,setElementText:u,parentNode:d,nextSibling:f,setScopeId:p=C,insertStaticContent:m}=e,h=(e,t,n,r=null,i=null,a=null,o=void 0,s=null,c=!!t.dynamicChildren)=>{if(e===t)return;e&&!_s(e,t)&&(r=pe(e),se(e,i,a,!0),e=null),t.patchFlag===-2&&(c=!1,t.dynamicChildren=null);let{type:l,ref:u,shapeFlag:d}=t;switch(l){case os:g(e,t,n,r);break;case J:_(e,t,n,r);break;case ss:e??v(t,n,r,o);break;case q:k(e,t,n,r,i,a,o,s,c);break;default:d&1?w(e,t,n,r,i,a,o,s,c):d&6?ne(e,t,n,r,i,a,o,s,c):(d&64||d&128)&&l.process(e,t,n,r,i,a,o,s,c,he)}u!=null&&i?oi(u,e&&e.ref,a,t||e,!t):u==null&&e&&e.ref!=null&&oi(e.ref,null,a,e,!0)},g=(e,t,n,i)=>{if(e==null)r(t.el=s(t.children),n,i);else{let n=t.el=e.el;t.children!==e.children&&l(n,t.children)}},_=(e,t,n,i)=>{e==null?r(t.el=c(t.children||``),n,i):t.el=e.el},v=(e,t,n,r)=>{[e.el,e.anchor]=m(e.children,t,n,r,e.el,e.anchor)},y=({el:e,anchor:t},n,i)=>{let a;for(;e&&e!==t;)a=f(e),r(e,n,i),e=a;r(t,n,i)},b=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=f(e),i(e),e=n;i(t)},w=(e,t,n,r,i,a,o,s,c)=>{if(t.type===`svg`?o=`svg`:t.type===`math`&&(o=`mathml`),e==null)T(t,n,r,i,a,o,s,c);else{let n=e.el&&e.el._isVueCE?e.el:null;try{n&&n._beginPatch(),ee(e,t,i,a,o,s,c)}finally{n&&n._endPatch()}}},T=(e,t,n,i,s,c,l,d)=>{let f,p,{props:m,shapeFlag:h,transition:g,dirs:_}=e;if(f=e.el=o(e.type,c,m&&m.is,m),h&8?u(f,e.children):h&16&&D(e.children,f,null,i,s,Bo(e,c),l,d),_&&Er(e,null,i,`created`),E(f,e,e.scopeId,l,i),m){for(let e in m)e!==`value`&&!fe(e)&&a(f,e,null,m[e],c,i);`value`in m&&a(f,`value`,null,m.value,c),(p=m.onVnodeBeforeMount)&&Ms(p,i,e)}_&&Er(e,null,i,`beforeMount`);let v=Ho(s,g);v&&g.beforeEnter(f),r(f,t,n),((p=m&&m.onVnodeMounted)||v||_)&&K(()=>{p&&Ms(p,i,e),v&&g.enter(f),_&&Er(e,null,i,`mounted`)},s)},E=(e,t,n,r,i)=>{if(n&&p(e,n),r)for(let t=0;t{for(let l=c;l{let c=t.el=e.el,{patchFlag:l,dynamicChildren:d,dirs:f}=t;l|=e.patchFlag&16;let p=e.props||x,m=t.props||x,h;if(n&&Vo(n,!1),(h=m.onVnodeBeforeUpdate)&&Ms(h,n,t,e),f&&Er(t,e,n,`beforeUpdate`),n&&Vo(n,!0),(p.innerHTML&&m.innerHTML==null||p.textContent&&m.textContent==null)&&u(c,``),d?te(e.dynamicChildren,d,c,n,r,Bo(t,i),o):s||M(e,t,c,null,n,r,Bo(t,i),o,!1),l>0){if(l&16)O(c,p,m,n,i);else if(l&2&&p.class!==m.class&&a(c,`class`,null,m.class,i),l&4&&a(c,`style`,p.style,m.style,i),l&8){let e=t.dynamicProps;for(let t=0;t{h&&Ms(h,n,t,e),f&&Er(t,e,n,`updated`)},r)},te=(e,t,n,r,i,a,o)=>{for(let s=0;s{if(t!==n){if(t!==x)for(let o in t)!fe(o)&&!(o in n)&&a(e,o,t[o],null,i,r);for(let o in n){if(fe(o))continue;let s=n[o],c=t[o];s!==c&&o!==`value`&&a(e,o,c,s,i,r)}`value`in n&&a(e,`value`,t.value,n.value,i)}},k=(e,t,n,i,a,o,c,l,u)=>{let d=t.el=e?e.el:s(``),f=t.anchor=e?e.anchor:s(``),{patchFlag:p,dynamicChildren:m,slotScopeIds:h}=t;h&&(l=l?l.concat(h):h),e==null?(r(d,n,i),r(f,n,i),D(t.children||[],n,f,a,o,c,l,u)):p>0&&p&64&&m&&e.dynamicChildren?(te(e.dynamicChildren,m,n,a,o,c,l),(t.key!=null||a&&t===a.subTree)&&Uo(e,t,!0)):M(e,t,n,f,a,o,c,l,u)},ne=(e,t,n,r,i,a,o,s,c)=>{t.slotScopeIds=s,e==null?t.shapeFlag&512?i.ctx.activate(t,n,r,o,c):A(t,n,r,i,a,o,c):re(e,t,c)},A=(e,t,n,r,i,a,o)=>{let s=e.component=Fs(e,r,i);if(ki(e)&&(s.ctx.renderer=he),Hs(s,!1,o),s.asyncDep){if(i&&i.registerDep(s,ie,o),!e.el){let r=s.subTree=X(J);_(null,r,t,n),e.placeholder=r.el}}else ie(s,e,t,n,i,a,o)},re=(e,t,n)=>{let r=t.component=e.component;if(go(e,t,n))if(r.asyncDep&&!r.asyncResolved){j(r,t,n);return}else r.next=t,r.update();else t.el=e.el,r.vnode=t},ie=(e,t,n,r,i,a,o)=>{let s=()=>{if(e.isMounted){let{next:t,bu:n,u:r,parent:c,vnode:l}=e;{let n=Go(e);if(n){t&&(t.el=l.el,j(e,t,o)),n.asyncDep.then(()=>{e.isUnmounted||s()});return}}let u=t,f;Vo(e,!1),t?(t.el=l.el,j(e,t,o)):t=l,n&&ve(n),(f=t.props&&t.props.onVnodeBeforeUpdate)&&Ms(f,c,t,l),Vo(e,!0);let p=fo(e),m=e.subTree;e.subTree=p,h(m,p,d(m.el),pe(m),e,i,a),t.el=p.el,u===null&&vo(e,p.el),r&&K(r,i),(f=t.props&&t.props.onVnodeUpdated)&&K(()=>Ms(f,c,t,l),i)}else{let o,{el:s,props:c}=t,{bm:l,m:u,parent:d,root:f,type:p}=e,m=Ei(t);if(Vo(e,!1),l&&ve(l),!m&&(o=c&&c.onVnodeBeforeMount)&&Ms(o,d,t),Vo(e,!0),s&&ge){let t=()=>{e.subTree=fo(e),ge(s,e.subTree,e,i,null)};m&&p.__asyncHydrate?p.__asyncHydrate(s,e,t):t()}else{f.ce&&f.ce._def.shadowRoot!==!1&&f.ce._injectChildStyle(p);let o=e.subTree=fo(e);h(null,o,n,r,e,i,a),t.el=o.el}if(u&&K(u,i),!m&&(o=c&&c.onVnodeMounted)){let e=t;K(()=>Ms(o,d,e),i)}(t.shapeFlag&256||d&&Ei(d.vnode)&&d.vnode.shapeFlag&256)&&e.a&&K(e.a,i),e.isMounted=!0,t=n=r=null}};e.scope.on();let c=e.effect=new Je(s);e.scope.off();let l=e.update=c.run.bind(c),u=e.job=c.runIfDirty.bind(c);u.i=e,u.id=e.uid,c.scheduler=()=>lr(u),Vo(e,!0),l()},j=(e,t,n)=>{t.component=e;let r=e.vnode.props;e.vnode=t,e.next=null,Co(e,t.props,r,n),Io(e,t.children,n),dt(),fr(e),ft()},M=(e,t,n,r,i,a,o,s,c=!1)=>{let l=e&&e.children,d=e?e.shapeFlag:0,f=t.children,{patchFlag:p,shapeFlag:m}=t;if(p>0){if(p&128){N(l,f,n,r,i,a,o,s,c);return}else if(p&256){ae(l,f,n,r,i,a,o,s,c);return}}m&8?(d&16&&de(l,i,a),f!==l&&u(n,f)):d&16?m&16?N(l,f,n,r,i,a,o,s,c):de(l,i,a,!0):(d&8&&u(n,``),m&16&&D(f,n,r,i,a,o,s,c))},ae=(e,t,n,r,i,a,o,s,c)=>{e||=S,t||=S;let l=e.length,u=t.length,d=Math.min(l,u),f;for(f=0;fu?de(e,i,a,!0,!1,d):D(t,n,r,i,a,o,s,c,d)},N=(e,t,n,r,i,a,o,s,c)=>{let l=0,u=t.length,d=e.length-1,f=u-1;for(;l<=d&&l<=f;){let r=e[l],u=t[l]=c?ks(t[l]):Os(t[l]);if(_s(r,u))h(r,u,n,null,i,a,o,s,c);else break;l++}for(;l<=d&&l<=f;){let r=e[d],l=t[f]=c?ks(t[f]):Os(t[f]);if(_s(r,l))h(r,l,n,null,i,a,o,s,c);else break;d--,f--}if(l>d){if(l<=f){let e=f+1,d=ef)for(;l<=d;)se(e[l],i,a,!0),l++;else{let p=l,m=l,g=new Map;for(l=m;l<=f;l++){let e=t[l]=c?ks(t[l]):Os(t[l]);e.key!=null&&g.set(e.key,l)}let _,v=0,y=f-m+1,b=!1,x=0,C=Array(y);for(l=0;l=y){se(r,i,a,!0);continue}let u;if(r.key!=null)u=g.get(r.key);else for(_=m;_<=f;_++)if(C[_-m]===0&&_s(r,t[_])){u=_;break}u===void 0?se(r,i,a,!0):(C[u-m]=l+1,u>=x?x=u:b=!0,h(r,t[u],n,null,i,a,o,s,c),v++)}let w=b?Wo(C):S;for(_=w.length-1,l=y-1;l>=0;l--){let e=m+l,d=t[e],f=t[e+1],p=e+1{let{el:s,type:c,transition:l,children:u,shapeFlag:d}=e;if(d&6){oe(e.component.subTree,t,n,a);return}if(d&128){e.suspense.move(t,n,a);return}if(d&64){c.move(e,t,n,he);return}if(c===q){r(s,t,n);for(let e=0;el.enter(s),o);else{let{leave:a,delayLeave:o,afterLeave:c}=l,u=()=>{e.ctx.isUnmounted?i(s):r(s,t,n)},d=()=>{s._isLeaving&&s[Br](!0),a(s,()=>{u(),c&&c()})};o?o(s,u,d):d()}else r(s,t,n)},se=(e,t,n,r=!1,i=!1)=>{let{type:a,props:o,ref:s,children:c,dynamicChildren:l,shapeFlag:u,patchFlag:d,dirs:f,cacheIndex:p}=e;if(d===-2&&(i=!1),s!=null&&(dt(),oi(s,null,n,e,!0),ft()),p!=null&&(t.renderCache[p]=void 0),u&256){t.ctx.deactivate(e);return}let m=u&1&&f,h=!Ei(e),g;if(h&&(g=o&&o.onVnodeBeforeUnmount)&&Ms(g,t,e),u&6)ue(e.component,n,r);else{if(u&128){e.suspense.unmount(n,r);return}m&&Er(e,null,t,`beforeUnmount`),u&64?e.type.remove(e,t,n,he,r):l&&!l.hasOnce&&(a!==q||d>0&&d&64)?de(l,t,n,!1,!0):(a===q&&d&384||!i&&u&16)&&de(c,t,n),r&&ce(e)}(h&&(g=o&&o.onVnodeUnmounted)||m)&&K(()=>{g&&Ms(g,t,e),m&&Er(e,null,t,`unmounted`)},n)},ce=e=>{let{type:t,el:n,anchor:r,transition:a}=e;if(t===q){le(n,r);return}if(t===ss){b(e);return}let o=()=>{i(n),a&&!a.persisted&&a.afterLeave&&a.afterLeave()};if(e.shapeFlag&1&&a&&!a.persisted){let{leave:t,delayLeave:r}=a,i=()=>t(n,o);r?r(e.el,o,i):i()}else o()},le=(e,t)=>{let n;for(;e!==t;)n=f(e),i(e),e=n;i(t)},ue=(e,t,n)=>{let{bum:r,scope:i,job:a,subTree:o,um:s,m:c,a:l}=e;Ko(c),Ko(l),r&&ve(r),i.stop(),a&&(a.flags|=8,se(o,e,t,n)),s&&K(s,t),K(()=>{e.isUnmounted=!0},t)},de=(e,t,n,r=!1,i=!1,a=0)=>{for(let o=a;o{if(e.shapeFlag&6)return pe(e.component.subTree);if(e.shapeFlag&128)return e.suspense.next();let t=f(e.anchor||e.el),n=t&&t[Dr];return n?f(n):t},me=!1,P=(e,t,n)=>{e==null?t._vnode&&se(t._vnode,null,null,!0):h(t._vnode||null,e,t,null,null,null,n),t._vnode=e,me||=(me=!0,fr(),pr(),!1)},he={p:h,um:se,m:oe,r:ce,mt:A,mc:D,pc:M,pbc:te,n:pe,o:e},F,ge;return t&&([F,ge]=t(he)),{render:P,hydrate:F,createApp:Ga(P,F)}}function Bo({type:e,props:t},n){return n===`svg`&&e===`foreignObject`||n===`mathml`&&e===`annotation-xml`&&t&&t.encoding&&t.encoding.includes(`html`)?void 0:n}function Vo({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Ho(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Uo(e,t,n=!1){let r=e.children,i=t.children;if(k(r)&&k(i))for(let e=0;e>1,e[n[s]]0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,o=n[a-1];a-- >0;)n[a]=o,o=t[o];return n}function Go(e){let t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Go(t)}function Ko(e){if(e)for(let t=0;te.__isSuspense,Jo=0,Yo={name:`Suspense`,__isSuspense:!0,process(e,t,n,r,i,a,o,s,c,l){if(e==null)Zo(t,n,r,i,a,o,s,c,l);else{if(a&&a.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}Qo(e,t,n,r,i,o,s,c,l)}},hydrate:es,normalize:ts};function Xo(e,t){let n=e.props&&e.props[t];j(n)&&n()}function Zo(e,t,n,r,i,a,o,s,c){let{p:l,o:{createElement:u}}=c,d=u(`div`),f=e.suspense=$o(e,i,r,t,d,n,a,o,s,c);l(null,f.pendingBranch=e.ssContent,d,null,r,f,a,o),f.deps>0?(Xo(e,`onPending`),Xo(e,`onFallback`),l(null,e.ssFallback,t,n,r,null,a,o),is(f,e.ssFallback)):f.resolve(!1,!0)}function Qo(e,t,n,r,i,a,o,s,{p:c,um:l,o:{createElement:u}}){let d=t.suspense=e.suspense;d.vnode=t,t.el=e.el;let f=t.ssContent,p=t.ssFallback,{activeBranch:m,pendingBranch:h,isInFallback:g,isHydrating:_}=d;if(h)d.pendingBranch=f,_s(h,f)?(c(h,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0?d.resolve():g&&(_||(c(m,p,n,r,i,null,a,o,s),is(d,p)))):(d.pendingId=Jo++,_?(d.isHydrating=!1,d.activeBranch=h):l(h,i,d),d.deps=0,d.effects.length=0,d.hiddenContainer=u(`div`),g?(c(null,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0?d.resolve():(c(m,p,n,r,i,null,a,o,s),is(d,p))):m&&_s(m,f)?(c(m,f,n,r,i,d,a,o,s),d.resolve(!0)):(c(null,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0&&d.resolve()));else if(m&&_s(m,f))c(m,f,n,r,i,d,a,o,s),is(d,f);else if(Xo(t,`onPending`),d.pendingBranch=f,f.shapeFlag&512?d.pendingId=f.component.suspenseId:d.pendingId=Jo++,c(null,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0)d.resolve();else{let{timeout:e,pendingId:t}=d;e>0?setTimeout(()=>{d.pendingId===t&&d.fallback(p)},e):e===0&&d.fallback(p)}}function $o(e,t,n,r,i,a,o,s,c,l,u=!1){let{p:d,m:f,um:p,n:m,o:{parentNode:h,remove:g}}=l,_,v=as(e);v&&t&&t.pendingBranch&&(_=t.pendingId,t.deps++);let y=e.props?xe(e.props.timeout):void 0,b=a,x={vnode:e,parent:t,parentComponent:n,namespace:o,container:r,hiddenContainer:i,deps:0,pendingId:Jo++,timeout:typeof y==`number`?y:-1,activeBranch:null,pendingBranch:null,isInFallback:!u,isHydrating:u,isUnmounted:!1,effects:[],resolve(e=!1,n=!1){let{vnode:r,activeBranch:i,pendingBranch:o,pendingId:s,effects:c,parentComponent:l,container:u,isInFallback:d}=x,g=!1;x.isHydrating?x.isHydrating=!1:e||(g=i&&o.transition&&o.transition.mode===`out-in`,g&&(i.transition.afterLeave=()=>{s===x.pendingId&&(f(o,u,a===b?m(i):a,0),dr(c),d&&r.ssFallback&&(r.ssFallback.el=null))}),i&&(h(i.el)===u&&(a=m(i)),p(i,l,x,!0),!g&&d&&r.ssFallback&&K(()=>r.ssFallback.el=null,x)),g||f(o,u,a,0)),is(x,o),x.pendingBranch=null,x.isInFallback=!1;let y=x.parent,S=!1;for(;y;){if(y.pendingBranch){y.effects.push(...c),S=!0;break}y=y.parent}!S&&!g&&dr(c),x.effects=[],v&&t&&t.pendingBranch&&_===t.pendingId&&(t.deps--,t.deps===0&&!n&&t.resolve()),Xo(r,`onResolve`)},fallback(e){if(!x.pendingBranch)return;let{vnode:t,activeBranch:n,parentComponent:r,container:i,namespace:a}=x;Xo(t,`onFallback`);let o=m(n),l=()=>{x.isInFallback&&(d(null,e,i,o,r,null,a,s,c),is(x,e))},u=e.transition&&e.transition.mode===`out-in`;u&&(n.transition.afterLeave=l),x.isInFallback=!0,p(n,r,null,!0),u||l()},move(e,t,n){x.activeBranch&&f(x.activeBranch,e,t,n),x.container=e},next(){return x.activeBranch&&m(x.activeBranch)},registerDep(e,t,n){let r=!!x.pendingBranch;r&&x.deps++;let i=e.vnode.el;e.asyncDep.catch(t=>{$n(t,e,0)}).then(a=>{if(e.isUnmounted||x.isUnmounted||x.pendingId!==e.suspenseId)return;e.asyncResolved=!0;let{vnode:s}=e;Ws(e,a,!1),i&&(s.el=i);let c=!i&&e.subTree.el;t(e,s,h(i||e.subTree.el),i?null:m(e.subTree),x,o,n),c&&(s.placeholder=null,g(c)),vo(e,s.el),r&&--x.deps===0&&x.resolve()})},unmount(e,t){x.isUnmounted=!0,x.activeBranch&&p(x.activeBranch,n,e,t),x.pendingBranch&&p(x.pendingBranch,n,e,t)}};return x}function es(e,t,n,r,i,a,o,s,c){let l=t.suspense=$o(t,r,n,e.parentNode,document.createElement(`div`),null,i,a,o,s,!0),u=c(e,l.pendingBranch=t.ssContent,n,l,a,o);return l.deps===0&&l.resolve(!1,!0),u}function ts(e){let{shapeFlag:t,children:n}=e,r=t&32;e.ssContent=ns(r?n.default:n),e.ssFallback=r?ns(n.fallback):X(J)}function ns(e){let t;if(j(e)){let n=ds&&e._c;n&&(e._d=!1,ls()),e=e(),n&&(e._d=!0,t=Y,us())}return k(e)&&(e=po(e)),e=Os(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(t=>t!==e)),e}function rs(e,t){t&&t.pendingBranch?k(e)?t.effects.push(...e):t.effects.push(e):dr(e)}function is(e,t){e.activeBranch=t;let{vnode:n,parentComponent:r}=e,i=t.el;for(;!i&&t.component;)t=t.component.subTree,i=t.el;n.el=i,r&&r.subTree===n&&(r.vnode.el=i,vo(r,i))}function as(e){let t=e.props&&e.props.suspensible;return t!=null&&t!==!1}var q=Symbol.for(`v-fgt`),os=Symbol.for(`v-txt`),J=Symbol.for(`v-cmt`),ss=Symbol.for(`v-stc`),cs=[],Y=null;function ls(e=!1){cs.push(Y=e?null:[])}function us(){cs.pop(),Y=cs[cs.length-1]||null}var ds=1;function fs(e,t=!1){ds+=e,e<0&&Y&&t&&(Y.hasOnce=!0)}function ps(e){return e.dynamicChildren=ds>0?Y||S:null,us(),ds>0&&Y&&Y.push(e),e}function ms(e,t,n,r,i,a){return ps(xs(e,t,n,r,i,a,!0))}function hs(e,t,n,r,i){return ps(X(e,t,n,r,i,!0))}function gs(e){return e?e.__v_isVNode===!0:!1}function _s(e,t){return e.type===t.type&&e.key===t.key}function vs(e){}var ys=({key:e})=>e??null,bs=({ref:e,ref_key:t,ref_for:n})=>(typeof e==`number`&&(e=``+e),e==null?null:M(e)||H(e)||j(e)?{i:W,r:e,k:t,f:!!n}:e);function xs(e,t=null,n=null,r=0,i=null,a=e===q?0:1,o=!1,s=!1){let c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ys(t),ref:t&&bs(t),scopeId:yr,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:W};return s?(As(c,n),a&128&&e.normalize(c)):n&&(c.shapeFlag|=M(n)?8:16),ds>0&&!o&&Y&&(c.patchFlag>0||a&6)&&c.patchFlag!==32&&Y.push(c),c}var X=Ss;function Ss(e,t=null,n=null,r=0,i=null,a=!1){if((!e||e===$i)&&(e=J),gs(e)){let r=ws(e,t,!0);return n&&As(r,n),ds>0&&!a&&Y&&(r.shapeFlag&6?Y[Y.indexOf(e)]=r:Y.push(r)),r.patchFlag=-2,r}if(ec(e)&&(e=e.__vccOpts),t){t=Cs(t);let{class:e,style:n}=t;e&&!M(e)&&(t.class=Ae(e)),N(n)&&(mn(n)&&!k(n)&&(n=D({},n)),t.style=Te(n))}let o=M(e)?1:qo(e)?128:Or(e)?64:N(e)?4:j(e)?2:0;return xs(e,t,n,r,i,o,a,!0)}function Cs(e){return e?mn(e)||xo(e)?D({},e):e:null}function ws(e,t,n=!1,r=!1){let{props:i,ref:a,patchFlag:o,children:s,transition:c}=e,l=t?js(i||{},t):i,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&ys(l),ref:t&&t.ref?n&&a?k(a)?a.concat(bs(t)):[a,bs(t)]:bs(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==q?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ws(e.ssContent),ssFallback:e.ssFallback&&ws(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&$r(u,c.clone(u)),u}function Ts(e=` `,t=0){return X(os,null,e,t)}function Es(e,t){let n=X(ss,null,e);return n.staticCount=t,n}function Ds(e=``,t=!1){return t?(ls(),hs(J,null,e)):X(J,null,e)}function Os(e){return e==null||typeof e==`boolean`?X(J):k(e)?X(q,null,e.slice()):gs(e)?ks(e):X(os,null,String(e))}function ks(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ws(e)}function As(e,t){let n=0,{shapeFlag:r}=e;if(t==null)t=null;else if(k(t))n=16;else if(typeof t==`object`)if(r&65){let n=t.default;n&&(n._c&&(n._d=!1),As(e,n()),n._c&&(n._d=!0));return}else{n=32;let r=t._;!r&&!xo(t)?t._ctx=W:r===3&&W&&(W.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else j(t)?(t={default:t,_ctx:W},n=32):(t=String(t),r&64?(n=16,t=[Ts(t)]):n=8);e.children=t,e.shapeFlag|=n}function js(...e){let t={};for(let n=0;nZ||W,Is,Ls;{let e=Ce(),t=(t,n)=>{let r;return(r=e[t])||(r=e[t]=[]),r.push(n),e=>{r.length>1?r.forEach(t=>t(e)):r[0](e)}};Is=t(`__VUE_INSTANCE_SETTERS__`,e=>Z=e),Ls=t(`__VUE_SSR_SETTERS__`,e=>Vs=e)}var Rs=e=>{let t=Z;return Is(e),e.scope.on(),()=>{e.scope.off(),Is(t)}},zs=()=>{Z&&Z.scope.off(),Is(null)};function Bs(e){return e.vnode.shapeFlag&4}var Vs=!1;function Hs(e,t=!1,n=!1){t&&Ls(t);let{props:r,children:i}=e.vnode,a=Bs(e);So(e,r,a,t),Fo(e,i,n||t);let o=a?Us(e,t):void 0;return t&&Ls(!1),o}function Us(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,fa);let{setup:r}=n;if(r){dt();let n=e.setupContext=r.length>1?Zs(e):null,i=Rs(e),a=Zn(r,e,0,[e.props,n]),o=oe(a);if(ft(),i(),(o||e.sp)&&!Ei(e)&&ri(e),o){if(a.then(zs,zs),t)return a.then(n=>{Ws(e,n,t)}).catch(t=>{$n(t,e,0)});e.asyncDep=a}else Ws(e,a,t)}else Ys(e,t)}function Ws(e,t,n){j(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:N(t)&&(e.setupState=En(t)),Ys(e,n)}var Gs,Ks;function qs(e){Gs=e,Ks=e=>{e.render._rc&&(e.withProxy=new Proxy(e.ctx,pa))}}var Js=()=>!Gs;function Ys(e,t,n){let r=e.type;if(!e.render){if(!t&&Gs&&!r.render){let t=r.template||Pa(e).template;if(t){let{isCustomElement:n,compilerOptions:i}=e.appContext.config,{delimiters:a,compilerOptions:o}=r,s=D(D({isCustomElement:n,delimiters:a},i),o);r.render=Gs(t,s)}}e.render=r.render||C,Ks&&Ks(e)}{let t=Rs(e);dt();try{Aa(e)}finally{ft(),t()}}}var Xs={get(e,t){return z(e,`get`,``),e[t]}};function Zs(e){return{attrs:new Proxy(e.attrs,Xs),slots:e.slots,emit:e.emit,expose:t=>{e.exposed=t||{}}}}function Qs(e){return e.exposed?e.exposeProxy||=new Proxy(En(hn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in ua)return ua[n](e)},has(e,t){return t in e||t in ua}}):e.proxy}function $s(e,t=!0){return j(e)?e.displayName||e.name:e.name||t&&e.__name}function ec(e){return j(e)&&`__vccOpts`in e}var tc=(e,t)=>Fn(e,t,Vs);function nc(e,t,n){try{fs(-1);let r=arguments.length;return r===2?N(t)&&!k(t)?gs(t)?X(e,null,[t]):X(e,t):X(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&gs(n)&&(n=[n]),X(e,t,n))}finally{fs(1)}}function rc(){return;function e(t,n,r){let i=t[r];if(k(i)&&i.includes(n)||N(i)&&n in i||t.extends&&e(t.extends,n,r)||t.mixins&&t.mixins.some(t=>e(t,n,r)))return!0}}function ic(e,t,n,r){let i=n[r];if(i&&ac(i,e))return i;let a=t();return a.memo=e.slice(),a.cacheIndex=r,n[r]=a}function ac(e,t){let n=e.memo;if(n.length!=t.length)return!1;for(let e=0;e0&&Y&&Y.push(e),!0}var oc=`3.5.25`,sc=C,cc=Xn,lc=gr,uc=vr,dc={createComponentInstance:Fs,setupComponent:Hs,renderComponentRoot:fo,setCurrentRenderingInstance:br,isVNode:gs,normalizeVNode:Os,getComponentPublicInstance:Qs,ensureValidVNode:sa,pushWarningContext:Kn,popWarningContext:qn},fc=void 0,pc=typeof window<`u`&&window.trustedTypes;if(pc)try{fc=pc.createPolicy(`vue`,{createHTML:e=>e})}catch{}var mc=fc?e=>fc.createHTML(e):e=>e,hc=`http://www.w3.org/2000/svg`,gc=`http://www.w3.org/1998/Math/MathML`,_c=typeof document<`u`?document:null,vc=_c&&_c.createElement(`template`),yc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{let i=t===`svg`?_c.createElementNS(hc,e):t===`mathml`?_c.createElementNS(gc,e):n?_c.createElement(e,{is:n}):_c.createElement(e);return e===`select`&&r&&r.multiple!=null&&i.setAttribute(`multiple`,r.multiple),i},createText:e=>_c.createTextNode(e),createComment:e=>_c.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>_c.querySelector(e),setScopeId(e,t){e.setAttribute(t,``)},insertStaticContent(e,t,n,r,i,a){let o=n?n.previousSibling:t.lastChild;if(i&&(i===a||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),!(i===a||!(i=i.nextSibling)););else{vc.innerHTML=mc(r===`svg`?`${e}`:r===`mathml`?`${e}`:e);let i=vc.content;if(r===`svg`||r===`mathml`){let e=i.firstChild;for(;e.firstChild;)i.appendChild(e.firstChild);i.removeChild(e)}t.insertBefore(i,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},bc=`transition`,xc=`animation`,Sc=Symbol(`_vtc`),Cc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},wc=D({},Wr,Cc),Tc=(e=>(e.displayName=`Transition`,e.props=wc,e))((e,{slots:t})=>nc(Jr,Oc(e),t)),Ec=(e,t=[])=>{k(e)?e.forEach(e=>e(...t)):e&&e(...t)},Dc=e=>e?k(e)?e.some(e=>e.length>1):e.length>1:!1;function Oc(e){let t={};for(let n in e)n in Cc||(t[n]=e[n]);if(e.css===!1)return t;let{name:n=`v`,type:r,duration:i,enterFromClass:a=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:c=a,appearActiveClass:l=o,appearToClass:u=s,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:f=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,m=kc(i),h=m&&m[0],g=m&&m[1],{onBeforeEnter:_,onEnter:v,onEnterCancelled:y,onLeave:b,onLeaveCancelled:x,onBeforeAppear:S=_,onAppear:C=v,onAppearCancelled:w=y}=t,T=(e,t,n,r)=>{e._enterCancelled=r,Mc(e,t?u:s),Mc(e,t?l:o),n&&n()},E=(e,t)=>{e._isLeaving=!1,Mc(e,d),Mc(e,p),Mc(e,f),t&&t()},ee=e=>(t,n)=>{let i=e?C:v,o=()=>T(t,e,n);Ec(i,[t,o]),Nc(()=>{Mc(t,e?c:a),jc(t,e?u:s),Dc(i)||Fc(t,r,h,o)})};return D(t,{onBeforeEnter(e){Ec(_,[e]),jc(e,a),jc(e,o)},onBeforeAppear(e){Ec(S,[e]),jc(e,c),jc(e,l)},onEnter:ee(!1),onAppear:ee(!0),onLeave(e,t){e._isLeaving=!0;let n=()=>E(e,t);jc(e,d),e._enterCancelled?(jc(e,f),zc(e)):(zc(e),jc(e,f)),Nc(()=>{e._isLeaving&&(Mc(e,d),jc(e,p),Dc(b)||Fc(e,r,g,n))}),Ec(b,[e,n])},onEnterCancelled(e){T(e,!1,void 0,!0),Ec(y,[e])},onAppearCancelled(e){T(e,!0,void 0,!0),Ec(w,[e])},onLeaveCancelled(e){E(e),Ec(x,[e])}})}function kc(e){if(e==null)return null;if(N(e))return[Ac(e.enter),Ac(e.leave)];{let t=Ac(e);return[t,t]}}function Ac(e){return xe(e)}function jc(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e[Sc]||(e[Sc]=new Set)).add(t)}function Mc(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.remove(t));let n=e[Sc];n&&(n.delete(t),n.size||(e[Sc]=void 0))}function Nc(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var Pc=0;function Fc(e,t,n,r){let i=e._endId=++Pc,a=()=>{i===e._endId&&r()};if(n!=null)return setTimeout(a,n);let{type:o,timeout:s,propCount:c}=Ic(e,t);if(!o)return r();let l=o+`end`,u=0,d=()=>{e.removeEventListener(l,f),a()},f=t=>{t.target===e&&++u>=c&&d()};setTimeout(()=>{u(n[e]||``).split(`, `),i=r(`${bc}Delay`),a=r(`${bc}Duration`),o=Lc(i,a),s=r(`${xc}Delay`),c=r(`${xc}Duration`),l=Lc(s,c),u=null,d=0,f=0;t===bc?o>0&&(u=bc,d=o,f=a.length):t===xc?l>0&&(u=xc,d=l,f=c.length):(d=Math.max(o,l),u=d>0?o>l?bc:xc:null,f=u?u===bc?a.length:c.length:0);let p=u===bc&&/\b(?:transform|all)(?:,|$)/.test(r(`${bc}Property`).toString());return{type:u,timeout:d,propCount:f,hasTransform:p}}function Lc(e,t){for(;e.lengthRc(t)+Rc(e[n])))}function Rc(e){return e===`auto`?0:Number(e.slice(0,-1).replace(`,`,`.`))*1e3}function zc(e){return(e?e.ownerDocument:document).body.offsetHeight}function Bc(e,t,n){let r=e[Sc];r&&(t=(t?[t,...r]:[...r]).join(` `)),t==null?e.removeAttribute(`class`):n?e.setAttribute(`class`,t):e.className=t}var Vc=Symbol(`_vod`),Hc=Symbol(`_vsh`),Uc={name:`show`,beforeMount(e,{value:t},{transition:n}){e[Vc]=e.style.display===`none`?``:e.style.display,n&&t?n.beforeEnter(e):Wc(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),Wc(e,!0),r.enter(e)):r.leave(e,()=>{Wc(e,!1)}):Wc(e,t))},beforeUnmount(e,{value:t}){Wc(e,t)}};function Wc(e,t){e.style.display=t?e[Vc]:`none`,e[Hc]=!t}function Gc(){Uc.getSSRProps=({value:e})=>{if(!e)return{style:{display:`none`}}}}var Kc=Symbol(``);function qc(e){let t=Q();if(!t)return;let n=t.ut=(n=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(e=>Yc(e,n))},r=()=>{let r=e(t.proxy);t.ce?Yc(t.ce,r):Jc(t.subTree,r),n(r)};Hi(()=>{dr(r)}),Vi(()=>{to(r,C,{flush:`post`});let e=new MutationObserver(r);e.observe(t.subTree.el.parentNode,{childList:!0}),Gi(()=>e.disconnect())})}function Jc(e,t){if(e.shapeFlag&128){let n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push(()=>{Jc(n.activeBranch,t)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)Yc(e.el,t);else if(e.type===q)e.children.forEach(e=>Jc(e,t));else if(e.type===ss){let{el:n,anchor:r}=e;for(;n&&(Yc(n,t),n!==r);)n=n.nextSibling}}function Yc(e,t){if(e.nodeType===1){let n=e.style,r=``;for(let e in t){let i=He(t[e]);n.setProperty(`--${e}`,i),r+=`--${e}: ${i};`}n[Kc]=r}}var Xc=/(?:^|;)\s*display\s*:/;function Zc(e,t,n){let r=e.style,i=M(n),a=!1;if(n&&!i){if(t)if(M(t))for(let e of t.split(`;`)){let t=e.slice(0,e.indexOf(`:`)).trim();n[t]??$c(r,t,``)}else for(let e in t)n[e]??$c(r,e,``);for(let e in n)e===`display`&&(a=!0),$c(r,e,n[e])}else if(i){if(t!==n){let e=r[Kc];e&&(n+=`;`+e),r.cssText=n,a=Xc.test(n)}}else t&&e.removeAttribute(`style`);Vc in e&&(e[Vc]=a?r.display:``,e[Hc]&&(r.display=`none`))}var Qc=/\s*!important$/;function $c(e,t,n){if(k(n))n.forEach(n=>$c(e,t,n));else if(n??=``,t.startsWith(`--`))e.setProperty(t,n);else{let r=nl(e,t);Qc.test(n)?e.setProperty(F(r),n.replace(Qc,``),`important`):e[r]=n}}var el=[`Webkit`,`Moz`,`ms`],tl={};function nl(e,t){let n=tl[t];if(n)return n;let r=P(t);if(r!==`filter`&&r in e)return tl[t]=r;r=ge(r);for(let n=0;nfl||=(pl.then(()=>fl=0),Date.now());function hl(e,t){let n=e=>{if(!e._vts)e._vts=Date.now();else if(e._vts<=n.attached)return;Qn(gl(e,n.value),t,5,[e])};return n.value=e,n.attached=ml(),n}function gl(e,t){if(k(t)){let n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(e=>t=>!t._stopped&&e&&e(t))}else return t}var _l=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,vl=(e,t,n,r,i,a)=>{let o=i===`svg`;t===`class`?Bc(e,r,o):t===`style`?Zc(e,n,r):T(t)?E(t)||ll(e,t,n,r,a):(t[0]===`.`?(t=t.slice(1),!0):t[0]===`^`?(t=t.slice(1),!1):yl(e,t,r,o))?(al(e,t,r),!e.tagName.includes(`-`)&&(t===`value`||t===`checked`||t===`selected`)&&il(e,t,r,o,a,t!==`value`)):e._isVueCE&&(/[A-Z]/.test(t)||!M(r))?al(e,P(t),r,a,t):(t===`true-value`?e._trueValue=r:t===`false-value`&&(e._falseValue=r),il(e,t,r,o))};function yl(e,t,n,r){if(r)return!!(t===`innerHTML`||t===`textContent`||t in e&&_l(t)&&j(n));if(t===`spellcheck`||t===`draggable`||t===`translate`||t===`autocorrect`||t===`sandbox`&&e.tagName===`IFRAME`||t===`form`||t===`list`&&e.tagName===`INPUT`||t===`type`&&e.tagName===`TEXTAREA`)return!1;if(t===`width`||t===`height`){let t=e.tagName;if(t===`IMG`||t===`VIDEO`||t===`CANVAS`||t===`SOURCE`)return!1}return _l(t)&&M(n)?!1:t in e}var bl={};function xl(e,t,n){let r=ti(e,t);ue(r)&&(r=D({},r,t));class i extends wl{constructor(e){super(r,e,n)}}return i.def=r,i}var Sl=((e,t)=>xl(e,t,pu)),Cl=typeof HTMLElement<`u`?HTMLElement:class{},wl=class e extends Cl{constructor(e,t={},n=fu){super(),this._def=e,this._props=t,this._createApp=n,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._ob=null,this.shadowRoot&&n!==fu?this._root=this.shadowRoot:e.shadowRoot===!1?this._root=this:(this.attachShadow(D({},e.shadowRootOptions,{mode:`open`})),this._root=this.shadowRoot)}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let t=this;for(;t&&=t.parentNode||t.host;)if(t instanceof e){this._parent=t;break}this._instance||(this._resolved?this._mount(this._def):t&&t._pendingResolve?this._pendingResolve=t._pendingResolve.then(()=>{this._pendingResolve=void 0,this._resolveDef()}):this._resolveDef())}_setParent(e=this._parent){e&&(this._instance.parent=e._instance,this._inheritParentContext(e))}_inheritParentContext(e=this._parent){e&&this._app&&Object.setPrototypeOf(this._app._context.provides,e._instance.provides)}disconnectedCallback(){this._connected=!1,sr(()=>{this._connected||(this._ob&&=(this._ob.disconnect(),null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&=(this._teleportTargets.clear(),void 0))})}_processMutations(e){for(let t of e)this._setAttr(t.attributeName)}_resolveDef(){if(this._pendingResolve)return;for(let e=0;e{this._resolved=!0,this._pendingResolve=void 0;let{props:n,styles:r}=e,i;if(n&&!k(n))for(let e in n){let t=n[e];(t===Number||t&&t.type===Number)&&(e in this._props&&(this._props[e]=xe(this._props[e])),(i||=Object.create(null))[P(e)]=!0)}this._numberProps=i,this._resolveProps(e),this.shadowRoot&&this._applyStyles(r),this._mount(e)},t=this._def.__asyncLoader;t?this._pendingResolve=t().then(t=>{t.configureApp=this._def.configureApp,e(this._def=t,!0)}):e(this._def)}_mount(e){this._app=this._createApp(e),this._inheritParentContext(),e.configureApp&&e.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);let t=this._instance&&this._instance.exposed;if(t)for(let e in t)O(this,e)||Object.defineProperty(this,e,{get:()=>Cn(t[e])})}_resolveProps(e){let{props:t}=e,n=k(t)?t:Object.keys(t||{});for(let e of Object.keys(this))e[0]!==`_`&&n.includes(e)&&this._setProp(e,this[e]);for(let e of n.map(P))Object.defineProperty(this,e,{get(){return this._getProp(e)},set(t){this._setProp(e,t,!0,!this._patching)}})}_setAttr(e){if(e.startsWith(`data-v-`))return;let t=this.hasAttribute(e),n=t?this.getAttribute(e):bl,r=P(e);t&&this._numberProps&&this._numberProps[r]&&(n=xe(n)),this._setProp(r,n,!1,!0)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,r=!1){if(t!==this._props[e]&&(this._dirty=!0,t===bl?delete this._props[e]:(this._props[e]=t,e===`key`&&this._app&&(this._app._ceVNode.key=t)),r&&this._instance&&this._update(),n)){let n=this._ob;n&&(this._processMutations(n.takeRecords()),n.disconnect()),t===!0?this.setAttribute(F(e),``):typeof t==`string`||typeof t==`number`?this.setAttribute(F(e),t+``):t||this.removeAttribute(F(e)),n&&n.observe(this,{attributes:!0})}}_update(){let e=this._createVNode();this._app&&(e.appContext=this._app._context),uu(e,this._root)}_createVNode(){let e={};this.shadowRoot||(e.onVnodeMounted=e.onVnodeUpdated=this._renderSlots.bind(this));let t=X(this._def,D(e,this._props));return this._instance||(t.ce=e=>{this._instance=e,e.ce=this,e.isCE=!0;let t=(e,t)=>{this.dispatchEvent(new CustomEvent(e,ue(t[0])?D({detail:t},t[0]):{detail:t}))};e.emit=(e,...n)=>{t(e,n),F(e)!==e&&t(F(e),n)},this._setParent()}),t}_applyStyles(e,t){if(!e)return;if(t){if(t===this._def||this._styleChildren.has(t))return;this._styleChildren.add(t)}let n=this._nonce;for(let t=e.length-1;t>=0;t--){let r=document.createElement(`style`);n&&r.setAttribute(`nonce`,n),r.textContent=e[t],this.shadowRoot.prepend(r)}}_parseSlots(){let e=this._slots={},t;for(;t=this.firstChild;){let n=t.nodeType===1&&t.getAttribute(`slot`)||`default`;(e[n]||(e[n]=[])).push(t),this.removeChild(t)}}_renderSlots(){let e=this._getSlots(),t=this._instance.type.__scopeId;for(let n=0;n(delete e.props.mode,e))({name:`TransitionGroup`,props:D({},wc,{tag:String,moveClass:String}),setup(e,{slots:t}){let n=Q(),r=Hr(),i,a;return Ui(()=>{if(!i.length)return;let t=e.moveClass||`${e.name||`v`}-move`;if(!Il(i[0].el,n.vnode.el,t)){i=[];return}i.forEach(Nl),i.forEach(Pl);let r=i.filter(Fl);zc(n.vnode.el),r.forEach(e=>{let n=e.el,r=n.style;jc(n,t),r.transform=r.webkitTransform=r.transitionDuration=``;let i=n[Al]=e=>{e&&e.target!==n||(!e||e.propertyName.endsWith(`transform`))&&(n.removeEventListener(`transitionend`,i),n[Al]=null,Mc(n,t))};n.addEventListener(`transitionend`,i)}),i=[]}),()=>{let o=V(e),s=Oc(o),c=o.tag||q;if(i=[],a)for(let e=0;e{e.split(/\s+/).forEach(e=>e&&r.classList.remove(e))}),n.split(/\s+/).forEach(e=>e&&r.classList.add(e)),r.style.display=`none`;let a=t.nodeType===1?t:t.parentNode;a.appendChild(r);let{hasTransform:o}=Ic(r);return a.removeChild(r),o}var Ll=e=>{let t=e.props[`onUpdate:modelValue`]||!1;return k(t)?e=>ve(t,e):t};function Rl(e){e.target.composing=!0}function zl(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event(`input`)))}var Bl=Symbol(`_assign`);function Vl(e,t,n){return t&&(e=e.trim()),n&&(e=be(e)),e}var Hl={created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e[Bl]=Ll(i);let a=r||i.props&&i.props.type===`number`;ol(e,t?`change`:`input`,t=>{t.target.composing||e[Bl](Vl(e.value,n,a))}),(n||a)&&ol(e,`change`,()=>{e.value=Vl(e.value,n,a)}),t||(ol(e,`compositionstart`,Rl),ol(e,`compositionend`,zl),ol(e,`change`,zl))},mounted(e,{value:t}){e.value=t??``},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:i,number:a}},o){if(e[Bl]=Ll(o),e.composing)return;let s=(a||e.type===`number`)&&!/^0\d/.test(e.value)?be(e.value):e.value,c=t??``;s!==c&&(document.activeElement===e&&e.type!==`range`&&(r&&t===n||i&&e.value.trim()===c)||(e.value=c))}},Ul={deep:!0,created(e,t,n){e[Bl]=Ll(n),ol(e,`change`,()=>{let t=e._modelValue,n=Jl(e),r=e.checked,i=e[Bl];if(k(t)){let e=Le(t,n),a=e!==-1;if(r&&!a)i(t.concat(n));else if(!r&&a){let n=[...t];n.splice(e,1),i(n)}}else if(A(t)){let e=new Set(t);r?e.add(n):e.delete(n),i(e)}else i(Yl(e,r))})},mounted:Wl,beforeUpdate(e,t,n){e[Bl]=Ll(n),Wl(e,t,n)}};function Wl(e,{value:t,oldValue:n},r){e._modelValue=t;let i;if(k(t))i=Le(t,r.props.value)>-1;else if(A(t))i=t.has(r.props.value);else{if(t===n)return;i=Ie(t,Yl(e,!0))}e.checked!==i&&(e.checked=i)}var Gl={created(e,{value:t},n){e.checked=Ie(t,n.props.value),e[Bl]=Ll(n),ol(e,`change`,()=>{e[Bl](Jl(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[Bl]=Ll(r),t!==n&&(e.checked=Ie(t,r.props.value))}},Kl={deep:!0,created(e,{value:t,modifiers:{number:n}},r){let i=A(t);ol(e,`change`,()=>{let t=Array.prototype.filter.call(e.options,e=>e.selected).map(e=>n?be(Jl(e)):Jl(e));e[Bl](e.multiple?i?new Set(t):t:t[0]),e._assigning=!0,sr(()=>{e._assigning=!1})}),e[Bl]=Ll(r)},mounted(e,{value:t}){ql(e,t)},beforeUpdate(e,t,n){e[Bl]=Ll(n)},updated(e,{value:t}){e._assigning||ql(e,t)}};function ql(e,t){let n=e.multiple,r=k(t);if(!(n&&!r&&!A(t))){for(let i=0,a=e.options.length;iString(e)===String(o)):a.selected=Le(t,o)>-1}else a.selected=t.has(o);else if(Ie(Jl(a),t)){e.selectedIndex!==i&&(e.selectedIndex=i);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Jl(e){return`_value`in e?e._value:e.value}function Yl(e,t){let n=t?`_trueValue`:`_falseValue`;return n in e?e[n]:t}var Xl={created(e,t,n){Ql(e,t,n,null,`created`)},mounted(e,t,n){Ql(e,t,n,null,`mounted`)},beforeUpdate(e,t,n,r){Ql(e,t,n,r,`beforeUpdate`)},updated(e,t,n,r){Ql(e,t,n,r,`updated`)}};function Zl(e,t){switch(e){case`SELECT`:return Kl;case`TEXTAREA`:return Hl;default:switch(t){case`checkbox`:return Ul;case`radio`:return Gl;default:return Hl}}}function Ql(e,t,n,r,i){let a=Zl(e.tagName,n.props&&n.props.type)[i];a&&a(e,t,n,r)}function $l(){Hl.getSSRProps=({value:e})=>({value:e}),Gl.getSSRProps=({value:e},t)=>{if(t.props&&Ie(t.props.value,e))return{checked:!0}},Ul.getSSRProps=({value:e},t)=>{if(k(e)){if(t.props&&Le(e,t.props.value)>-1)return{checked:!0}}else if(A(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},Xl.getSSRProps=(e,t)=>{if(typeof t.type!=`string`)return;let n=Zl(t.type.toUpperCase(),t.props&&t.props.type);if(n.getSSRProps)return n.getSSRProps(e,t)}}var eu=[`ctrl`,`shift`,`alt`,`meta`],tu={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>`button`in e&&e.button!==0,middle:e=>`button`in e&&e.button!==1,right:e=>`button`in e&&e.button!==2,exact:(e,t)=>eu.some(n=>e[`${n}Key`]&&!t.includes(n))},nu=(e,t)=>{let n=e._withMods||={},r=t.join(`.`);return n[r]||(n[r]=((n,...r)=>{for(let e=0;e{let n=e._withKeys||={},r=t.join(`.`);return n[r]||(n[r]=(n=>{if(!(`key`in n))return;let r=F(n.key);if(t.some(e=>e===r||ru[e]===r))return e(n)}))},au=D({patchProp:vl},yc),ou,su=!1;function cu(){return ou||=Lo(au)}function lu(){return ou=su?ou:Ro(au),su=!0,ou}var uu=((...e)=>{cu().render(...e)}),du=((...e)=>{lu().hydrate(...e)}),fu=((...e)=>{let t=cu().createApp(...e),{mount:n}=t;return t.mount=e=>{let r=hu(e);if(!r)return;let i=t._component;!j(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent=``);let a=n(r,!1,mu(r));return r instanceof Element&&(r.removeAttribute(`v-cloak`),r.setAttribute(`data-v-app`,``)),a},t}),pu=((...e)=>{let t=lu().createApp(...e),{mount:n}=t;return t.mount=e=>{let t=hu(e);if(t)return n(t,!0,mu(t))},t});function mu(e){if(e instanceof SVGElement)return`svg`;if(typeof MathMLElement==`function`&&e instanceof MathMLElement)return`mathml`}function hu(e){return M(e)?document.querySelector(e):e}var gu=!1,_u=()=>{gu||(gu=!0,$l(),Gc())},vu=e({BaseTransition:()=>Jr,BaseTransitionPropsValidators:()=>Wr,Comment:()=>J,DeprecationTypes:()=>null,EffectScope:()=>Ue,ErrorCodes:()=>Yn,ErrorTypeStrings:()=>cc,Fragment:()=>q,KeepAlive:()=>Ai,ReactiveEffect:()=>Je,Static:()=>ss,Suspense:()=>Yo,Teleport:()=>Lr,Text:()=>os,TrackOpTypes:()=>In,Transition:()=>Tc,TransitionGroup:()=>Ml,TriggerOpTypes:()=>Ln,VueElement:()=>wl,assertNumber:()=>Jn,callWithAsyncErrorHandling:()=>Qn,callWithErrorHandling:()=>Zn,camelize:()=>P,capitalize:()=>ge,cloneVNode:()=>ws,compatUtils:()=>null,compile:()=>yu,computed:()=>tc,createApp:()=>fu,createBlock:()=>hs,createCommentVNode:()=>Ds,createElementBlock:()=>ms,createElementVNode:()=>xs,createHydrationRenderer:()=>Ro,createPropsRestProxy:()=>Da,createRenderer:()=>Lo,createSSRApp:()=>pu,createSlots:()=>aa,createStaticVNode:()=>Es,createTextVNode:()=>Ts,createVNode:()=>X,customRef:()=>On,defineAsyncComponent:()=>Di,defineComponent:()=>ti,defineCustomElement:()=>xl,defineEmits:()=>ha,defineExpose:()=>ga,defineModel:()=>ya,defineOptions:()=>_a,defineProps:()=>ma,defineSSRCustomElement:()=>Sl,defineSlots:()=>va,devtools:()=>lc,effect:()=>st,effectScope:()=>We,getCurrentInstance:()=>Q,getCurrentScope:()=>Ge,getCurrentWatcher:()=>Vn,getTransitionRawChildren:()=>ei,guardReactiveProps:()=>Cs,h:()=>nc,handleError:()=>$n,hasInjectionContext:()=>Ya,hydrate:()=>du,hydrateOnIdle:()=>bi,hydrateOnInteraction:()=>wi,hydrateOnMediaQuery:()=>Ci,hydrateOnVisible:()=>Si,initCustomFormatter:()=>rc,initDirectivesForSSR:()=>_u,inject:()=>Ja,isMemoSame:()=>ac,isProxy:()=>mn,isReactive:()=>fn,isReadonly:()=>pn,isRef:()=>H,isRuntimeOnly:()=>Js,isShallow:()=>B,isVNode:()=>gs,markRaw:()=>hn,mergeDefaults:()=>Ta,mergeModels:()=>Ea,mergeProps:()=>js,nextTick:()=>sr,nodeOps:()=>yc,normalizeClass:()=>Ae,normalizeProps:()=>je,normalizeStyle:()=>Te,onActivated:()=>Mi,onBeforeMount:()=>Bi,onBeforeUnmount:()=>Wi,onBeforeUpdate:()=>Hi,onDeactivated:()=>Ni,onErrorCaptured:()=>Yi,onMounted:()=>Vi,onRenderTracked:()=>Ji,onRenderTriggered:()=>qi,onScopeDispose:()=>Ke,onServerPrefetch:()=>Ki,onUnmounted:()=>Gi,onUpdated:()=>Ui,onWatcherCleanup:()=>Hn,openBlock:()=>ls,patchProp:()=>vl,popScopeId:()=>Sr,provide:()=>qa,proxyRefs:()=>En,pushScopeId:()=>xr,queuePostFlushCb:()=>dr,reactive:()=>sn,readonly:()=>ln,ref:()=>vn,registerRuntimeCompiler:()=>qs,render:()=>uu,renderList:()=>ia,renderSlot:()=>oa,resolveComponent:()=>Qi,resolveDirective:()=>ta,resolveDynamicComponent:()=>ea,resolveFilter:()=>null,resolveTransitionHooks:()=>Xr,setBlockTracking:()=>fs,setDevtoolsHook:()=>uc,setTransitionHooks:()=>$r,shallowReactive:()=>cn,shallowReadonly:()=>un,shallowRef:()=>yn,ssrContextKey:()=>Xa,ssrUtils:()=>dc,stop:()=>ct,toDisplayString:()=>ze,toHandlerKey:()=>_e,toHandlers:()=>ca,toRaw:()=>V,toRef:()=>Mn,toRefs:()=>kn,toValue:()=>wn,transformVNodeArgs:()=>vs,triggerRef:()=>Sn,unref:()=>Cn,useAttrs:()=>Sa,useCssModule:()=>Dl,useCssVars:()=>qc,useHost:()=>Tl,useId:()=>ni,useModel:()=>ao,useSSRContext:()=>Za,useShadowRoot:()=>El,useSlots:()=>xa,useTemplateRef:()=>ii,useTransitionState:()=>Hr,vModelCheckbox:()=>Ul,vModelDynamic:()=>Xl,vModelRadio:()=>Gl,vModelSelect:()=>Kl,vModelText:()=>Hl,vShow:()=>Uc,version:()=>oc,warn:()=>sc,watch:()=>to,watchEffect:()=>Qa,watchPostEffect:()=>$a,watchSyncEffect:()=>eo,withAsyncContext:()=>Oa,withCtx:()=>wr,withDefaults:()=>ba,withDirectives:()=>Tr,withKeys:()=>iu,withMemo:()=>ic,withModifiers:()=>nu,withScopeId:()=>Cr}),yu=()=>{},bu=0;const xu=(e,t)=>{let n=v[e],r=n.costMultiplier**(t-1);return{metal:Math.floor(n.baseCost.metal*r),crystal:Math.floor(n.baseCost.crystal*r),deuterium:Math.floor(n.baseCost.deuterium*r),darkMatter:Math.floor(n.baseCost.darkMatter*r),energy:0}},Su=(e,t,n=0,r=1,i=0)=>{let a=v[e],o=a.baseTime*a.costMultiplier**+t,s=Math.max(1,r)*(1+i),c=1-n/100;return Math.floor(o/s*c)},Cu=(e,t,n)=>{let r=v[e];if(!r.requirements)return!0;for(let[e,i]of Object.entries(r.requirements))if(Object.values(a).includes(e)){if((t[e]||0){let r=Date.now();return bu++,{id:`research_${r}_${bu}`,type:`technology`,itemType:e,targetLevel:t,startTime:r,endTime:r+n*1e3}},Tu=(e,t,n,r)=>e.filter(e=>{if(n>=e.endTime){let n=t[e.itemType]||0,i=e.targetLevel||0;return t[e.itemType]=i,r&&i>n&&r(Au(e.itemType,n,i),`technology`,e.itemType,i),!1}return!0}),Eu=e=>e.metal+e.crystal+e.deuterium,Du=e=>Math.floor(e/1e3),Ou=(e,t)=>{e.points+=t},ku=(e,t,n)=>{let r=0;for(let i=t+1;i<=n;i++){let t=Eu(Pu(e,i));r+=Du(t)}return r},Au=(e,t,n)=>{let r=0;for(let i=t+1;i<=n;i++){let t=Eu(xu(e,i));r+=Du(t)}return r},ju=(e,t)=>{let n=u[e];return Du(Eu(n.cost))*t},Mu=(e,t)=>{let n=h[e];return Du(Eu(n.cost))*t};var Nu=0;const Pu=(e,t)=>{let n=f[e],r=n.costMultiplier**(t-1);return{metal:Math.floor(n.baseCost.metal*r),crystal:Math.floor(n.baseCost.crystal*r),deuterium:Math.floor(n.baseCost.deuterium*r),darkMatter:Math.floor(n.baseCost.darkMatter*r),energy:0}},Fu=(e,t,n=0,r=0,i=0)=>{let a=f[e],o=a.costMultiplier**(t-1),s=a.baseTime*o,c=1+r+i*2,l=1-n/100;return Math.floor(s/c*l)},Iu=e=>{let t=0;return Object.entries(e.buildings).forEach(([e,n])=>{if(n>0){let r=f[e];t+=r.spaceUsage*n}}),t},Lu=(e,t,n)=>{let r=f[e].requirements;if(!r)return!0;for(let[e,i]of Object.entries(r)){let r=i;if(Object.values(a).includes(e)){if((t.buildings[e]||0)Iu(e)+f[t].spaceUsage<=e.maxSpace,zu=(e,t,n)=>{let r=Date.now();return Nu++,{id:`build_${r}_${Nu}`,type:`building`,itemType:e,targetLevel:t,startTime:r,endTime:r+n*1e3}},Bu=(e,t,n)=>{e.buildQueue=e.buildQueue.filter(r=>{if(t>=r.endTime){if(r.type===`building`){let t=e.buildings[r.itemType]||0,i=r.targetLevel||0;e.buildings[r.itemType]=i,n&&i>t&&n(ku(r.itemType,t,i),`building`,r.itemType,i)}else if(r.type===`ship`){let t=r.itemType,i=r.quantity||0;e.fleet[t]=(e.fleet[t]||0)+i,n&&i>0&&n(ju(t,i),`ship`,r.itemType,void 0,i)}else if(r.type===`defense`){let t=r.itemType,i=r.quantity||0;e.defense[t]=(e.defense[t]||0)+i,n&&i>0&&n(Mu(t,i),`defense`,r.itemType,void 0,i)}else if(r.type===`demolish`){let t=r.itemType,n=e.buildings[t]||0;e.buildings[t]=Math.max(0,n-1)}return!1}return!0})},Vu=(e,t)=>{let n=Pu(e,t);return{metal:Math.floor(n.metal*.5),crystal:Math.floor(n.crystal*.5),deuterium:Math.floor(n.deuterium*.5),darkMatter:Math.floor(n.darkMatter*.5),energy:0}},Hu=(e,t,n=0,r=0,i=0)=>{let a=Fu(e,t,n,r,i);return Math.floor(a*.5)},Uu=(e,t,n)=>{let r=Date.now();return Nu++,{id:`demolish_${r}_${Nu}`,type:`demolish`,itemType:e,targetLevel:t-1,startTime:r,endTime:r+n*1e3}},Wu=e=>g[e].cost,Gu=(e,t)=>e.active&&(!e.expiresAt||e.expiresAt>t),Ku=(e,t)=>{let n=Date.now();return{type:e,active:!0,hiredAt:n,expiresAt:n+t*24*60*60*1e3}},qu=e=>({type:e,active:!1}),Ju=(e,t,n)=>{let r=e.expiresAt&&e.expiresAt>n?e.expiresAt:n;return{...e,active:!0,expiresAt:r+t*24*60*60*1e3}},Yu=(e,t)=>{let n={buildingSpeedBonus:0,researchSpeedBonus:0,resourceProductionBonus:0,darkMatterProductionBonus:0,energyProductionBonus:0,fleetSpeedBonus:0,fuelConsumptionReduction:0,defenseBonus:0,additionalBuildQueue:0,additionalFleetSlots:0,storageCapacityBonus:0};return Object.values(e).forEach(e=>{if(Gu(e,t)){let t=g[e.type];Object.entries(t.benefits).forEach(([e,t])=>{t!==void 0&&(n[e]+=t)})}}),n},Xu=(e,t)=>{Object.values(e).forEach(e=>{e.active&&e.expiresAt&&e.expiresAt<=t&&(e.active=!1)})};var Zu=0;const Qu=(e,t)=>{let n=u[e];return{metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t,energy:0}},$u=(e,t)=>{let n=h[e];return{metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t,energy:0}},ed=(e,t,n=0,r=0,i=0)=>{let a=u[e].buildTime*t,o=1+r+i*2,s=1-n/100;return Math.floor(a/o*s)},td=(e,t,n=0,r=0,i=0)=>{let a=h[e].buildTime*t,o=1+r+i*2,s=1-n/100;return Math.floor(a/o*s)},nd=(e,t,n)=>{let r=u[e];if(!r.requirements)return!0;for(let[e,i]of Object.entries(r.requirements))if(Object.values(a).includes(e)){if((t[e]||0){let r=h[e];if(!r.requirements)return!0;for(let[e,i]of Object.entries(r.requirements))if(Object.values(a).includes(e)){if((t[e]||0)!((e===o.SmallShieldDome||e===o.LargeShieldDome)&&((t[e]||0)>0||n>1)),ad=e=>(e[a.MissileSilo]||0)*10,od=e=>(e[o.InterplanetaryMissile]||0)+(e[o.AntiBallisticMissile]||0),sd=(e,t,n,r)=>{if(e!==o.InterplanetaryMissile&&e!==o.AntiBallisticMissile)return!0;let i=ad(n);return od(t)+r<=i},cd=(e,t,n)=>{let r=Date.now();return Zu++,{id:`ship_${r}_${Zu}`,type:`ship`,itemType:e,quantity:t,startTime:r,endTime:r+n*1e3}},ld=(e,t,n)=>{let r=Date.now();return Zu++,{id:`defense_${r}_${Zu}`,type:`defense`,itemType:e,quantity:t,startTime:r,endTime:r+n*1e3}},ud=(e,t)=>{for(let[n,r]of Object.entries(t))if((e[n]||0){let r=0;for(let[t,n]of Object.entries(e)){let e=u[t];r+=e.fuelConsumption*n}let i=0;if(n){let e=n.metal+n.crystal+n.deuterium+n.darkMatter;i=Math.floor(e/1e3)}let a=1-t/100;return Math.floor(r*a)+i},fd=(e,t=0)=>{let n=1/0;for(let[t,r]of Object.entries(e))if(r>0){let e=u[t];n=Math.min(n,e.speed)}let r=1+t/100;return Math.floor(n*r)},pd=(e,t)=>{for(let[n,r]of Object.entries(t))e[n]-=r},md=(e,t)=>{for(let[n,r]of Object.entries(t))r>0&&(e[n]+=r)},hd=(e,t=`Home Planet`)=>{let i={id:`planet1`,name:t,ownerId:e,position:{galaxy:1,system:1,position:1},resources:{metal:500,crystal:500,deuterium:0,darkMatter:0,energy:0},buildings:{},fleet:{[n.LightFighter]:0,[n.HeavyFighter]:0,[n.Cruiser]:0,[n.Battleship]:0,[n.Battlecruiser]:0,[n.Bomber]:0,[n.Destroyer]:0,[n.SmallCargo]:0,[n.LargeCargo]:0,[n.ColonyShip]:0,[n.Recycler]:0,[n.EspionageProbe]:0,[n.SolarSatellite]:0,[n.DarkMatterHarvester]:0,[n.Deathstar]:0},defense:{[o.RocketLauncher]:0,[o.LightLaser]:0,[o.HeavyLaser]:0,[o.GaussCannon]:0,[o.IonCannon]:0,[o.PlasmaTurret]:0,[o.SmallShieldDome]:0,[o.LargeShieldDome]:0,[o.AntiBallisticMissile]:0,[o.InterplanetaryMissile]:0,[o.PlanetaryShield]:0},buildQueue:[],lastUpdate:Date.now(),maxSpace:200,maxFleetStorage:r.baseStorage,isMoon:!1};return Object.values(a).forEach(e=>{i.buildings[e]=0}),i},gd=(e,t,i=`Planet`)=>{let s={id:`npc_planet_${e}`,name:`${i} ${t.galaxy}:${t.system}:${t.position}`,ownerId:`npc_${e}`,position:t,resources:{metal:Math.floor(Math.random()*1e4)+5e3,crystal:Math.floor(Math.random()*5e3)+2e3,deuterium:Math.floor(Math.random()*2e3)+500,darkMatter:Math.floor(Math.random()*100),energy:0},buildings:{},fleet:{[n.LightFighter]:Math.floor(Math.random()*50),[n.HeavyFighter]:Math.floor(Math.random()*20),[n.Cruiser]:Math.floor(Math.random()*10),[n.Battleship]:Math.floor(Math.random()*5),[n.Battlecruiser]:Math.floor(Math.random()*3),[n.Bomber]:Math.floor(Math.random()*2),[n.Destroyer]:Math.floor(Math.random()*2),[n.SmallCargo]:Math.floor(Math.random()*10),[n.LargeCargo]:Math.floor(Math.random()*5),[n.ColonyShip]:0,[n.Recycler]:0,[n.EspionageProbe]:0,[n.SolarSatellite]:Math.floor(Math.random()*20),[n.DarkMatterHarvester]:0,[n.Deathstar]:0},defense:{[o.RocketLauncher]:Math.floor(Math.random()*100),[o.LightLaser]:Math.floor(Math.random()*50),[o.HeavyLaser]:Math.floor(Math.random()*20),[o.GaussCannon]:Math.floor(Math.random()*10),[o.IonCannon]:Math.floor(Math.random()*10),[o.PlasmaTurret]:Math.floor(Math.random()*5),[o.SmallShieldDome]:Math.random()>.5?1:0,[o.LargeShieldDome]:Math.random()>.8?1:0,[o.AntiBallisticMissile]:Math.floor(Math.random()*3),[o.InterplanetaryMissile]:Math.floor(Math.random()*2),[o.PlanetaryShield]:0},buildQueue:[],lastUpdate:Date.now(),maxSpace:200,maxFleetStorage:r.baseStorage,isMoon:!1};return Object.values(a).forEach(e=>{s.buildings[e]=Math.floor(Math.random()*10)}),s},_d=e=>{let t=e.metal+e.crystal;if(t{if(!e.isMoon)return 0;let t=e.buildings[a.LunarBase]||0;return p.baseSize+t*p.lunarBaseSpaceBonus},yd=(e,t)=>{if(e.isMoon)return 0;let n=i.baseSize,r=e.buildings[a.Terraformer]||0;return n+=r*i.terraformerSpaceBonus,n+=t*i.terraformingTechSpaceBonus,n},bd=(e,t)=>{let n=e.buildings[a.SolarPlant]||0,r=e.buildings[a.FusionReactor]||0,i=e.fleet.solarSatellite||0,o=1+(t.energyProductionBonus||0)/100,s=n*50*1.1**n,c=r*150*1.15**r,l=i*50;return(s+c+l)*o},xd=e=>{let t=e.buildings[a.MetalMine]||0,n=e.buildings[a.CrystalMine]||0,r=e.buildings[a.DeuteriumSynthesizer]||0,i=t*10*1.1**t,o=n*10*1.1**n,s=r*15*1.1**r;return i+o+s},Sd=(e,t)=>{let n=e.buildings[a.MetalMine]||0,r=e.buildings[a.CrystalMine]||0,i=e.buildings[a.DeuteriumSynthesizer]||0,o=e.buildings[a.DarkMatterCollector]||0,s=1+(t.resourceProductionBonus||0)/100,c=1+(t.darkMatterProductionBonus||0)/100,l=bd(e,{energyProductionBonus:t.energyProductionBonus}),u=e.resources.energy>0?1:0;return{metal:n*1500*1.5**n*s*u,crystal:r*1e3*1.5**r*s*u,deuterium:i*500*1.5**i*s*u,darkMatter:o*25*1.5**o*c,energy:l}},Cd=(e,t)=>{let n=e.buildings[a.MetalStorage]||0,r=e.buildings[a.CrystalStorage]||0,i=e.buildings[a.DeuteriumTank]||0,o=e.buildings[a.DarkMatterTank]||0,s=e.buildings[a.SolarPlant]||0,c=1+(t||0)/100,l=1e4;return{metal:l*2**n*c,crystal:l*2**r*c,deuterium:l*2**i*c,darkMatter:1e3*2**o*c,energy:1e3+s*500}},wd=(e,t,n)=>{let r=(t-e.lastUpdate)/1e3,i=xd(e),a=bd(e,{energyProductionBonus:n.energyProductionBonus});e.resources.energy+=a*r/3600;let o=Cd(e,n.storageCapacityBonus);e.resources.energy=Math.min(e.resources.energy,o.energy),e.resources.energy-=i*r/3600,e.resources.energy=Math.max(0,e.resources.energy);let s=Sd(e,{resourceProductionBonus:n.resourceProductionBonus,darkMatterProductionBonus:n.darkMatterProductionBonus,energyProductionBonus:n.energyProductionBonus});e.resources.metal+=s.metal*r/3600,e.resources.crystal+=s.crystal*r/3600,e.resources.deuterium+=s.deuterium*r/3600,e.resources.darkMatter+=s.darkMatter*r/3600,e.resources.metal=Math.min(e.resources.metal,o.metal),e.resources.crystal=Math.min(e.resources.crystal,o.crystal),e.resources.deuterium=Math.min(e.resources.deuterium,o.deuterium),e.resources.darkMatter=Math.min(e.resources.darkMatter,o.darkMatter),e.lastUpdate=t},Td=(e,t)=>e.metal>=t.metal&&e.crystal>=t.crystal&&e.deuterium>=t.deuterium&&e.darkMatter>=t.darkMatter,Ed=(e,t)=>{e.metal-=t.metal,e.crystal-=t.crystal,e.deuterium-=t.deuterium,e.darkMatter-=t.darkMatter},Dd=(e,t)=>{e.metal+=t.metal,e.crystal+=t.crystal,e.deuterium+=t.deuterium,e.darkMatter+=t.darkMatter},Od=(e,t,n)=>{let r=e.buildings[a.MetalMine]||0,i=e.buildings[a.CrystalMine]||0,o=e.buildings[a.DeuteriumSynthesizer]||0,s=e.buildings[a.DarkMatterCollector]||0,c=e.buildings[a.SolarPlant]||0,l=e.resources.energy>0,u=l?1:0,d=[];Object.values(t).forEach(e=>{if(Gu(e,n)){let t=g[e.type];d.push({type:e.type,name:t.name,resourceBonus:t.benefits.resourceProductionBonus||0,darkMatterBonus:t.benefits.darkMatterProductionBonus||0,energyBonus:t.benefits.energyProductionBonus||0})}});let f=d.reduce((e,t)=>e+t.resourceBonus,0),p=d.reduce((e,t)=>e+t.darkMatterBonus,0),m=d.reduce((e,t)=>e+t.energyBonus,0),h=r*1500*1.5**r,_=[];d.forEach(e=>{if(e.resourceBonus>0){let t=h*(e.resourceBonus/100);_.push({name:`officers.${e.type}`,percentage:e.resourceBonus,value:t,source:`officer`})}}),l||_.push({name:`resources.noEnergy`,percentage:-100,value:-h*(1+f/100),source:`other`});let v=h*(1+f/100)*u,y=i*1e3*1.5**i,b=[];d.forEach(e=>{if(e.resourceBonus>0){let t=y*(e.resourceBonus/100);b.push({name:`officers.${e.type}`,percentage:e.resourceBonus,value:t,source:`officer`})}}),l||b.push({name:`resources.noEnergy`,percentage:-100,value:-y*(1+f/100),source:`other`});let x=y*(1+f/100)*u,S=o*500*1.5**o,C=[];d.forEach(e=>{if(e.resourceBonus>0){let t=S*(e.resourceBonus/100);C.push({name:`officers.${e.type}`,percentage:e.resourceBonus,value:t,source:`officer`})}}),l||C.push({name:`resources.noEnergy`,percentage:-100,value:-S*(1+f/100),source:`other`});let w=S*(1+f/100)*u,T=s*25*1.5**s,E=[];d.forEach(e=>{if(e.darkMatterBonus>0){let t=T*(e.darkMatterBonus/100);E.push({name:`officers.${e.type}`,percentage:e.darkMatterBonus,value:t,source:`officer`})}});let D=T*(1+p/100),ee=e.buildings[a.FusionReactor]||0,te=e.fleet.solarSatellite||0,O=c*50*1.1**c,k=ee*150*1.15**ee,ne=te*50,A=O+k+ne,re=[];c>0&&re.push({name:`buildings.solarPlant`,level:c,production:O}),ee>0&&re.push({name:`buildings.fusionReactor`,level:ee,production:k}),te>0&&re.push({name:`ships.solarSatellite`,level:te,production:ne});let ie=[];d.forEach(e=>{if(e.energyBonus>0){let t=A*(e.energyBonus/100);ie.push({name:`officers.${e.type}`,percentage:e.energyBonus,value:t,source:`officer`})}});let j=A*(1+m/100);return{metal:{baseProduction:h,buildingLevel:r,buildingName:`buildings.metalMine`,bonuses:_,finalProduction:v},crystal:{baseProduction:y,buildingLevel:i,buildingName:`buildings.crystalMine`,bonuses:b,finalProduction:x},deuterium:{baseProduction:S,buildingLevel:o,buildingName:`buildings.deuteriumSynthesizer`,bonuses:C,finalProduction:w},darkMatter:{baseProduction:T,buildingLevel:s,buildingName:`buildings.darkMatterCollector`,bonuses:E,finalProduction:D},energy:{baseProduction:A,buildingLevel:c,buildingName:`buildings.solarPlant`,bonuses:ie,finalProduction:j,sources:re}}},kd=e=>{let t=e.buildings[a.MetalMine]||0,n=e.buildings[a.CrystalMine]||0,r=e.buildings[a.DeuteriumSynthesizer]||0,i=t*10*1.1**t,o=n*10*1.1**n,s=r*15*1.1**r;return{metalMine:{buildingLevel:t,buildingName:`buildings.metalMine`,consumption:i},crystalMine:{buildingLevel:n,buildingName:`buildings.crystalMine`,consumption:o},deuteriumSynthesizer:{buildingLevel:r,buildingName:`buildings.deuteriumSynthesizer`,consumption:s},total:i+o+s}},Ad=(e,t=`Commander`)=>{let n={id:e,name:t,planets:[],technologies:{},officers:{},researchQueue:[],fleetMissions:[],missileAttacks:[],battleReports:[],spyReports:[],spiedNotifications:[],npcActivityNotifications:[],missionReports:[],incomingFleetAlerts:[],giftNotifications:[],giftRejectedNotifications:[],diplomaticRelations:{},diplomaticReports:[],points:0};return Object.values(y).forEach(e=>{n.technologies[e]=0}),Object.values(c).forEach(e=>{n.officers[e]=qu(e)}),n},jd=e=>e.length===0,Md=(e,t,n=10)=>{let r=[];for(let e=1;e<=n;e++)r.push({position:e,planet:null});return r},Nd=()=>({galaxy:Math.floor(Math.random()*9)+1,system:Math.floor(Math.random()*10)+1,position:Math.floor(Math.random()*10)+1}),Pd=(e,t,n)=>`${e}:${t}:${n}`,Fd=(e,t)=>{let n=Yu(e.officers,t),r=(t,n,r,i,a)=>{Ou(e,t)};return e.planets.forEach(e=>{wd(e,t,n)}),e.planets.forEach(n=>{Bu(n,t,r),n.isMoon?n.maxSpace=vd(n):n.maxSpace=yd(n,e.technologies[y.TerraformingTechnology]||0)}),{updatedResearchQueue:Tu(e.researchQueue,e.technologies,t,r)}},Id=(e,t)=>{Xu(e,t)},Ld=(e,t)=>{let n={};if(e.requirements&&Object.assign(n,e.requirements),e.levelRequirements){let r=Object.keys(e.levelRequirements).map(Number).filter(e=>e<=t).sort((e,t)=>e-t);for(let t of r){let r=e.levelRequirements[t];if(r)for(let[e,t]of Object.entries(r)){let r=n[e]||0;n[e]=Math.max(r,t)}}}return n},Rd=(e,t,n)=>{if(!e||!n)return!0;for(let[r,i]of Object.entries(n))if(Object.values(a).includes(r)){if((e.buildings[r]||0)Sd(e,Yu(t,Date.now())),Bd=(e,t)=>Cd(e,Yu(t,Date.now()).storageCapacityBonus),Vd=(e,t=0)=>{let n=e.buildings[a.NaniteFactory]||0;return Math.min(1+n+t,10)},Hd=e=>{let t=e[y.ComputerTechnology]||0;return Math.min(1+t,10)},Ud=(e=0)=>Math.min(1+e,10),Wd=(e,t,n,r)=>{let i=Pu(t,(e.buildings[t]||0)+1),a=f[t];if(e.buildQueue.find(e=>(e.type===`building`||e.type===`demolish`)&&e.itemType===t))return{valid:!1,reason:`errors.buildingAlreadyInQueue`};if(a.planetOnly&&e.isMoon)return{valid:!1,reason:`errors.planetOnly`};if(a.moonOnly&&!e.isMoon)return{valid:!1,reason:`errors.moonOnly`};let o=Vd(e,Yu(r,Date.now()).additionalBuildQueue);return e.buildQueue.filter(e=>e.type===`building`||e.type===`demolish`).length>=o?{valid:!1,reason:`errors.buildQueueFull`}:Ru(e,t)?Td(e.resources,i)?Lu(t,e,n)?{valid:!0}:{valid:!1,reason:`errors.requirementsNotMet`}:{valid:!1,reason:`errors.insufficientResources`}:{valid:!1,reason:`errors.insufficientSpace`}},Gd=(e,t,n)=>{let r=(e.buildings[t]||0)+1,i=Pu(t,r),o=Yu(n,Date.now()),s=e.buildings[a.RoboticsFactory]||0,c=e.buildings[a.NaniteFactory]||0,l=Fu(t,r,o.buildingSpeedBonus,s,c);return Ed(e.resources,i),zu(t,r,l)},Kd=(e,t)=>{let n=Pu(t.itemType,t.targetLevel||1);return{metal:Math.floor(n.metal*.5),crystal:Math.floor(n.crystal*.5),deuterium:Math.floor(n.deuterium*.5),darkMatter:Math.floor(n.darkMatter*.5),energy:0}},qd=(e,t)=>{let n=e.findIndex(e=>e.id===t);return n===-1?{item:null,index:-1}:{item:e[n]||null,index:n}},Jd=(e,t,n)=>{if((e.buildings[t]||0)<=0)return{valid:!1,reason:`errors.buildingLevelZero`};let r=Vd(e,Yu(n,Date.now()).additionalBuildQueue);return e.buildQueue.filter(e=>e.type===`building`||e.type===`demolish`).length>=r?{valid:!1,reason:`errors.buildQueueFull`}:{valid:!0}},Yd=(e,t,n)=>{let r=e.buildings[t]||0,i=Yu(n,Date.now()),o=e.buildings[a.RoboticsFactory]||0,s=e.buildings[a.NaniteFactory]||0,c=Hu(t,r,i.buildingSpeedBonus,o,s),l=Vu(t,r);return e.resources.metal+=l.metal,e.resources.crystal+=l.crystal,e.resources.deuterium+=l.deuterium,e.resources.darkMatter+=l.darkMatter,Uu(t,r,c)},Xd=(e,t,n,r)=>{let i=xu(t,(n[t]||0)+1);if(r.find(e=>e.type===`technology`&&e.itemType===t))return{valid:!1,reason:`errors.technologyAlreadyInQueue`};let a=Hd(n);return r.length>=a?{valid:!1,reason:`errors.researchQueueFull`}:Cu(t,e.buildings,n)?Td(e.resources,i)?{valid:!0}:{valid:!1,reason:`errors.insufficientResources`}:{valid:!1,reason:`errors.requirementsNotMet`}},Zd=(e,t,n,r,i)=>{let o=n+1,s=xu(t,o),c=Yu(r,Date.now()),l=e.buildings[a.ResearchLab]||1,u=i[y.EnergyTechnology]||0,d=Su(t,n,c.researchSpeedBonus,l,u);return Ed(e.resources,s),{queueItem:wu(t,o,d)}},Qd=e=>{let t=xu(e.itemType,e.targetLevel||1);return{metal:Math.floor(t.metal*.5),crystal:Math.floor(t.crystal*.5),deuterium:Math.floor(t.deuterium*.5),darkMatter:Math.floor(t.darkMatter*.5),energy:0}};function $d(e){return new Worker(``+new URL(`battle.worker-CkRIHUu5.js`,import.meta.url).href,{name:e?.name})}var ef=e=>{if(typeof e!=`object`||!e)return e;let t=V(e);if(Array.isArray(t))return t.map(e=>ef(e));if(t&&typeof t==`object`){let e={};for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=ef(t[n]));return e}return t};const tf=new class{constructor(){this.battleWorker=null,this.pendingTasks=new Map,this.messageIdCounter=0,this.defaultTimeout=1e4}initBattleWorker(){this.battleWorker||(this.battleWorker=new $d,this.setupWorkerHandlers(this.battleWorker,`Battle`))}setupWorkerHandlers(e,t){e.onmessage=e=>{let{id:t,success:n,data:r,error:i}=e.data,a=this.pendingTasks.get(t);if(!a){console.warn(`[WorkerManager] No pending task found for message ID: ${t}`);return}a.timeout&&clearTimeout(a.timeout),this.pendingTasks.delete(t),n?a.resolve(r):a.reject(Error(i||`Worker task failed`))},e.onerror=e=>{console.error(`[WorkerManager] ${t} worker error:`,e);for(let e of this.pendingTasks.values())e.timeout&&clearTimeout(e.timeout),e.reject(Error(`${t} worker crashed`));this.pendingTasks.clear(),t===`Battle`&&(this.battleWorker=null)}}generateMessageId(){return`msg_${Date.now()}_${++this.messageIdCounter}`}getWorkerByType(e){if(e===_.SIMULATE_BATTLE||e===_.CALCULATE_PLUNDER||e===_.CALCULATE_DEBRIS)return this.initBattleWorker(),this.battleWorker;throw Error(`Unknown message type: ${e}`)}sendMessage(e,t,n=this.defaultTimeout){let r=this.getWorkerByType(e);if(!r)return Promise.reject(Error(`Worker initialization failed`));let i=this.generateMessageId();return new Promise((a,o)=>{let s=setTimeout(()=>{this.pendingTasks.delete(i),o(Error(`Worker task timeout after ${n}ms`))},n);this.pendingTasks.set(i,{resolve:a,reject:o,timeout:s});let c={id:i,type:e,payload:ef(t)};r.postMessage(c)})}async simulateBattle(e){return this.sendMessage(_.SIMULATE_BATTLE,e)}async calculatePlunder(e){return this.sendMessage(_.CALCULATE_PLUNDER,e)}async calculateDebris(e){return this.sendMessage(_.CALCULATE_DEBRIS,e)}destroy(){this.battleWorker&&=(this.battleWorker.terminate(),null);for(let e of this.pendingTasks.values())e.timeout&&clearTimeout(e.timeout),e.reject(Error(`Worker manager destroyed`));this.pendingTasks.clear()}getPendingTaskCount(){return this.pendingTasks.size}},nf=async(e,t,n,r,i,a,o,s)=>{let c=o.weaponsTechnology||0,l=o.shieldingTechnology||0,u=o.armourTechnology||0,d=s.weaponsTechnology||0,f=s.shieldingTechnology||0,m=s.armourTechnology||0,h=await tf.simulateBattle({attacker:{ships:e,weaponTech:c,shieldTech:l,armorTech:u},defender:{ships:t,defense:n,weaponTech:d,shieldTech:f,armorTech:m},maxRounds:6}),g=h.winner===`attacker`?await tf.calculatePlunder({defenderResources:r,attackerFleet:h.attackerRemaining}):{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},_=await tf.calculateDebris({attackerLosses:h.attackerLosses,defenderLosses:h.defenderLosses}),v=_.metal+_.crystal,y=Math.min(p.baseChance+Math.floor(v/p.chancePerDebris),p.maxChance)/100;return{id:`battle_${Date.now()}`,timestamp:Date.now(),attackerId:``,defenderId:``,attackerPlanetId:``,defenderPlanetId:``,attackerFleet:e,defenderFleet:t,defenderDefense:n,attackerLosses:h.attackerLosses,defenderLosses:h.defenderLosses,winner:h.winner,plunder:g,debrisField:_,rounds:h.rounds,attackerRemaining:h.attackerRemaining,defenderRemaining:h.defenderRemaining,roundDetails:h.roundDetails,moonChance:y}},rf=(e,t)=>{let n={...t};return Object.keys(e).forEach(r=>{let i=e[r]||0,a=t[r]||0,o=i-a;o>0&&(n[r]=a+Math.floor(o*.7))}),n},af=e=>{let t=e.metal+e.crystal;if(t{let c=af(e);if(c===0||Math.random()*100>=c)return null;let l={id:`moon_${Date.now()}`,name:`Moon [${t.galaxy}:${t.system}:${t.position}]`,ownerId:s,position:t,resources:{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},buildings:{},fleet:{[n.LightFighter]:0,[n.HeavyFighter]:0,[n.Cruiser]:0,[n.Battleship]:0,[n.Battlecruiser]:0,[n.Bomber]:0,[n.Destroyer]:0,[n.SmallCargo]:0,[n.LargeCargo]:0,[n.ColonyShip]:0,[n.Recycler]:0,[n.EspionageProbe]:0,[n.SolarSatellite]:0,[n.DarkMatterHarvester]:0,[n.Deathstar]:0},defense:{[o.RocketLauncher]:0,[o.LightLaser]:0,[o.HeavyLaser]:0,[o.GaussCannon]:0,[o.IonCannon]:0,[o.PlasmaTurret]:0,[o.SmallShieldDome]:0,[o.LargeShieldDome]:0,[o.AntiBallisticMissile]:0,[o.InterplanetaryMissile]:0,[o.PlanetaryShield]:0},buildQueue:[],lastUpdate:Date.now(),maxSpace:p.baseSize,maxFleetStorage:r.baseStorage,isMoon:!0,parentPlanetId:i};return Object.values(a).forEach(e=>{l.buildings[e]=0}),l},sf=(e,t,n)=>{if(e.find(e=>e.position.galaxy===t.galaxy&&e.position.system===t.system&&e.position.position===t.position&&e.isMoon))return{canCreate:!1,reason:`errors.moonExists`};let r=_d(n);return r===0?{canCreate:!1,reason:`errors.insufficientDebris`,chance:r}:{canCreate:!0,chance:r}},cf=e=>Math.random()*100<=e;var $=(e,n,r)=>{let i=e.split(`.`),a=t[n];for(let t of i)if(a&&typeof a==`object`&&t in a)a=a[t];else return e;let o=typeof a==`string`?a:e;return r&&Object.entries(r).forEach(([e,t])=>{o=o.replace(RegExp(`\\{${e}\\}`,`g`),String(t))}),o};const lf=e=>e<=l.HOSTILE_THRESHOLD?s.Hostile:e>=l.FRIENDLY_THRESHOLD?s.Friendly:s.Neutral,uf=(e,t)=>({fromId:e,toId:t,reputation:0,status:s.Neutral,lastUpdated:Date.now(),history:[]}),df=(e,t,n,r)=>{let i=e.reputation,a=Math.max(l.MIN_REPUTATION,Math.min(l.MAX_REPUTATION,i+t)),o=lf(a);return e.history||=[],e.history.push({timestamp:Date.now(),change:t,reason:n,details:r}),e.history.length>50&&(e.history=e.history.slice(-50)),{...e,reputation:a,status:o,lastUpdated:Date.now()}},ff=e=>{let{REPUTATION_CHANGES:t}=l,n=e.metal+e.crystal*1.5+e.deuterium*3;if(n(e[n]||(e[n]=uf(t,n)),e[n]),mf=(e,t)=>{let{GIFT_ACCEPTANCE_CONFIG:n}=l,r=e.relations?.[t.id]?.reputation||0,i=n.NPC_REJECTION_BASE_PROBABILITY;return r<0?i+=Math.abs(r)*n.NPC_REJECTION_REPUTATION_MODIFIER:r>0&&(i-=r*n.NPC_REJECTION_REPUTATION_MODIFIER),Math.max(n.MIN_REJECTION_PROBABILITY,Math.min(n.MAX_REJECTION_PROBABILITY,i))},hf=(e,t,n,r)=>{let i=mf(n,t);if(Math.random(){let{GIFT_ACCEPTANCE_CONFIG:i}=l;e.giftRejectedNotifications||=[];let a=t.relations?.[e.id]?.reputation||0,o={id:`gift-rejected-${Date.now()}-${Math.random()}`,timestamp:Date.now(),npcId:t.id,npcName:t.name,rejectedResources:n,currentReputation:a,reason:a<-20?`hostile`:a<20?`neutral_distrust`:`polite_decline`,read:!1};e.giftRejectedNotifications.push(o),e.giftRejectedNotifications.length>50&&(e.giftRejectedNotifications=e.giftRejectedNotifications.slice(-50)),t.relations||={};let s=pf(t.relations,t.id,e.id);t.relations[e.id]=df(s,i.REJECTION_REPUTATION_PENALTY,m.GiftResources,$(`diplomacy.reports.rejectedPlayerGift`,r)),xf(e,t,m.GiftResources,i.REJECTION_REPUTATION_PENALTY,$(`diplomacy.reports.npcRejectedGift`,r,{npcName:t.name,reputation:i.REJECTION_REPUTATION_PENALTY.toString()}))};const _f=(e,t,n,r,i)=>{let{REPUTATION_CHANGES:a}=l,o=a.ATTACK;n.winner===`attacker`&&(o=a.ATTACK_WIN),e.diplomaticRelations||={};let s=pf(e.diplomaticRelations,e.id,t.id);e.diplomaticRelations[t.id]=df(s,o,m.Attack,$(`diplomacy.reports.attackedNpc`,i,{npcName:t.name})),t.relations||={};let c=pf(t.relations,t.id,e.id);t.relations[e.id]=df(c,o,m.Attack,$(`diplomacy.reports.wasAttackedByPlayer`,i)),t.allies&&t.allies.length>0&&vf(e,t,r,i),xf(e,t,m.Attack,-o,$(`diplomacy.reports.youAttackedNpc`,i,{npcName:t.name}))},vf=(e,t,n,r)=>{let{REPUTATION_CHANGES:i}=l;n.filter(e=>t.allies?.includes(e.id)).forEach(n=>{n.relations||={};let a=pf(n.relations,n.id,e.id);n.relations[e.id]=df(a,i.ALLY_ATTACKED,m.AllyAttacked,$(`diplomacy.reports.playerAttackedAlly`,r,{allyName:t.name})),xf(e,n,m.AllyAttacked,i.ALLY_ATTACKED,$(`diplomacy.reports.allyDispleased`,r,{allyName:n.name,targetName:t.name}))})},yf=(e,t,n,r)=>{let{REPUTATION_CHANGES:i}=l,a=n?i.SPY_DETECTED:i.SPY_UNDETECTED;t.relations||={};let o=pf(t.relations,t.id,e.id);t.relations[e.id]=df(o,a,m.Spy,$(`diplomacy.reports.wasSpiedByPlayer`,r,{detected:n?`true`:`false`})),n&&xf(e,t,m.Spy,a,$(`diplomacy.reports.spyDetected`,r,{npcName:t.name}))},bf=(e,t,n,r)=>{let{REPUTATION_CHANGES:i}=l,a=n.find(e=>e.planets.some(e=>e.position.galaxy===t.galaxy&&e.position.system===t.system&&e.position.position===t.position));if(a){e.diplomaticRelations||={};let t=pf(e.diplomaticRelations,e.id,a.id);e.diplomaticRelations[a.id]=df(t,i.STEAL_DEBRIS,m.StealDebris,$(`diplomacy.reports.stoleDebrisFromTerritory`,r,{npcName:a.name})),a.relations||={};let n=pf(a.relations,a.id,e.id);a.relations[e.id]=df(n,i.STEAL_DEBRIS,m.StealDebris,$(`diplomacy.reports.playerStoleDebris`,r)),xf(e,a,m.StealDebris,i.STEAL_DEBRIS,$(`diplomacy.reports.recycledDebrisNearNpc`,r,{npcName:a.name}))}};var xf=(e,t,n,r,i)=>{e.diplomaticReports||=[],e.diplomaticRelations||={};let a=e.diplomaticRelations[t.id]||uf(e.id,t.id),o=a.status,s=Math.max(l.MIN_REPUTATION,Math.min(l.MAX_REPUTATION,a.reputation+r)),c=lf(s),u={id:`diplomatic-${Date.now()}-${Math.random()}`,timestamp:Date.now(),npcId:t.id,npcName:t.name,eventType:n,reputationChange:r,newReputation:s,oldStatus:o,newStatus:c,message:i,read:!1};e.diplomaticReports.push(u),e.diplomaticReports.length>100&&(e.diplomaticReports=e.diplomaticReports.slice(-100))};const Sf=(e,t,n)=>{let{GIFT_ACCEPTANCE_CONFIG:r}=l;t.giftNotifications||=[];let i=e.relations?.[t.id]?.reputation||0,a=Math.floor(ff(n)*.5),o={id:`gift-${Date.now()}-${Math.random()}`,timestamp:Date.now(),fromNpcId:e.id,fromNpcName:e.name,resources:n,currentReputation:i,expectedReputationGain:a,expiresAt:Date.now()+r.GIFT_EXPIRATION_DAYS*24*3600*1e3,read:!1};t.giftNotifications.push(o),t.giftNotifications.length>50&&(t.giftNotifications=t.giftNotifications.slice(-50))},Cf=(e,t,n,r)=>{if(e.planets&&e.planets.length>0){let t=e.planets[0];t&&(t.resources.metal+=n.resources.metal,t.resources.crystal+=n.resources.crystal,t.resources.deuterium+=n.resources.deuterium,t.resources.darkMatter+=n.resources.darkMatter)}t.relations||={};let i=pf(t.relations,t.id,e.id);t.relations[e.id]=df(i,n.expectedReputationGain,m.GiftResources,$(`diplomacy.reports.giftedResourcesToPlayer`,r)),e.diplomaticRelations||={};let a=pf(e.diplomaticRelations,e.id,t.id);e.diplomaticRelations[t.id]=df(a,n.expectedReputationGain,m.GiftResources,$(`diplomacy.reports.receivedGiftFromNpc`,r,{npcName:t.name})),xf(e,t,m.GiftResources,n.expectedReputationGain,$(`diplomacy.reports.acceptedGiftFromNpc`,r,{npcName:t.name,metal:n.resources.metal.toString(),crystal:n.resources.crystal.toString(),deuterium:n.resources.deuterium.toString()})),e.giftNotifications&&=e.giftNotifications.filter(e=>e.id!==n.id)},wf=(e,t,n,r)=>{let{GIFT_ACCEPTANCE_CONFIG:i}=l;t.relations||={};let a=pf(t.relations,t.id,e.id);t.relations[e.id]=df(a,i.REJECTION_REPUTATION_PENALTY,m.GiftResources,$(`diplomacy.reports.playerRejectedGift`,r)),xf(e,t,m.GiftResources,i.REJECTION_REPUTATION_PENALTY,$(`diplomacy.reports.rejectedGiftFromNpc`,r,{npcName:t.name,reputation:i.REJECTION_REPUTATION_PENALTY.toString()})),e.giftNotifications&&=e.giftNotifications.filter(e=>e.id!==n.id)},Tf=(e,t)=>e.galaxy===t.galaxy&&e.system===t.system&&e.position===t.position?5:e.galaxy===t.galaxy&&e.system===t.system?1e3+Math.abs(t.position-e.position)*5:e.galaxy===t.galaxy?2700+Math.abs(t.system-e.system)*95:2e4+Math.abs(t.galaxy-e.galaxy)*2e4,Ef=(e,t)=>Math.max(10,Math.floor(e*1e4/t)),Df=(e,t,n,r,i,a,o)=>{let s=Date.now();return{id:`mission_${s}`,playerId:e,originPlanetId:t,targetPosition:n,missionType:r,fleet:i,cargo:a,departureTime:s,arrivalTime:s+o*1e3,returnTime:s+o*2*1e3,status:`outbound`}},Of=(e,t,n,r,i=`zh-CN`)=>{if(e.isGift&&e.giftTargetNpcId&&n&&r){let t=r.find(t=>t.id===e.giftTargetNpcId);if(t){let r=hf(e,n,t,i);return e.status=`returning`,r.accepted?(e.cargo={metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},{success:!0,reputationGain:r.reputationGain}):{success:!1,reputationGain:void 0}}}return t?(t.resources.metal+=e.cargo.metal,t.resources.crystal+=e.cargo.crystal,t.resources.deuterium+=e.cargo.deuterium,t.resources.darkMatter+=e.cargo.darkMatter,e.status=`returning`,e.cargo={metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},{success:!0}):(e.status=`returning`,e.cargo={metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},{success:!1})},kf=async(e,t,n,r,i)=>{if(!t||t.ownerId===n.id)return e.status=`returning`,null;let a=await nf(e.fleet,t.fleet,t.defense,t.resources,n.officers,r?.officers||{},n.technologies,r?.technologies||{});a.id=`battle_${Date.now()}`,a.attackerId=n.id,a.defenderId=t.ownerId||`unknown`,a.attackerPlanetId=e.originPlanetId,a.defenderPlanetId=t.id,e.cargo=a.plunder;let o={};Object.entries(e.fleet).forEach(([e,t])=>{let n=t-(a.attackerLosses[e]||0);n>0&&(o[e]=n)}),e.fleet=o,Object.entries(a.defenderLosses.fleet).forEach(([e,n])=>{t.fleet[e]=Math.max(0,t.fleet[e]-n)}),Object.entries(a.defenderLosses.defense).forEach(([e,n])=>{t.defense[e]=Math.max(0,t.defense[e]-n)});let s={...t.defense};Object.entries(a.defenderLosses.defense).forEach(([e,t])=>{s[e]=(s[e]||0)+t}),t.defense=rf(s,t.defense),t.resources.metal-=a.plunder.metal,t.resources.crystal-=a.plunder.crystal,t.resources.deuterium-=a.plunder.deuterium,e.status=`returning`;let c=null,l=sf(i,t.position,a.debrisField);l.canCreate&&l.chance&&cf(l.chance)&&(c=of(a.debrisField,t.position,t.id,t.ownerId||`unknown`));let u=null;return a.debrisField.metal+a.debrisField.crystal>0&&(u={id:`debris_${t.position.galaxy}_${t.position.system}_${t.position.position}`,position:t.position,resources:{metal:a.debrisField.metal,crystal:a.debrisField.crystal},createdAt:Date.now()}),{battleResult:a,moon:c,debrisField:u}},Af=async(e,t,n,r,i)=>{let a=await nf(t.fleet,n.fleet,n.defense,n.resources,{},r.officers||{},e.technologies,r.technologies);a.id=`battle_${Date.now()}`,a.attackerId=e.id,a.defenderId=r.id,a.attackerPlanetId=t.originPlanetId,a.defenderPlanetId=n.id,a.timestamp=Date.now(),a.winner===`attacker`&&a.plunder&&e.planets.find(e=>e.id===t.originPlanetId)&&(t.cargo=a.plunder);let o={};Object.entries(t.fleet).forEach(([e,t])=>{let n=t-(a.attackerLosses[e]||0);n>0&&(o[e]=n)}),t.fleet=o,Object.entries(a.defenderLosses.fleet).forEach(([e,t])=>{n.fleet[e]=Math.max(0,(n.fleet[e]||0)-t)}),Object.entries(a.defenderLosses.defense).forEach(([e,t])=>{n.defense[e]=Math.max(0,(n.defense[e]||0)-t)});let s={...n.defense};Object.entries(a.defenderLosses.defense).forEach(([e,t])=>{s[e]=(s[e]||0)+t}),n.defense=rf(s,n.defense),a.plunder&&(n.resources.metal=Math.max(0,n.resources.metal-a.plunder.metal),n.resources.crystal=Math.max(0,n.resources.crystal-a.plunder.crystal),n.resources.deuterium=Math.max(0,n.resources.deuterium-a.plunder.deuterium)),t.status=`returning`;let c=null,l=sf(i,n.position,a.debrisField);l.canCreate&&l.chance&&cf(l.chance)&&(c=of(a.debrisField,n.position,n.id,n.ownerId||`unknown`));let u=null;return a.debrisField.metal+a.debrisField.crystal>0&&(u={id:`debris_${n.position.galaxy}_${n.position.system}_${n.position.position}`,position:n.position,resources:{metal:a.debrisField.metal,crystal:a.debrisField.crystal},createdAt:Date.now()}),{battleResult:a,moon:c,debrisField:u}},jf=e=>1+e,Mf=e=>{let t=jf(e.technologies[y.Astrophysics]||0);return e.planets.length{if(t||!Mf(i))return e.status=`returning`,null;let c={id:`planet_${Date.now()}`,name:`${s} ${e.targetPosition.galaxy}:${e.targetPosition.system}:${e.targetPosition.position}`,ownerId:i.id,position:e.targetPosition,resources:{metal:500,crystal:500,deuterium:0,darkMatter:0,energy:0},buildings:{},fleet:{[n.LightFighter]:0,[n.HeavyFighter]:0,[n.Cruiser]:0,[n.Battleship]:0,[n.Battlecruiser]:0,[n.Bomber]:0,[n.Destroyer]:0,[n.SmallCargo]:0,[n.LargeCargo]:0,[n.ColonyShip]:0,[n.Recycler]:0,[n.EspionageProbe]:0,[n.SolarSatellite]:0,[n.DarkMatterHarvester]:0,[n.Deathstar]:0},defense:{[o.RocketLauncher]:0,[o.LightLaser]:0,[o.HeavyLaser]:0,[o.GaussCannon]:0,[o.IonCannon]:0,[o.PlasmaTurret]:0,[o.SmallShieldDome]:0,[o.LargeShieldDome]:0,[o.AntiBallisticMissile]:0,[o.InterplanetaryMissile]:0,[o.PlanetaryShield]:0},buildQueue:[],lastUpdate:Date.now(),maxSpace:200,maxFleetStorage:r.baseStorage,isMoon:!1};return Object.values(a).forEach(e=>{c.buildings[e]=0}),e.fleet[n.ColonyShip]=(e.fleet[n.ColonyShip]||1)-1,e.status=`returning`,c},Pf=(e,t,n)=>{let r=e-t+Math.floor(n/5);return{showFleet:r>=-1,showDefense:r>=1,showBuildings:r>=3,showTechnologies:r>=5}},Ff=(e,t,n)=>{let r=.25,i=t-e;return i>0?r+=i*.1:r+=i*.05,r-=n*.01,Math.max(.01,Math.min(.99,r))},If=(e,t,r,i,a,o=`zh-CN`)=>{if(!t)return e.status=`returning`,null;let s=r.technologies[y.EspionageTechnology]||0,c=i?.technologies[y.EspionageTechnology]||0,l=e.fleet[n.EspionageProbe]||0,u=Pf(s,c,l),d=Ff(s,c,l),f=Math.random()e.planets.some(e=>e.id===t.id));e&&yf(r,e,f,o)}return e.status=`returning`,p},Lf=(e,t,n)=>{if(!t||t.ownerId!==n)return e.status=`returning`,!1;for(let[n,r]of Object.entries(e.fleet))t.fleet[n]+=r;return!0},Rf=(e,t,r,i,a=`zh-CN`)=>{if(!t)return e.status=`returning`,null;let o=(e.fleet[n.Recycler]||0)*2e4-(e.cargo.metal+e.cargo.crystal+e.cargo.deuterium),s=t.resources.metal+t.resources.crystal,c=Math.min(s,o);if(s===0)return e.status=`returning`,null;let l=t.resources.metal/s,u=t.resources.crystal/s,d=Math.floor(c*l),f=Math.floor(c*u);e.cargo.metal+=d,e.cargo.crystal+=f;let p=t.resources.metal-d,m=t.resources.crystal-f;return e.status=`returning`,r&&i&&c>0&&bf(r,t.position,i,a),{collectedResources:{metal:d,crystal:f},remainingDebris:p>0||m>0?{metal:p,crystal:m}:null}},zf=(e,t,n)=>{let r=e*10,i=t*5,a=Math.floor(n/1e4),o=r-i-a;return Math.max(1,Math.min(99,o))},Bf=(e,t)=>{let n=0;return Object.entries(e).forEach(([e,t])=>{t>0&&(n+=t*100)}),Object.entries(t).forEach(([e,t])=>{t>0&&(n+=t*50)}),n},Vf=(e,t,r)=>{if(!t||t.ownerId===r.id)return e.status=`returning`,null;let i=e.fleet[n.Deathstar]||0;if(i===0)return e.status=`returning`,null;let a=zf(i,t.defense[o.PlanetaryShield]||0,Bf(t.fleet,t.defense)),s=Math.random()*100{if(e.status!==`outbound`)return!1;let n=t-e.departureTime;return te<1e3?{powerRatio:.3+e/1e3*.2,checkInterval:300,resourceGrowthRate:.4,buildingGrowthSpeed:.4,techGrowthSpeed:.4}:e<5e3?{powerRatio:.5+(e-1e3)/4e3*.2,checkInterval:240,resourceGrowthRate:.6,buildingGrowthSpeed:.6,techGrowthSpeed:.6}:e<2e4?{powerRatio:.7+(e-5e3)/15e3*.2,checkInterval:180,resourceGrowthRate:.8,buildingGrowthSpeed:.8,techGrowthSpeed:.8}:e<5e4?{powerRatio:.9+(e-2e4)/3e4*.2,checkInterval:150,resourceGrowthRate:1,buildingGrowthSpeed:1,techGrowthSpeed:1}:{powerRatio:Math.min(1.3,1.1+(e-5e4)/5e4*.2),checkInterval:120,resourceGrowthRate:1.2,buildingGrowthSpeed:1.2,techGrowthSpeed:1.2},Gf=e=>{let t=e.planets.filter(t=>t.ownerId===e.player.id);if(t.length===0)return{avgBuildingLevel:0,avgTechLevel:0,totalFleetPower:0,totalResources:0};let n=0,r=0;t.forEach(e=>{Object.values(e.buildings).forEach(e=>{n+=e,r++})});let i=Object.values(e.player.technologies),a=i.length>0?i.reduce((e,t)=>e+t,0)/i.length:0,o=0;t.forEach(e=>{Object.entries(e.fleet).forEach(([e,t])=>{let n=u[e],r=n.attack+n.shield+n.armor/10;o+=r*t})});let s=t.reduce((e,t)=>e+t.resources.metal+t.resources.crystal+t.resources.deuterium,0);return{avgBuildingLevel:r>0?n/r:0,avgTechLevel:a,totalFleetPower:o,totalResources:s}},Kf=e=>{let t=0,n=0;e.planets.forEach(e=>{Object.values(e.buildings).forEach(e=>{t+=e,n++})});let r=Object.values(e.technologies),i=r.length>0?r.reduce((e,t)=>e+t,0)/r.length:0,a=0;e.planets.forEach(e=>{Object.entries(e.fleet).forEach(([e,t])=>{let n=u[e],r=n.attack+n.shield+n.armor/10;a+=r*t})});let o=e.planets.reduce((e,t)=>e+t.resources.metal+t.resources.crystal+t.resources.deuterium,0);return{avgBuildingLevel:n>0?t/n:0,avgTechLevel:i,totalFleetPower:a,totalResources:o}},qf=e=>{let t=e.planets[0];if(!t)return;let n=[a.MetalMine,a.CrystalMine,a.DeuteriumSynthesizer,a.SolarPlant,a.RoboticsFactory,a.Shipyard,a.ResearchLab,a.MetalStorage,a.CrystalStorage,a.DeuteriumTank,a.DarkMatterCollector];for(let e of n){let n=t.buildings[e]||0,r=n+1,i=f[e];if(i.maxLevel&&n>=i.maxLevel)continue;let a=Pu(e,r);if(t.resources.metal>=a.metal&&t.resources.crystal>=a.crystal&&t.resources.deuterium>=a.deuterium&&t.resources.darkMatter>=a.darkMatter){t.resources.metal-=a.metal,t.resources.crystal-=a.crystal,t.resources.deuterium-=a.deuterium,t.resources.darkMatter-=a.darkMatter,t.buildings[e]=r;break}}},Jf=e=>{let t=e.planets[0];if(!t)return;let n=[y.EnergyTechnology,y.ComputerTechnology,y.WeaponsTechnology,y.ShieldingTechnology,y.ArmourTechnology,y.CombustionDrive,y.ImpulseDrive,y.HyperspaceDrive,y.LaserTechnology,y.IonTechnology,y.PlasmaTechnology,y.Astrophysics,y.EspionageTechnology];for(let r of n){let n=e.technologies[r]||0,i=n+1,a=v[r];if(a.maxLevel&&n>=a.maxLevel)continue;let o=xu(r,i);if(t.resources.metal>=o.metal&&t.resources.crystal>=o.crystal&&t.resources.deuterium>=o.deuterium&&t.resources.darkMatter>=o.darkMatter){t.resources.metal-=o.metal,t.resources.crystal-=o.crystal,t.resources.deuterium-=o.deuterium,t.resources.darkMatter-=o.darkMatter,e.technologies[r]=i;break}}},Yf=e=>{let t=e.planets[0];if(!t)return;let r=[{shipType:n.LightFighter,priority:1},{shipType:n.HeavyFighter,priority:2},{shipType:n.Cruiser,priority:3},{shipType:n.Battleship,priority:4},{shipType:n.SmallCargo,priority:5},{shipType:n.LargeCargo,priority:6},{shipType:n.Recycler,priority:7},{shipType:n.EspionageProbe,priority:8}];r.sort((e,t)=>e.priority-t.priority);for(let{shipType:n}of r){let r=u[n];if(!Object.entries(r.requirements||{}).every(([n,r])=>n in a?(t.buildings[n]||0)>=r:n in y?(e.technologies[n]||0)>=r:!1))continue;let i=Math.floor(Math.min(t.resources.metal/r.cost.metal,t.resources.crystal/r.cost.crystal,t.resources.deuterium/r.cost.deuterium,r.cost.darkMatter>0?t.resources.darkMatter/r.cost.darkMatter:1/0)),o=Math.min(i,e.difficulty===`easy`?5:e.difficulty===`medium`?10:20);if(o>0){t.resources.metal-=r.cost.metal*o,t.resources.crystal-=r.cost.crystal*o,t.resources.deuterium-=r.cost.deuterium*o,t.resources.darkMatter-=r.cost.darkMatter*o,t.fleet[n]=(t.fleet[n]||0)+o;break}}},Xf=(e,t,n)=>{let r=e.planets[0];if(!r)return;let i=r.buildings[a.MetalMine]||0,o=r.buildings[a.CrystalMine]||0,s=r.buildings[a.DeuteriumSynthesizer]||0,c=r.buildings[a.DarkMatterCollector]||0,l=30*i*1.1**i*n.resourceGrowthRate,u=20*o*1.1**o*n.resourceGrowthRate,d=10*s*1.1**s*n.resourceGrowthRate,f=25*c*1.5**c/3600*n.resourceGrowthRate;r.resources.metal+=l*t,r.resources.crystal+=u*t,r.resources.deuterium+=d*t,r.resources.darkMatter+=f*t;let p=r.buildings[a.MetalStorage]||0,m=r.buildings[a.CrystalStorage]||0,h=r.buildings[a.DeuteriumTank]||0,g=r.buildings[a.DarkMatterTank]||0;r.resources.metal=Math.min(r.resources.metal,1e4*2**p),r.resources.crystal=Math.min(r.resources.crystal,1e4*2**m),r.resources.deuterium=Math.min(r.resources.deuterium,1e4*2**h),r.resources.darkMatter=Math.min(r.resources.darkMatter,1e3*2**g)},Zf=(e,t,n)=>{let r=Wf(t.player.points);Xf(e,n,r);let i=Date.now();if(i-(e.lastGrowthCheck||0)>=r.checkInterval*1e3){e.lastGrowthCheck=i;let n=Gf(t),a=Kf(e),o=n.avgBuildingLevel*r.powerRatio,s=n.avgTechLevel*r.powerRatio,c=n.totalFleetPower*r.powerRatio;a.avgBuildingLevel{let n=Uf[e.difficulty],r=e.planets[0];if(!r)return;let i=Math.max(5,Math.floor(t.avgBuildingLevel*n.powerRatio));r.buildings[a.MetalMine]=i,r.buildings[a.CrystalMine]=Math.floor(i*.8),r.buildings[a.DeuteriumSynthesizer]=Math.floor(i*.6),r.buildings[a.SolarPlant]=i+2,r.buildings[a.RoboticsFactory]=Math.floor(i*.5),r.buildings[a.Shipyard]=Math.floor(i*.4),r.buildings[a.ResearchLab]=Math.floor(i*.4),r.buildings[a.MetalStorage]=Math.floor(i*.3),r.buildings[a.CrystalStorage]=Math.floor(i*.3),r.buildings[a.DeuteriumTank]=Math.floor(i*.3);let o=Math.max(3,Math.floor(t.avgTechLevel*n.powerRatio));e.technologies[y.EnergyTechnology]=o,e.technologies[y.ComputerTechnology]=Math.floor(o*.8),e.technologies[y.WeaponsTechnology]=Math.floor(o*.7),e.technologies[y.ShieldingTechnology]=Math.floor(o*.7),e.technologies[y.ArmourTechnology]=Math.floor(o*.7),e.technologies[y.CombustionDrive]=Math.floor(o*.6),r.resources.metal=1e5*n.powerRatio,r.resources.crystal=5e4*n.powerRatio,r.resources.deuterium=2e4*n.powerRatio,r.resources.darkMatter=1e3*n.powerRatio},$f=e=>{e.forEach(e=>{e.allies||=[],e.enemies||=[],e.relations||={}}),e.forEach(t=>{let n=e.filter(e=>e.id!==t.id&&!t.allies.includes(e.id)&&!e.allies.includes(t.id));if(n.length===0)return;let r=Math.min(Math.floor(Math.random()*2)+1,n.length);for(let e=0;ee<1e3?{spyInterval:2400,attackInterval:4800,attackProbability:.15,minSpyProbes:1,attackFleetSizeRatio:.3}:e<5e3?{spyInterval:1800,attackInterval:3600,attackProbability:.25,minSpyProbes:2,attackFleetSizeRatio:.5}:e<2e4?{spyInterval:1200,attackInterval:2400,attackProbability:.4,minSpyProbes:3,attackFleetSizeRatio:.7}:e<5e4?{spyInterval:900,attackInterval:1800,attackProbability:.55,minSpyProbes:4,attackFleetSizeRatio:.85}:{spyInterval:600,attackInterval:1200,attackProbability:.7,minSpyProbes:5,attackFleetSizeRatio:.95},tp=(e,t,n,r)=>{if(n-(e.lastSpyTime||0){if(n-(e.lastAttackTime||0){let{NPC_GIFT_CONFIG:r}=l;if(!r.ENABLED||n-(e.lastGiftTime||0){let{NPC_GIFT_CONFIG:n}=l;Sf(e,t,{metal:Math.floor(Math.random()*(n.GIFT_AMOUNT.METAL.max-n.GIFT_AMOUNT.METAL.min+1))+n.GIFT_AMOUNT.METAL.min,crystal:Math.floor(Math.random()*(n.GIFT_AMOUNT.CRYSTAL.max-n.GIFT_AMOUNT.CRYSTAL.min+1))+n.GIFT_AMOUNT.CRYSTAL.min,deuterium:Math.floor(Math.random()*(n.GIFT_AMOUNT.DEUTERIUM.max-n.GIFT_AMOUNT.DEUTERIUM.min+1))+n.GIFT_AMOUNT.DEUTERIUM.min,darkMatter:0,energy:0}),e.lastGiftTime=Date.now()};var ap=(e,t)=>{if(e.planets.length===0)return null;let n=null,r=1/0;for(let i of e.planets){let e=Tf(i.position,t);Object.values(i.fleet).some(e=>(e||0)>0)&&e{let a=ap(e,t.position);if(!a||(a.fleet[n.EspionageProbe]||0){let a=e.technologies[y.EspionageTechnology]||0,o=i.technologies[y.EspionageTechnology]||0,s=t.fleet[n.EspionageProbe]||0,c=Math.max(0,Math.min(100,50+(o-a)*10-s*5)),l=Math.random()*100=2?{...r.fleet}:void 0,defense:a>=4?{...r.defense}:void 0,buildings:a>=6?{...r.buildings}:void 0,technologies:a>=8?{...i.technologies}:void 0,detectionChance:c};e.playerSpyReports||={},e.playerSpyReports[r.id]=u;let d={id:`spied-${t.id}`,timestamp:Date.now(),npcId:e.id,npcName:e.name,targetPlanetId:r.id,targetPlanetName:r.name,detectionSuccess:l,read:!1};return t.status=`returning`,t.returnTime=Date.now()+(t.arrivalTime-t.departureTime),{spiedNotification:d,spyReport:u}};var cp=(e,t,r,i)=>{let a={},o=!1,s=[n.LightFighter,n.HeavyFighter,n.Cruiser,n.Battleship,n.Bomber,n.Destroyer,n.Battlecruiser,n.Deathstar];for(let e of s){let n=t.fleet[e]||0;if(n>0){let t=Math.floor(n*i.attackFleetSizeRatio);t>0&&(a[e]=t,o=!0)}}return o?a:null};const lp=(e,t,n,r)=>{let i=ap(e,t.position);if(!i)return null;let a=cp(e,i,n,r);if(!a)return null;for(let[e,t]of Object.entries(a))i.fleet[e]=(i.fleet[e]||0)-t;let o=Tf(i.position,t.position),s=1/0;for(let e of Object.keys(a))s=Math.min(s,1e4);let c=Ef(o,s),l=Date.now(),u={id:`npc-attack-${e.id}-${l}`,playerId:e.id,npcId:e.id,isHostile:!0,originPlanetId:i.id,targetPosition:t.position,targetPlanetId:t.id,missionType:d.Attack,fleet:a,cargo:{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},departureTime:l,arrivalTime:l+c*1e3,status:`outbound`};return e.lastAttackTime=l,e.fleetMissions||=[],e.fleetMissions.push(u),u},up=(e,t,n)=>{let r=Object.values(e.fleet).reduce((e,t)=>e+(t||0),0);return{id:e.id,npcId:t.id,npcName:t.name,missionType:e.missionType,targetPlanetId:n.id,targetPlanetName:n.name,arrivalTime:e.arrivalTime,fleetSize:r,read:!1}},dp=(e,t)=>{e.incomingFleetAlerts||=[],e.incomingFleetAlerts=e.incomingFleetAlerts.filter(e=>e.arrivalTime>t)},fp=(e,t,n,r,i)=>{let a=ep(t.points),o=vp(e,r);if(o.length>0){let r=e.fleetMissions?.filter(e=>e.missionType===d.Recycle&&e.status===`outbound`)||[],i=new Set(r.map(e=>e.debrisFieldId).filter(Boolean)),a=o.filter(e=>!i.has(e.id));if(a.length>0){let r=a[Math.floor(Math.random()*a.length)];r&&yp(e,r,t,n)}}if(bp(e,i)){let r=xp(e,n,a);if(r){let i=n.find(e=>e.id===r.targetPlanetId);if(i){let n=up(r,e,i);t.incomingFleetAlerts||=[],t.incomingFleetAlerts.push(n)}return}}if(tp(e,t,i,a)){let r=n.filter(e=>e.ownerId===t.id);if(r.length>0){let i=r[Math.floor(Math.random()*r.length)];if(!i)return;let o=op(e,i,n,a);if(o){let n=up(o,e,i);t.incomingFleetAlerts||=[],t.incomingFleetAlerts.push(n)}}}if(np(e,t,i,a)&&e.playerSpyReports&&Object.keys(e.playerSpyReports).length>0){let r=Object.values(e.playerSpyReports),i=r[Math.floor(Math.random()*r.length)];if(!i)return;let o=n.find(e=>e.id===i.targetPlanetId);if(o){let n=lp(e,o,i,a);if(n){let r=up(n,e,o);t.incomingFleetAlerts||=[],t.incomingFleetAlerts.push(r)}}}rp(e,t,i)&&ip(e,t),dp(t,i)},pp=(e,t,n,r=0)=>{let i=ep(t.points),a=n.filter(e=>e.ownerId===t.id);if(a.length===0)return console.error(`[Test] No player planets found`),null;let o=a[r]||a[0];if(!o)return console.error(`[Test] Target planet not found`),null;let s=op(e,o,n,i);if(s){let n=up(s,e,o);t.incomingFleetAlerts||=[],t.incomingFleetAlerts.push(n)}else console.error(`[Test] Failed to create spy mission - NPC may not have spy probes`);return s},mp=(e,t,n,r=0)=>{let i=ep(t.points);if(!e.playerSpyReports||Object.keys(e.playerSpyReports).length===0)return console.error(`[Test] No spy reports available - NPC must spy first!`),null;let a=n.filter(e=>e.ownerId===t.id);if(a.length===0)return console.error(`[Test] No player planets found`),null;let o=a[r]||a[0];if(!o)return console.error(`[Test] Target planet not found`),null;let s=e.playerSpyReports[o.id];if(!s)return console.error(`[Test] No spy report for ${o.name} - spy this planet first!`),null;let c=lp(e,o,s,i);if(c){let n=up(c,e,o);t.incomingFleetAlerts||=[],t.incomingFleetAlerts.push(n)}else console.error(`[Test] Failed to create attack mission - NPC may not have ships`);return c},hp=(e,t,n,r=0)=>{let i=pp(e,t,n,r);if(!i)return{spyMission:null,attackMission:null};let a=n.filter(e=>e.ownerId===t.id),o=a[r]||a[0];if(!o)return console.error(`[Test] Target planet not found`),{spyMission:i,attackMission:null};let{spyReport:s,spiedNotification:c}=sp(e,i,o,t);return e.playerSpyReports||={},e.playerSpyReports[o.id]=s,t.spiedNotifications||=[],t.spiedNotifications.push(c),{spyMission:i,attackMission:mp(e,t,n,r)}},gp=(e,t,n=5,r)=>{if(!e.fleetMissions)return console.error(`[Test] NPC has no fleet missions`),!1;let i=e.fleetMissions.find(e=>e.id===t);if(!i)return console.error(`[Test] Mission not found`),!1;let a=Date.now(),o=n*1e3;if(i.departureTime=a,i.arrivalTime=a+o,r&&r.incomingFleetAlerts){let e=r.incomingFleetAlerts.find(e=>e.id===t);e&&(e.arrivalTime=i.arrivalTime)}return!0},_p=(e,t=5,n)=>{if(!e.fleetMissions)return console.error(`[Test] NPC has no fleet missions`),0;let r=Date.now(),i=t*1e3,a=0;return e.fleetMissions.forEach(e=>{if(e.status===`outbound`){if(e.departureTime=r,e.arrivalTime=r+i,n&&n.incomingFleetAlerts){let t=n.incomingFleetAlerts.find(t=>t.id===e.id);t&&(t.arrivalTime=e.arrivalTime)}a++}else e.status===`returning`&&e.returnTime&&(e.returnTime=r+i,a++)}),a},vp=(e,t)=>{let n=[];for(let r of Object.values(t))for(let t of e.planets)r.position.galaxy===t.position.galaxy&&r.position.system===t.position.system&&(r.resources.metal>1e3||r.resources.crystal>1e3)&&Math.abs(r.position.position-t.position.position)<=15&&n.push(r);return n},yp=(e,t,r,i)=>{let a=null,o=1/0;for(let n of e.planets)if(n.position.galaxy===t.position.galaxy&&n.position.system===t.position.system){let e=Math.abs(n.position.position-t.position.position);ee.ownerId===r.id&&e.position.galaxy===t.position.galaxy&&e.position.system===t.position.system&&e.position.position===t.position.position);if(h){let n=up(m,e,h);r.incomingFleetAlerts||=[],r.incomingFleetAlerts.push(n),r.npcActivityNotifications||=[],r.npcActivityNotifications.push({id:`npc-activity-${m.id}`,timestamp:p,npcId:e.id,npcName:e.name,activityType:`recycle`,targetPosition:t.position,targetPlanetId:h.id,targetPlanetName:h.name,arrivalTime:m.arrivalTime,read:!1})}return m},bp=(e,t)=>{if(!e.revengeTarget||!e.attackedBy)return!1;let n=e.attackedBy[e.revengeTarget];if(!n)return!1;let r=t-n.lastAttackTime;return!(r>24*3600*1e3||r<600*1e3)},xp=(e,t,n)=>{if(!e.revengeTarget||!e.attackedBy)return null;let r=e.attackedBy[e.revengeTarget];if(!r||!r.planetId)return null;let i=t.find(e=>e.id===r.planetId);if(!i)return null;let a=ap(e,i.position);if(!a)return null;let o=cp(e,a,{},{...n,attackFleetSizeRatio:Math.min(1,n.attackFleetSizeRatio*1.5)});if(!o)return null;for(let[e,t]of Object.entries(o))a.fleet[e]=(a.fleet[e]||0)-t;let s=Tf(a.position,i.position),c=1/0;for(let e of Object.keys(o))c=Math.min(c,1e4);let l=Ef(s,c),u=Date.now(),f={id:`npc-revenge-${e.id}-${u}`,playerId:e.id,npcId:e.id,isHostile:!0,originPlanetId:a.id,targetPosition:i.position,targetPlanetId:i.id,missionType:d.Attack,fleet:o,cargo:{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},departureTime:u,arrivalTime:u+l*1e3,status:`outbound`};return e.fleetMissions||=[],e.fleetMissions.push(f),e.revengeTarget=void 0,f},Sp=e=>e===0?0:5*e-1,Cp=(e,t)=>e.galaxy===t.galaxy?Math.abs(e.system-t.system):1/0,wp=(e,t,n)=>{let r=Sp(n);return Cp(e,t)<=r},Tp=e=>30+e*60,Ep=(e,t,n,r,i)=>{let a=Date.now(),o=Tp(Cp(t.position,n))*1e3;return{id:`missile_${a}_${e}`,playerId:e,originPlanetId:t.id,targetPosition:n,targetPlanetId:r,missileCount:i,launchTime:a,arrivalTime:a+o,status:`flying`}},Dp=(e,t,n,r)=>{if((e.defense[o.InterplanetaryMissile]||0){let n=e.defense[o.InterplanetaryMissile]||0;e.defense[o.InterplanetaryMissile]=n-t},kp=(e,t)=>{let n=t.defense[o.AntiBallisticMissile]||0,r=Math.min(e,n),i=e-r,a={};if(r>0&&(a[o.AntiBallisticMissile]=r),i>0){let e=Object.keys(t.defense).filter(e=>e===o.SmallShieldDome||e===o.LargeShieldDome||e===o.PlanetaryShield?!1:(t.defense[e]||0)>0);for(let n=0;n0;n++){let n=Math.floor(Math.random()*e.length),r=e[n];r&&(a[r]||(a[r]=0),a[r]++,(t.defense[r]||0)-(a[r]||0)<=0&&e.splice(n,1))}}return{missileHits:i,missileIntercepted:r,defenseLosses:a}},Ap=(e,t)=>{for(let[n,r]of Object.entries(t)){let t=e.defense[n]||0;e.defense[n]=Math.max(0,t-r)}},jp=e=>{let t=0;for(let r of Object.values(n)){let n=e[r]||0,i=u[r];t+=n*i.storageUsage}return t},Mp=(e,t)=>{let n=r.baseStorage,i=e.buildings[a.Shipyard]||0,o=f[a.Shipyard].fleetStorageBonus||0;n+=i*o;let s=t[y.ComputerTechnology]||0,c=v[y.ComputerTechnology].fleetStorageBonus||0;return n+=s*c,n},Np=(e,t,n,r)=>{let i=jp(e.fleet),a=Mp(e,r);return i+u[t].storageUsage*n<=a},Pp=(e,t,n,r)=>{let i=Qu(t,n);return nd(t,e.buildings,r)?Td(e.resources,i)?Np(e,t,n,r)?{valid:!0}:{valid:!1,reason:`errors.insufficientFleetStorage`}:{valid:!1,reason:`errors.insufficientResources`}:{valid:!1,reason:`errors.requirementsNotMet`}},Fp=(e,t,n,r)=>{let i=Qu(t,n),o=Yu(r,Date.now()),s=e.buildings[a.RoboticsFactory]||0,c=e.buildings[a.NaniteFactory]||0,l=ed(t,n,o.buildingSpeedBonus,s,c);return Ed(e.resources,i),cd(t,n,l)},Ip=(e,t,n,r)=>{let i=$u(t,n);return rd(t,e.buildings,r)?Td(e.resources,i)?id(t,e.defense,n)?sd(t,e.defense,e.buildings,n)?{valid:!0}:{valid:!1,reason:`errors.missileSiloLimit`}:{valid:!1,reason:`errors.shieldDomeLimit`}:{valid:!1,reason:`errors.insufficientResources`}:{valid:!1,reason:`errors.requirementsNotMet`}},Lp=(e,t,n,r)=>{let i=$u(t,n),o=Yu(r,Date.now()),s=e.buildings[a.RoboticsFactory]||0,c=e.buildings[a.NaniteFactory]||0,l=td(t,n,o.buildingSpeedBonus,s,c);return Ed(e.resources,i),ld(t,n,l)},Rp=(e,t,n,r,i=0)=>{let a=Yu(r,Date.now());if(i>=Ud(a.additionalFleetSlots))return{valid:!1,reason:`errors.fleetMissionsFull`};if(!ud(e.fleet,t))return{valid:!1,reason:`errors.insufficientFleet`};let o=dd(t,a.fuelConsumptionReduction,n);return e.resources.deuterium{pd(e.fleet,t),e.resources.deuterium-=n,r&&Ed(e.resources,i)};export{Jd as $,V as $n,Uc as $t,Ef as A,ea as An,dd as At,Hf as B,On as Bn,Fu as Bt,sp as C,Wi as Cn,wd as Ct,Qf as D,qa as Dn,md as Dt,$f as E,ls as En,gd as Et,Vf as F,to as Fn,Ku as Ft,tf as G,hn as Gn,ju as Gt,ff as H,Ge as Hn,Iu as Ht,Af as I,Qa as In,qu as It,Xd as J,ln as Jn,Su as Jt,Qd as K,Ke as Kn,Au as Kt,Rf as L,$a as Ln,Wu as Lt,kf as M,Sa as Mn,ad as Mt,Nf as N,ni as Nn,ed as Nt,Zf as O,ia as On,od as Ot,Lf as P,xa as Pn,Yu as Pt,qd as Q,yn as Qn,Hl as Qt,If as R,wr as Rn,Ju as Rt,pp as S,sr as Sn,Ed as St,Gf as T,Gi as Tn,hd as Tt,_f as U,fn as Un,ku as Ut,Cf as V,We as Vn,Vu as Vt,wf as W,H as Wn,Mu as Wt,Yd as X,cn as Xn,Tc as Xt,Kd as Y,vn as Yn,vu as Yt,Gd as Z,un as Zn,fu as Zt,Dp as _,Ya as _n,xd as _t,Rp as a,ws as an,Ae as ar,Hd as at,mp as b,Ta as bn,Sd as bt,Mp as c,hs as cn,ze as cr,Id as ct,kp as d,Ts as dn,Md as dt,iu as en,Mn as er,Wd as et,Sp as f,X as fn,Ad as ft,wp as g,nc as gn,kd as gt,Op as h,Cs as hn,Dd as ht,Ip as i,Lr as in,P as ir,Ud as it,Df as j,ca as jn,fd as jt,Tf as k,oa as kn,td as kt,Ap as l,Ds as ln,_e as lr,Pd as lt,Ep as m,Q as mn,jd as mt,zp as n,J as nn,wn as nr,Ld as nt,Pp as o,tc as on,je as or,Bd as ot,Cp as p,ti as pn,Fd as pt,Zd as q,sn as qn,xu as qt,Fp as r,q as rn,Cn as rr,Vd as rt,jp as s,xs as sn,Te as sr,zd as st,Lp as t,nu as tn,kn as tr,Rd as tt,Tp as u,ms as un,Nd as ut,_p as v,Ja as vn,Od as vt,fp as w,Vi as wn,_d as wt,hp as x,js as xn,Td as xt,gp as y,gs as yn,Cd as yt,Of as z,Tr as zn,Pu as zt}; \ No newline at end of file diff --git a/docs/assets/game-logic-Bi1l7y4K.js b/docs/assets/game-logic-Bi1l7y4K.js deleted file mode 100644 index 4dbed70..0000000 --- a/docs/assets/game-logic-Bi1l7y4K.js +++ /dev/null @@ -1,3 +0,0 @@ -import{n as e}from"./rolldown-runtime-CIDIeb-o.js";import{_ as t,a as n,c as r,d as i,f as a,g as o,h as s,i as c,l,m as u,n as d,o as f,p,r as m,s as h,t as g,u as _,v}from"./game-config-CG6z6nnH.js";function y(e){let t=Object.create(null);for(let n of e.split(`,`))t[n]=1;return e=>e in t}var b={},x=[],S=()=>{},C=()=>!1,w=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ee=e=>e.startsWith(`onUpdate:`),T=Object.assign,E=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},te=Object.prototype.hasOwnProperty,D=(e,t)=>te.call(e,t),O=Array.isArray,ne=e=>se(e)===`[object Map]`,re=e=>se(e)===`[object Set]`,k=e=>se(e)===`[object Date]`,ie=e=>se(e)===`[object RegExp]`,A=e=>typeof e==`function`,j=e=>typeof e==`string`,M=e=>typeof e==`symbol`,N=e=>typeof e==`object`&&!!e,ae=e=>(N(e)||A(e))&&A(e.then)&&A(e.catch),oe=Object.prototype.toString,se=e=>oe.call(e),ce=e=>se(e).slice(8,-1),le=e=>se(e)===`[object Object]`,ue=e=>j(e)&&e!==`NaN`&&e[0]!==`-`&&``+parseInt(e,10)===e,de=y(`,key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted`),fe=e=>{let t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},pe=/-\w/g,P=fe(e=>e.replace(pe,e=>e.slice(1).toUpperCase())),me=/\B([A-Z])/g,F=fe(e=>e.replace(me,`-$1`).toLowerCase()),he=fe(e=>e.charAt(0).toUpperCase()+e.slice(1)),ge=fe(e=>e?`on${he(e)}`:``),I=(e,t)=>!Object.is(e,t),_e=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},ye=e=>{let t=parseFloat(e);return isNaN(t)?e:t},be=e=>{let t=j(e)?Number(e):NaN;return isNaN(t)?e:t},xe,Se=()=>xe||=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{},Ce=y(`Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol`);function we(e){if(O(e)){let t={};for(let n=0;n{if(e){let n=e.split(Ee);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function ke(e){let t=``;if(j(e))t=e;else if(O(e))for(let n=0;nFe(e,t))}var Le=e=>!!(e&&e.__v_isRef===!0),Re=e=>j(e)?e:e==null?``:O(e)||N(e)&&(e.toString===oe||!A(e.toString))?Le(e)?Re(e.value):JSON.stringify(e,ze,2):String(e),ze=(e,t)=>Le(t)?ze(e,t.value):ne(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n],r)=>(e[Be(t,r)+` =>`]=n,e),{})}:re(t)?{[`Set(${t.size})`]:[...t.values()].map(e=>Be(e))}:M(t)?Be(t):N(t)&&!O(t)&&!le(t)?String(t):t,Be=(e,t=``)=>M(e)?`Symbol(${e.description??t})`:e;function Ve(e){return e==null?`initial`:typeof e==`string`?e===``?` `:e:String(e)}var L,He=class{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=L,!e&&L&&(this.index=(L.scopes||=[]).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,t;if(this.scopes)for(e=0,t=this.scopes.length;e0&&--this._on===0&&(L=this.prevScope,this.prevScope=void 0)}stop(e){if(this._active){this._active=!1;let t,n;for(t=0,n=this.effects.length;t0)return;if(Xe){let e=Xe;for(Xe=void 0;e;){let t=e.next;e.next=void 0,e.flags&=-9,e=t}}let e;for(;Ye;){let t=Ye;for(Ye=void 0;t;){let n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(t){e||=t}t=n}}if(e)throw e}function et(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function tt(e){let t,n=e.depsTail,r=n;for(;r;){let e=r.prevDep;r.version===-1?(r===n&&(n=e),it(r),at(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=e}e.deps=t,e.depsTail=n}function nt(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(rt(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function rt(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===pt)||(e.globalVersion=pt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!nt(e))))return;e.flags|=2;let t=e.dep,n=R,r=ct;R=e,ct=!0;try{et(e);let n=e.fn(e._value);(t.version===0||I(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(e){throw t.version++,e}finally{R=n,ct=r,tt(e),e.flags&=-3}}function it(e,t=!1){let{dep:n,prevSub:r,nextSub:i}=e;if(r&&(r.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let e=n.computed.deps;e;e=e.nextDep)it(e,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function at(e){let{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}function ot(e,t){e.effect instanceof qe&&(e=e.effect.fn);let n=new qe(e);t&&T(n,t);try{n.run()}catch(e){throw n.stop(),e}let r=n.run.bind(n);return r.effect=n,r}function st(e){e.effect.stop()}var ct=!0,lt=[];function ut(){lt.push(ct),ct=!1}function dt(){let e=lt.pop();ct=e===void 0?!0:e}function ft(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let e=R;R=void 0;try{t()}finally{R=e}}}var pt=0,mt=class{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}},ht=class{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!R||!ct||R===this.computed)return;let t=this.activeLink;if(t===void 0||t.sub!==R)t=this.activeLink=new mt(R,this),R.deps?(t.prevDep=R.depsTail,R.depsTail.nextDep=t,R.depsTail=t):R.deps=R.depsTail=t,gt(t);else if(t.version===-1&&(t.version=this.version,t.nextDep)){let e=t.nextDep;e.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=e),t.prevDep=R.depsTail,t.nextDep=void 0,R.depsTail.nextDep=t,R.depsTail=t,R.deps===t&&(R.deps=e)}return t}trigger(e){this.version++,pt++,this.notify(e)}notify(e){Qe();try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{$e()}}};function gt(e){if(e.dep.sc++,e.sub.flags&4){let t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let e=t.deps;e;e=e.nextDep)gt(e)}let n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}var _t=new WeakMap,vt=Symbol(``),yt=Symbol(``),bt=Symbol(``);function z(e,t,n){if(ct&&R){let t=_t.get(e);t||_t.set(e,t=new Map);let r=t.get(n);r||(t.set(n,r=new ht),r.map=t,r.key=n),r.track()}}function xt(e,t,n,r,i,a){let o=_t.get(e);if(!o){pt++;return}let s=e=>{e&&e.trigger()};if(Qe(),t===`clear`)o.forEach(s);else{let i=O(e),a=i&&ue(n);if(i&&n===`length`){let e=Number(r);o.forEach((t,n)=>{(n===`length`||n===bt||!M(n)&&n>=e)&&s(t)})}else switch((n!==void 0||o.has(void 0))&&s(o.get(n)),a&&s(o.get(bt)),t){case`add`:i?a&&s(o.get(`length`)):(s(o.get(vt)),ne(e)&&s(o.get(yt)));break;case`delete`:i||(s(o.get(vt)),ne(e)&&s(o.get(yt)));break;case`set`:ne(e)&&s(o.get(vt));break}}$e()}function St(e,t){let n=_t.get(e);return n&&n.get(t)}function Ct(e){let t=V(e);return t===e?t:(z(t,`iterate`,bt),B(e)?t:t.map(hn))}function wt(e){return z(e=V(e),`iterate`,bt),e}function Tt(e,t){return fn(e)?dn(e)?gn(hn(t)):gn(t):hn(t)}var Et={__proto__:null,[Symbol.iterator](){return Dt(this,Symbol.iterator,e=>Tt(this,e))},concat(...e){return Ct(this).concat(...e.map(e=>O(e)?Ct(e):e))},entries(){return Dt(this,`entries`,e=>(e[1]=Tt(this,e[1]),e))},every(e,t){return kt(this,`every`,e,t,void 0,arguments)},filter(e,t){return kt(this,`filter`,e,t,e=>e.map(e=>Tt(this,e)),arguments)},find(e,t){return kt(this,`find`,e,t,e=>Tt(this,e),arguments)},findIndex(e,t){return kt(this,`findIndex`,e,t,void 0,arguments)},findLast(e,t){return kt(this,`findLast`,e,t,e=>Tt(this,e),arguments)},findLastIndex(e,t){return kt(this,`findLastIndex`,e,t,void 0,arguments)},forEach(e,t){return kt(this,`forEach`,e,t,void 0,arguments)},includes(...e){return jt(this,`includes`,e)},indexOf(...e){return jt(this,`indexOf`,e)},join(e){return Ct(this).join(e)},lastIndexOf(...e){return jt(this,`lastIndexOf`,e)},map(e,t){return kt(this,`map`,e,t,void 0,arguments)},pop(){return Mt(this,`pop`)},push(...e){return Mt(this,`push`,e)},reduce(e,...t){return At(this,`reduce`,e,t)},reduceRight(e,...t){return At(this,`reduceRight`,e,t)},shift(){return Mt(this,`shift`)},some(e,t){return kt(this,`some`,e,t,void 0,arguments)},splice(...e){return Mt(this,`splice`,e)},toReversed(){return Ct(this).toReversed()},toSorted(e){return Ct(this).toSorted(e)},toSpliced(...e){return Ct(this).toSpliced(...e)},unshift(...e){return Mt(this,`unshift`,e)},values(){return Dt(this,`values`,e=>Tt(this,e))}};function Dt(e,t,n){let r=wt(e),i=r[t]();return r!==e&&!B(e)&&(i._next=i.next,i.next=()=>{let e=i._next();return e.done||(e.value=n(e.value)),e}),i}var Ot=Array.prototype;function kt(e,t,n,r,i,a){let o=wt(e),s=o!==e&&!B(e),c=o[t];if(c!==Ot[t]){let t=c.apply(e,a);return s?hn(t):t}let l=n;o!==e&&(s?l=function(t,r){return n.call(this,Tt(e,t),r,e)}:n.length>2&&(l=function(t,r){return n.call(this,t,r,e)}));let u=c.call(o,l,r);return s&&i?i(u):u}function At(e,t,n,r){let i=wt(e),a=n;return i!==e&&(B(e)?n.length>3&&(a=function(t,r,i){return n.call(this,t,r,i,e)}):a=function(t,r,i){return n.call(this,t,Tt(e,r),i,e)}),i[t](a,...r)}function jt(e,t,n){let r=V(e);z(r,`iterate`,bt);let i=r[t](...n);return(i===-1||i===!1)&&pn(n[0])?(n[0]=V(n[0]),r[t](...n)):i}function Mt(e,t,n=[]){ut(),Qe();let r=V(e)[t].apply(e,n);return $e(),dt(),r}var Nt=y(`__proto__,__v_isRef,__isVue`),Pt=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!==`arguments`&&e!==`caller`).map(e=>Symbol[e]).filter(M));function Ft(e){M(e)||(e=String(e));let t=V(this);return z(t,`has`,e),t.hasOwnProperty(e)}var It=class{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){if(t===`__v_skip`)return e.__v_skip;let r=this._isReadonly,i=this._isShallow;if(t===`__v_isReactive`)return!r;if(t===`__v_isReadonly`)return r;if(t===`__v_isShallow`)return i;if(t===`__v_raw`)return n===(r?i?nn:tn:i?en:$t).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;let a=O(e);if(!r){let e;if(a&&(e=Et[t]))return e;if(t===`hasOwnProperty`)return Ft}let o=Reflect.get(e,t,H(e)?e:n);if((M(t)?Pt.has(t):Nt(t))||(r||z(e,`get`,t),i))return o;if(H(o)){let e=a&&ue(t)?o:o.value;return r&&N(e)?cn(e):e}return N(o)?r?cn(o):on(o):o}},Lt=class extends It{constructor(e=!1){super(!1,e)}set(e,t,n,r){let i=e[t],a=O(e)&&ue(t);if(!this._isShallow){let e=fn(i);if(!B(n)&&!fn(n)&&(i=V(i),n=V(n)),!a&&H(i)&&!H(n))return e||(i.value=n),!0}let o=a?Number(t)e,Wt=e=>Reflect.getPrototypeOf(e);function Gt(e,t,n){return function(...r){let i=this.__v_raw,a=V(i),o=ne(a),s=e===`entries`||e===Symbol.iterator&&o,c=e===`keys`&&o,l=i[e](...r),u=n?Ut:t?gn:hn;return!t&&z(a,`iterate`,c?yt:vt),{next(){let{value:e,done:t}=l.next();return t?{value:e,done:t}:{value:s?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}function Kt(e){return function(...t){return e===`delete`?!1:e===`clear`?void 0:this}}function qt(e,t){let n={get(n){let r=this.__v_raw,i=V(r),a=V(n);e||(I(n,a)&&z(i,`get`,n),z(i,`get`,a));let{has:o}=Wt(i),s=t?Ut:e?gn:hn;if(o.call(i,n))return s(r.get(n));if(o.call(i,a))return s(r.get(a));r!==i&&r.get(n)},get size(){let t=this.__v_raw;return!e&&z(V(t),`iterate`,vt),t.size},has(t){let n=this.__v_raw,r=V(n),i=V(t);return e||(I(t,i)&&z(r,`has`,t),z(r,`has`,i)),t===i?n.has(t):n.has(t)||n.has(i)},forEach(n,r){let i=this,a=i.__v_raw,o=V(a),s=t?Ut:e?gn:hn;return!e&&z(o,`iterate`,vt),a.forEach((e,t)=>n.call(r,s(e),s(t),i))}};return T(n,e?{add:Kt(`add`),set:Kt(`set`),delete:Kt(`delete`),clear:Kt(`clear`)}:{add(e){!t&&!B(e)&&!fn(e)&&(e=V(e));let n=V(this);return Wt(n).has.call(n,e)||(n.add(e),xt(n,`add`,e,e)),this},set(e,n){!t&&!B(n)&&!fn(n)&&(n=V(n));let r=V(this),{has:i,get:a}=Wt(r),o=i.call(r,e);o||=(e=V(e),i.call(r,e));let s=a.call(r,e);return r.set(e,n),o?I(n,s)&&xt(r,`set`,e,n,s):xt(r,`add`,e,n),this},delete(e){let t=V(this),{has:n,get:r}=Wt(t),i=n.call(t,e);i||=(e=V(e),n.call(t,e));let a=r?r.call(t,e):void 0,o=t.delete(e);return i&&xt(t,`delete`,e,void 0,a),o},clear(){let e=V(this),t=e.size!==0,n=e.clear();return t&&xt(e,`clear`,void 0,void 0,void 0),n}}),[`keys`,`values`,`entries`,Symbol.iterator].forEach(r=>{n[r]=Gt(r,e,t)}),n}function Jt(e,t){let n=qt(e,t);return(t,r,i)=>r===`__v_isReactive`?!e:r===`__v_isReadonly`?e:r===`__v_raw`?t:Reflect.get(D(n,r)&&r in t?n:t,r,i)}var Yt={get:Jt(!1,!1)},Xt={get:Jt(!1,!0)},Zt={get:Jt(!0,!1)},Qt={get:Jt(!0,!0)},$t=new WeakMap,en=new WeakMap,tn=new WeakMap,nn=new WeakMap;function rn(e){switch(e){case`Object`:case`Array`:return 1;case`Map`:case`Set`:case`WeakMap`:case`WeakSet`:return 2;default:return 0}}function an(e){return e.__v_skip||!Object.isExtensible(e)?0:rn(ce(e))}function on(e){return fn(e)?e:un(e,!1,zt,Yt,$t)}function sn(e){return un(e,!1,Vt,Xt,en)}function cn(e){return un(e,!0,Bt,Zt,tn)}function ln(e){return un(e,!0,Ht,Qt,nn)}function un(e,t,n,r,i){if(!N(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;let a=an(e);if(a===0)return e;let o=i.get(e);if(o)return o;let s=new Proxy(e,a===2?r:n);return i.set(e,s),s}function dn(e){return fn(e)?dn(e.__v_raw):!!(e&&e.__v_isReactive)}function fn(e){return!!(e&&e.__v_isReadonly)}function B(e){return!!(e&&e.__v_isShallow)}function pn(e){return e?!!e.__v_raw:!1}function V(e){let t=e&&e.__v_raw;return t?V(t):e}function mn(e){return!D(e,`__v_skip`)&&Object.isExtensible(e)&&ve(e,`__v_skip`,!0),e}var hn=e=>N(e)?on(e):e,gn=e=>N(e)?cn(e):e;function H(e){return e?e.__v_isRef===!0:!1}function _n(e){return yn(e,!1)}function vn(e){return yn(e,!0)}function yn(e,t){return H(e)?e:new bn(e,t)}var bn=class{constructor(e,t){this.dep=new ht,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:V(e),this._value=t?e:hn(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){let t=this._rawValue,n=this.__v_isShallow||B(e)||fn(e);e=n?e:V(e),I(e,t)&&(this._rawValue=e,this._value=n?e:hn(e),this.dep.trigger())}};function xn(e){e.dep&&e.dep.trigger()}function Sn(e){return H(e)?e.value:e}function Cn(e){return A(e)?e():Sn(e)}var wn={get:(e,t,n)=>t===`__v_raw`?e:Sn(Reflect.get(e,t,n)),set:(e,t,n,r)=>{let i=e[t];return H(i)&&!H(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function Tn(e){return dn(e)?e:new Proxy(e,wn)}var En=class{constructor(e){this.__v_isRef=!0,this._value=void 0;let t=this.dep=new ht,{get:n,set:r}=e(t.track.bind(t),t.trigger.bind(t));this._get=n,this._set=r}get value(){return this._value=this._get()}set value(e){this._set(e)}};function Dn(e){return new En(e)}function On(e){let t=O(e)?Array(e.length):{};for(let n in e)t[n]=Mn(e,n);return t}var kn=class{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0,this._raw=V(e);let r=!0,i=e;if(!O(e)||!ue(String(t)))do r=!pn(i)||B(i);while(r&&(i=i.__v_raw));this._shallow=r}get value(){let e=this._object[this._key];return this._shallow&&(e=Sn(e)),this._value=e===void 0?this._defaultValue:e}set value(e){if(this._shallow&&H(this._raw[this._key])){let t=this._object[this._key];if(H(t)){t.value=e;return}}this._object[this._key]=e}get dep(){return St(this._raw,this._key)}},An=class{constructor(e){this._getter=e,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}};function jn(e,t,n){return H(e)?e:A(e)?new An(e):N(e)&&arguments.length>1?Mn(e,t,n):_n(e)}function Mn(e,t,n){return new kn(e,t,n)}var Nn=class{constructor(e,t,n){this.fn=e,this.setter=t,this._value=void 0,this.dep=new ht(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=pt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&R!==this)return Ze(this,!0),!0}get value(){let e=this.dep.track();return rt(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}};function Pn(e,t,n=!1){let r,i;return A(e)?r=e:(r=e.get,i=e.set),new Nn(r,i,n)}var Fn={GET:`get`,HAS:`has`,ITERATE:`iterate`},In={SET:`set`,ADD:`add`,DELETE:`delete`,CLEAR:`clear`},Ln={},Rn=new WeakMap,zn=void 0;function Bn(){return zn}function Vn(e,t=!1,n=zn){if(n){let t=Rn.get(n);t||Rn.set(n,t=[]),t.push(e)}}function Hn(e,t,n=b){let{immediate:r,deep:i,once:a,scheduler:o,augmentJob:s,call:c}=n,l=e=>i?e:B(e)||i===!1||i===0?Un(e,1):Un(e),u,d,f,p,m=!1,h=!1;if(H(e)?(d=()=>e.value,m=B(e)):dn(e)?(d=()=>l(e),m=!0):O(e)?(h=!0,m=e.some(e=>dn(e)||B(e)),d=()=>e.map(e=>{if(H(e))return e.value;if(dn(e))return l(e);if(A(e))return c?c(e,2):e()})):d=A(e)?t?c?()=>c(e,2):e:()=>{if(f){ut();try{f()}finally{dt()}}let t=zn;zn=u;try{return c?c(e,3,[p]):e(p)}finally{zn=t}}:S,t&&i){let e=d,t=i===!0?1/0:i;d=()=>Un(e(),t)}let g=We(),_=()=>{u.stop(),g&&g.active&&E(g.effects,u)};if(a&&t){let e=t;t=(...t)=>{e(...t),_()}}let v=h?Array(e.length).fill(Ln):Ln,y=e=>{if(!(!(u.flags&1)||!u.dirty&&!e))if(t){let e=u.run();if(i||m||(h?e.some((e,t)=>I(e,v[t])):I(e,v))){f&&f();let n=zn;zn=u;try{let n=[e,v===Ln?void 0:h&&v[0]===Ln?[]:v,p];v=e,c?c(t,3,n):t(...n)}finally{zn=n}}}else u.run()};return s&&s(y),u=new qe(d),u.scheduler=o?()=>o(y,!1):y,p=e=>Vn(e,!1,u),f=u.onStop=()=>{let e=Rn.get(u);if(e){if(c)c(e,4);else for(let t of e)t();Rn.delete(u)}},t?r?y(!0):v=u.run():o?o(y.bind(null,!0),!0):u.run(),_.pause=u.pause.bind(u),_.resume=u.resume.bind(u),_.stop=_,_}function Un(e,t=1/0,n){if(t<=0||!N(e)||e.__v_skip||(n||=new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,H(e))Un(e.value,t,n);else if(O(e))for(let r=0;r{Un(e,t,n)});else if(le(e)){for(let r in e)Un(e[r],t,n);for(let r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Un(e[r],t,n)}return e}var Wn=[];function Gn(e){Wn.push(e)}function Kn(){Wn.pop()}function qn(e,t){}var Jn={SETUP_FUNCTION:0,0:`SETUP_FUNCTION`,RENDER_FUNCTION:1,1:`RENDER_FUNCTION`,NATIVE_EVENT_HANDLER:5,5:`NATIVE_EVENT_HANDLER`,COMPONENT_EVENT_HANDLER:6,6:`COMPONENT_EVENT_HANDLER`,VNODE_HOOK:7,7:`VNODE_HOOK`,DIRECTIVE_HOOK:8,8:`DIRECTIVE_HOOK`,TRANSITION_HOOK:9,9:`TRANSITION_HOOK`,APP_ERROR_HANDLER:10,10:`APP_ERROR_HANDLER`,APP_WARN_HANDLER:11,11:`APP_WARN_HANDLER`,FUNCTION_REF:12,12:`FUNCTION_REF`,ASYNC_COMPONENT_LOADER:13,13:`ASYNC_COMPONENT_LOADER`,SCHEDULER:14,14:`SCHEDULER`,COMPONENT_UPDATE:15,15:`COMPONENT_UPDATE`,APP_UNMOUNT_CLEANUP:16,16:`APP_UNMOUNT_CLEANUP`},Yn={sp:`serverPrefetch hook`,bc:`beforeCreate hook`,c:`created hook`,bm:`beforeMount hook`,m:`mounted hook`,bu:`beforeUpdate hook`,u:`updated`,bum:`beforeUnmount hook`,um:`unmounted hook`,a:`activated hook`,da:`deactivated hook`,ec:`errorCaptured hook`,rtc:`renderTracked hook`,rtg:`renderTriggered hook`,0:`setup function`,1:`render function`,2:`watcher getter`,3:`watcher callback`,4:`watcher cleanup function`,5:`native event handler`,6:`component event handler`,7:`vnode hook`,8:`directive hook`,9:`transition hook`,10:`app errorHandler`,11:`app warnHandler`,12:`ref function`,13:`async component loader`,14:`scheduler flush`,15:`component update`,16:`app unmount cleanup function`};function Xn(e,t,n,r){try{return r?e(...r):e()}catch(e){Qn(e,t,n)}}function Zn(e,t,n,r){if(A(e)){let i=Xn(e,t,n,r);return i&&ae(i)&&i.catch(e=>{Qn(e,t,n)}),i}if(O(e)){let i=[];for(let a=0;a>>1,i=U[r],a=pr(i);a=pr(n)?U.push(e):U.splice(sr(t),0,e),e.flags|=1,lr()}}function lr(){ar||=ir.then(mr)}function ur(e){O(e)?tr.push(...e):nr&&e.id===-1?nr.splice(rr+1,0,e):e.flags&1||(tr.push(e),e.flags|=1),lr()}function dr(e,t,n=er+1){for(;npr(e)-pr(t));if(tr.length=0,nr){nr.push(...e);return}for(nr=e,rr=0;rre.id==null?e.flags&2?-1:1/0:e.id;function mr(e){try{for(er=0;erhr.emit(e,...t)),gr=[]):typeof window<`u`&&window.HTMLElement&&!(window.navigator?.userAgent)?.includes(`jsdom`)?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(e=>{_r(e,t)}),setTimeout(()=>{hr||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,gr=[])},3e3)):gr=[]}var W=null,vr=null;function yr(e){let t=W;return W=e,vr=e&&e.type.__scopeId||null,t}function br(e){vr=e}function xr(){vr=null}var Sr=e=>Cr;function Cr(e,t=W,n){if(!t||e._n)return e;let r=(...n)=>{r._d&&ds(-1);let i=yr(t),a;try{a=e(...n)}finally{yr(i),r._d&&ds(1)}return a};return r._n=!0,r._c=!0,r._d=!0,r}function wr(e,t){if(W===null)return e;let n=Xs(W),r=e.dirs||=[];for(let e=0;ee.__isTeleport,Or=e=>e&&(e.disabled||e.disabled===``),kr=e=>e&&(e.defer||e.defer===``),Ar=e=>typeof SVGElement<`u`&&e instanceof SVGElement,jr=e=>typeof MathMLElement==`function`&&e instanceof MathMLElement,Mr=(e,t)=>{let n=e&&e.to;return j(n)?t?t(n):null:n},Nr={name:`Teleport`,__isTeleport:!0,process(e,t,n,r,i,a,o,s,c,l){let{mc:u,pc:d,pbc:f,o:{insert:p,querySelector:m,createText:h,createComment:g}}=l,_=Or(t.props),{shapeFlag:v,children:y,dynamicChildren:b}=t;if(e==null){let e=t.el=h(``),l=t.anchor=h(``);p(e,n,r),p(l,n,r);let d=(e,t)=>{v&16&&u(y,e,t,i,a,o,s,c)},f=()=>{let e=t.target=Mr(t.props,m),n=Rr(e,t,h,p);e&&(o!==`svg`&&Ar(e)?o=`svg`:o!==`mathml`&&jr(e)&&(o=`mathml`),i&&i.isCE&&(i.ce._teleportTargets||(i.ce._teleportTargets=new Set)).add(e),_||(d(e,n),Lr(t,!1)))};_&&(d(n,l),Lr(t,!0)),kr(t.props)?(t.el.__isMounted=!1,K(()=>{f(),delete t.el.__isMounted},a)):f()}else{if(kr(t.props)&&e.el.__isMounted===!1){K(()=>{Nr.process(e,t,n,r,i,a,o,s,c,l)},a);return}t.el=e.el,t.targetStart=e.targetStart;let u=t.anchor=e.anchor,p=t.target=e.target,h=t.targetAnchor=e.targetAnchor,g=Or(e.props),v=g?n:p,y=g?u:h;if(o===`svg`||Ar(p)?o=`svg`:(o===`mathml`||jr(p))&&(o=`mathml`),b?(f(e.dynamicChildren,b,v,i,a,o,s),Ho(e,t,!0)):c||d(e,t,v,y,i,a,o,s,!1),_)g?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Pr(t,n,u,l,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){let e=t.target=Mr(t.props,m);e&&Pr(t,e,null,l,0)}else g&&Pr(t,p,h,l,1);Lr(t,_)}},remove(e,t,n,{um:r,o:{remove:i}},a){let{shapeFlag:o,children:s,anchor:c,targetStart:l,targetAnchor:u,target:d,props:f}=e;if(d&&(i(l),i(u)),a&&i(c),o&16){let e=a||!Or(f);for(let i=0;i{e.isMounted=!0}),Ui(()=>{e.isUnmounting=!0}),e}var Hr=[Function,Array],Ur={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Hr,onEnter:Hr,onAfterEnter:Hr,onEnterCancelled:Hr,onBeforeLeave:Hr,onLeave:Hr,onAfterLeave:Hr,onLeaveCancelled:Hr,onBeforeAppear:Hr,onAppear:Hr,onAfterAppear:Hr,onAppearCancelled:Hr},Wr=e=>{let t=e.subTree;return t.component?Wr(t.component):t},Gr={name:`BaseTransition`,props:Ur,setup(e,{slots:t}){let n=$(),r=Vr();return()=>{let i=t.default&&$r(t.default(),!0);if(!i||!i.length)return;let a=Kr(i),o=V(e),{mode:s}=o;if(r.isLeaving)return Xr(a);let c=Zr(a);if(!c)return Xr(a);let l=Yr(c,o,r,n,e=>l=e);c.type!==J&&Qr(c,l);let u=n.subTree&&Zr(n.subTree);if(u&&u.type!==J&&!gs(u,c)&&Wr(n).type!==J){let e=Yr(u,o,r,n);if(Qr(u,e),s===`out-in`&&c.type!==J)return r.isLeaving=!0,e.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete e.afterLeave,u=void 0},Xr(a);s===`in-out`&&c.type!==J?e.delayLeave=(e,t,n)=>{let i=Jr(r,u);i[String(u.key)]=u,e[zr]=()=>{t(),e[zr]=void 0,delete l.delayedLeave,u=void 0},l.delayedLeave=()=>{n(),delete l.delayedLeave,u=void 0}}:u=void 0}else u&&=void 0;return a}}};function Kr(e){let t=e[0];if(e.length>1){for(let n of e)if(n.type!==J){t=n;break}}return t}var qr=Gr;function Jr(e,t){let{leavingVNodes:n}=e,r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Yr(e,t,n,r,i){let{appear:a,mode:o,persisted:s=!1,onBeforeEnter:c,onEnter:l,onAfterEnter:u,onEnterCancelled:d,onBeforeLeave:f,onLeave:p,onAfterLeave:m,onLeaveCancelled:h,onBeforeAppear:g,onAppear:_,onAfterAppear:v,onAppearCancelled:y}=t,b=String(e.key),x=Jr(n,e),S=(e,t)=>{e&&Zn(e,r,9,t)},C=(e,t)=>{let n=t[1];S(e,t),O(e)?e.every(e=>e.length<=1)&&n():e.length<=1&&n()},w={mode:o,persisted:s,beforeEnter(t){let r=c;if(!n.isMounted)if(a)r=g||c;else return;t[zr]&&t[zr](!0);let i=x[b];i&&gs(e,i)&&i.el[zr]&&i.el[zr](),S(r,[t])},enter(e){let t=l,r=u,i=d;if(!n.isMounted)if(a)t=_||l,r=v||u,i=y||d;else return;let o=!1,s=e[Br]=t=>{o||(o=!0,S(t?i:r,[e]),w.delayedLeave&&w.delayedLeave(),e[Br]=void 0)};t?C(t,[e,s]):s()},leave(t,r){let i=String(e.key);if(t[Br]&&t[Br](!0),n.isUnmounting)return r();S(f,[t]);let a=!1,o=t[zr]=n=>{a||(a=!0,r(),S(n?h:m,[t]),t[zr]=void 0,x[i]===e&&delete x[i])};x[i]=e,p?C(p,[t,o]):o()},clone(e){let a=Yr(e,t,n,r,i);return i&&i(a),a}};return w}function Xr(e){if(Oi(e))return e=Cs(e),e.children=null,e}function Zr(e){if(!Oi(e))return Dr(e.type)&&e.children?Kr(e.children):e;if(e.component)return e.component.subTree;let{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&A(n.default))return n.default()}}function Qr(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Qr(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function $r(e,t=!1,n){let r=[],i=0;for(let a=0;a1)for(let e=0;eT({name:e.name},t,{setup:e}))():e}function ti(){let e=$();return e?(e.appContext.config.idPrefix||`v`)+`-`+e.ids[0]+ e.ids[1]++:``}function ni(e){e.ids=[e.ids[0]+ e.ids[2]+++`-`,0,0]}function ri(e){let t=$(),n=vn(null);if(t){let r=t.refs===b?t.refs={}:t.refs;Object.defineProperty(r,e,{enumerable:!0,get:()=>n.value,set:e=>n.value=e})}return n}var ii=new WeakMap;function ai(e,t,n,r,i=!1){if(O(e)){e.forEach((e,a)=>ai(e,t&&(O(t)?t[a]:t),n,r,i));return}if(Ti(r)&&!i){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&ai(e,t,n,r.component.subTree);return}let a=r.shapeFlag&4?Xs(r.component):r.el,o=i?null:a,{i:s,r:c}=e,l=t&&t.r,u=s.refs===b?s.refs={}:s.refs,d=s.setupState,f=V(d),p=d===b?C:e=>D(f,e),m=e=>!0;if(l!=null&&l!==c){if(oi(t),j(l))u[l]=null,p(l)&&(d[l]=null);else if(H(l)){m(l)&&(l.value=null);let e=t;e.k&&(u[e.k]=null)}}if(A(c))Xn(c,s,12,[o,u]);else{let t=j(c),r=H(c);if(t||r){let s=()=>{if(e.f){let n=t?p(c)?d[c]:u[c]:m(c)||!e.k?c.value:u[e.k];if(i)O(n)&&E(n,a);else if(O(n))n.includes(a)||n.push(a);else if(t)u[c]=[a],p(c)&&(d[c]=u[c]);else{let t=[a];m(c)&&(c.value=t),e.k&&(u[e.k]=t)}}else t?(u[c]=o,p(c)&&(d[c]=o)):r&&(m(c)&&(c.value=o),e.k&&(u[e.k]=o))};if(o){let t=()=>{s(),ii.delete(e)};t.id=-1,ii.set(e,t),K(t,n)}else oi(e),s()}}}function oi(e){let t=ii.get(e);t&&(t.flags|=8,ii.delete(e))}var si=!1,ci=()=>{si||=(console.error(`Hydration completed but contains mismatches.`),!0)},li=e=>e.namespaceURI.includes(`svg`)&&e.tagName!==`foreignObject`,ui=e=>e.namespaceURI.includes(`MathML`),di=e=>{if(e.nodeType===1){if(li(e))return`svg`;if(ui(e))return`mathml`}},fi=e=>e.nodeType===8;function pi(e){let{mt:t,p:n,o:{patchProp:r,createText:i,nextSibling:a,parentNode:o,remove:s,insert:c,createComment:l}}=e,u=(e,t)=>{if(!t.hasChildNodes()){n(null,e,t),fr(),t._vnode=e;return}d(t.firstChild,e,null,null,null),fr(),t._vnode=e},d=(n,r,s,l,u,y=!1)=>{y||=!!r.dynamicChildren;let b=fi(n)&&n.data===`[`,x=()=>h(n,r,s,l,u,b),{type:S,ref:C,shapeFlag:w,patchFlag:ee}=r,T=n.nodeType;r.el=n,ee===-2&&(y=!1,r.dynamicChildren=null);let E=null;switch(S){case as:T===3?(n.data!==r.children&&(ci(),n.data=r.children),E=a(n)):r.children===``?(c(r.el=i(``),o(n),n),E=n):E=x();break;case J:v(n)?(E=a(n),_(r.el=n.content.firstChild,n,s)):E=T!==8||b?x():a(n);break;case os:if(b&&(n=a(n),T=n.nodeType),T===1||T===3){E=n;let e=!r.children.length;for(let t=0;t{o||=!!t.dynamicChildren;let{type:c,props:l,patchFlag:u,shapeFlag:d,dirs:f,transition:m}=t,h=c===`input`||c===`option`;if(h||u!==-1){f&&Tr(t,null,n,`created`);let c=!1;if(v(e)){c=Vo(null,m)&&n&&n.vnode.props&&n.vnode.props.appear;let r=e.content.firstChild;if(c){let e=r.getAttribute(`class`);e&&(r.$cls=e),m.beforeEnter(r)}_(r,e,n),t.el=e=r}if(d&16&&!(l&&(l.innerHTML||l.textContent))){let r=p(e.firstChild,t,e,n,i,a,o);for(;r;){gi(e,1)||ci();let t=r;r=r.nextSibling,s(t)}}else if(d&8){let n=t.children;n[0]===` -`&&(e.tagName===`PRE`||e.tagName===`TEXTAREA`)&&(n=n.slice(1));let{textContent:r}=e;r!==n&&r!==n.replace(/\r\n|\r/g,` -`)&&(gi(e,0)||ci(),e.textContent=t.children)}if(l){if(h||!o||u&48){let t=e.tagName.includes(`-`);for(let i in l)(h&&(i.endsWith(`value`)||i===`indeterminate`)||w(i)&&!de(i)||i[0]===`.`||t)&&r(e,i,null,l[i],void 0,n)}else if(l.onClick)r(e,`onClick`,null,l.onClick,void 0,n);else if(u&4&&dn(l.style))for(let e in l.style)l.style[e]}let g;(g=l&&l.onVnodeBeforeMount)&&As(g,n,t),f&&Tr(t,null,n,`beforeMount`),((g=l&&l.onVnodeMounted)||f||c)&&ns(()=>{g&&As(g,n,t),c&&m.enter(e),f&&Tr(t,null,n,`mounted`)},i)}return e.nextSibling},p=(e,t,r,o,s,l,u)=>{u||=!!t.dynamicChildren;let f=t.children,p=f.length;for(let t=0;t{let{slotScopeIds:u}=t;u&&(i=i?i.concat(u):u);let d=o(e),f=p(a(e),t,d,n,r,i,s);return f&&fi(f)&&f.data===`]`?a(t.anchor=f):(ci(),c(t.anchor=l(`]`),d,f),f)},h=(e,t,r,i,c,l)=>{if(gi(e.parentElement,1)||ci(),t.el=null,l){let t=g(e);for(;;){let n=a(e);if(n&&n!==t)s(n);else break}}let u=a(e),d=o(e);return s(e),n(null,t,d,u,r,i,di(d),c),r&&(r.vnode.el=t.el,_o(r,t.el)),u},g=(e,t=`[`,n=`]`)=>{let r=0;for(;e;)if(e=a(e),e&&fi(e)&&(e.data===t&&r++,e.data===n)){if(r===0)return a(e);r--}return e},_=(e,t,n)=>{let r=t.parentNode;r&&r.replaceChild(e,t);let i=n;for(;i;)i.vnode.el===t&&(i.vnode.el=i.subTree.el=e),i=i.parent},v=e=>e.nodeType===1&&e.tagName===`TEMPLATE`;return[u,d]}var mi=`data-allow-mismatch`,hi={0:`text`,1:`children`,2:`class`,3:`style`,4:`attribute`};function gi(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(mi);)e=e.parentElement;let n=e&&e.getAttribute(mi);if(n==null)return!1;if(n===``)return!0;{let e=n.split(`,`);return t===0&&e.includes(`children`)?!0:e.includes(hi[t])}}var _i=Se().requestIdleCallback||(e=>setTimeout(e,1)),vi=Se().cancelIdleCallback||(e=>clearTimeout(e)),yi=(e=1e4)=>t=>{let n=_i(t,{timeout:e});return()=>vi(n)};function bi(e){let{top:t,left:n,bottom:r,right:i}=e.getBoundingClientRect(),{innerHeight:a,innerWidth:o}=window;return(t>0&&t0&&r0&&n0&&i(t,n)=>{let r=new IntersectionObserver(e=>{for(let n of e)if(n.isIntersecting){r.disconnect(),t();break}},e);return n(e=>{if(e instanceof Element){if(bi(e))return t(),r.disconnect(),!1;r.observe(e)}}),()=>r.disconnect()},Si=e=>t=>{if(e){let n=matchMedia(e);if(n.matches)t();else return n.addEventListener(`change`,t,{once:!0}),()=>n.removeEventListener(`change`,t)}},Ci=(e=[])=>(t,n)=>{j(e)&&(e=[e]);let r=!1,i=e=>{r||(r=!0,a(),t(),e.target.dispatchEvent(new e.constructor(e.type,e)))},a=()=>{n(t=>{for(let n of e)t.removeEventListener(n,i)})};return n(t=>{for(let n of e)t.addEventListener(n,i,{once:!0})}),a};function wi(e,t){if(fi(e)&&e.data===`[`){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(fi(r))if(r.data===`]`){if(--n===0)break}else r.data===`[`&&n++;r=r.nextSibling}}else t(e)}var Ti=e=>!!e.type.__asyncLoader;function Ei(e){A(e)&&(e={loader:e});let{loader:t,loadingComponent:n,errorComponent:r,delay:i=200,hydrate:a,timeout:o,suspensible:s=!0,onError:c}=e,l=null,u,d=0,f=()=>(d++,l=null,p()),p=()=>{let e;return l||(e=l=t().catch(e=>{if(e=e instanceof Error?e:Error(String(e)),c)return new Promise((t,n)=>{c(e,()=>t(f()),()=>n(e),d+1)});throw e}).then(t=>e!==l&&l?l:(t&&(t.__esModule||t[Symbol.toStringTag]===`Module`)&&(t=t.default),u=t,t)))};return ei({name:`AsyncComponentWrapper`,__asyncLoader:p,__asyncHydrate(e,t,n){let r=!1;(t.bu||=[]).push(()=>r=!0);let i=()=>{r||n()},o=a?()=>{let n=a(i,t=>wi(e,t));n&&(t.bum||=[]).push(n)}:i;u?o():p().then(()=>!t.isUnmounted&&o())},get __asyncResolved(){return u},setup(){let e=Q;if(ni(e),u)return()=>Di(u,e);let t=t=>{l=null,Qn(t,e,13,!r)};if(s&&e.suspense||zs)return p().then(t=>()=>Di(t,e)).catch(e=>(t(e),()=>r?X(r,{error:e}):null));let a=_n(!1),c=_n(),d=_n(!!i);return i&&setTimeout(()=>{d.value=!1},i),o!=null&&setTimeout(()=>{if(!a.value&&!c.value){let e=Error(`Async component timed out after ${o}ms.`);t(e),c.value=e}},o),p().then(()=>{a.value=!0,e.parent&&Oi(e.parent.vnode)&&e.parent.update()}).catch(e=>{t(e),c.value=e}),()=>{if(a.value&&u)return Di(u,e);if(c.value&&r)return X(r,{error:c.value});if(n&&!d.value)return Di(n,e)}}})}function Di(e,t){let{ref:n,props:r,children:i,ce:a}=t.vnode,o=X(e,r,i);return o.ref=n,o.ce=a,delete t.vnode.ce,o}var Oi=e=>e.type.__isKeepAlive,ki={name:`KeepAlive`,__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){let n=$(),r=n.ctx;if(!r.renderer)return()=>{let e=t.default&&t.default();return e&&e.length===1?e[0]:e};let i=new Map,a=new Set,o=null,s=n.suspense,{renderer:{p:c,m:l,um:u,o:{createElement:d}}}=r,f=d(`div`);r.activate=(e,t,n,r,i)=>{let a=e.component;l(e,t,n,0,s),c(a.vnode,e,t,n,a,s,r,e.slotScopeIds,i),K(()=>{a.isDeactivated=!1,a.a&&_e(a.a);let t=e.props&&e.props.onVnodeMounted;t&&As(t,a.parent,e)},s)},r.deactivate=e=>{let t=e.component;Go(t.m),Go(t.a),l(e,f,null,1,s),K(()=>{t.da&&_e(t.da);let n=e.props&&e.props.onVnodeUnmounted;n&&As(n,t.parent,e),t.isDeactivated=!0},s)};function p(e){Fi(e),u(e,n,s,!0)}function m(e){i.forEach((t,n)=>{let r=Zs(t.type);r&&!e(r)&&h(n)})}function h(e){let t=i.get(e);t&&(!o||!gs(t,o))?p(t):o&&Fi(o),i.delete(e),a.delete(e)}eo(()=>[e.include,e.exclude],([e,t])=>{e&&m(t=>Ai(e,t)),t&&m(e=>!Ai(t,e))},{flush:`post`,deep:!0});let g=null,_=()=>{g!=null&&(Ko(n.subTree.type)?K(()=>{i.set(g,Ii(n.subTree))},n.subTree.suspense):i.set(g,Ii(n.subTree)))};return Bi(_),Hi(_),Ui(()=>{i.forEach(e=>{let{subTree:t,suspense:r}=n,i=Ii(t);if(e.type===i.type&&e.key===i.key){Fi(i);let e=i.component.da;e&&K(e,r);return}p(e)})}),()=>{if(g=null,!t.default)return o=null;let n=t.default(),r=n[0];if(n.length>1)return o=null,n;if(!hs(r)||!(r.shapeFlag&4)&&!(r.shapeFlag&128))return o=null,r;let s=Ii(r);if(s.type===J)return o=null,s;let c=s.type,l=Zs(Ti(s)?s.type.__asyncResolved||{}:c),{include:u,exclude:d,max:f}=e;if(u&&(!l||!Ai(u,l))||d&&l&&Ai(d,l))return s.shapeFlag&=-257,o=s,r;let p=s.key==null?c:s.key,m=i.get(p);return s.el&&(s=Cs(s),r.shapeFlag&128&&(r.ssContent=s)),g=p,m?(s.el=m.el,s.component=m.component,s.transition&&Qr(s,s.transition),s.shapeFlag|=512,a.delete(p),a.add(p)):(a.add(p),f&&a.size>parseInt(f,10)&&h(a.values().next().value)),s.shapeFlag|=256,o=s,Ko(r.type)?r:s}}};function Ai(e,t){return O(e)?e.some(e=>Ai(e,t)):j(e)?e.split(`,`).includes(t):ie(e)?(e.lastIndex=0,e.test(t)):!1}function ji(e,t){Ni(e,`a`,t)}function Mi(e,t){Ni(e,`da`,t)}function Ni(e,t,n=Q){let r=e.__wdc||=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()};if(Li(t,r,n),n){let e=n.parent;for(;e&&e.parent;)Oi(e.parent.vnode)&&Pi(r,t,n,e),e=e.parent}}function Pi(e,t,n,r){let i=Li(t,e,r,!0);Wi(()=>{E(r[t],i)},n)}function Fi(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Ii(e){return e.shapeFlag&128?e.ssContent:e}function Li(e,t,n=Q,r=!1){if(n){let i=n[e]||(n[e]=[]),a=t.__weh||=(...r)=>{ut();let i=Is(n),a=Zn(t,n,e,r);return i(),dt(),a};return r?i.unshift(a):i.push(a),a}}var Ri=e=>(t,n=Q)=>{(!zs||e===`sp`)&&Li(e,(...e)=>t(...e),n)},zi=Ri(`bm`),Bi=Ri(`m`),Vi=Ri(`bu`),Hi=Ri(`u`),Ui=Ri(`bum`),Wi=Ri(`um`),Gi=Ri(`sp`),Ki=Ri(`rtg`),qi=Ri(`rtc`);function Ji(e,t=Q){Li(`ec`,e,t)}var Yi=`components`,Xi=`directives`;function Zi(e,t){return ta(Yi,e,!0,t)||e}var Qi=Symbol.for(`v-ndc`);function $i(e){return j(e)?ta(Yi,e,!1)||e:e||Qi}function ea(e){return ta(Xi,e)}function ta(e,t,n=!0,r=!1){let i=W||Q;if(i){let n=i.type;if(e===Yi){let e=Zs(n,!1);if(e&&(e===t||e===P(t)||e===he(P(t))))return n}let a=na(i[e]||n[e],t)||na(i.appContext[e],t);return!a&&r?n:a}}function na(e,t){return e&&(e[t]||e[P(t)]||e[he(P(t))])}function ra(e,t,n,r){let i,a=n&&n[r],o=O(e);if(o||j(e)){let n=o&&dn(e),r=!1,s=!1;n&&(r=!B(e),s=fn(e),e=wt(e)),i=Array(e.length);for(let n=0,o=e.length;nt(e,n,void 0,a&&a[n]));else{let n=Object.keys(e);i=Array(n.length);for(let r=0,o=n.length;r{let t=r.fn(...e);return t&&(t.key=r.key),t}:r.fn)}return e}function aa(e,t,n={},r,i){if(W.ce||W.parent&&Ti(W.parent)&&W.parent.ce){let e=Object.keys(n).length>0;return t!==`default`&&(n.name=t),cs(),ms(q,null,[X(`slot`,n,r&&r())],e?-2:64)}let a=e[t];a&&a._c&&(a._d=!1),cs();let o=a&&oa(a(n)),s=n.key||o&&o.key,c=ms(q,{key:(s&&!M(s)?s:`_${t}`)+(!o&&r?`_fb`:``)},o||(r?r():[]),o&&e._===1?64:-2);return!i&&c.scopeId&&(c.slotScopeIds=[c.scopeId+`-s`]),a&&a._c&&(a._d=!0),c}function oa(e){return e.some(e=>hs(e)?!(e.type===J||e.type===q&&!oa(e.children)):!0)?e:null}function sa(e,t){let n={};for(let r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:ge(r)]=e[r];return n}var ca=e=>e?Rs(e)?Xs(e):ca(e.parent):null,la=T(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ca(e.parent),$root:e=>ca(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Na(e),$forceUpdate:e=>e.f||=()=>{cr(e.update)},$nextTick:e=>e.n||=or.bind(e.proxy),$watch:e=>no.bind(e)}),ua=(e,t)=>e!==b&&!e.__isScriptSetup&&D(e,t),da={get({_:e},t){if(t===`__v_skip`)return!0;let{ctx:n,setupState:r,data:i,props:a,accessCache:o,type:s,appContext:c}=e;if(t[0]!==`$`){let e=o[t];if(e!==void 0)switch(e){case 1:return r[t];case 2:return i[t];case 4:return n[t];case 3:return a[t]}else if(ua(r,t))return o[t]=1,r[t];else if(i!==b&&D(i,t))return o[t]=2,i[t];else if(D(a,t))return o[t]=3,a[t];else if(n!==b&&D(n,t))return o[t]=4,n[t];else Oa&&(o[t]=0)}let l=la[t],u,d;if(l)return t===`$attrs`&&z(e.attrs,`get`,``),l(e);if((u=s.__cssModules)&&(u=u[t]))return u;if(n!==b&&D(n,t))return o[t]=4,n[t];if(d=c.config.globalProperties,D(d,t))return d[t]},set({_:e},t,n){let{data:r,setupState:i,ctx:a}=e;return ua(i,t)?(i[t]=n,!0):r!==b&&D(r,t)?(r[t]=n,!0):D(e.props,t)||t[0]===`$`&&t.slice(1)in e?!1:(a[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:i,props:a,type:o}},s){let c;return!!(n[s]||e!==b&&s[0]!==`$`&&D(e,s)||ua(t,s)||D(a,s)||D(r,s)||D(la,s)||D(i.config.globalProperties,s)||(c=o.__cssModules)&&c[s])},defineProperty(e,t,n){return n.get==null?D(n,`value`)&&this.set(e,t,n.value,null):e._.accessCache[t]=0,Reflect.defineProperty(e,t,n)}},fa=T({},da,{get(e,t){if(t!==Symbol.unscopables)return da.get(e,t,e)},has(e,t){return t[0]!==`_`&&!Ce(t)}});function pa(){return null}function ma(){return null}function ha(e){}function ga(e){}function _a(){return null}function va(){}function ya(e,t){return null}function ba(){return Sa(`useSlots`).slots}function xa(){return Sa(`useAttrs`).attrs}function Sa(e){let t=$();return t.setupContext||=Ys(t)}function Ca(e){return O(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e}function wa(e,t){let n=Ca(e);for(let e in t){if(e.startsWith(`__skip`))continue;let r=n[e];r?O(r)||A(r)?r=n[e]={type:r,default:t[e]}:r.default=t[e]:r===null&&(r=n[e]={default:t[e]}),r&&t[`__skip_${e}`]&&(r.skipFactory=!0)}return n}function Ta(e,t){return!e||!t?e||t:O(e)&&O(t)?e.concat(t):T({},Ca(e),Ca(t))}function Ea(e,t){let n={};for(let r in e)t.includes(r)||Object.defineProperty(n,r,{enumerable:!0,get:()=>e[r]});return n}function Da(e){let t=$(),n=e();return Ls(),ae(n)&&(n=n.catch(e=>{throw Is(t),e})),[n,()=>Is(t)]}var Oa=!0;function ka(e){let t=Na(e),n=e.proxy,r=e.ctx;Oa=!1,t.beforeCreate&&ja(t.beforeCreate,e,`bc`);let{data:i,computed:a,methods:o,watch:s,provide:c,inject:l,created:u,beforeMount:d,mounted:f,beforeUpdate:p,updated:m,activated:h,deactivated:g,beforeDestroy:_,beforeUnmount:v,destroyed:y,unmounted:b,render:x,renderTracked:C,renderTriggered:w,errorCaptured:ee,serverPrefetch:T,expose:E,inheritAttrs:te,components:D,directives:ne,filters:re}=t;if(l&&Aa(l,r,null),o)for(let e in o){let t=o[e];A(t)&&(r[e]=t.bind(n))}if(i){let t=i.call(n,n);N(t)&&(e.data=on(t))}if(Oa=!0,a)for(let e in a){let t=a[e],i=$s({get:A(t)?t.bind(n,n):A(t.get)?t.get.bind(n,n):S,set:!A(t)&&A(t.set)?t.set.bind(n):S});Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e})}if(s)for(let e in s)Ma(s[e],r,n,e);if(c){let e=A(c)?c.call(n):c;Reflect.ownKeys(e).forEach(t=>{Ka(t,e[t])})}u&&ja(u,e,`c`);function k(e,t){O(t)?t.forEach(t=>e(t.bind(n))):t&&e(t.bind(n))}if(k(zi,d),k(Bi,f),k(Vi,p),k(Hi,m),k(ji,h),k(Mi,g),k(Ji,ee),k(qi,C),k(Ki,w),k(Ui,v),k(Wi,b),k(Gi,T),O(E))if(E.length){let t=e.exposed||={};E.forEach(e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t,enumerable:!0})})}else e.exposed||={};x&&e.render===S&&(e.render=x),te!=null&&(e.inheritAttrs=te),D&&(e.components=D),ne&&(e.directives=ne),T&&ni(e)}function Aa(e,t,n=S){for(let n in O(e)&&(e=Ra(e)),e){let r=e[n],i;i=N(r)?`default`in r?qa(r.from||n,r.default,!0):qa(r.from||n):qa(r),H(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):t[n]=i}}function ja(e,t,n){Zn(O(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ma(e,t,n,r){let i=r.includes(`.`)?ro(n,r):()=>n[r];if(j(e)){let n=t[e];A(n)&&eo(i,n)}else if(A(e))eo(i,e.bind(n));else if(N(e))if(O(e))e.forEach(e=>Ma(e,t,n,r));else{let r=A(e.handler)?e.handler.bind(n):t[e.handler];A(r)&&eo(i,r,e)}}function Na(e){let t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCache:a,config:{optionMergeStrategies:o}}=e.appContext,s=a.get(t),c;return s?c=s:!i.length&&!n&&!r?c=t:(c={},i.length&&i.forEach(e=>Pa(c,e,o,!0)),Pa(c,t,o)),N(t)&&a.set(t,c),c}function Pa(e,t,n,r=!1){let{mixins:i,extends:a}=t;for(let o in a&&Pa(e,a,n,!0),i&&i.forEach(t=>Pa(e,t,n,!0)),t)if(!(r&&o===`expose`)){let r=Fa[o]||n&&n[o];e[o]=r?r(e[o],t[o]):t[o]}return e}var Fa={data:Ia,props:Ba,emits:Ba,methods:za,computed:za,beforeCreate:G,created:G,beforeMount:G,mounted:G,beforeUpdate:G,updated:G,beforeDestroy:G,beforeUnmount:G,destroyed:G,unmounted:G,activated:G,deactivated:G,errorCaptured:G,serverPrefetch:G,components:za,directives:za,watch:Va,provide:Ia,inject:La};function Ia(e,t){return t?e?function(){return T(A(e)?e.call(this,this):e,A(t)?t.call(this,this):t)}:t:e}function La(e,t){return za(Ra(e),Ra(t))}function Ra(e){if(O(e)){let t={};for(let n=0;n1)return n&&A(t)?t.call(r&&r.proxy):t}}function Ja(){return!!($()||Ga)}var Ya=Symbol.for(`v-scx`),Xa=()=>qa(Ya);function Za(e,t){return to(e,null,t)}function Qa(e,t){return to(e,null,{flush:`post`})}function $a(e,t){return to(e,null,{flush:`sync`})}function eo(e,t,n){return to(e,t,n)}function to(e,t,n=b){let{immediate:r,deep:i,flush:a,once:o}=n,s=T({},n),c=t&&r||!t&&a!==`post`,l;if(zs){if(a===`sync`){let e=Xa();l=e.__watcherHandles||=[]}else if(!c){let e=()=>{};return e.stop=S,e.resume=S,e.pause=S,e}}let u=Q;s.call=(e,t,n)=>Zn(e,u,t,n);let d=!1;a===`post`?s.scheduler=e=>{K(e,u&&u.suspense)}:a!==`sync`&&(d=!0,s.scheduler=(e,t)=>{t?e():cr(e)}),s.augmentJob=e=>{t&&(e.flags|=4),d&&(e.flags|=2,u&&(e.id=u.uid,e.i=u))};let f=Hn(e,t,s);return zs&&(l?l.push(f):c&&f()),f}function no(e,t,n){let r=this.proxy,i=j(e)?e.includes(`.`)?ro(r,e):()=>r[e]:e.bind(r,r),a;A(t)?a=t:(a=t.handler,n=t);let o=Is(this),s=to(i,a.bind(r),n);return o(),s}function ro(e,t){let n=t.split(`.`);return()=>{let t=e;for(let e=0;e{let c,l=b,u;return $a(()=>{let t=e[i];I(c,t)&&(c=t,s())}),{get(){return o(),n.get?n.get(c):c},set(e){let o=n.set?n.set(e):e;if(!I(o,c)&&!(l!==b&&I(e,l)))return;let d=r.vnode.props;d&&(t in d||i in d||a in d)&&(`onUpdate:${t}`in d||`onUpdate:${i}`in d||`onUpdate:${a}`in d)||(c=e,s()),r.emit(`update:${t}`,o),I(e,o)&&I(e,l)&&!I(o,u)&&s(),l=e,u=o}}});return s[Symbol.iterator]=()=>{let e=0;return{next(){return e<2?{value:e++?o||b:s,done:!1}:{done:!0}}}},s}var ao=(e,t)=>t===`modelValue`||t===`model-value`?e.modelModifiers:e[`${t}Modifiers`]||e[`${P(t)}Modifiers`]||e[`${F(t)}Modifiers`];function oo(e,t,...n){if(e.isUnmounted)return;let r=e.vnode.props||b,i=n,a=t.startsWith(`update:`),o=a&&ao(r,t.slice(7));o&&(o.trim&&(i=n.map(e=>j(e)?e.trim():e)),o.number&&(i=n.map(ye)));let s,c=r[s=ge(t)]||r[s=ge(P(t))];!c&&a&&(c=r[s=ge(F(t))]),c&&Zn(c,e,6,i);let l=r[s+`Once`];if(l){if(!e.emitted)e.emitted={};else if(e.emitted[s])return;e.emitted[s]=!0,Zn(l,e,6,i)}}var so=new WeakMap;function co(e,t,n=!1){let r=n?so:t.emitsCache,i=r.get(e);if(i!==void 0)return i;let a=e.emits,o={},s=!1;if(!A(e)){let r=e=>{let n=co(e,t,!0);n&&(s=!0,T(o,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return!a&&!s?(N(e)&&r.set(e,null),null):(O(a)?a.forEach(e=>o[e]=null):T(o,a),N(e)&&r.set(e,o),o)}function lo(e,t){return!e||!w(t)?!1:(t=t.slice(2).replace(/Once$/,``),D(e,t[0].toLowerCase()+t.slice(1))||D(e,F(t))||D(e,t))}function uo(e){let{type:t,vnode:n,proxy:r,withProxy:i,propsOptions:[a],slots:o,attrs:s,emit:c,render:l,renderCache:u,props:d,data:f,setupState:p,ctx:m,inheritAttrs:h}=e,g=yr(e),_,v;try{if(n.shapeFlag&4){let e=i||r,t=e;_=Z(l.call(t,e,u,d,p,f,m)),v=s}else{let e=t;_=Z(e.length>1?e(d,{attrs:s,slots:o,emit:c}):e(d,null)),v=t.props?s:po(s)}}catch(t){ss.length=0,Qn(t,e,1),_=X(J)}let y=_;if(v&&h!==!1){let e=Object.keys(v),{shapeFlag:t}=y;e.length&&t&7&&(a&&e.some(ee)&&(v=mo(v,a)),y=Cs(y,v,!1,!0))}return n.dirs&&(y=Cs(y,null,!1,!0),y.dirs=y.dirs?y.dirs.concat(n.dirs):n.dirs),n.transition&&Qr(y,n.transition),_=y,yr(g),_}function fo(e,t=!0){let n;for(let t=0;t{let t;for(let n in e)(n===`class`||n===`style`||w(n))&&((t||={})[n]=e[n]);return t},mo=(e,t)=>{let n={};for(let r in e)(!ee(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function ho(e,t,n){let{props:r,children:i,component:a}=e,{props:o,children:s,patchFlag:c}=t,l=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?go(r,o,l):!!o;if(c&8){let e=t.dynamicProps;for(let t=0;tObject.create(vo),bo=e=>Object.getPrototypeOf(e)===vo;function xo(e,t,n,r=!1){let i={},a=yo();for(let n in e.propsDefaults=Object.create(null),Co(e,t,i,a),e.propsOptions[0])n in i||(i[n]=void 0);n?e.props=r?i:sn(i):e.type.props?e.props=i:e.props=a,e.attrs=a}function So(e,t,n,r){let{props:i,attrs:a,vnode:{patchFlag:o}}=e,s=V(i),[c]=e.propsOptions,l=!1;if((r||o>0)&&!(o&16)){if(o&8){let n=e.vnode.dynamicProps;for(let r=0;r{c=!0;let[n,r]=Eo(e,t,!0);T(o,n),r&&s.push(...r)};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}if(!a&&!c)return N(e)&&r.set(e,x),x;if(O(a))for(let e=0;ee===`_`||e===`_ctx`||e===`$stable`,ko=e=>O(e)?e.map(Z):[Z(e)],Ao=(e,t,n)=>{if(t._n)return t;let r=Cr((...e)=>ko(t(...e)),n);return r._c=!1,r},jo=(e,t,n)=>{let r=e._ctx;for(let n in e){if(Oo(n))continue;let i=e[n];if(A(i))t[n]=Ao(n,i,r);else if(i!=null){let e=ko(i);t[n]=()=>e}}},Mo=(e,t)=>{let n=ko(t);e.slots.default=()=>n},No=(e,t,n)=>{for(let r in t)(n||!Oo(r))&&(e[r]=t[r])},Po=(e,t,n)=>{let r=e.slots=yo();if(e.vnode.shapeFlag&32){let e=t._;e?(No(r,t,n),n&&ve(r,`_`,e,!0)):jo(t,r)}else t&&Mo(e,t)},Fo=(e,t,n)=>{let{vnode:r,slots:i}=e,a=!0,o=b;if(r.shapeFlag&32){let e=t._;e?n&&e===1?a=!1:No(i,t,n):(a=!t.$stable,jo(t,i)),o=t}else t&&(Mo(e,t),o={default:1});if(a)for(let e in i)!Oo(e)&&o[e]==null&&delete i[e]},K=ns;function Io(e){return Ro(e)}function Lo(e){return Ro(e,pi)}function Ro(e,t){let n=Se();n.__VUE__=!0;let{insert:r,remove:i,patchProp:a,createElement:o,createText:s,createComment:c,setText:l,setElementText:u,parentNode:d,nextSibling:f,setScopeId:p=S,insertStaticContent:m}=e,h=(e,t,n,r=null,i=null,a=null,o=void 0,s=null,c=!!t.dynamicChildren)=>{if(e===t)return;e&&!gs(e,t)&&(r=pe(e),se(e,i,a,!0),e=null),t.patchFlag===-2&&(c=!1,t.dynamicChildren=null);let{type:l,ref:u,shapeFlag:d}=t;switch(l){case as:g(e,t,n,r);break;case J:_(e,t,n,r);break;case os:e??v(t,n,r,o);break;case q:ne(e,t,n,r,i,a,o,s,c);break;default:d&1?w(e,t,n,r,i,a,o,s,c):d&6?re(e,t,n,r,i,a,o,s,c):(d&64||d&128)&&l.process(e,t,n,r,i,a,o,s,c,F)}u!=null&&i?ai(u,e&&e.ref,a,t||e,!t):u==null&&e&&e.ref!=null&&ai(e.ref,null,a,e,!0)},g=(e,t,n,i)=>{if(e==null)r(t.el=s(t.children),n,i);else{let n=t.el=e.el;t.children!==e.children&&l(n,t.children)}},_=(e,t,n,i)=>{e==null?r(t.el=c(t.children||``),n,i):t.el=e.el},v=(e,t,n,r)=>{[e.el,e.anchor]=m(e.children,t,n,r,e.el,e.anchor)},y=({el:e,anchor:t},n,i)=>{let a;for(;e&&e!==t;)a=f(e),r(e,n,i),e=a;r(t,n,i)},C=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=f(e),i(e),e=n;i(t)},w=(e,t,n,r,i,a,o,s,c)=>{if(t.type===`svg`?o=`svg`:t.type===`math`&&(o=`mathml`),e==null)ee(t,n,r,i,a,o,s,c);else{let n=e.el&&e.el._isVueCE?e.el:null;try{n&&n._beginPatch(),te(e,t,i,a,o,s,c)}finally{n&&n._endPatch()}}},ee=(e,t,n,i,s,c,l,d)=>{let f,p,{props:m,shapeFlag:h,transition:g,dirs:_}=e;if(f=e.el=o(e.type,c,m&&m.is,m),h&8?u(f,e.children):h&16&&E(e.children,f,null,i,s,zo(e,c),l,d),_&&Tr(e,null,i,`created`),T(f,e,e.scopeId,l,i),m){for(let e in m)e!==`value`&&!de(e)&&a(f,e,null,m[e],c,i);`value`in m&&a(f,`value`,null,m.value,c),(p=m.onVnodeBeforeMount)&&As(p,i,e)}_&&Tr(e,null,i,`beforeMount`);let v=Vo(s,g);v&&g.beforeEnter(f),r(f,t,n),((p=m&&m.onVnodeMounted)||v||_)&&K(()=>{p&&As(p,i,e),v&&g.enter(f),_&&Tr(e,null,i,`mounted`)},s)},T=(e,t,n,r,i)=>{if(n&&p(e,n),r)for(let t=0;t{for(let l=c;l{let c=t.el=e.el,{patchFlag:l,dynamicChildren:d,dirs:f}=t;l|=e.patchFlag&16;let p=e.props||b,m=t.props||b,h;if(n&&Bo(n,!1),(h=m.onVnodeBeforeUpdate)&&As(h,n,t,e),f&&Tr(t,e,n,`beforeUpdate`),n&&Bo(n,!0),(p.innerHTML&&m.innerHTML==null||p.textContent&&m.textContent==null)&&u(c,``),d?D(e.dynamicChildren,d,c,n,r,zo(t,i),o):s||M(e,t,c,null,n,r,zo(t,i),o,!1),l>0){if(l&16)O(c,p,m,n,i);else if(l&2&&p.class!==m.class&&a(c,`class`,null,m.class,i),l&4&&a(c,`style`,p.style,m.style,i),l&8){let e=t.dynamicProps;for(let t=0;t{h&&As(h,n,t,e),f&&Tr(t,e,n,`updated`)},r)},D=(e,t,n,r,i,a,o)=>{for(let s=0;s{if(t!==n){if(t!==b)for(let o in t)!de(o)&&!(o in n)&&a(e,o,t[o],null,i,r);for(let o in n){if(de(o))continue;let s=n[o],c=t[o];s!==c&&o!==`value`&&a(e,o,c,s,i,r)}`value`in n&&a(e,`value`,t.value,n.value,i)}},ne=(e,t,n,i,a,o,c,l,u)=>{let d=t.el=e?e.el:s(``),f=t.anchor=e?e.anchor:s(``),{patchFlag:p,dynamicChildren:m,slotScopeIds:h}=t;h&&(l=l?l.concat(h):h),e==null?(r(d,n,i),r(f,n,i),E(t.children||[],n,f,a,o,c,l,u)):p>0&&p&64&&m&&e.dynamicChildren?(D(e.dynamicChildren,m,n,a,o,c,l),(t.key!=null||a&&t===a.subTree)&&Ho(e,t,!0)):M(e,t,n,f,a,o,c,l,u)},re=(e,t,n,r,i,a,o,s,c)=>{t.slotScopeIds=s,e==null?t.shapeFlag&512?i.ctx.activate(t,n,r,o,c):k(t,n,r,i,a,o,c):ie(e,t,c)},k=(e,t,n,r,i,a,o)=>{let s=e.component=Ns(e,r,i);if(Oi(e)&&(s.ctx.renderer=F),Bs(s,!1,o),s.asyncDep){if(i&&i.registerDep(s,A,o),!e.el){let r=s.subTree=X(J);_(null,r,t,n),e.placeholder=r.el}}else A(s,e,t,n,i,a,o)},ie=(e,t,n)=>{let r=t.component=e.component;if(ho(e,t,n))if(r.asyncDep&&!r.asyncResolved){j(r,t,n);return}else r.next=t,r.update();else t.el=e.el,r.vnode=t},A=(e,t,n,r,i,a,o)=>{let s=()=>{if(e.isMounted){let{next:t,bu:n,u:r,parent:c,vnode:l}=e;{let n=Wo(e);if(n){t&&(t.el=l.el,j(e,t,o)),n.asyncDep.then(()=>{e.isUnmounted||s()});return}}let u=t,f;Bo(e,!1),t?(t.el=l.el,j(e,t,o)):t=l,n&&_e(n),(f=t.props&&t.props.onVnodeBeforeUpdate)&&As(f,c,t,l),Bo(e,!0);let p=uo(e),m=e.subTree;e.subTree=p,h(m,p,d(m.el),pe(m),e,i,a),t.el=p.el,u===null&&_o(e,p.el),r&&K(r,i),(f=t.props&&t.props.onVnodeUpdated)&&K(()=>As(f,c,t,l),i)}else{let o,{el:s,props:c}=t,{bm:l,m:u,parent:d,root:f,type:p}=e,m=Ti(t);if(Bo(e,!1),l&&_e(l),!m&&(o=c&&c.onVnodeBeforeMount)&&As(o,d,t),Bo(e,!0),s&&ge){let t=()=>{e.subTree=uo(e),ge(s,e.subTree,e,i,null)};m&&p.__asyncHydrate?p.__asyncHydrate(s,e,t):t()}else{f.ce&&f.ce._def.shadowRoot!==!1&&f.ce._injectChildStyle(p);let o=e.subTree=uo(e);h(null,o,n,r,e,i,a),t.el=o.el}if(u&&K(u,i),!m&&(o=c&&c.onVnodeMounted)){let e=t;K(()=>As(o,d,e),i)}(t.shapeFlag&256||d&&Ti(d.vnode)&&d.vnode.shapeFlag&256)&&e.a&&K(e.a,i),e.isMounted=!0,t=n=r=null}};e.scope.on();let c=e.effect=new qe(s);e.scope.off();let l=e.update=c.run.bind(c),u=e.job=c.runIfDirty.bind(c);u.i=e,u.id=e.uid,c.scheduler=()=>cr(u),Bo(e,!0),l()},j=(e,t,n)=>{t.component=e;let r=e.vnode.props;e.vnode=t,e.next=null,So(e,t.props,r,n),Fo(e,t.children,n),ut(),dr(e),dt()},M=(e,t,n,r,i,a,o,s,c=!1)=>{let l=e&&e.children,d=e?e.shapeFlag:0,f=t.children,{patchFlag:p,shapeFlag:m}=t;if(p>0){if(p&128){ae(l,f,n,r,i,a,o,s,c);return}else if(p&256){N(l,f,n,r,i,a,o,s,c);return}}m&8?(d&16&&fe(l,i,a),f!==l&&u(n,f)):d&16?m&16?ae(l,f,n,r,i,a,o,s,c):fe(l,i,a,!0):(d&8&&u(n,``),m&16&&E(f,n,r,i,a,o,s,c))},N=(e,t,n,r,i,a,o,s,c)=>{e||=x,t||=x;let l=e.length,u=t.length,d=Math.min(l,u),f;for(f=0;fu?fe(e,i,a,!0,!1,d):E(t,n,r,i,a,o,s,c,d)},ae=(e,t,n,r,i,a,o,s,c)=>{let l=0,u=t.length,d=e.length-1,f=u-1;for(;l<=d&&l<=f;){let r=e[l],u=t[l]=c?Ds(t[l]):Z(t[l]);if(gs(r,u))h(r,u,n,null,i,a,o,s,c);else break;l++}for(;l<=d&&l<=f;){let r=e[d],l=t[f]=c?Ds(t[f]):Z(t[f]);if(gs(r,l))h(r,l,n,null,i,a,o,s,c);else break;d--,f--}if(l>d){if(l<=f){let e=f+1,d=ef)for(;l<=d;)se(e[l],i,a,!0),l++;else{let p=l,m=l,g=new Map;for(l=m;l<=f;l++){let e=t[l]=c?Ds(t[l]):Z(t[l]);e.key!=null&&g.set(e.key,l)}let _,v=0,y=f-m+1,b=!1,S=0,C=Array(y);for(l=0;l=y){se(r,i,a,!0);continue}let u;if(r.key!=null)u=g.get(r.key);else for(_=m;_<=f;_++)if(C[_-m]===0&&gs(r,t[_])){u=_;break}u===void 0?se(r,i,a,!0):(C[u-m]=l+1,u>=S?S=u:b=!0,h(r,t[u],n,null,i,a,o,s,c),v++)}let w=b?Uo(C):x;for(_=w.length-1,l=y-1;l>=0;l--){let e=m+l,d=t[e],f=t[e+1],p=e+1{let{el:s,type:c,transition:l,children:u,shapeFlag:d}=e;if(d&6){oe(e.component.subTree,t,n,a);return}if(d&128){e.suspense.move(t,n,a);return}if(d&64){c.move(e,t,n,F);return}if(c===q){r(s,t,n);for(let e=0;el.enter(s),o);else{let{leave:a,delayLeave:o,afterLeave:c}=l,u=()=>{e.ctx.isUnmounted?i(s):r(s,t,n)},d=()=>{s._isLeaving&&s[zr](!0),a(s,()=>{u(),c&&c()})};o?o(s,u,d):d()}else r(s,t,n)},se=(e,t,n,r=!1,i=!1)=>{let{type:a,props:o,ref:s,children:c,dynamicChildren:l,shapeFlag:u,patchFlag:d,dirs:f,cacheIndex:p}=e;if(d===-2&&(i=!1),s!=null&&(ut(),ai(s,null,n,e,!0),dt()),p!=null&&(t.renderCache[p]=void 0),u&256){t.ctx.deactivate(e);return}let m=u&1&&f,h=!Ti(e),g;if(h&&(g=o&&o.onVnodeBeforeUnmount)&&As(g,t,e),u&6)ue(e.component,n,r);else{if(u&128){e.suspense.unmount(n,r);return}m&&Tr(e,null,t,`beforeUnmount`),u&64?e.type.remove(e,t,n,F,r):l&&!l.hasOnce&&(a!==q||d>0&&d&64)?fe(l,t,n,!1,!0):(a===q&&d&384||!i&&u&16)&&fe(c,t,n),r&&ce(e)}(h&&(g=o&&o.onVnodeUnmounted)||m)&&K(()=>{g&&As(g,t,e),m&&Tr(e,null,t,`unmounted`)},n)},ce=e=>{let{type:t,el:n,anchor:r,transition:a}=e;if(t===q){le(n,r);return}if(t===os){C(e);return}let o=()=>{i(n),a&&!a.persisted&&a.afterLeave&&a.afterLeave()};if(e.shapeFlag&1&&a&&!a.persisted){let{leave:t,delayLeave:r}=a,i=()=>t(n,o);r?r(e.el,o,i):i()}else o()},le=(e,t)=>{let n;for(;e!==t;)n=f(e),i(e),e=n;i(t)},ue=(e,t,n)=>{let{bum:r,scope:i,job:a,subTree:o,um:s,m:c,a:l}=e;Go(c),Go(l),r&&_e(r),i.stop(),a&&(a.flags|=8,se(o,e,t,n)),s&&K(s,t),K(()=>{e.isUnmounted=!0},t)},fe=(e,t,n,r=!1,i=!1,a=0)=>{for(let o=a;o{if(e.shapeFlag&6)return pe(e.component.subTree);if(e.shapeFlag&128)return e.suspense.next();let t=f(e.anchor||e.el),n=t&&t[Er];return n?f(n):t},P=!1,me=(e,t,n)=>{e==null?t._vnode&&se(t._vnode,null,null,!0):h(t._vnode||null,e,t,null,null,null,n),t._vnode=e,P||=(P=!0,dr(),fr(),!1)},F={p:h,um:se,m:oe,r:ce,mt:k,mc:E,pc:M,pbc:D,n:pe,o:e},he,ge;return t&&([he,ge]=t(F)),{render:me,hydrate:he,createApp:Wa(me,he)}}function zo({type:e,props:t},n){return n===`svg`&&e===`foreignObject`||n===`mathml`&&e===`annotation-xml`&&t&&t.encoding&&t.encoding.includes(`html`)?void 0:n}function Bo({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Vo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Ho(e,t,n=!1){let r=e.children,i=t.children;if(O(r)&&O(i))for(let e=0;e>1,e[n[s]]0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,o=n[a-1];a-- >0;)n[a]=o,o=t[o];return n}function Wo(e){let t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Wo(t)}function Go(e){if(e)for(let t=0;te.__isSuspense,qo=0,Jo={name:`Suspense`,__isSuspense:!0,process(e,t,n,r,i,a,o,s,c,l){if(e==null)Xo(t,n,r,i,a,o,s,c,l);else{if(a&&a.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}Zo(e,t,n,r,i,o,s,c,l)}},hydrate:$o,normalize:es};function Yo(e,t){let n=e.props&&e.props[t];A(n)&&n()}function Xo(e,t,n,r,i,a,o,s,c){let{p:l,o:{createElement:u}}=c,d=u(`div`),f=e.suspense=Qo(e,i,r,t,d,n,a,o,s,c);l(null,f.pendingBranch=e.ssContent,d,null,r,f,a,o),f.deps>0?(Yo(e,`onPending`),Yo(e,`onFallback`),l(null,e.ssFallback,t,n,r,null,a,o),rs(f,e.ssFallback)):f.resolve(!1,!0)}function Zo(e,t,n,r,i,a,o,s,{p:c,um:l,o:{createElement:u}}){let d=t.suspense=e.suspense;d.vnode=t,t.el=e.el;let f=t.ssContent,p=t.ssFallback,{activeBranch:m,pendingBranch:h,isInFallback:g,isHydrating:_}=d;if(h)d.pendingBranch=f,gs(h,f)?(c(h,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0?d.resolve():g&&(_||(c(m,p,n,r,i,null,a,o,s),rs(d,p)))):(d.pendingId=qo++,_?(d.isHydrating=!1,d.activeBranch=h):l(h,i,d),d.deps=0,d.effects.length=0,d.hiddenContainer=u(`div`),g?(c(null,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0?d.resolve():(c(m,p,n,r,i,null,a,o,s),rs(d,p))):m&&gs(m,f)?(c(m,f,n,r,i,d,a,o,s),d.resolve(!0)):(c(null,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0&&d.resolve()));else if(m&&gs(m,f))c(m,f,n,r,i,d,a,o,s),rs(d,f);else if(Yo(t,`onPending`),d.pendingBranch=f,f.shapeFlag&512?d.pendingId=f.component.suspenseId:d.pendingId=qo++,c(null,f,d.hiddenContainer,null,i,d,a,o,s),d.deps<=0)d.resolve();else{let{timeout:e,pendingId:t}=d;e>0?setTimeout(()=>{d.pendingId===t&&d.fallback(p)},e):e===0&&d.fallback(p)}}function Qo(e,t,n,r,i,a,o,s,c,l,u=!1){let{p:d,m:f,um:p,n:m,o:{parentNode:h,remove:g}}=l,_,v=is(e);v&&t&&t.pendingBranch&&(_=t.pendingId,t.deps++);let y=e.props?be(e.props.timeout):void 0,b=a,x={vnode:e,parent:t,parentComponent:n,namespace:o,container:r,hiddenContainer:i,deps:0,pendingId:qo++,timeout:typeof y==`number`?y:-1,activeBranch:null,pendingBranch:null,isInFallback:!u,isHydrating:u,isUnmounted:!1,effects:[],resolve(e=!1,n=!1){let{vnode:r,activeBranch:i,pendingBranch:o,pendingId:s,effects:c,parentComponent:l,container:u,isInFallback:d}=x,g=!1;x.isHydrating?x.isHydrating=!1:e||(g=i&&o.transition&&o.transition.mode===`out-in`,g&&(i.transition.afterLeave=()=>{s===x.pendingId&&(f(o,u,a===b?m(i):a,0),ur(c),d&&r.ssFallback&&(r.ssFallback.el=null))}),i&&(h(i.el)===u&&(a=m(i)),p(i,l,x,!0),!g&&d&&r.ssFallback&&K(()=>r.ssFallback.el=null,x)),g||f(o,u,a,0)),rs(x,o),x.pendingBranch=null,x.isInFallback=!1;let y=x.parent,S=!1;for(;y;){if(y.pendingBranch){y.effects.push(...c),S=!0;break}y=y.parent}!S&&!g&&ur(c),x.effects=[],v&&t&&t.pendingBranch&&_===t.pendingId&&(t.deps--,t.deps===0&&!n&&t.resolve()),Yo(r,`onResolve`)},fallback(e){if(!x.pendingBranch)return;let{vnode:t,activeBranch:n,parentComponent:r,container:i,namespace:a}=x;Yo(t,`onFallback`);let o=m(n),l=()=>{x.isInFallback&&(d(null,e,i,o,r,null,a,s,c),rs(x,e))},u=e.transition&&e.transition.mode===`out-in`;u&&(n.transition.afterLeave=l),x.isInFallback=!0,p(n,r,null,!0),u||l()},move(e,t,n){x.activeBranch&&f(x.activeBranch,e,t,n),x.container=e},next(){return x.activeBranch&&m(x.activeBranch)},registerDep(e,t,n){let r=!!x.pendingBranch;r&&x.deps++;let i=e.vnode.el;e.asyncDep.catch(t=>{Qn(t,e,0)}).then(a=>{if(e.isUnmounted||x.isUnmounted||x.pendingId!==e.suspenseId)return;e.asyncResolved=!0;let{vnode:s}=e;Hs(e,a,!1),i&&(s.el=i);let c=!i&&e.subTree.el;t(e,s,h(i||e.subTree.el),i?null:m(e.subTree),x,o,n),c&&(s.placeholder=null,g(c)),_o(e,s.el),r&&--x.deps===0&&x.resolve()})},unmount(e,t){x.isUnmounted=!0,x.activeBranch&&p(x.activeBranch,n,e,t),x.pendingBranch&&p(x.pendingBranch,n,e,t)}};return x}function $o(e,t,n,r,i,a,o,s,c){let l=t.suspense=Qo(t,r,n,e.parentNode,document.createElement(`div`),null,i,a,o,s,!0),u=c(e,l.pendingBranch=t.ssContent,n,l,a,o);return l.deps===0&&l.resolve(!1,!0),u}function es(e){let{shapeFlag:t,children:n}=e,r=t&32;e.ssContent=ts(r?n.default:n),e.ssFallback=r?ts(n.fallback):X(J)}function ts(e){let t;if(A(e)){let n=us&&e._c;n&&(e._d=!1,cs()),e=e(),n&&(e._d=!0,t=Y,ls())}return O(e)&&(e=fo(e)),e=Z(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(t=>t!==e)),e}function ns(e,t){t&&t.pendingBranch?O(e)?t.effects.push(...e):t.effects.push(e):ur(e)}function rs(e,t){e.activeBranch=t;let{vnode:n,parentComponent:r}=e,i=t.el;for(;!i&&t.component;)t=t.component.subTree,i=t.el;n.el=i,r&&r.subTree===n&&(r.vnode.el=i,_o(r,i))}function is(e){let t=e.props&&e.props.suspensible;return t!=null&&t!==!1}var q=Symbol.for(`v-fgt`),as=Symbol.for(`v-txt`),J=Symbol.for(`v-cmt`),os=Symbol.for(`v-stc`),ss=[],Y=null;function cs(e=!1){ss.push(Y=e?null:[])}function ls(){ss.pop(),Y=ss[ss.length-1]||null}var us=1;function ds(e,t=!1){us+=e,e<0&&Y&&t&&(Y.hasOnce=!0)}function fs(e){return e.dynamicChildren=us>0?Y||x:null,ls(),us>0&&Y&&Y.push(e),e}function ps(e,t,n,r,i,a){return fs(bs(e,t,n,r,i,a,!0))}function ms(e,t,n,r,i){return fs(X(e,t,n,r,i,!0))}function hs(e){return e?e.__v_isVNode===!0:!1}function gs(e,t){return e.type===t.type&&e.key===t.key}function _s(e){}var vs=({key:e})=>e??null,ys=({ref:e,ref_key:t,ref_for:n})=>(typeof e==`number`&&(e=``+e),e==null?null:j(e)||H(e)||A(e)?{i:W,r:e,k:t,f:!!n}:e);function bs(e,t=null,n=null,r=0,i=null,a=e===q?0:1,o=!1,s=!1){let c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&vs(t),ref:t&&ys(t),scopeId:vr,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:W};return s?(Os(c,n),a&128&&e.normalize(c)):n&&(c.shapeFlag|=j(n)?8:16),us>0&&!o&&Y&&(c.patchFlag>0||a&6)&&c.patchFlag!==32&&Y.push(c),c}var X=xs;function xs(e,t=null,n=null,r=0,i=null,a=!1){if((!e||e===Qi)&&(e=J),hs(e)){let r=Cs(e,t,!0);return n&&Os(r,n),us>0&&!a&&Y&&(r.shapeFlag&6?Y[Y.indexOf(e)]=r:Y.push(r)),r.patchFlag=-2,r}if(Qs(e)&&(e=e.__vccOpts),t){t=Ss(t);let{class:e,style:n}=t;e&&!j(e)&&(t.class=ke(e)),N(n)&&(pn(n)&&!O(n)&&(n=T({},n)),t.style=we(n))}let o=j(e)?1:Ko(e)?128:Dr(e)?64:N(e)?4:A(e)?2:0;return bs(e,t,n,r,i,o,a,!0)}function Ss(e){return e?pn(e)||bo(e)?T({},e):e:null}function Cs(e,t,n=!1,r=!1){let{props:i,ref:a,patchFlag:o,children:s,transition:c}=e,l=t?ks(i||{},t):i,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&vs(l),ref:t&&t.ref?n&&a?O(a)?a.concat(ys(t)):[a,ys(t)]:ys(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==q?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Cs(e.ssContent),ssFallback:e.ssFallback&&Cs(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&Qr(u,c.clone(u)),u}function ws(e=` `,t=0){return X(as,null,e,t)}function Ts(e,t){let n=X(os,null,e);return n.staticCount=t,n}function Es(e=``,t=!1){return t?(cs(),ms(J,null,e)):X(J,null,e)}function Z(e){return e==null||typeof e==`boolean`?X(J):O(e)?X(q,null,e.slice()):hs(e)?Ds(e):X(as,null,String(e))}function Ds(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Cs(e)}function Os(e,t){let n=0,{shapeFlag:r}=e;if(t==null)t=null;else if(O(t))n=16;else if(typeof t==`object`)if(r&65){let n=t.default;n&&(n._c&&(n._d=!1),Os(e,n()),n._c&&(n._d=!0));return}else{n=32;let r=t._;!r&&!bo(t)?t._ctx=W:r===3&&W&&(W.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else A(t)?(t={default:t,_ctx:W},n=32):(t=String(t),r&64?(n=16,t=[ws(t)]):n=8);e.children=t,e.shapeFlag|=n}function ks(...e){let t={};for(let n=0;nQ||W,Ps,Fs;{let e=Se(),t=(t,n)=>{let r;return(r=e[t])||(r=e[t]=[]),r.push(n),e=>{r.length>1?r.forEach(t=>t(e)):r[0](e)}};Ps=t(`__VUE_INSTANCE_SETTERS__`,e=>Q=e),Fs=t(`__VUE_SSR_SETTERS__`,e=>zs=e)}var Is=e=>{let t=Q;return Ps(e),e.scope.on(),()=>{e.scope.off(),Ps(t)}},Ls=()=>{Q&&Q.scope.off(),Ps(null)};function Rs(e){return e.vnode.shapeFlag&4}var zs=!1;function Bs(e,t=!1,n=!1){t&&Fs(t);let{props:r,children:i}=e.vnode,a=Rs(e);xo(e,r,a,t),Po(e,i,n||t);let o=a?Vs(e,t):void 0;return t&&Fs(!1),o}function Vs(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,da);let{setup:r}=n;if(r){ut();let n=e.setupContext=r.length>1?Ys(e):null,i=Is(e),a=Xn(r,e,0,[e.props,n]),o=ae(a);if(dt(),i(),(o||e.sp)&&!Ti(e)&&ni(e),o){if(a.then(Ls,Ls),t)return a.then(n=>{Hs(e,n,t)}).catch(t=>{Qn(t,e,0)});e.asyncDep=a}else Hs(e,a,t)}else qs(e,t)}function Hs(e,t,n){A(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:N(t)&&(e.setupState=Tn(t)),qs(e,n)}var Us,Ws;function Gs(e){Us=e,Ws=e=>{e.render._rc&&(e.withProxy=new Proxy(e.ctx,fa))}}var Ks=()=>!Us;function qs(e,t,n){let r=e.type;if(!e.render){if(!t&&Us&&!r.render){let t=r.template||Na(e).template;if(t){let{isCustomElement:n,compilerOptions:i}=e.appContext.config,{delimiters:a,compilerOptions:o}=r,s=T(T({isCustomElement:n,delimiters:a},i),o);r.render=Us(t,s)}}e.render=r.render||S,Ws&&Ws(e)}{let t=Is(e);ut();try{ka(e)}finally{dt(),t()}}}var Js={get(e,t){return z(e,`get`,``),e[t]}};function Ys(e){return{attrs:new Proxy(e.attrs,Js),slots:e.slots,emit:e.emit,expose:t=>{e.exposed=t||{}}}}function Xs(e){return e.exposed?e.exposeProxy||=new Proxy(Tn(mn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in la)return la[n](e)},has(e,t){return t in e||t in la}}):e.proxy}function Zs(e,t=!0){return A(e)?e.displayName||e.name:e.name||t&&e.__name}function Qs(e){return A(e)&&`__vccOpts`in e}var $s=(e,t)=>Pn(e,t,zs);function ec(e,t,n){try{ds(-1);let r=arguments.length;return r===2?N(t)&&!O(t)?hs(t)?X(e,null,[t]):X(e,t):X(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&hs(n)&&(n=[n]),X(e,t,n))}finally{ds(1)}}function tc(){return;function e(t,n,r){let i=t[r];if(O(i)&&i.includes(n)||N(i)&&n in i||t.extends&&e(t.extends,n,r)||t.mixins&&t.mixins.some(t=>e(t,n,r)))return!0}}function nc(e,t,n,r){let i=n[r];if(i&&rc(i,e))return i;let a=t();return a.memo=e.slice(),a.cacheIndex=r,n[r]=a}function rc(e,t){let n=e.memo;if(n.length!=t.length)return!1;for(let e=0;e0&&Y&&Y.push(e),!0}var ic=`3.5.25`,ac=S,oc=Yn,sc=hr,cc=_r,lc={createComponentInstance:Ns,setupComponent:Bs,renderComponentRoot:uo,setCurrentRenderingInstance:yr,isVNode:hs,normalizeVNode:Z,getComponentPublicInstance:Xs,ensureValidVNode:oa,pushWarningContext:Gn,popWarningContext:Kn},uc=void 0,dc=typeof window<`u`&&window.trustedTypes;if(dc)try{uc=dc.createPolicy(`vue`,{createHTML:e=>e})}catch{}var fc=uc?e=>uc.createHTML(e):e=>e,pc=`http://www.w3.org/2000/svg`,mc=`http://www.w3.org/1998/Math/MathML`,hc=typeof document<`u`?document:null,gc=hc&&hc.createElement(`template`),_c={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{let i=t===`svg`?hc.createElementNS(pc,e):t===`mathml`?hc.createElementNS(mc,e):n?hc.createElement(e,{is:n}):hc.createElement(e);return e===`select`&&r&&r.multiple!=null&&i.setAttribute(`multiple`,r.multiple),i},createText:e=>hc.createTextNode(e),createComment:e=>hc.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>hc.querySelector(e),setScopeId(e,t){e.setAttribute(t,``)},insertStaticContent(e,t,n,r,i,a){let o=n?n.previousSibling:t.lastChild;if(i&&(i===a||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),!(i===a||!(i=i.nextSibling)););else{gc.innerHTML=fc(r===`svg`?`${e}`:r===`mathml`?`${e}`:e);let i=gc.content;if(r===`svg`||r===`mathml`){let e=i.firstChild;for(;e.firstChild;)i.appendChild(e.firstChild);i.removeChild(e)}t.insertBefore(i,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},vc=`transition`,yc=`animation`,bc=Symbol(`_vtc`),xc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Sc=T({},Ur,xc),Cc=(e=>(e.displayName=`Transition`,e.props=Sc,e))((e,{slots:t})=>ec(qr,Ec(e),t)),wc=(e,t=[])=>{O(e)?e.forEach(e=>e(...t)):e&&e(...t)},Tc=e=>e?O(e)?e.some(e=>e.length>1):e.length>1:!1;function Ec(e){let t={};for(let n in e)n in xc||(t[n]=e[n]);if(e.css===!1)return t;let{name:n=`v`,type:r,duration:i,enterFromClass:a=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:c=a,appearActiveClass:l=o,appearToClass:u=s,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:f=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,m=Dc(i),h=m&&m[0],g=m&&m[1],{onBeforeEnter:_,onEnter:v,onEnterCancelled:y,onLeave:b,onLeaveCancelled:x,onBeforeAppear:S=_,onAppear:C=v,onAppearCancelled:w=y}=t,ee=(e,t,n,r)=>{e._enterCancelled=r,Ac(e,t?u:s),Ac(e,t?l:o),n&&n()},E=(e,t)=>{e._isLeaving=!1,Ac(e,d),Ac(e,p),Ac(e,f),t&&t()},te=e=>(t,n)=>{let i=e?C:v,o=()=>ee(t,e,n);wc(i,[t,o]),jc(()=>{Ac(t,e?c:a),kc(t,e?u:s),Tc(i)||Nc(t,r,h,o)})};return T(t,{onBeforeEnter(e){wc(_,[e]),kc(e,a),kc(e,o)},onBeforeAppear(e){wc(S,[e]),kc(e,c),kc(e,l)},onEnter:te(!1),onAppear:te(!0),onLeave(e,t){e._isLeaving=!0;let n=()=>E(e,t);kc(e,d),e._enterCancelled?(kc(e,f),Lc(e)):(Lc(e),kc(e,f)),jc(()=>{e._isLeaving&&(Ac(e,d),kc(e,p),Tc(b)||Nc(e,r,g,n))}),wc(b,[e,n])},onEnterCancelled(e){ee(e,!1,void 0,!0),wc(y,[e])},onAppearCancelled(e){ee(e,!0,void 0,!0),wc(w,[e])},onLeaveCancelled(e){E(e),wc(x,[e])}})}function Dc(e){if(e==null)return null;if(N(e))return[Oc(e.enter),Oc(e.leave)];{let t=Oc(e);return[t,t]}}function Oc(e){return be(e)}function kc(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e[bc]||(e[bc]=new Set)).add(t)}function Ac(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.remove(t));let n=e[bc];n&&(n.delete(t),n.size||(e[bc]=void 0))}function jc(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}var Mc=0;function Nc(e,t,n,r){let i=e._endId=++Mc,a=()=>{i===e._endId&&r()};if(n!=null)return setTimeout(a,n);let{type:o,timeout:s,propCount:c}=Pc(e,t);if(!o)return r();let l=o+`end`,u=0,d=()=>{e.removeEventListener(l,f),a()},f=t=>{t.target===e&&++u>=c&&d()};setTimeout(()=>{u(n[e]||``).split(`, `),i=r(`${vc}Delay`),a=r(`${vc}Duration`),o=Fc(i,a),s=r(`${yc}Delay`),c=r(`${yc}Duration`),l=Fc(s,c),u=null,d=0,f=0;t===vc?o>0&&(u=vc,d=o,f=a.length):t===yc?l>0&&(u=yc,d=l,f=c.length):(d=Math.max(o,l),u=d>0?o>l?vc:yc:null,f=u?u===vc?a.length:c.length:0);let p=u===vc&&/\b(?:transform|all)(?:,|$)/.test(r(`${vc}Property`).toString());return{type:u,timeout:d,propCount:f,hasTransform:p}}function Fc(e,t){for(;e.lengthIc(t)+Ic(e[n])))}function Ic(e){return e===`auto`?0:Number(e.slice(0,-1).replace(`,`,`.`))*1e3}function Lc(e){return(e?e.ownerDocument:document).body.offsetHeight}function Rc(e,t,n){let r=e[bc];r&&(t=(t?[t,...r]:[...r]).join(` `)),t==null?e.removeAttribute(`class`):n?e.setAttribute(`class`,t):e.className=t}var zc=Symbol(`_vod`),Bc=Symbol(`_vsh`),Vc={name:`show`,beforeMount(e,{value:t},{transition:n}){e[zc]=e.style.display===`none`?``:e.style.display,n&&t?n.beforeEnter(e):Hc(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),Hc(e,!0),r.enter(e)):r.leave(e,()=>{Hc(e,!1)}):Hc(e,t))},beforeUnmount(e,{value:t}){Hc(e,t)}};function Hc(e,t){e.style.display=t?e[zc]:`none`,e[Bc]=!t}function Uc(){Vc.getSSRProps=({value:e})=>{if(!e)return{style:{display:`none`}}}}var Wc=Symbol(``);function Gc(e){let t=$();if(!t)return;let n=t.ut=(n=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(e=>qc(e,n))},r=()=>{let r=e(t.proxy);t.ce?qc(t.ce,r):Kc(t.subTree,r),n(r)};Vi(()=>{ur(r)}),Bi(()=>{eo(r,S,{flush:`post`});let e=new MutationObserver(r);e.observe(t.subTree.el.parentNode,{childList:!0}),Wi(()=>e.disconnect())})}function Kc(e,t){if(e.shapeFlag&128){let n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push(()=>{Kc(n.activeBranch,t)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)qc(e.el,t);else if(e.type===q)e.children.forEach(e=>Kc(e,t));else if(e.type===os){let{el:n,anchor:r}=e;for(;n&&(qc(n,t),n!==r);)n=n.nextSibling}}function qc(e,t){if(e.nodeType===1){let n=e.style,r=``;for(let e in t){let i=Ve(t[e]);n.setProperty(`--${e}`,i),r+=`--${e}: ${i};`}n[Wc]=r}}var Jc=/(?:^|;)\s*display\s*:/;function Yc(e,t,n){let r=e.style,i=j(n),a=!1;if(n&&!i){if(t)if(j(t))for(let e of t.split(`;`)){let t=e.slice(0,e.indexOf(`:`)).trim();n[t]??Zc(r,t,``)}else for(let e in t)n[e]??Zc(r,e,``);for(let e in n)e===`display`&&(a=!0),Zc(r,e,n[e])}else if(i){if(t!==n){let e=r[Wc];e&&(n+=`;`+e),r.cssText=n,a=Jc.test(n)}}else t&&e.removeAttribute(`style`);zc in e&&(e[zc]=a?r.display:``,e[Bc]&&(r.display=`none`))}var Xc=/\s*!important$/;function Zc(e,t,n){if(O(n))n.forEach(n=>Zc(e,t,n));else if(n??=``,t.startsWith(`--`))e.setProperty(t,n);else{let r=el(e,t);Xc.test(n)?e.setProperty(F(r),n.replace(Xc,``),`important`):e[r]=n}}var Qc=[`Webkit`,`Moz`,`ms`],$c={};function el(e,t){let n=$c[t];if(n)return n;let r=P(t);if(r!==`filter`&&r in e)return $c[t]=r;r=he(r);for(let n=0;nul||=(dl.then(()=>ul=0),Date.now());function pl(e,t){let n=e=>{if(!e._vts)e._vts=Date.now();else if(e._vts<=n.attached)return;Zn(ml(e,n.value),t,5,[e])};return n.value=e,n.attached=fl(),n}function ml(e,t){if(O(t)){let n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(e=>t=>!t._stopped&&e&&e(t))}else return t}var hl=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,gl=(e,t,n,r,i,a)=>{let o=i===`svg`;t===`class`?Rc(e,r,o):t===`style`?Yc(e,n,r):w(t)?ee(t)||sl(e,t,n,r,a):(t[0]===`.`?(t=t.slice(1),!0):t[0]===`^`?(t=t.slice(1),!1):_l(e,t,r,o))?(rl(e,t,r),!e.tagName.includes(`-`)&&(t===`value`||t===`checked`||t===`selected`)&&nl(e,t,r,o,a,t!==`value`)):e._isVueCE&&(/[A-Z]/.test(t)||!j(r))?rl(e,P(t),r,a,t):(t===`true-value`?e._trueValue=r:t===`false-value`&&(e._falseValue=r),nl(e,t,r,o))};function _l(e,t,n,r){if(r)return!!(t===`innerHTML`||t===`textContent`||t in e&&hl(t)&&A(n));if(t===`spellcheck`||t===`draggable`||t===`translate`||t===`autocorrect`||t===`sandbox`&&e.tagName===`IFRAME`||t===`form`||t===`list`&&e.tagName===`INPUT`||t===`type`&&e.tagName===`TEXTAREA`)return!1;if(t===`width`||t===`height`){let t=e.tagName;if(t===`IMG`||t===`VIDEO`||t===`CANVAS`||t===`SOURCE`)return!1}return hl(t)&&j(n)?!1:t in e}var vl={};function yl(e,t,n){let r=ei(e,t);le(r)&&(r=T({},r,t));class i extends Sl{constructor(e){super(r,e,n)}}return i.def=r,i}var bl=((e,t)=>yl(e,t,du)),xl=typeof HTMLElement<`u`?HTMLElement:class{},Sl=class e extends xl{constructor(e,t={},n=uu){super(),this._def=e,this._props=t,this._createApp=n,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._ob=null,this.shadowRoot&&n!==uu?this._root=this.shadowRoot:e.shadowRoot===!1?this._root=this:(this.attachShadow(T({},e.shadowRootOptions,{mode:`open`})),this._root=this.shadowRoot)}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let t=this;for(;t&&=t.parentNode||t.host;)if(t instanceof e){this._parent=t;break}this._instance||(this._resolved?this._mount(this._def):t&&t._pendingResolve?this._pendingResolve=t._pendingResolve.then(()=>{this._pendingResolve=void 0,this._resolveDef()}):this._resolveDef())}_setParent(e=this._parent){e&&(this._instance.parent=e._instance,this._inheritParentContext(e))}_inheritParentContext(e=this._parent){e&&this._app&&Object.setPrototypeOf(this._app._context.provides,e._instance.provides)}disconnectedCallback(){this._connected=!1,or(()=>{this._connected||(this._ob&&=(this._ob.disconnect(),null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&=(this._teleportTargets.clear(),void 0))})}_processMutations(e){for(let t of e)this._setAttr(t.attributeName)}_resolveDef(){if(this._pendingResolve)return;for(let e=0;e{this._resolved=!0,this._pendingResolve=void 0;let{props:n,styles:r}=e,i;if(n&&!O(n))for(let e in n){let t=n[e];(t===Number||t&&t.type===Number)&&(e in this._props&&(this._props[e]=be(this._props[e])),(i||=Object.create(null))[P(e)]=!0)}this._numberProps=i,this._resolveProps(e),this.shadowRoot&&this._applyStyles(r),this._mount(e)},t=this._def.__asyncLoader;t?this._pendingResolve=t().then(t=>{t.configureApp=this._def.configureApp,e(this._def=t,!0)}):e(this._def)}_mount(e){this._app=this._createApp(e),this._inheritParentContext(),e.configureApp&&e.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);let t=this._instance&&this._instance.exposed;if(t)for(let e in t)D(this,e)||Object.defineProperty(this,e,{get:()=>Sn(t[e])})}_resolveProps(e){let{props:t}=e,n=O(t)?t:Object.keys(t||{});for(let e of Object.keys(this))e[0]!==`_`&&n.includes(e)&&this._setProp(e,this[e]);for(let e of n.map(P))Object.defineProperty(this,e,{get(){return this._getProp(e)},set(t){this._setProp(e,t,!0,!this._patching)}})}_setAttr(e){if(e.startsWith(`data-v-`))return;let t=this.hasAttribute(e),n=t?this.getAttribute(e):vl,r=P(e);t&&this._numberProps&&this._numberProps[r]&&(n=be(n)),this._setProp(r,n,!1,!0)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,r=!1){if(t!==this._props[e]&&(this._dirty=!0,t===vl?delete this._props[e]:(this._props[e]=t,e===`key`&&this._app&&(this._app._ceVNode.key=t)),r&&this._instance&&this._update(),n)){let n=this._ob;n&&(this._processMutations(n.takeRecords()),n.disconnect()),t===!0?this.setAttribute(F(e),``):typeof t==`string`||typeof t==`number`?this.setAttribute(F(e),t+``):t||this.removeAttribute(F(e)),n&&n.observe(this,{attributes:!0})}}_update(){let e=this._createVNode();this._app&&(e.appContext=this._app._context),cu(e,this._root)}_createVNode(){let e={};this.shadowRoot||(e.onVnodeMounted=e.onVnodeUpdated=this._renderSlots.bind(this));let t=X(this._def,T(e,this._props));return this._instance||(t.ce=e=>{this._instance=e,e.ce=this,e.isCE=!0;let t=(e,t)=>{this.dispatchEvent(new CustomEvent(e,le(t[0])?T({detail:t},t[0]):{detail:t}))};e.emit=(e,...n)=>{t(e,n),F(e)!==e&&t(F(e),n)},this._setParent()}),t}_applyStyles(e,t){if(!e)return;if(t){if(t===this._def||this._styleChildren.has(t))return;this._styleChildren.add(t)}let n=this._nonce;for(let t=e.length-1;t>=0;t--){let r=document.createElement(`style`);n&&r.setAttribute(`nonce`,n),r.textContent=e[t],this.shadowRoot.prepend(r)}}_parseSlots(){let e=this._slots={},t;for(;t=this.firstChild;){let n=t.nodeType===1&&t.getAttribute(`slot`)||`default`;(e[n]||(e[n]=[])).push(t),this.removeChild(t)}}_renderSlots(){let e=this._getSlots(),t=this._instance.type.__scopeId;for(let n=0;n(delete e.props.mode,e))({name:`TransitionGroup`,props:T({},Sc,{tag:String,moveClass:String}),setup(e,{slots:t}){let n=$(),r=Vr(),i,a;return Hi(()=>{if(!i.length)return;let t=e.moveClass||`${e.name||`v`}-move`;if(!Pl(i[0].el,n.vnode.el,t)){i=[];return}i.forEach(jl),i.forEach(Ml);let r=i.filter(Nl);Lc(n.vnode.el),r.forEach(e=>{let n=e.el,r=n.style;kc(n,t),r.transform=r.webkitTransform=r.transitionDuration=``;let i=n[Ol]=e=>{e&&e.target!==n||(!e||e.propertyName.endsWith(`transform`))&&(n.removeEventListener(`transitionend`,i),n[Ol]=null,Ac(n,t))};n.addEventListener(`transitionend`,i)}),i=[]}),()=>{let o=V(e),s=Ec(o),c=o.tag||q;if(i=[],a)for(let e=0;e{e.split(/\s+/).forEach(e=>e&&r.classList.remove(e))}),n.split(/\s+/).forEach(e=>e&&r.classList.add(e)),r.style.display=`none`;let a=t.nodeType===1?t:t.parentNode;a.appendChild(r);let{hasTransform:o}=Pc(r);return a.removeChild(r),o}var Fl=e=>{let t=e.props[`onUpdate:modelValue`]||!1;return O(t)?e=>_e(t,e):t};function Il(e){e.target.composing=!0}function Ll(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event(`input`)))}var Rl=Symbol(`_assign`);function zl(e,t,n){return t&&(e=e.trim()),n&&(e=ye(e)),e}var Bl={created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e[Rl]=Fl(i);let a=r||i.props&&i.props.type===`number`;il(e,t?`change`:`input`,t=>{t.target.composing||e[Rl](zl(e.value,n,a))}),(n||a)&&il(e,`change`,()=>{e.value=zl(e.value,n,a)}),t||(il(e,`compositionstart`,Il),il(e,`compositionend`,Ll),il(e,`change`,Ll))},mounted(e,{value:t}){e.value=t??``},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:i,number:a}},o){if(e[Rl]=Fl(o),e.composing)return;let s=(a||e.type===`number`)&&!/^0\d/.test(e.value)?ye(e.value):e.value,c=t??``;s!==c&&(document.activeElement===e&&e.type!==`range`&&(r&&t===n||i&&e.value.trim()===c)||(e.value=c))}},Vl={deep:!0,created(e,t,n){e[Rl]=Fl(n),il(e,`change`,()=>{let t=e._modelValue,n=Kl(e),r=e.checked,i=e[Rl];if(O(t)){let e=Ie(t,n),a=e!==-1;if(r&&!a)i(t.concat(n));else if(!r&&a){let n=[...t];n.splice(e,1),i(n)}}else if(re(t)){let e=new Set(t);r?e.add(n):e.delete(n),i(e)}else i(ql(e,r))})},mounted:Hl,beforeUpdate(e,t,n){e[Rl]=Fl(n),Hl(e,t,n)}};function Hl(e,{value:t,oldValue:n},r){e._modelValue=t;let i;if(O(t))i=Ie(t,r.props.value)>-1;else if(re(t))i=t.has(r.props.value);else{if(t===n)return;i=Fe(t,ql(e,!0))}e.checked!==i&&(e.checked=i)}var Ul={created(e,{value:t},n){e.checked=Fe(t,n.props.value),e[Rl]=Fl(n),il(e,`change`,()=>{e[Rl](Kl(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[Rl]=Fl(r),t!==n&&(e.checked=Fe(t,r.props.value))}},Wl={deep:!0,created(e,{value:t,modifiers:{number:n}},r){let i=re(t);il(e,`change`,()=>{let t=Array.prototype.filter.call(e.options,e=>e.selected).map(e=>n?ye(Kl(e)):Kl(e));e[Rl](e.multiple?i?new Set(t):t:t[0]),e._assigning=!0,or(()=>{e._assigning=!1})}),e[Rl]=Fl(r)},mounted(e,{value:t}){Gl(e,t)},beforeUpdate(e,t,n){e[Rl]=Fl(n)},updated(e,{value:t}){e._assigning||Gl(e,t)}};function Gl(e,t){let n=e.multiple,r=O(t);if(!(n&&!r&&!re(t))){for(let i=0,a=e.options.length;iString(e)===String(o)):a.selected=Ie(t,o)>-1}else a.selected=t.has(o);else if(Fe(Kl(a),t)){e.selectedIndex!==i&&(e.selectedIndex=i);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Kl(e){return`_value`in e?e._value:e.value}function ql(e,t){let n=t?`_trueValue`:`_falseValue`;return n in e?e[n]:t}var Jl={created(e,t,n){Xl(e,t,n,null,`created`)},mounted(e,t,n){Xl(e,t,n,null,`mounted`)},beforeUpdate(e,t,n,r){Xl(e,t,n,r,`beforeUpdate`)},updated(e,t,n,r){Xl(e,t,n,r,`updated`)}};function Yl(e,t){switch(e){case`SELECT`:return Wl;case`TEXTAREA`:return Bl;default:switch(t){case`checkbox`:return Vl;case`radio`:return Ul;default:return Bl}}}function Xl(e,t,n,r,i){let a=Yl(e.tagName,n.props&&n.props.type)[i];a&&a(e,t,n,r)}function Zl(){Bl.getSSRProps=({value:e})=>({value:e}),Ul.getSSRProps=({value:e},t)=>{if(t.props&&Fe(t.props.value,e))return{checked:!0}},Vl.getSSRProps=({value:e},t)=>{if(O(e)){if(t.props&&Ie(e,t.props.value)>-1)return{checked:!0}}else if(re(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},Jl.getSSRProps=(e,t)=>{if(typeof t.type!=`string`)return;let n=Yl(t.type.toUpperCase(),t.props&&t.props.type);if(n.getSSRProps)return n.getSSRProps(e,t)}}var Ql=[`ctrl`,`shift`,`alt`,`meta`],$l={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>`button`in e&&e.button!==0,middle:e=>`button`in e&&e.button!==1,right:e=>`button`in e&&e.button!==2,exact:(e,t)=>Ql.some(n=>e[`${n}Key`]&&!t.includes(n))},eu=(e,t)=>{let n=e._withMods||={},r=t.join(`.`);return n[r]||(n[r]=((n,...r)=>{for(let e=0;e{let n=e._withKeys||={},r=t.join(`.`);return n[r]||(n[r]=(n=>{if(!(`key`in n))return;let r=F(n.key);if(t.some(e=>e===r||tu[e]===r))return e(n)}))},ru=T({patchProp:gl},_c),iu,au=!1;function ou(){return iu||=Io(ru)}function su(){return iu=au?iu:Lo(ru),au=!0,iu}var cu=((...e)=>{ou().render(...e)}),lu=((...e)=>{su().hydrate(...e)}),uu=((...e)=>{let t=ou().createApp(...e),{mount:n}=t;return t.mount=e=>{let r=pu(e);if(!r)return;let i=t._component;!A(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent=``);let a=n(r,!1,fu(r));return r instanceof Element&&(r.removeAttribute(`v-cloak`),r.setAttribute(`data-v-app`,``)),a},t}),du=((...e)=>{let t=su().createApp(...e),{mount:n}=t;return t.mount=e=>{let t=pu(e);if(t)return n(t,!0,fu(t))},t});function fu(e){if(e instanceof SVGElement)return`svg`;if(typeof MathMLElement==`function`&&e instanceof MathMLElement)return`mathml`}function pu(e){return j(e)?document.querySelector(e):e}var mu=!1,hu=()=>{mu||(mu=!0,Zl(),Uc())},gu=e({BaseTransition:()=>qr,BaseTransitionPropsValidators:()=>Ur,Comment:()=>J,DeprecationTypes:()=>null,EffectScope:()=>He,ErrorCodes:()=>Jn,ErrorTypeStrings:()=>oc,Fragment:()=>q,KeepAlive:()=>ki,ReactiveEffect:()=>qe,Static:()=>os,Suspense:()=>Jo,Teleport:()=>Ir,Text:()=>as,TrackOpTypes:()=>Fn,Transition:()=>Cc,TransitionGroup:()=>Al,TriggerOpTypes:()=>In,VueElement:()=>Sl,assertNumber:()=>qn,callWithAsyncErrorHandling:()=>Zn,callWithErrorHandling:()=>Xn,camelize:()=>P,capitalize:()=>he,cloneVNode:()=>Cs,compatUtils:()=>null,compile:()=>_u,computed:()=>$s,createApp:()=>uu,createBlock:()=>ms,createCommentVNode:()=>Es,createElementBlock:()=>ps,createElementVNode:()=>bs,createHydrationRenderer:()=>Lo,createPropsRestProxy:()=>Ea,createRenderer:()=>Io,createSSRApp:()=>du,createSlots:()=>ia,createStaticVNode:()=>Ts,createTextVNode:()=>ws,createVNode:()=>X,customRef:()=>Dn,defineAsyncComponent:()=>Ei,defineComponent:()=>ei,defineCustomElement:()=>yl,defineEmits:()=>ma,defineExpose:()=>ha,defineModel:()=>va,defineOptions:()=>ga,defineProps:()=>pa,defineSSRCustomElement:()=>bl,defineSlots:()=>_a,devtools:()=>sc,effect:()=>ot,effectScope:()=>Ue,getCurrentInstance:()=>$,getCurrentScope:()=>We,getCurrentWatcher:()=>Bn,getTransitionRawChildren:()=>$r,guardReactiveProps:()=>Ss,h:()=>ec,handleError:()=>Qn,hasInjectionContext:()=>Ja,hydrate:()=>lu,hydrateOnIdle:()=>yi,hydrateOnInteraction:()=>Ci,hydrateOnMediaQuery:()=>Si,hydrateOnVisible:()=>xi,initCustomFormatter:()=>tc,initDirectivesForSSR:()=>hu,inject:()=>qa,isMemoSame:()=>rc,isProxy:()=>pn,isReactive:()=>dn,isReadonly:()=>fn,isRef:()=>H,isRuntimeOnly:()=>Ks,isShallow:()=>B,isVNode:()=>hs,markRaw:()=>mn,mergeDefaults:()=>wa,mergeModels:()=>Ta,mergeProps:()=>ks,nextTick:()=>or,nodeOps:()=>_c,normalizeClass:()=>ke,normalizeProps:()=>Ae,normalizeStyle:()=>we,onActivated:()=>ji,onBeforeMount:()=>zi,onBeforeUnmount:()=>Ui,onBeforeUpdate:()=>Vi,onDeactivated:()=>Mi,onErrorCaptured:()=>Ji,onMounted:()=>Bi,onRenderTracked:()=>qi,onRenderTriggered:()=>Ki,onScopeDispose:()=>Ge,onServerPrefetch:()=>Gi,onUnmounted:()=>Wi,onUpdated:()=>Hi,onWatcherCleanup:()=>Vn,openBlock:()=>cs,patchProp:()=>gl,popScopeId:()=>xr,provide:()=>Ka,proxyRefs:()=>Tn,pushScopeId:()=>br,queuePostFlushCb:()=>ur,reactive:()=>on,readonly:()=>cn,ref:()=>_n,registerRuntimeCompiler:()=>Gs,render:()=>cu,renderList:()=>ra,renderSlot:()=>aa,resolveComponent:()=>Zi,resolveDirective:()=>ea,resolveDynamicComponent:()=>$i,resolveFilter:()=>null,resolveTransitionHooks:()=>Yr,setBlockTracking:()=>ds,setDevtoolsHook:()=>cc,setTransitionHooks:()=>Qr,shallowReactive:()=>sn,shallowReadonly:()=>ln,shallowRef:()=>vn,ssrContextKey:()=>Ya,ssrUtils:()=>lc,stop:()=>st,toDisplayString:()=>Re,toHandlerKey:()=>ge,toHandlers:()=>sa,toRaw:()=>V,toRef:()=>jn,toRefs:()=>On,toValue:()=>Cn,transformVNodeArgs:()=>_s,triggerRef:()=>xn,unref:()=>Sn,useAttrs:()=>xa,useCssModule:()=>Tl,useCssVars:()=>Gc,useHost:()=>Cl,useId:()=>ti,useModel:()=>io,useSSRContext:()=>Xa,useShadowRoot:()=>wl,useSlots:()=>ba,useTemplateRef:()=>ri,useTransitionState:()=>Vr,vModelCheckbox:()=>Vl,vModelDynamic:()=>Jl,vModelRadio:()=>Ul,vModelSelect:()=>Wl,vModelText:()=>Bl,vShow:()=>Vc,version:()=>ic,warn:()=>ac,watch:()=>eo,watchEffect:()=>Za,watchPostEffect:()=>Qa,watchSyncEffect:()=>$a,withAsyncContext:()=>Da,withCtx:()=>Cr,withDefaults:()=>ya,withDirectives:()=>wr,withKeys:()=>nu,withMemo:()=>nc,withModifiers:()=>eu,withScopeId:()=>Sr}),_u=()=>{};const vu=(e,t)=>{let n=_[e],r=n.costMultiplier**(t-1);return{metal:Math.floor(n.baseCost.metal*r),crystal:Math.floor(n.baseCost.crystal*r),deuterium:Math.floor(n.baseCost.deuterium*r),darkMatter:Math.floor(n.baseCost.darkMatter*r),energy:0}},yu=(e,t,n=0,r=1,i=0)=>{let a=_[e],o=a.baseTime*a.costMultiplier**+t,s=Math.max(1,r)*(1+i),c=1-n/100;return Math.floor(o/s*c)},bu=(e,t,n)=>{let r=_[e];if(!r.requirements)return!0;for(let[e,a]of Object.entries(r.requirements))if(Object.values(i).includes(e)){if((t[e]||0){let r=Date.now();return{id:`research_${r}`,type:`technology`,itemType:e,targetLevel:t,startTime:r,endTime:r+n*1e3}},Su=(e,t,n,r)=>e.filter(e=>{if(n>=e.endTime){let n=t[e.itemType]||0,i=e.targetLevel||0;return t[e.itemType]=i,r&&i>n&&r(Du(e.itemType,n,i),`technology`,e.itemType,i),!1}return!0}),Cu=e=>e.metal+e.crystal+e.deuterium,wu=e=>Math.floor(e/1e3),Tu=(e,t)=>{e.points+=t},Eu=(e,t,n)=>{let r=0;for(let i=t+1;i<=n;i++){let t=Cu(Au(e,i));r+=wu(t)}return r},Du=(e,t,n)=>{let r=0;for(let i=t+1;i<=n;i++){let t=Cu(vu(e,i));r+=wu(t)}return r},Ou=(e,t)=>{let n=l[e];return wu(Cu(n.cost))*t},ku=(e,t)=>{let n=m[e];return wu(Cu(n.cost))*t},Au=(e,t)=>{let n=d[e],r=n.costMultiplier**(t-1);return{metal:Math.floor(n.baseCost.metal*r),crystal:Math.floor(n.baseCost.crystal*r),deuterium:Math.floor(n.baseCost.deuterium*r),darkMatter:Math.floor(n.baseCost.darkMatter*r),energy:0}},ju=(e,t,n=0,r=0,i=0)=>{let a=d[e],o=a.costMultiplier**(t-1),s=a.baseTime*o,c=1+r+i*2,l=1-n/100;return Math.floor(s/c*l)},Mu=e=>{let t=0;return Object.entries(e.buildings).forEach(([e,n])=>{if(n>0){let r=d[e];t+=r.spaceUsage*n}}),t},Nu=(e,t,n)=>{let r=d[e].requirements;if(!r)return!0;for(let[e,a]of Object.entries(r)){let r=a;if(Object.values(i).includes(e)){if((t.buildings[e]||0)Mu(e)+d[t].spaceUsage<=e.maxSpace,Fu=(e,t,n)=>{let r=Date.now();return{id:`build_${r}`,type:`building`,itemType:e,targetLevel:t,startTime:r,endTime:r+n*1e3}},Iu=(e,t,n)=>{e.buildQueue=e.buildQueue.filter(r=>{if(t>=r.endTime){if(r.type===`building`){let t=e.buildings[r.itemType]||0,i=r.targetLevel||0;e.buildings[r.itemType]=i,n&&i>t&&n(Eu(r.itemType,t,i),`building`,r.itemType,i)}else if(r.type===`ship`){let t=r.itemType,i=r.quantity||0;e.fleet[t]=(e.fleet[t]||0)+i,n&&i>0&&n(Ou(t,i),`ship`,r.itemType,void 0,i)}else if(r.type===`defense`){let t=r.itemType,i=r.quantity||0;e.defense[t]=(e.defense[t]||0)+i,n&&i>0&&n(ku(t,i),`defense`,r.itemType,void 0,i)}else if(r.type===`demolish`){let t=r.itemType,n=e.buildings[t]||0;e.buildings[t]=Math.max(0,n-1)}return!1}return!0})},Lu=(e,t)=>{let n=Au(e,t);return{metal:Math.floor(n.metal*.5),crystal:Math.floor(n.crystal*.5),deuterium:Math.floor(n.deuterium*.5),darkMatter:Math.floor(n.darkMatter*.5),energy:0}},Ru=(e,t,n=0,r=0,i=0)=>{let a=ju(e,t,n,r,i);return Math.floor(a*.5)},zu=(e,t,n)=>{let r=Date.now();return{id:`demolish_${r}`,type:`demolish`,itemType:e,targetLevel:t-1,startTime:r,endTime:r+n*1e3}},Bu=e=>h[e].cost,Vu=(e,t)=>e.active&&(!e.expiresAt||e.expiresAt>t),Hu=(e,t)=>{let n=Date.now();return{type:e,active:!0,hiredAt:n,expiresAt:n+t*24*60*60*1e3}},Uu=e=>({type:e,active:!1}),Wu=(e,t,n)=>{let r=e.expiresAt&&e.expiresAt>n?e.expiresAt:n;return{...e,active:!0,expiresAt:r+t*24*60*60*1e3}},Gu=(e,t)=>{let n={buildingSpeedBonus:0,researchSpeedBonus:0,resourceProductionBonus:0,darkMatterProductionBonus:0,energyProductionBonus:0,fleetSpeedBonus:0,fuelConsumptionReduction:0,defenseBonus:0,additionalBuildQueue:0,additionalFleetSlots:0,storageCapacityBonus:0};return Object.values(e).forEach(e=>{if(Vu(e,t)){let t=h[e.type];Object.entries(t.benefits).forEach(([e,t])=>{t!==void 0&&(n[e]+=t)})}}),n},Ku=(e,t)=>{Object.values(e).forEach(e=>{e.active&&e.expiresAt&&e.expiresAt<=t&&(e.active=!1)})},qu=(e,t)=>{let n=l[e];return{metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t,energy:0}},Ju=(e,t)=>{let n=m[e];return{metal:n.cost.metal*t,crystal:n.cost.crystal*t,deuterium:n.cost.deuterium*t,darkMatter:n.cost.darkMatter*t,energy:0}},Yu=(e,t,n=0,r=0,i=0)=>{let a=l[e].buildTime*t,o=1+r+i*2,s=1-n/100;return Math.floor(a/o*s)},Xu=(e,t,n=0,r=0,i=0)=>{let a=m[e].buildTime*t,o=1+r+i*2,s=1-n/100;return Math.floor(a/o*s)},Zu=(e,t,n)=>{let r=l[e];if(!r.requirements)return!0;for(let[e,a]of Object.entries(r.requirements))if(Object.values(i).includes(e)){if((t[e]||0){let r=m[e];if(!r.requirements)return!0;for(let[e,a]of Object.entries(r.requirements))if(Object.values(i).includes(e)){if((t[e]||0)!((e===a.SmallShieldDome||e===a.LargeShieldDome)&&((t[e]||0)>0||n>1)),ed=(e,t,n)=>{let r=Date.now();return{id:`ship_${r}`,type:`ship`,itemType:e,quantity:t,startTime:r,endTime:r+n*1e3}},td=(e,t,n)=>{let r=Date.now();return{id:`defense_${r}`,type:`defense`,itemType:e,quantity:t,startTime:r,endTime:r+n*1e3}},nd=(e,t)=>{for(let[n,r]of Object.entries(t))if((e[n]||0){let r=0;for(let[t,n]of Object.entries(e)){let e=l[t];r+=e.fuelConsumption*n}let i=0;if(n){let e=n.metal+n.crystal+n.deuterium+n.darkMatter;i=Math.floor(e/1e3)}let a=1-t/100;return Math.floor(r*a)+i},id=(e,t=0)=>{let n=1/0;for(let[t,r]of Object.entries(e))if(r>0){let e=l[t];n=Math.min(n,e.speed)}let r=1+t/100;return Math.floor(n*r)},ad=(e,t)=>{for(let[n,r]of Object.entries(t))e[n]-=r},od=(e,t)=>{for(let[n,r]of Object.entries(t))r>0&&(e[n]+=r)},sd=(e,t)=>{let n=e.buildings[i.SolarPlant]||0,r=e.buildings[i.FusionReactor]||0,a=e.fleet.solarSatellite||0,o=1+(t.energyProductionBonus||0)/100,s=n*50*1.1**n,c=r*150*1.15**r,l=a*50;return(s+c+l)*o},cd=e=>{let t=e.buildings[i.MetalMine]||0,n=e.buildings[i.CrystalMine]||0,r=e.buildings[i.DeuteriumSynthesizer]||0,a=t*10*1.1**t,o=n*10*1.1**n,s=r*15*1.1**r;return a+o+s},ld=(e,t)=>{let n=e.buildings[i.MetalMine]||0,r=e.buildings[i.CrystalMine]||0,a=e.buildings[i.DeuteriumSynthesizer]||0,o=e.buildings[i.DarkMatterCollector]||0,s=1+(t.resourceProductionBonus||0)/100,c=1+(t.darkMatterProductionBonus||0)/100,l=sd(e,{energyProductionBonus:t.energyProductionBonus}),u=e.resources.energy>0?1:0;return{metal:n*1500*1.5**n*s*u,crystal:r*1e3*1.5**r*s*u,deuterium:a*500*1.5**a*s*u,darkMatter:o*25*1.5**o*c,energy:l}},ud=(e,t)=>{let n=e.buildings[i.MetalStorage]||0,r=e.buildings[i.CrystalStorage]||0,a=e.buildings[i.DeuteriumTank]||0,o=e.buildings[i.DarkMatterTank]||0,s=e.buildings[i.SolarPlant]||0,c=1+(t||0)/100,l=1e4;return{metal:l*2**n*c,crystal:l*2**r*c,deuterium:l*2**a*c,darkMatter:1e3*2**o*c,energy:1e3+s*500}},dd=(e,t,n)=>{let r=(t-e.lastUpdate)/1e3,i=cd(e),a=sd(e,{energyProductionBonus:n.energyProductionBonus});e.resources.energy+=a*r/3600;let o=ud(e,n.storageCapacityBonus);e.resources.energy=Math.min(e.resources.energy,o.energy),e.resources.energy-=i*r/3600,e.resources.energy=Math.max(0,e.resources.energy);let s=ld(e,{resourceProductionBonus:n.resourceProductionBonus,darkMatterProductionBonus:n.darkMatterProductionBonus,energyProductionBonus:n.energyProductionBonus});e.resources.metal+=s.metal*r/3600,e.resources.crystal+=s.crystal*r/3600,e.resources.deuterium+=s.deuterium*r/3600,e.resources.darkMatter+=s.darkMatter*r/3600,e.resources.metal=Math.min(e.resources.metal,o.metal),e.resources.crystal=Math.min(e.resources.crystal,o.crystal),e.resources.deuterium=Math.min(e.resources.deuterium,o.deuterium),e.resources.darkMatter=Math.min(e.resources.darkMatter,o.darkMatter),e.lastUpdate=t},fd=(e,t)=>e.metal>=t.metal&&e.crystal>=t.crystal&&e.deuterium>=t.deuterium&&e.darkMatter>=t.darkMatter,pd=(e,t)=>{e.metal-=t.metal,e.crystal-=t.crystal,e.deuterium-=t.deuterium,e.darkMatter-=t.darkMatter},md=(e,t)=>{e.metal+=t.metal,e.crystal+=t.crystal,e.deuterium+=t.deuterium,e.darkMatter+=t.darkMatter},hd=(e,t,n)=>{let r=e.buildings[i.MetalMine]||0,a=e.buildings[i.CrystalMine]||0,o=e.buildings[i.DeuteriumSynthesizer]||0,s=e.buildings[i.DarkMatterCollector]||0,c=e.buildings[i.SolarPlant]||0,l=e.resources.energy>0,u=l?1:0,d=[];Object.values(t).forEach(e=>{if(Vu(e,n)){let t=h[e.type];d.push({type:e.type,name:t.name,resourceBonus:t.benefits.resourceProductionBonus||0,darkMatterBonus:t.benefits.darkMatterProductionBonus||0,energyBonus:t.benefits.energyProductionBonus||0})}});let f=d.reduce((e,t)=>e+t.resourceBonus,0),p=d.reduce((e,t)=>e+t.darkMatterBonus,0),m=d.reduce((e,t)=>e+t.energyBonus,0),g=r*1500*1.5**r,_=[];d.forEach(e=>{if(e.resourceBonus>0){let t=g*(e.resourceBonus/100);_.push({name:`officers.${e.type}`,percentage:e.resourceBonus,value:t,source:`officer`})}}),l||_.push({name:`resources.noEnergy`,percentage:-100,value:-g*(1+f/100),source:`other`});let v=g*(1+f/100)*u,y=a*1e3*1.5**a,b=[];d.forEach(e=>{if(e.resourceBonus>0){let t=y*(e.resourceBonus/100);b.push({name:`officers.${e.type}`,percentage:e.resourceBonus,value:t,source:`officer`})}}),l||b.push({name:`resources.noEnergy`,percentage:-100,value:-y*(1+f/100),source:`other`});let x=y*(1+f/100)*u,S=o*500*1.5**o,C=[];d.forEach(e=>{if(e.resourceBonus>0){let t=S*(e.resourceBonus/100);C.push({name:`officers.${e.type}`,percentage:e.resourceBonus,value:t,source:`officer`})}}),l||C.push({name:`resources.noEnergy`,percentage:-100,value:-S*(1+f/100),source:`other`});let w=S*(1+f/100)*u,ee=s*25*1.5**s,T=[];d.forEach(e=>{if(e.darkMatterBonus>0){let t=ee*(e.darkMatterBonus/100);T.push({name:`officers.${e.type}`,percentage:e.darkMatterBonus,value:t,source:`officer`})}});let E=ee*(1+p/100),te=e.buildings[i.FusionReactor]||0,D=e.fleet.solarSatellite||0,O=c*50*1.1**c,ne=te*150*1.15**te,re=D*50,k=O+ne+re,ie=[];c>0&&ie.push({name:`buildings.solarPlant`,level:c,production:O}),te>0&&ie.push({name:`buildings.fusionReactor`,level:te,production:ne}),D>0&&ie.push({name:`ships.solarSatellite`,level:D,production:re});let A=[];d.forEach(e=>{if(e.energyBonus>0){let t=k*(e.energyBonus/100);A.push({name:`officers.${e.type}`,percentage:e.energyBonus,value:t,source:`officer`})}});let j=k*(1+m/100);return{metal:{baseProduction:g,buildingLevel:r,buildingName:`buildings.metalMine`,bonuses:_,finalProduction:v},crystal:{baseProduction:y,buildingLevel:a,buildingName:`buildings.crystalMine`,bonuses:b,finalProduction:x},deuterium:{baseProduction:S,buildingLevel:o,buildingName:`buildings.deuteriumSynthesizer`,bonuses:C,finalProduction:w},darkMatter:{baseProduction:ee,buildingLevel:s,buildingName:`buildings.darkMatterCollector`,bonuses:T,finalProduction:E},energy:{baseProduction:k,buildingLevel:c,buildingName:`buildings.solarPlant`,bonuses:A,finalProduction:j,sources:ie}}},gd=e=>{let t=e.buildings[i.MetalMine]||0,n=e.buildings[i.CrystalMine]||0,r=e.buildings[i.DeuteriumSynthesizer]||0,a=t*10*1.1**t,o=n*10*1.1**n,s=r*15*1.1**r;return{metalMine:{buildingLevel:t,buildingName:`buildings.metalMine`,consumption:a},crystalMine:{buildingLevel:n,buildingName:`buildings.crystalMine`,consumption:o},deuteriumSynthesizer:{buildingLevel:r,buildingName:`buildings.deuteriumSynthesizer`,consumption:s},total:a+o+s}},_d=(e,r=`Home Planet`)=>{let o={id:`planet1`,name:r,ownerId:e,position:{galaxy:1,system:1,position:1},resources:{metal:500,crystal:500,deuterium:0,darkMatter:0,energy:0},buildings:{},fleet:{[t.LightFighter]:0,[t.HeavyFighter]:0,[t.Cruiser]:0,[t.Battleship]:0,[t.Battlecruiser]:0,[t.Bomber]:0,[t.Destroyer]:0,[t.SmallCargo]:0,[t.LargeCargo]:0,[t.ColonyShip]:0,[t.Recycler]:0,[t.EspionageProbe]:0,[t.SolarSatellite]:0,[t.DarkMatterHarvester]:0,[t.Deathstar]:0},defense:{[a.RocketLauncher]:0,[a.LightLaser]:0,[a.HeavyLaser]:0,[a.GaussCannon]:0,[a.IonCannon]:0,[a.PlasmaTurret]:0,[a.SmallShieldDome]:0,[a.LargeShieldDome]:0,[a.AntiBallisticMissile]:0,[a.InterplanetaryMissile]:0,[a.PlanetaryShield]:0},buildQueue:[],lastUpdate:Date.now(),maxSpace:200,maxFleetStorage:n.baseStorage,isMoon:!1};return Object.values(i).forEach(e=>{o.buildings[e]=0}),o},vd=(e,r,o=`Planet`)=>{let s={id:`npc_planet_${e}`,name:`${o} ${r.galaxy}:${r.system}:${r.position}`,ownerId:`npc_${e}`,position:r,resources:{metal:Math.floor(Math.random()*1e4)+5e3,crystal:Math.floor(Math.random()*5e3)+2e3,deuterium:Math.floor(Math.random()*2e3)+500,darkMatter:Math.floor(Math.random()*100),energy:0},buildings:{},fleet:{[t.LightFighter]:Math.floor(Math.random()*50),[t.HeavyFighter]:Math.floor(Math.random()*20),[t.Cruiser]:Math.floor(Math.random()*10),[t.Battleship]:Math.floor(Math.random()*5),[t.Battlecruiser]:Math.floor(Math.random()*3),[t.Bomber]:Math.floor(Math.random()*2),[t.Destroyer]:Math.floor(Math.random()*2),[t.SmallCargo]:Math.floor(Math.random()*10),[t.LargeCargo]:Math.floor(Math.random()*5),[t.ColonyShip]:0,[t.Recycler]:0,[t.EspionageProbe]:0,[t.SolarSatellite]:Math.floor(Math.random()*20),[t.DarkMatterHarvester]:0,[t.Deathstar]:0},defense:{[a.RocketLauncher]:Math.floor(Math.random()*100),[a.LightLaser]:Math.floor(Math.random()*50),[a.HeavyLaser]:Math.floor(Math.random()*20),[a.GaussCannon]:Math.floor(Math.random()*10),[a.IonCannon]:Math.floor(Math.random()*10),[a.PlasmaTurret]:Math.floor(Math.random()*5),[a.SmallShieldDome]:Math.random()>.5?1:0,[a.LargeShieldDome]:Math.random()>.8?1:0,[a.AntiBallisticMissile]:Math.floor(Math.random()*3),[a.InterplanetaryMissile]:Math.floor(Math.random()*2),[a.PlanetaryShield]:0},buildQueue:[],lastUpdate:Date.now(),maxSpace:200,maxFleetStorage:n.baseStorage,isMoon:!1};return Object.values(i).forEach(e=>{s.buildings[e]=Math.floor(Math.random()*10)}),s},yd=e=>{let t=e.metal+e.crystal;if(t{if(!e.isMoon)return 0;let t=e.buildings[i.LunarBase]||0;return f.baseSize+t*f.lunarBaseSpaceBonus},xd=(e,t)=>{if(e.isMoon)return 0;let n=r.baseSize,a=e.buildings[i.Terraformer]||0;return n+=a*r.terraformerSpaceBonus,n+=t*r.terraformingTechSpaceBonus,n},Sd=(e,t=`Commander`)=>{let n={id:e,name:t,planets:[],technologies:{},officers:{},researchQueue:[],fleetMissions:[],battleReports:[],spyReports:[],spiedNotifications:[],npcActivityNotifications:[],missionReports:[],incomingFleetAlerts:[],giftNotifications:[],giftRejectedNotifications:[],diplomaticRelations:{},diplomaticReports:[],points:0};return Object.values(v).forEach(e=>{n.technologies[e]=0}),Object.values(s).forEach(e=>{n.officers[e]=Uu(e)}),n},Cd=e=>e.length===0,wd=(e,t,n=10)=>{let r=[];for(let e=1;e<=n;e++)r.push({position:e,planet:null});return r},Td=()=>({galaxy:Math.floor(Math.random()*9)+1,system:Math.floor(Math.random()*10)+1,position:Math.floor(Math.random()*10)+1}),Ed=(e,t,n)=>`${e}:${t}:${n}`,Dd=(e,t)=>{let n=Gu(e.officers,t),r=(t,n,r,i,a)=>{Tu(e,t)};return e.planets.forEach(e=>{dd(e,t,n)}),e.planets.forEach(n=>{Iu(n,t,r),n.isMoon?n.maxSpace=bd(n):n.maxSpace=xd(n,e.technologies[v.TerraformingTechnology]||0)}),{updatedResearchQueue:Su(e.researchQueue,e.technologies,t,r)}},Od=(e,t)=>{Ku(e,t)};function kd(e){return new Worker(``+new URL(`battle.worker-D3kgZwcy.js`,import.meta.url).href,{name:e?.name})}var Ad=e=>{if(typeof e!=`object`||!e)return e;let t=V(e);if(Array.isArray(t))return t.map(e=>Ad(e));if(t&&typeof t==`object`){let e={};for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=Ad(t[n]));return e}return t};const jd=new class{constructor(){this.battleWorker=null,this.pendingTasks=new Map,this.messageIdCounter=0,this.defaultTimeout=1e4}initBattleWorker(){this.battleWorker||(this.battleWorker=new kd,this.setupWorkerHandlers(this.battleWorker,`Battle`))}setupWorkerHandlers(e,t){e.onmessage=e=>{let{id:t,success:n,data:r,error:i}=e.data,a=this.pendingTasks.get(t);if(!a){console.warn(`[WorkerManager] No pending task found for message ID: ${t}`);return}a.timeout&&clearTimeout(a.timeout),this.pendingTasks.delete(t),n?a.resolve(r):a.reject(Error(i||`Worker task failed`))},e.onerror=e=>{console.error(`[WorkerManager] ${t} worker error:`,e);for(let e of this.pendingTasks.values())e.timeout&&clearTimeout(e.timeout),e.reject(Error(`${t} worker crashed`));this.pendingTasks.clear(),t===`Battle`&&(this.battleWorker=null)}}generateMessageId(){return`msg_${Date.now()}_${++this.messageIdCounter}`}getWorkerByType(e){if(e===g.SIMULATE_BATTLE||e===g.CALCULATE_PLUNDER||e===g.CALCULATE_DEBRIS)return this.initBattleWorker(),this.battleWorker;throw Error(`Unknown message type: ${e}`)}sendMessage(e,t,n=this.defaultTimeout){let r=this.getWorkerByType(e);if(!r)return Promise.reject(Error(`Worker initialization failed`));let i=this.generateMessageId();return new Promise((a,o)=>{let s=setTimeout(()=>{this.pendingTasks.delete(i),o(Error(`Worker task timeout after ${n}ms`))},n);this.pendingTasks.set(i,{resolve:a,reject:o,timeout:s});let c={id:i,type:e,payload:Ad(t)};r.postMessage(c)})}async simulateBattle(e){return this.sendMessage(g.SIMULATE_BATTLE,e)}async calculatePlunder(e){return this.sendMessage(g.CALCULATE_PLUNDER,e)}async calculateDebris(e){return this.sendMessage(g.CALCULATE_DEBRIS,e)}destroy(){this.battleWorker&&=(this.battleWorker.terminate(),null);for(let e of this.pendingTasks.values())e.timeout&&clearTimeout(e.timeout),e.reject(Error(`Worker manager destroyed`));this.pendingTasks.clear()}getPendingTaskCount(){return this.pendingTasks.size}},Md=async(e,t,n,r,i,a,o,s)=>{let c=o.weaponsTechnology||0,l=o.shieldingTechnology||0,u=o.armourTechnology||0,d=s.weaponsTechnology||0,f=s.shieldingTechnology||0,p=s.armourTechnology||0,m=await jd.simulateBattle({attacker:{ships:e,weaponTech:c,shieldTech:l,armorTech:u},defender:{ships:t,defense:n,weaponTech:d,shieldTech:f,armorTech:p},maxRounds:6}),h=m.winner===`attacker`?await jd.calculatePlunder({defenderResources:r,attackerFleet:m.attackerRemaining}):{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},g=await jd.calculateDebris({attackerLosses:m.attackerLosses,defenderLosses:m.defenderLosses}),_=g.metal+g.crystal,v=Math.min(_/1e5,.2);return{id:`battle_${Date.now()}`,timestamp:Date.now(),attackerId:``,defenderId:``,attackerPlanetId:``,defenderPlanetId:``,attackerFleet:e,defenderFleet:t,defenderDefense:n,attackerLosses:m.attackerLosses,defenderLosses:m.defenderLosses,winner:m.winner,plunder:h,debrisField:g,rounds:m.rounds,attackerRemaining:m.attackerRemaining,defenderRemaining:m.defenderRemaining,roundDetails:m.roundDetails,moonChance:v}},Nd=(e,t)=>{let n={...t};return Object.keys(e).forEach(r=>{let i=e[r]||0,a=t[r]||0,o=i-a;o>0&&(n[r]=a+Math.floor(o*.7))}),n},Pd=e=>{let t=e.metal+e.crystal;if(t{let c=Pd(e);if(c===0||Math.random()*100>=c)return null;let l={id:`moon_${Date.now()}`,name:`Moon [${r.galaxy}:${r.system}:${r.position}]`,ownerId:s,position:r,resources:{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},buildings:{},fleet:{[t.LightFighter]:0,[t.HeavyFighter]:0,[t.Cruiser]:0,[t.Battleship]:0,[t.Battlecruiser]:0,[t.Bomber]:0,[t.Destroyer]:0,[t.SmallCargo]:0,[t.LargeCargo]:0,[t.ColonyShip]:0,[t.Recycler]:0,[t.EspionageProbe]:0,[t.SolarSatellite]:0,[t.DarkMatterHarvester]:0,[t.Deathstar]:0},defense:{[a.RocketLauncher]:0,[a.LightLaser]:0,[a.HeavyLaser]:0,[a.GaussCannon]:0,[a.IonCannon]:0,[a.PlasmaTurret]:0,[a.SmallShieldDome]:0,[a.LargeShieldDome]:0,[a.AntiBallisticMissile]:0,[a.InterplanetaryMissile]:0,[a.PlanetaryShield]:0},buildQueue:[],lastUpdate:Date.now(),maxSpace:f.baseSize,maxFleetStorage:n.baseStorage,isMoon:!0,parentPlanetId:o};return Object.values(i).forEach(e=>{l.buildings[e]=0}),l},Id=(e,t,n)=>{if(e.find(e=>e.position.galaxy===t.galaxy&&e.position.system===t.system&&e.position.position===t.position&&e.isMoon))return{canCreate:!1,reason:`errors.moonExists`};let r=yd(n);return r===0?{canCreate:!1,reason:`errors.insufficientDebris`,chance:r}:{canCreate:!0,chance:r}},Ld=e=>Math.random()*100<=e,Rd=e=>e<=c.HOSTILE_THRESHOLD?o.Hostile:e>=c.FRIENDLY_THRESHOLD?o.Friendly:o.Neutral,zd=(e,t)=>({fromId:e,toId:t,reputation:0,status:o.Neutral,lastUpdated:Date.now(),history:[]}),Bd=(e,t,n,r)=>{let i=e.reputation,a=Math.max(c.MIN_REPUTATION,Math.min(c.MAX_REPUTATION,i+t)),o=Rd(a);return e.history||=[],e.history.push({timestamp:Date.now(),change:t,reason:n,details:r}),e.history.length>50&&(e.history=e.history.slice(-50)),{...e,reputation:a,status:o,lastUpdated:Date.now()}},Vd=e=>{let{REPUTATION_CHANGES:t}=c,n=e.metal+e.crystal*1.5+e.deuterium*3;if(n(e[n]||(e[n]=zd(t,n)),e[n]),Ud=(e,t)=>{let{GIFT_ACCEPTANCE_CONFIG:n}=c,r=e.relations?.[t.id]?.reputation||0,i=n.NPC_REJECTION_BASE_PROBABILITY;return r<0?i+=Math.abs(r)*n.NPC_REJECTION_REPUTATION_MODIFIER:r>0&&(i-=r*n.NPC_REJECTION_REPUTATION_MODIFIER),Math.max(n.MIN_REJECTION_PROBABILITY,Math.min(n.MAX_REJECTION_PROBABILITY,i))},Wd=(e,t,n)=>{let r=Ud(n,t);if(Math.random(){let{GIFT_ACCEPTANCE_CONFIG:r}=c;e.giftRejectedNotifications||=[];let i=t.relations?.[e.id]?.reputation||0,a={id:`gift-rejected-${Date.now()}-${Math.random()}`,timestamp:Date.now(),npcId:t.id,npcName:t.name,rejectedResources:n,currentReputation:i,reason:i<-20?`hostile`:i<20?`neutral_distrust`:`polite_decline`,read:!1};e.giftRejectedNotifications.push(a),e.giftRejectedNotifications.length>50&&(e.giftRejectedNotifications=e.giftRejectedNotifications.slice(-50)),t.relations||={};let o=Hd(t.relations,t.id,e.id);t.relations[e.id]=Bd(o,r.REJECTION_REPUTATION_PENALTY,p.GiftResources,`Rejected player's gift`),Xd(e,t,p.GiftResources,r.REJECTION_REPUTATION_PENALTY,`${t.name} rejected your gift. Reputation ${r.REJECTION_REPUTATION_PENALTY}`)};const Kd=(e,t,n,r)=>{let{REPUTATION_CHANGES:i}=c,a=i.ATTACK;n.winner===`attacker`&&(a=i.ATTACK_WIN),e.diplomaticRelations||={};let o=Hd(e.diplomaticRelations,e.id,t.id);e.diplomaticRelations[t.id]=Bd(o,-a,p.Attack,`Attacked ${t.name}`),t.relations||={};let s=Hd(t.relations,t.id,e.id);t.relations[e.id]=Bd(s,-a,p.Attack,`Was attacked by player`),t.allies&&t.allies.length>0&&qd(e,t,r),Xd(e,t,p.Attack,-a,`You attacked ${t.name}`)},qd=(e,t,n)=>{let{REPUTATION_CHANGES:r}=c;n.filter(e=>t.allies?.includes(e.id)).forEach(n=>{n.relations||={};let i=Hd(n.relations,n.id,e.id);n.relations[e.id]=Bd(i,-r.ALLY_ATTACKED,p.AllyAttacked,`Player attacked ally ${t.name}`),Xd(e,n,p.AllyAttacked,-r.ALLY_ATTACKED,`${n.name} is displeased that you attacked their ally ${t.name}`)})},Jd=(e,t,n)=>{let{REPUTATION_CHANGES:r}=c,i=n?r.SPY_DETECTED:r.SPY_UNDETECTED;t.relations||={};let a=Hd(t.relations,t.id,e.id);t.relations[e.id]=Bd(a,-i,p.Spy,`Was spied by player (detected: ${n})`),n&&Xd(e,t,p.Spy,-i,`Your espionage was detected by ${t.name}`)},Yd=(e,t,n)=>{let{REPUTATION_CHANGES:r}=c,i=n.find(e=>e.planets.some(e=>e.position.galaxy===t.galaxy&&e.position.system===t.system&&e.position.position===t.position));if(i){e.diplomaticRelations||={};let t=Hd(e.diplomaticRelations,e.id,i.id);e.diplomaticRelations[i.id]=Bd(t,-r.STEAL_DEBRIS,p.StealDebris,`Stole debris from ${i.name}'s territory`),i.relations||={};let n=Hd(i.relations,i.id,e.id);i.relations[e.id]=Bd(n,-r.STEAL_DEBRIS,p.StealDebris,`Player stole debris from territory`),Xd(e,i,p.StealDebris,-r.STEAL_DEBRIS,`You recycled debris near ${i.name}'s planet. They are displeased.`)}};var Xd=(e,t,n,r,i)=>{e.diplomaticReports||=[],e.diplomaticRelations||={};let a=e.diplomaticRelations[t.id]||zd(e.id,t.id),o=a.status,s=Math.max(c.MIN_REPUTATION,Math.min(c.MAX_REPUTATION,a.reputation+r)),l=Rd(s),u={id:`diplomatic-${Date.now()}-${Math.random()}`,timestamp:Date.now(),npcId:t.id,npcName:t.name,eventType:n,reputationChange:r,newReputation:s,oldStatus:o,newStatus:l,message:i,read:!1};e.diplomaticReports.push(u),e.diplomaticReports.length>100&&(e.diplomaticReports=e.diplomaticReports.slice(-100))};const Zd=(e,t,n)=>{let{GIFT_ACCEPTANCE_CONFIG:r}=c;t.giftNotifications||=[];let i=e.relations?.[t.id]?.reputation||0,a=Math.floor(Vd(n)*.5),o={id:`gift-${Date.now()}-${Math.random()}`,timestamp:Date.now(),fromNpcId:e.id,fromNpcName:e.name,resources:n,currentReputation:i,expectedReputationGain:a,expiresAt:Date.now()+r.GIFT_EXPIRATION_DAYS*24*3600*1e3,read:!1};t.giftNotifications.push(o),t.giftNotifications.length>50&&(t.giftNotifications=t.giftNotifications.slice(-50))},Qd=(e,t,n)=>{if(e.planets&&e.planets.length>0){let t=e.planets[0];t&&(t.resources.metal+=n.resources.metal,t.resources.crystal+=n.resources.crystal,t.resources.deuterium+=n.resources.deuterium,t.resources.darkMatter+=n.resources.darkMatter)}t.relations||={};let r=Hd(t.relations,t.id,e.id);t.relations[e.id]=Bd(r,n.expectedReputationGain,p.GiftResources,`Gifted resources to player`),e.diplomaticRelations||={};let i=Hd(e.diplomaticRelations,e.id,t.id);e.diplomaticRelations[t.id]=Bd(i,n.expectedReputationGain,p.GiftResources,`Received gift from ${t.name}`),Xd(e,t,p.GiftResources,n.expectedReputationGain,`You accepted a gift from ${t.name}: ${n.resources.metal}M ${n.resources.crystal}C ${n.resources.deuterium}D`),e.giftNotifications&&=e.giftNotifications.filter(e=>e.id!==n.id)},$d=(e,t,n)=>{let{GIFT_ACCEPTANCE_CONFIG:r}=c;t.relations||={};let i=Hd(t.relations,t.id,e.id);t.relations[e.id]=Bd(i,r.REJECTION_REPUTATION_PENALTY,p.GiftResources,`Player rejected gift`),Xd(e,t,p.GiftResources,r.REJECTION_REPUTATION_PENALTY,`You rejected a gift from ${t.name}. Reputation ${r.REJECTION_REPUTATION_PENALTY}`),e.giftNotifications&&=e.giftNotifications.filter(e=>e.id!==n.id)},ef=(e,t)=>e.galaxy===t.galaxy&&e.system===t.system&&e.position===t.position?5:e.galaxy===t.galaxy&&e.system===t.system?1e3+Math.abs(t.position-e.position)*5:e.galaxy===t.galaxy?2700+Math.abs(t.system-e.system)*95:2e4+Math.abs(t.galaxy-e.galaxy)*2e4,tf=(e,t)=>Math.max(10,Math.floor(e*1e4/t)),nf=(e,t,n,r,i,a,o)=>{let s=Date.now();return{id:`mission_${s}`,playerId:e,originPlanetId:t,targetPosition:n,missionType:r,fleet:i,cargo:a,departureTime:s,arrivalTime:s+o*1e3,returnTime:s+o*2*1e3,status:`outbound`}},rf=(e,t,n,r)=>{if(e.isGift&&e.giftTargetNpcId&&n&&r){let t=r.find(t=>t.id===e.giftTargetNpcId);if(t){let r=Wd(e,n,t);return e.status=`returning`,r.accepted?(e.cargo={metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},{success:!0,reputationGain:r.reputationGain}):{success:!1,reputationGain:void 0}}}return t?(t.resources.metal+=e.cargo.metal,t.resources.crystal+=e.cargo.crystal,t.resources.deuterium+=e.cargo.deuterium,t.resources.darkMatter+=e.cargo.darkMatter,e.status=`returning`,e.cargo={metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},{success:!0}):(e.status=`returning`,e.cargo={metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},{success:!1})},af=async(e,t,n,r,i)=>{if(!t||t.ownerId===n.id)return e.status=`returning`,null;let a=await Md(e.fleet,t.fleet,t.defense,t.resources,n.officers,r?.officers||{},n.technologies,r?.technologies||{});a.id=`battle_${Date.now()}`,a.attackerId=n.id,a.defenderId=t.ownerId||`unknown`,a.attackerPlanetId=e.originPlanetId,a.defenderPlanetId=t.id,e.cargo=a.plunder;let o={};Object.entries(e.fleet).forEach(([e,t])=>{let n=t-(a.attackerLosses[e]||0);n>0&&(o[e]=n)}),e.fleet=o,Object.entries(a.defenderLosses.fleet).forEach(([e,n])=>{t.fleet[e]=Math.max(0,t.fleet[e]-n)}),Object.entries(a.defenderLosses.defense).forEach(([e,n])=>{t.defense[e]=Math.max(0,t.defense[e]-n)});let s={...t.defense};Object.entries(a.defenderLosses.defense).forEach(([e,t])=>{s[e]=(s[e]||0)+t}),t.defense=Nd(s,t.defense),t.resources.metal-=a.plunder.metal,t.resources.crystal-=a.plunder.crystal,t.resources.deuterium-=a.plunder.deuterium,e.status=`returning`;let c=null,l=Id(i,t.position,a.debrisField);l.canCreate&&l.chance&&Ld(l.chance)&&(c=Fd(a.debrisField,t.position,t.id,t.ownerId||`unknown`));let u=null;return a.debrisField.metal+a.debrisField.crystal>0&&(u={id:`debris_${t.position.galaxy}_${t.position.system}_${t.position.position}`,position:t.position,resources:{metal:a.debrisField.metal,crystal:a.debrisField.crystal},createdAt:Date.now()}),{battleResult:a,moon:c,debrisField:u}},of=async(e,t,n,r,i)=>{let a=await Md(t.fleet,n.fleet,n.defense,n.resources,{},r.officers||{},e.technologies,r.technologies);a.id=`battle_${Date.now()}`,a.attackerId=e.id,a.defenderId=r.id,a.attackerPlanetId=t.originPlanetId,a.defenderPlanetId=n.id,a.timestamp=Date.now(),a.winner===`attacker`&&a.plunder&&e.planets.find(e=>e.id===t.originPlanetId)&&(t.cargo=a.plunder);let o={};Object.entries(t.fleet).forEach(([e,t])=>{let n=t-(a.attackerLosses[e]||0);n>0&&(o[e]=n)}),t.fleet=o,Object.entries(a.defenderLosses.fleet).forEach(([e,t])=>{n.fleet[e]=Math.max(0,(n.fleet[e]||0)-t)}),Object.entries(a.defenderLosses.defense).forEach(([e,t])=>{n.defense[e]=Math.max(0,(n.defense[e]||0)-t)});let s={...n.defense};Object.entries(a.defenderLosses.defense).forEach(([e,t])=>{s[e]=(s[e]||0)+t}),n.defense=Nd(s,n.defense),a.plunder&&(n.resources.metal=Math.max(0,n.resources.metal-a.plunder.metal),n.resources.crystal=Math.max(0,n.resources.crystal-a.plunder.crystal),n.resources.deuterium=Math.max(0,n.resources.deuterium-a.plunder.deuterium)),t.status=`returning`;let c=null,l=Id(i,n.position,a.debrisField);l.canCreate&&l.chance&&Ld(l.chance)&&(c=Fd(a.debrisField,n.position,n.id,n.ownerId||`unknown`));let u=null;return a.debrisField.metal+a.debrisField.crystal>0&&(u={id:`debris_${n.position.galaxy}_${n.position.system}_${n.position.position}`,position:n.position,resources:{metal:a.debrisField.metal,crystal:a.debrisField.crystal},createdAt:Date.now()}),{battleResult:a,moon:c,debrisField:u}},sf=e=>1+Math.floor(e/2),cf=e=>{let t=sf(e.technologies[v.Astrophysics]||0);return e.planets.length{if(r||!cf(o))return e.status=`returning`,null;let c={id:`planet_${Date.now()}`,name:`${s} ${e.targetPosition.galaxy}:${e.targetPosition.system}:${e.targetPosition.position}`,ownerId:o.id,position:e.targetPosition,resources:{metal:500,crystal:500,deuterium:0,darkMatter:0,energy:0},buildings:{},fleet:{[t.LightFighter]:0,[t.HeavyFighter]:0,[t.Cruiser]:0,[t.Battleship]:0,[t.Battlecruiser]:0,[t.Bomber]:0,[t.Destroyer]:0,[t.SmallCargo]:0,[t.LargeCargo]:0,[t.ColonyShip]:0,[t.Recycler]:0,[t.EspionageProbe]:0,[t.SolarSatellite]:0,[t.DarkMatterHarvester]:0,[t.Deathstar]:0},defense:{[a.RocketLauncher]:0,[a.LightLaser]:0,[a.HeavyLaser]:0,[a.GaussCannon]:0,[a.IonCannon]:0,[a.PlasmaTurret]:0,[a.SmallShieldDome]:0,[a.LargeShieldDome]:0,[a.AntiBallisticMissile]:0,[a.InterplanetaryMissile]:0,[a.PlanetaryShield]:0},buildQueue:[],lastUpdate:Date.now(),maxSpace:200,maxFleetStorage:n.baseStorage,isMoon:!1};return Object.values(i).forEach(e=>{c.buildings[e]=0}),e.fleet[t.ColonyShip]=(e.fleet[t.ColonyShip]||1)-1,e.status=`returning`,c},uf=(e,t,n)=>{let r=e-t+Math.floor(n/5);return{showFleet:r>=-1,showDefense:r>=1,showBuildings:r>=3,showTechnologies:r>=5}},df=(e,t,n)=>{let r=.25,i=t-e;return i>0?r+=i*.1:r+=i*.05,r-=n*.01,Math.max(.01,Math.min(.99,r))},ff=(e,n,r,i,a)=>{if(!n)return e.status=`returning`,null;let o=r.technologies[v.EspionageTechnology]||0,s=i?.technologies[v.EspionageTechnology]||0,c=e.fleet[t.EspionageProbe]||0,l=uf(o,s,c),u=df(o,s,c),d=Math.random()e.planets.some(e=>e.id===n.id));e&&Jd(r,e,d)}return e.status=`returning`,f},pf=(e,t,n)=>{if(!t||t.ownerId!==n)return e.status=`returning`,!1;for(let[n,r]of Object.entries(e.fleet))t.fleet[n]+=r;return!0},mf=(e,n,r,i)=>{if(!n)return e.status=`returning`,null;let a=(e.fleet[t.Recycler]||0)*2e4-(e.cargo.metal+e.cargo.crystal+e.cargo.deuterium),o=n.resources.metal+n.resources.crystal,s=Math.min(o,a),c=n.resources.metal/o,l=n.resources.crystal/o,u=Math.floor(s*c),d=Math.floor(s*l);e.cargo.metal+=u,e.cargo.crystal+=d;let f=n.resources.metal-u,p=n.resources.crystal-d;return e.status=`returning`,r&&i&&s>0&&Yd(r,n.position,i),{collectedResources:{metal:u,crystal:d},remainingDebris:f>0||p>0?{metal:f,crystal:p}:null}},hf=(e,t,n)=>{let r=e*10,i=t*5,a=Math.floor(n/1e4),o=r-i-a;return Math.max(1,Math.min(99,o))},gf=(e,t)=>{let n=0;return Object.entries(e).forEach(([e,t])=>{t>0&&(n+=t*100)}),Object.entries(t).forEach(([e,t])=>{t>0&&(n+=t*50)}),n},_f=(e,n,r)=>{if(!n||n.ownerId===r.id)return e.status=`returning`,null;let i=e.fleet[t.Deathstar]||0;if(i===0)return e.status=`returning`,null;let o=hf(i,n.defense[a.PlanetaryShield]||0,gf(n.fleet,n.defense)),s=Math.random()*100{if(e.status!==`outbound`)return!1;let n=t-e.departureTime;return te<1e3?{powerRatio:.3+e/1e3*.2,checkInterval:300,resourceGrowthRate:.4,buildingGrowthSpeed:.4,techGrowthSpeed:.4}:e<5e3?{powerRatio:.5+(e-1e3)/4e3*.2,checkInterval:240,resourceGrowthRate:.6,buildingGrowthSpeed:.6,techGrowthSpeed:.6}:e<2e4?{powerRatio:.7+(e-5e3)/15e3*.2,checkInterval:180,resourceGrowthRate:.8,buildingGrowthSpeed:.8,techGrowthSpeed:.8}:e<5e4?{powerRatio:.9+(e-2e4)/3e4*.2,checkInterval:150,resourceGrowthRate:1,buildingGrowthSpeed:1,techGrowthSpeed:1}:{powerRatio:Math.min(1.3,1.1+(e-5e4)/5e4*.2),checkInterval:120,resourceGrowthRate:1.2,buildingGrowthSpeed:1.2,techGrowthSpeed:1.2},xf=e=>{let t=e.planets.filter(t=>t.ownerId===e.player.id);if(t.length===0)return{avgBuildingLevel:0,avgTechLevel:0,totalFleetPower:0,totalResources:0};let n=0,r=0;t.forEach(e=>{Object.values(e.buildings).forEach(e=>{n+=e,r++})});let i=Object.values(e.player.technologies),a=i.length>0?i.reduce((e,t)=>e+t,0)/i.length:0,o=0;t.forEach(e=>{Object.entries(e.fleet).forEach(([e,t])=>{let n=l[e],r=n.attack+n.shield+n.armor/10;o+=r*t})});let s=t.reduce((e,t)=>e+t.resources.metal+t.resources.crystal+t.resources.deuterium,0);return{avgBuildingLevel:r>0?n/r:0,avgTechLevel:a,totalFleetPower:o,totalResources:s}},Sf=e=>{let t=0,n=0;e.planets.forEach(e=>{Object.values(e.buildings).forEach(e=>{t+=e,n++})});let r=Object.values(e.technologies),i=r.length>0?r.reduce((e,t)=>e+t,0)/r.length:0,a=0;e.planets.forEach(e=>{Object.entries(e.fleet).forEach(([e,t])=>{let n=l[e],r=n.attack+n.shield+n.armor/10;a+=r*t})});let o=e.planets.reduce((e,t)=>e+t.resources.metal+t.resources.crystal+t.resources.deuterium,0);return{avgBuildingLevel:n>0?t/n:0,avgTechLevel:i,totalFleetPower:a,totalResources:o}},Cf=e=>{let t=e.planets[0];if(!t)return;let n=[i.MetalMine,i.CrystalMine,i.DeuteriumSynthesizer,i.SolarPlant,i.RoboticsFactory,i.Shipyard,i.ResearchLab,i.MetalStorage,i.CrystalStorage,i.DeuteriumTank,i.DarkMatterCollector];for(let e of n){let n=t.buildings[e]||0,r=n+1,i=d[e];if(i.maxLevel&&n>=i.maxLevel)continue;let a=Au(e,r);if(t.resources.metal>=a.metal&&t.resources.crystal>=a.crystal&&t.resources.deuterium>=a.deuterium&&t.resources.darkMatter>=a.darkMatter){t.resources.metal-=a.metal,t.resources.crystal-=a.crystal,t.resources.deuterium-=a.deuterium,t.resources.darkMatter-=a.darkMatter,t.buildings[e]=r;break}}},wf=e=>{let t=e.planets[0];if(!t)return;let n=[v.EnergyTechnology,v.ComputerTechnology,v.WeaponsTechnology,v.ShieldingTechnology,v.ArmourTechnology,v.CombustionDrive,v.ImpulseDrive,v.HyperspaceDrive,v.LaserTechnology,v.IonTechnology,v.PlasmaTechnology,v.Astrophysics,v.EspionageTechnology];for(let r of n){let n=e.technologies[r]||0,i=n+1,a=_[r];if(a.maxLevel&&n>=a.maxLevel)continue;let o=vu(r,i);if(t.resources.metal>=o.metal&&t.resources.crystal>=o.crystal&&t.resources.deuterium>=o.deuterium&&t.resources.darkMatter>=o.darkMatter){t.resources.metal-=o.metal,t.resources.crystal-=o.crystal,t.resources.deuterium-=o.deuterium,t.resources.darkMatter-=o.darkMatter,e.technologies[r]=i;break}}},Tf=e=>{let n=e.planets[0];if(!n)return;let r=[{shipType:t.LightFighter,priority:1},{shipType:t.HeavyFighter,priority:2},{shipType:t.Cruiser,priority:3},{shipType:t.Battleship,priority:4},{shipType:t.SmallCargo,priority:5},{shipType:t.LargeCargo,priority:6},{shipType:t.Recycler,priority:7},{shipType:t.EspionageProbe,priority:8}];r.sort((e,t)=>e.priority-t.priority);for(let{shipType:t}of r){let r=l[t];if(!Object.entries(r.requirements||{}).every(([t,r])=>t in i?(n.buildings[t]||0)>=r:t in v?(e.technologies[t]||0)>=r:!1))continue;let a=Math.floor(Math.min(n.resources.metal/r.cost.metal,n.resources.crystal/r.cost.crystal,n.resources.deuterium/r.cost.deuterium,r.cost.darkMatter>0?n.resources.darkMatter/r.cost.darkMatter:1/0)),o=Math.min(a,e.difficulty===`easy`?5:e.difficulty===`medium`?10:20);if(o>0){n.resources.metal-=r.cost.metal*o,n.resources.crystal-=r.cost.crystal*o,n.resources.deuterium-=r.cost.deuterium*o,n.resources.darkMatter-=r.cost.darkMatter*o,n.fleet[t]=(n.fleet[t]||0)+o;break}}},Ef=(e,t,n)=>{let r=e.planets[0];if(!r)return;let a=r.buildings[i.MetalMine]||0,o=r.buildings[i.CrystalMine]||0,s=r.buildings[i.DeuteriumSynthesizer]||0,c=r.buildings[i.DarkMatterCollector]||0,l=30*a*1.1**a*n.resourceGrowthRate,u=20*o*1.1**o*n.resourceGrowthRate,d=10*s*1.1**s*n.resourceGrowthRate,f=25*c*1.5**c/3600*n.resourceGrowthRate;r.resources.metal+=l*t,r.resources.crystal+=u*t,r.resources.deuterium+=d*t,r.resources.darkMatter+=f*t;let p=r.buildings[i.MetalStorage]||0,m=r.buildings[i.CrystalStorage]||0,h=r.buildings[i.DeuteriumTank]||0,g=r.buildings[i.DarkMatterTank]||0;r.resources.metal=Math.min(r.resources.metal,1e4*2**p),r.resources.crystal=Math.min(r.resources.crystal,1e4*2**m),r.resources.deuterium=Math.min(r.resources.deuterium,1e4*2**h),r.resources.darkMatter=Math.min(r.resources.darkMatter,1e3*2**g)},Df=(e,t,n)=>{let r=bf(t.player.points);Ef(e,n,r);let i=Date.now();if(i-(e.lastGrowthCheck||0)>=r.checkInterval*1e3){e.lastGrowthCheck=i;let n=xf(t),a=Sf(e),o=n.avgBuildingLevel*r.powerRatio,s=n.avgTechLevel*r.powerRatio,c=n.totalFleetPower*r.powerRatio;a.avgBuildingLevel{let n=yf[e.difficulty],r=e.planets[0];if(!r)return;let a=Math.max(5,Math.floor(t.avgBuildingLevel*n.powerRatio));r.buildings[i.MetalMine]=a,r.buildings[i.CrystalMine]=Math.floor(a*.8),r.buildings[i.DeuteriumSynthesizer]=Math.floor(a*.6),r.buildings[i.SolarPlant]=a+2,r.buildings[i.RoboticsFactory]=Math.floor(a*.5),r.buildings[i.Shipyard]=Math.floor(a*.4),r.buildings[i.ResearchLab]=Math.floor(a*.4),r.buildings[i.MetalStorage]=Math.floor(a*.3),r.buildings[i.CrystalStorage]=Math.floor(a*.3),r.buildings[i.DeuteriumTank]=Math.floor(a*.3);let o=Math.max(3,Math.floor(t.avgTechLevel*n.powerRatio));e.technologies[v.EnergyTechnology]=o,e.technologies[v.ComputerTechnology]=Math.floor(o*.8),e.technologies[v.WeaponsTechnology]=Math.floor(o*.7),e.technologies[v.ShieldingTechnology]=Math.floor(o*.7),e.technologies[v.ArmourTechnology]=Math.floor(o*.7),e.technologies[v.CombustionDrive]=Math.floor(o*.6),r.resources.metal=1e5*n.powerRatio,r.resources.crystal=5e4*n.powerRatio,r.resources.deuterium=2e4*n.powerRatio,r.resources.darkMatter=1e3*n.powerRatio},kf=e=>{e.forEach(e=>{e.allies||=[],e.enemies||=[],e.relations||={}}),e.forEach(t=>{let n=e.filter(e=>e.id!==t.id&&!t.allies.includes(e.id)&&!e.allies.includes(t.id));if(n.length===0)return;let r=Math.min(Math.floor(Math.random()*2)+1,n.length);for(let e=0;ee<1e3?{spyInterval:2400,attackInterval:4800,attackProbability:.15,minSpyProbes:1,attackFleetSizeRatio:.3}:e<5e3?{spyInterval:1800,attackInterval:3600,attackProbability:.25,minSpyProbes:2,attackFleetSizeRatio:.5}:e<2e4?{spyInterval:1200,attackInterval:2400,attackProbability:.4,minSpyProbes:3,attackFleetSizeRatio:.7}:e<5e4?{spyInterval:900,attackInterval:1800,attackProbability:.55,minSpyProbes:4,attackFleetSizeRatio:.85}:{spyInterval:600,attackInterval:1200,attackProbability:.7,minSpyProbes:5,attackFleetSizeRatio:.95},jf=(e,t,n,r)=>{if(n-(e.lastSpyTime||0){if(n-(e.lastAttackTime||0){let{NPC_GIFT_CONFIG:r}=c;if(!r.ENABLED||n-(e.lastGiftTime||0){let{NPC_GIFT_CONFIG:n}=c;Zd(e,t,{metal:Math.floor(Math.random()*(n.GIFT_AMOUNT.METAL.max-n.GIFT_AMOUNT.METAL.min+1))+n.GIFT_AMOUNT.METAL.min,crystal:Math.floor(Math.random()*(n.GIFT_AMOUNT.CRYSTAL.max-n.GIFT_AMOUNT.CRYSTAL.min+1))+n.GIFT_AMOUNT.CRYSTAL.min,deuterium:Math.floor(Math.random()*(n.GIFT_AMOUNT.DEUTERIUM.max-n.GIFT_AMOUNT.DEUTERIUM.min+1))+n.GIFT_AMOUNT.DEUTERIUM.min,darkMatter:0,energy:0}),e.lastGiftTime=Date.now()};var Ff=(e,t)=>{if(e.planets.length===0)return null;let n=null,r=1/0;for(let i of e.planets){let e=ef(i.position,t);Object.values(i.fleet).some(e=>(e||0)>0)&&e{let a=Ff(e,n.position);if(!a||(a.fleet[t.EspionageProbe]||0){let a=e.technologies[v.EspionageTechnology]||0,o=i.technologies[v.EspionageTechnology]||0,s=n.fleet[t.EspionageProbe]||0,c=Math.max(0,Math.min(100,50+(o-a)*10-s*5)),l=Math.random()*100=2?{...r.fleet}:void 0,defense:a>=4?{...r.defense}:void 0,buildings:a>=6?{...r.buildings}:void 0,technologies:a>=8?{...i.technologies}:void 0,detectionChance:c};e.playerSpyReports||={},e.playerSpyReports[r.id]=u;let d={id:`spied-${n.id}`,timestamp:Date.now(),npcId:e.id,npcName:e.name,targetPlanetId:r.id,targetPlanetName:r.name,detectionSuccess:l,read:!1};return n.status=`returning`,n.returnTime=Date.now()+(n.arrivalTime-n.departureTime),{spiedNotification:d,spyReport:u}};var Rf=(e,n,r,i)=>{let a={},o=!1,s=[t.LightFighter,t.HeavyFighter,t.Cruiser,t.Battleship,t.Bomber,t.Destroyer,t.Battlecruiser,t.Deathstar];for(let e of s){let t=n.fleet[e]||0;if(t>0){let n=Math.floor(t*i.attackFleetSizeRatio);n>0&&(a[e]=n,o=!0)}}return o?a:null};const zf=(e,t,n,r)=>{let i=Ff(e,t.position);if(!i)return null;let a=Rf(e,i,n,r);if(!a)return null;for(let[e,t]of Object.entries(a))i.fleet[e]=(i.fleet[e]||0)-t;let o=ef(i.position,t.position),s=1/0;for(let e of Object.keys(a))s=Math.min(s,1e4);let c=tf(o,s),l=Date.now(),d={id:`npc-attack-${e.id}-${l}`,playerId:e.id,npcId:e.id,isHostile:!0,originPlanetId:i.id,targetPosition:t.position,targetPlanetId:t.id,missionType:u.Attack,fleet:a,cargo:{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},departureTime:l,arrivalTime:l+c*1e3,status:`outbound`};return e.lastAttackTime=l,e.fleetMissions||=[],e.fleetMissions.push(d),d},Bf=(e,t,n)=>{let r=Object.values(e.fleet).reduce((e,t)=>e+(t||0),0);return{id:e.id,npcId:t.id,npcName:t.name,missionType:e.missionType,targetPlanetId:n.id,targetPlanetName:n.name,arrivalTime:e.arrivalTime,fleetSize:r,read:!1}},Vf=(e,t)=>{e.incomingFleetAlerts||=[],e.incomingFleetAlerts=e.incomingFleetAlerts.filter(e=>e.arrivalTime>t)},Hf=(e,t,n,r,i)=>{let a=Af(t.points),o=Jf(e,r);if(o.length>0){let r=e.fleetMissions?.filter(e=>e.missionType===u.Recycle&&e.status===`outbound`)||[],i=new Set(r.map(e=>e.debrisFieldId).filter(Boolean)),a=o.filter(e=>!i.has(e.id));if(a.length>0){let r=a[Math.floor(Math.random()*a.length)];r&&Yf(e,r,t,n)}}if(Xf(e,i)){let r=Zf(e,n,a);if(r){let i=n.find(e=>e.id===r.targetPlanetId);if(i){let n=Bf(r,e,i);t.incomingFleetAlerts||=[],t.incomingFleetAlerts.push(n)}return}}if(jf(e,t,i,a)){let r=n.filter(e=>e.ownerId===t.id);if(r.length>0){let i=r[Math.floor(Math.random()*r.length)];if(!i)return;let o=If(e,i,n,a);if(o){let n=Bf(o,e,i);t.incomingFleetAlerts||=[],t.incomingFleetAlerts.push(n)}}}if(Mf(e,t,i,a)&&e.playerSpyReports&&Object.keys(e.playerSpyReports).length>0){let r=Object.values(e.playerSpyReports),i=r[Math.floor(Math.random()*r.length)];if(!i)return;let o=n.find(e=>e.id===i.targetPlanetId);if(o){let n=zf(e,o,i,a);if(n){let r=Bf(n,e,o);t.incomingFleetAlerts||=[],t.incomingFleetAlerts.push(r)}}}Nf(e,t,i)&&Pf(e,t),Vf(t,i)},Uf=(e,t,n,r=0)=>{let i=Af(t.points),a=n.filter(e=>e.ownerId===t.id);if(a.length===0)return console.error(`[Test] No player planets found`),null;let o=a[r]||a[0];if(!o)return console.error(`[Test] Target planet not found`),null;let s=If(e,o,n,i);if(s){let n=Bf(s,e,o);t.incomingFleetAlerts||=[],t.incomingFleetAlerts.push(n)}else console.error(`[Test] Failed to create spy mission - NPC may not have spy probes`);return s},Wf=(e,t,n,r=0)=>{let i=Af(t.points);if(!e.playerSpyReports||Object.keys(e.playerSpyReports).length===0)return console.error(`[Test] No spy reports available - NPC must spy first!`),null;let a=n.filter(e=>e.ownerId===t.id);if(a.length===0)return console.error(`[Test] No player planets found`),null;let o=a[r]||a[0];if(!o)return console.error(`[Test] Target planet not found`),null;let s=e.playerSpyReports[o.id];if(!s)return console.error(`[Test] No spy report for ${o.name} - spy this planet first!`),null;let c=zf(e,o,s,i);if(c){let n=Bf(c,e,o);t.incomingFleetAlerts||=[],t.incomingFleetAlerts.push(n)}else console.error(`[Test] Failed to create attack mission - NPC may not have ships`);return c},Gf=(e,t,n,r=0)=>{let i=Uf(e,t,n,r);if(!i)return{spyMission:null,attackMission:null};let a=n.filter(e=>e.ownerId===t.id),o=a[r]||a[0];if(!o)return console.error(`[Test] Target planet not found`),{spyMission:i,attackMission:null};let{spyReport:s}=Lf(e,i,o,t);return e.playerSpyReports||={},e.playerSpyReports[o.id]=s,{spyMission:i,attackMission:Wf(e,t,n,r)}},Kf=(e,t,n=5)=>{if(!e.fleetMissions)return console.error(`[Test] NPC has no fleet missions`),!1;let r=e.fleetMissions.find(e=>e.id===t);return r?(r.arrivalTime=Date.now()+n*1e3,!0):(console.error(`[Test] Mission not found`),!1)},qf=(e,t=5)=>{if(!e.fleetMissions)return console.error(`[Test] NPC has no fleet missions`),0;let n=Date.now(),r=0;return e.fleetMissions.forEach(e=>{e.status===`outbound`?(e.arrivalTime=n+t*1e3,r++):e.status===`returning`&&e.returnTime&&(e.returnTime=n+t*1e3,r++)}),r},Jf=(e,t)=>{let n=[];for(let r of Object.values(t))for(let t of e.planets)r.position.galaxy===t.position.galaxy&&r.position.system===t.position.system&&(r.resources.metal>1e3||r.resources.crystal>1e3)&&Math.abs(r.position.position-t.position.position)<=15&&n.push(r);return n},Yf=(e,n,r,i)=>{let a=null,o=1/0;for(let t of e.planets)if(t.position.galaxy===n.position.galaxy&&t.position.system===n.position.system){let e=Math.abs(t.position.position-n.position.position);ee.ownerId===r.id&&e.position.galaxy===n.position.galaxy&&e.position.system===n.position.system&&e.position.position===n.position.position);if(h){let t=Bf(m,e,h);r.incomingFleetAlerts||=[],r.incomingFleetAlerts.push(t),r.npcActivityNotifications||=[],r.npcActivityNotifications.push({id:`npc-activity-${m.id}`,timestamp:p,npcId:e.id,npcName:e.name,activityType:`recycle`,targetPosition:n.position,targetPlanetId:h.id,targetPlanetName:h.name,arrivalTime:m.arrivalTime,read:!1})}return m},Xf=(e,t)=>{if(!e.revengeTarget||!e.attackedBy)return!1;let n=e.attackedBy[e.revengeTarget];if(!n)return!1;let r=t-n.lastAttackTime;return!(r>24*3600*1e3||r<600*1e3)},Zf=(e,t,n)=>{if(!e.revengeTarget||!e.attackedBy)return null;let r=e.attackedBy[e.revengeTarget];if(!r||!r.planetId)return null;let i=t.find(e=>e.id===r.planetId);if(!i)return null;let a=Ff(e,i.position);if(!a)return null;let o=Rf(e,a,{},{...n,attackFleetSizeRatio:Math.min(1,n.attackFleetSizeRatio*1.5)});if(!o)return null;for(let[e,t]of Object.entries(o))a.fleet[e]=(a.fleet[e]||0)-t;let s=ef(a.position,i.position),c=1/0;for(let e of Object.keys(o))c=Math.min(c,1e4);let l=tf(s,c),d=Date.now(),f={id:`npc-revenge-${e.id}-${d}`,playerId:e.id,npcId:e.id,isHostile:!0,originPlanetId:a.id,targetPosition:i.position,targetPlanetId:i.id,missionType:u.Attack,fleet:o,cargo:{metal:0,crystal:0,deuterium:0,darkMatter:0,energy:0},departureTime:d,arrivalTime:d+l*1e3,status:`outbound`};return e.fleetMissions||=[],e.fleetMissions.push(f),e.revengeTarget=void 0,f},Qf=(e,t)=>{let n={};if(e.requirements&&Object.assign(n,e.requirements),e.levelRequirements){let r=Object.keys(e.levelRequirements).map(Number).filter(e=>e<=t).sort((e,t)=>e-t);for(let t of r){let r=e.levelRequirements[t];if(r)for(let[e,t]of Object.entries(r)){let r=n[e]||0;n[e]=Math.max(r,t)}}}return n},$f=(e,t,n)=>{if(!e||!n)return!0;for(let[r,a]of Object.entries(n))if(Object.values(i).includes(r)){if((e.buildings[r]||0)ld(e,Gu(t,Date.now())),tp=(e,t)=>ud(e,Gu(t,Date.now()).storageCapacityBonus),np=(e,t=0)=>{let n=e.buildings[i.NaniteFactory]||0;return Math.min(1+n+t,10)},rp=e=>{let t=e[v.ComputerTechnology]||0;return Math.min(1+t,10)},ip=(e=0)=>Math.min(1+e,10),ap=(e,t,n,r)=>{let i=Au(t,(e.buildings[t]||0)+1),a=d[t];if(a.planetOnly&&e.isMoon)return{valid:!1,reason:`errors.planetOnly`};if(a.moonOnly&&!e.isMoon)return{valid:!1,reason:`errors.moonOnly`};let o=np(e,Gu(r,Date.now()).additionalBuildQueue);return e.buildQueue.filter(e=>e.type===`building`||e.type===`demolish`).length>=o?{valid:!1,reason:`errors.buildQueueFull`}:Pu(e,t)?fd(e.resources,i)?Nu(t,e,n)?{valid:!0}:{valid:!1,reason:`errors.requirementsNotMet`}:{valid:!1,reason:`errors.insufficientResources`}:{valid:!1,reason:`errors.insufficientSpace`}},op=(e,t,n)=>{let r=(e.buildings[t]||0)+1,a=Au(t,r),o=Gu(n,Date.now()),s=e.buildings[i.RoboticsFactory]||0,c=e.buildings[i.NaniteFactory]||0,l=ju(t,r,o.buildingSpeedBonus,s,c);return pd(e.resources,a),Fu(t,r,l)},sp=(e,t)=>{let n=Au(t.itemType,t.targetLevel||1);return{metal:Math.floor(n.metal*.5),crystal:Math.floor(n.crystal*.5),deuterium:Math.floor(n.deuterium*.5),darkMatter:Math.floor(n.darkMatter*.5),energy:0}},cp=(e,t)=>{let n=e.findIndex(e=>e.id===t);return n===-1?{item:null,index:-1}:{item:e[n]||null,index:n}},lp=(e,t,n)=>{if((e.buildings[t]||0)<=0)return{valid:!1,reason:`errors.buildingLevelZero`};let r=np(e,Gu(n,Date.now()).additionalBuildQueue);return e.buildQueue.filter(e=>e.type===`building`||e.type===`demolish`).length>=r?{valid:!1,reason:`errors.buildQueueFull`}:{valid:!0}},up=(e,t,n)=>{let r=e.buildings[t]||0,a=Gu(n,Date.now()),o=e.buildings[i.RoboticsFactory]||0,s=e.buildings[i.NaniteFactory]||0,c=Ru(t,r,a.buildingSpeedBonus,o,s),l=Lu(t,r);return e.resources.metal+=l.metal,e.resources.crystal+=l.crystal,e.resources.deuterium+=l.deuterium,e.resources.darkMatter+=l.darkMatter,zu(t,r,c)},dp=(e,t,n,r)=>{let i=vu(t,(n[t]||0)+1),a=rp(n);return r.length>=a?{valid:!1,reason:`errors.researchQueueFull`}:bu(t,e.buildings,n)?fd(e.resources,i)?{valid:!0}:{valid:!1,reason:`errors.insufficientResources`}:{valid:!1,reason:`errors.requirementsNotMet`}},fp=(e,t,n,r,a)=>{let o=n+1,s=vu(t,o),c=Gu(r,Date.now()),l=e.buildings[i.ResearchLab]||1,u=a[v.EnergyTechnology]||0,d=yu(t,n,c.researchSpeedBonus,l,u);return pd(e.resources,s),{queueItem:xu(t,o,d)}},pp=e=>{let t=vu(e.itemType,e.targetLevel||1);return{metal:Math.floor(t.metal*.5),crystal:Math.floor(t.crystal*.5),deuterium:Math.floor(t.deuterium*.5),darkMatter:Math.floor(t.darkMatter*.5),energy:0}},mp=e=>{let n=0;for(let r of Object.values(t)){let t=e[r]||0,i=l[r];n+=t*i.storageUsage}return n},hp=(e,t)=>{let r=n.baseStorage,a=e.buildings[i.Shipyard]||0,o=d[i.Shipyard].fleetStorageBonus||0;r+=a*o;let s=t[v.ComputerTechnology]||0,c=_[v.ComputerTechnology].fleetStorageBonus||0;return r+=s*c,r},gp=(e,t,n,r)=>{let i=mp(e.fleet),a=hp(e,r);return i+l[t].storageUsage*n<=a},_p=(e,t,n,r)=>{let i=qu(t,n);return Zu(t,e.buildings,r)?fd(e.resources,i)?gp(e,t,n,r)?{valid:!0}:{valid:!1,reason:`errors.insufficientFleetStorage`}:{valid:!1,reason:`errors.insufficientResources`}:{valid:!1,reason:`errors.requirementsNotMet`}},vp=(e,t,n,r)=>{let a=qu(t,n),o=Gu(r,Date.now()),s=e.buildings[i.RoboticsFactory]||0,c=e.buildings[i.NaniteFactory]||0,l=Yu(t,n,o.buildingSpeedBonus,s,c);return pd(e.resources,a),ed(t,n,l)},yp=(e,t,n,r)=>{let i=Ju(t,n);return Qu(t,e.buildings,r)?fd(e.resources,i)?$u(t,e.defense,n)?{valid:!0}:{valid:!1,reason:`errors.shieldDomeLimit`}:{valid:!1,reason:`errors.insufficientResources`}:{valid:!1,reason:`errors.requirementsNotMet`}},bp=(e,t,n,r)=>{let a=Ju(t,n),o=Gu(r,Date.now()),s=e.buildings[i.RoboticsFactory]||0,c=e.buildings[i.NaniteFactory]||0,l=Xu(t,n,o.buildingSpeedBonus,s,c);return pd(e.resources,a),td(t,n,l)},xp=(e,t,n,r,i=0)=>{let a=Gu(r,Date.now());if(i>=ip(a.additionalFleetSlots))return{valid:!1,reason:`errors.fleetMissionsFull`};if(!nd(e.fleet,t))return{valid:!1,reason:`errors.insufficientFleet`};let o=rd(t,a.fuelConsumptionReduction,n);return e.resources.deuterium{ad(e.fleet,t),e.resources.deuterium-=n,r&&pd(e.resources,i)};export{Od as $,ws as $t,Lf as A,We as An,Lu as At,lf as B,vn as Bn,Bl as Bt,tp as C,eo as Cn,Gu as Ct,Wf as D,wr as Dn,Wu as Dt,Kf as E,Cr as En,Bu as Et,Df as F,on as Fn,Du as Ft,ff as G,Sn as Gn,q as Gt,_f as H,jn as Hn,nu as Ht,ef as I,cn as In,vu as It,Qd as J,Ae as Jn,$s as Jt,rf as K,P as Kn,Ir as Kt,tf as L,_n as Ln,yu as Lt,xf as M,H as Mn,Eu as Mt,kf as N,mn as Nn,ku as Nt,Gf as O,Dn as On,Au as Ot,Of as P,Ge as Pn,Ou as Pt,jd as Q,ps as Qt,nf as R,sn as Rn,gu as Rt,rp as S,ba as Sn,Yu as St,qf as T,Qa as Tn,Uu as Tt,of as U,On as Un,eu as Ut,pf as V,V as Vn,Vc as Vt,mf as W,Cn as Wn,J as Wt,Kd as X,Re as Xn,ms as Xt,Vd as Y,we as Yn,bs as Yt,$d as Z,ge as Zn,Es as Zt,ap as _,aa as _n,dd as _t,xp as a,Ja as an,Cd as at,np as b,xa as bn,rd as bt,hp as c,wa as cn,vd as ct,dp as d,Ui as dn,cd as dt,X as en,Ed as et,sp as f,Bi as fn,hd as ft,lp as g,ra as gn,pd as gt,cp as h,Ka as hn,fd as ht,yp as i,ec as in,Dd as it,Hf as j,dn as jn,Mu as jt,Uf as k,Ue as kn,ju as kt,pp as l,ks as ln,md as lt,op as m,cs as mn,ld as mt,Sp as n,$ as nn,wd as nt,_p as o,qa as on,yd as ot,up as p,Wi as pn,ud as pt,vf as q,ke as qn,Cs as qt,vp as r,Ss as rn,Sd as rt,mp as s,hs as sn,_d as st,bp as t,ei as tn,Td as tt,fp as u,or as un,gd as ut,$f as v,$i as vn,od as vt,ep as w,Za as wn,Hu as wt,ip as x,ti as xn,id as xt,Qf as y,sa as yn,Xu as yt,af as z,ln as zn,uu as zt}; \ No newline at end of file diff --git a/docs/assets/index-B4KMqZ_y.js b/docs/assets/index-B4KMqZ_y.js new file mode 100644 index 0000000..fa6bd2e --- /dev/null +++ b/docs/assets/index-B4KMqZ_y.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./missileLogic-_46Nr-Ju.js","./game-logic-BBFCPVtv.js","./game-config-DRP-gbpS.js","./game-i18n-BC9uiVvf.js","./rolldown-runtime-CIDIeb-o.js","./OverviewView-D7lWE9IR.js","./vendor-others-Bce0hM6h.js","./vendor-others-BMPyaZWq.css","./vendor-reka-ui-DR3m_AkV.js","./vendor-vueuse-Djj-oRw9.js","./vendor-crypto-CQM8pryk.js","./vendor-utils-BlvnUqQX.js","./vendor-pinia-L_8CmDWM.js","./CardDescription-DduF5EVY.js","./TabsTrigger-BnZOhHbD.js","./useGameConfig-DLqfPHtW.js","./BuildingsView-BwpaZTPf.js","./vendor-icons-Ccm2_GPI.js","./CardUnlockOverlay-CspXlcWR.js","./ResearchView-BoGXU7Gy.js","./vendor-vue-router-0mfLVB6Y.js","./UnlockRequirement-DJ9dN5JL.js","./ShipyardView-DRH89hEQ.js","./DefenseView-aCDrCjw8.js","./FleetView-BzElc0kX.js","./OfficersView-CXh701uW.js","./BattleSimulatorView-BMgbGRUI.js","./BattleReportDialog-BNULWr3T.js","./TooltipProvider-Cspoy8HK.js","./MessagesView-w53RKU-r.js","./GalaxyView-LGfalWWd.js","./SelectValue-8cT4Hu-1.js","./DiplomacyView-BZEvKDfM.js","./SettingsView-CqA4xeYn.js","./GMView-BMhV90vD.js","./empty-Ds0PR_Pd.js","./NotFoundView-BqreQe6E.js"])))=>i.map(i=>d[i]); +import{i as e}from"./rolldown-runtime-CIDIeb-o.js";import{$t as t,An as n,Bt as r,C as i,Ct as a,D as o,Dt as s,E as c,En as l,Et as u,F as ee,Fn as te,Gt as d,I as ne,Jt as re,K as f,Kt as p,L as ie,M as ae,N as oe,Nt as se,O as ce,On as m,P as le,Pt as ue,Q as de,Qt as h,R as fe,Rn as g,T as pe,Tn as me,Tt as he,U as ge,Ut as _e,Wn as ve,Wt as ye,Xt as be,Y as xe,Yn as _,Zt as Se,_t as Ce,ar as v,bt as we,cn as y,cr as b,ct as Te,dn as x,fn as S,ft as Ee,hn as C,ht as De,kn as w,kt as Oe,ln as T,lt as E,mt as ke,on as D,or as O,pn as k,pt as Ae,qt as je,rn as A,rr as j,sn as M,sr as Me,un as N,ut as Ne,w as Pe,wn as Fe,xn as P,yt as Ie,z as Le,zn as Re,zt as ze}from"./game-logic-BBFCPVtv.js";import{n as Be,r as Ve,t as He}from"./vendor-pinia-L_8CmDWM.js";import{i as Ue,n as We,r as Ge,t as Ke}from"./vendor-vue-router-0mfLVB6Y.js";import{t as qe}from"./vendor-crypto-CQM8pryk.js";import{n as Je,r as Ye,t as Xe}from"./game-i18n-BC9uiVvf.js";import{B as Ze,l as F,n as Qe,r as $e,t as et,z as tt}from"./vendor-others-Bce0hM6h.js";import{$ as I,A as nt,B as L,C as rt,G as R,H as it,J as at,K as z,L as ot,M as st,N as ct,P as lt,Q as ut,R as dt,U as ft,V as pt,W as mt,X as ht,Y as gt,Z as _t,a as vt,et as yt,i as bt,j as xt,n as St,o as Ct,q as wt,r as Tt,t as Et,tt as Dt,w as Ot,z as kt}from"./vendor-reka-ui-DR3m_AkV.js";import{n as At}from"./vendor-utils-BlvnUqQX.js";import{i as jt,n as Mt,r as Nt,t as Pt}from"./vendor-vueuse-Djj-oRw9.js";import{A as Ft,C as It,E as Lt,G as Rt,H as zt,I as Bt,K as Vt,M as Ht,N as Ut,O as Wt,P as Gt,Q as Kt,R as qt,T as Jt,W as Yt,X as Xt,d as Zt,g as Qt,h as $t,i as en,j as tn,l as nn,m as rn,n as an,p as on,q as sn,r as cn,s as ln,t as un,u as dn,v as fn,w as pn,z as mn}from"./vendor-icons-Ccm2_GPI.js";import{l as hn,m as B,r as gn}from"./game-config-DRP-gbpS.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),``+new URL(`logo-Cz0cNqhe.svg`,import.meta.url).href;var V={name:`ogame-vue-ts`,title:`OGame-Vue-Ts`,qq:`920930589`,id:`2zBlHPUA6E`,author:{name:`setube`,email:`1962257451@qq.com`},private:!0,version:`1.2.5`,buildDate:`2025/12/15 19:58:04`,main:`dist-electron/main.js`,type:`module`,scripts:{dev:`vite --port 25121`,build:`vue-tsc -b && vite build && node update-build-date.js`,preview:`vite preview`,"build:server":`pnpm run build && go build`,"build:electron":`cross-env ELECTRON_BUILD=1 pnpm run build && electron-builder`},dependencies:{"@tailwindcss/vite":`^4.1.17`,"@tanstack/vue-table":`^8.21.3`,"@vueuse/core":`^14.1.0`,"class-variance-authority":`^0.7.1`,clsx:`^2.1.1`,"crypto-js":`^4.2.0`,"file-saver":`^2.0.5`,finalhandler:`^2.1.1`,"lucide-vue-next":`^0.556.0`,marked:`^17.0.1`,pinia:`^3.0.4`,"pinia-plugin-persistedstate":`^4.7.1`,"reka-ui":`^2.6.1`,"serve-static":`^2.2.0`,"tailwind-merge":`^3.4.0`,tailwindcss:`^4.1.17`,vue:`^3.5.24`,"vue-router":`4`,"vue-sonner":`^2.0.9`},devDependencies:{"@types/crypto-js":`^4.2.2`,"@types/file-saver":`^2.0.7`,"@types/node":`^24.10.2`,"@vitejs/plugin-vue":`^6.0.1`,"@vue/tsconfig":`^0.8.1`,"cross-env":`^7.0.3`,electron:`^39.2.7`,"electron-builder":`^26.0.12`,"electron-vite":`^5.0.0`,"tw-animate-css":`^1.4.0`,typescript:`~5.9.3`,vite:`npm:rolldown-vite@7.2.5`,"vite-plugin-electron":`^0.29.0`,"vite-plugin-electron-renderer":`^0.14.6`,"vue-tsc":`^3.1.4`},pnpm:{overrides:{vite:`npm:rolldown-vite@7.2.5`},onlyBuiltDependencies:[`electron-winstaller`,`esbuild`,`vue-demi`],ignoredBuiltDependencies:[`electron`]},packageManager:`pnpm@10.13.1+sha512.37ebf1a5c7a30d5fabe0c5df44ee8da4c965ca0c5af3dbab28c3a1681b70a256218d05c81c9c0dcf767ef6b8551eb5b960042b9ed4300c59242336377e01cfad`,build:{appId:`games.wenzi.ogame`,productName:`OGame`,directories:{output:`pkg`},win:{target:`nsis`,icon:`public/favicon.ico`,verifyUpdateCodeSignature:!1,artifactName:"${productName}-Setup.${ext}"},mac:{target:[`dmg`,`zip`],artifactName:"${productName}-mac.${ext}"},linux:{target:[`AppImage`,`deb`],artifactName:"${productName}-linux.${ext}"}}},_n=e(qe(),1);const vn=e=>{try{let t=JSON.stringify(e);return _n.default.AES.encrypt(t,V.name).toString()}catch(e){console.error(e)}return``},yn=e=>{try{let t=_n.default.AES.decrypt(e,V.name).toString(_n.default.enc.Utf8);return JSON.parse(t)}catch(e){return console.error(e),{}}},bn=Ve(`game`,{state:()=>({gameTime:Date.now(),isPaused:!1,gameSpeed:1,player:{id:`player1`,name:``,planets:[],technologies:{},officers:{},researchQueue:[],fleetMissions:[],missileAttacks:[],battleReports:[],spyReports:[],spiedNotifications:[],npcActivityNotifications:[],missionReports:[],incomingFleetAlerts:[],giftNotifications:[],giftRejectedNotifications:[],points:0,isGMEnabled:!1,lastVersionCheckTime:0},currentPlanetId:``,isDark:``,locale:`zh-CN`}),getters:{currentPlanet(){return this.player.planets.find(e=>e.id===this.currentPlanetId)},getMoonForPlanet(){return e=>this.player.planets.find(t=>t.parentPlanetId===e&&t.isMoon)}},persist:{key:V.name,storage:localStorage,serializer:{serialize:e=>vn(e),deserialize:e=>yn(e)}}}),xn=Ve(`universe`,{state:()=>({planets:{},debrisFields:{}}),persist:{key:`${V.name}-universe`,storage:localStorage,serializer:{serialize:e=>vn(e),deserialize:e=>yn(e)}}}),Sn=Ve(`npc`,{state:()=>({npcs:[],lastGrowthCheck:{}}),persist:{key:`${V.name}-npcs`,storage:localStorage,serializer:{serialize:e=>vn(e),deserialize:e=>yn(e)}}});var H=_(!1);const Cn=()=>{let e=bn();Fe(()=>{e.isDark?H.value=e.isDark===`dark`:(H.value=window.matchMedia(`(prefers-color-scheme: dark)`).matches,e.isDark=H.value?`dark`:`light`),t()}),te(H,()=>{t(),e.isDark=H.value?`dark`:`light`});let t=()=>{H.value?document.documentElement.classList.add(`dark`):document.documentElement.classList.remove(`dark`)};return{isDark:H,toggleTheme:()=>{H.value=!H.value}}},wn=()=>{let e=bn(),t=D(()=>e.locale),n=D(()=>Ye[t.value]);return{t:(e,t)=>{let r=e.split(`.`),i=n.value;for(let t of r)if(i&&typeof i==`object`&&t in i)i=i[t];else return e;let a=typeof i==`string`?i:e;return t&&Object.entries(t).forEach(([e,t])=>{a=a.replace(RegExp(`\\{${e}\\}`,`g`),String(t))}),a},locale:t,setLocale:t=>{e.locale=t},messages:n}},U=(...e)=>At(Ze(e));var W=k({__name:`Button`,props:{variant:{},size:{},class:{},asChild:{type:Boolean},as:{default:`button`}},setup(e){let t=e;return(n,r)=>(l(),y(j(ut),{"data-slot":`button`,as:e.as,"as-child":e.asChild,class:v(j(U)(j(Tn)({variant:e.variant,size:e.size}),t.class))},{default:g(()=>[w(n.$slots,`default`)]),_:3},8,[`as`,`as-child`,`class`]))}});const Tn=tt(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60`,outline:`border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,sm:`h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5`,lg:`h-10 rounded-md px-6 has-[>svg]:px-4`,icon:`size-9`,"icon-sm":`size-8`,"icon-lg":`size-10`}},defaultVariants:{variant:`default`,size:`default`}});var En=k({__name:`Badge`,props:{asChild:{type:Boolean},as:{},variant:{},class:{}},setup(e){let t=e,n=F(t,`class`);return(r,i)=>(l(),y(j(ut),P({"data-slot":`badge`,class:j(U)(j(Dn)({variant:e.variant}),t.class)},j(n)),{default:g(()=>[w(r.$slots,`default`)]),_:3},16,[`class`]))}});const Dn=tt(`inline-flex items-center justify-center rounded-sm border h-5 min-w-5 px-1 text-xs font-medium tabular-nums select-none w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90`,secondary:`border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90`,destructive:`border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60`,outline:`text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground`}},defaultVariants:{variant:`default`}});var On=k({__name:`Progress`,props:{modelValue:{default:0},max:{},getValueLabel:{},getValueText:{},asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=F(t,`class`);return(e,r)=>(l(),y(j(Ot),P({"data-slot":`progress`},j(n),{class:j(U)(`bg-primary/20 relative h-2 w-full overflow-hidden rounded-full`,t.class)}),{default:g(()=>[S(j(rt),{"data-slot":`progress-indicator`,class:`bg-primary h-full w-full flex-1 transition-all`,style:Me(`transform: translateX(-${100-(t.modelValue??0)}%);`)},null,8,[`style`])]),_:1},16,[`class`]))}}),kn=k({__name:`Popover`,props:{defaultOpen:{type:Boolean},open:{type:Boolean},modal:{type:Boolean}},emits:[`update:open`],setup(e,{emit:t}){let n=I(e,t);return(e,t)=>(l(),y(j(lt),P({"data-slot":`popover`},j(n)),{default:g(t=>[w(e.$slots,`default`,O(C(t)))]),_:3},16))}}),An=k({inheritAttrs:!1,__name:`PopoverContent`,props:{forceMount:{type:Boolean},side:{},sideOffset:{default:4},sideFlip:{type:Boolean},align:{default:`center`},alignOffset:{},alignFlip:{type:Boolean},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},disableUpdateOnLayoutShift:{type:Boolean},prioritizePosition:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},disableOutsidePointerEvents:{type:Boolean},class:{}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=I(F(n,`class`),r);return(e,t)=>(l(),y(j(st),null,{default:g(()=>[S(j(ct),P({"data-slot":`popover-content`},{...e.$attrs,...j(i)},{class:j(U)(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md origin-(--reka-popover-content-transform-origin) outline-hidden`,n.class)}),{default:g(()=>[w(e.$slots,`default`)]),_:3},16,[`class`])]),_:3}))}}),jn=k({__name:`PopoverTrigger`,props:{asChild:{type:Boolean},as:{}},setup(e){let t=e;return(e,n)=>(l(),y(j(xt),P({"data-slot":`popover-trigger`},t),{default:g(()=>[w(e.$slots,`default`)]),_:3},16))}}),Mn={key:0,class:`bg-destructive/10 border-b border-destructive/20`},Nn={class:`px-4 sm:px-6 py-2 space-y-2`},Pn={class:`flex items-center gap-2 flex-1 min-w-0`},Fn={class:`flex-1 min-w-0`},In={class:`text-sm font-semibold text-destructive truncate`},Ln={class:`text-xs text-muted-foreground truncate`},Rn={class:`flex items-center gap-2 flex-shrink-0`},zn={class:`text-right`},Bn={class:`text-xs font-mono text-destructive`},Vn={class:`text-[10px] text-muted-foreground`},Hn=k({__name:`IncomingFleetAlerts`,props:{alerts:{}},emits:[`markAsRead`],setup(e,{emit:t}){let n=t,{t:r}=wn(),i=_(Date.now()),a=null;Fe(()=>{a=setInterval(()=>{i.value=Date.now()},1e3)}),me(()=>{a&&clearInterval(a)});let o=e=>{let t=Math.max(0,e-i.value),n=Math.floor(t/1e3%60),r=Math.floor(t/(1e3*60)%60),a=Math.floor(t/(1e3*60*60));return a>0?`${a}:${String(r).padStart(2,`0`)}:${String(n).padStart(2,`0`)}`:`${r}:${String(n).padStart(2,`0`)}`},s=e=>new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}),c=e=>{n(`markAsRead`,e)};return(t,n)=>e.alerts.length>0?(l(),N(`div`,Mn,[M(`div`,Nn,[(l(!0),N(A,null,m(e.alerts,e=>(l(),N(`div`,{key:e.id,class:`flex items-center justify-between gap-3 bg-destructive/5 rounded-lg px-3 py-2 border border-destructive/20`},[M(`div`,Pn,[S(j(ln),{class:`h-5 w-5 text-destructive flex-shrink-0 animate-pulse`}),M(`div`,Fn,[M(`p`,In,[e.missionType===`spy`?(l(),N(A,{key:0},[x(b(j(r)(`alerts.npcSpyIncoming`)),1)],64)):e.missionType===`attack`?(l(),N(A,{key:1},[x(b(j(r)(`alerts.npcAttackIncoming`)),1)],64)):(l(),N(A,{key:2},[x(b(j(r)(`alerts.npcFleetIncoming`)),1)],64))]),M(`p`,Ln,[x(b(e.npcName)+` → `+b(e.targetPlanetName)+` `,1),e.missionType===`attack`?(l(),N(A,{key:0},[x(`(`+b(e.fleetSize)+` `+b(j(r)(`alerts.ships`))+`)`,1)],64)):T(``,!0)])])]),M(`div`,Rn,[M(`div`,zn,[M(`p`,Bn,b(o(e.arrivalTime)),1),M(`p`,Vn,b(s(e.arrivalTime)),1)]),S(j(W),{onClick:t=>c(e),variant:`ghost`,size:`sm`,class:`h-6 w-6 p-0`},{default:g(()=>[S(j(an),{class:`h-3 w-3`})]),_:1},8,[`onClick`])])]))),128))])])):T(``,!0)}}),Un=k({__name:`Sheet`,props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean}},emits:[`update:open`],setup(e,{emit:t}){let n=I(e,t);return(e,t)=>(l(),y(j(_t),P({"data-slot":`sheet`},j(n)),{default:g(t=>[w(e.$slots,`default`,O(C(t)))]),_:3},16))}}),Wn=k({__name:`SheetOverlay`,props:{forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=F(t,`class`);return(e,r)=>(l(),y(j(wt),P({"data-slot":`sheet-overlay`,class:j(U)(`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80`,t.class)},j(n)),{default:g(()=>[w(e.$slots,`default`)]),_:3},16,[`class`]))}}),Gn=k({inheritAttrs:!1,__name:`SheetContent`,props:{class:{},side:{default:`right`},forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=I(F(n,`class`,`side`),r);return(t,r)=>(l(),y(j(z),null,{default:g(()=>[S(Wn),S(j(gt),P({"data-slot":`sheet-content`,class:j(U)(`bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500`,e.side===`right`&&`data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm`,e.side===`left`&&`data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm`,e.side===`top`&&`data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b`,e.side===`bottom`&&`data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t`,n.class)},{...t.$attrs,...j(i)}),{default:g(()=>[w(t.$slots,`default`),S(j(ht),{class:`ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none`},{default:g(()=>[S(j(an),{class:`size-4`}),r[0]||=M(`span`,{class:`sr-only`},`Close`,-1)]),_:1})]),_:3},16,[`class`])]),_:3}))}}),Kn=k({__name:`SheetDescription`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=F(t,`class`);return(e,r)=>(l(),y(j(at),P({"data-slot":`sheet-description`,class:j(U)(`text-muted-foreground text-sm`,t.class)},j(n)),{default:g(()=>[w(e.$slots,`default`)]),_:3},16,[`class`]))}}),qn=k({__name:`SheetHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`div`,{"data-slot":`sheet-header`,class:v(j(U)(`flex flex-col gap-1.5 p-4`,t.class))},[w(e.$slots,`default`)],2))}}),Jn=k({__name:`SheetTitle`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=F(t,`class`);return(e,r)=>(l(),y(j(R),P({"data-slot":`sheet-title`,class:j(U)(`text-foreground font-semibold`,t.class)},j(n)),{default:g(()=>[w(e.$slots,`default`)]),_:3},16,[`class`]))}});const Yn=`sidebar_state`,[Xn,Zn]=Dt(`Sidebar`);var Qn={class:`flex h-full w-full flex-col`},$n=[`data-state`,`data-collapsible`,`data-variant`,`data-side`],er={"data-sidebar":`sidebar`,class:`bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm`},tr=k({inheritAttrs:!1,__name:`Sidebar`,props:{side:{default:`left`},variant:{default:`sidebar`},collapsible:{default:`offcanvas`},class:{}},setup(e){let t=e,{isMobile:n,state:r,openMobile:i,setOpenMobile:a}=Xn();return(o,s)=>e.collapsible===`none`?(l(),N(`div`,P({key:0,"data-slot":`sidebar`,class:j(U)(`bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col`,t.class)},o.$attrs),[w(o.$slots,`default`)],16)):j(n)?(l(),y(j(Un),P({key:1,open:j(i)},o.$attrs,{"onUpdate:open":j(a)}),{default:g(()=>[S(j(Gn),{"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,side:e.side,class:`bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden`,style:Me({"--sidebar-width":j(`18rem`)})},{default:g(()=>[S(qn,{class:`sr-only`},{default:g(()=>[S(Jn,null,{default:g(()=>[...s[0]||=[x(`Sidebar`,-1)]]),_:1}),S(Kn,null,{default:g(()=>[...s[1]||=[x(`Displays the mobile sidebar.`,-1)]]),_:1})]),_:1}),M(`div`,Qn,[w(o.$slots,`default`)])]),_:3},8,[`side`,`style`])]),_:3},16,[`open`,`onUpdate:open`])):(l(),N(`div`,{key:2,class:`group peer text-sidebar-foreground hidden md:block`,"data-slot":`sidebar`,"data-state":j(r),"data-collapsible":j(r)===`collapsed`?e.collapsible:``,"data-variant":e.variant,"data-side":e.side},[M(`div`,{class:v(j(U)(`relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear`,`group-data-[collapsible=offcanvas]:w-0`,`group-data-[side=right]:rotate-180`,e.variant===`floating`||e.variant===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`))},null,2),M(`div`,P({class:j(U)(`fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex`,e.side===`left`?`left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]`:`right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]`,e.variant===`floating`||e.variant===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l`,t.class)},o.$attrs),[M(`div`,er,[w(o.$slots,`default`)])],16)],8,$n))}}),nr=k({__name:`SidebarContent`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,class:v(j(U)(`flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden`,t.class))},[w(e.$slots,`default`)],2))}}),rr=k({__name:`SidebarFooter`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,class:v(j(U)(`flex flex-col gap-2 p-2`,t.class))},[w(e.$slots,`default`)],2))}}),ir=k({__name:`SidebarGroup`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,class:v(j(U)(`relative flex w-full min-w-0 flex-col p-2`,t.class))},[w(e.$slots,`default`)],2))}}),ar=k({__name:`SidebarHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`div`,{"data-slot":`sidebar-header`,"data-sidebar":`header`,class:v(j(U)(`flex flex-col gap-2 p-2`,t.class))},[w(e.$slots,`default`)],2))}}),or=k({__name:`Input`,props:{defaultValue:{},modelValue:{},class:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,r=jt(n,`modelValue`,t,{passive:!0,defaultValue:n.defaultValue});return(e,t)=>Re((l(),N(`input`,{"onUpdate:modelValue":t[0]||=e=>ve(r)?r.value=e:null,"data-slot":`input`,class:v(j(U)(`file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm`,`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,`aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,n.class))},null,2)),[[h,j(r)]])}}),sr=k({__name:`SidebarInset`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`main`,{"data-slot":`sidebar-inset`,class:v(j(U)(`bg-background relative flex w-full flex-1 flex-col`,`md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2`,t.class))},[w(e.$slots,`default`)],2))}}),cr=k({__name:`SidebarMenu`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,class:v(j(U)(`flex w-full min-w-0 flex-col gap-1`,t.class))},[w(e.$slots,`default`)],2))}}),lr=k({__name:`SidebarMenuBadge`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`div`,{"data-slot":`sidebar-menu-badge`,"data-sidebar":`menu-badge`,class:v(j(U)(`text-sidebar-foreground pointer-events-none flex h-5 min-w-5 items-center justify-center rounded-sm px-1 text-xs font-medium tabular-nums select-none`,`peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground`,`absolute right-1`,`peer-data-[size=sm]/menu-button:top-1`,`peer-data-[size=default]/menu-button:top-1.5`,`peer-data-[size=lg]/menu-button:top-2.5`,`group-data-[collapsible=icon]:absolute group-data-[collapsible=icon]:right-0 group-data-[collapsible=icon]:-top-1 group-data-[collapsible=icon]:h-4 group-data-[collapsible=icon]:min-w-4`,t.class))},[w(e.$slots,`default`)],2))}}),ur=k({__name:`Tooltip`,props:{defaultOpen:{type:Boolean},open:{type:Boolean},delayDuration:{},disableHoverableContent:{type:Boolean},disableClosingTrigger:{type:Boolean},disabled:{type:Boolean},ignoreNonKeyboardFocus:{type:Boolean}},emits:[`update:open`],setup(e,{emit:t}){let n=I(e,t);return(e,t)=>(l(),y(j(bt),P({"data-slot":`tooltip`},j(n)),{default:g(t=>[w(e.$slots,`default`,O(C(t)))]),_:3},16))}}),dr=k({inheritAttrs:!1,__name:`TooltipContent`,props:{forceMount:{type:Boolean},ariaLabel:{},asChild:{type:Boolean},as:{},side:{},sideOffset:{default:4},align:{},alignOffset:{},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},class:{}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let n=e,r=t,i=I(F(n,`class`),r);return(e,t)=>(l(),y(j(St),null,{default:g(()=>[S(j(Tt),P({"data-slot":`tooltip-content`},{...j(i),...e.$attrs},{class:j(U)(`bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance`,n.class)}),{default:g(()=>[w(e.$slots,`default`),S(j(Ct),{class:`bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]`})]),_:3},16,[`class`])]),_:3}))}}),fr=k({__name:`TooltipTrigger`,props:{reference:{},asChild:{type:Boolean},as:{}},setup(e){let t=e;return(e,n)=>(l(),y(j(Et),P({"data-slot":`tooltip-trigger`},t),{default:g(()=>[w(e.$slots,`default`)]),_:3},16))}}),pr=k({__name:`SidebarMenuButtonChild`,props:{variant:{default:`default`},size:{default:`default`},isActive:{type:Boolean},class:{},asChild:{type:Boolean},as:{default:`button`}},setup(e){let t=e;return(n,r)=>(l(),y(j(ut),P({"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":e.size,"data-active":e.isActive,class:j(U)(j(vr)({variant:e.variant,size:e.size}),t.class),as:e.as,"as-child":e.asChild},n.$attrs),{default:g(()=>[w(n.$slots,`default`)]),_:3},16,[`data-size`,`data-active`,`class`,`as`,`as-child`]))}}),mr=k({inheritAttrs:!1,__name:`SidebarMenuButton`,props:{variant:{default:`default`},size:{default:`default`},isActive:{type:Boolean},class:{},asChild:{type:Boolean},as:{default:`button`},tooltip:{}},setup(e){let t=e,{isMobile:r,state:i}=Xn(),a=F(t,`tooltip`);return(t,o)=>e.tooltip?(l(),y(j(ur),{key:1},{default:g(()=>[S(j(fr),{"as-child":``},{default:g(()=>[S(pr,O(C({...j(a),...t.$attrs})),{default:g(()=>[w(t.$slots,`default`)]),_:3},16)]),_:3}),S(j(dr),{side:`right`,align:`center`,hidden:j(i)!==`collapsed`||j(r)},{default:g(()=>[typeof e.tooltip==`string`?(l(),N(A,{key:0},[x(b(e.tooltip),1)],64)):(l(),y(n(e.tooltip),{key:1}))]),_:1},8,[`hidden`])]),_:3})):(l(),y(pr,O(P({key:0},{...j(a),...t.$attrs})),{default:g(()=>[w(t.$slots,`default`)]),_:3},16))}}),hr=k({__name:`SidebarMenuItem`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,class:v(j(U)(`group/menu-item relative`,t.class))},[w(e.$slots,`default`)],2))}}),gr=k({__name:`SidebarProvider`,props:{defaultOpen:{type:Boolean,default:!Pt?.cookie.includes(`${Yn}=false`)},open:{type:Boolean,default:void 0},class:{}},emits:[`update:open`],setup(e,{emit:t}){let n=e,r=t,i=Nt(`(max-width: 768px)`),a=_(!1),o=jt(n,`open`,r,{defaultValue:n.defaultOpen??!1,passive:n.open===void 0}),s=e=>{o.value=e,document.cookie=`${Yn}=${o.value}; path=/; max-age=604800`},c=e=>{a.value=e},u=()=>i.value?c(!a.value):s(!o.value);return Mt(`keydown`,e=>{e.key===`b`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),u())}),Zn({state:D(()=>o.value?`expanded`:`collapsed`),open:o,setOpen:s,isMobile:i,openMobile:a,setOpenMobile:c,toggleSidebar:u}),(e,t)=>(l(),y(j(vt),{"delay-duration":0},{default:g(()=>[M(`div`,P({"data-slot":`sidebar-wrapper`,style:{"--sidebar-width":j(`16rem`),"--sidebar-width-icon":j(`3rem`)},class:j(U)(`group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full`,n.class)},e.$attrs),[w(e.$slots,`default`)],16)]),_:3}))}}),_r=k({__name:`SidebarTrigger`,props:{class:{}},setup(e){let t=e,{toggleSidebar:n}=Xn();return(e,r)=>(l(),y(j(W),{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,size:`icon`,class:v(j(U)(`h-7 w-7`,t.class)),onClick:j(n)},{default:g(()=>[S(j(It)),r[0]||=M(`span`,{class:`sr-only`},`Toggle Sidebar`,-1)]),_:1},8,[`class`,`onClick`]))}});const vr=tt(`peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0`,{variants:{variant:{default:`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-8 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}});var yr=k({__name:`ResourceIcon`,props:{type:{},size:{default:`md`}},setup(e){let t={metal:`bg-gradient-to-br from-slate-400 to-slate-600`,crystal:`bg-gradient-to-br from-cyan-400 to-blue-600`,deuterium:`bg-gradient-to-br from-green-400 to-emerald-600`,darkMatter:`bg-gradient-to-br from-purple-600 to-indigo-900`,energy:`bg-gradient-to-br from-yellow-400 to-orange-500`},n={sm:`w-3 h-3`,md:`w-4 h-4`,lg:`w-5 h-5`};return(r,i)=>(l(),N(`div`,{class:v([t[e.type],n[e.size],`rounded shadow-sm`])},null,2))}}),br=k({__name:`AlertDialog`,props:{open:{type:Boolean},defaultOpen:{type:Boolean}},emits:[`update:open`],setup(e,{emit:t}){let n=I(e,t);return(e,t)=>(l(),y(j(dt),P({"data-slot":`alert-dialog`},j(n)),{default:g(t=>[w(e.$slots,`default`,O(C(t)))]),_:3},16))}}),xr=k({__name:`AlertDialogAction`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=F(t,`class`);return(e,r)=>(l(),y(j(mt),P(j(n),{class:j(U)(j(Tn)(),t.class)}),{default:g(()=>[w(e.$slots,`default`)]),_:3},16,[`class`]))}}),Sr=k({__name:`AlertDialogCancel`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=F(t,`class`);return(e,r)=>(l(),y(j(it),P(j(n),{class:j(U)(j(Tn)({variant:`outline`}),`mt-2 sm:mt-0`,t.class)}),{default:g(()=>[w(e.$slots,`default`)]),_:3},16,[`class`]))}}),Cr=k({inheritAttrs:!1,__name:`AlertDialogContent`,props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=I(F(n,`class`),r);return(e,t)=>(l(),y(j(kt),null,{default:g(()=>[S(j(L),{"data-slot":`alert-dialog-overlay`,class:`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80`}),S(j(ft),P({"data-slot":`alert-dialog-content`},{...e.$attrs,...j(i)},{class:j(U)(`bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg`,n.class)}),{default:g(()=>[w(e.$slots,`default`)]),_:3},16,[`class`])]),_:3}))}}),wr=k({__name:`AlertDialogDescription`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=F(t,`class`);return(e,r)=>(l(),y(j(pt),P({"data-slot":`alert-dialog-description`},j(n),{class:j(U)(`text-muted-foreground text-sm`,t.class)}),{default:g(()=>[w(e.$slots,`default`)]),_:3},16,[`class`]))}}),Tr=k({__name:`AlertDialogFooter`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`div`,{"data-slot":`alert-dialog-footer`,class:v(j(U)(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,t.class))},[w(e.$slots,`default`)],2))}}),Er=k({__name:`AlertDialogHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`div`,{"data-slot":`alert-dialog-header`,class:v(j(U)(`flex flex-col gap-2 text-center sm:text-left`,t.class))},[w(e.$slots,`default`)],2))}}),Dr=k({__name:`AlertDialogTitle`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=F(t,`class`);return(e,r)=>(l(),y(j(ot),P({"data-slot":`alert-dialog-title`},j(n),{class:j(U)(`text-lg font-semibold`,t.class)}),{default:g(()=>[w(e.$slots,`default`)]),_:3},16,[`class`]))}}),Or=k({__name:`Dialog`,props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean}},emits:[`update:open`],setup(e,{emit:t}){let n=I(e,t);return(e,t)=>(l(),y(j(_t),P({"data-slot":`dialog`},j(n)),{default:g(t=>[w(e.$slots,`default`,O(C(t)))]),_:3},16))}}),kr=k({__name:`DialogOverlay`,props:{forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=F(t,`class`);return(e,r)=>(l(),y(j(wt),P({"data-slot":`dialog-overlay`},j(n),{class:j(U)(`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80`,t.class)}),{default:g(()=>[w(e.$slots,`default`)]),_:3},16,[`class`]))}}),Ar=k({__name:`DialogDescription`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=yt(F(t,`class`));return(e,r)=>(l(),y(j(at),P({"data-slot":`dialog-description`},j(n),{class:j(U)(`text-muted-foreground text-sm`,t.class)}),{default:g(()=>[w(e.$slots,`default`)]),_:3},16,[`class`]))}}),jr=k({__name:`DialogFooter`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`div`,{"data-slot":`dialog-footer`,class:v(j(U)(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,t.class))},[w(e.$slots,`default`)],2))}}),Mr=k({__name:`DialogHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`div`,{"data-slot":`dialog-header`,class:v(j(U)(`flex flex-col gap-2 text-center sm:text-left`,t.class))},[w(e.$slots,`default`)],2))}}),Nr=k({inheritAttrs:!1,__name:`DialogScrollContent`,props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=I(F(n,`class`),r);return(e,t)=>(l(),y(j(z),null,{default:g(()=>[S(j(wt),{class:`fixed inset-0 z-50 grid place-items-center overflow-y-auto bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`},{default:g(()=>[S(j(gt),P({class:j(U)(`relative z-50 grid w-full max-w-lg my-8 gap-4 border border-border bg-background p-6 shadow-lg duration-200 sm:rounded-lg md:w-full`,n.class)},{...e.$attrs,...j(i)},{onPointerDownOutside:t[0]||=e=>{let t=e.detail.originalEvent,n=t.target;(t.offsetX>n.clientWidth||t.offsetY>n.clientHeight)&&e.preventDefault()}}),{default:g(()=>[w(e.$slots,`default`),S(j(ht),{class:`absolute top-4 right-4 p-0.5 transition-colors rounded-md hover:bg-secondary`},{default:g(()=>[S(j(an),{class:`w-4 h-4`}),t[1]||=M(`span`,{class:`sr-only`},`Close`,-1)]),_:1})]),_:3},16,[`class`])]),_:3})]),_:3}))}}),Pr={class:`shrink-0 px-4 pt-4 pb-3 sm:px-6 sm:pt-6 sm:pb-4 border-b`},Fr={class:`overflow-y-auto px-4 py-3 sm:px-6 sm:py-4`},Ir={key:0,class:`shrink-0 px-4 pb-4 pt-3 sm:px-6 sm:pb-6 sm:pt-4 border-t`},Lr=k({inheritAttrs:!1,__name:`ScrollableDialogContent`,props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},containerClass:{},showCloseButton:{type:Boolean,default:!0}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=I(F(n,`containerClass`),r);return(t,n)=>(l(),y(j(z),null,{default:g(()=>[S(kr),S(j(gt),P({"data-slot":`scrollable-dialog-content`},{...t.$attrs,...j(i)},{class:j(U)(`bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 w-[calc(100vw-3rem)] translate-x-[-50%] translate-y-[-50%] rounded-lg border shadow-lg duration-200 sm:w-auto sm:min-w-[764px] flex flex-col p-0`,e.containerClass)}),{default:g(()=>[M(`div`,Pr,[w(t.$slots,`header`)]),M(`div`,Fr,[w(t.$slots,`default`)]),t.$slots.footer?(l(),N(`div`,Ir,[w(t.$slots,`footer`)])):T(``,!0),e.showCloseButton?(l(),y(j(ht),{key:1,"data-slot":`dialog-close`,class:`ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 z-10`},{default:g(()=>[S(j(an)),n[0]||=M(`span`,{class:`sr-only`},`Close`,-1)]),_:1})):T(``,!0)]),_:3},16,[`class`])]),_:3}))}}),Rr=k({__name:`DialogTitle`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=yt(F(t,`class`));return(e,r)=>(l(),y(j(R),P({"data-slot":`dialog-title`},j(n),{class:j(U)(`text-lg leading-none font-semibold`,t.class)}),{default:g(()=>[w(e.$slots,`default`)]),_:3},16,[`class`]))}});const zr=Ve(`detailDialog`,{state:()=>({isOpen:!1,type:null,itemType:null,currentLevel:void 0}),actions:{openBuilding(e,t){this.isOpen=!0,this.type=`building`,this.itemType=e,this.currentLevel=t},openTechnology(e,t){this.isOpen=!0,this.type=`technology`,this.itemType=e,this.currentLevel=t},openShip(e){this.isOpen=!0,this.type=`ship`,this.itemType=e,this.currentLevel=void 0},openDefense(e){this.isOpen=!0,this.type=`defense`,this.itemType=e,this.currentLevel=void 0},close(){this.isOpen=!1,this.type=null,this.itemType=null,this.currentLevel=void 0}}});var Br={"data-slot":`table-container`,class:`relative w-full overflow-auto`},Vr=k({__name:`Table`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`div`,Br,[M(`table`,{"data-slot":`table`,class:v(j(U)(`w-full caption-bottom text-sm`,t.class))},[w(e.$slots,`default`)],2)]))}}),Hr=k({__name:`TableBody`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`tbody`,{"data-slot":`table-body`,class:v(j(U)(`[&_tr:last-child]:border-0`,t.class))},[w(e.$slots,`default`)],2))}}),G=k({__name:`TableCell`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`td`,{"data-slot":`table-cell`,class:v(j(U)(`p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,t.class))},[w(e.$slots,`default`)],2))}}),Ur=k({__name:`TableRow`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`tr`,{"data-slot":`table-row`,class:v(j(U)(`hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors`,t.class))},[w(e.$slots,`default`)],2))}}),K=k({__name:`TableHead`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`th`,{"data-slot":`table-head`,class:v(j(U)(`text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,t.class))},[w(e.$slots,`default`)],2))}}),Wr=k({__name:`TableHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`thead`,{"data-slot":`table-header`,class:v(j(U)(`[&_tr]:border-b`,t.class))},[w(e.$slots,`default`)],2))}}),q=k({__name:`Card`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`div`,{"data-slot":`card`,class:v(j(U)(`bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm`,t.class))},[w(e.$slots,`default`)],2))}}),J=k({__name:`CardContent`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`div`,{"data-slot":`card-content`,class:v(j(U)(`px-6`,t.class))},[w(e.$slots,`default`)],2))}}),Y=k({__name:`CardHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`div`,{"data-slot":`card-header`,class:v(j(U)(`@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6`,t.class))},[w(e.$slots,`default`)],2))}}),X=k({__name:`CardTitle`,props:{class:{}},setup(e){let t=e;return(e,n)=>(l(),N(`h3`,{"data-slot":`card-title`,class:v(j(U)(`leading-none font-semibold`,t.class))},[w(e.$slots,`default`)],2))}}),Gr=k({__name:`Label`,props:{for:{},asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=F(t,`class`);return(e,r)=>(l(),y(j(nt),P({"data-slot":`label`},j(n),{class:j(U)(`flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,t.class)}),{default:g(()=>[w(e.$slots,`default`)]),_:3},16,[`class`]))}});const Z=(e,t=2)=>e>=0x38d7ea4c68000?(e/0x38d7ea4c68000).toFixed(t)+`Q`:e>=0xe8d4a51000?(e/0xe8d4a51000).toFixed(t)+`T`:e>=1e9?(e/1e9).toFixed(t)+`B`:e>=1e6?(e/1e6).toFixed(t)+`M`:e>=1e3?(e/1e3).toFixed(t)+`K`:Math.floor(e).toString(),Kr=(e,t)=>{let n=e/t;return n>=1?`text-red-600 dark:text-red-400`:n>=.7?`text-yellow-600 dark:text-yellow-400`:``},qr=e=>{let t=365*86400,n=Math.floor(e/t);e%=t;let r=Math.floor(e/86400);e%=86400;let i=Math.floor(e/3600);e%=3600;let a=Math.floor(e/60),o=Math.floor(e%60),s=i.toString().padStart(2,`0`),c=a.toString().padStart(2,`0`),l=o.toString().padStart(2,`0`);return n>0?`${n}:${r}:${s}:${c}:${l}`:r>0?`${r}:${s}:${c}:${l}`:`${s}:${c}:${l}`},Jr=e=>new Date(e).toLocaleString(`zh-CN`,{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}),Yr=(e,t)=>et.value.toLocaleString());return(t,r)=>(l(),y(j(kn),null,{default:g(()=>[S(j(jn),{"as-child":``},{default:g(()=>[M(`span`,Xr,b(j(Z)(e.value,1)),1)]),_:1}),S(j(An),{class:`w-auto p-2`,side:`top`,align:`center`},{default:g(()=>[M(`p`,Zr,b(n.value),1)]),_:1})]),_:1}))}}),Qr={class:`space-y-4`},$r={key:0,class:`border rounded-lg overflow-hidden`},ei={key:1},ti={key:0,class:`text-green-600 dark:text-green-400`},ni={key:1},ri={key:0,class:`text-red-600 dark:text-red-400`},ii={key:1},ai={key:0,class:`text-blue-600 dark:text-blue-400`},oi={key:1},si={key:0,class:`text-blue-600 dark:text-blue-400`},ci={key:1},li={key:0,class:`text-green-600 dark:text-green-400`},ui={key:1},di={key:0,class:`text-cyan-600 dark:text-cyan-400`},fi={key:1,class:`text-cyan-600 dark:text-cyan-400`},pi={class:`text-indigo-600 dark:text-indigo-400`},mi={class:`text-red-600 dark:text-red-400`},hi={class:`text-blue-600 dark:text-blue-400`},gi={class:`text-gray-600 dark:text-gray-400`},_i={class:`text-purple-600 dark:text-purple-400`},vi={class:`text-blue-600 dark:text-blue-400`},yi={class:`text-green-600 dark:text-green-400`},bi={class:`text-yellow-600 dark:text-yellow-400`},xi={class:`text-indigo-600 dark:text-indigo-400`},Si={class:`text-primary font-medium`},Ci={key:1,class:`grid grid-cols-2 gap-4`},wi={class:`flex items-center justify-between text-sm`},Ti={class:`text-muted-foreground`},Ei={class:`font-medium`},Di={class:`flex items-center justify-between text-sm`},Oi={class:`text-muted-foreground`},ki={class:`font-medium`},Ai={class:`flex items-center justify-between text-sm`},ji={class:`text-muted-foreground`},Mi={class:`font-medium`},Ni={class:`text-3xl font-bold text-primary`},Pi={class:`text-xs text-muted-foreground mt-1`},Fi={key:2,class:`grid grid-cols-2 md:grid-cols-3 gap-4`},Ii={class:`text-2xl font-bold`},Li={class:`text-2xl font-bold`},Ri={class:`text-2xl font-bold`},zi={class:`text-2xl font-bold`},Bi={class:`text-2xl font-bold`},Vi={class:`text-2xl font-bold`},Hi={key:3,class:`grid grid-cols-1 md:grid-cols-2 gap-4`},Ui={class:`text-muted-foreground`},Wi={class:`font-medium`},Gi={class:`flex items-center justify-between text-sm pt-2 border-t`},Ki={class:`text-muted-foreground`},qi={class:`font-bold text-primary`},Ji={class:`text-3xl font-bold`},Yi={class:`text-xs text-muted-foreground mt-2`},Xi={class:`flex items-center gap-4`},Zi={class:`grid grid-cols-2 gap-4 pt-4 border-t`},Qi={class:`space-y-2`},$i={class:`text-sm text-muted-foreground`},ea={class:`space-y-1 text-sm`},ta={class:`flex justify-between`},na={class:`font-medium`},ra={class:`flex justify-between`},ia={class:`font-medium`},aa={class:`flex justify-between`},oa={class:`font-medium`},sa={class:`space-y-2`},ca={class:`text-sm text-muted-foreground`},la={class:`text-xl font-bold`},ua={class:`text-xs text-muted-foreground`},da=k({__name:`ItemDetailView`,props:{type:{},itemType:{},currentLevel:{}},setup(e){let{t:n}=wn(),i=bn(),a=e,o=_(1),s=[{key:`metal`},{key:`crystal`},{key:`deuterium`}],c=D(()=>i.currentPlanet),u=D(()=>ue(i.player.officers,i.gameTime)),ee=D(()=>c.value&&c.value.buildings.roboticsFactory||0),te=D(()=>c.value&&c.value.buildings.naniteFactory||0),ne=D(()=>c.value&&c.value.buildings.researchLab||0),f=D(()=>({building:`buildings`,technology:`research`,ship:`shipyard`,defense:`defense`})[a.type]),ie=D(()=>a.type===`building`?a.itemType===`darkMatterCollector`:a.type===`technology`?a.itemType===`gravitonTechnology`:!1),ae=D(()=>{if(a.type!==`building`)return!1;let e=a.itemType;return[`metalMine`,`crystalMine`,`deuteriumSynthesizer`,`solarPlant`,`fusionReactor`,`darkMatterCollector`].includes(e)}),oe=D(()=>{if(a.type!==`building`)return!1;let e=a.itemType;return[`metalMine`,`crystalMine`,`deuteriumSynthesizer`].includes(e)}),ce=D(()=>{if(a.type!==`building`)return!1;let e=a.itemType;return[`metalStorage`,`crystalStorage`,`deuteriumTank`,`darkMatterCollector`,`darkMatterTank`].includes(e)}),le=D(()=>a.type===`building`?a.itemType===`shipyard`:a.type===`technology`?a.itemType===`computerTechnology`:!1),de=D(()=>a.type===`building`?a.itemType===`naniteFactory`:!1),h=D(()=>{if(a.type===`building`){let e=a.itemType;return[`terraformer`,`lunarBase`].includes(e)}else if(a.type===`technology`)return a.itemType===`terraformingTechnology`;return!1}),fe=D(()=>a.type===`building`?a.itemType===`missileSilo`:!1),pe=D(()=>{if(a.type!==`building`)return!1;let e=a.itemType;return[`roboticsFactory`,`naniteFactory`].includes(e)}),me=D(()=>a.type===`building`?a.itemType===`researchLab`:a.type===`technology`?a.itemType===`energyTechnology`:!1),he=D(()=>a.type===`technology`?a.itemType===`weaponsTechnology`:!1),ge=D(()=>a.type===`technology`?a.itemType===`shieldingTechnology`:!1),ve=D(()=>a.type===`technology`?a.itemType===`armourTechnology`:!1),be=D(()=>a.type===`technology`?a.itemType===`espionageTechnology`:!1),xe=D(()=>a.type===`technology`?a.itemType===`computerTechnology`:!1),Se=D(()=>a.type===`technology`?a.itemType===`astrophysics`:!1),Ce=D(()=>{if(a.type!==`technology`)return!1;let e=a.itemType;return[`combustionDrive`,`impulseDrive`,`hyperspaceDrive`].includes(e)}),we=D(()=>a.currentLevel??0),Te=D(()=>a.type===`ship`?hn[a.itemType]:a.type===`defense`?gn[a.itemType]:null),Ee=D(()=>a.type===`ship`?hn[a.itemType]:null),C=D(()=>a.type===`ship`?hn[a.itemType].cost:a.type===`defense`?gn[a.itemType].cost:{metal:0,crystal:0,deuterium:0}),De=D(()=>a.type===`ship`?se(a.itemType,1,u.value.buildingSpeedBonus,ee.value,te.value):a.type===`defense`?Oe(a.itemType,1,u.value.buildingSpeedBonus,ee.value,te.value):0),w=D(()=>{if(a.type!==`building`&&a.type!==`technology`)return[];let e=a.currentLevel||0,t=[];for(let n=e;n<=e+10;n++)t.push(n);return t}),E=e=>{if(e===0)return{cost:{metal:0,crystal:0,deuterium:0,darkMatter:0},time:0,production:0,consumption:0,points:0,capacity:0,fleetStorage:0,spaceBonus:0,buildSpeedBonus:0,researchSpeedBonus:0};if(a.type===`building`){let t=a.itemType,n=ze(t,e),i=r(t,e,u.value.buildingSpeedBonus,ee.value,te.value),o=0,s=0,c=0,l=0,d=0,ne=0,re=0,f=1+(u.value.resourceProductionBonus||0)/100,p=1+(u.value.energyProductionBonus||0)/100,ie=1+(u.value.storageCapacityBonus||0)/100;t===`metalMine`?(o=Math.floor(1500*e*1.5**e*f),s=Math.floor(10*e*1.1**e)):t===`crystalMine`?(o=Math.floor(1e3*e*1.5**e*f),s=Math.floor(10*e*1.1**e)):t===`deuteriumSynthesizer`?(o=Math.floor(500*e*1.5**e*f),s=Math.floor(10*e*1.1**e)):t===`solarPlant`?o=Math.floor(50*e*1.1**e*p):t===`metalStorage`||t===`crystalStorage`||t===`deuteriumTank`?c=Math.floor(1e4*2**e*ie):t===`darkMatterCollector`?(c=1e3+e*100,o=Math.floor(25*e*1.5**e)):t===`darkMatterTank`?c=Math.floor(1e3*2**e*ie):t===`fusionReactor`?o=Math.floor(150*e*1.15**e):t===`shipyard`?l=1e3*e:t===`terraformer`||t===`lunarBase`?d=30:t===`roboticsFactory`?ne=e:t===`naniteFactory`?ne=e*2:t===`researchLab`&&(re=e);let ae=_e(t,e-1,e);return{cost:n,time:i,production:o,consumption:s,points:ae,capacity:c,fleetStorage:l,spaceBonus:d,buildSpeedBonus:ne,researchSpeedBonus:re}}else{let t=a.itemType,n=je(t,e),r=re(t,e-1,u.value.researchSpeedBonus,ne.value),i=0;return t===`energyTechnology`&&(i=e),{cost:n,time:r,production:0,consumption:0,points:p(t,e-1,e),capacity:0,fleetStorage:0,spaceBonus:0,buildSpeedBonus:0,researchSpeedBonus:i}}},ke=D(()=>{if(a.type!==`building`&&a.type!==`technology`)return{metal:0,crystal:0,deuterium:0,points:0};let e=0,t=0,n=0,r=0;for(let i of w.value){if(i===0)continue;let a=E(i);e+=a.cost.metal,t+=a.cost.crystal,n+=a.cost.deuterium,r+=a.points}return{metal:e,crystal:t,deuterium:n,points:r}}),O=D(()=>a.type===`ship`?d(a.itemType,1):a.type===`defense`?ye(a.itemType,1):0),k=D(()=>({metal:C.value.metal*o.value,crystal:C.value.crystal*o.value,deuterium:C.value.deuterium*o.value})),Ae=D(()=>a.type===`ship`?d(a.itemType,o.value):a.type===`defense`?ye(a.itemType,o.value):0);return(r,i)=>(l(),N(`div`,Qr,[e.type===`building`||e.type===`technology`?(l(),N(`div`,$r,[S(j(Vr),null,{default:g(()=>[S(j(Wr),null,{default:g(()=>[S(j(Ur),null,{default:g(()=>[S(j(K),{class:`w-20 text-center`},{default:g(()=>[x(b(j(n)(`${f.value}.levelRange`)),1)]),_:1}),S(j(K),{class:`text-center`},{default:g(()=>[x(b(j(n)(`resources.metal`)),1)]),_:1}),S(j(K),{class:`text-center`},{default:g(()=>[x(b(j(n)(`resources.crystal`)),1)]),_:1}),S(j(K),{class:`text-center`},{default:g(()=>[x(b(j(n)(`resources.deuterium`)),1)]),_:1}),ie.value?(l(),y(j(K),{key:0,class:`text-center`},{default:g(()=>[x(b(j(n)(`resources.darkMatter`)),1)]),_:1})):T(``,!0),S(j(K),{class:`text-center`},{default:g(()=>[x(b(e.type===`building`?j(n)(`buildings.buildTime`):j(n)(`research.researchTime`)),1)]),_:1}),e.type===`building`&&ae.value?(l(),y(j(K),{key:1,class:`text-center`},{default:g(()=>[x(b(j(n)(`buildings.production`)),1)]),_:1})):T(``,!0),e.type===`building`&&oe.value?(l(),y(j(K),{key:2,class:`text-center`},{default:g(()=>[x(b(j(n)(`buildings.consumption`)),1)]),_:1})):T(``,!0),e.type===`building`&&ce.value?(l(),y(j(K),{key:3,class:`text-center`},{default:g(()=>[x(b(j(n)(`buildings.storageCapacity`)),1)]),_:1})):T(``,!0),e.type===`building`&&le.value?(l(),y(j(K),{key:4,class:`text-center`},{default:g(()=>[x(b(j(n)(`buildings.fleetStorage`)),1)]),_:1})):T(``,!0),e.type===`building`&&de.value?(l(),y(j(K),{key:5,class:`text-center`},{default:g(()=>[x(b(j(n)(`buildings.buildQueueBonus`)),1)]),_:1})):T(``,!0),e.type===`building`&&h.value?(l(),y(j(K),{key:6,class:`text-center`},{default:g(()=>[x(b(j(n)(`buildings.spaceBonus`)),1)]),_:1})):T(``,!0),e.type===`building`&&fe.value?(l(),y(j(K),{key:7,class:`text-center`},{default:g(()=>[x(b(j(n)(`buildings.missileCapacity`)),1)]),_:1})):T(``,!0),e.type===`building`&&pe.value?(l(),y(j(K),{key:8,class:`text-center`},{default:g(()=>[x(b(j(n)(`buildings.buildSpeedBonus`)),1)]),_:1})):T(``,!0),e.type===`building`&&me.value?(l(),y(j(K),{key:9,class:`text-center`},{default:g(()=>[x(b(j(n)(`buildings.researchSpeedBonus`)),1)]),_:1})):T(``,!0),e.type===`technology`&&he.value?(l(),y(j(K),{key:10,class:`text-center`},{default:g(()=>[x(b(j(n)(`research.attackBonus`)),1)]),_:1})):T(``,!0),e.type===`technology`&&ge.value?(l(),y(j(K),{key:11,class:`text-center`},{default:g(()=>[x(b(j(n)(`research.shieldBonus`)),1)]),_:1})):T(``,!0),e.type===`technology`&&ve.value?(l(),y(j(K),{key:12,class:`text-center`},{default:g(()=>[x(b(j(n)(`research.armorBonus`)),1)]),_:1})):T(``,!0),e.type===`technology`&&be.value?(l(),y(j(K),{key:13,class:`text-center`},{default:g(()=>[x(b(j(n)(`research.spyLevel`)),1)]),_:1})):T(``,!0),e.type===`technology`&&le.value?(l(),y(j(K),{key:14,class:`text-center`},{default:g(()=>[x(b(j(n)(`buildings.fleetStorage`)),1)]),_:1})):T(``,!0),e.type===`technology`&&xe.value?(l(),y(j(K),{key:15,class:`text-center`},{default:g(()=>[x(b(j(n)(`research.researchQueueBonus`)),1)]),_:1})):T(``,!0),e.type===`technology`&&Se.value?(l(),y(j(K),{key:16,class:`text-center`},{default:g(()=>[x(b(j(n)(`research.colonySlots`)),1)]),_:1})):T(``,!0),e.type===`technology`&&h.value?(l(),y(j(K),{key:17,class:`text-center`},{default:g(()=>[x(b(j(n)(`buildings.spaceBonus`)),1)]),_:1})):T(``,!0),e.type===`technology`&&Ce.value?(l(),y(j(K),{key:18,class:`text-center`},{default:g(()=>[x(b(j(n)(`research.speedBonus`)),1)]),_:1})):T(``,!0),e.type===`technology`&&me.value?(l(),y(j(K),{key:19,class:`text-center`},{default:g(()=>[x(b(j(n)(`buildings.researchSpeedBonus`)),1)]),_:1})):T(``,!0),S(j(K),{class:`text-center`},{default:g(()=>[x(b(j(n)(`player.points`)),1)]),_:1})]),_:1})]),_:1}),S(j(Hr),null,{default:g(()=>[(l(!0),N(A,null,m(w.value,t=>(l(),y(j(Ur),{key:t,class:v({"bg-muted/50":t===we.value})},{default:g(()=>[S(j(G),{class:`text-center font-medium`},{default:g(()=>[t===we.value?(l(),y(j(En),{key:0,variant:`default`},{default:g(()=>[x(b(t),1)]),_:2},1024)):(l(),N(`span`,ei,b(t),1))]),_:2},1024),S(j(G),{class:`text-center text-sm`},{default:g(()=>[S(Q,{value:E(t).cost.metal},null,8,[`value`])]),_:2},1024),S(j(G),{class:`text-center text-sm`},{default:g(()=>[S(Q,{value:E(t).cost.crystal},null,8,[`value`])]),_:2},1024),S(j(G),{class:`text-center text-sm`},{default:g(()=>[S(Q,{value:E(t).cost.deuterium},null,8,[`value`])]),_:2},1024),ie.value?(l(),y(j(G),{key:0,class:`text-center text-sm`},{default:g(()=>[S(Q,{value:E(t).cost.darkMatter},null,8,[`value`])]),_:2},1024)):T(``,!0),S(j(G),{class:`text-center text-sm`},{default:g(()=>[x(b(j(qr)(E(t).time)),1)]),_:2},1024),e.type===`building`&&ae.value?(l(),y(j(G),{key:1,class:`text-center text-sm`},{default:g(()=>[E(t).production>0?(l(),N(`span`,ti,[i[1]||=x(` + `,-1),S(Q,{value:E(t).production},null,8,[`value`]),x(` /`+b(j(n)(`resources.perHour`)),1)])):(l(),N(`span`,ni,`-`))]),_:2},1024)):T(``,!0),e.type===`building`&&oe.value?(l(),y(j(G),{key:2,class:`text-center text-sm`},{default:g(()=>[E(t).consumption>0?(l(),N(`span`,ri,[i[2]||=x(` - `,-1),S(Q,{value:E(t).consumption},null,8,[`value`])])):(l(),N(`span`,ii,`-`))]),_:2},1024)):T(``,!0),e.type===`building`&&ce.value?(l(),y(j(G),{key:3,class:`text-center text-sm`},{default:g(()=>[E(t).capacity>0?(l(),N(`span`,ai,[S(Q,{value:E(t).capacity},null,8,[`value`])])):(l(),N(`span`,oi,`-`))]),_:2},1024)):T(``,!0),e.type===`building`&&le.value?(l(),y(j(G),{key:4,class:`text-center text-sm`},{default:g(()=>[E(t).fleetStorage>0?(l(),N(`span`,si,[i[3]||=x(` + `,-1),S(Q,{value:E(t).fleetStorage},null,8,[`value`])])):(l(),N(`span`,ci,`-`))]),_:2},1024)):T(``,!0),e.type===`building`&&de.value?(l(),y(j(G),{key:5,class:`text-center text-sm`},{default:g(()=>[...i[4]||=[M(`span`,{class:`text-purple-600 dark:text-purple-400`},`+1`,-1)]]),_:1})):T(``,!0),e.type===`building`&&h.value?(l(),y(j(G),{key:6,class:`text-center text-sm`},{default:g(()=>[E(t).spaceBonus>0?(l(),N(`span`,li,[i[5]||=x(` + `,-1),S(Q,{value:E(t).spaceBonus},null,8,[`value`])])):(l(),N(`span`,ui,`-`))]),_:2},1024)):T(``,!0),e.type===`building`&&fe.value?(l(),y(j(G),{key:7,class:`text-center text-sm`},{default:g(()=>[...i[6]||=[M(`span`,{class:`text-orange-600 dark:text-orange-400`},`+10`,-1)]]),_:1})):T(``,!0),e.type===`building`&&pe.value?(l(),y(j(G),{key:8,class:`text-center text-sm`},{default:g(()=>[e.itemType===`roboticsFactory`?(l(),N(`span`,di,` +`+b(E(t).buildSpeedBonus*100)+`% `,1)):e.itemType===`naniteFactory`?(l(),N(`span`,fi,` +`+b(E(t).buildSpeedBonus*100)+`% `,1)):T(``,!0)]),_:2},1024)):T(``,!0),e.type===`building`&&me.value?(l(),y(j(G),{key:9,class:`text-center text-sm`},{default:g(()=>[M(`span`,pi,`+`+b((E(t).researchSpeedBonus-1)*100)+`%`,1)]),_:2},1024)):T(``,!0),e.type===`technology`&&he.value?(l(),y(j(G),{key:10,class:`text-center text-sm`},{default:g(()=>[M(`span`,mi,`+`+b(t*10)+`%`,1)]),_:2},1024)):T(``,!0),e.type===`technology`&&ge.value?(l(),y(j(G),{key:11,class:`text-center text-sm`},{default:g(()=>[M(`span`,hi,`+`+b(t*10)+`%`,1)]),_:2},1024)):T(``,!0),e.type===`technology`&&ve.value?(l(),y(j(G),{key:12,class:`text-center text-sm`},{default:g(()=>[M(`span`,gi,`+`+b(t*10)+`%`,1)]),_:2},1024)):T(``,!0),e.type===`technology`&&be.value?(l(),y(j(G),{key:13,class:`text-center text-sm`},{default:g(()=>[M(`span`,_i,`+`+b(t),1)]),_:2},1024)):T(``,!0),e.type===`technology`&&le.value?(l(),y(j(G),{key:14,class:`text-center text-sm`},{default:g(()=>[M(`span`,vi,[i[7]||=x(` + `,-1),S(Q,{value:t*500},null,8,[`value`])])]),_:2},1024)):T(``,!0),e.type===`technology`&&xe.value?(l(),y(j(G),{key:15,class:`text-center text-sm`},{default:g(()=>[...i[8]||=[M(`span`,{class:`text-purple-600 dark:text-purple-400`},`+1`,-1)]]),_:1})):T(``,!0),e.type===`technology`&&Se.value?(l(),y(j(G),{key:16,class:`text-center text-sm`},{default:g(()=>[...i[9]||=[M(`span`,{class:`text-green-600 dark:text-green-400`},`+1`,-1)]]),_:1})):T(``,!0),e.type===`technology`&&h.value?(l(),y(j(G),{key:17,class:`text-center text-sm`},{default:g(()=>[M(`span`,yi,`+30 `+b(j(n)(`research.forAllPlanets`)),1)]),_:1})):T(``,!0),e.type===`technology`&&Ce.value?(l(),y(j(G),{key:18,class:`text-center text-sm`},{default:g(()=>[M(`span`,bi,`+`+b(t*10)+`%`,1)]),_:2},1024)):T(``,!0),e.type===`technology`&&me.value?(l(),y(j(G),{key:19,class:`text-center text-sm`},{default:g(()=>[M(`span`,xi,`+`+b(E(t).researchSpeedBonus*100)+`%`,1)]),_:2},1024)):T(``,!0),S(j(G),{class:`text-center text-sm`},{default:g(()=>[M(`span`,Si,[i[10]||=x(` + `,-1),S(Q,{value:E(t).points},null,8,[`value`])])]),_:2},1024)]),_:2},1032,[`class`]))),128))]),_:1})]),_:1})])):T(``,!0),e.type===`building`||e.type===`technology`?(l(),N(`div`,Ci,[S(j(q),null,{default:g(()=>[S(j(Y),{class:`pb-3`},{default:g(()=>[S(j(X),{class:`text-sm`},{default:g(()=>[x(b(j(n)(`${f.value}.totalCost`)),1)]),_:1})]),_:1}),S(j(J),{class:`space-y-2`},{default:g(()=>[M(`div`,wi,[M(`span`,Ti,b(j(n)(`resources.metal`))+`:`,1),M(`span`,Ei,[S(Q,{value:ke.value.metal},null,8,[`value`])])]),M(`div`,Di,[M(`span`,Oi,b(j(n)(`resources.crystal`))+`:`,1),M(`span`,ki,[S(Q,{value:ke.value.crystal},null,8,[`value`])])]),M(`div`,Ai,[M(`span`,ji,b(j(n)(`resources.deuterium`))+`:`,1),M(`span`,Mi,[S(Q,{value:ke.value.deuterium},null,8,[`value`])])])]),_:1})]),_:1}),S(j(q),null,{default:g(()=>[S(j(Y),{class:`pb-3`},{default:g(()=>[S(j(X),{class:`text-sm`},{default:g(()=>[x(b(j(n)(`${f.value}.totalPoints`)),1)]),_:1})]),_:1}),S(j(J),null,{default:g(()=>[M(`div`,Ni,[S(Q,{value:ke.value.points},null,8,[`value`])]),M(`p`,Pi,b(j(n)(`${f.value}.levelRange`))+`: `+b(Math.max(0,we.value-10))+` - `+b(we.value+10),1)]),_:1})]),_:1})])):T(``,!0),e.type===`ship`||e.type===`defense`?(l(),N(`div`,Fi,[S(j(q),null,{default:g(()=>[S(j(Y),{class:`pb-3`},{default:g(()=>[S(j(X),{class:`text-sm flex items-center gap-2`},{default:g(()=>[S(j(nn),{class:`h-4 w-4`}),x(` `+b(j(n)(`${f.value}.attack`)),1)]),_:1})]),_:1}),S(j(J),null,{default:g(()=>[M(`div`,Ii,[S(Q,{value:Te.value?.attack||0},null,8,[`value`])])]),_:1})]),_:1}),S(j(q),null,{default:g(()=>[S(j(Y),{class:`pb-3`},{default:g(()=>[S(j(X),{class:`text-sm flex items-center gap-2`},{default:g(()=>[S(j(rn),{class:`h-4 w-4`}),x(` `+b(j(n)(`${f.value}.shield`)),1)]),_:1})]),_:1}),S(j(J),null,{default:g(()=>[M(`div`,Li,[S(Q,{value:Te.value?.shield||0},null,8,[`value`])])]),_:1})]),_:1}),S(j(q),null,{default:g(()=>[S(j(Y),{class:`pb-3`},{default:g(()=>[S(j(X),{class:`text-sm flex items-center gap-2`},{default:g(()=>[S(j($t),{class:`h-4 w-4`}),x(` `+b(j(n)(`${f.value}.armor`)),1)]),_:1})]),_:1}),S(j(J),null,{default:g(()=>[M(`div`,Ri,[S(Q,{value:Te.value?.armor||0},null,8,[`value`])])]),_:1})]),_:1}),e.type===`ship`?(l(),y(j(q),{key:0},{default:g(()=>[S(j(Y),{class:`pb-3`},{default:g(()=>[S(j(X),{class:`text-sm flex items-center gap-2`},{default:g(()=>[S(j(un),{class:`h-4 w-4`}),x(` `+b(j(n)(`shipyard.speed`)),1)]),_:1})]),_:1}),S(j(J),null,{default:g(()=>[M(`div`,zi,[S(Q,{value:Ee.value?.speed||0},null,8,[`value`])])]),_:1})]),_:1})):T(``,!0),e.type===`ship`?(l(),y(j(q),{key:1},{default:g(()=>[S(j(Y),{class:`pb-3`},{default:g(()=>[S(j(X),{class:`text-sm flex items-center gap-2`},{default:g(()=>[S(j(pn),{class:`h-4 w-4`}),x(` `+b(j(n)(`shipyard.cargoCapacity`)),1)]),_:1})]),_:1}),S(j(J),null,{default:g(()=>[M(`div`,Bi,[S(Q,{value:Ee.value?.cargoCapacity||0},null,8,[`value`])])]),_:1})]),_:1})):T(``,!0),e.type===`ship`?(l(),y(j(q),{key:2},{default:g(()=>[S(j(Y),{class:`pb-3`},{default:g(()=>[S(j(X),{class:`text-sm flex items-center gap-2`},{default:g(()=>[S(j(qt),{class:`h-4 w-4`}),x(` `+b(j(n)(`shipyard.fuelConsumption`)),1)]),_:1})]),_:1}),S(j(J),null,{default:g(()=>[M(`div`,Vi,[S(Q,{value:Ee.value?.fuelConsumption||0},null,8,[`value`])])]),_:1})]),_:1})):T(``,!0)])):T(``,!0),e.type===`ship`||e.type===`defense`?(l(),N(`div`,Hi,[S(j(q),null,{default:g(()=>[S(j(Y),null,{default:g(()=>[S(j(X),{class:`text-sm`},{default:g(()=>[x(b(j(n)(`${f.value}.buildCost`)),1)]),_:1})]),_:1}),S(j(J),{class:`space-y-2`},{default:g(()=>[(l(),N(A,null,m(s,e=>Re(M(`div`,{key:e.key,class:`flex items-center justify-between text-sm`},[M(`span`,Ui,b(j(n)(`resources.${e.key}`))+`:`,1),M(`span`,Wi,[S(Q,{value:C.value[e.key]},null,8,[`value`])])]),[[t,C.value[e.key]>0]])),64)),M(`div`,Gi,[M(`span`,Ki,b(j(n)(`player.points`))+`:`,1),M(`span`,qi,[S(Q,{value:O.value},null,8,[`value`])])])]),_:1})]),_:1}),S(j(q),null,{default:g(()=>[S(j(Y),null,{default:g(()=>[S(j(X),{class:`text-sm`},{default:g(()=>[x(b(j(n)(`${f.value}.buildTime`)),1)]),_:1})]),_:1}),S(j(J),null,{default:g(()=>[M(`div`,Ji,b(j(qr)(De.value)),1),M(`p`,Yi,b(j(n)(`${f.value}.perUnit`)),1)]),_:1})]),_:1})])):T(``,!0),e.type===`ship`||e.type===`defense`?(l(),y(j(q),{key:4},{default:g(()=>[S(j(Y),null,{default:g(()=>[S(j(X),{class:`text-sm`},{default:g(()=>[x(b(j(n)(`${f.value}.batchCalculator`)),1)]),_:1})]),_:1}),S(j(J),{class:`space-y-4`},{default:g(()=>[M(`div`,Xi,[S(j(Gr),{class:`w-20`},{default:g(()=>[x(b(j(n)(`${f.value}.quantity`))+`:`,1)]),_:1}),S(j(or),{modelValue:o.value,"onUpdate:modelValue":i[0]||=e=>o.value=e,modelModifiers:{number:!0},type:`number`,min:`1`,class:`flex-1`},null,8,[`modelValue`])]),M(`div`,Zi,[M(`div`,Qi,[M(`p`,$i,b(j(n)(`${f.value}.totalCost`))+`:`,1),M(`div`,ea,[M(`div`,ta,[M(`span`,null,b(j(n)(`resources.metal`))+`:`,1),M(`span`,na,[S(Q,{value:k.value.metal},null,8,[`value`])])]),M(`div`,ra,[M(`span`,null,b(j(n)(`resources.crystal`))+`:`,1),M(`span`,ia,[S(Q,{value:k.value.crystal},null,8,[`value`])])]),M(`div`,aa,[M(`span`,null,b(j(n)(`resources.deuterium`))+`:`,1),M(`span`,oa,[S(Q,{value:k.value.deuterium},null,8,[`value`])])])])]),M(`div`,sa,[M(`p`,ca,b(j(n)(`${f.value}.totalTime`))+`:`,1),M(`div`,la,b(j(qr)(De.value*o.value)),1),M(`p`,ua,[x(b(j(n)(`player.points`))+`: + `,1),S(Q,{value:Ae.value},null,8,[`value`])])])])]),_:1})]),_:1})):T(``,!0)]))}}),fa=k({__name:`DetailDialog`,setup(e){let{t}=wn(),n=zr(),r=D(()=>!n.type||!n.itemType?``:t(`${{building:`buildings`,technology:`technologies`,ship:`ships`,defense:`defenses`}[n.type]}.${n.itemType}`)),i=D(()=>!n.type||!n.itemType?``:t(`${{building:`buildingDescriptions`,technology:`technologyDescriptions`,ship:`shipDescriptions`,defense:`defenseDescriptions`}[n.type]}.${n.itemType}`)),a=e=>{e||n.close()};return(e,o)=>(l(),y(j(Or),{open:j(n).isOpen,"onUpdate:open":a},{default:g(()=>[j(n).type&&j(n).itemType?(l(),y(j(Lr),{key:0,"container-class":`sm:max-w-[90vw] md:max-w-3xl lg:max-w-4xl max-h-[90vh]`},{header:g(()=>[S(j(Mr),null,{default:g(()=>[S(j(Rr),{class:`flex items-center gap-2`},{default:g(()=>[x(b(r.value)+` `,1),j(n).currentLevel===void 0?T(``,!0):(l(),y(j(En),{key:0,variant:`outline`},{default:g(()=>[x(b(j(t)(`common.currentLevel`))+` `+b(j(n).currentLevel),1)]),_:1}))]),_:1}),S(j(Ar),null,{default:g(()=>[x(b(i.value),1)]),_:1})]),_:1})]),default:g(()=>[S(da,{type:j(n).type,itemType:j(n).itemType,currentLevel:j(n).currentLevel},null,8,[`type`,`itemType`,`currentLevel`])]),_:1})):T(``,!0)]),_:1},8,[`open`]))}}),pa={class:`flex-1 overflow-y-auto min-h-0 mt-4 pr-2`},ma=[`innerHTML`],ha=k({__name:`UpdateDialog`,props:{open:{type:Boolean},versionInfo:{}},emits:[`update:open`],setup(e){let t=e,{t:n}=wn(),r=D(()=>t.versionInfo?.releaseNotes?$e(t.versionInfo.releaseNotes):``),i=()=>{t.versionInfo?.downloadUrl&&window.open(t.versionInfo.downloadUrl,`_blank`)};return(t,a)=>(l(),y(j(Or),{open:e.open,"onUpdate:open":a[1]||=e=>t.$emit(`update:open`,e)},{default:g(()=>[S(j(Nr),{class:`max-w-2xl max-h-[80vh] flex flex-col`},{default:g(()=>[S(j(Mr),{class:`flex-shrink-0`},{default:g(()=>[S(j(Rr),null,{default:g(()=>[x(b(j(n)(`settings.newVersionAvailable`,{version:e.versionInfo?.version||``})),1)]),_:1}),S(j(Ar),null,{default:g(()=>[x(b(j(n)(`settings.updateAvailable`)),1)]),_:1})]),_:1}),M(`div`,pa,[M(`div`,{class:`prose prose-sm dark:prose-invert max-w-none`,innerHTML:r.value},null,8,ma)]),S(j(jr),{class:`flex gap-2 flex-shrink-0 mt-4`},{default:g(()=>[S(j(W),{variant:`outline`,onClick:a[0]||=e=>t.$emit(`update:open`,!1)},{default:g(()=>[x(b(j(n)(`common.cancel`)),1)]),_:1}),S(j(W),{onClick:i},{default:g(()=>[S(j(zt),{class:`mr-2 h-4 w-4`}),x(` `+b(j(n)(`settings.download`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]))}}),ga=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},_a=ga(ha,[[`__scopeId`,`data-v-1e57bb70`]]),va=k({__name:`Sonner`,props:{id:{},invert:{type:Boolean},theme:{},position:{},closeButtonPosition:{},hotkey:{},richColors:{type:Boolean},expand:{type:Boolean},duration:{},gap:{},visibleToasts:{},closeButton:{type:Boolean},toastOptions:{},class:{},style:{},offset:{},mobileOffset:{},dir:{},swipeDirections:{},icons:{},containerAriaLabel:{}},setup(e){let t=e;return(e,n)=>(l(),y(j(et),P({class:j(U)(`toaster group`,t.class),style:{"--normal-bg":`var(--popover)`,"--normal-text":`var(--popover-foreground)`,"--normal-border":`var(--border)`,"--border-radius":`var(--radius)`}},t),{"success-icon":g(()=>[S(j(Yt),{class:`size-4`})]),"info-icon":g(()=>[S(j(Ht),{class:`size-4`})]),"warning-icon":g(()=>[S(j(ln),{class:`size-4`})]),"error-icon":g(()=>[S(j(Jt),{class:`size-4`})]),"loading-icon":g(()=>[M(`div`,null,[S(j(Ft),{class:`size-4 animate-spin`})])]),"close-icon":g(()=>[S(j(an),{class:`size-4`})]),_:1},16,[`class`]))}});const ya=()=>{try{let e=V.name,t=`${V.name}-universe`,n=localStorage.getItem(e);if(!n)return;let r;try{r=yn(n)}catch{try{r=JSON.parse(n)}catch{return}}if(!(r.universePlanets||r.debrisFields))return;let i={planets:{},debrisFields:{}};if(r.universePlanets){let e=r.universePlanets,t=r.player?.planets||[],n=new Set(t.map(e=>e.id));Object.entries(e).forEach(([e,t])=>{n.has(t.id)||(i.planets[e]=t)}),delete r.universePlanets}r.debrisFields&&(i.debrisFields=r.debrisFields,delete r.debrisFields),localStorage.setItem(t,vn(i)),localStorage.setItem(e,vn(r))}catch(e){console.error(e)}},ba=async(e,t)=>{let n=Date.now();if(n-e<300*1e3)return null;try{let e=await fetch(`https://api.github.com/repos/${V.author.name}/${V.name}/releases/latest`);if(!e.ok)throw console.error(`Failed to fetch latest version:`,e.status),t(n),Error(`Failed to fetch version: ${e.status}`);let r=await e.json(),i=r.tag_name?.replace(/^v/,``);return t(n),i&&i!==V.version?{version:i,releaseNotes:r.body||``,downloadUrl:`https://github.com/${V.author.name}/${V.name}/releases/latest`}:null}catch(e){throw console.error(`Error checking version:`,e),t(n),e}},xa=e=>Date.now()-e>=300*1e3;var Sa=`modulepreload`,Ca=function(e,t){return new URL(e,t).href},wa={};const $=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Ca(t,n),t in wa)return;wa[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:Sa,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};var Ta={class:`flex items-center justify-center p-4 group-data-[collapsible=icon]:p-2`},Ea={class:`text-xl font-bold ml-2 group-data-[collapsible=icon]:hidden`},Da={class:`px-4 py-3 space-y-2 text-sm`},Oa={class:`flex items-start gap-2.5 flex-1 min-w-0`},ka={class:`flex-1 min-w-0 text-left`},Aa={class:`text-[10px] text-muted-foreground uppercase tracking-wider mb-0.5`},ja={class:`flex items-center gap-1.5 mb-0.5`},Ma={class:`truncate font-semibold text-sm`},Na={class:`text-[11px] text-muted-foreground`},Pa={class:`p-2`},Fa={class:`px-2 py-1.5 mb-1 text-xs font-semibold text-muted-foreground`},Ia={class:`space-y-0.5 max-h-80 overflow-y-auto`},La={class:`flex items-start gap-2 w-full min-w-0`},Ra={class:`flex-1 min-w-0 text-left`},za={class:`flex items-center gap-1.5 mb-0.5`},Ba={class:`truncate font-medium text-sm`},Va={class:`text-[11px] text-muted-foreground`},Ha={class:`bg-muted/50 rounded-lg p-2`},Ua={class:`flex items-center justify-between`},Wa={class:`text-xs text-muted-foreground`},Ga={class:`text-sm font-bold text-primary`},Ka={key:0,class:`flex gap-1`},qa={class:`space-y-1`},Ja={class:`flex flex-col h-full overflow-hidden pt-[60px]`},Ya={class:`flex flex-col gap-3`},Xa={class:`grid items-center gap-3 sm:gap-6`,style:{"grid-template-columns":`auto 1fr auto`}},Za={class:`min-w-0`},Qa={class:`text-[10px] sm:text-xs text-muted-foreground truncate`},$a={class:`text-[10px] sm:text-xs text-muted-foreground truncate`},eo={class:`flex items-center gap-2 sm:gap-3 flex-shrink-0 justify-end`},to={key:0,class:`flex items-center gap-1.5 text-xs sm:text-sm`},no={class:`text-muted-foreground hidden sm:inline`},ro={key:1,class:`flex items-center gap-1.5 text-xs sm:text-sm`},io={class:`text-muted-foreground hidden sm:inline`},ao={class:`grid grid-cols-2 gap-3`},oo={class:`flex items-center justify-center gap-2 mb-1.5`},so={class:`text-xs font-medium text-muted-foreground`},co={class:`space-y-0.5 text-center`},lo={class:`text-[10px] text-muted-foreground`},uo={class:`text-[10px] text-muted-foreground`},fo={class:`text-[10px] text-muted-foreground`},po={key:2,class:`bg-card border-b px-4 sm:px-6 py-4.5`},mo={class:`space-y-3`},ho={class:`flex items-center justify-between text-xs sm:text-sm gap-2`},go={class:`flex items-center gap-1.5 sm:gap-2 min-w-0 flex-1`},_o={class:`font-medium truncate`},vo={class:`text-muted-foreground hidden sm:inline flex-shrink-0 text-[10px] sm:text-xs`},yo={class:`flex items-center gap-2 sm:gap-3 flex-shrink-0`},bo={class:`text-muted-foreground text-[10px] sm:text-xs whitespace-nowrap`},xo={class:`flex items-center justify-between text-xs sm:text-sm gap-2`},So={class:`flex items-center gap-1.5 sm:gap-2 min-w-0 flex-1`},Co={class:`font-medium truncate`},wo={class:`text-muted-foreground hidden sm:inline flex-shrink-0 text-[10px] sm:text-xs`},To={class:`flex items-center gap-2 sm:gap-3 flex-shrink-0`},Eo={class:`text-muted-foreground text-[10px] sm:text-xs whitespace-nowrap`},Do={class:`flex-1 overflow-y-auto`},Oo={class:`animate-fade-in`},ko=10,Ao=5,jo=ga(k({__name:`App`,setup(e){ya();let t=bn(),r=xn(),d=Sn(),{isDark:re}=Cn(),{t:p}=wn(),se=_(!1),h=_(``),_e=_(``),ve=D(()=>window.innerWidth),ye=_(null),Se=_(!1),C=_(null),w=()=>{ye.value&&ye.value(),se.value=!1},Oe=[`zh-CN`,`zh-TW`,`en`,`de`,`ru`,`ko`,`ja`],O=_(window.innerWidth>=1024),k=_(!1),je=async()=>{if(!ke(t.player.planets)){let e=Date.now(),n=ue(t.player.officers,e);t.player.planets.forEach(t=>{a(t,e,n)}),Object.keys(r.planets).length===0&&Me();return}t.player=Ee(t.player.id,p(`common.playerName`));let e=he(t.player.id,p(`planet.homePlanet`));t.player.planets=[e],t.currentPlanetId=e.id,Me()},Me=()=>{for(let e=0;e<200;e++){let t=Ne(),n=E(t.galaxy,t.system,t.position);if(r.planets[n])continue;let i=u(e,t,p(`planet.planetPrefix`));r.planets[n]=i}},P=async()=>{if(t.isPaused)return;let e=Date.now();t.gameTime=e,Te(t.player.officers,e);let n=Ae(t.player,e);t.player.researchQueue=n.updatedResearchQueue,t.player.fleetMissions.forEach(t=>{t.status===`outbound`&&e>=t.arrivalTime?Re(t):t.status===`returning`&&t.returnTime&&e>=t.returnTime&&ze(t)});for(let n=t.player.missileAttacks.length-1;n>=0;n--){let r=t.player.missileAttacks[n];r&&r.status===`flying`&&e>=r.arrivalTime&&(await He(r),t.player.missileAttacks.splice(n,1))}d.npcs.forEach(t=>{t.fleetMissions&&t.fleetMissions.forEach(n=>{n.status===`outbound`&&e>=n.arrivalTime?Be(t,n):n.status===`returning`&&n.returnTime&&e>=n.returnTime&&Ve(t,n)})}),Ye(1),F(1)},Re=async e=>{let n=E(e.targetPosition.galaxy,e.targetPosition.system,e.targetPosition.position),i=t.player.planets.find(t=>t.position.galaxy===e.targetPosition.galaxy&&t.position.system===e.targetPosition.system&&t.position.position===e.targetPosition.position)||r.planets[n],a=t.player.planets.find(t=>t.id===e.originPlanetId)?.name||p(`fleetView.unknownPlanet`);if(e.missionType===B.Transport){let n=Le(e,i,t.player,d.npcs);t.player.missionReports||(t.player.missionReports=[]),t.player.missionReports.push({id:`mission-report-${e.id}`,timestamp:Date.now(),missionType:B.Transport,originPlanetId:e.originPlanetId,originPlanetName:a,targetPosition:e.targetPosition,targetPlanetId:i?.id,targetPlanetName:i?.name||`[${e.targetPosition.galaxy}:${e.targetPosition.system}:${e.targetPosition.position}]`,success:n.success,message:n.success?p(`missionReports.transportSuccess`):p(`missionReports.transportFailed`),details:{transportedResources:e.cargo},read:!1})}else if(e.missionType===B.Attack){let n=await ae(e,i,t.player,null,t.player.planets);if(n){if(t.player.battleReports.push(n.battleResult),i){let e=d.npcs.find(e=>e.planets.some(e=>e.id===i.id));e&&ge(t.player,e,n.battleResult,d.npcs,t.locale)}n.moon&&t.player.planets.push(n.moon),n.debrisField&&(r.debrisFields[n.debrisField.id]=n.debrisField)}}else if(e.missionType===B.Colonize){let n=oe(e,i,t.player,p(`planet.colonyPrefix`));t.player.missionReports||(t.player.missionReports=[]),t.player.missionReports.push({id:`mission-report-${e.id}`,timestamp:Date.now(),missionType:B.Colonize,originPlanetId:e.originPlanetId,originPlanetName:a,targetPosition:e.targetPosition,targetPlanetId:n?.id,targetPlanetName:n?.name,success:!!n,message:p(n?`missionReports.colonizeSuccess`:`missionReports.colonizeFailed`),details:n?{newPlanetId:n.id,newPlanetName:n.name}:void 0,read:!1}),n&&t.player.planets.push(n)}else if(e.missionType===B.Spy){let n=fe(e,i,t.player,null,d.npcs);n&&t.player.spyReports.push(n)}else if(e.missionType===B.Deploy){let n=le(e,i,t.player.id);if(t.player.missionReports||(t.player.missionReports=[]),t.player.missionReports.push({id:`mission-report-${e.id}`,timestamp:Date.now(),missionType:B.Deploy,originPlanetId:e.originPlanetId,originPlanetName:a,targetPosition:e.targetPosition,targetPlanetId:i?.id,targetPlanetName:i?.name||`[${e.targetPosition.galaxy}:${e.targetPosition.system}:${e.targetPosition.position}]`,success:n,message:p(n?`missionReports.deploySuccess`:`missionReports.deployFailed`),details:{deployedFleet:e.fleet},read:!1}),n){let n=t.player.fleetMissions.indexOf(e);n>-1&&t.player.fleetMissions.splice(n,1);return}}else if(e.missionType===B.Recycle){let n=`debris_${e.targetPosition.galaxy}_${e.targetPosition.system}_${e.targetPosition.position}`,i=r.debrisFields[n],o=ie(e,i);t.player.missionReports||(t.player.missionReports=[]),t.player.missionReports.push({id:`mission-report-${e.id}`,timestamp:Date.now(),missionType:B.Recycle,originPlanetId:e.originPlanetId,originPlanetName:a,targetPosition:e.targetPosition,success:!!o,message:p(o?`missionReports.recycleSuccess`:`missionReports.recycleFailed`),details:o?{recycledResources:o.collectedResources,remainingDebris:o.remainingDebris||void 0}:void 0,read:!1}),o&&i&&(o.remainingDebris&&(o.remainingDebris.metal>0||o.remainingDebris.crystal>0)?r.debrisFields[n]={id:i.id,position:i.position,resources:o.remainingDebris,createdAt:i.createdAt,expiresAt:i.expiresAt}:delete r.debrisFields[n])}else if(e.missionType===B.Destroy){let o=ee(e,i,t.player);if(t.player.missionReports||(t.player.missionReports=[]),t.player.missionReports.push({id:`mission-report-${e.id}`,timestamp:Date.now(),missionType:B.Destroy,originPlanetId:e.originPlanetId,originPlanetName:a,targetPosition:e.targetPosition,targetPlanetId:i?.id,targetPlanetName:i?.name,success:o?.success||!1,message:o?.success?p(`missionReports.destroySuccess`):p(`missionReports.destroyFailed`),details:o?.success?{destroyedPlanetName:i?.name||`[${e.targetPosition.galaxy}:${e.targetPosition.system}:${e.targetPosition.position}]`}:void 0,read:!1}),o&&o.success&&o.planetId){let e=t.player.planets.findIndex(e=>e.id===o.planetId);e>-1?t.player.planets.splice(e,1):delete r.planets[n]}}},ze=e=>{let n=t.player.planets.find(t=>t.id===e.originPlanetId);if(!n)return;s(n.fleet,e.fleet),De(n.resources,e.cargo);let r=t.player.fleetMissions.indexOf(e);r>-1&&t.player.fleetMissions.splice(r,1)},Be=(e,n)=>{if(n.missionType===B.Recycle){let e=n.debrisFieldId;if(!e){console.warn(`[NPC Mission] Recycle mission missing debrisFieldId`),n.status=`returning`,n.returnTime=Date.now()+(n.arrivalTime-n.departureTime);return}let t=r.debrisFields[e],i=ie(n,t);i&&t&&(i.remainingDebris&&(i.remainingDebris.metal>0||i.remainingDebris.crystal>0)?r.debrisFields[e]={id:t.id,position:t.position,resources:i.remainingDebris,createdAt:t.createdAt}:delete r.debrisFields[e]),Ge(n.id),n.returnTime=Date.now()+(n.arrivalTime-n.departureTime);return}let a=E(n.targetPosition.galaxy,n.targetPosition.system,n.targetPosition.position),o=t.player.planets.find(e=>e.position.galaxy===n.targetPosition.galaxy&&e.position.system===n.targetPosition.system&&e.position.position===n.targetPosition.position)||r.planets[a];if(!o){console.warn(`[NPC Mission] Target planet not found`);return}if(n.missionType===B.Spy){let{spiedNotification:r,spyReport:a}=i(e,n,o,t.player);e.playerSpyReports||={},e.playerSpyReports[o.id]=a,t.player.spiedNotifications||(t.player.spiedNotifications=[]),t.player.spiedNotifications.push(r),Ge(n.id)}else n.missionType===B.Attack&&ne(e,n,o,t.player,t.player.planets).then(e=>{e&&(t.player.battleReports.push(e.battleResult),e.moon&&t.player.planets.push(e.moon),e.debrisField&&(r.debrisFields[e.debrisField.id]=e.debrisField)),Ge(n.id)})},Ve=(e,t)=>{let n=e.planets.find(e=>e.id===t.originPlanetId);if(n&&(s(n.fleet,t.fleet),t.cargo&&(n.resources.metal+=t.cargo.metal,n.resources.crystal+=t.cargo.crystal,n.resources.deuterium+=t.cargo.deuterium),e.fleetMissions)){let n=e.fleetMissions.indexOf(t);n>-1&&e.fleetMissions.splice(n,1)}},He=async e=>{let n=await $(()=>import(`./missileLogic-_46Nr-Ju.js`),__vite__mapDeps([0,1,2,3,4]),import.meta.url),i=E(e.targetPosition.galaxy,e.targetPosition.system,e.targetPosition.position),a=t.player.planets.find(t=>t.position.galaxy===e.targetPosition.galaxy&&t.position.system===e.targetPosition.system&&t.position.position===e.targetPosition.position)||r.planets[i];if(!a){e.status=`arrived`,t.player.missionReports||(t.player.missionReports=[]),t.player.missionReports.push({id:`missile-report-${e.id}`,timestamp:Date.now(),missionType:B.MissileAttack,originPlanetId:e.originPlanetId,originPlanetName:t.player.planets.find(t=>t.id===e.originPlanetId)?.name||p(`fleetView.unknownPlanet`),targetPosition:e.targetPosition,targetPlanetId:void 0,targetPlanetName:`[${e.targetPosition.galaxy}:${e.targetPosition.system}:${e.targetPosition.position}]`,success:!1,message:p(`missionReports.missileAttackFailed`),details:{missileCount:e.missileCount,missileHits:0,missileIntercepted:0,defenseLosses:{}},read:!1});return}let o=n.calculateMissileImpact(e.missileCount,a);n.applyMissileAttackResult(a,o.defenseLosses),e.status=`arrived`,t.player.missionReports||(t.player.missionReports=[]);let s=o.missileHits>0?`${p(`missionReports.missileAttackSuccess`)}: ${o.missileHits} ${p(`missionReports.hits`)}`:p(`missionReports.missileAttackIntercepted`);t.player.missionReports.push({id:`missile-report-${e.id}`,timestamp:Date.now(),missionType:B.MissileAttack,originPlanetId:e.originPlanetId,originPlanetName:t.player.planets.find(t=>t.id===e.originPlanetId)?.name||p(`fleetView.unknownPlanet`),targetPosition:e.targetPosition,targetPlanetId:a.id,targetPlanetName:a.name,success:!0,message:s,details:{missileCount:e.missileCount,missileHits:o.missileHits,missileIntercepted:o.missileIntercepted,defenseLosses:o.defenseLosses},read:!1})},Ue=e=>{if(!t.player.incomingFleetAlerts)return;let n=t.player.incomingFleetAlerts.indexOf(e);n>-1&&t.player.incomingFleetAlerts.splice(n,1)},Ge=e=>{if(!t.player.incomingFleetAlerts)return;let n=t.player.incomingFleetAlerts.findIndex(t=>t.id===e);n>-1&&t.player.incomingFleetAlerts.splice(n,1)},qe=0,Ye=e=>{if(qe+=e,qe{n.ownerId===t.player.id||!n.ownerId||(e.has(n.ownerId)||e.set(n.ownerId,{id:n.ownerId,name:`NPC-${n.ownerId.substring(0,8)}`,planets:[],technologies:{},difficulty:`medium`,relations:{},allies:[],enemies:[]}),e.get(n.ownerId).planets.push(n))}),d.npcs=Array.from(e.values()),d.npcs.length>0){let e=pe({planets:n,player:t.player,npcs:d.npcs});d.npcs.forEach(t=>{o(t,e)}),c(d.npcs)}}if(d.npcs.length===0){qe=0;return}let i={planets:n,player:t.player,npcs:d.npcs};d.npcs.forEach(e=>{ce(e,i,qe)}),qe=0},Ze=0,F=e=>{if(Ze+=e,Ze{Pe(e,t.player,i,r.debrisFields,n)}),Ze=0},$e=null,et=null,tt=null,I=()=>{$e&&clearInterval($e);let e=1e3/(t.gameSpeed||1);$e=setInterval(()=>{P()},e)};te(()=>t.gameSpeed,()=>{$e&&I()}),Fe(async()=>{t.player.planets.length===0&&(t.locale=Xe()),await je(),I(),et=nt();let e=await ba(t.player.lastVersionCheckTime||0,e=>{t.player.lastVersionCheckTime=e});e&&(C.value=e,Qe.info(p(`settings.newVersionAvailable`,{version:e.version}),{duration:1/0,dismissible:!0,action:{label:p(`settings.viewUpdate`),onClick:()=>{Se.value=!0}}})),tt=setInterval(async()=>{let e=await ba(t.player.lastVersionCheckTime||0,e=>{t.player.lastVersionCheckTime=e});e&&(C.value=e,Qe.info(p(`settings.newVersionAvailable`,{version:e.version}),{duration:1/0,dismissible:!0,action:{label:p(`settings.viewUpdate`),onClick:()=>{Se.value=!0}}}))},300*1e3)}),me(()=>{$e&&clearInterval($e),et&&et(),tt&&clearInterval(tt)});let nt=()=>{let e=[`ArrowUp`,`ArrowUp`,`ArrowDown`,`ArrowDown`,`ArrowLeft`,`ArrowLeft`,`ArrowRight`,`ArrowRight`,`b`,`a`],n=0,r=r=>{t.player.isGMEnabled||(r.key.toLowerCase()===e[n]||r.key===e[n]?(n++,n===e.length&&(t.player.isGMEnabled=!0,Qe.success(p(`common.gmModeActivated`)),n=0)):n=0)};return window.addEventListener(`keydown`,r),()=>{window.removeEventListener(`keydown`,r)}},L=D(()=>t.currentPlanet),rt=D(()=>[{name:D(()=>p(`nav.overview`)),path:`/`,icon:Ut},{name:D(()=>p(`nav.buildings`)),path:`/buildings`,icon:Kt},{name:D(()=>p(`nav.research`)),path:`/research`,icon:mn},{name:D(()=>p(`nav.shipyard`)),path:`/shipyard`,icon:on},{name:D(()=>p(`nav.defense`)),path:`/defense`,icon:rn},{name:D(()=>p(`nav.fleet`)),path:`/fleet`,icon:fn},{name:D(()=>p(`nav.officers`)),path:`/officers`,icon:en},{name:D(()=>p(`nav.simulator`)),path:`/battle-simulator`,icon:dn},{name:D(()=>p(`nav.galaxy`)),path:`/galaxy`,icon:Bt},{name:D(()=>p(`nav.diplomacy`)),path:`/diplomacy`,icon:Gt},{name:D(()=>p(`nav.messages`)),path:`/messages`,icon:Wt},{name:D(()=>p(`nav.settings`)),path:`/settings`,icon:Qt},...t.player.isGMEnabled?[{name:D(()=>p(`nav.gm`)),path:`/gm`,icon:cn}]:[]]),R=D(()=>{if(!L.value)return null;let e=Date.now(),n=ue(t.player.officers,e);return we(L.value,{resourceProductionBonus:n.resourceProductionBonus,darkMatterProductionBonus:n.darkMatterProductionBonus,energyProductionBonus:n.energyProductionBonus})}),it=D(()=>{if(!L.value)return null;let e=Date.now(),n=ue(t.player.officers,e);return Ie(L.value,n.storageCapacityBonus)}),at=D(()=>L.value?Ce(L.value):0),z=D(()=>!L.value||!R.value?0:R.value.energy-at.value),ot=D(()=>{let e=t.player.battleReports.filter(e=>!e.read).length,n=t.player.spyReports.filter(e=>!e.read).length,r=t.player.spiedNotifications?.filter(e=>!e.read).length||0,i=t.player.missionReports?.filter(e=>!e.read).length||0,a=t.player.npcActivityNotifications?.filter(e=>!e.read).length||0,o=t.player.giftNotifications?.filter(e=>!e.read).length||0,s=t.player.giftRejectedNotifications?.filter(e=>!e.read).length||0;return e+n+r+i+a+o+s}),st=D(()=>t.player.fleetMissions.filter(e=>e.status===`outbound`||e.status===`returning`).length+(t.player.missileAttacks?.filter(e=>e.status===`flying`).length||0)),ct=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`energy`},{key:`darkMatter`}],lt=D(()=>!L.value||L.value.isMoon?null:t.getMoonForPlanet(L.value.id)),ut=D(()=>!!lt.value),dt=()=>{lt.value&&(t.currentPlanetId=lt.value.id)},ft=()=>{L.value?.parentPlanetId&&(t.currentPlanetId=L.value.parentPlanetId)},pt=e=>{t.currentPlanetId=e},mt=()=>{O.value=!O.value},ht=e=>{if(e.type===`building`||e.type===`demolish`){let t=p(`buildings.${e.itemType}`);return e.type===`demolish`?`${p(`buildingsView.demolish`)} - ${t}`:t}else if(e.type===`technology`)return p(`technologies.${e.itemType}`);else if(e.type===`ship`)return p(`ships.${e.itemType}`);else if(e.type===`defense`)return p(`defenses.${e.itemType}`);return e.itemType},gt=e=>{let t=Date.now();return Math.max(0,Math.floor((e.endTime-t)/1e3))},_t=e=>{let t=Date.now(),n=e.endTime-e.startTime,r=t-e.startTime;return Math.min(100,Math.max(0,r/n*100))},vt=e=>{h.value=p(`queue.cancelBuild`),_e.value=p(`queue.confirmCancel`),ye.value=()=>{if(!t.currentPlanet)return!1;let{item:n,index:r}=de(t.currentPlanet.buildQueue,e);if(!n)return!1;if(n.type===`building`){let e=xe(t.currentPlanet,n);De(t.currentPlanet.resources,e)}return t.currentPlanet.buildQueue.splice(r,1),!0},se.value=!0},yt=e=>{h.value=p(`queue.cancelResearch`),_e.value=p(`queue.confirmCancel`),ye.value=()=>{if(!t.currentPlanet)return!1;let{item:n,index:r}=de(t.player.researchQueue,e);if(!n)return!1;if(n.type===`technology`){let e=f(n);De(t.currentPlanet.resources,e)}return t.player.researchQueue.splice(r,1),!0},se.value=!0};return(e,r)=>(l(),y(j(gr),{open:O.value,"onUpdate:open":r[4]||=e=>O.value=e},{default:g(()=>[S(j(tr),{collapsible:`icon`},{default:g(()=>[S(j(ar),{class:`border-b`},{default:g(()=>[M(`div`,Ta,[r[5]||=M(`img`,{src:``+new URL(`logo-Cz0cNqhe.svg`,import.meta.url).href,class:`w-10 group-data-[collapsible=icon]:w-8`},null,-1),M(`h1`,Ea,b(j(V).title),1)])]),_:1}),S(j(nr),null,{default:g(()=>[L.value?(l(),y(j(ir),{key:0,class:`border-b group-data-[collapsible=icon]:hidden`},{default:g(()=>[M(`div`,Da,[S(j(kn),null,{default:g(()=>[S(j(jn),{"as-child":``},{default:g(()=>[S(j(W),{variant:`outline`,class:`w-full justify-between h-auto px-3 py-2.5 border-2 hover:bg-accent hover:border-primary transition-colors`},{default:g(()=>[M(`div`,Oa,[S(j(Bt),{class:`h-5 w-5 flex-shrink-0 mt-0.5 text-primary`}),M(`div`,ka,[M(`div`,Aa,b(j(p)(`planet.currentPlanet`)),1),M(`div`,ja,[M(`span`,Ma,b(L.value.name),1),L.value.isMoon?(l(),y(j(En),{key:0,variant:`secondary`,class:`text-[10px] px-1 py-0 h-4`},{default:g(()=>[x(b(j(p)(`planet.moon`)),1)]),_:1})):T(``,!0)]),M(`div`,Na,` [`+b(L.value.position.galaxy)+`:`+b(L.value.position.system)+`:`+b(L.value.position.position)+`] `,1)])]),S(j(Rt),{class:`h-4 w-4 flex-shrink-0 text-muted-foreground ml-2`})]),_:1})]),_:1}),S(j(An),{class:`w-72 p-0`,side:`bottom`,align:`start`},{default:g(()=>[M(`div`,Pa,[M(`div`,Fa,b(j(p)(`planet.switchPlanet`)),1),M(`div`,Ia,[(l(!0),N(A,null,m(j(t).player.planets,e=>(l(),y(j(W),{key:e.id,onClick:t=>pt(e.id),variant:e.id===L.value.id?`secondary`:`ghost`,class:`w-full justify-start h-auto py-2 px-2`,size:`sm`},{default:g(()=>[M(`div`,La,[S(j(Bt),{class:v([`h-4 w-4 flex-shrink-0 mt-0.5`,e.id===L.value.id?`text-primary`:``])},null,8,[`class`]),M(`div`,Ra,[M(`div`,za,[M(`span`,Ba,b(e.name),1),e.isMoon?(l(),y(j(En),{key:0,variant:`outline`,class:`text-[10px] px-1 py-0 h-4`},{default:g(()=>[x(b(j(p)(`planet.moon`)),1)]),_:1})):T(``,!0)]),M(`div`,Va,` [`+b(e.position.galaxy)+`:`+b(e.position.system)+`:`+b(e.position.position)+`] `,1)])])]),_:2},1032,[`onClick`,`variant`]))),128))])])]),_:1})]),_:1}),M(`div`,Ha,[M(`div`,Ua,[M(`span`,Wa,b(j(p)(`player.points`)),1),M(`span`,Ga,b(j(Z)(j(t).player.points)),1)])]),ut.value||L.value.isMoon?(l(),N(`div`,Ka,[L.value.isMoon?(l(),y(j(W),{key:0,onClick:ft,variant:`outline`,size:`sm`,class:`w-full text-xs h-7`},{default:g(()=>[x(b(j(p)(`planet.backToPlanet`)),1)]),_:1})):lt.value?(l(),y(j(W),{key:1,onClick:dt,variant:`outline`,size:`sm`,class:`w-full text-xs h-7`},{default:g(()=>[x(b(j(p)(`planet.switchToMoon`)),1)]),_:1})):T(``,!0)])):T(``,!0)])]),_:1})):T(``,!0),S(j(ir),null,{default:g(()=>[S(j(cr),null,{default:g(()=>[(l(!0),N(A,null,m(rt.value,t=>(l(),y(j(hr),{key:t.path},{default:g(()=>[S(j(mr),{"as-child":``,"is-active":e.$route.path===t.path,tooltip:t.name.value},{default:g(()=>[S(j(Ke),{to:t.path},{default:g(()=>[(l(),y(n(t.icon))),M(`span`,null,b(t.name.value),1),t.path===`/messages`&&ot.value>0?(l(),y(j(lr),{key:0,class:`bg-destructive text-destructive-foreground`},{default:g(()=>[x(b(ot.value),1)]),_:1})):T(``,!0),t.path===`/fleet`&&st.value>0?(l(),y(j(lr),{key:1,class:`bg-primary text-primary-foreground`},{default:g(()=>[x(b(st.value),1)]),_:1})):T(``,!0)]),_:2},1032,[`to`])]),_:2},1032,[`is-active`,`tooltip`])]),_:2},1024))),128))]),_:1})]),_:1})]),_:1}),S(j(rr),{class:`border-t`},{default:g(()=>[S(j(cr),null,{default:g(()=>[S(j(hr),null,{default:g(()=>[S(j(kn),null,{default:g(()=>[S(j(jn),{"as-child":``},{default:g(()=>[S(j(mr),{tooltip:j(Je)[j(t).locale]},{default:g(()=>[S(j(tn)),M(`span`,null,b(j(Je)[j(t).locale]),1)]),_:1},8,[`tooltip`])]),_:1}),S(j(An),{class:`w-48 p-2`,side:O.value||ve.value<768?`top`:`right`,align:O.value||ve.value<768?`center`:`end`},{default:g(()=>[M(`div`,qa,[(l(),N(A,null,m(Oe,e=>S(j(W),{key:e,onClick:n=>j(t).locale=e,variant:j(t).locale===e?`secondary`:`ghost`,class:`w-full justify-start`,size:`sm`},{default:g(()=>[x(b(j(Je)[e]),1)]),_:2},1032,[`onClick`,`variant`])),64))])]),_:1},8,[`side`,`align`])]),_:1})]),_:1}),S(j(hr),null,{default:g(()=>[S(j(mr),{onClick:r[0]||=e=>re.value=!j(re),tooltip:j(re)?j(p)(`sidebar.lightMode`):j(p)(`sidebar.darkMode`)},{default:g(()=>[j(re)?(l(),y(j(Zt),{key:0})):(l(),y(j(Lt),{key:1})),M(`span`,null,b(j(re)?j(p)(`sidebar.lightMode`):j(p)(`sidebar.darkMode`)),1)]),_:1},8,[`tooltip`])]),_:1}),S(j(hr),{class:`hidden sm:inline`},{default:g(()=>[S(j(mr),{onClick:mt,tooltip:O.value?j(p)(`sidebar.collapse`):j(p)(`sidebar.expand`)},{default:g(()=>[S(j(Vt),{class:`group-data-[state=collapsed]:rotate-180 transition-transform`}),M(`span`,null,b(j(p)(`sidebar.collapse`)),1)]),_:1},8,[`tooltip`])]),_:1})]),_:1})]),_:1})]),_:1}),S(j(sr),null,{default:g(()=>[M(`div`,Ja,[L.value?(l(),N(`header`,{key:0,class:v([`fixed top-0 right-0 left-0 z-40 bg-card border-b px-4 sm:px-6 py-3 shadow-md`,O.value?`lg:left-[var(--sidebar-width)]`:`lg:left-[var(--sidebar-width-icon)]`])},[M(`div`,Ya,[M(`div`,Xa,[M(`div`,null,[S(j(_r),{class:`lg:hidden`})]),M(`div`,{class:v([`flex items-center gap-3 sm:gap-6 justify-center`,k.value?`hidden`:`overflow-x-auto`])},[(l(),N(A,null,m(ct,e=>M(`div`,{key:e.key,class:`flex items-center gap-1.5 sm:gap-2 flex-shrink-0`},[S(yr,{type:e.key,size:`md`},null,8,[`type`]),M(`div`,Za,[e.key===`energy`?(l(),N(A,{key:0},[M(`p`,{class:v([`text-xs sm:text-sm font-medium truncate`,z.value>=0?`text-green-600 dark:text-green-400`:`text-red-600 dark:text-red-400`])},b(z.value>=0?`+`:``)+b(j(Z)(z.value)),3),M(`p`,Qa,b(j(Z)(R.value?.energy||0))+` / `+b(j(Z)(at.value)),1)],64)):(l(),N(A,{key:1},[M(`p`,{class:v([`text-xs sm:text-sm font-medium truncate`,j(Kr)(L.value.resources[e.key],it.value?.[e.key]||1/0)])},b(j(Z)(L.value.resources[e.key]))+` / `+b(j(Z)(it.value?.[e.key]||0)),3),M(`p`,$a,` +`+b(j(Z)(Math.round((R.value?.[e.key]||0)/60)))+`/`+b(j(p)(`resources.perMinute`)),1)],64))])])),64))],2),M(`div`,eo,[S(j(W),{onClick:r[1]||=e=>k.value=!k.value,variant:`ghost`,size:`sm`,class:`lg:hidden h-8 w-8 p-0`},{default:g(()=>[k.value?(l(),y(j(sn),{key:1,class:`h-4 w-4`})):(l(),y(j(Xt),{key:0,class:`h-4 w-4`}))]),_:1}),L.value.buildQueue.length>0?(l(),N(`div`,to,[r[6]||=M(`div`,{class:`h-2 w-2 rounded-full bg-green-500 animate-pulse`},null,-1),M(`span`,no,b(j(p)(`queue.building`)),1)])):T(``,!0),j(t).player.researchQueue.length>0?(l(),N(`div`,ro,[r[7]||=M(`div`,{class:`h-2 w-2 rounded-full bg-blue-500 animate-pulse`},null,-1),M(`span`,io,b(j(p)(`queue.researching`)),1)])):T(``,!0)])])])],2)):T(``,!0),S(be,{"enter-active-class":`transition-all duration-300 ease-out`,"enter-from-class":`opacity-0 -translate-y-2`,"enter-to-class":`opacity-100 translate-y-0`,"leave-active-class":`transition-all duration-200 ease-in`,"leave-from-class":`opacity-100 translate-y-0`,"leave-to-class":`opacity-0 -translate-y-2`},{default:g(()=>[L.value&&k.value?(l(),N(`div`,{key:0,class:v([`fixed top-[60px] right-0 left-0 z-30 bg-card border-b px-4 py-3 shadow-md lg:hidden`,O.value?`lg:left-[var(--sidebar-width)]`:`lg:left-[var(--sidebar-width-icon)]`])},[M(`div`,ao,[(l(),N(A,null,m(ct,e=>M(`div`,{key:e.key,class:`bg-muted/50 rounded-lg p-2.5`},[M(`div`,oo,[S(yr,{type:e.key,size:`md`},null,8,[`type`]),M(`span`,so,b(j(p)(`resources.${e.key}`)),1)]),M(`div`,co,[e.key===`energy`?(l(),N(A,{key:0},[M(`p`,{class:v([`text-sm font-semibold`,z.value>=0?`text-green-600 dark:text-green-400`:`text-red-600 dark:text-red-400`])},b(z.value>=0?`+`:``)+b(j(Z)(z.value)),3),M(`p`,lo,b(j(p)(`resources.production`))+`: `+b(j(Z)(R.value?.energy||0))+` / `+b(j(Z)(at.value)),1)],64)):(l(),N(A,{key:1},[M(`p`,{class:v([`text-sm font-semibold`,j(Kr)(L.value.resources[e.key],it.value?.[e.key]||1/0)])},b(j(Z)(L.value.resources[e.key])),3),M(`p`,uo,b(j(p)(`resources.capacity`))+`: `+b(j(Z)(it.value?.[e.key]||0)),1),M(`p`,fo,b(j(p)(`resources.production`))+`: +`+b(j(Z)(Math.round((R.value?.[e.key]||0)/60)))+`/`+b(j(p)(`resources.perMinute`)),1)],64))])])),64))])],2)):T(``,!0)]),_:1}),j(t).player.incomingFleetAlerts&&j(t).player.incomingFleetAlerts.length>0?(l(),y(Hn,{key:1,alerts:j(t).player.incomingFleetAlerts,onMarkAsRead:Ue},null,8,[`alerts`])):T(``,!0),L.value&&(L.value.buildQueue.length>0||j(t).player.researchQueue.length>0)?(l(),N(`div`,po,[M(`div`,mo,[(l(!0),N(A,null,m(L.value.buildQueue,e=>(l(),N(`div`,{key:e.id,class:`space-y-1.5`},[M(`div`,ho,[M(`div`,go,[r[8]||=M(`div`,{class:`h-2 w-2 rounded-full bg-green-500 animate-pulse flex-shrink-0`},null,-1),M(`span`,_o,b(ht(e)),1),M(`span`,vo,[e.type===`ship`||e.type===`defense`?(l(),N(A,{key:0},[x(` → `+b(j(p)(`queue.quantity`))+` `+b(e.quantity),1)],64)):(l(),N(A,{key:1},[x(`→ `+b(j(p)(`queue.level`))+` `+b(e.targetLevel),1)],64))])]),M(`div`,yo,[M(`span`,bo,b(j(qr)(gt(e))),1),S(j(W),{onClick:t=>vt(e.id),variant:`ghost`,size:`sm`,class:`h-5 sm:h-6 px-1.5 sm:px-2 text-[10px] sm:text-xs`},{default:g(()=>[x(b(j(p)(`queue.cancel`)),1)]),_:1},8,[`onClick`])])]),S(j(On),{"model-value":_t(e),class:`h-1.5`},null,8,[`model-value`])]))),128)),(l(!0),N(A,null,m(j(t).player.researchQueue,e=>(l(),N(`div`,{key:e.id,class:`space-y-1.5`},[M(`div`,xo,[M(`div`,So,[r[9]||=M(`div`,{class:`h-2 w-2 rounded-full bg-blue-500 animate-pulse flex-shrink-0`},null,-1),M(`span`,Co,b(ht(e)),1),M(`span`,wo,` → `+b(j(p)(`queue.level`))+` `+b(e.targetLevel),1)]),M(`div`,To,[M(`span`,Eo,b(j(qr)(gt(e))),1),S(j(W),{onClick:t=>yt(e.id),variant:`ghost`,size:`sm`,class:`h-5 sm:h-6 px-1.5 sm:px-2 text-[10px] sm:text-xs`},{default:g(()=>[x(b(j(p)(`queue.cancel`)),1)]),_:1},8,[`onClick`])])]),S(j(On),{"model-value":_t(e),class:`h-1.5`},null,8,[`model-value`])]))),128))])])):T(``,!0),M(`main`,Do,[M(`div`,Oo,[S(j(We))])])])]),_:1}),S(j(br),{open:se.value,"onUpdate:open":r[2]||=e=>se.value=e},{default:g(()=>[S(j(Cr),null,{default:g(()=>[S(j(Er),null,{default:g(()=>[S(j(Dr),null,{default:g(()=>[x(b(h.value),1)]),_:1}),S(j(wr),{class:`whitespace-pre-line`},{default:g(()=>[x(b(_e.value),1)]),_:1})]),_:1}),S(j(Tr),null,{default:g(()=>[S(j(Sr),null,{default:g(()=>[x(b(j(p)(`common.cancel`)),1)]),_:1}),S(j(xr),{onClick:w},{default:g(()=>[x(b(j(p)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),S(fa),S(_a,{open:Se.value,"onUpdate:open":r[3]||=e=>Se.value=e,"version-info":C.value},null,8,[`open`,`version-info`]),S(va,{position:`top-center`})]),_:1},8,[`open`]))}}),[[`__scopeId`,`data-v-647bf304`]]),Mo=Ge({history:Ue(),routes:[{path:`/`,name:`overview`,component:()=>$(()=>import(`./OverviewView-D7lWE9IR.js`),__vite__mapDeps([5,6,1,2,3,4,7,8,9,10,11,12,13,14,15]),import.meta.url)},{path:`/buildings`,name:`buildings`,component:()=>$(()=>import(`./BuildingsView-BwpaZTPf.js`),__vite__mapDeps([16,6,1,2,3,4,7,8,9,10,11,17,12,18,15,13]),import.meta.url)},{path:`/research`,name:`research`,component:()=>$(()=>import(`./ResearchView-BoGXU7Gy.js`),__vite__mapDeps([19,6,1,2,3,4,7,8,9,10,11,17,12,20,18,15,21,13]),import.meta.url)},{path:`/shipyard`,name:`shipyard`,component:()=>$(()=>import(`./ShipyardView-DRH89hEQ.js`),__vite__mapDeps([22,6,1,2,3,4,7,8,9,10,11,17,12,20,18,15,21,13]),import.meta.url)},{path:`/defense`,name:`defense`,component:()=>$(()=>import(`./DefenseView-aCDrCjw8.js`),__vite__mapDeps([23,6,1,2,3,4,7,8,9,10,11,17,12,20,18,15,21,13]),import.meta.url)},{path:`/fleet`,name:`fleet`,component:()=>$(()=>import(`./FleetView-BzElc0kX.js`),__vite__mapDeps([24,6,1,2,3,4,7,8,9,10,11,17,12,20,21,13,15,14]),import.meta.url)},{path:`/officers`,name:`officers`,component:()=>$(()=>import(`./OfficersView-CXh701uW.js`),__vite__mapDeps([25,6,1,2,3,4,7,8,9,10,11,12,13,15]),import.meta.url)},{path:`/battle-simulator`,name:`battle-simulator`,component:()=>$(()=>import(`./BattleSimulatorView-BMgbGRUI.js`),__vite__mapDeps([26,6,1,2,3,4,7,8,9,10,11,17,12,27,28,15,13,14]),import.meta.url)},{path:`/messages`,name:`messages`,component:()=>$(()=>import(`./MessagesView-w53RKU-r.js`),__vite__mapDeps([29,6,1,2,3,4,7,8,9,10,11,17,12,27,28,15,13,14]),import.meta.url)},{path:`/galaxy`,name:`galaxy`,component:()=>$(()=>import(`./GalaxyView-LGfalWWd.js`),__vite__mapDeps([30,6,1,2,3,4,7,8,9,10,11,17,12,20,13,31,28]),import.meta.url)},{path:`/diplomacy`,name:`diplomacy`,component:()=>$(()=>import(`./DiplomacyView-BZEvKDfM.js`),__vite__mapDeps([32,6,1,2,3,4,7,8,9,10,11,17,12,20,13,14]),import.meta.url)},{path:`/settings`,name:`settings`,component:()=>$(()=>import(`./SettingsView-CqA4xeYn.js`),__vite__mapDeps([33,6,1,2,3,4,7,8,9,10,11,17,12,13]),import.meta.url)},{path:`/gm`,name:`gm`,component:()=>$(()=>import(`./GMView-BMhV90vD.js`),__vite__mapDeps([34,6,1,2,3,4,7,8,9,10,11,17,12,20,13,35,31,14,15]),import.meta.url)},{path:`/:pathMatch(.*)*`,name:`not-found`,component:()=>$(()=>import(`./NotFoundView-BqreQe6E.js`),__vite__mapDeps([36,6,1,2,3,4,7,8,10,11,17,12,20,35]),import.meta.url)}]}),No=Se(jo),Po=Be();Po.use(He),No.use(Po),No.use(Mo),No.mount(`#app`);export{bn as $,Er as A,ur as B,Lr as C,kr as D,Ar as E,xr as F,On as G,jn as H,br as I,W as J,En as K,yr as L,wr as M,Cr as N,Or as O,Sr as P,xn as Q,fr as R,Rr as S,jr as T,An as U,or as V,kn as W,wn as X,U as Y,Sn as Z,Ur as _,Jr as a,Vr as b,Kr as c,X as d,V as et,Y as f,K as g,Wr as h,_a as i,Tr as j,Dr as k,Yr as l,q as m,xa as n,Z as o,J as p,Tn as q,ba as r,qr as s,$ as t,Gr as u,G as v,Mr as w,zr as x,Hr as y,dr as z}; \ No newline at end of file diff --git a/docs/assets/index-BT5w6et-.js b/docs/assets/index-BT5w6et-.js deleted file mode 100644 index 586711a..0000000 --- a/docs/assets/index-BT5w6et-.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./OverviewView-DdvtPdf7.js","./vendor-others-DTUzJ7S-.js","./game-logic-Bi1l7y4K.js","./game-config-CG6z6nnH.js","./rolldown-runtime-CIDIeb-o.js","./vendor-others-BMPyaZWq.css","./vendor-reka-ui-BEHIKScj.js","./vendor-vueuse-CJcfYqoW.js","./vendor-crypto-CQM8pryk.js","./vendor-utils-BlvnUqQX.js","./vendor-pinia-DqhKuBjp.js","./CardDescription-BSLS07AU.js","./TabsTrigger-DrosU7aN.js","./useGameConfig-b98LOtBY.js","./game-i18n-Dr0JspcV.js","./BuildingsView-4mX0ZiqE.js","./vendor-icons-z9V6Jdbh.js","./CardUnlockOverlay-DYfgGY6J.js","./ResearchView-BEvEoPdM.js","./vendor-vue-router-1sDnnIWZ.js","./UnlockRequirement-CoWPiUl8.js","./ShipyardView-C8y8F-rK.js","./DefenseView-BuYOjWBp.js","./FleetView-D6gRUTGU.js","./OfficersView-gOtt9blg.js","./BattleSimulatorView-C7D7Sz5R.js","./BattleReportDialog-CGjL16c6.js","./TooltipProvider-BwjgS8_x.js","./MessagesView-Czwj26_i.js","./GalaxyView-Yqd2o_zC.js","./SelectValue-DmEWUfvu.js","./DiplomacyView-Bz3CIKaK.js","./SettingsView-yJRibE1k.js","./GMView-DWcaM1NY.js"])))=>i.map(i=>d[i]); -import{i as e}from"./rolldown-runtime-CIDIeb-o.js";import{$ as t,$t as n,A as r,B as i,Bt as a,Cn as o,Ct as s,Dn as c,En as l,F as u,Ft as d,G as f,Gn as p,Gt as m,H as ee,It as te,Jn as h,Jt as g,K as ne,Ln as _,Lt as re,M as v,Mn as ie,Mt as ae,N as oe,Nt as se,Ot as ce,P as le,Pt as ue,Qt as y,St as de,U as b,V as fe,Vt as pe,W as me,X as x,Xn as S,Xt as C,Yn as he,Yt as w,Zt as T,_n as E,_t as D,at as ge,ct as _e,en as O,et as k,f as ve,fn as ye,gn as A,h as be,it as xe,j as Se,kt as Ce,l as we,ln as j,lt as M,mn as N,mt as Te,pn as Ee,pt as P,qn as F,rn as I,rt as De,st as Oe,tn as L,tt as ke,vn as Ae,vt as je,yt as Me,z as Ne,zt as Pe}from"./game-logic-Bi1l7y4K.js";import{n as Fe,r as Ie,t as Le}from"./vendor-pinia-DqhKuBjp.js";import{i as Re,n as ze,r as Be,t as Ve}from"./vendor-vue-router-1sDnnIWZ.js";import{t as He}from"./vendor-crypto-CQM8pryk.js";import{n as Ue,r as We,t as Ge}from"./game-i18n-Dr0JspcV.js";import{R as Ke,c as R,t as qe,z as Je}from"./vendor-others-DTUzJ7S-.js";import{$ as z,A as Ye,B as Xe,C as Ze,G as Qe,H as $e,J as et,K as tt,L as nt,M as rt,N as it,P as at,Q as ot,R as st,U as ct,V as lt,W as ut,X as dt,Y as ft,Z as pt,a as mt,et as ht,i as gt,j as _t,n as vt,o as yt,q as bt,r as xt,t as St,tt as Ct,w as wt,z as Tt}from"./vendor-reka-ui-BEHIKScj.js";import{n as Et}from"./vendor-utils-BlvnUqQX.js";import{i as Dt,n as Ot,r as kt,t as At}from"./vendor-vueuse-CJcfYqoW.js";import{A as jt,C as Mt,E as Nt,F as Pt,H as Ft,I as It,J as Lt,N as Rt,O as zt,S as Bt,V as Vt,_ as Ht,c as Ut,f as Wt,h as Gt,j as Kt,k as qt,l as Jt,m as Yt,n as Xt,o as Zt,p as Qt,r as $t,t as en,u as tn,w as nn,x as rn}from"./vendor-icons-z9V6Jdbh.js";import{l as an,m as B,r as on}from"./game-config-CG6z6nnH.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),``+new URL(`logo-Cz0cNqhe.svg`,import.meta.url).href;var V={name:`ogame-vue-ts`,title:`OGame-Vue-Ts`,qq:`920930589`,id:`2zBlHPUA6E`,author:{name:`setube`,email:`1962257451@qq.com`},private:!0,version:`1.2.0`,buildDate:`2025/12/15 08:18:13`,main:`dist-electron/main.js`,type:`module`,scripts:{dev:`vite --port 25121`,build:`vue-tsc -b && vite build && node update-build-date.js`,preview:`vite preview`,"build:server":`pnpm run build && go build`,"build:electron":`cross-env ELECTRON_BUILD=1 pnpm run build && electron-builder`},dependencies:{"@tailwindcss/vite":`^4.1.17`,"@tanstack/vue-table":`^8.21.3`,"@vueuse/core":`^14.1.0`,"class-variance-authority":`^0.7.1`,clsx:`^2.1.1`,"crypto-js":`^4.2.0`,"file-saver":`^2.0.5`,finalhandler:`^2.1.1`,"lucide-vue-next":`^0.556.0`,pinia:`^3.0.4`,"pinia-plugin-persistedstate":`^4.7.1`,"reka-ui":`^2.6.1`,"serve-static":`^2.2.0`,"tailwind-merge":`^3.4.0`,tailwindcss:`^4.1.17`,vue:`^3.5.24`,"vue-router":`4`,"vue-sonner":`^2.0.9`},devDependencies:{"@types/crypto-js":`^4.2.2`,"@types/file-saver":`^2.0.7`,"@types/node":`^24.10.2`,"@vitejs/plugin-vue":`^6.0.1`,"@vue/tsconfig":`^0.8.1`,"cross-env":`^7.0.3`,electron:`^39.2.7`,"electron-builder":`^26.0.12`,"electron-vite":`^5.0.0`,"tw-animate-css":`^1.4.0`,typescript:`~5.9.3`,vite:`npm:rolldown-vite@7.2.5`,"vite-plugin-electron":`^0.29.0`,"vite-plugin-electron-renderer":`^0.14.6`,"vue-tsc":`^3.1.4`},pnpm:{overrides:{vite:`npm:rolldown-vite@7.2.5`},onlyBuiltDependencies:[`electron-winstaller`,`esbuild`,`vue-demi`],ignoredBuiltDependencies:[`electron`]},packageManager:`pnpm@10.13.1+sha512.37ebf1a5c7a30d5fabe0c5df44ee8da4c965ca0c5af3dbab28c3a1681b70a256218d05c81c9c0dcf767ef6b8551eb5b960042b9ed4300c59242336377e01cfad`,build:{appId:`games.wenzi.ogame`,productName:`OGame`,directories:{output:`pkg`},win:{target:`nsis`,icon:`public/favicon.ico`,verifyUpdateCodeSignature:!1,artifactName:"${productName}-Setup.${ext}"},mac:{target:[`dmg`,`zip`],artifactName:"${productName}-mac.${ext}"},linux:{target:[`AppImage`,`deb`],artifactName:"${productName}-linux.${ext}"}}},sn=e(He(),1);const cn=e=>{try{let t=JSON.stringify(e);return sn.default.AES.encrypt(t,V.name).toString()}catch(e){console.error(e)}return``},ln=e=>{try{let t=sn.default.AES.decrypt(e,V.name).toString(sn.default.enc.Utf8);return JSON.parse(t)}catch(e){return console.error(e),{}}},H=Ie(`game`,{state:()=>({gameTime:Date.now(),isPaused:!1,player:{id:`player1`,name:``,planets:[],technologies:{},officers:{},researchQueue:[],fleetMissions:[],battleReports:[],spyReports:[],spiedNotifications:[],npcActivityNotifications:[],missionReports:[],incomingFleetAlerts:[],giftNotifications:[],giftRejectedNotifications:[],points:0},currentPlanetId:``,isDark:``,locale:`zh-CN`}),getters:{currentPlanet(){return this.player.planets.find(e=>e.id===this.currentPlanetId)},getMoonForPlanet(){return e=>this.player.planets.find(t=>t.parentPlanetId===e&&t.isMoon)}},persist:{key:V.name,storage:localStorage,serializer:{serialize:e=>cn(e),deserialize:e=>ln(e)}}});var U=_(!1);const un=()=>{let e=H();ye(()=>{e.isDark?U.value=e.isDark===`dark`:(U.value=window.matchMedia(`(prefers-color-scheme: dark)`).matches,e.isDark=U.value?`dark`:`light`),t()}),o(U,()=>{t(),e.isDark=U.value?`dark`:`light`});let t=()=>{U.value?document.documentElement.classList.add(`dark`):document.documentElement.classList.remove(`dark`)};return{isDark:U,toggleTheme:()=>{U.value=!U.value}}},dn=()=>{let e=H(),t=g(()=>e.locale),n=g(()=>We[t.value]);return{t:e=>{let t=e.split(`.`),r=n.value;for(let n of t)if(r&&typeof r==`object`&&n in r)r=r[n];else return e;return typeof r==`string`?r:e},locale:t,setLocale:t=>{e.locale=t},messages:n}},W=(...e)=>Et(Je(e));var G=L({__name:`Button`,props:{variant:{},size:{},class:{},asChild:{type:Boolean},as:{default:`button`}},setup(e){let t=e;return(n,r)=>(N(),C(p(ot),{"data-slot":`button`,as:e.as,"as-child":e.asChild,class:F(p(W)(p(fn)({variant:e.variant,size:e.size}),t.class))},{default:l(()=>[E(n.$slots,`default`)]),_:3},8,[`as`,`as-child`,`class`]))}});const fn=Ke(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60`,outline:`border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,sm:`h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5`,lg:`h-10 rounded-md px-6 has-[>svg]:px-4`,icon:`size-9`,"icon-sm":`size-8`,"icon-lg":`size-10`}},defaultVariants:{variant:`default`,size:`default`}});var pn=L({__name:`Badge`,props:{asChild:{type:Boolean},as:{},variant:{},class:{}},setup(e){let t=e,n=R(t,`class`);return(r,i)=>(N(),C(p(ot),j({"data-slot":`badge`,class:p(W)(p(mn)({variant:e.variant}),t.class)},p(n)),{default:l(()=>[E(r.$slots,`default`)]),_:3},16,[`class`]))}});const mn=Ke(`inline-flex items-center justify-center rounded-sm border h-5 min-w-5 px-1 text-xs font-medium tabular-nums select-none w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90`,secondary:`border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90`,destructive:`border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60`,outline:`text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground`}},defaultVariants:{variant:`default`}});var hn=L({__name:`Progress`,props:{modelValue:{default:0},max:{},getValueLabel:{},getValueText:{},asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=R(t,`class`);return(e,r)=>(N(),C(p(wt),j({"data-slot":`progress`},p(n),{class:p(W)(`bg-primary/20 relative h-2 w-full overflow-hidden rounded-full`,t.class)}),{default:l(()=>[O(p(Ze),{"data-slot":`progress-indicator`,class:`bg-primary h-full w-full flex-1 transition-all`,style:he(`transform: translateX(-${100-(t.modelValue??0)}%);`)},null,8,[`style`])]),_:1},16,[`class`]))}}),gn=L({__name:`Popover`,props:{defaultOpen:{type:Boolean},open:{type:Boolean},modal:{type:Boolean}},emits:[`update:open`],setup(e,{emit:t}){let n=z(e,t);return(e,t)=>(N(),C(p(at),j({"data-slot":`popover`},p(n)),{default:l(t=>[E(e.$slots,`default`,h(I(t)))]),_:3},16))}}),_n=L({inheritAttrs:!1,__name:`PopoverContent`,props:{forceMount:{type:Boolean},side:{},sideOffset:{default:4},sideFlip:{type:Boolean},align:{default:`center`},alignOffset:{},alignFlip:{type:Boolean},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},disableUpdateOnLayoutShift:{type:Boolean},prioritizePosition:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},disableOutsidePointerEvents:{type:Boolean},class:{}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=z(R(n,`class`),r);return(e,t)=>(N(),C(p(rt),null,{default:l(()=>[O(p(it),j({"data-slot":`popover-content`},{...e.$attrs,...p(i)},{class:p(W)(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md origin-(--reka-popover-content-transform-origin) outline-hidden`,n.class)}),{default:l(()=>[E(e.$slots,`default`)]),_:3},16,[`class`])]),_:3}))}}),vn=L({__name:`PopoverTrigger`,props:{asChild:{type:Boolean},as:{}},setup(e){let t=e;return(e,n)=>(N(),C(p(_t),j({"data-slot":`popover-trigger`},t),{default:l(()=>[E(e.$slots,`default`)]),_:3},16))}}),yn=L({__name:`Sheet`,props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean}},emits:[`update:open`],setup(e,{emit:t}){let n=z(e,t);return(e,t)=>(N(),C(p(pt),j({"data-slot":`sheet`},p(n)),{default:l(t=>[E(e.$slots,`default`,h(I(t)))]),_:3},16))}}),bn=L({__name:`SheetOverlay`,props:{forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=R(t,`class`);return(e,r)=>(N(),C(p(bt),j({"data-slot":`sheet-overlay`,class:p(W)(`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80`,t.class)},p(n)),{default:l(()=>[E(e.$slots,`default`)]),_:3},16,[`class`]))}}),xn=L({inheritAttrs:!1,__name:`SheetContent`,props:{class:{},side:{default:`right`},forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=z(R(n,`class`,`side`),r);return(t,r)=>(N(),C(p(tt),null,{default:l(()=>[O(bn),O(p(ft),j({"data-slot":`sheet-content`,class:p(W)(`bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500`,e.side===`right`&&`data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm`,e.side===`left`&&`data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm`,e.side===`top`&&`data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b`,e.side===`bottom`&&`data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t`,n.class)},{...t.$attrs,...p(i)}),{default:l(()=>[E(t.$slots,`default`),O(p(dt),{class:`ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none`},{default:l(()=>[O(p(Xt),{class:`size-4`}),r[0]||=w(`span`,{class:`sr-only`},`Close`,-1)]),_:1})]),_:3},16,[`class`])]),_:3}))}}),Sn=L({__name:`SheetDescription`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=R(t,`class`);return(e,r)=>(N(),C(p(et),j({"data-slot":`sheet-description`,class:p(W)(`text-muted-foreground text-sm`,t.class)},p(n)),{default:l(()=>[E(e.$slots,`default`)]),_:3},16,[`class`]))}}),Cn=L({__name:`SheetHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`div`,{"data-slot":`sheet-header`,class:F(p(W)(`flex flex-col gap-1.5 p-4`,t.class))},[E(e.$slots,`default`)],2))}}),wn=L({__name:`SheetTitle`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=R(t,`class`);return(e,r)=>(N(),C(p(Qe),j({"data-slot":`sheet-title`,class:p(W)(`text-foreground font-semibold`,t.class)},p(n)),{default:l(()=>[E(e.$slots,`default`)]),_:3},16,[`class`]))}});const Tn=`sidebar_state`,[En,Dn]=Ct(`Sidebar`);var On={class:`flex h-full w-full flex-col`},kn=[`data-state`,`data-collapsible`,`data-variant`,`data-side`],An={"data-sidebar":`sidebar`,class:`bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm`},jn=L({inheritAttrs:!1,__name:`Sidebar`,props:{side:{default:`left`},variant:{default:`sidebar`},collapsible:{default:`offcanvas`},class:{}},setup(e){let t=e,{isMobile:r,state:i,openMobile:a,setOpenMobile:o}=En();return(s,c)=>e.collapsible===`none`?(N(),y(`div`,j({key:0,"data-slot":`sidebar`,class:p(W)(`bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col`,t.class)},s.$attrs),[E(s.$slots,`default`)],16)):p(r)?(N(),C(p(yn),j({key:1,open:p(a)},s.$attrs,{"onUpdate:open":p(o)}),{default:l(()=>[O(p(xn),{"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,side:e.side,class:`bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden`,style:he({"--sidebar-width":p(`18rem`)})},{default:l(()=>[O(Cn,{class:`sr-only`},{default:l(()=>[O(wn,null,{default:l(()=>[...c[0]||=[n(`Sidebar`,-1)]]),_:1}),O(Sn,null,{default:l(()=>[...c[1]||=[n(`Displays the mobile sidebar.`,-1)]]),_:1})]),_:1}),w(`div`,On,[E(s.$slots,`default`)])]),_:3},8,[`side`,`style`])]),_:3},16,[`open`,`onUpdate:open`])):(N(),y(`div`,{key:2,class:`group peer text-sidebar-foreground hidden md:block`,"data-slot":`sidebar`,"data-state":p(i),"data-collapsible":p(i)===`collapsed`?e.collapsible:``,"data-variant":e.variant,"data-side":e.side},[w(`div`,{class:F(p(W)(`relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear`,`group-data-[collapsible=offcanvas]:w-0`,`group-data-[side=right]:rotate-180`,e.variant===`floating`||e.variant===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`))},null,2),w(`div`,j({class:p(W)(`fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex`,e.side===`left`?`left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]`:`right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]`,e.variant===`floating`||e.variant===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l`,t.class)},s.$attrs),[w(`div`,An,[E(s.$slots,`default`)])],16)],8,kn))}}),Mn=L({__name:`SidebarContent`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,class:F(p(W)(`flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden`,t.class))},[E(e.$slots,`default`)],2))}}),Nn=L({__name:`SidebarFooter`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,class:F(p(W)(`flex flex-col gap-2 p-2`,t.class))},[E(e.$slots,`default`)],2))}}),Pn=L({__name:`SidebarGroup`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,class:F(p(W)(`relative flex w-full min-w-0 flex-col p-2`,t.class))},[E(e.$slots,`default`)],2))}}),Fn=L({__name:`SidebarHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`div`,{"data-slot":`sidebar-header`,"data-sidebar":`header`,class:F(p(W)(`flex flex-col gap-2 p-2`,t.class))},[E(e.$slots,`default`)],2))}}),In=L({__name:`Input`,props:{defaultValue:{},modelValue:{},class:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,r=Dt(n,`modelValue`,t,{passive:!0,defaultValue:n.defaultValue});return(e,t)=>c((N(),y(`input`,{"onUpdate:modelValue":t[0]||=e=>ie(r)?r.value=e:null,"data-slot":`input`,class:F(p(W)(`file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm`,`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,`aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,n.class))},null,2)),[[a,p(r)]])}}),Ln=L({__name:`SidebarInset`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`main`,{"data-slot":`sidebar-inset`,class:F(p(W)(`bg-background relative flex w-full flex-1 flex-col`,`md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2`,t.class))},[E(e.$slots,`default`)],2))}}),Rn=L({__name:`SidebarMenu`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,class:F(p(W)(`flex w-full min-w-0 flex-col gap-1`,t.class))},[E(e.$slots,`default`)],2))}}),zn=L({__name:`SidebarMenuBadge`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`div`,{"data-slot":`sidebar-menu-badge`,"data-sidebar":`menu-badge`,class:F(p(W)(`text-sidebar-foreground pointer-events-none flex h-5 min-w-5 items-center justify-center rounded-sm px-1 text-xs font-medium tabular-nums select-none`,`peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground`,`absolute right-1`,`peer-data-[size=sm]/menu-button:top-1`,`peer-data-[size=default]/menu-button:top-1.5`,`peer-data-[size=lg]/menu-button:top-2.5`,`group-data-[collapsible=icon]:absolute group-data-[collapsible=icon]:right-0 group-data-[collapsible=icon]:-top-1 group-data-[collapsible=icon]:h-4 group-data-[collapsible=icon]:min-w-4`,t.class))},[E(e.$slots,`default`)],2))}}),Bn=L({__name:`Tooltip`,props:{defaultOpen:{type:Boolean},open:{type:Boolean},delayDuration:{},disableHoverableContent:{type:Boolean},disableClosingTrigger:{type:Boolean},disabled:{type:Boolean},ignoreNonKeyboardFocus:{type:Boolean}},emits:[`update:open`],setup(e,{emit:t}){let n=z(e,t);return(e,t)=>(N(),C(p(gt),j({"data-slot":`tooltip`},p(n)),{default:l(t=>[E(e.$slots,`default`,h(I(t)))]),_:3},16))}}),Vn=L({inheritAttrs:!1,__name:`TooltipContent`,props:{forceMount:{type:Boolean},ariaLabel:{},asChild:{type:Boolean},as:{},side:{},sideOffset:{default:4},align:{},alignOffset:{},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},class:{}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let n=e,r=t,i=z(R(n,`class`),r);return(e,t)=>(N(),C(p(vt),null,{default:l(()=>[O(p(xt),j({"data-slot":`tooltip-content`},{...p(i),...e.$attrs},{class:p(W)(`bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance`,n.class)}),{default:l(()=>[E(e.$slots,`default`),O(p(yt),{class:`bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]`})]),_:3},16,[`class`])]),_:3}))}}),Hn=L({__name:`TooltipTrigger`,props:{reference:{},asChild:{type:Boolean},as:{}},setup(e){let t=e;return(e,n)=>(N(),C(p(St),j({"data-slot":`tooltip-trigger`},t),{default:l(()=>[E(e.$slots,`default`)]),_:3},16))}}),Un=L({__name:`SidebarMenuButtonChild`,props:{variant:{default:`default`},size:{default:`default`},isActive:{type:Boolean},class:{},asChild:{type:Boolean},as:{default:`button`}},setup(e){let t=e;return(n,r)=>(N(),C(p(ot),j({"data-slot":`sidebar-menu-button`,"data-sidebar":`menu-button`,"data-size":e.size,"data-active":e.isActive,class:p(W)(p(Jn)({variant:e.variant,size:e.size}),t.class),as:e.as,"as-child":e.asChild},n.$attrs),{default:l(()=>[E(n.$slots,`default`)]),_:3},16,[`data-size`,`data-active`,`class`,`as`,`as-child`]))}}),Wn=L({inheritAttrs:!1,__name:`SidebarMenuButton`,props:{variant:{default:`default`},size:{default:`default`},isActive:{type:Boolean},class:{},asChild:{type:Boolean},as:{default:`button`},tooltip:{}},setup(e){let t=e,{isMobile:r,state:i}=En(),a=R(t,`tooltip`);return(t,o)=>e.tooltip?(N(),C(p(Bn),{key:1},{default:l(()=>[O(p(Hn),{"as-child":``},{default:l(()=>[O(Un,h(I({...p(a),...t.$attrs})),{default:l(()=>[E(t.$slots,`default`)]),_:3},16)]),_:3}),O(p(Vn),{side:`right`,align:`center`,hidden:p(i)!==`collapsed`||p(r)},{default:l(()=>[typeof e.tooltip==`string`?(N(),y(m,{key:0},[n(S(e.tooltip),1)],64)):(N(),C(Ae(e.tooltip),{key:1}))]),_:1},8,[`hidden`])]),_:3})):(N(),C(Un,h(j({key:0},{...p(a),...t.$attrs})),{default:l(()=>[E(t.$slots,`default`)]),_:3},16))}}),Gn=L({__name:`SidebarMenuItem`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,class:F(p(W)(`group/menu-item relative`,t.class))},[E(e.$slots,`default`)],2))}}),Kn=L({__name:`SidebarProvider`,props:{defaultOpen:{type:Boolean,default:!At?.cookie.includes(`${Tn}=false`)},open:{type:Boolean,default:void 0},class:{}},emits:[`update:open`],setup(e,{emit:t}){let n=e,r=t,i=kt(`(max-width: 768px)`),a=_(!1),o=Dt(n,`open`,r,{defaultValue:n.defaultOpen??!1,passive:n.open===void 0}),s=e=>{o.value=e,document.cookie=`${Tn}=${o.value}; path=/; max-age=604800`},c=e=>{a.value=e},u=()=>i.value?c(!a.value):s(!o.value);return Ot(`keydown`,e=>{e.key===`b`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),u())}),Dn({state:g(()=>o.value?`expanded`:`collapsed`),open:o,setOpen:s,isMobile:i,openMobile:a,setOpenMobile:c,toggleSidebar:u}),(e,t)=>(N(),C(p(mt),{"delay-duration":0},{default:l(()=>[w(`div`,j({"data-slot":`sidebar-wrapper`,style:{"--sidebar-width":p(`16rem`),"--sidebar-width-icon":p(`3rem`)},class:p(W)(`group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full`,n.class)},e.$attrs),[E(e.$slots,`default`)],16)]),_:3}))}}),qn=L({__name:`SidebarTrigger`,props:{class:{}},setup(e){let t=e,{toggleSidebar:n}=En();return(e,r)=>(N(),C(p(G),{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,size:`icon`,class:F(p(W)(`h-7 w-7`,t.class)),onClick:p(n)},{default:l(()=>[O(p(rn)),r[0]||=w(`span`,{class:`sr-only`},`Toggle Sidebar`,-1)]),_:1},8,[`class`,`onClick`]))}});const Jn=Ke(`peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0`,{variants:{variant:{default:`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-8 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}});var Yn=L({__name:`ResourceIcon`,props:{type:{},size:{default:`md`}},setup(e){let t={metal:`bg-gradient-to-br from-slate-400 to-slate-600`,crystal:`bg-gradient-to-br from-cyan-400 to-blue-600`,deuterium:`bg-gradient-to-br from-green-400 to-emerald-600`,darkMatter:`bg-gradient-to-br from-purple-600 to-indigo-900`,energy:`bg-gradient-to-br from-yellow-400 to-orange-500`},n={sm:`w-3 h-3`,md:`w-4 h-4`,lg:`w-5 h-5`};return(r,i)=>(N(),y(`div`,{class:F([t[e.type],n[e.size],`rounded shadow-sm`])},null,2))}}),Xn=L({__name:`Dialog`,props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean}},emits:[`update:open`],setup(e,{emit:t}){let n=z(e,t);return(e,t)=>(N(),C(p(pt),j({"data-slot":`dialog`},p(n)),{default:l(t=>[E(e.$slots,`default`,h(I(t)))]),_:3},16))}}),Zn=L({__name:`DialogOverlay`,props:{forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=R(t,`class`);return(e,r)=>(N(),C(p(bt),j({"data-slot":`dialog-overlay`},p(n),{class:p(W)(`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80`,t.class)}),{default:l(()=>[E(e.$slots,`default`)]),_:3},16,[`class`]))}}),Qn=L({__name:`DialogDescription`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=ht(R(t,`class`));return(e,r)=>(N(),C(p(et),j({"data-slot":`dialog-description`},p(n),{class:p(W)(`text-muted-foreground text-sm`,t.class)}),{default:l(()=>[E(e.$slots,`default`)]),_:3},16,[`class`]))}}),$n=L({__name:`DialogHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`div`,{"data-slot":`dialog-header`,class:F(p(W)(`flex flex-col gap-2 text-center sm:text-left`,t.class))},[E(e.$slots,`default`)],2))}}),er={class:`shrink-0 px-4 pt-4 pb-3 sm:px-6 sm:pt-6 sm:pb-4 border-b`},tr={class:`overflow-y-auto px-4 py-3 sm:px-6 sm:py-4`},nr={key:0,class:`shrink-0 px-4 pb-4 pt-3 sm:px-6 sm:pb-6 sm:pt-4 border-t`},rr=L({inheritAttrs:!1,__name:`ScrollableDialogContent`,props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},containerClass:{},showCloseButton:{type:Boolean,default:!0}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=z(R(n,`containerClass`),r);return(t,n)=>(N(),C(p(tt),null,{default:l(()=>[O(Zn),O(p(ft),j({"data-slot":`scrollable-dialog-content`},{...t.$attrs,...p(i)},{class:p(W)(`bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 w-[calc(100vw-3rem)] translate-x-[-50%] translate-y-[-50%] rounded-lg border shadow-lg duration-200 sm:w-auto flex flex-col p-0`,e.containerClass)}),{default:l(()=>[w(`div`,er,[E(t.$slots,`header`)]),w(`div`,tr,[E(t.$slots,`default`)]),t.$slots.footer?(N(),y(`div`,nr,[E(t.$slots,`footer`)])):T(``,!0),e.showCloseButton?(N(),C(p(dt),{key:1,"data-slot":`dialog-close`,class:`ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 z-10`},{default:l(()=>[O(p(Xt)),n[0]||=w(`span`,{class:`sr-only`},`Close`,-1)]),_:1})):T(``,!0)]),_:3},16,[`class`])]),_:3}))}}),ir=L({__name:`DialogTitle`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=ht(R(t,`class`));return(e,r)=>(N(),C(p(Qe),j({"data-slot":`dialog-title`},p(n),{class:p(W)(`text-lg leading-none font-semibold`,t.class)}),{default:l(()=>[E(e.$slots,`default`)]),_:3},16,[`class`]))}});const ar=Ie(`detailDialog`,{state:()=>({isOpen:!1,type:null,itemType:null,currentLevel:void 0}),actions:{openBuilding(e,t){this.isOpen=!0,this.type=`building`,this.itemType=e,this.currentLevel=t},openTechnology(e,t){this.isOpen=!0,this.type=`technology`,this.itemType=e,this.currentLevel=t},openShip(e){this.isOpen=!0,this.type=`ship`,this.itemType=e,this.currentLevel=void 0},openDefense(e){this.isOpen=!0,this.type=`defense`,this.itemType=e,this.currentLevel=void 0},close(){this.isOpen=!1,this.type=null,this.itemType=null,this.currentLevel=void 0}}});var or={"data-slot":`table-container`,class:`relative w-full overflow-auto`},sr=L({__name:`Table`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`div`,or,[w(`table`,{"data-slot":`table`,class:F(p(W)(`w-full caption-bottom text-sm`,t.class))},[E(e.$slots,`default`)],2)]))}}),cr=L({__name:`TableBody`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`tbody`,{"data-slot":`table-body`,class:F(p(W)(`[&_tr:last-child]:border-0`,t.class))},[E(e.$slots,`default`)],2))}}),K=L({__name:`TableCell`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`td`,{"data-slot":`table-cell`,class:F(p(W)(`p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,t.class))},[E(e.$slots,`default`)],2))}}),lr=L({__name:`TableRow`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`tr`,{"data-slot":`table-row`,class:F(p(W)(`hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors`,t.class))},[E(e.$slots,`default`)],2))}}),q=L({__name:`TableHead`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`th`,{"data-slot":`table-head`,class:F(p(W)(`text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,t.class))},[E(e.$slots,`default`)],2))}}),ur=L({__name:`TableHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`thead`,{"data-slot":`table-header`,class:F(p(W)(`[&_tr]:border-b`,t.class))},[E(e.$slots,`default`)],2))}}),J=L({__name:`Card`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`div`,{"data-slot":`card`,class:F(p(W)(`bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm`,t.class))},[E(e.$slots,`default`)],2))}}),Y=L({__name:`CardContent`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`div`,{"data-slot":`card-content`,class:F(p(W)(`px-6`,t.class))},[E(e.$slots,`default`)],2))}}),X=L({__name:`CardHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`div`,{"data-slot":`card-header`,class:F(p(W)(`@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6`,t.class))},[E(e.$slots,`default`)],2))}}),Z=L({__name:`CardTitle`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`h3`,{"data-slot":`card-title`,class:F(p(W)(`leading-none font-semibold`,t.class))},[E(e.$slots,`default`)],2))}}),dr=L({__name:`Label`,props:{for:{},asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=R(t,`class`);return(e,r)=>(N(),C(p(Ye),j({"data-slot":`label`},p(n),{class:p(W)(`flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,t.class)}),{default:l(()=>[E(e.$slots,`default`)]),_:3},16,[`class`]))}});const fr=(e,t=2)=>e>=0x38d7ea4c68000?(e/0x38d7ea4c68000).toFixed(t)+`Q`:e>=0xe8d4a51000?(e/0xe8d4a51000).toFixed(t)+`T`:e>=1e9?(e/1e9).toFixed(t)+`B`:e>=1e6?(e/1e6).toFixed(t)+`M`:e>=1e3?(e/1e3).toFixed(t)+`K`:Math.floor(e).toString(),pr=(e,t)=>{let n=e/t;return n>=1?`text-red-600 dark:text-red-400`:n>=.7?`text-yellow-600 dark:text-yellow-400`:``},mr=e=>{let t=365*86400,n=Math.floor(e/t);e%=t;let r=Math.floor(e/86400);e%=86400;let i=Math.floor(e/3600);e%=3600;let a=Math.floor(e/60),o=Math.floor(e%60),s=i.toString().padStart(2,`0`),c=a.toString().padStart(2,`0`),l=o.toString().padStart(2,`0`);return n>0?`${n}:${r}:${s}:${c}:${l}`:r>0?`${r}:${s}:${c}:${l}`:`${s}:${c}:${l}`},hr=e=>new Date(e).toLocaleString(`zh-CN`,{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}),gr=(e,t)=>et.value.toLocaleString());return(t,r)=>(N(),C(p(gn),null,{default:l(()=>[O(p(vn),{"as-child":``},{default:l(()=>[w(`span`,_r,S(p(fr)(e.value,1)),1)]),_:1}),O(p(_n),{class:`w-auto p-2`,side:`top`,align:`center`},{default:l(()=>[w(`p`,vr,S(n.value),1)]),_:1})]),_:1}))}}),yr={class:`space-y-4`},br={key:0,class:`border rounded-lg overflow-hidden`},xr={key:1},Sr={key:0,class:`text-green-600 dark:text-green-400`},Cr={key:1},wr={key:0,class:`text-red-600 dark:text-red-400`},Tr={key:1},Er={key:0,class:`text-blue-600 dark:text-blue-400`},Dr={key:1},Or={key:0,class:`text-blue-600 dark:text-blue-400`},kr={key:1},Ar={key:0,class:`text-green-600 dark:text-green-400`},jr={key:1},Mr={key:0,class:`text-cyan-600 dark:text-cyan-400`},Nr={key:1,class:`text-cyan-600 dark:text-cyan-400`},Pr={class:`text-indigo-600 dark:text-indigo-400`},Fr={class:`text-red-600 dark:text-red-400`},Ir={class:`text-blue-600 dark:text-blue-400`},Lr={class:`text-gray-600 dark:text-gray-400`},Rr={class:`text-purple-600 dark:text-purple-400`},zr={class:`text-blue-600 dark:text-blue-400`},Br={class:`text-green-600 dark:text-green-400`},Vr={class:`text-yellow-600 dark:text-yellow-400`},Hr={class:`text-indigo-600 dark:text-indigo-400`},Ur={class:`text-primary font-medium`},Wr={key:1,class:`grid grid-cols-2 gap-4`},Gr={class:`flex items-center justify-between text-sm`},Kr={class:`text-muted-foreground`},qr={class:`font-medium`},Jr={class:`flex items-center justify-between text-sm`},Yr={class:`text-muted-foreground`},Xr={class:`font-medium`},Zr={class:`flex items-center justify-between text-sm`},Qr={class:`text-muted-foreground`},$r={class:`font-medium`},ei={class:`text-3xl font-bold text-primary`},ti={class:`text-xs text-muted-foreground mt-1`},ni={key:2,class:`grid grid-cols-2 md:grid-cols-3 gap-4`},ri={class:`text-2xl font-bold`},ii={class:`text-2xl font-bold`},ai={class:`text-2xl font-bold`},oi={class:`text-2xl font-bold`},si={class:`text-2xl font-bold`},ci={class:`text-2xl font-bold`},li={key:3,class:`grid grid-cols-1 md:grid-cols-2 gap-4`},ui={class:`text-muted-foreground`},di={class:`font-medium`},fi={class:`flex items-center justify-between text-sm pt-2 border-t`},pi={class:`text-muted-foreground`},mi={class:`font-bold text-primary`},hi={class:`text-3xl font-bold`},gi={class:`text-xs text-muted-foreground mt-2`},_i={class:`flex items-center gap-4`},vi={class:`grid grid-cols-2 gap-4 pt-4 border-t`},yi={class:`space-y-2`},bi={class:`text-sm text-muted-foreground`},xi={class:`space-y-1 text-sm`},Si={class:`font-medium`},Ci={class:`space-y-2`},wi={class:`text-sm text-muted-foreground`},Ti={class:`text-xl font-bold`},Ei={class:`text-xs text-muted-foreground`},Di=L({__name:`ItemDetailView`,props:{type:{},itemType:{},currentLevel:{}},setup(e){let{t}=dn(),r=H(),i=e,a=_(1),o=[{key:`metal`},{key:`crystal`},{key:`deuterium`}],u=g(()=>r.currentPlanet),f=g(()=>s(r.player.officers,r.gameTime)),ee=g(()=>u.value&&u.value.buildings.roboticsFactory||0),h=g(()=>u.value&&u.value.buildings.naniteFactory||0),ne=g(()=>u.value&&u.value.buildings.researchLab||0),v=g(()=>({building:`buildings`,technology:`research`,ship:`shipyard`,defense:`defense`})[i.type]),ie=g(()=>i.type===`building`?i.itemType===`darkMatterCollector`:i.type===`technology`?i.itemType===`gravitonTechnology`:!1),oe=g(()=>{if(i.type!==`building`)return!1;let e=i.itemType;return[`metalMine`,`crystalMine`,`deuteriumSynthesizer`,`solarPlant`,`fusionReactor`,`darkMatterCollector`].includes(e)}),le=g(()=>{if(i.type!==`building`)return!1;let e=i.itemType;return[`metalMine`,`crystalMine`,`deuteriumSynthesizer`].includes(e)}),b=g(()=>{if(i.type!==`building`)return!1;let e=i.itemType;return[`metalStorage`,`crystalStorage`,`deuteriumTank`,`darkMatterCollector`,`darkMatterTank`].includes(e)}),fe=g(()=>i.type===`building`?i.itemType===`shipyard`:i.type===`technology`?i.itemType===`computerTechnology`:!1),me=g(()=>i.type===`building`?i.itemType===`naniteFactory`:!1),x=g(()=>{if(i.type===`building`){let e=i.itemType;return[`terraformer`,`lunarBase`].includes(e)}else if(i.type===`technology`)return i.itemType===`terraformingTechnology`;return!1}),he=g(()=>i.type===`building`?i.itemType===`missileSilo`:!1),E=g(()=>{if(i.type!==`building`)return!1;let e=i.itemType;return[`roboticsFactory`,`naniteFactory`].includes(e)}),D=g(()=>i.type===`building`?i.itemType===`researchLab`:i.type===`technology`?i.itemType===`energyTechnology`:!1),ge=g(()=>i.type===`technology`?i.itemType===`weaponsTechnology`:!1),_e=g(()=>i.type===`technology`?i.itemType===`shieldingTechnology`:!1),k=g(()=>i.type===`technology`?i.itemType===`armourTechnology`:!1),ve=g(()=>i.type===`technology`?i.itemType===`espionageTechnology`:!1),ye=g(()=>i.type===`technology`?i.itemType===`computerTechnology`:!1),be=g(()=>i.type===`technology`?i.itemType===`astrophysics`:!1),xe=g(()=>{if(i.type!==`technology`)return!1;let e=i.itemType;return[`combustionDrive`,`impulseDrive`,`hyperspaceDrive`].includes(e)}),Se=g(()=>i.currentLevel??0),we=g(()=>i.type===`ship`?an[i.itemType]:i.type===`defense`?on[i.itemType]:null),j=g(()=>i.type===`ship`?an[i.itemType]:null),M=g(()=>i.type===`ship`?an[i.itemType].cost:i.type===`defense`?on[i.itemType].cost:{metal:0,crystal:0,deuterium:0}),Te=g(()=>i.type===`ship`?de(i.itemType,1,f.value.buildingSpeedBonus,ee.value,h.value):i.type===`defense`?Me(i.itemType,1,f.value.buildingSpeedBonus,ee.value,h.value):0),Ee=g(()=>{if(i.type!==`building`&&i.type!==`technology`)return[];let e=i.currentLevel||0,t=[];for(let n=e;n<=e+10;n++)t.push(n);return t}),P=e=>{if(e===0)return{cost:{metal:0,crystal:0,deuterium:0,darkMatter:0},time:0,production:0,consumption:0,points:0,capacity:0,fleetStorage:0,spaceBonus:0,buildSpeedBonus:0,researchSpeedBonus:0};if(i.type===`building`){let t=i.itemType,n=ce(t,e),r=Ce(t,e,f.value.buildingSpeedBonus,ee.value,h.value),a=0,o=0,s=0,c=0,l=0,u=0,d=0,p=1+(f.value.resourceProductionBonus||0)/100,m=1+(f.value.energyProductionBonus||0)/100,te=1+(f.value.storageCapacityBonus||0)/100;t===`metalMine`?(a=Math.floor(1500*e*1.5**e*p),o=Math.floor(10*e*1.1**e)):t===`crystalMine`?(a=Math.floor(1e3*e*1.5**e*p),o=Math.floor(10*e*1.1**e)):t===`deuteriumSynthesizer`?(a=Math.floor(500*e*1.5**e*p),o=Math.floor(10*e*1.1**e)):t===`solarPlant`?a=Math.floor(50*e*1.1**e*m):t===`metalStorage`||t===`crystalStorage`||t===`deuteriumTank`?s=Math.floor(1e4*2**e*te):t===`darkMatterCollector`?(s=1e3+e*100,a=Math.floor(25*e*1.5**e)):t===`darkMatterTank`?s=Math.floor(1e3*2**e*te):t===`fusionReactor`?a=Math.floor(150*e*1.15**e):t===`shipyard`?c=1e3*e:t===`terraformer`||t===`lunarBase`?l=5:t===`roboticsFactory`?u=e:t===`naniteFactory`?u=e*2:t===`researchLab`&&(d=e);let g=ae(t,e-1,e);return{cost:n,time:r,production:a,consumption:o,points:g,capacity:s,fleetStorage:c,spaceBonus:l,buildSpeedBonus:u,researchSpeedBonus:d}}else{let t=i.itemType,n=te(t,e),r=re(t,e-1,f.value.researchSpeedBonus,ne.value),a=0;return t===`energyTechnology`&&(a=e),{cost:n,time:r,production:0,consumption:0,points:d(t,e-1,e),capacity:0,fleetStorage:0,spaceBonus:0,buildSpeedBonus:0,researchSpeedBonus:a}}},I=g(()=>{if(i.type!==`building`&&i.type!==`technology`)return{metal:0,crystal:0,deuterium:0,points:0};let e=0,t=0,n=0,r=0;for(let i of Ee.value){if(i===0)continue;let a=P(i);e+=a.cost.metal,t+=a.cost.crystal,n+=a.cost.deuterium,r+=a.points}return{metal:e,crystal:t,deuterium:n,points:r}}),De=g(()=>i.type===`ship`?ue(i.itemType,1):i.type===`defense`?se(i.itemType,1):0),Oe=g(()=>({metal:M.value.metal*a.value,crystal:M.value.crystal*a.value,deuterium:M.value.deuterium*a.value})),L=g(()=>i.type===`ship`?ue(i.itemType,a.value):i.type===`defense`?se(i.itemType,a.value):0);return(r,i)=>(N(),y(`div`,yr,[e.type===`building`||e.type===`technology`?(N(),y(`div`,br,[O(p(sr),null,{default:l(()=>[O(p(ur),null,{default:l(()=>[O(p(lr),null,{default:l(()=>[O(p(q),{class:`w-20 text-center`},{default:l(()=>[n(S(p(t)(`${v.value}.levelRange`)),1)]),_:1}),O(p(q),{class:`text-center`},{default:l(()=>[n(S(p(t)(`resources.metal`)),1)]),_:1}),O(p(q),{class:`text-center`},{default:l(()=>[n(S(p(t)(`resources.crystal`)),1)]),_:1}),O(p(q),{class:`text-center`},{default:l(()=>[n(S(p(t)(`resources.deuterium`)),1)]),_:1}),ie.value?(N(),C(p(q),{key:0,class:`text-center`},{default:l(()=>[n(S(p(t)(`resources.darkMatter`)),1)]),_:1})):T(``,!0),O(p(q),{class:`text-center`},{default:l(()=>[n(S(e.type===`building`?p(t)(`buildings.buildTime`):p(t)(`research.researchTime`)),1)]),_:1}),e.type===`building`&&oe.value?(N(),C(p(q),{key:1,class:`text-center`},{default:l(()=>[n(S(p(t)(`buildings.production`)),1)]),_:1})):T(``,!0),e.type===`building`&&le.value?(N(),C(p(q),{key:2,class:`text-center`},{default:l(()=>[n(S(p(t)(`buildings.consumption`)),1)]),_:1})):T(``,!0),e.type===`building`&&b.value?(N(),C(p(q),{key:3,class:`text-center`},{default:l(()=>[n(S(p(t)(`buildings.storageCapacity`)),1)]),_:1})):T(``,!0),e.type===`building`&&fe.value?(N(),C(p(q),{key:4,class:`text-center`},{default:l(()=>[n(S(p(t)(`buildings.fleetStorage`)),1)]),_:1})):T(``,!0),e.type===`building`&&me.value?(N(),C(p(q),{key:5,class:`text-center`},{default:l(()=>[n(S(p(t)(`buildings.buildQueueBonus`)),1)]),_:1})):T(``,!0),e.type===`building`&&x.value?(N(),C(p(q),{key:6,class:`text-center`},{default:l(()=>[n(S(p(t)(`buildings.spaceBonus`)),1)]),_:1})):T(``,!0),e.type===`building`&&he.value?(N(),C(p(q),{key:7,class:`text-center`},{default:l(()=>[n(S(p(t)(`buildings.missileCapacity`)),1)]),_:1})):T(``,!0),e.type===`building`&&E.value?(N(),C(p(q),{key:8,class:`text-center`},{default:l(()=>[n(S(p(t)(`buildings.buildSpeedBonus`)),1)]),_:1})):T(``,!0),e.type===`building`&&D.value?(N(),C(p(q),{key:9,class:`text-center`},{default:l(()=>[n(S(p(t)(`buildings.researchSpeedBonus`)),1)]),_:1})):T(``,!0),e.type===`technology`&&ge.value?(N(),C(p(q),{key:10,class:`text-center`},{default:l(()=>[n(S(p(t)(`research.attackBonus`)),1)]),_:1})):T(``,!0),e.type===`technology`&&_e.value?(N(),C(p(q),{key:11,class:`text-center`},{default:l(()=>[n(S(p(t)(`research.shieldBonus`)),1)]),_:1})):T(``,!0),e.type===`technology`&&k.value?(N(),C(p(q),{key:12,class:`text-center`},{default:l(()=>[n(S(p(t)(`research.armorBonus`)),1)]),_:1})):T(``,!0),e.type===`technology`&&ve.value?(N(),C(p(q),{key:13,class:`text-center`},{default:l(()=>[n(S(p(t)(`research.spyLevel`)),1)]),_:1})):T(``,!0),e.type===`technology`&&fe.value?(N(),C(p(q),{key:14,class:`text-center`},{default:l(()=>[n(S(p(t)(`buildings.fleetStorage`)),1)]),_:1})):T(``,!0),e.type===`technology`&&ye.value?(N(),C(p(q),{key:15,class:`text-center`},{default:l(()=>[n(S(p(t)(`research.researchQueueBonus`)),1)]),_:1})):T(``,!0),e.type===`technology`&&be.value?(N(),C(p(q),{key:16,class:`text-center`},{default:l(()=>[n(S(p(t)(`research.colonySlots`)),1)]),_:1})):T(``,!0),e.type===`technology`&&x.value?(N(),C(p(q),{key:17,class:`text-center`},{default:l(()=>[n(S(p(t)(`buildings.spaceBonus`)),1)]),_:1})):T(``,!0),e.type===`technology`&&xe.value?(N(),C(p(q),{key:18,class:`text-center`},{default:l(()=>[n(S(p(t)(`research.speedBonus`)),1)]),_:1})):T(``,!0),e.type===`technology`&&D.value?(N(),C(p(q),{key:19,class:`text-center`},{default:l(()=>[n(S(p(t)(`buildings.researchSpeedBonus`)),1)]),_:1})):T(``,!0),O(p(q),{class:`text-center`},{default:l(()=>[n(S(p(t)(`player.points`)),1)]),_:1})]),_:1})]),_:1}),O(p(cr),null,{default:l(()=>[(N(!0),y(m,null,A(Ee.value,r=>(N(),C(p(lr),{key:r,class:F({"bg-muted/50":r===Se.value})},{default:l(()=>[O(p(K),{class:`text-center font-medium`},{default:l(()=>[r===Se.value?(N(),C(p(pn),{key:0,variant:`default`},{default:l(()=>[n(S(r),1)]),_:2},1024)):(N(),y(`span`,xr,S(r),1))]),_:2},1024),O(p(K),{class:`text-center text-sm`},{default:l(()=>[O(Q,{value:P(r).cost.metal},null,8,[`value`])]),_:2},1024),O(p(K),{class:`text-center text-sm`},{default:l(()=>[O(Q,{value:P(r).cost.crystal},null,8,[`value`])]),_:2},1024),O(p(K),{class:`text-center text-sm`},{default:l(()=>[O(Q,{value:P(r).cost.deuterium},null,8,[`value`])]),_:2},1024),ie.value?(N(),C(p(K),{key:0,class:`text-center text-sm`},{default:l(()=>[O(Q,{value:P(r).cost.darkMatter},null,8,[`value`])]),_:2},1024)):T(``,!0),O(p(K),{class:`text-center text-sm`},{default:l(()=>[n(S(p(mr)(P(r).time)),1)]),_:2},1024),e.type===`building`&&oe.value?(N(),C(p(K),{key:1,class:`text-center text-sm`},{default:l(()=>[P(r).production>0?(N(),y(`span`,Sr,[i[1]||=n(` + `,-1),O(Q,{value:P(r).production},null,8,[`value`]),n(` /`+S(p(t)(`resources.perHour`)),1)])):(N(),y(`span`,Cr,`-`))]),_:2},1024)):T(``,!0),e.type===`building`&&le.value?(N(),C(p(K),{key:2,class:`text-center text-sm`},{default:l(()=>[P(r).consumption>0?(N(),y(`span`,wr,[i[2]||=n(` - `,-1),O(Q,{value:P(r).consumption},null,8,[`value`])])):(N(),y(`span`,Tr,`-`))]),_:2},1024)):T(``,!0),e.type===`building`&&b.value?(N(),C(p(K),{key:3,class:`text-center text-sm`},{default:l(()=>[P(r).capacity>0?(N(),y(`span`,Er,[O(Q,{value:P(r).capacity},null,8,[`value`])])):(N(),y(`span`,Dr,`-`))]),_:2},1024)):T(``,!0),e.type===`building`&&fe.value?(N(),C(p(K),{key:4,class:`text-center text-sm`},{default:l(()=>[P(r).fleetStorage>0?(N(),y(`span`,Or,[i[3]||=n(` +`,-1),O(Q,{value:P(r).fleetStorage},null,8,[`value`])])):(N(),y(`span`,kr,`-`))]),_:2},1024)):T(``,!0),e.type===`building`&&me.value?(N(),C(p(K),{key:5,class:`text-center text-sm`},{default:l(()=>[...i[4]||=[w(`span`,{class:`text-purple-600 dark:text-purple-400`},`+1`,-1)]]),_:1})):T(``,!0),e.type===`building`&&x.value?(N(),C(p(K),{key:6,class:`text-center text-sm`},{default:l(()=>[P(r).spaceBonus>0?(N(),y(`span`,Ar,[i[5]||=n(` +`,-1),O(Q,{value:P(r).spaceBonus},null,8,[`value`])])):(N(),y(`span`,jr,`-`))]),_:2},1024)):T(``,!0),e.type===`building`&&he.value?(N(),C(p(K),{key:7,class:`text-center text-sm`},{default:l(()=>[...i[6]||=[w(`span`,{class:`text-orange-600 dark:text-orange-400`},`+10`,-1)]]),_:1})):T(``,!0),e.type===`building`&&E.value?(N(),C(p(K),{key:8,class:`text-center text-sm`},{default:l(()=>[e.itemType===`roboticsFactory`?(N(),y(`span`,Mr,`+`+S(P(r).buildSpeedBonus*100)+`%`,1)):e.itemType===`naniteFactory`?(N(),y(`span`,Nr,`+`+S(P(r).buildSpeedBonus*100)+`%`,1)):T(``,!0)]),_:2},1024)):T(``,!0),e.type===`building`&&D.value?(N(),C(p(K),{key:9,class:`text-center text-sm`},{default:l(()=>[w(`span`,Pr,`+`+S((P(r).researchSpeedBonus-1)*100)+`%`,1)]),_:2},1024)):T(``,!0),e.type===`technology`&&ge.value?(N(),C(p(K),{key:10,class:`text-center text-sm`},{default:l(()=>[w(`span`,Fr,`+`+S(r*10)+`%`,1)]),_:2},1024)):T(``,!0),e.type===`technology`&&_e.value?(N(),C(p(K),{key:11,class:`text-center text-sm`},{default:l(()=>[w(`span`,Ir,`+`+S(r*10)+`%`,1)]),_:2},1024)):T(``,!0),e.type===`technology`&&k.value?(N(),C(p(K),{key:12,class:`text-center text-sm`},{default:l(()=>[w(`span`,Lr,`+`+S(r*10)+`%`,1)]),_:2},1024)):T(``,!0),e.type===`technology`&&ve.value?(N(),C(p(K),{key:13,class:`text-center text-sm`},{default:l(()=>[w(`span`,Rr,`+`+S(r),1)]),_:2},1024)):T(``,!0),e.type===`technology`&&fe.value?(N(),C(p(K),{key:14,class:`text-center text-sm`},{default:l(()=>[w(`span`,zr,[i[7]||=n(`+`,-1),O(Q,{value:r*500},null,8,[`value`])])]),_:2},1024)):T(``,!0),e.type===`technology`&&ye.value?(N(),C(p(K),{key:15,class:`text-center text-sm`},{default:l(()=>[...i[8]||=[w(`span`,{class:`text-purple-600 dark:text-purple-400`},`+1`,-1)]]),_:1})):T(``,!0),e.type===`technology`&&be.value?(N(),C(p(K),{key:16,class:`text-center text-sm`},{default:l(()=>[...i[9]||=[w(`span`,{class:`text-green-600 dark:text-green-400`},`+1`,-1)]]),_:1})):T(``,!0),e.type===`technology`&&x.value?(N(),C(p(K),{key:17,class:`text-center text-sm`},{default:l(()=>[w(`span`,Br,`+5 `+S(p(t)(`research.forAllPlanets`)),1)]),_:1})):T(``,!0),e.type===`technology`&&xe.value?(N(),C(p(K),{key:18,class:`text-center text-sm`},{default:l(()=>[w(`span`,Vr,`+`+S(r*10)+`%`,1)]),_:2},1024)):T(``,!0),e.type===`technology`&&D.value?(N(),C(p(K),{key:19,class:`text-center text-sm`},{default:l(()=>[w(`span`,Hr,`+`+S(P(r).researchSpeedBonus*100)+`%`,1)]),_:2},1024)):T(``,!0),O(p(K),{class:`text-center text-sm`},{default:l(()=>[w(`span`,Ur,[i[10]||=n(` + `,-1),O(Q,{value:P(r).points},null,8,[`value`])])]),_:2},1024)]),_:2},1032,[`class`]))),128))]),_:1})]),_:1})])):T(``,!0),e.type===`building`||e.type===`technology`?(N(),y(`div`,Wr,[O(p(J),null,{default:l(()=>[O(p(X),{class:`pb-3`},{default:l(()=>[O(p(Z),{class:`text-sm`},{default:l(()=>[n(S(p(t)(`${v.value}.totalCost`)),1)]),_:1})]),_:1}),O(p(Y),{class:`space-y-2`},{default:l(()=>[w(`div`,Gr,[w(`span`,Kr,S(p(t)(`resources.metal`))+`:`,1),w(`span`,qr,[O(Q,{value:I.value.metal},null,8,[`value`])])]),w(`div`,Jr,[w(`span`,Yr,S(p(t)(`resources.crystal`))+`:`,1),w(`span`,Xr,[O(Q,{value:I.value.crystal},null,8,[`value`])])]),w(`div`,Zr,[w(`span`,Qr,S(p(t)(`resources.deuterium`))+`:`,1),w(`span`,$r,[O(Q,{value:I.value.deuterium},null,8,[`value`])])])]),_:1})]),_:1}),O(p(J),null,{default:l(()=>[O(p(X),{class:`pb-3`},{default:l(()=>[O(p(Z),{class:`text-sm`},{default:l(()=>[n(S(p(t)(`${v.value}.totalPoints`)),1)]),_:1})]),_:1}),O(p(Y),null,{default:l(()=>[w(`div`,ei,[O(Q,{value:I.value.points},null,8,[`value`])]),w(`p`,ti,S(p(t)(`${v.value}.levelRange`))+`: `+S(Math.max(0,Se.value-10))+` - `+S(Se.value+10),1)]),_:1})]),_:1})])):T(``,!0),e.type===`ship`||e.type===`defense`?(N(),y(`div`,ni,[O(p(J),null,{default:l(()=>[O(p(X),{class:`pb-3`},{default:l(()=>[O(p(Z),{class:`text-sm flex items-center gap-2`},{default:l(()=>[O(p(Ut),{class:`h-4 w-4`}),n(` `+S(p(t)(`${v.value}.attack`)),1)]),_:1})]),_:1}),O(p(Y),null,{default:l(()=>[w(`div`,ri,[O(Q,{value:we.value?.attack||0},null,8,[`value`])])]),_:1})]),_:1}),O(p(J),null,{default:l(()=>[O(p(X),{class:`pb-3`},{default:l(()=>[O(p(Z),{class:`text-sm flex items-center gap-2`},{default:l(()=>[O(p(Qt),{class:`h-4 w-4`}),n(` `+S(p(t)(`${v.value}.shield`)),1)]),_:1})]),_:1}),O(p(Y),null,{default:l(()=>[w(`div`,ii,[O(Q,{value:we.value?.shield||0},null,8,[`value`])])]),_:1})]),_:1}),O(p(J),null,{default:l(()=>[O(p(X),{class:`pb-3`},{default:l(()=>[O(p(Z),{class:`text-sm flex items-center gap-2`},{default:l(()=>[O(p(Yt),{class:`h-4 w-4`}),n(` `+S(p(t)(`${v.value}.armor`)),1)]),_:1})]),_:1}),O(p(Y),null,{default:l(()=>[w(`div`,ai,[O(Q,{value:we.value?.armor||0},null,8,[`value`])])]),_:1})]),_:1}),e.type===`ship`?(N(),C(p(J),{key:0},{default:l(()=>[O(p(X),{class:`pb-3`},{default:l(()=>[O(p(Z),{class:`text-sm flex items-center gap-2`},{default:l(()=>[O(p(en),{class:`h-4 w-4`}),n(` `+S(p(t)(`shipyard.speed`)),1)]),_:1})]),_:1}),O(p(Y),null,{default:l(()=>[w(`div`,oi,[O(Q,{value:j.value?.speed||0},null,8,[`value`])])]),_:1})]),_:1})):T(``,!0),e.type===`ship`?(N(),C(p(J),{key:1},{default:l(()=>[O(p(X),{class:`pb-3`},{default:l(()=>[O(p(Z),{class:`text-sm flex items-center gap-2`},{default:l(()=>[O(p(Bt),{class:`h-4 w-4`}),n(` `+S(p(t)(`shipyard.cargoCapacity`)),1)]),_:1})]),_:1}),O(p(Y),null,{default:l(()=>[w(`div`,si,[O(Q,{value:j.value?.cargoCapacity||0},null,8,[`value`])])]),_:1})]),_:1})):T(``,!0),e.type===`ship`?(N(),C(p(J),{key:2},{default:l(()=>[O(p(X),{class:`pb-3`},{default:l(()=>[O(p(Z),{class:`text-sm flex items-center gap-2`},{default:l(()=>[O(p(Pt),{class:`h-4 w-4`}),n(` `+S(p(t)(`shipyard.fuelConsumption`)),1)]),_:1})]),_:1}),O(p(Y),null,{default:l(()=>[w(`div`,ci,[O(Q,{value:j.value?.fuelConsumption||0},null,8,[`value`])])]),_:1})]),_:1})):T(``,!0)])):T(``,!0),e.type===`ship`||e.type===`defense`?(N(),y(`div`,li,[O(p(J),null,{default:l(()=>[O(p(X),null,{default:l(()=>[O(p(Z),{class:`text-sm`},{default:l(()=>[n(S(p(t)(`${v.value}.buildCost`)),1)]),_:1})]),_:1}),O(p(Y),{class:`space-y-2`},{default:l(()=>[(N(),y(m,null,A(o,e=>c(w(`div`,{key:e.key,class:`flex items-center justify-between text-sm`},[w(`span`,ui,S(p(t)(`resources.${e.key}`))+`:`,1),w(`span`,di,[O(Q,{value:M.value[e.key]},null,8,[`value`])])]),[[pe,M.value[e.key]>0]])),64)),w(`div`,fi,[w(`span`,pi,S(p(t)(`player.points`))+`:`,1),w(`span`,mi,[O(Q,{value:De.value},null,8,[`value`])])])]),_:1})]),_:1}),O(p(J),null,{default:l(()=>[O(p(X),null,{default:l(()=>[O(p(Z),{class:`text-sm`},{default:l(()=>[n(S(p(t)(`${v.value}.buildTime`)),1)]),_:1})]),_:1}),O(p(Y),null,{default:l(()=>[w(`div`,hi,S(p(mr)(Te.value)),1),w(`p`,gi,S(p(t)(`${v.value}.perUnit`)),1)]),_:1})]),_:1})])):T(``,!0),e.type===`ship`||e.type===`defense`?(N(),C(p(J),{key:4},{default:l(()=>[O(p(X),null,{default:l(()=>[O(p(Z),{class:`text-sm`},{default:l(()=>[n(S(p(t)(`${v.value}.batchCalculator`)),1)]),_:1})]),_:1}),O(p(Y),{class:`space-y-4`},{default:l(()=>[w(`div`,_i,[O(p(dr),{class:`w-20`},{default:l(()=>[n(S(p(t)(`${v.value}.quantity`))+`:`,1)]),_:1}),O(p(In),{modelValue:a.value,"onUpdate:modelValue":i[0]||=e=>a.value=e,modelModifiers:{number:!0},type:`number`,min:`1`,class:`flex-1`},null,8,[`modelValue`])]),w(`div`,vi,[w(`div`,yi,[w(`p`,bi,S(p(t)(`${v.value}.totalCost`))+`:`,1),w(`div`,xi,[(N(),y(m,null,A(o,e=>w(`div`,{key:e.key,class:`flex justify-between`},[w(`span`,null,S(p(t)(`resources.${e.key}`))+`:`,1),w(`span`,Si,[O(Q,{value:Oe.value[e.key]},null,8,[`value`])])])),64))])]),w(`div`,Ci,[w(`p`,wi,S(p(t)(`${v.value}.totalTime`))+`:`,1),w(`div`,Ti,S(p(mr)(Te.value*a.value)),1),w(`p`,Ei,[n(S(p(t)(`player.points`))+`: + `,1),O(Q,{value:L.value},null,8,[`value`])])])])]),_:1})]),_:1})):T(``,!0)]))}}),Oi=L({__name:`DetailDialog`,setup(e){let{t}=dn(),r=ar(),i=g(()=>!r.type||!r.itemType?``:t(`${{building:`buildings`,technology:`technologies`,ship:`ships`,defense:`defenses`}[r.type]}.${r.itemType}`)),a=g(()=>!r.type||!r.itemType?``:t(`${{building:`buildingDescriptions`,technology:`technologyDescriptions`,ship:`shipDescriptions`,defense:`defenseDescriptions`}[r.type]}.${r.itemType}`)),o=e=>{e||r.close()};return(e,s)=>(N(),C(p(Xn),{open:p(r).isOpen,"onUpdate:open":o},{default:l(()=>[p(r).type&&p(r).itemType?(N(),C(p(rr),{key:0,"container-class":`sm:max-w-[90vw] md:max-w-3xl lg:max-w-4xl max-h-[90vh]`},{header:l(()=>[O(p($n),null,{default:l(()=>[O(p(ir),{class:`flex items-center gap-2`},{default:l(()=>[n(S(i.value)+` `,1),p(r).currentLevel===void 0?T(``,!0):(N(),C(p(pn),{key:0,variant:`outline`},{default:l(()=>[n(S(p(t)(`common.currentLevel`))+` `+S(p(r).currentLevel),1)]),_:1}))]),_:1}),O(p(Qn),null,{default:l(()=>[n(S(a.value),1)]),_:1})]),_:1})]),default:l(()=>[O(Di,{type:p(r).type,itemType:p(r).itemType,currentLevel:p(r).currentLevel},null,8,[`type`,`itemType`,`currentLevel`])]),_:1})):T(``,!0)]),_:1},8,[`open`]))}}),ki=L({__name:`Sonner`,props:{id:{},invert:{type:Boolean},theme:{},position:{},closeButtonPosition:{},hotkey:{},richColors:{type:Boolean},expand:{type:Boolean},duration:{},gap:{},visibleToasts:{},closeButton:{type:Boolean},toastOptions:{},class:{},style:{},offset:{},mobileOffset:{},dir:{},swipeDirections:{},icons:{},containerAriaLabel:{}},setup(e){let t=e;return(e,n)=>(N(),C(p(qe),j({class:p(W)(`toaster group`,t.class),style:{"--normal-bg":`var(--popover)`,"--normal-text":`var(--popover-foreground)`,"--normal-border":`var(--border)`,"--border-radius":`var(--radius)`}},t),{"success-icon":l(()=>[O(p(Vt),{class:`size-4`})]),"info-icon":l(()=>[O(p(jt),{class:`size-4`})]),"warning-icon":l(()=>[O(p(Zt),{class:`size-4`})]),"error-icon":l(()=>[O(p(Mt),{class:`size-4`})]),"loading-icon":l(()=>[w(`div`,null,[O(p(zt),{class:`size-4 animate-spin`})])]),"close-icon":l(()=>[O(p(Xt),{class:`size-4`})]),_:1},16,[`class`]))}}),Ai=L({__name:`AlertDialog`,props:{open:{type:Boolean},defaultOpen:{type:Boolean}},emits:[`update:open`],setup(e,{emit:t}){let n=z(e,t);return(e,t)=>(N(),C(p(st),j({"data-slot":`alert-dialog`},p(n)),{default:l(t=>[E(e.$slots,`default`,h(I(t)))]),_:3},16))}}),ji=L({__name:`AlertDialogAction`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=R(t,`class`);return(e,r)=>(N(),C(p(ut),j(p(n),{class:p(W)(p(fn)(),t.class)}),{default:l(()=>[E(e.$slots,`default`)]),_:3},16,[`class`]))}}),Mi=L({__name:`AlertDialogCancel`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=R(t,`class`);return(e,r)=>(N(),C(p($e),j(p(n),{class:p(W)(p(fn)({variant:`outline`}),`mt-2 sm:mt-0`,t.class)}),{default:l(()=>[E(e.$slots,`default`)]),_:3},16,[`class`]))}}),Ni=L({inheritAttrs:!1,__name:`AlertDialogContent`,props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=z(R(n,`class`),r);return(e,t)=>(N(),C(p(Tt),null,{default:l(()=>[O(p(Xe),{"data-slot":`alert-dialog-overlay`,class:`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80`}),O(p(ct),j({"data-slot":`alert-dialog-content`},{...e.$attrs,...p(i)},{class:p(W)(`bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg`,n.class)}),{default:l(()=>[E(e.$slots,`default`)]),_:3},16,[`class`])]),_:3}))}}),Pi=L({__name:`AlertDialogDescription`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=R(t,`class`);return(e,r)=>(N(),C(p(lt),j({"data-slot":`alert-dialog-description`},p(n),{class:p(W)(`text-muted-foreground text-sm`,t.class)}),{default:l(()=>[E(e.$slots,`default`)]),_:3},16,[`class`]))}}),Fi=L({__name:`AlertDialogFooter`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`div`,{"data-slot":`alert-dialog-footer`,class:F(p(W)(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,t.class))},[E(e.$slots,`default`)],2))}}),Ii=L({__name:`AlertDialogHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(N(),y(`div`,{"data-slot":`alert-dialog-header`,class:F(p(W)(`flex flex-col gap-2 text-center sm:text-left`,t.class))},[E(e.$slots,`default`)],2))}}),Li=L({__name:`AlertDialogTitle`,props:{asChild:{type:Boolean},as:{},class:{}},setup(e){let t=e,n=R(t,`class`);return(e,r)=>(N(),C(p(nt),j({"data-slot":`alert-dialog-title`},p(n),{class:p(W)(`text-lg font-semibold`,t.class)}),{default:l(()=>[E(e.$slots,`default`)]),_:3},16,[`class`]))}});const Ri=Ie(`universe`,{state:()=>({planets:{},debrisFields:{}}),persist:{key:`${V.name}-universe`,storage:localStorage,serializer:{serialize:e=>cn(e),deserialize:e=>ln(e)}}}),zi=()=>{let e=H(),t=Ri(),n=(e,n)=>{for(let r=0;r{if(!ge(e.player.planets)){let r=Date.now(),i=s(e.player.officers,r);e.player.planets.forEach(e=>{D(e,r,i)}),Object.keys(t.planets).length===0&&n(200,a);return}e.player=De(e.player.id,r);let o=Oe(e.player.id,i);e.player.planets=[o],e.currentPlanetId=o.id,n(200,a)},generateNPCPlanets:n}},Bi=Ie(`npc`,{state:()=>({npcs:[],lastGrowthCheck:{}}),persist:{key:`${V.name}-npcs`,storage:localStorage,serializer:{serialize:e=>cn(e),deserialize:e=>ln(e)}}}),Vi=e=>{let t=H(),n=Ri(),r=Bi();return{processMissionArrival:async a=>{let o=k(a.targetPosition.galaxy,a.targetPosition.system,a.targetPosition.position),s=t.player.planets.find(e=>e.position.galaxy===a.targetPosition.galaxy&&e.position.system===a.targetPosition.system&&e.position.position===a.targetPosition.position)||n.planets[o],c=t.player.planets.find(e=>e.id===a.originPlanetId)?.name||e(`fleetView.unknownPlanet`);if(a.missionType===B.Transport){let n=ne(a,s,t.player,r.npcs);t.player.missionReports||(t.player.missionReports=[]),t.player.missionReports.push({id:`mission-report-${a.id}`,timestamp:Date.now(),missionType:B.Transport,originPlanetId:a.originPlanetId,originPlanetName:c,targetPosition:a.targetPosition,targetPlanetId:s?.id,targetPlanetName:s?.name||`[${a.targetPosition.galaxy}:${a.targetPosition.system}:${a.targetPosition.position}]`,success:n.success,message:n.success?e(`missionReports.transportSuccess`):e(`missionReports.transportFailed`),details:{transportedResources:a.cargo},read:!1})}else if(a.missionType===B.Attack){let e=await Ne(a,s,t.player,null,t.player.planets);if(e){if(t.player.battleReports.push(e.battleResult),s){let n=r.npcs.find(e=>e.planets.some(e=>e.id===s.id));n&&x(t.player,n,e.battleResult,r.npcs)}e.moon&&t.player.planets.push(e.moon),e.debrisField&&(n.debrisFields[e.debrisField.id]=e.debrisField)}}else if(a.missionType===B.Colonize){let n=i(a,s,t.player,e(`planet.colonyPrefix`));t.player.missionReports||(t.player.missionReports=[]),t.player.missionReports.push({id:`mission-report-${a.id}`,timestamp:Date.now(),missionType:B.Colonize,originPlanetId:a.originPlanetId,originPlanetName:c,targetPosition:a.targetPosition,targetPlanetId:n?.id,targetPlanetName:n?.name,success:!!n,message:e(n?`missionReports.colonizeSuccess`:`missionReports.colonizeFailed`),details:n?{newPlanetId:n.id,newPlanetName:n.name}:void 0,read:!1}),n&&t.player.planets.push(n)}else if(a.missionType===B.Spy){let e=f(a,s,t.player,null,r.npcs);e&&t.player.spyReports.push(e)}else if(a.missionType===B.Deploy){let n=fe(a,s,t.player.id);if(t.player.missionReports||(t.player.missionReports=[]),t.player.missionReports.push({id:`mission-report-${a.id}`,timestamp:Date.now(),missionType:B.Deploy,originPlanetId:a.originPlanetId,originPlanetName:c,targetPosition:a.targetPosition,targetPlanetId:s?.id,targetPlanetName:s?.name||`[${a.targetPosition.galaxy}:${a.targetPosition.system}:${a.targetPosition.position}]`,success:n,message:e(n?`missionReports.deploySuccess`:`missionReports.deployFailed`),details:{deployedFleet:a.fleet},read:!1}),n){let e=t.player.fleetMissions.indexOf(a);e>-1&&t.player.fleetMissions.splice(e,1);return}}else if(a.missionType===B.Recycle){let r=`debris_${a.targetPosition.galaxy}_${a.targetPosition.system}_${a.targetPosition.position}`,i=n.debrisFields[r],o=me(a,i);t.player.missionReports||(t.player.missionReports=[]),t.player.missionReports.push({id:`mission-report-${a.id}`,timestamp:Date.now(),missionType:B.Recycle,originPlanetId:a.originPlanetId,originPlanetName:c,targetPosition:a.targetPosition,success:!!o,message:e(o?`missionReports.recycleSuccess`:`missionReports.recycleFailed`),details:o?{recycledResources:o.collectedResources,remainingDebris:o.remainingDebris||void 0}:void 0,read:!1}),o&&i&&(o.remainingDebris&&(o.remainingDebris.metal>0||o.remainingDebris.crystal>0)?n.debrisFields[r]={id:i.id,position:i.position,resources:o.remainingDebris,createdAt:i.createdAt,expiresAt:i.expiresAt}:delete n.debrisFields[r])}else if(a.missionType===B.Destroy){let r=ee(a,s,t.player);if(t.player.missionReports||(t.player.missionReports=[]),t.player.missionReports.push({id:`mission-report-${a.id}`,timestamp:Date.now(),missionType:B.Destroy,originPlanetId:a.originPlanetId,originPlanetName:c,targetPosition:a.targetPosition,targetPlanetId:s?.id,targetPlanetName:s?.name,success:r?.success||!1,message:r?.success?e(`missionReports.destroySuccess`):e(`missionReports.destroyFailed`),details:r?.success?{destroyedPlanetName:s?.name||`[${a.targetPosition.galaxy}:${a.targetPosition.system}:${a.targetPosition.position}]`}:void 0,read:!1}),r&&r.success&&r.planetId){let e=t.player.planets.findIndex(e=>e.id===r.planetId);e>-1?t.player.planets.splice(e,1):delete n.planets[o]}}},processMissionReturn:e=>{let n=t.player.planets.find(t=>t.id===e.originPlanetId);if(!n)return;je(n.fleet,e.fleet),M(n.resources,e.cargo);let r=t.player.fleetMissions.indexOf(e);r>-1&&t.player.fleetMissions.splice(r,1)}}},Hi=()=>{let e=H(),t=Ri(),n=Bi(),i=t=>{if(!e.player.incomingFleetAlerts)return;let n=e.player.incomingFleetAlerts.indexOf(t);n>-1&&e.player.incomingFleetAlerts.splice(n,1)},a=t=>{if(!e.player.incomingFleetAlerts)return;let n=e.player.incomingFleetAlerts.findIndex(e=>e.id===t);n>-1&&e.player.incomingFleetAlerts.splice(n,1)},o=(n,i)=>{if(i.missionType===B.Recycle){let e=i.debrisFieldId;if(!e){console.warn(`[NPC Mission] Recycle mission missing debrisFieldId`),i.status=`returning`,i.returnTime=Date.now()+(i.arrivalTime-i.departureTime);return}let n=t.debrisFields[e],r=me(i,n);r&&n&&(r.remainingDebris&&(r.remainingDebris.metal>0||r.remainingDebris.crystal>0)?t.debrisFields[e]={id:n.id,position:n.position,resources:r.remainingDebris,createdAt:n.createdAt}:delete t.debrisFields[e]),a(i.id),i.returnTime=Date.now()+(i.arrivalTime-i.departureTime);return}let o=k(i.targetPosition.galaxy,i.targetPosition.system,i.targetPosition.position),s=e.player.planets.find(e=>e.position.galaxy===i.targetPosition.galaxy&&e.position.system===i.targetPosition.system&&e.position.position===i.targetPosition.position)||t.planets[o];if(!s){console.warn(`[NPC Mission] Target planet not found`);return}if(i.missionType===B.Spy){let{spiedNotification:t,spyReport:o}=r(n,i,s,e.player);n.playerSpyReports||={},n.playerSpyReports[s.id]=o,e.player.spiedNotifications||(e.player.spiedNotifications=[]),e.player.spiedNotifications.push(t),a(i.id)}else i.missionType===B.Attack&&b(n,i,s,e.player,e.player.planets).then(n=>{n&&(e.player.battleReports.push(n.battleResult),n.moon&&e.player.planets.push(n.moon),n.debrisField&&(t.debrisFields[n.debrisField.id]=n.debrisField)),a(i.id)})},s=(e,t)=>{let n=e.planets.find(e=>e.id===t.originPlanetId);if(n&&(je(n.fleet,t.fleet),t.cargo&&(n.resources.metal+=t.cargo.metal,n.resources.crystal+=t.cargo.crystal,n.resources.deuterium+=t.cargo.deuterium),e.fleetMissions)){let n=e.fleetMissions.indexOf(t);n>-1&&e.fleetMissions.splice(n,1)}},c=0,l=r=>{if(c+=r,c<10)return;let i=Object.values(t.planets);if(n.npcs.length===0){let t=new Map;if(i.forEach(n=>{n.ownerId===e.player.id||!n.ownerId||(t.has(n.ownerId)||t.set(n.ownerId,{id:n.ownerId,name:`NPC-${n.ownerId.substring(0,8)}`,planets:[],technologies:{},difficulty:`medium`,relations:{},allies:[],enemies:[]}),t.get(n.ownerId).planets.push(n))}),n.npcs=Array.from(t.values()),n.npcs.length>0){let t=v({planets:i,player:e.player,npcs:n.npcs});n.npcs.forEach(e=>{le(e,t)}),oe(n.npcs)}}if(n.npcs.length===0){c=0;return}let a={planets:i,player:e.player,npcs:n.npcs};n.npcs.forEach(e=>{u(e,a,c)}),c=0},d=0;return{processNPCMissionArrival:o,processNPCMissionReturn:s,removeIncomingFleetAlert:i,removeIncomingFleetAlertById:a,updateNPCGrowth:l,updateNPCBehavior:r=>{if(d+=r,d<5)return;if(n.npcs.length===0){d=0;return}let i=Date.now(),a=Object.values(t.planets);n.npcs.forEach(n=>{Se(n,e.player,a,t.debrisFields,i)}),d=0}}},Ui=(e,t,n,r,i)=>{let a=H();return{handleCancelBuild:o=>{n.value=e(`queue.cancelBuild`),r.value=e(`queue.confirmCancel`),i.value=()=>{if(!a.currentPlanet)return!1;let{item:e,index:t}=be(a.currentPlanet.buildQueue,o);if(!e)return!1;if(e.type===`building`){let t=ve(a.currentPlanet,e);M(a.currentPlanet.resources,t)}return a.currentPlanet.buildQueue.splice(t,1),!0},t.value=!0},handleCancelResearch:o=>{n.value=e(`queue.cancelResearch`),r.value=e(`queue.confirmCancel`),i.value=()=>{if(!a.currentPlanet)return!1;let{item:e,index:t}=be(a.player.researchQueue,o);if(!e)return!1;if(e.type===`technology`){let t=we(e);M(a.currentPlanet.resources,t)}return a.player.researchQueue.splice(t,1),!0},t.value=!0},getItemName:t=>{if(t.type===`building`||t.type===`demolish`){let n=e(`buildings.${t.itemType}`);return t.type===`demolish`?`${e(`buildingsView.demolish`)} - ${n}`:n}else if(t.type===`technology`)return e(`technologies.${t.itemType}`);else if(t.type===`ship`)return e(`ships.${t.itemType}`);else if(t.type===`defense`)return e(`defenses.${t.itemType}`);return e(`common.unknown`)},getRemainingTime:e=>{let t=Date.now();return Math.max(0,Math.floor((e.endTime-t)/1e3))},getQueueProgress:e=>{let t=Date.now(),n=e.endTime-e.startTime,r=t-e.startTime;return Math.min(100,Math.max(0,r/n*100))}}},Wi=(e,n,r,i,a,o)=>{let s=H(),c=Bi();return{updateGame:()=>{if(s.isPaused)return;let l=Date.now();s.gameTime=l,t(s.player.officers,l);let u=xe(s.player,l);s.player.researchQueue=u.updatedResearchQueue,s.player.fleetMissions.forEach(t=>{t.status===`outbound`&&l>=t.arrivalTime?e(t):t.status===`returning`&&t.returnTime&&l>=t.returnTime&&n(t)}),c.npcs.forEach(e=>{e.fleetMissions&&e.fleetMissions.forEach(t=>{t.status===`outbound`&&l>=t.arrivalTime?r(e,t):t.status===`returning`&&t.returnTime&&l>=t.returnTime&&i(e,t)})}),a(1),o(1)}}},Gi=()=>{try{let e=V.name,t=`${V.name}-universe`,n=localStorage.getItem(e);if(!n)return;let r;try{r=ln(n)}catch{try{r=JSON.parse(n)}catch{return}}if(!(r.universePlanets||r.debrisFields))return;let i={planets:{},debrisFields:{}};if(r.universePlanets){let e=r.universePlanets,t=r.player?.planets||[],n=new Set(t.map(e=>e.id));Object.entries(e).forEach(([e,t])=>{n.has(t.id)||(i.planets[e]=t)}),delete r.universePlanets}r.debrisFields&&(i.debrisFields=r.debrisFields,delete r.debrisFields),localStorage.setItem(t,cn(i)),localStorage.setItem(e,cn(r))}catch(e){console.error(e)}};var Ki={class:`flex items-center justify-center p-4 group-data-[collapsible=icon]:p-2`},qi={class:`text-xl font-bold ml-2 group-data-[collapsible=icon]:hidden`},Ji={class:`px-4 py-3 space-y-2 text-sm`},Yi={class:`font-semibold mb-1`},Xi={class:`text-muted-foreground text-xs`},Zi={class:`bg-muted/50 rounded-lg p-2`},Qi={class:`flex items-center justify-between`},$i={class:`text-xs text-muted-foreground`},ea={class:`text-sm font-bold text-primary`},ta={key:0,class:`flex gap-1`},na={class:`space-y-1`},ra={class:`flex flex-col h-full overflow-hidden`},ia={key:0,class:`bg-card border-b px-4 sm:px-6 py-6.5 shadow-md`},aa={class:`flex items-center justify-between gap-3 sm:gap-6`},oa={class:`lg:flex-1`},sa={class:`flex items-center gap-3 sm:gap-6 flex-1 lg:flex-none overflow-x-auto lg:justify-center`},ca={class:`min-w-0`},la={class:`text-[10px] sm:text-xs text-muted-foreground truncate`},ua={class:`flex items-center gap-2 sm:gap-4 flex-shrink-0 lg:flex-1 lg:justify-end`},da={key:0,class:`flex items-center gap-1.5 sm:gap-2 text-xs sm:text-sm`},fa={class:`text-muted-foreground hidden sm:inline`},pa={key:1,class:`flex items-center gap-1.5 sm:gap-2 text-xs sm:text-sm`},ma={class:`text-muted-foreground hidden sm:inline`},ha={key:1,class:`bg-card border-b px-4 sm:px-6 py-4.5`},ga={class:`space-y-3`},_a={class:`flex items-center justify-between text-xs sm:text-sm gap-2`},va={class:`flex items-center gap-1.5 sm:gap-2 min-w-0 flex-1`},ya={class:`font-medium truncate`},ba={class:`text-muted-foreground hidden sm:inline flex-shrink-0 text-[10px] sm:text-xs`},xa={class:`flex items-center gap-2 sm:gap-3 flex-shrink-0`},Sa={class:`text-muted-foreground text-[10px] sm:text-xs whitespace-nowrap`},Ca={class:`flex items-center justify-between text-xs sm:text-sm gap-2`},wa={class:`flex items-center gap-1.5 sm:gap-2 min-w-0 flex-1`},Ta={class:`font-medium truncate`},Ea={class:`text-muted-foreground hidden sm:inline flex-shrink-0 text-[10px] sm:text-xs`},Da={class:`flex items-center gap-2 sm:gap-3 flex-shrink-0`},Oa={class:`text-muted-foreground text-[10px] sm:text-xs whitespace-nowrap`},ka={class:`flex-1 overflow-y-auto`},Aa={class:`animate-fade-in`},ja=((e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n})(L({__name:`App`,setup(e){Gi();let t=H(),{isDark:r}=un(),{t:i}=dn(),a=_(!1),o=_(``),c=_(``),u=_(null),d=[`zh-CN`,`zh-TW`,`en`,`de`,`ru`,`ko`,`ja`],f=_(window.innerWidth>=1024),{initGame:ee}=zi(),{processMissionArrival:te,processMissionReturn:h}=Vi(i),{processNPCMissionArrival:ne,processNPCMissionReturn:re,updateNPCGrowth:v,updateNPCBehavior:ie}=Hi(),{handleCancelBuild:ae,handleCancelResearch:oe,getItemName:se,getRemainingTime:ce,getQueueProgress:le}=Ui(i,a,o,c,u),{updateGame:ue}=Wi(te,h,ne,re,v,ie),de=null;Ee(()=>{de&&clearInterval(de)}),ye(async()=>{t.player.planets.length===0&&(t.locale=Ge()),await ee(i(`common.playerName`),i(`planet.homePlanet`),i(`planet.planetPrefix`)),de=setInterval(()=>{ue()},1e3)});let b=g(()=>t.currentPlanet),fe=[{name:g(()=>i(`nav.overview`)),path:`/`,icon:Kt},{name:g(()=>i(`nav.buildings`)),path:`/buildings`,icon:Lt},{name:g(()=>i(`nav.research`)),path:`/research`,icon:It},{name:g(()=>i(`nav.shipyard`)),path:`/shipyard`,icon:Wt},{name:g(()=>i(`nav.defense`)),path:`/defense`,icon:Qt},{name:g(()=>i(`nav.fleet`)),path:`/fleet`,icon:Ht},{name:g(()=>i(`nav.officers`)),path:`/officers`,icon:$t},{name:g(()=>i(`nav.simulator`)),path:`/battle-simulator`,icon:Jt},{name:g(()=>i(`nav.galaxy`)),path:`/galaxy`,icon:Rt},{name:g(()=>i(`nav.messages`)),path:`/messages`,icon:Nt},{name:g(()=>i(`nav.settings`)),path:`/settings`,icon:Gt},...[]],pe=g(()=>{if(!b.value)return null;let e=Date.now(),n=s(t.player.officers,e);return Te(b.value,{resourceProductionBonus:n.resourceProductionBonus,darkMatterProductionBonus:n.darkMatterProductionBonus,energyProductionBonus:n.energyProductionBonus})}),me=g(()=>{if(!b.value)return null;let e=Date.now(),n=s(t.player.officers,e);return P(b.value,n.storageCapacityBonus)}),x=g(()=>t.player.battleReports.filter(e=>!e.read).length+t.player.spyReports.filter(e=>!e.read).length),he=[{key:`metal`},{key:`crystal`},{key:`deuterium`},{key:`energy`},{key:`darkMatter`}],E=g(()=>!b.value||b.value.isMoon?null:t.getMoonForPlanet(b.value.id)),D=g(()=>!!E.value),ge=()=>{E.value&&(t.currentPlanetId=E.value.id)},_e=()=>{b.value?.parentPlanetId&&(t.currentPlanetId=b.value.parentPlanetId)},k=()=>{f.value=!f.value},ve=()=>{u.value&&u.value(),a.value=!1};return(e,s)=>(N(),C(p(Kn),{open:f.value,"onUpdate:open":s[2]||=e=>f.value=e},{default:l(()=>[O(p(jn),{collapsible:`icon`},{default:l(()=>[O(p(Fn),{class:`border-b`},{default:l(()=>[w(`div`,Ki,[s[3]||=w(`img`,{src:``+new URL(`logo-Cz0cNqhe.svg`,import.meta.url).href,class:`w-10 group-data-[collapsible=icon]:w-8`},null,-1),w(`h1`,qi,S(p(V).title),1)])]),_:1}),O(p(Mn),null,{default:l(()=>[b.value?(N(),C(p(Pn),{key:0,class:`border-b group-data-[collapsible=icon]:hidden`},{default:l(()=>[w(`div`,Ji,[w(`div`,null,[w(`p`,Yi,[n(S(b.value.name)+` `,1),b.value.isMoon?(N(),C(p(pn),{key:0,variant:`secondary`,class:`ml-1 text-xs`},{default:l(()=>[n(S(p(i)(`planet.moon`)),1)]),_:1})):T(``,!0)]),w(`p`,Xi,` [`+S(b.value.position.galaxy)+`:`+S(b.value.position.system)+`:`+S(b.value.position.position)+`] `,1)]),w(`div`,Zi,[w(`div`,Qi,[w(`span`,$i,S(p(i)(`player.points`)),1),w(`span`,ea,S(p(fr)(p(t).player.points)),1)])]),D.value||b.value.isMoon?(N(),y(`div`,ta,[b.value.isMoon?(N(),C(p(G),{key:0,onClick:_e,variant:`outline`,size:`sm`,class:`w-full text-xs h-7`},{default:l(()=>[n(S(p(i)(`planet.backToPlanet`)),1)]),_:1})):E.value?(N(),C(p(G),{key:1,onClick:ge,variant:`outline`,size:`sm`,class:`w-full text-xs h-7`},{default:l(()=>[n(S(p(i)(`planet.switchToMoon`)),1)]),_:1})):T(``,!0)])):T(``,!0)])]),_:1})):T(``,!0),O(p(Pn),null,{default:l(()=>[O(p(Rn),null,{default:l(()=>[(N(),y(m,null,A(fe,t=>O(p(Gn),{key:t.path},{default:l(()=>[O(p(Wn),{"as-child":``,"is-active":e.$route.path===t.path,tooltip:t.name.value},{default:l(()=>[O(p(Ve),{to:t.path},{default:l(()=>[(N(),C(Ae(t.icon))),w(`span`,null,S(t.name.value),1),t.path===`/messages`&&x.value>0?(N(),C(p(zn),{key:0},{default:l(()=>[n(S(x.value),1)]),_:1})):T(``,!0)]),_:2},1032,[`to`])]),_:2},1032,[`is-active`,`tooltip`])]),_:2},1024)),64))]),_:1})]),_:1})]),_:1}),O(p(Nn),{class:`border-t`},{default:l(()=>[O(p(Rn),null,{default:l(()=>[O(p(Gn),null,{default:l(()=>[O(p(gn),null,{default:l(()=>[O(p(vn),{"as-child":``},{default:l(()=>[O(p(Wn),{tooltip:p(Ue)[p(t).locale]},{default:l(()=>[O(p(qt)),w(`span`,null,S(p(Ue)[p(t).locale]),1)]),_:1},8,[`tooltip`])]),_:1}),O(p(_n),{class:`w-48 p-2`,side:`right`,align:`end`},{default:l(()=>[w(`div`,na,[(N(),y(m,null,A(d,e=>O(p(G),{key:e,onClick:n=>p(t).locale=e,variant:p(t).locale===e?`secondary`:`ghost`,class:`w-full justify-start`,size:`sm`},{default:l(()=>[n(S(p(Ue)[e]),1)]),_:2},1032,[`onClick`,`variant`])),64))])]),_:1})]),_:1})]),_:1}),O(p(Gn),null,{default:l(()=>[O(p(Wn),{onClick:s[0]||=e=>r.value=!p(r),tooltip:p(r)?p(i)(`sidebar.lightMode`):p(i)(`sidebar.darkMode`)},{default:l(()=>[p(r)?(N(),C(p(tn),{key:0})):(N(),C(p(nn),{key:1})),w(`span`,null,S(p(r)?p(i)(`sidebar.lightMode`):p(i)(`sidebar.darkMode`)),1)]),_:1},8,[`tooltip`])]),_:1}),O(p(Gn),{class:`hidden sm:inline`},{default:l(()=>[O(p(Wn),{onClick:k,tooltip:f.value?p(i)(`sidebar.collapse`):p(i)(`sidebar.expand`)},{default:l(()=>[O(p(Ft),{class:`group-data-[state=collapsed]:rotate-180 transition-transform`}),w(`span`,null,S(p(i)(`sidebar.collapse`)),1)]),_:1},8,[`tooltip`])]),_:1})]),_:1})]),_:1})]),_:1}),O(p(Ln),null,{default:l(()=>[w(`div`,ra,[b.value?(N(),y(`header`,ia,[w(`div`,aa,[w(`div`,oa,[O(p(qn),{class:`lg:hidden`})]),w(`div`,sa,[(N(),y(m,null,A(he,e=>w(`div`,{key:e.key,class:`flex items-center gap-1.5 sm:gap-2 flex-shrink-0`},[O(Yn,{type:e.key,size:`md`},null,8,[`type`]),w(`div`,ca,[w(`p`,{class:F([`text-xs sm:text-sm font-medium truncate`,p(pr)(b.value.resources[e.key],me.value?.[e.key]||1/0)])},S(p(fr)(b.value.resources[e.key]))+` / `+S(p(fr)(me.value?.[e.key]||0)),3),w(`p`,la,` +`+S(p(fr)(Math.round((pe.value?.[e.key]||0)/60)))+`/`+S(p(i)(`resources.perMinute`)),1)])])),64))]),w(`div`,ua,[b.value.buildQueue.length>0?(N(),y(`div`,da,[s[4]||=w(`div`,{class:`h-2 w-2 rounded-full bg-green-500 animate-pulse`},null,-1),w(`span`,fa,S(p(i)(`queue.building`)),1)])):T(``,!0),p(t).player.researchQueue.length>0?(N(),y(`div`,pa,[s[5]||=w(`div`,{class:`h-2 w-2 rounded-full bg-blue-500 animate-pulse`},null,-1),w(`span`,ma,S(p(i)(`queue.researching`)),1)])):T(``,!0)])])])):T(``,!0),b.value&&(b.value.buildQueue.length>0||p(t).player.researchQueue.length>0)?(N(),y(`div`,ha,[w(`div`,ga,[(N(!0),y(m,null,A(b.value.buildQueue,e=>(N(),y(`div`,{key:e.id,class:`space-y-1.5`},[w(`div`,_a,[w(`div`,va,[s[6]||=w(`div`,{class:`h-2 w-2 rounded-full bg-green-500 animate-pulse flex-shrink-0`},null,-1),w(`span`,ya,S(p(se)(e)),1),w(`span`,ba,[e.type===`ship`||e.type===`defense`?(N(),y(m,{key:0},[n(` → `+S(p(i)(`queue.quantity`))+` `+S(e.quantity),1)],64)):(N(),y(m,{key:1},[n(`→ `+S(p(i)(`queue.level`))+` `+S(e.targetLevel),1)],64))])]),w(`div`,xa,[w(`span`,Sa,S(p(mr)(p(ce)(e))),1),O(p(G),{onClick:t=>p(ae)(e.id),variant:`ghost`,size:`sm`,class:`h-5 sm:h-6 px-1.5 sm:px-2 text-[10px] sm:text-xs`},{default:l(()=>[n(S(p(i)(`queue.cancel`)),1)]),_:1},8,[`onClick`])])]),O(p(hn),{"model-value":p(le)(e),class:`h-1.5`},null,8,[`model-value`])]))),128)),(N(!0),y(m,null,A(p(t).player.researchQueue,e=>(N(),y(`div`,{key:e.id,class:`space-y-1.5`},[w(`div`,Ca,[w(`div`,wa,[s[7]||=w(`div`,{class:`h-2 w-2 rounded-full bg-blue-500 animate-pulse flex-shrink-0`},null,-1),w(`span`,Ta,S(p(se)(e)),1),w(`span`,Ea,` → `+S(p(i)(`queue.level`))+` `+S(e.targetLevel),1)]),w(`div`,Da,[w(`span`,Oa,S(p(mr)(p(ce)(e))),1),O(p(G),{onClick:t=>p(oe)(e.id),variant:`ghost`,size:`sm`,class:`h-5 sm:h-6 px-1.5 sm:px-2 text-[10px] sm:text-xs`},{default:l(()=>[n(S(p(i)(`queue.cancel`)),1)]),_:1},8,[`onClick`])])]),O(p(hn),{"model-value":p(le)(e),class:`h-1.5`},null,8,[`model-value`])]))),128))])])):T(``,!0),w(`main`,ka,[w(`div`,Aa,[O(p(ze))])])])]),_:1}),O(p(Ai),{open:a.value,"onUpdate:open":s[1]||=e=>a.value=e},{default:l(()=>[O(p(Ni),null,{default:l(()=>[O(p(Ii),null,{default:l(()=>[O(p(Li),null,{default:l(()=>[n(S(o.value),1)]),_:1}),O(p(Pi),null,{default:l(()=>[n(S(c.value),1)]),_:1})]),_:1}),O(p(Fi),null,{default:l(()=>[O(p(Mi),null,{default:l(()=>[n(S(p(i)(`common.cancel`)),1)]),_:1}),O(p(ji),{onClick:ve},{default:l(()=>[n(S(p(i)(`common.confirm`)),1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),O(Oi),O(ki,{position:`top-center`})]),_:1},8,[`open`]))}}),[[`__scopeId`,`data-v-19955dd6`]]),Ma=`modulepreload`,Na=function(e,t){return new URL(e,t).href},Pa={};const $=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Na(t,n),t in Pa)return;Pa[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:Ma,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};var Fa=Be({history:Re(),routes:[{path:`/`,name:`overview`,component:()=>$(()=>import(`./OverviewView-DdvtPdf7.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]),import.meta.url)},{path:`/buildings`,name:`buildings`,component:()=>$(()=>import(`./BuildingsView-4mX0ZiqE.js`),__vite__mapDeps([15,1,2,3,4,5,6,7,8,9,16,10,17,13,11,14]),import.meta.url)},{path:`/research`,name:`research`,component:()=>$(()=>import(`./ResearchView-BEvEoPdM.js`),__vite__mapDeps([18,1,2,3,4,5,6,7,8,9,16,10,19,17,13,20,11,14]),import.meta.url)},{path:`/shipyard`,name:`shipyard`,component:()=>$(()=>import(`./ShipyardView-C8y8F-rK.js`),__vite__mapDeps([21,1,2,3,4,5,6,7,8,9,16,10,19,17,13,20,11,14]),import.meta.url)},{path:`/defense`,name:`defense`,component:()=>$(()=>import(`./DefenseView-BuYOjWBp.js`),__vite__mapDeps([22,1,2,3,4,5,6,7,8,9,16,10,19,17,13,20,11,14]),import.meta.url)},{path:`/fleet`,name:`fleet`,component:()=>$(()=>import(`./FleetView-D6gRUTGU.js`),__vite__mapDeps([23,1,2,3,4,5,6,7,8,9,16,10,19,20,11,13,12,14]),import.meta.url)},{path:`/officers`,name:`officers`,component:()=>$(()=>import(`./OfficersView-gOtt9blg.js`),__vite__mapDeps([24,1,2,3,4,5,6,7,8,9,10,11,13,14]),import.meta.url)},{path:`/battle-simulator`,name:`battle-simulator`,component:()=>$(()=>import(`./BattleSimulatorView-C7D7Sz5R.js`),__vite__mapDeps([25,1,2,3,4,5,6,7,8,9,16,10,26,27,13,11,12,14]),import.meta.url)},{path:`/messages`,name:`messages`,component:()=>$(()=>import(`./MessagesView-Czwj26_i.js`),__vite__mapDeps([28,1,2,3,4,5,6,7,8,9,16,10,26,27,13,11,12,14]),import.meta.url)},{path:`/galaxy`,name:`galaxy`,component:()=>$(()=>import(`./GalaxyView-Yqd2o_zC.js`),__vite__mapDeps([29,1,2,3,4,5,6,7,8,9,16,10,19,11,30,27,14]),import.meta.url)},{path:`/diplomacy`,name:`diplomacy`,component:()=>$(()=>import(`./DiplomacyView-Bz3CIKaK.js`),__vite__mapDeps([31,1,2,3,4,5,6,7,8,9,16,10,19,11,12,14]),import.meta.url)},{path:`/settings`,name:`settings`,component:()=>$(()=>import(`./SettingsView-yJRibE1k.js`),__vite__mapDeps([32,1,2,3,4,5,6,7,8,9,16,10,11,14]),import.meta.url)},{path:`/gm`,name:`gm`,component:()=>$(()=>import(`./GMView-DWcaM1NY.js`),__vite__mapDeps([33,1,2,3,4,5,6,7,8,9,16,10,11,30,13,14]),import.meta.url),beforeEnter:(e,t,n)=>{n(`/`)}}]}),Ia=Pe(ja),La=Fe();La.use(Le),Ia.use(La),Ia.use(Fa),Ia.mount(`#app`);export{$n as A,gn as B,lr as C,ar as D,sr as E,Vn as F,W as G,pn as H,Bn as I,V as J,dn as K,In as L,Xn as M,Yn as N,ir as O,Hn as P,vn as R,q as S,cr as T,fn as U,hn as V,G as W,Z as _,Fi as a,J as b,Mi as c,hr as d,fr as f,dr as g,gr as h,Ii as i,Qn as j,rr as k,ji as l,pr as m,Ri as n,Pi as o,mr as p,H as q,Li as r,Ni as s,Bi as t,Ai as u,X as v,K as w,ur as x,Y as y,_n as z}; \ No newline at end of file diff --git a/docs/assets/index-CZ4UHUCa.css b/docs/assets/index-CZ4UHUCa.css new file mode 100644 index 0000000..9991403 --- /dev/null +++ b/docs/assets/index-CZ4UHUCa.css @@ -0,0 +1,2 @@ +/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */ +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:#fef2f2;--color-red-100:#ffe2e2;--color-red-300:#ffa3a3;--color-red-400:#ff6568;--color-red-500:#fb2c36;--color-red-600:#e40014;--color-red-700:#bf000f;--color-red-950:#460809;--color-orange-400:#ff8b1a;--color-orange-500:#fe6e00;--color-orange-600:#f05100;--color-amber-50:#fffbeb;--color-amber-300:#ffd236;--color-amber-400:#fcbb00;--color-amber-700:#b75000;--color-amber-950:#461901;--color-yellow-50:#fefce8;--color-yellow-100:#fef9c2;--color-yellow-400:#fac800;--color-yellow-500:#edb200;--color-yellow-600:#cd8900;--color-yellow-950:#432004;--color-green-50:#f0fdf4;--color-green-100:#dcfce7;--color-green-300:#7bf1a8;--color-green-400:#05df72;--color-green-500:#00c758;--color-green-600:#00a544;--color-green-700:#008138;--color-green-950:#032e15;--color-emerald-600:#009767;--color-cyan-400:#00d2ef;--color-cyan-600:#0092b5;--color-blue-50:#eff6ff;--color-blue-100:#dbeafe;--color-blue-300:#90c5ff;--color-blue-400:#54a2ff;--color-blue-500:#3080ff;--color-blue-600:#155dfc;--color-blue-700:#1447e6;--color-blue-950:#162456;--color-indigo-400:#7d87ff;--color-indigo-600:#4f39f6;--color-indigo-900:#312c85;--color-purple-400:#c07eff;--color-purple-600:#9810fa;--color-slate-400:#90a1b9;--color-slate-600:#45556c;--color-gray-50:#f9fafb;--color-gray-100:#f3f4f6;--color-gray-300:#d1d5dc;--color-gray-400:#99a1af;--color-gray-600:#4a5565;--color-gray-700:#364153;--color-gray-800:#1e2939;--color-gray-950:#030712;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--text-8xl:6rem;--text-8xl--line-height:1;--text-9xl:8rem;--text-9xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-xs:.125rem;--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}@supports (color:lab(0% 0 0)){:root,:host{--color-red-50:lab(96.5005% 4.18511 1.52329);--color-red-100:lab(92.243% 10.2865 3.83865);--color-red-300:lab(76.5514% 36.4219 15.5335);--color-red-400:lab(63.7053% 60.7449 31.3109);--color-red-500:lab(55.4814% 75.0732 48.8528);--color-red-600:lab(48.4493% 77.4328 61.5452);--color-red-700:lab(40.4273% 67.2623 53.7441);--color-red-950:lab(13.003% 29.04 16.7519);--color-orange-400:lab(70.0429% 42.5156 75.8207);--color-orange-500:lab(64.272% 57.1788 90.3583);--color-orange-600:lab(57.1026% 64.2584 89.8886);--color-amber-50:lab(98.6252% -.635982 8.42309);--color-amber-300:lab(86.4156% 6.13147 78.3961);--color-amber-400:lab(80.1641% 16.6016 99.2089);--color-amber-700:lab(47.2709% 42.9082 69.2966);--color-amber-950:lab(15.8111% 20.9107 23.3752);--color-yellow-50:lab(98.6846% -1.79058 9.77662);--color-yellow-100:lab(97.3564% -4.51407 27.344);--color-yellow-400:lab(83.2664% 8.65132 106.895);--color-yellow-500:lab(76.3898% 14.5258 98.4589);--color-yellow-600:lab(62.7799% 22.4198 86.1544);--color-yellow-950:lab(16.8146% 15.7422 23.1133);--color-green-50:lab(98.1563% -5.60117 2.75913);--color-green-100:lab(96.186% -13.8464 6.52362);--color-green-300:lab(86.9953% -47.2691 25.0054);--color-green-400:lab(78.503% -64.9265 39.7492);--color-green-500:lab(70.5521% -66.5147 45.8072);--color-green-600:lab(59.0978% -58.6621 41.2579);--color-green-700:lab(47.0329% -47.0239 31.4788);--color-green-950:lab(15.6845% -20.4225 11.7249);--color-emerald-600:lab(55.0481% -49.9246 15.93);--color-cyan-400:lab(76.6045% -40.9406 -29.6231);--color-cyan-600:lab(55.1767% -26.7496 -30.5138);--color-blue-50:lab(96.492% -1.14647 -5.11479);--color-blue-100:lab(92.0301% -2.24757 -11.6453);--color-blue-300:lab(77.5052% -6.4629 -36.42);--color-blue-400:lab(65.0361% -1.42062 -56.9803);--color-blue-500:lab(54.1736% 13.3368 -74.6839);--color-blue-600:lab(44.0605% 29.0279 -86.0352);--color-blue-700:lab(36.9089% 35.0961 -85.6872);--color-blue-950:lab(15.6723% 8.86233 -32.2945);--color-indigo-400:lab(59.866% 22.4833 -64.4485);--color-indigo-600:lab(38.4009% 52.6132 -92.3857);--color-indigo-900:lab(23.3911% 24.6978 -50.4719);--color-purple-400:lab(63.6946% 47.6127 -59.2066);--color-purple-600:lab(43.0295% 75.21 -86.5669);--color-slate-400:lab(65.5349% -2.25151 -14.5072);--color-slate-600:lab(35.5623% -1.74978 -15.4316);--color-gray-50:lab(98.2596% -.247031 -.706708);--color-gray-100:lab(96.1596% -.082314 -1.13575);--color-gray-300:lab(85.1236% -.612259 -3.7138);--color-gray-400:lab(65.9269% -.832707 -8.17474);--color-gray-600:lab(35.6337% -1.58697 -10.8425);--color-gray-700:lab(27.1134% -.956401 -12.3224);--color-gray-800:lab(16.1051% -1.18239 -11.7533);--color-gray-950:lab(1.90334% .278696 -5.48866)}}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}body{background-color:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5}html{transition:background-color .3s,color .3s}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background-color:#0000}::-webkit-scrollbar-thumb{border-radius:var(--radius);background-color:var(--border)}::-webkit-scrollbar-thumb:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){::-webkit-scrollbar-thumb:hover{background-color:color-mix(in oklab,var(--muted-foreground)50%,transparent)}}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-1\.5{top:calc(var(--spacing)*1.5)}.top-3{top:calc(var(--spacing)*3)}.top-3\.5{top:calc(var(--spacing)*3.5)}.top-4{top:calc(var(--spacing)*4)}.top-\[50\%\]{top:50%}.top-\[60px\]{top:60px}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.right-1\/2{right:50%}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.bottom-0{bottom:calc(var(--spacing)*0)}.-left-6{left:calc(var(--spacing)*-6)}.left-0{left:calc(var(--spacing)*0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing)*2)}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.order-1{order:1}.order-2{order:2}.col-span-2{grid-column:span 2/span 2}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-3\.5{margin-inline:calc(var(--spacing)*3.5)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.my-8{margin-block:calc(var(--spacing)*8)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-auto{margin-top:auto}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-6{margin-left:calc(var(--spacing)*6)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.aspect-square{aspect-ratio:1}.size-2\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.size-3\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.size-full{width:100%;height:100%}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-\[65px\]{height:65px}.h-\[85px\]{height:85px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--reka-select-trigger-height\)\]{height:var(--reka-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-svh{height:100svh}.max-h-\(--reka-select-content-available-height\){max-height:var(--reka-select-content-available-height)}.max-h-80{max-height:calc(var(--spacing)*80)}.max-h-96{max-height:calc(var(--spacing)*96)}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-\[60vh\]{min-height:60vh}.min-h-svh{min-height:100svh}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-0\.5{width:calc(var(--spacing)*.5)}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-20{width:calc(var(--spacing)*20)}.w-48{width:calc(var(--spacing)*48)}.w-72{width:calc(var(--spacing)*72)}.w-\[calc\(100vw-3rem\)\]{width:calc(100vw - 3rem)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-5{min-width:calc(var(--spacing)*5)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[60px\]{min-width:60px}.min-w-\[var\(--reka-select-trigger-width\)\]{min-width:var(--reka-select-trigger-width)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\(--reka-popover-content-transform-origin\){transform-origin:var(--reka-popover-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-2{--tw-translate-y:calc(var(--spacing)*-2);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-none{translate:none}.scale-3d{scale:var(--tw-scale-x)var(--tw-scale-y)var(--tw-scale-z)}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,)var(--tw-pan-y,)var(--tw-pinch-zoom,)}.touch-manipulation{touch-action:manipulation}.touch-none{touch-action:none}.resize{resize:both}.scroll-my-1{scroll-margin-block:calc(var(--spacing)*1)}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.place-items-center{place-items:center}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-end-width:calc(1px*calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-300{border-color:var(--color-amber-300)}.border-background{border-color:var(--background)}.border-blue-300{border-color:var(--color-blue-300)}.border-blue-400{border-color:var(--color-blue-400)}.border-border{border-color:var(--border)}.border-destructive,.border-destructive\/20{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/20{border-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.border-destructive\/50{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/50{border-color:color-mix(in oklab,var(--destructive)50%,transparent)}}.border-gray-300{border-color:var(--color-gray-300)}.border-green-300{border-color:var(--color-green-300)}.border-input{border-color:var(--input)}.border-primary{border-color:var(--primary)}.border-red-300{border-color:var(--color-red-300)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-transparent{border-color:#0000}.border-yellow-400{border-color:var(--color-yellow-400)}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-background,.bg-background\/70{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/70{background-color:color-mix(in oklab,var(--background)70%,transparent)}}.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/80{background-color:color-mix(in oklab,var(--background)80%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab, red, red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive,.bg-destructive\/5{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/5{background-color:color-mix(in oklab,var(--destructive)5%,transparent)}}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-muted,.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--muted)30%,transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--primary)10%,transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary)20%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-transparent{background-color:#0000}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-cyan-400{--tw-gradient-from:var(--color-cyan-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-green-400{--tw-gradient-from:var(--color-green-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-purple-600{--tw-gradient-from:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-slate-400{--tw-gradient-from:var(--color-slate-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-yellow-400{--tw-gradient-from:var(--color-yellow-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-blue-600{--tw-gradient-to:var(--color-blue-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-emerald-600{--tw-gradient-to:var(--color-emerald-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-indigo-900{--tw-gradient-to:var(--color-indigo-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-orange-500{--tw-gradient-to:var(--color-orange-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-slate-600{--tw-gradient-to:var(--color-slate-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.fill-foreground{fill:var(--foreground)}.p-0{padding:calc(var(--spacing)*0)}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0{padding-block:calc(var(--spacing)*0)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-4\.5{padding-block:calc(var(--spacing)*4.5)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-10{padding-block:calc(var(--spacing)*10)}.py-12{padding-block:calc(var(--spacing)*12)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-\[60px\]{padding-top:60px}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-8{padding-right:calc(var(--spacing)*8)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-6{padding-left:calc(var(--spacing)*6)}.pl-10{padding-left:calc(var(--spacing)*10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-8xl{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-sm\/relaxed{font-size:var(--text-sm);line-height:var(--leading-relaxed)}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-balance{text-wrap:balance}.text-wrap{text-wrap:wrap}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.text-amber-700{color:var(--color-amber-700)}.text-background{color:var(--background)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-cyan-600{color:var(--color-cyan-600)}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-foreground{color:var(--foreground)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-indigo-600{color:var(--color-indigo-600)}.text-muted-foreground,.text-muted-foreground\/20{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/20{color:color-mix(in oklab,var(--muted-foreground)20%,transparent)}}.text-orange-600{color:var(--color-orange-600)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-600{color:var(--color-purple-600)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground)70%,transparent)}}.text-white{color:var(--color-white)}.text-yellow-600{color:var(--color-yellow-600)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.decoration-dotted{text-decoration-style:dotted}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-yellow-400{--tw-ring-color:var(--color-yellow-400)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a))drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a)drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter\!{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)!important}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.paused{animation-play-state:paused}.ring-inset{--tw-ring-inset:inset}.zoom-in{--tw-enter-scale:0}.zoom-out{--tw-exit-scale:0}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media (hover:hover){.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *){opacity:1}}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing)*8)}.group-data-\[collapsible\=icon\]\:absolute:is(:where(.group)[data-collapsible=icon] *){position:absolute}.group-data-\[collapsible\=icon\]\:-top-1:is(:where(.group)[data-collapsible=icon] *){top:calc(var(--spacing)*-1)}.group-data-\[collapsible\=icon\]\:right-0:is(:where(.group)[data-collapsible=icon] *){right:calc(var(--spacing)*0)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing)*-8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing)*8)!important;height:calc(var(--spacing)*8)!important}.group-data-\[collapsible\=icon\]\:h-4:is(:where(.group)[data-collapsible=icon] *){height:calc(var(--spacing)*4)}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-8:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing)*8)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing)*4)))}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing)*4)) + 2px)}.group-data-\[collapsible\=icon\]\:min-w-4:is(:where(.group)[data-collapsible=icon] *){min-width:calc(var(--spacing)*4)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*0)!important}.group-data-\[collapsible\=icon\]\:p-2:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*2)}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing)*0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing)*-4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing)*0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[state\=collapsed\]\:rotate-180:is(:where(.group)[data-state=collapsed] *){rotate:180deg}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing)*1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing)*2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing)*1)}.selection\:bg-primary ::selection,.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection,.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing)*-2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing)*0)}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:pb-0:last-child{padding-bottom:calc(var(--spacing)*0)}@media (hover:hover){.hover\:border-primary:hover{border-color:var(--primary)}.hover\:bg-accent:hover,.hover\:bg-accent\/50:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/50:hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.hover\:bg-amber-50:hover{background-color:var(--color-amber-50)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-secondary:hover,.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-accent)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}:where([data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where([data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[variant\=inset\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing)*9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing)*8)}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing)*2)}.data-\[state\=active\]\:border-border[data-state=active]{border-color:var(--border)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--foreground)}.data-\[state\=active\]\:shadow-md[data-state=active]{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}@media (hover:hover){.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}@media (min-width:40rem){.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-1{grid-column:span 1/span 1}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:mt-0{margin-top:calc(var(--spacing)*0)}.sm\:mb-2{margin-bottom:calc(var(--spacing)*2)}.sm\:mb-6{margin-bottom:calc(var(--spacing)*6)}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:h-3{height:calc(var(--spacing)*3)}.sm\:h-4{height:calc(var(--spacing)*4)}.sm\:h-6{height:calc(var(--spacing)*6)}.sm\:h-9{height:calc(var(--spacing)*9)}.sm\:w-4{width:calc(var(--spacing)*4)}.sm\:w-auto{width:auto}.sm\:max-w-2xl{max-width:var(--container-2xl)}.sm\:max-w-4xl{max-width:var(--container-4xl)}.sm\:max-w-\[90vw\]{max-width:90vw}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:min-w-\[764px\]{min-width:764px}.sm\:flex-1{flex:1}.sm\:flex-initial{flex:0 auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:items-start{align-items:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2{gap:calc(var(--spacing)*2)}.sm\:gap-3{gap:calc(var(--spacing)*3)}.sm\:gap-4{gap:calc(var(--spacing)*4)}.sm\:gap-6{gap:calc(var(--spacing)*6)}:where(.sm\:space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3{padding:calc(var(--spacing)*3)}.sm\:p-4{padding:calc(var(--spacing)*4)}.sm\:p-6{padding:calc(var(--spacing)*6)}.sm\:px-2{padding-inline:calc(var(--spacing)*2)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:py-4{padding-block:calc(var(--spacing)*4)}.sm\:pt-4{padding-top:calc(var(--spacing)*4)}.sm\:pt-6{padding-top:calc(var(--spacing)*6)}.sm\:pr-2\.5{padding-right:calc(var(--spacing)*2.5)}.sm\:pb-4{padding-bottom:calc(var(--spacing)*4)}.sm\:pb-6{padding-bottom:calc(var(--spacing)*6)}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-9xl{font-size:var(--text-9xl);line-height:var(--tw-leading,var(--text-9xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:48rem){.md\:block{display:block}.md\:flex{display:flex}.md\:w-full{width:100%}.md\:max-w-3xl{max-width:var(--container-3xl)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:p-12{padding:calc(var(--spacing)*12)}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:opacity-0{opacity:0}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing)*2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing)*0)}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) + 4px)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing)*2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media (min-width:64rem){.lg\:left-\[var\(--sidebar-width\)\]{left:var(--sidebar-width)}.lg\:left-\[var\(--sidebar-width-icon\)\]{left:var(--sidebar-width-icon)}.lg\:hidden{display:none}.lg\:max-w-4xl{max-width:var(--container-4xl)}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}.dark\:border-amber-700:is(.dark *){border-color:var(--color-amber-700)}.dark\:border-blue-600:is(.dark *){border-color:var(--color-blue-600)}.dark\:border-blue-700:is(.dark *){border-color:var(--color-blue-700)}.dark\:border-gray-600:is(.dark *){border-color:var(--color-gray-600)}.dark\:border-gray-700:is(.dark *){border-color:var(--color-gray-700)}.dark\:border-green-700:is(.dark *){border-color:var(--color-green-700)}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:border-red-700:is(.dark *){border-color:var(--color-red-700)}.dark\:border-yellow-600:is(.dark *){border-color:var(--color-yellow-600)}.dark\:bg-blue-950:is(.dark *){background-color:var(--color-blue-950)}.dark\:bg-blue-950\/20:is(.dark *){background-color:#16245633}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-950)20%,transparent)}}.dark\:bg-blue-950\/50:is(.dark *){background-color:#16245680}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-950\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-950)50%,transparent)}}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-gray-800:is(.dark *){background-color:var(--color-gray-800)}.dark\:bg-gray-950:is(.dark *){background-color:var(--color-gray-950)}.dark\:bg-gray-950\/30:is(.dark *){background-color:#0307124d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-gray-950\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-gray-950)30%,transparent)}}.dark\:bg-green-600:is(.dark *){background-color:var(--color-green-600)}.dark\:bg-green-950:is(.dark *){background-color:var(--color-green-950)}.dark\:bg-green-950\/30:is(.dark *){background-color:#032e154d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-green-950\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-green-950)30%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:bg-red-600:is(.dark *){background-color:var(--color-red-600)}.dark\:bg-red-950:is(.dark *){background-color:var(--color-red-950)}.dark\:bg-red-950\/20:is(.dark *){background-color:#46080933}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-red-950)20%,transparent)}}.dark\:bg-red-950\/30:is(.dark *){background-color:#4608094d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-950\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-red-950)30%,transparent)}}.dark\:bg-yellow-950\/30:is(.dark *){background-color:#4320044d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-yellow-950\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-yellow-950)30%,transparent)}}.dark\:bg-yellow-950\/50:is(.dark *){background-color:#43200480}@supports (color:color-mix(in lab, red, red)){.dark\:bg-yellow-950\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-yellow-950)50%,transparent)}}.dark\:text-amber-400:is(.dark *){color:var(--color-amber-400)}.dark\:text-blue-300:is(.dark *){color:var(--color-blue-300)}.dark\:text-blue-400:is(.dark *){color:var(--color-blue-400)}.dark\:text-cyan-400:is(.dark *){color:var(--color-cyan-400)}.dark\:text-gray-300:is(.dark *){color:var(--color-gray-300)}.dark\:text-gray-400:is(.dark *){color:var(--color-gray-400)}.dark\:text-green-300:is(.dark *){color:var(--color-green-300)}.dark\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\:text-indigo-400:is(.dark *){color:var(--color-indigo-400)}.dark\:text-orange-400:is(.dark *){color:var(--color-orange-400)}.dark\:text-purple-400:is(.dark *){color:var(--color-purple-400)}.dark\:text-red-300:is(.dark *){color:var(--color-red-300)}.dark\:text-red-400:is(.dark *){color:var(--color-red-400)}.dark\:text-yellow-400:is(.dark *){color:var(--color-yellow-400)}.dark\:ring-yellow-500:is(.dark *){--tw-ring-color:var(--color-yellow-500)}@media (hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\:hover\:bg-amber-950\/30:is(.dark *):hover{background-color:#4619014d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-amber-950\/30:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-amber-950)30%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:data-\[state\=active\]\:border-border:is(.dark *)[data-state=active]{border-color:var(--border)}.dark\:data-\[state\=active\]\:bg-background:is(.dark *)[data-state=active]{background-color:var(--background)}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\:data-\[state\=active\]\:shadow-lg:is(.dark *)[data-state=active]{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-6 svg:not([class*=size-]){width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_svg\:not\(\[class\*\=\\\'size-\\\'\]\)\]\:size-4 svg:not([class*="'size-'"]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\:not\(\[class\*\=\\\'text-\\\'\]\)\]\:text-muted-foreground svg:not([class*="'text-'"]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing)*0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing)*2)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>a\]\:underline>a{text-decoration-line:underline}.\[\&\>a\]\:underline-offset-4>a{text-underline-offset:4px}.\[\&\>a\:hover\]\:text-primary>a:hover{color:var(--primary)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing)*-2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing)*-2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}@media (hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary)90%,transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.625rem;--background:#f1eee9;--foreground:#322d22;--card:#f7f5f1;--card-foreground:#322d22;--popover:#f7f5f1;--popover-foreground:#322d22;--primary:#2c3d49;--primary-foreground:#faf8f5;--secondary:#e8e4dd;--secondary-foreground:#322d22;--muted:#e8e4dd;--muted-foreground:#686357;--accent:#e8e4dd;--accent-foreground:#322d22;--destructive:#a83634;--destructive-foreground:#faf8f5;--border:#d4d0c8;--input:#d4d0c8;--ring:#90a1b9;--chart-1:#f05100;--chart-2:#009588;--chart-3:#104e64;--chart-4:#fcbb00;--chart-5:#f99c00;--sidebar:#f4f1ed;--sidebar-foreground:#322d22;--sidebar-primary:#2c3d49;--sidebar-primary-foreground:#faf8f5;--sidebar-accent:#e8e4dd;--sidebar-accent-foreground:#322d22;--sidebar-border:#d4d0c8;--sidebar-ring:#90a1b9}@supports (color:lab(0% 0 0)){:root{--background:lab(94.2323% .225008 3.04775);--foreground:lab(18.8618% .892401 7.89354);--card:lab(96.5445% .164777 2.28328);--card-foreground:lab(18.8618% .892401 7.89354);--popover:lab(96.5445% .164777 2.28328);--popover-foreground:lab(18.8618% .892401 7.89354);--primary:lab(24.6171% -4.29076 -9.62854);--primary-foreground:lab(97.7005% .135839 1.90167);--secondary:lab(90.76% .288427 3.81444);--secondary-foreground:lab(18.8618% .892401 7.89354);--muted:lab(90.76% .288427 3.81444);--muted-foreground:lab(42.0703% .744164 7.75418);--accent:lab(90.76% .288427 3.81444);--accent-foreground:lab(18.8618% .892401 7.89354);--destructive:lab(40.499% 47.3146 28.368);--destructive-foreground:lab(97.7005% .135839 1.90167);--border:lab(83.8074% .356913 4.58459);--input:lab(83.8074% .356913 4.58459);--ring:lab(65.5349% -2.25151 -14.5072);--chart-1:lab(57.1026% 64.2584 89.8886);--chart-2:lab(55.0223% -41.0774 -3.90277);--chart-3:lab(30.372% -13.1853 -18.7887);--chart-4:lab(80.1641% 16.6016 99.2089);--chart-5:lab(72.7183% 31.8672 97.9407);--sidebar:lab(95.3845% .164986 2.28332);--sidebar-foreground:lab(18.8618% .892401 7.89354);--sidebar-primary:lab(24.6171% -4.29076 -9.62854);--sidebar-primary-foreground:lab(97.7005% .135839 1.90167);--sidebar-accent:lab(90.76% .288427 3.81444);--sidebar-accent-foreground:lab(18.8618% .892401 7.89354);--sidebar-border:lab(83.8074% .356913 4.58459);--sidebar-ring:lab(65.5349% -2.25151 -14.5072)}}.dark{--background:#020307;--foreground:#f8fafc;--card:#070b14;--card-foreground:#f8fafc;--popover:#070b14;--popover-foreground:#f8fafc;--primary:#76aaed;--primary-foreground:#f8fafc;--secondary:#1b222e;--secondary-foreground:#f8fafc;--muted:#1b222e;--muted-foreground:#72839a;--accent:#1b222e;--accent-foreground:#f8fafc;--destructive:#dc414a;--border:#1b222e;--input:#1b222e;--ring:#6a7282;--chart-1:#1447e6;--chart-2:#00bb7f;--chart-3:#f99c00;--chart-4:#ac4bff;--chart-5:#ff2357;--sidebar:#070b14;--sidebar-foreground:#f8fafc;--sidebar-primary:#1447e6;--sidebar-primary-foreground:#f8fafc;--sidebar-accent:#1b222e;--sidebar-accent-foreground:#f8fafc;--sidebar-border:#1b222e;--sidebar-ring:#6a7282}@supports (color:lab(0% 0 0)){.dark{--background:lab(.879473% .0693277 -1.61465);--foreground:lab(98.1434% -.369549 -1.05968);--card:lab(2.98047% .150263 -4.74351);--card-foreground:lab(98.1434% -.369549 -1.05968);--popover:lab(2.98047% .150263 -4.74351);--popover-foreground:lab(98.1434% -.369549 -1.05968);--primary:lab(68.0384% -3.53837 -39.6946);--primary-foreground:lab(98.1434% -.369549 -1.05968);--secondary:lab(12.8805% -.587493 -9.04602);--secondary-foreground:lab(98.1434% -.369549 -1.05968);--muted:lab(12.8805% -.587493 -9.04602);--muted-foreground:lab(53.9284% -2.13248 -14.4608);--accent:lab(12.8805% -.587493 -9.04602);--accent-foreground:lab(98.1434% -.369549 -1.05968);--destructive:lab(52.0859% 60.8796 32.2468);--border:lab(12.8805% -.587493 -9.04602);--input:lab(12.8805% -.587493 -9.04602);--ring:lab(47.7841% -.393212 -10.0268);--chart-1:lab(36.9089% 35.0961 -85.6872);--chart-2:lab(66.9756% -58.27 19.5419);--chart-3:lab(72.7183% 31.8672 97.9407);--chart-4:lab(52.0183% 66.11 -78.2316);--chart-5:lab(56.101% 79.4329 31.4532);--sidebar:lab(2.98047% .150263 -4.74351);--sidebar-foreground:lab(98.1434% -.369549 -1.05968);--sidebar-primary:lab(36.9089% 35.0961 -85.6872);--sidebar-primary-foreground:lab(98.1434% -.369549 -1.05968);--sidebar-accent:lab(12.8805% -.587493 -9.04602);--sidebar-accent-foreground:lab(98.1434% -.369549 -1.05968);--sidebar-border:lab(12.8805% -.587493 -9.04602);--sidebar-ring:lab(47.7841% -.393212 -10.0268)}}@keyframes fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:.3s ease-out fade-in}aside nav a{transition:all .2s}aside nav a:hover button{transform:translate(4px)}@keyframes pulse-resource{0%,to{opacity:1}50%{opacity:.8}}.resource-pulse{animation:2s ease-in-out infinite pulse-resource}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}[data-v-1e57bb70] .prose{color:hsl(var(--foreground))}[data-v-1e57bb70] .prose h1{margin-top:1em;margin-bottom:.5em;font-size:1.5em;font-weight:700}[data-v-1e57bb70] .prose h2{margin-top:.8em;margin-bottom:.4em;font-size:1.25em;font-weight:600}[data-v-1e57bb70] .prose h3{margin-top:.6em;margin-bottom:.3em;font-size:1.1em;font-weight:600}[data-v-1e57bb70] .prose p{margin-top:.5em;margin-bottom:.5em}[data-v-1e57bb70] .prose ul{margin-top:.5em;margin-bottom:.5em;padding-left:1.5em}[data-v-1e57bb70] .prose li{margin-top:.25em;margin-bottom:.25em}[data-v-1e57bb70] .prose code{background:hsl(var(--muted));border-radius:.25rem;padding:.2em .4em;font-size:.875em}[data-v-1e57bb70] .prose pre{background:hsl(var(--muted));border-radius:.5rem;margin-top:.5em;margin-bottom:.5em;padding:1em;overflow-x:auto}[data-v-1e57bb70] .prose a{color:hsl(var(--primary));text-decoration:underline}main[data-v-647bf304]{scroll-behavior:smooth} diff --git a/docs/assets/index-D0T1QtIu.css b/docs/assets/index-D0T1QtIu.css deleted file mode 100644 index 7482ce4..0000000 --- a/docs/assets/index-D0T1QtIu.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */ -@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:#fef2f2;--color-red-300:#ffa3a3;--color-red-400:#ff6568;--color-red-500:#fb2c36;--color-red-600:#e40014;--color-red-700:#bf000f;--color-red-950:#460809;--color-orange-400:#ff8b1a;--color-orange-500:#fe6e00;--color-orange-600:#f05100;--color-amber-50:#fffbeb;--color-amber-300:#ffd236;--color-amber-400:#fcbb00;--color-amber-700:#b75000;--color-amber-950:#461901;--color-yellow-50:#fefce8;--color-yellow-100:#fef9c2;--color-yellow-400:#fac800;--color-yellow-500:#edb200;--color-yellow-600:#cd8900;--color-yellow-950:#432004;--color-green-50:#f0fdf4;--color-green-300:#7bf1a8;--color-green-400:#05df72;--color-green-500:#00c758;--color-green-600:#00a544;--color-green-700:#008138;--color-green-950:#032e15;--color-emerald-600:#009767;--color-cyan-400:#00d2ef;--color-cyan-600:#0092b5;--color-blue-50:#eff6ff;--color-blue-100:#dbeafe;--color-blue-300:#90c5ff;--color-blue-400:#54a2ff;--color-blue-500:#3080ff;--color-blue-600:#155dfc;--color-blue-700:#1447e6;--color-blue-950:#162456;--color-indigo-400:#7d87ff;--color-indigo-600:#4f39f6;--color-indigo-900:#312c85;--color-purple-400:#c07eff;--color-purple-600:#9810fa;--color-slate-400:#90a1b9;--color-slate-600:#45556c;--color-gray-50:#f9fafb;--color-gray-300:#d1d5dc;--color-gray-400:#99a1af;--color-gray-600:#4a5565;--color-gray-700:#364153;--color-gray-950:#030712;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-xs:.125rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}@supports (color:lab(0% 0 0)){:root,:host{--color-red-50:lab(96.5005% 4.18511 1.52329);--color-red-300:lab(76.5514% 36.4219 15.5335);--color-red-400:lab(63.7053% 60.7449 31.3109);--color-red-500:lab(55.4814% 75.0732 48.8528);--color-red-600:lab(48.4493% 77.4328 61.5452);--color-red-700:lab(40.4273% 67.2623 53.7441);--color-red-950:lab(13.003% 29.04 16.7519);--color-orange-400:lab(70.0429% 42.5156 75.8207);--color-orange-500:lab(64.272% 57.1788 90.3583);--color-orange-600:lab(57.1026% 64.2584 89.8886);--color-amber-50:lab(98.6252% -.635982 8.42309);--color-amber-300:lab(86.4156% 6.13147 78.3961);--color-amber-400:lab(80.1641% 16.6016 99.2089);--color-amber-700:lab(47.2709% 42.9082 69.2966);--color-amber-950:lab(15.8111% 20.9107 23.3752);--color-yellow-50:lab(98.6846% -1.79058 9.77662);--color-yellow-100:lab(97.3564% -4.51407 27.344);--color-yellow-400:lab(83.2664% 8.65132 106.895);--color-yellow-500:lab(76.3898% 14.5258 98.4589);--color-yellow-600:lab(62.7799% 22.4198 86.1544);--color-yellow-950:lab(16.8146% 15.7422 23.1133);--color-green-50:lab(98.1563% -5.60117 2.75913);--color-green-300:lab(86.9953% -47.2691 25.0054);--color-green-400:lab(78.503% -64.9265 39.7492);--color-green-500:lab(70.5521% -66.5147 45.8072);--color-green-600:lab(59.0978% -58.6621 41.2579);--color-green-700:lab(47.0329% -47.0239 31.4788);--color-green-950:lab(15.6845% -20.4225 11.7249);--color-emerald-600:lab(55.0481% -49.9246 15.93);--color-cyan-400:lab(76.6045% -40.9406 -29.6231);--color-cyan-600:lab(55.1767% -26.7496 -30.5138);--color-blue-50:lab(96.492% -1.14647 -5.11479);--color-blue-100:lab(92.0301% -2.24757 -11.6453);--color-blue-300:lab(77.5052% -6.4629 -36.42);--color-blue-400:lab(65.0361% -1.42062 -56.9803);--color-blue-500:lab(54.1736% 13.3368 -74.6839);--color-blue-600:lab(44.0605% 29.0279 -86.0352);--color-blue-700:lab(36.9089% 35.0961 -85.6872);--color-blue-950:lab(15.6723% 8.86233 -32.2945);--color-indigo-400:lab(59.866% 22.4833 -64.4485);--color-indigo-600:lab(38.4009% 52.6132 -92.3857);--color-indigo-900:lab(23.3911% 24.6978 -50.4719);--color-purple-400:lab(63.6946% 47.6127 -59.2066);--color-purple-600:lab(43.0295% 75.21 -86.5669);--color-slate-400:lab(65.5349% -2.25151 -14.5072);--color-slate-600:lab(35.5623% -1.74978 -15.4316);--color-gray-50:lab(98.2596% -.247031 -.706708);--color-gray-300:lab(85.1236% -.612259 -3.7138);--color-gray-400:lab(65.9269% -.832707 -8.17474);--color-gray-600:lab(35.6337% -1.58697 -10.8425);--color-gray-700:lab(27.1134% -.956401 -12.3224);--color-gray-950:lab(1.90334% .278696 -5.48866)}}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}body{background-color:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5}html{transition:background-color .3s,color .3s}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background-color:#0000}::-webkit-scrollbar-thumb{border-radius:var(--radius);background-color:var(--border)}::-webkit-scrollbar-thumb:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){::-webkit-scrollbar-thumb:hover{background-color:color-mix(in oklab,var(--muted-foreground)50%,transparent)}}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-1\.5{top:calc(var(--spacing)*1.5)}.top-3{top:calc(var(--spacing)*3)}.top-3\.5{top:calc(var(--spacing)*3.5)}.top-4{top:calc(var(--spacing)*4)}.top-\[50\%\]{top:50%}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.right-1\/2{right:50%}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.bottom-0{bottom:calc(var(--spacing)*0)}.-left-6{left:calc(var(--spacing)*-6)}.left-0{left:calc(var(--spacing)*0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing)*2)}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.order-1{order:1}.order-2{order:2}.col-span-2{grid-column:span 2/span 2}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-3\.5{margin-inline:calc(var(--spacing)*3.5)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.my-8{margin-block:calc(var(--spacing)*8)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-auto{margin-top:auto}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-6{margin-left:calc(var(--spacing)*6)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.aspect-square{aspect-ratio:1}.size-2\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.size-3\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-\[65px\]{height:65px}.h-\[85px\]{height:85px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--reka-select-trigger-height\)\]{height:var(--reka-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-svh{height:100svh}.max-h-\(--reka-select-content-available-height\){max-height:var(--reka-select-content-available-height)}.max-h-96{max-height:calc(var(--spacing)*96)}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-svh{min-height:100svh}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-0\.5{width:calc(var(--spacing)*.5)}.w-2{width:calc(var(--spacing)*2)}.w-3{width:calc(var(--spacing)*3)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-20{width:calc(var(--spacing)*20)}.w-48{width:calc(var(--spacing)*48)}.w-72{width:calc(var(--spacing)*72)}.w-\[calc\(100vw-3rem\)\]{width:calc(100vw - 3rem)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-5{min-width:calc(var(--spacing)*5)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--reka-select-trigger-width\)\]{min-width:var(--reka-select-trigger-width)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\(--reka-popover-content-transform-origin\){transform-origin:var(--reka-popover-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-none{translate:none}.scale-3d{scale:var(--tw-scale-x)var(--tw-scale-y)var(--tw-scale-z)}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,)var(--tw-pan-y,)var(--tw-pinch-zoom,)}.touch-manipulation{touch-action:manipulation}.resize{resize:both}.scroll-my-1{scroll-margin-block:calc(var(--spacing)*1)}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-end-width:calc(1px*calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-amber-300{border-color:var(--color-amber-300)}.border-background{border-color:var(--background)}.border-blue-300{border-color:var(--color-blue-300)}.border-blue-400{border-color:var(--color-blue-400)}.border-border{border-color:var(--border)}.border-destructive,.border-destructive\/20{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/20{border-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.border-destructive\/50{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/50{border-color:color-mix(in oklab,var(--destructive)50%,transparent)}}.border-gray-300{border-color:var(--color-gray-300)}.border-green-300{border-color:var(--color-green-300)}.border-input{border-color:var(--input)}.border-primary{border-color:var(--primary)}.border-red-300{border-color:var(--color-red-300)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-transparent{border-color:#0000}.border-yellow-400{border-color:var(--color-yellow-400)}.bg-background,.bg-background\/70{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/70{background-color:color-mix(in oklab,var(--background)70%,transparent)}}.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/80{background-color:color-mix(in oklab,var(--background)80%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab, red, red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive,.bg-destructive\/5{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/5{background-color:color-mix(in oklab,var(--destructive)5%,transparent)}}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-500{background-color:var(--color-green-500)}.bg-muted,.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--muted)30%,transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--primary)10%,transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary)20%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-500{background-color:var(--color-red-500)}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-transparent{background-color:#0000}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-cyan-400{--tw-gradient-from:var(--color-cyan-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-green-400{--tw-gradient-from:var(--color-green-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-purple-600{--tw-gradient-from:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-slate-400{--tw-gradient-from:var(--color-slate-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-yellow-400{--tw-gradient-from:var(--color-yellow-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-blue-600{--tw-gradient-to:var(--color-blue-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-emerald-600{--tw-gradient-to:var(--color-emerald-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-indigo-900{--tw-gradient-to:var(--color-indigo-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-orange-500{--tw-gradient-to:var(--color-orange-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-slate-600{--tw-gradient-to:var(--color-slate-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.fill-foreground{fill:var(--foreground)}.p-0{padding:calc(var(--spacing)*0)}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-\[3px\]{padding:3px}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0{padding-block:calc(var(--spacing)*0)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-4\.5{padding-block:calc(var(--spacing)*4.5)}.py-6{padding-block:calc(var(--spacing)*6)}.py-6\.5{padding-block:calc(var(--spacing)*6.5)}.py-8{padding-block:calc(var(--spacing)*8)}.py-10{padding-block:calc(var(--spacing)*10)}.py-12{padding-block:calc(var(--spacing)*12)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pr-8{padding-right:calc(var(--spacing)*8)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-6{padding-left:calc(var(--spacing)*6)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-balance{text-wrap:balance}.text-wrap{text-wrap:wrap}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.text-amber-700{color:var(--color-amber-700)}.text-background{color:var(--background)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-cyan-600{color:var(--color-cyan-600)}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-indigo-600{color:var(--color-indigo-600)}.text-muted-foreground{color:var(--muted-foreground)}.text-orange-600{color:var(--color-orange-600)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-600{color:var(--color-purple-600)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground)70%,transparent)}}.text-white{color:var(--color-white)}.text-yellow-600{color:var(--color-yellow-600)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.decoration-dotted{text-decoration-style:dotted}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-yellow-400{--tw-ring-color:var(--color-yellow-400)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a))drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a)drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter\!{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)!important}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.paused{animation-play-state:paused}.ring-inset{--tw-ring-inset:inset}.zoom-in{--tw-enter-scale:0}.zoom-out{--tw-exit-scale:0}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media (hover:hover){.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *){opacity:1}}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing)*8)}.group-data-\[collapsible\=icon\]\:absolute:is(:where(.group)[data-collapsible=icon] *){position:absolute}.group-data-\[collapsible\=icon\]\:-top-1:is(:where(.group)[data-collapsible=icon] *){top:calc(var(--spacing)*-1)}.group-data-\[collapsible\=icon\]\:right-0:is(:where(.group)[data-collapsible=icon] *){right:calc(var(--spacing)*0)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing)*-8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing)*8)!important;height:calc(var(--spacing)*8)!important}.group-data-\[collapsible\=icon\]\:h-4:is(:where(.group)[data-collapsible=icon] *){height:calc(var(--spacing)*4)}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-8:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing)*8)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing)*4)))}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing)*4)) + 2px)}.group-data-\[collapsible\=icon\]\:min-w-4:is(:where(.group)[data-collapsible=icon] *){min-width:calc(var(--spacing)*4)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*0)!important}.group-data-\[collapsible\=icon\]\:p-2:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*2)}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing)*0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing)*-4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing)*0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[state\=collapsed\]\:rotate-180:is(:where(.group)[data-state=collapsed] *){rotate:180deg}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing)*1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing)*2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing)*1)}.selection\:bg-primary ::selection,.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection,.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing)*-2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing)*0)}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:pb-0:last-child{padding-bottom:calc(var(--spacing)*0)}@media (hover:hover){.hover\:bg-accent:hover,.hover\:bg-accent\/50:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/50:hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.hover\:bg-amber-50:hover{background-color:var(--color-amber-50)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-secondary:hover,.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-accent)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}:where([data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where([data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[variant\=inset\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing)*9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing)*8)}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing)*2)}.data-\[state\=active\]\:border-border[data-state=active]{border-color:var(--border)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--foreground)}.data-\[state\=active\]\:shadow-md[data-state=active]{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}@media (hover:hover){.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}@media (min-width:40rem){.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-1{grid-column:span 1/span 1}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:mt-0{margin-top:calc(var(--spacing)*0)}.sm\:mb-2{margin-bottom:calc(var(--spacing)*2)}.sm\:mb-6{margin-bottom:calc(var(--spacing)*6)}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:h-3{height:calc(var(--spacing)*3)}.sm\:h-4{height:calc(var(--spacing)*4)}.sm\:h-6{height:calc(var(--spacing)*6)}.sm\:h-9{height:calc(var(--spacing)*9)}.sm\:w-4{width:calc(var(--spacing)*4)}.sm\:w-12{width:calc(var(--spacing)*12)}.sm\:w-auto{width:auto}.sm\:max-w-2xl{max-width:var(--container-2xl)}.sm\:max-w-4xl{max-width:var(--container-4xl)}.sm\:max-w-\[90vw\]{max-width:90vw}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:flex-1{flex:1}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:items-start{align-items:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2{gap:calc(var(--spacing)*2)}.sm\:gap-3{gap:calc(var(--spacing)*3)}.sm\:gap-4{gap:calc(var(--spacing)*4)}.sm\:gap-6{gap:calc(var(--spacing)*6)}:where(.sm\:space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3{padding:calc(var(--spacing)*3)}.sm\:p-4{padding:calc(var(--spacing)*4)}.sm\:p-6{padding:calc(var(--spacing)*6)}.sm\:px-2{padding-inline:calc(var(--spacing)*2)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:py-4{padding-block:calc(var(--spacing)*4)}.sm\:pt-4{padding-top:calc(var(--spacing)*4)}.sm\:pt-6{padding-top:calc(var(--spacing)*6)}.sm\:pr-2\.5{padding-right:calc(var(--spacing)*2.5)}.sm\:pb-4{padding-bottom:calc(var(--spacing)*4)}.sm\:pb-6{padding-bottom:calc(var(--spacing)*6)}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:48rem){.md\:block{display:block}.md\:flex{display:flex}.md\:w-full{width:100%}.md\:max-w-3xl{max-width:var(--container-3xl)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:opacity-0{opacity:0}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing)*2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing)*0)}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) + 4px)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing)*2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media (min-width:64rem){.lg\:hidden{display:none}.lg\:max-w-4xl{max-width:var(--container-4xl)}.lg\:flex-1{flex:1}.lg\:flex-none{flex:none}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:justify-center{justify-content:center}.lg\:justify-end{justify-content:flex-end}.lg\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}.dark\:border-amber-700:is(.dark *){border-color:var(--color-amber-700)}.dark\:border-blue-600:is(.dark *){border-color:var(--color-blue-600)}.dark\:border-blue-700:is(.dark *){border-color:var(--color-blue-700)}.dark\:border-gray-700:is(.dark *){border-color:var(--color-gray-700)}.dark\:border-green-700:is(.dark *){border-color:var(--color-green-700)}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:border-red-700:is(.dark *){border-color:var(--color-red-700)}.dark\:border-yellow-600:is(.dark *){border-color:var(--color-yellow-600)}.dark\:bg-blue-950:is(.dark *){background-color:var(--color-blue-950)}.dark\:bg-blue-950\/20:is(.dark *){background-color:#16245633}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-950)20%,transparent)}}.dark\:bg-blue-950\/50:is(.dark *){background-color:#16245680}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-950\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-950)50%,transparent)}}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-gray-950:is(.dark *){background-color:var(--color-gray-950)}.dark\:bg-gray-950\/30:is(.dark *){background-color:#0307124d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-gray-950\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-gray-950)30%,transparent)}}.dark\:bg-green-600:is(.dark *){background-color:var(--color-green-600)}.dark\:bg-green-950:is(.dark *){background-color:var(--color-green-950)}.dark\:bg-green-950\/30:is(.dark *){background-color:#032e154d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-green-950\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-green-950)30%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:bg-red-600:is(.dark *){background-color:var(--color-red-600)}.dark\:bg-red-950:is(.dark *){background-color:var(--color-red-950)}.dark\:bg-red-950\/20:is(.dark *){background-color:#46080933}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-red-950)20%,transparent)}}.dark\:bg-red-950\/30:is(.dark *){background-color:#4608094d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-950\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-red-950)30%,transparent)}}.dark\:bg-yellow-950\/30:is(.dark *){background-color:#4320044d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-yellow-950\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-yellow-950)30%,transparent)}}.dark\:bg-yellow-950\/50:is(.dark *){background-color:#43200480}@supports (color:color-mix(in lab, red, red)){.dark\:bg-yellow-950\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-yellow-950)50%,transparent)}}.dark\:text-amber-400:is(.dark *){color:var(--color-amber-400)}.dark\:text-blue-300:is(.dark *){color:var(--color-blue-300)}.dark\:text-blue-400:is(.dark *){color:var(--color-blue-400)}.dark\:text-cyan-400:is(.dark *){color:var(--color-cyan-400)}.dark\:text-gray-300:is(.dark *){color:var(--color-gray-300)}.dark\:text-gray-400:is(.dark *){color:var(--color-gray-400)}.dark\:text-green-300:is(.dark *){color:var(--color-green-300)}.dark\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\:text-indigo-400:is(.dark *){color:var(--color-indigo-400)}.dark\:text-orange-400:is(.dark *){color:var(--color-orange-400)}.dark\:text-purple-400:is(.dark *){color:var(--color-purple-400)}.dark\:text-red-300:is(.dark *){color:var(--color-red-300)}.dark\:text-red-400:is(.dark *){color:var(--color-red-400)}.dark\:text-yellow-400:is(.dark *){color:var(--color-yellow-400)}.dark\:ring-yellow-500:is(.dark *){--tw-ring-color:var(--color-yellow-500)}@media (hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\:hover\:bg-amber-950\/30:is(.dark *):hover{background-color:#4619014d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-amber-950\/30:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-amber-950)30%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:data-\[state\=active\]\:border-border:is(.dark *)[data-state=active]{border-color:var(--border)}.dark\:data-\[state\=active\]\:bg-background:is(.dark *)[data-state=active]{background-color:var(--background)}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\:data-\[state\=active\]\:shadow-lg:is(.dark *)[data-state=active]{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_svg\:not\(\[class\*\=\\\'size-\\\'\]\)\]\:size-4 svg:not([class*="'size-'"]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\:not\(\[class\*\=\\\'text-\\\'\]\)\]\:text-muted-foreground svg:not([class*="'text-'"]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing)*0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing)*2)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing)*-2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing)*-2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}@media (hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary)90%,transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.625rem;--background:#fcfcfc;--foreground:#020618;--card:#fff;--card-foreground:#020618;--popover:#fff;--popover-foreground:#020618;--primary:#0f172b;--primary-foreground:#f8fafc;--secondary:#f1f5f9;--secondary-foreground:#0f172b;--muted:#f1f5f9;--muted-foreground:#62748e;--accent:#f1f5f9;--accent-foreground:#0f172b;--destructive:#e40014;--border:#e2e8f0;--input:#e2e8f0;--ring:#90a1b9;--chart-1:#f05100;--chart-2:#009588;--chart-3:#104e64;--chart-4:#fcbb00;--chart-5:#f99c00;--sidebar:#f8fafc;--sidebar-foreground:#020618;--sidebar-primary:#0f172b;--sidebar-primary-foreground:#f8fafc;--sidebar-accent:#f1f5f9;--sidebar-accent-foreground:#0f172b;--sidebar-border:#e2e8f0;--sidebar-ring:#90a1b9}@supports (color:lab(0% 0 0)){:root{--background:lab(98.84% 0 0);--foreground:lab(1.76974% 1.32743 -9.28855);--card:lab(100% 0 0);--card-foreground:lab(1.76974% 1.32743 -9.28855);--popover:lab(100% 0 0);--popover-foreground:lab(1.76974% 1.32743 -9.28855);--primary:lab(7.78673% 1.82346 -15.0537);--primary-foreground:lab(98.1434% -.369549 -1.05968);--secondary:lab(96.286% -.852466 -2.46847);--secondary-foreground:lab(7.78673% 1.82346 -15.0537);--muted:lab(96.286% -.852466 -2.46847);--muted-foreground:lab(48.0876% -2.03595 -16.5814);--accent:lab(96.286% -.852466 -2.46847);--accent-foreground:lab(7.78673% 1.82346 -15.0537);--destructive:lab(48.4493% 77.4328 61.5452);--border:lab(91.7353% -.998765 -4.76968);--input:lab(91.7353% -.998765 -4.76968);--ring:lab(65.5349% -2.25151 -14.5072);--chart-1:lab(57.1026% 64.2584 89.8886);--chart-2:lab(55.0223% -41.0774 -3.90277);--chart-3:lab(30.372% -13.1853 -18.7887);--chart-4:lab(80.1641% 16.6016 99.2089);--chart-5:lab(72.7183% 31.8672 97.9407);--sidebar:lab(98.1434% -.369549 -1.05968);--sidebar-foreground:lab(1.76974% 1.32743 -9.28855);--sidebar-primary:lab(7.78673% 1.82346 -15.0537);--sidebar-primary-foreground:lab(98.1434% -.369549 -1.05968);--sidebar-accent:lab(96.286% -.852466 -2.46847);--sidebar-accent-foreground:lab(7.78673% 1.82346 -15.0537);--sidebar-border:lab(91.7353% -.998765 -4.76968);--sidebar-ring:lab(65.5349% -2.25151 -14.5072)}}.dark{--background:#020307;--foreground:#f8fafc;--card:#070b14;--card-foreground:#f8fafc;--popover:#070b14;--popover-foreground:#f8fafc;--primary:#76aaed;--primary-foreground:#f8fafc;--secondary:#1b222e;--secondary-foreground:#f8fafc;--muted:#1b222e;--muted-foreground:#72839a;--accent:#1b222e;--accent-foreground:#f8fafc;--destructive:#dc414a;--border:#1b222e;--input:#1b222e;--ring:#6a7282;--chart-1:#1447e6;--chart-2:#00bb7f;--chart-3:#f99c00;--chart-4:#ac4bff;--chart-5:#ff2357;--sidebar:#070b14;--sidebar-foreground:#f8fafc;--sidebar-primary:#1447e6;--sidebar-primary-foreground:#f8fafc;--sidebar-accent:#1b222e;--sidebar-accent-foreground:#f8fafc;--sidebar-border:#1b222e;--sidebar-ring:#6a7282}@supports (color:lab(0% 0 0)){.dark{--background:lab(.879473% .0693277 -1.61465);--foreground:lab(98.1434% -.369549 -1.05968);--card:lab(2.98047% .150263 -4.74351);--card-foreground:lab(98.1434% -.369549 -1.05968);--popover:lab(2.98047% .150263 -4.74351);--popover-foreground:lab(98.1434% -.369549 -1.05968);--primary:lab(68.0384% -3.53837 -39.6946);--primary-foreground:lab(98.1434% -.369549 -1.05968);--secondary:lab(12.8805% -.587493 -9.04602);--secondary-foreground:lab(98.1434% -.369549 -1.05968);--muted:lab(12.8805% -.587493 -9.04602);--muted-foreground:lab(53.9284% -2.13248 -14.4608);--accent:lab(12.8805% -.587493 -9.04602);--accent-foreground:lab(98.1434% -.369549 -1.05968);--destructive:lab(52.0859% 60.8796 32.2468);--border:lab(12.8805% -.587493 -9.04602);--input:lab(12.8805% -.587493 -9.04602);--ring:lab(47.7841% -.393212 -10.0268);--chart-1:lab(36.9089% 35.0961 -85.6872);--chart-2:lab(66.9756% -58.27 19.5419);--chart-3:lab(72.7183% 31.8672 97.9407);--chart-4:lab(52.0183% 66.11 -78.2316);--chart-5:lab(56.101% 79.4329 31.4532);--sidebar:lab(2.98047% .150263 -4.74351);--sidebar-foreground:lab(98.1434% -.369549 -1.05968);--sidebar-primary:lab(36.9089% 35.0961 -85.6872);--sidebar-primary-foreground:lab(98.1434% -.369549 -1.05968);--sidebar-accent:lab(12.8805% -.587493 -9.04602);--sidebar-accent-foreground:lab(98.1434% -.369549 -1.05968);--sidebar-border:lab(12.8805% -.587493 -9.04602);--sidebar-ring:lab(47.7841% -.393212 -10.0268)}}@keyframes fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:.3s ease-out fade-in}aside nav a{transition:all .2s}aside nav a:hover button{transform:translate(4px)}@keyframes pulse-resource{0%,to{opacity:1}50%{opacity:.8}}.resource-pulse{animation:2s ease-in-out infinite pulse-resource}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}main[data-v-19955dd6]{scroll-behavior:smooth} diff --git a/docs/assets/missileLogic-_46Nr-Ju.js b/docs/assets/missileLogic-_46Nr-Ju.js new file mode 100644 index 0000000..05c656f --- /dev/null +++ b/docs/assets/missileLogic-_46Nr-Ju.js @@ -0,0 +1 @@ +import{_ as e,d as t,f as n,g as r,h as i,l as a,m as o,p as s,u as c}from"./game-logic-BBFCPVtv.js";import"./game-config-DRP-gbpS.js";export{a as applyMissileAttackResult,c as calculateMissileFlightTime,t as calculateMissileImpact,n as calculateMissileRange,s as calculateSystemDistance,o as createMissileAttack,i as executeMissileLaunch,r as isTargetInRange,e as validateMissileLaunch}; \ No newline at end of file diff --git a/docs/assets/useGameConfig-b98LOtBY.js b/docs/assets/useGameConfig-DLqfPHtW.js similarity index 96% rename from docs/assets/useGameConfig-b98LOtBY.js rename to docs/assets/useGameConfig-DLqfPHtW.js index f328614..9fac734 100644 --- a/docs/assets/useGameConfig-b98LOtBY.js +++ b/docs/assets/useGameConfig-DLqfPHtW.js @@ -1 +1 @@ -import{Jt as e}from"./game-logic-Bi1l7y4K.js";import{_ as t,d as n,f as r,h as i,l as a,n as o,r as s,s as c,u as l,v as u}from"./game-config-CG6z6nnH.js";import{K as d}from"./index-BT5w6et-.js";const f=()=>{let{t:f}=d(),p={[n.MetalMine]:`metalMine`,[n.CrystalMine]:`crystalMine`,[n.DeuteriumSynthesizer]:`deuteriumSynthesizer`,[n.SolarPlant]:`solarPlant`,[n.FusionReactor]:`fusionReactor`,[n.RoboticsFactory]:`roboticsFactory`,[n.NaniteFactory]:`naniteFactory`,[n.Shipyard]:`shipyard`,[n.ResearchLab]:`researchLab`,[n.MetalStorage]:`metalStorage`,[n.CrystalStorage]:`crystalStorage`,[n.DeuteriumTank]:`deuteriumTank`,[n.DarkMatterCollector]:`darkMatterCollector`,[n.DarkMatterTank]:`darkMatterTank`,[n.MissileSilo]:`missileSilo`,[n.Terraformer]:`terraformer`,[n.LunarBase]:`lunarBase`,[n.SensorPhalanx]:`sensorPhalanx`,[n.JumpGate]:`jumpGate`,[n.PlanetDestroyerFactory]:`planetDestroyerFactory`},m={[t.LightFighter]:`lightFighter`,[t.HeavyFighter]:`heavyFighter`,[t.Cruiser]:`cruiser`,[t.Battleship]:`battleship`,[t.Battlecruiser]:`battlecruiser`,[t.Bomber]:`bomber`,[t.Destroyer]:`destroyer`,[t.SmallCargo]:`smallCargo`,[t.LargeCargo]:`largeCargo`,[t.ColonyShip]:`colonyShip`,[t.Recycler]:`recycler`,[t.EspionageProbe]:`espionageProbe`,[t.SolarSatellite]:`solarSatellite`,[t.DarkMatterHarvester]:`darkMatterHarvester`,[t.Deathstar]:`deathstar`},h={[r.RocketLauncher]:`rocketLauncher`,[r.LightLaser]:`lightLaser`,[r.HeavyLaser]:`heavyLaser`,[r.GaussCannon]:`gaussCannon`,[r.IonCannon]:`ionCannon`,[r.PlasmaTurret]:`plasmaTurret`,[r.SmallShieldDome]:`smallShieldDome`,[r.LargeShieldDome]:`largeShieldDome`,[r.AntiBallisticMissile]:`antiBallisticMissile`,[r.InterplanetaryMissile]:`interplanetaryMissile`,[r.PlanetaryShield]:`planetaryShield`},g={[u.EnergyTechnology]:`energyTechnology`,[u.LaserTechnology]:`laserTechnology`,[u.IonTechnology]:`ionTechnology`,[u.HyperspaceTechnology]:`hyperspaceTechnology`,[u.PlasmaTechnology]:`plasmaTechnology`,[u.ComputerTechnology]:`computerTechnology`,[u.EspionageTechnology]:`espionageTechnology`,[u.WeaponsTechnology]:`weaponsTechnology`,[u.ShieldingTechnology]:`shieldingTechnology`,[u.ArmourTechnology]:`armourTechnology`,[u.Astrophysics]:`astrophysics`,[u.GravitonTechnology]:`gravitonTechnology`,[u.CombustionDrive]:`combustionDrive`,[u.ImpulseDrive]:`impulseDrive`,[u.HyperspaceDrive]:`hyperspaceDrive`,[u.DarkMatterTechnology]:`darkMatterTechnology`,[u.TerraformingTechnology]:`terraformingTechnology`,[u.PlanetDestructionTech]:`planetDestructionTech`},_={[i.Commander]:`commander`,[i.Admiral]:`admiral`,[i.Engineer]:`engineer`,[i.Geologist]:`geologist`,[i.Technocrat]:`technocrat`,[i.DarkMatterSpecialist]:`darkMatterSpecialist`};return{BUILDINGS:e(()=>{let e={};for(let[t,n]of Object.entries(o)){let r=t,i=p[r];e[r]={...n,name:f(`buildings.${i}`),description:f(`buildingDescriptions.${i}`)}}return e}),SHIPS:e(()=>{let e={};for(let[t,n]of Object.entries(a)){let r=t,i=m[r];e[r]={...n,name:f(`ships.${i}`),description:f(`shipDescriptions.${i}`)}}return e}),DEFENSES:e(()=>{let e={};for(let[t,n]of Object.entries(s)){let r=t,i=h[r];e[r]={...n,name:f(`defenses.${i}`),description:f(`defenseDescriptions.${i}`)}}return e}),TECHNOLOGIES:e(()=>{let e={};for(let[t,n]of Object.entries(l)){let r=t,i=g[r];e[r]={...n,name:f(`technologies.${i}`),description:f(`technologyDescriptions.${i}`)}}return e}),OFFICERS:e(()=>{let e={};for(let[t,n]of Object.entries(c)){let r=t,i=_[r];e[r]={...n,name:f(`officers.${i}`),description:f(`officerDescriptions.${i}`)}}return e})}};export{f as t}; \ No newline at end of file +import{on as e}from"./game-logic-BBFCPVtv.js";import{_ as t,d as n,f as r,h as i,l as a,n as o,r as s,s as c,u as l,v as u}from"./game-config-DRP-gbpS.js";import{X as d}from"./index-B4KMqZ_y.js";const f=()=>{let{t:f}=d(),p={[n.MetalMine]:`metalMine`,[n.CrystalMine]:`crystalMine`,[n.DeuteriumSynthesizer]:`deuteriumSynthesizer`,[n.SolarPlant]:`solarPlant`,[n.FusionReactor]:`fusionReactor`,[n.RoboticsFactory]:`roboticsFactory`,[n.NaniteFactory]:`naniteFactory`,[n.Shipyard]:`shipyard`,[n.ResearchLab]:`researchLab`,[n.MetalStorage]:`metalStorage`,[n.CrystalStorage]:`crystalStorage`,[n.DeuteriumTank]:`deuteriumTank`,[n.DarkMatterCollector]:`darkMatterCollector`,[n.DarkMatterTank]:`darkMatterTank`,[n.MissileSilo]:`missileSilo`,[n.Terraformer]:`terraformer`,[n.LunarBase]:`lunarBase`,[n.SensorPhalanx]:`sensorPhalanx`,[n.JumpGate]:`jumpGate`,[n.PlanetDestroyerFactory]:`planetDestroyerFactory`},m={[t.LightFighter]:`lightFighter`,[t.HeavyFighter]:`heavyFighter`,[t.Cruiser]:`cruiser`,[t.Battleship]:`battleship`,[t.Battlecruiser]:`battlecruiser`,[t.Bomber]:`bomber`,[t.Destroyer]:`destroyer`,[t.SmallCargo]:`smallCargo`,[t.LargeCargo]:`largeCargo`,[t.ColonyShip]:`colonyShip`,[t.Recycler]:`recycler`,[t.EspionageProbe]:`espionageProbe`,[t.SolarSatellite]:`solarSatellite`,[t.DarkMatterHarvester]:`darkMatterHarvester`,[t.Deathstar]:`deathstar`},h={[r.RocketLauncher]:`rocketLauncher`,[r.LightLaser]:`lightLaser`,[r.HeavyLaser]:`heavyLaser`,[r.GaussCannon]:`gaussCannon`,[r.IonCannon]:`ionCannon`,[r.PlasmaTurret]:`plasmaTurret`,[r.SmallShieldDome]:`smallShieldDome`,[r.LargeShieldDome]:`largeShieldDome`,[r.AntiBallisticMissile]:`antiBallisticMissile`,[r.InterplanetaryMissile]:`interplanetaryMissile`,[r.PlanetaryShield]:`planetaryShield`},g={[u.EnergyTechnology]:`energyTechnology`,[u.LaserTechnology]:`laserTechnology`,[u.IonTechnology]:`ionTechnology`,[u.HyperspaceTechnology]:`hyperspaceTechnology`,[u.PlasmaTechnology]:`plasmaTechnology`,[u.ComputerTechnology]:`computerTechnology`,[u.EspionageTechnology]:`espionageTechnology`,[u.WeaponsTechnology]:`weaponsTechnology`,[u.ShieldingTechnology]:`shieldingTechnology`,[u.ArmourTechnology]:`armourTechnology`,[u.Astrophysics]:`astrophysics`,[u.GravitonTechnology]:`gravitonTechnology`,[u.CombustionDrive]:`combustionDrive`,[u.ImpulseDrive]:`impulseDrive`,[u.HyperspaceDrive]:`hyperspaceDrive`,[u.DarkMatterTechnology]:`darkMatterTechnology`,[u.TerraformingTechnology]:`terraformingTechnology`,[u.PlanetDestructionTech]:`planetDestructionTech`},_={[i.Commander]:`commander`,[i.Admiral]:`admiral`,[i.Engineer]:`engineer`,[i.Geologist]:`geologist`,[i.Technocrat]:`technocrat`,[i.DarkMatterSpecialist]:`darkMatterSpecialist`};return{BUILDINGS:e(()=>{let e={};for(let[t,n]of Object.entries(o)){let r=t,i=p[r];e[r]={...n,name:f(`buildings.${i}`),description:f(`buildingDescriptions.${i}`)}}return e}),SHIPS:e(()=>{let e={};for(let[t,n]of Object.entries(a)){let r=t,i=m[r];e[r]={...n,name:f(`ships.${i}`),description:f(`shipDescriptions.${i}`)}}return e}),DEFENSES:e(()=>{let e={};for(let[t,n]of Object.entries(s)){let r=t,i=h[r];e[r]={...n,name:f(`defenses.${i}`),description:f(`defenseDescriptions.${i}`)}}return e}),TECHNOLOGIES:e(()=>{let e={};for(let[t,n]of Object.entries(l)){let r=t,i=g[r];e[r]={...n,name:f(`technologies.${i}`),description:f(`technologyDescriptions.${i}`)}}return e}),OFFICERS:e(()=>{let e={};for(let[t,n]of Object.entries(c)){let r=t,i=_[r];e[r]={...n,name:f(`officers.${i}`),description:f(`officerDescriptions.${i}`)}}return e})}};export{f as t}; \ No newline at end of file diff --git a/docs/assets/vendor-icons-Ccm2_GPI.js b/docs/assets/vendor-icons-Ccm2_GPI.js new file mode 100644 index 0000000..ca25d0e --- /dev/null +++ b/docs/assets/vendor-icons-Ccm2_GPI.js @@ -0,0 +1 @@ +import{gn as e}from"./game-logic-BBFCPVtv.js";var t=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),n=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),r=e=>{let t=n(e);return t.charAt(0).toUpperCase()+t.slice(1)},i=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),a=e=>e===``,o={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},s=({name:n,iconNode:s,absoluteStrokeWidth:c,"absolute-stroke-width":l,strokeWidth:u,"stroke-width":d,size:f=o.width,color:p=o.stroke,...m},{slots:h})=>e(`svg`,{...o,...m,width:f,height:f,stroke:p,"stroke-width":a(c)||a(l)||c===!0||l===!0?Number(u||d||o[`stroke-width`])*24/Number(f):u||d||o[`stroke-width`],class:i(`lucide`,m.class,...n?[`lucide-${t(r(n))}-icon`,`lucide-${t(n)}`]:[`lucide-icon`])},[...s.map(t=>e(...t)),...h.default?[h.default()]:[]]),c=(t,n)=>(r,{slots:i,attrs:a})=>e(s,{...a,...r,iconNode:n,name:t},i),l=c(`ban`,[[`path`,{d:`M4.929 4.929 19.07 19.071`,key:`196cmz`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),u=c(`bomb`,[[`circle`,{cx:`11`,cy:`13`,r:`9`,key:`hd149`}],[`path`,{d:`M14.35 4.65 16.3 2.7a2.41 2.41 0 0 1 3.4 0l1.6 1.6a2.4 2.4 0 0 1 0 3.4l-1.95 1.95`,key:`jp4j1b`}],[`path`,{d:`m22 2-1.5 1.5`,key:`ay92ug`}]]),d=c(`building-2`,[[`path`,{d:`M10 12h4`,key:`a56b0p`}],[`path`,{d:`M10 8h4`,key:`1sr2af`}],[`path`,{d:`M14 21v-3a2 2 0 0 0-4 0v3`,key:`1rgiei`}],[`path`,{d:`M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2`,key:`secmi2`}],[`path`,{d:`M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16`,key:`16ra0t`}]]),f=c(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),p=c(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),m=c(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),h=c(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),g=c(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),_=c(`chevrons-left`,[[`path`,{d:`m11 17-5-5 5-5`,key:`13zhaf`}],[`path`,{d:`m18 17-5-5 5-5`,key:`h8a8et`}]]),v=c(`chevrons-up-down`,[[`path`,{d:`m7 15 5 5 5-5`,key:`1hf1tw`}],[`path`,{d:`m7 9 5-5 5 5`,key:`sgt6xg`}]]),y=c(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),b=c(`clock`,[[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),x=c(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),S=c(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),C=c(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),w=c(`flask-conical`,[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`,key:`18mbvz`}],[`path`,{d:`M6.453 15h11.094`,key:`3shlmq`}],[`path`,{d:`M8.5 2h7`,key:`csnxdl`}]]),T=c(`fuel`,[[`path`,{d:`M14 13h2a2 2 0 0 1 2 2v2a2 2 0 0 0 4 0v-6.998a2 2 0 0 0-.59-1.42L18 5`,key:`1wtuz0`}],[`path`,{d:`M14 21V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v16`,key:`e09ifn`}],[`path`,{d:`M2 21h13`,key:`1x0fut`}],[`path`,{d:`M3 9h11`,key:`1p7c0w`}]]),E=c(`gift`,[[`rect`,{x:`3`,y:`8`,width:`18`,height:`4`,rx:`1`,key:`bkv52`}],[`path`,{d:`M12 8v13`,key:`1c76mn`}],[`path`,{d:`M19 12v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-7`,key:`6wjy6b`}],[`path`,{d:`M7.5 8a2.5 2.5 0 0 1 0-5A4.8 8 0 0 1 12 8a4.8 8 0 0 1 4.5-5 2.5 2.5 0 0 1 0 5`,key:`1ihvrl`}]]),D=c(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),O=c(`grid-3x3`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M3 15h18`,key:`5xshup`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}]]),k=c(`handshake`,[[`path`,{d:`m11 17 2 2a1 1 0 1 0 3-3`,key:`efffak`}],[`path`,{d:`m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4`,key:`9pr0kb`}],[`path`,{d:`m21 3 1 11h-2`,key:`1tisrp`}],[`path`,{d:`M3 3 2 14l6.5 6.5a1 1 0 1 0 3-3`,key:`1uvwmv`}],[`path`,{d:`M3 4h8`,key:`1ep09j`}]]),A=c(`house`,[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]]),j=c(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),M=c(`languages`,[[`path`,{d:`m5 8 6 6`,key:`1wu5hv`}],[`path`,{d:`m4 14 6-6 2-3`,key:`1k1g8d`}],[`path`,{d:`M2 5h12`,key:`or177f`}],[`path`,{d:`M7 2h1`,key:`1t2jsx`}],[`path`,{d:`m22 22-5-10-5 10`,key:`don7ne`}],[`path`,{d:`M14 18h6`,key:`1m8k6r`}]]),N=c(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),P=c(`lock`,[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]),F=c(`mail`,[[`path`,{d:`m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7`,key:`132q7q`}],[`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`,key:`izxlao`}]]),I=c(`messages-square`,[[`path`,{d:`M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z`,key:`1n2ejm`}],[`path`,{d:`M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1`,key:`1qfcsi`}]]),ee=c(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),L=c(`octagon-x`,[[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z`,key:`2d38gg`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),R=c(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),z=c(`panel-left`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}]]),B=c(`pause`,[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]),V=c(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),H=c(`recycle`,[[`path`,{d:`M7 19H4.815a1.83 1.83 0 0 1-1.57-.881 1.785 1.785 0 0 1-.004-1.784L7.196 9.5`,key:`x6z5xu`}],[`path`,{d:`M11 19h8.203a1.83 1.83 0 0 0 1.556-.89 1.784 1.784 0 0 0 0-1.775l-1.226-2.12`,key:`1x4zh5`}],[`path`,{d:`m14 16-3 3 3 3`,key:`f6jyew`}],[`path`,{d:`M8.293 13.596 7.196 9.5 3.1 10.598`,key:`wf1obh`}],[`path`,{d:`m9.344 5.811 1.093-1.892A1.83 1.83 0 0 1 11.985 3a1.784 1.784 0 0 1 1.546.888l3.943 6.843`,key:`9tzpgr`}],[`path`,{d:`m13.378 9.633 4.096 1.098 1.097-4.096`,key:`1oe83g`}]]),U=c(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),W=c(`rocket`,[[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z`,key:`m3kijz`}],[`path`,{d:`m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z`,key:`1fmvmk`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0`,key:`1f8sc4`}],[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}]]),G=c(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),K=c(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),q=c(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),J=c(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]),Y=c(`ship`,[[`path`,{d:`M12 10.189V14`,key:`1p8cqu`}],[`path`,{d:`M12 2v3`,key:`qbqxhf`}],[`path`,{d:`M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6`,key:`qpkstq`}],[`path`,{d:`M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76`,key:`7tigtc`}],[`path`,{d:`M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1`,key:`1924j5`}]]),X=c(`skull`,[[`path`,{d:`m12.5 17-.5-1-.5 1h1z`,key:`3me087`}],[`path`,{d:`M15 22a1 1 0 0 0 1-1v-1a2 2 0 0 0 1.56-3.25 8 8 0 1 0-11.12 0A2 2 0 0 0 8 20v1a1 1 0 0 0 1 1z`,key:`1o5pge`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}]]),Z=c(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),Q=c(`swords`,[[`polyline`,{points:`14.5 17.5 3 6 3 3 6 3 17.5 14.5`,key:`1hfsw2`}],[`line`,{x1:`13`,x2:`19`,y1:`19`,y2:`13`,key:`1vrmhu`}],[`line`,{x1:`16`,x2:`20`,y1:`16`,y2:`20`,key:`1bron3`}],[`line`,{x1:`19`,x2:`21`,y1:`21`,y2:`19`,key:`13pww6`}],[`polyline`,{points:`14.5 6.5 18 3 21 3 21 6 17.5 9.5`,key:`hbey2j`}],[`line`,{x1:`5`,x2:`9`,y1:`14`,y2:`18`,key:`1hf58s`}],[`line`,{x1:`7`,x2:`4`,y1:`17`,y2:`20`,key:`pidxm4`}],[`line`,{x1:`3`,x2:`5`,y1:`19`,y2:`21`,key:`1pehsh`}]]),$=c(`sword`,[[`path`,{d:`m11 19-6-6`,key:`s7kpr`}],[`path`,{d:`m5 21-2-2`,key:`1kw20b`}],[`path`,{d:`m8 16-4 4`,key:`1oqv8h`}],[`path`,{d:`M9.5 17.5 21 6V3h-3L6.5 14.5`,key:`pkxemp`}]]),te=c(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),ne=c(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),re=c(`trophy`,[[`path`,{d:`M10 14.66v1.626a2 2 0 0 1-.976 1.696A5 5 0 0 0 7 21.978`,key:`1n3hpd`}],[`path`,{d:`M14 14.66v1.626a2 2 0 0 0 .976 1.696A5 5 0 0 1 17 21.978`,key:`rfe1zi`}],[`path`,{d:`M18 9h1.5a1 1 0 0 0 0-5H18`,key:`7xy6bh`}],[`path`,{d:`M4 22h16`,key:`57wxv0`}],[`path`,{d:`M6 9a6 6 0 0 0 12 0V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z`,key:`1mhfuq`}],[`path`,{d:`M6 9H4.5a1 1 0 0 1 0-5H6`,key:`tex48p`}]]),ie=c(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),ae=c(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),oe=c(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),se=c(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),ce=c(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]);export{u as $,N as A,C as B,z as C,I as D,ee as E,O as F,v as G,x as H,D as I,h as J,_ as K,E as L,j as M,A as N,F as O,k as P,d as Q,T as R,B as S,L as T,b as U,S as V,y as W,p as X,m as Y,f as Z,G as _,ie as a,H as b,te as c,Z as d,l as et,X as f,K as g,q as h,ae as i,M as j,P as k,$ as l,J as m,se as n,re as o,Y as p,g as q,oe as r,ne as s,ce as t,Q as u,W as v,R as w,V as x,U as y,w as z}; \ No newline at end of file diff --git a/docs/assets/vendor-icons-z9V6Jdbh.js b/docs/assets/vendor-icons-z9V6Jdbh.js deleted file mode 100644 index a3f9ab7..0000000 --- a/docs/assets/vendor-icons-z9V6Jdbh.js +++ /dev/null @@ -1 +0,0 @@ -import{in as e}from"./game-logic-Bi1l7y4K.js";var t=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),n=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),r=e=>{let t=n(e);return t.charAt(0).toUpperCase()+t.slice(1)},i=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),a=e=>e===``,o={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},s=({name:n,iconNode:s,absoluteStrokeWidth:c,"absolute-stroke-width":l,strokeWidth:u,"stroke-width":d,size:f=o.width,color:p=o.stroke,...m},{slots:h})=>e(`svg`,{...o,...m,width:f,height:f,stroke:p,"stroke-width":a(c)||a(l)||c===!0||l===!0?Number(u||d||o[`stroke-width`])*24/Number(f):u||d||o[`stroke-width`],class:i(`lucide`,m.class,...n?[`lucide-${t(r(n))}-icon`,`lucide-${t(n)}`]:[`lucide-icon`])},[...s.map(t=>e(...t)),...h.default?[h.default()]:[]]),c=(t,n)=>(r,{slots:i,attrs:a})=>e(s,{...a,...r,iconNode:n,name:t},i),l=c(`ban`,[[`path`,{d:`M4.929 4.929 19.07 19.071`,key:`196cmz`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),u=c(`building-2`,[[`path`,{d:`M10 12h4`,key:`a56b0p`}],[`path`,{d:`M10 8h4`,key:`1sr2af`}],[`path`,{d:`M14 21v-3a2 2 0 0 0-4 0v3`,key:`1rgiei`}],[`path`,{d:`M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2`,key:`secmi2`}],[`path`,{d:`M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16`,key:`16ra0t`}]]),d=c(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),f=c(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),p=c(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),m=c(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),h=c(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),g=c(`chevrons-left`,[[`path`,{d:`m11 17-5-5 5-5`,key:`13zhaf`}],[`path`,{d:`m18 17-5-5 5-5`,key:`h8a8et`}]]),_=c(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),v=c(`clock`,[[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),y=c(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),b=c(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),x=c(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),S=c(`flask-conical`,[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`,key:`18mbvz`}],[`path`,{d:`M6.453 15h11.094`,key:`3shlmq`}],[`path`,{d:`M8.5 2h7`,key:`csnxdl`}]]),C=c(`fuel`,[[`path`,{d:`M14 13h2a2 2 0 0 1 2 2v2a2 2 0 0 0 4 0v-6.998a2 2 0 0 0-.59-1.42L18 5`,key:`1wtuz0`}],[`path`,{d:`M14 21V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v16`,key:`e09ifn`}],[`path`,{d:`M2 21h13`,key:`1x0fut`}],[`path`,{d:`M3 9h11`,key:`1p7c0w`}]]),w=c(`gift`,[[`rect`,{x:`3`,y:`8`,width:`18`,height:`4`,rx:`1`,key:`bkv52`}],[`path`,{d:`M12 8v13`,key:`1c76mn`}],[`path`,{d:`M19 12v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-7`,key:`6wjy6b`}],[`path`,{d:`M7.5 8a2.5 2.5 0 0 1 0-5A4.8 8 0 0 1 12 8a4.8 8 0 0 1 4.5-5 2.5 2.5 0 0 1 0 5`,key:`1ihvrl`}]]),T=c(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),E=c(`grid-3x3`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M3 15h18`,key:`5xshup`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}]]),D=c(`house`,[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]]),O=c(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),k=c(`languages`,[[`path`,{d:`m5 8 6 6`,key:`1wu5hv`}],[`path`,{d:`m4 14 6-6 2-3`,key:`1k1g8d`}],[`path`,{d:`M2 5h12`,key:`or177f`}],[`path`,{d:`M7 2h1`,key:`1t2jsx`}],[`path`,{d:`m22 22-5-10-5 10`,key:`don7ne`}],[`path`,{d:`M14 18h6`,key:`1m8k6r`}]]),A=c(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),j=c(`lock`,[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]),M=c(`mail`,[[`path`,{d:`m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7`,key:`132q7q`}],[`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`,key:`izxlao`}]]),N=c(`messages-square`,[[`path`,{d:`M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z`,key:`1n2ejm`}],[`path`,{d:`M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1`,key:`1qfcsi`}]]),P=c(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),F=c(`octagon-x`,[[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z`,key:`2d38gg`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),I=c(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),ee=c(`panel-left`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}]]),L=c(`pause`,[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]),R=c(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),z=c(`recycle`,[[`path`,{d:`M7 19H4.815a1.83 1.83 0 0 1-1.57-.881 1.785 1.785 0 0 1-.004-1.784L7.196 9.5`,key:`x6z5xu`}],[`path`,{d:`M11 19h8.203a1.83 1.83 0 0 0 1.556-.89 1.784 1.784 0 0 0 0-1.775l-1.226-2.12`,key:`1x4zh5`}],[`path`,{d:`m14 16-3 3 3 3`,key:`f6jyew`}],[`path`,{d:`M8.293 13.596 7.196 9.5 3.1 10.598`,key:`wf1obh`}],[`path`,{d:`m9.344 5.811 1.093-1.892A1.83 1.83 0 0 1 11.985 3a1.784 1.784 0 0 1 1.546.888l3.943 6.843`,key:`9tzpgr`}],[`path`,{d:`m13.378 9.633 4.096 1.098 1.097-4.096`,key:`1oe83g`}]]),B=c(`rocket`,[[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z`,key:`m3kijz`}],[`path`,{d:`m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z`,key:`1fmvmk`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0`,key:`1f8sc4`}],[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}]]),V=c(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),H=c(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),U=c(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),W=c(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]),G=c(`ship`,[[`path`,{d:`M12 10.189V14`,key:`1p8cqu`}],[`path`,{d:`M12 2v3`,key:`qbqxhf`}],[`path`,{d:`M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6`,key:`qpkstq`}],[`path`,{d:`M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76`,key:`7tigtc`}],[`path`,{d:`M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1`,key:`1924j5`}]]),K=c(`skull`,[[`path`,{d:`m12.5 17-.5-1-.5 1h1z`,key:`3me087`}],[`path`,{d:`M15 22a1 1 0 0 0 1-1v-1a2 2 0 0 0 1.56-3.25 8 8 0 1 0-11.12 0A2 2 0 0 0 8 20v1a1 1 0 0 0 1 1z`,key:`1o5pge`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}]]),q=c(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),J=c(`swords`,[[`polyline`,{points:`14.5 17.5 3 6 3 3 6 3 17.5 14.5`,key:`1hfsw2`}],[`line`,{x1:`13`,x2:`19`,y1:`19`,y2:`13`,key:`1vrmhu`}],[`line`,{x1:`16`,x2:`20`,y1:`16`,y2:`20`,key:`1bron3`}],[`line`,{x1:`19`,x2:`21`,y1:`21`,y2:`19`,key:`13pww6`}],[`polyline`,{points:`14.5 6.5 18 3 21 3 21 6 17.5 9.5`,key:`hbey2j`}],[`line`,{x1:`5`,x2:`9`,y1:`14`,y2:`18`,key:`1hf58s`}],[`line`,{x1:`7`,x2:`4`,y1:`17`,y2:`20`,key:`pidxm4`}],[`line`,{x1:`3`,x2:`5`,y1:`19`,y2:`21`,key:`1pehsh`}]]),Y=c(`sword`,[[`path`,{d:`m11 19-6-6`,key:`s7kpr`}],[`path`,{d:`m5 21-2-2`,key:`1kw20b`}],[`path`,{d:`m8 16-4 4`,key:`1oqv8h`}],[`path`,{d:`M9.5 17.5 21 6V3h-3L6.5 14.5`,key:`pkxemp`}]]),X=c(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),Z=c(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Q=c(`trophy`,[[`path`,{d:`M10 14.66v1.626a2 2 0 0 1-.976 1.696A5 5 0 0 0 7 21.978`,key:`1n3hpd`}],[`path`,{d:`M14 14.66v1.626a2 2 0 0 0 .976 1.696A5 5 0 0 1 17 21.978`,key:`rfe1zi`}],[`path`,{d:`M18 9h1.5a1 1 0 0 0 0-5H18`,key:`7xy6bh`}],[`path`,{d:`M4 22h16`,key:`57wxv0`}],[`path`,{d:`M6 9a6 6 0 0 0 12 0V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z`,key:`1mhfuq`}],[`path`,{d:`M6 9H4.5a1 1 0 0 1 0-5H6`,key:`tex48p`}]]),$=c(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),te=c(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),ne=c(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),re=c(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]);export{O as A,v as B,F as C,j as D,M as E,C as F,p as G,g as H,S as I,u as J,f as K,x as L,E as M,T as N,A as O,w as P,b as R,I as S,N as T,h as U,_ as V,m as W,l as Y,B as _,Q as a,L as b,Y as c,K as d,G as f,V as g,H as h,$ as i,D as j,k,J as l,U as m,ne as n,Z as o,W as p,d as q,te as r,X as s,re as t,q as u,z as v,P as w,ee as x,R as y,y as z}; \ No newline at end of file diff --git a/docs/assets/vendor-others-Bce0hM6h.js b/docs/assets/vendor-others-Bce0hM6h.js new file mode 100644 index 0000000..60b863d --- /dev/null +++ b/docs/assets/vendor-others-Bce0hM6h.js @@ -0,0 +1,59 @@ +import{An as e,Bn as t,Cn as n,En as r,Fn as i,Hn as a,In as o,Jn as s,Kn as c,Mn as l,On as u,Qn as d,Rn as f,Sn as p,Vn as m,Wn as h,Yn as g,Zn as _,_n as v,ar as y,cn as b,cr as x,dn as S,fn as C,kn as w,ln as T,mn as E,nr as D,on as O,or as ee,pn as k,qn as A,rn as j,rr as M,sn as N,sr as te,tr as ne,un as P,vn as F,wn as re,xn as ie,yn as I}from"./game-logic-BBFCPVtv.js";function ae(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;ttypeof e==`boolean`?`${e}`:e===0?`0`:e;const ce=oe,le=(e,t)=>n=>{if(t?.variants==null)return ce(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=se(t)||se(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return ce(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)};function ue(e){return typeof e==`string`?`'${e}'`:new de().serialize(e)}var de=function(){class e{#e=new Map;compare(e,t){let n=typeof e,r=typeof t;return n===`string`&&r===`string`?e.localeCompare(t):n===`number`&&r===`number`?e-t:String.prototype.localeCompare.call(this.serialize(e,!0),this.serialize(t,!0))}serialize(e,t){if(e===null)return`null`;switch(typeof e){case`string`:return t?e:`'${e}'`;case`bigint`:return`${e}n`;case`object`:return this.$object(e);case`function`:return this.$function(e)}return String(e)}serializeObject(e){let t=Object.prototype.toString.call(e);if(t!==`[object Object]`)return this.serializeBuiltInType(t.length<10?`unknown:${t}`:t.slice(8,-1),e);let n=e.constructor,r=n===Object||n===void 0?``:n.name;if(r!==``&&globalThis[r]===n)return this.serializeBuiltInType(r,e);if(typeof e.toJSON==`function`){let t=e.toJSON();return r+(typeof t==`object`&&t?this.$object(t):`(${this.serialize(t)})`)}return this.serializeObjectEntries(r,Object.entries(e))}serializeBuiltInType(e,t){let n=this[`$`+e];if(n)return n.call(this,t);if(typeof t?.entries==`function`)return this.serializeObjectEntries(e,t.entries());throw Error(`Cannot serialize ${e}`)}serializeObjectEntries(e,t){let n=Array.from(t).sort((e,t)=>this.compare(e[0],t[0])),r=`${e}{`;for(let e=0;ethis.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e}();function fe(e,t){return e===t||ue(e)===ue(t)}function pe(e,t){let n=d();return o(()=>{n.value=e()},{...t,flush:t?.flush??`sync`}),s(n)}function L(e){return a()?(c(e),!0):!1}function me(){let e=new Set,t=t=>{e.delete(t)};return{on:n=>{e.add(n);let r=()=>t(n);return L(r),{off:r}},off:t,trigger:(...t)=>Promise.all(Array.from(e).map(e=>e(...t))),clear:()=>{e.clear()}}}function he(e){let t=!1,n,r=m(!0);return(...i)=>(t||=(n=r.run(()=>e(...i)),!0),n)}function ge(e){let t=0,n,r,i=()=>{--t,r&&t<=0&&(r.stop(),n=void 0,r=void 0)};return(...a)=>(t+=1,r||(r=m(!0),n=r.run(()=>e(...a))),L(i),n)}function _e(e){return h(e)?A(new Proxy({},{get(t,n,r){return M(Reflect.get(e.value,n,r))},set(t,n,r){return h(e.value[n])&&!h(r)?e.value[n].value=r:e.value[n]=r,!0},deleteProperty(t,n){return Reflect.deleteProperty(e.value,n)},has(t,n){return Reflect.has(e.value,n)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}})):A(e)}function ve(e){return _e(O(e))}function ye(e,...t){let n=t.flat(),r=n[0];return ve(()=>typeof r==`function`?Object.fromEntries(Object.entries(ne(e)).filter(([e,t])=>!r(D(t),e))):Object.fromEntries(Object.entries(ne(e)).filter(e=>!n.includes(e[0]))))}var be=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var xe=e=>e!==void 0,Se=Object.prototype.toString,Ce=e=>Se.call(e)===`[object Object]`,we=Te();function Te(){return be&&(window==null?void 0:window.navigator)?.userAgent&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||(window==null?void 0:window.navigator)?.maxTouchPoints>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function Ee(e){return e||E()}function De(e){return Array.isArray(e)?e:[e]}function Oe(e,n=1e4){return t((t,r)=>{let i=D(e),a,o=()=>setTimeout(()=>{i=D(e),r()},D(n));return L(()=>{clearTimeout(a)}),{get(){return t(),i},set(e){i=e,r(),clearTimeout(a),a=o()}}})}function ke(e,t){Ee(t)&&n(e,t)}function Ae(e,t,n={}){let{immediate:r=!0,immediateCallback:i=!1}=n,a=d(!1),o=null;function c(){o&&=(clearTimeout(o),null)}function l(){a.value=!1,c()}function u(...n){i&&e(),c(),a.value=!0,o=setTimeout(()=>{a.value=!1,o=null,e(...n)},D(t))}return r&&(a.value=!0,be&&u()),L(l),{isPending:s(a),start:u,stop:l}}function je(e,t,n){return i(e,t,{...n,immediate:!0})}function Me(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)===`[object Module]`:!0}function Ne(e,t,n=`.`,r){if(!Me(t))return Ne(e,{},n,r);let i=Object.assign({},t);for(let t in e){if(t===`__proto__`||t===`constructor`)continue;let a=e[t];a!=null&&(r&&r(i,t,a,n)||(Array.isArray(a)&&Array.isArray(i[t])?i[t]=[...a,...i[t]]:Me(a)&&Me(i[t])?i[t]=Ne(a,i[t],(n?`${n}.`:``)+t.toString(),r):i[t]=a))}return i}function Pe(e){return(...t)=>t.reduce((t,n)=>Ne(t,n,``,e),{})}var Fe=Pe(),Ie=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},Le=new WeakMap,Re=new WeakMap,ze={},Be=0,Ve=function(e){return e&&(e.host||Ve(e.parentNode))},He=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=Ve(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},Ue=function(e,t,n,r){var i=He(t,Array.isArray(e)?e:[e]);ze[n]||(ze[n]=new WeakMap);var a=ze[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(Le.get(e)||0)+1,l=(a.get(e)||0)+1;Le.set(e,c),a.set(e,l),o.push(e),c===1&&i&&Re.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),Be++,function(){o.forEach(function(e){var t=Le.get(e)-1,i=a.get(e)-1;Le.set(e,t),a.set(e,i),t||(Re.has(e)||e.removeAttribute(r),Re.delete(e)),i||e.removeAttribute(n)}),Be--,Be||(Le=new WeakMap,Le=new WeakMap,Re=new WeakMap,ze={})}},We=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||Ie(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),Ue(r,i,n,`aria-hidden`)):function(){return null}},Ge=[`top`,`right`,`bottom`,`left`],Ke=Math.min,R=Math.max,qe=Math.round,Je=Math.floor,z=e=>({x:e,y:e}),Ye={left:`right`,right:`left`,bottom:`top`,top:`bottom`},Xe={start:`end`,end:`start`};function Ze(e,t,n){return R(e,Ke(t,n))}function B(e,t){return typeof e==`function`?e(t):e}function V(e){return e.split(`-`)[0]}function Qe(e){return e.split(`-`)[1]}function $e(e){return e===`x`?`y`:`x`}function et(e){return e===`y`?`height`:`width`}var tt=new Set([`top`,`bottom`]);function H(e){return tt.has(V(e))?`y`:`x`}function nt(e){return $e(H(e))}function rt(e,t,n){n===void 0&&(n=!1);let r=Qe(e),i=nt(e),a=et(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=ft(o)),[o,ft(o)]}function it(e){let t=ft(e);return[at(e),t,at(t)]}function at(e){return e.replace(/start|end/g,e=>Xe[e])}var ot=[`left`,`right`],st=[`right`,`left`],ct=[`top`,`bottom`],lt=[`bottom`,`top`];function ut(e,t,n){switch(e){case`top`:case`bottom`:return n?t?st:ot:t?ot:st;case`left`:case`right`:return t?ct:lt;default:return[]}}function dt(e,t,n,r){let i=Qe(e),a=ut(V(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(at)))),a}function ft(e){return e.replace(/left|right|bottom|top/g,e=>Ye[e])}function pt(e){return{top:0,right:0,bottom:0,left:0,...e}}function mt(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:pt(e)}function ht(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function gt(e,t,n){let{reference:r,floating:i}=e,a=H(t),o=nt(t),s=et(o),c=V(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(Qe(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}var _t=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=a.filter(Boolean),c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=gt(l,r,c),f=r,p={},m=0;for(let n=0;n({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=B(e,t)||{};if(l==null)return{};let d=mt(u),f={x:n,y:r},p=nt(i),m=et(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=Ke(d[_],T),D=Ke(d[v],T),O=E,ee=C-h[m]-D,k=C/2-h[m]/2+w,A=Ze(O,k,ee),j=!c.arrow&&Qe(i)!=null&&k!==A&&a.reference[m]/2-(ke<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(!(u===`alignment`&&_!==H(t))||T.every(e=>H(e.placement)===_?e.overflows[0]>0:!0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=H(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function xt(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function St(e){return Ge.some(t=>e[t]>=0)}var Ct=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n}=t,{strategy:r=`referenceHidden`,...i}=B(e,t);switch(r){case`referenceHidden`:{let e=xt(await vt(t,{...i,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:St(e)}}}case`escaped`:{let e=xt(await vt(t,{...i,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:St(e)}}}default:return{}}}}},wt=new Set([`left`,`top`]);async function Tt(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=V(n),s=Qe(n),c=H(n)===`y`,l=wt.has(o)?-1:1,u=a&&c?-1:1,d=B(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var Et=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await Tt(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},Dt=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i}=t,{mainAxis:a=!0,crossAxis:o=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...c}=B(e,t),l={x:n,y:r},u=await vt(t,c),d=H(V(i)),f=$e(d),p=l[f],m=l[d];if(a){let e=f===`y`?`top`:`left`,t=f===`y`?`bottom`:`right`,n=p+u[e],r=p-u[t];p=Ze(n,p,r)}if(o){let e=d===`y`?`top`:`left`,t=d===`y`?`bottom`:`right`,n=m+u[e],r=m-u[t];m=Ze(n,m,r)}let h=s.fn({...t,[f]:p,[d]:m});return{...h,data:{x:h.x-n,y:h.y-r,enabled:{[f]:a,[d]:o}}}}}},Ot=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=B(e,t),u={x:n,y:r},d=H(i),f=$e(d),p=u[f],m=u[d],h=B(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=wt.has(V(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);mr&&(m=r)}return{[f]:p,[d]:m}}}},kt=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){var n,r;let{placement:i,rects:a,platform:o,elements:s}=t,{apply:c=()=>{},...l}=B(e,t),u=await vt(t,l),d=V(i),f=Qe(i),p=H(i)===`y`,{width:m,height:h}=a.floating,g,_;d===`top`||d===`bottom`?(g=d,_=f===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?`start`:`end`)?`left`:`right`):(_=d,g=f===`end`?`top`:`bottom`);let v=h-u.top-u.bottom,y=m-u.left-u.right,b=Ke(h-u[g],v),x=Ke(m-u[_],y),S=!t.middlewareData.shift,C=b,w=x;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(w=y),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(C=v),S&&!f){let e=R(u.left,0),t=R(u.right,0),n=R(u.top,0),r=R(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:R(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:R(u.top,u.bottom))}await c({...t,availableWidth:w,availableHeight:C});let T=await o.getDimensions(s.floating);return m!==T.width||h!==T.height?{reset:{rects:!0}}:{}}}};function At(){return typeof window<`u`}function jt(e){return Mt(e)?(e.nodeName||``).toLowerCase():`#document`}function U(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function W(e){return((Mt(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Mt(e){return At()?e instanceof Node||e instanceof U(e).Node:!1}function G(e){return At()?e instanceof Element||e instanceof U(e).Element:!1}function K(e){return At()?e instanceof HTMLElement||e instanceof U(e).HTMLElement:!1}function Nt(e){return!At()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof U(e).ShadowRoot}var Pt=new Set([`inline`,`contents`]);function Ft(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=q(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!Pt.has(i)}var It=new Set([`table`,`td`,`th`]);function Lt(e){return It.has(jt(e))}var Rt=[`:popover-open`,`:modal`];function zt(e){return Rt.some(t=>{try{return e.matches(t)}catch{return!1}})}var Bt=[`transform`,`translate`,`scale`,`rotate`,`perspective`],Vt=[`transform`,`translate`,`scale`,`rotate`,`perspective`,`filter`],Ht=[`paint`,`layout`,`strict`,`content`];function Ut(e){let t=Gt(),n=G(e)?q(e):e;return Bt.some(e=>n[e]?n[e]!==`none`:!1)||(n.containerType?n.containerType!==`normal`:!1)||!t&&(n.backdropFilter?n.backdropFilter!==`none`:!1)||!t&&(n.filter?n.filter!==`none`:!1)||Vt.some(e=>(n.willChange||``).includes(e))||Ht.some(e=>(n.contain||``).includes(e))}function Wt(e){let t=Yt(e);for(;K(t)&&!qt(t);){if(Ut(t))return t;if(zt(t))return null;t=Yt(t)}return null}function Gt(){return typeof CSS>`u`||!CSS.supports?!1:CSS.supports(`-webkit-backdrop-filter`,`none`)}var Kt=new Set([`html`,`body`,`#document`]);function qt(e){return Kt.has(jt(e))}function q(e){return U(e).getComputedStyle(e)}function Jt(e){return G(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Yt(e){if(jt(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||Nt(e)&&e.host||W(e);return Nt(t)?t.host:t}function Xt(e){let t=Yt(e);return qt(t)?e.ownerDocument?e.ownerDocument.body:e.body:K(t)&&Ft(t)?t:Xt(t)}function Zt(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=Xt(e),i=r===e.ownerDocument?.body,a=U(r);if(i){let e=Qt(a);return t.concat(a,a.visualViewport||[],Ft(r)?r:[],e&&n?Zt(e):[])}return t.concat(r,Zt(r,[],n))}function Qt(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function $t(e){let t=q(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=K(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=qe(n)!==a||qe(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function en(e){return G(e)?e:e.contextElement}function tn(e){let t=en(e);if(!K(t))return z(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=$t(t),o=(a?qe(n.width):n.width)/r,s=(a?qe(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var nn=z(0);function rn(e){let t=U(e);return!Gt()||!t.visualViewport?nn:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function an(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==U(e)?!1:t}function on(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=en(e),o=z(1);t&&(r?G(r)&&(o=tn(r)):o=tn(e));let s=an(a,n,r)?rn(a):z(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=U(a),t=r&&G(r)?U(r):r,n=e,i=Qt(n);for(;i&&r&&t!==n;){let e=tn(i),t=i.getBoundingClientRect(),r=q(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=U(i),i=Qt(n)}}return ht({width:u,height:d,x:c,y:l})}function sn(e,t){let n=Jt(e).scrollLeft;return t?t.left+n:on(W(e)).left+n}function cn(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-sn(e,n),y:n.top+t.scrollTop}}function ln(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=W(r),s=t?zt(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=z(1),u=z(0),d=K(r);if((d||!d&&!a)&&((jt(r)!==`body`||Ft(o))&&(c=Jt(r)),K(r))){let e=on(r);l=tn(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?cn(o,c):z(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function un(e){return Array.from(e.getClientRects())}function dn(e){let t=W(e),n=Jt(e),r=e.ownerDocument.body,i=R(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=R(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+sn(e),s=-n.scrollTop;return q(r).direction===`rtl`&&(o+=R(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var fn=25;function pn(e,t){let n=U(e),r=W(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=Gt();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=sn(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=fn&&(a-=o)}else l<=fn&&(a+=l);return{width:a,height:o,x:s,y:c}}var mn=new Set([`absolute`,`fixed`]);function hn(e,t){let n=on(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=K(e)?tn(e):z(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function gn(e,t,n){let r;if(t===`viewport`)r=pn(e,n);else if(t===`document`)r=dn(W(e));else if(G(t))r=hn(t,n);else{let n=rn(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return ht(r)}function _n(e,t){let n=Yt(e);return n===t||!G(n)||qt(n)?!1:q(n).position===`fixed`||_n(n,t)}function vn(e,t){let n=t.get(e);if(n)return n;let r=Zt(e,[],!1).filter(e=>G(e)&&jt(e)!==`body`),i=null,a=q(e).position===`fixed`,o=a?Yt(e):e;for(;G(o)&&!qt(o);){let t=q(o),n=Ut(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&mn.has(i.position)||Ft(o)&&!n&&_n(e,o))?r=r.filter(e=>e!==o):i=t,o=Yt(o)}return t.set(e,r),r}function yn(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?zt(t)?[]:vn(t,this._c):[].concat(n),r],o=a[0],s=a.reduce((e,n)=>{let r=gn(t,n,i);return e.top=R(r.top,e.top),e.right=Ke(r.right,e.right),e.bottom=Ke(r.bottom,e.bottom),e.left=R(r.left,e.left),e},gn(t,o,i));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}}function bn(e){let{width:t,height:n}=$t(e);return{width:t,height:n}}function xn(e,t,n){let r=K(t),i=W(t),a=n===`fixed`,o=on(e,!0,a,t),s={scrollLeft:0,scrollTop:0},c=z(0);function l(){c.x=sn(i)}if(r||!r&&!a)if((jt(t)!==`body`||Ft(i))&&(s=Jt(t)),r){let e=on(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else i&&l();a&&!r&&i&&l();let u=i&&!r&&!a?cn(i,s):z(0);return{x:o.left+s.scrollLeft-c.x-u.x,y:o.top+s.scrollTop-c.y-u.y,width:o.width,height:o.height}}function Sn(e){return q(e).position===`static`}function Cn(e,t){if(!K(e)||q(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return W(e)===n&&(n=n.ownerDocument.body),n}function wn(e,t){let n=U(e);if(zt(e))return n;if(!K(e)){let t=Yt(e);for(;t&&!qt(t);){if(G(t)&&!Sn(t))return t;t=Yt(t)}return n}let r=Cn(e,t);for(;r&&Lt(r)&&Sn(r);)r=Cn(r,t);return r&&qt(r)&&Sn(r)&&!Ut(r)?n:r||Wt(e)||n}var Tn=async function(e){let t=this.getOffsetParent||wn,n=this.getDimensions,r=await n(e.floating);return{reference:xn(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function En(e){return q(e).direction===`rtl`}var Dn={convertOffsetParentRelativeRectToViewportRelativeRect:ln,getDocumentElement:W,getClippingRect:yn,getOffsetParent:wn,getElementRects:Tn,getClientRects:un,getDimensions:bn,getScale:tn,isElement:G,isRTL:En};function On(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function kn(e,t){let n=null,r,i=W(e);function a(){var e;clearTimeout(r),(e=n)==null||e.disconnect(),n=null}function o(s,c){s===void 0&&(s=!1),c===void 0&&(c=1),a();let l=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=l;if(s||t(),!f||!p)return;let m=Je(d),h=Je(i.clientWidth-(u+f)),g=Je(i.clientHeight-(d+p)),_=Je(u),v={rootMargin:-m+`px `+-h+`px `+-g+`px `+-_+`px`,threshold:R(0,Ke(1,c))||1},y=!0;function b(t){let n=t[0].intersectionRatio;if(n!==c){if(!y)return o();n?o(!1,n):r=setTimeout(()=>{o(!1,1e-7)},1e3)}n===1&&!On(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(b,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(b,v)}n.observe(e)}return o(!0),a}function An(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=en(e),u=i||a?[...l?Zt(l):[],...Zt(t)]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?kn(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),p.observe(t));let m,h=c?on(e):null;c&&g();function g(){let t=on(e);h&&!On(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var jn=Et,Mn=Dt,Nn=bt,Pn=kt,Fn=Ct,In=yt,Ln=Ot,Rn=(e,t,n)=>{let r=new Map,i={platform:Dn,...n},a={...i.platform,_c:r};return _t(e,t,{...i,platform:a})};function zn(e){return typeof e==`object`&&!!e&&`$el`in e}function Bn(e){if(zn(e)){let t=e.$el;return Mt(t)&&jt(t)===`#comment`?null:t}return e}function Vn(e){return typeof e==`function`?e():M(e)}function Hn(e){return{name:`arrow`,options:e,fn(t){let n=Bn(Vn(e.element));return n==null?{}:In({element:n,padding:e.padding}).fn(t)}}}function Un(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Wn(e,t){let n=Un(e);return Math.round(t*n)/n}function Gn(e,t,n){n===void 0&&(n={});let r=n.whileElementsMounted,o=O(()=>Vn(n.open)??!0),s=O(()=>Vn(n.middleware)),l=O(()=>Vn(n.placement)??`bottom`),u=O(()=>Vn(n.strategy)??`absolute`),f=O(()=>Vn(n.transform)??!0),p=O(()=>Bn(e.value)),m=O(()=>Bn(t.value)),h=g(0),v=g(0),y=g(u.value),b=g(l.value),x=d({}),S=g(!1),C=O(()=>{let e={position:y.value,left:`0`,top:`0`};if(!m.value)return e;let t=Wn(m.value,h.value),n=Wn(m.value,v.value);return f.value?{...e,transform:`translate(`+t+`px, `+n+`px)`,...Un(m.value)>=1.5&&{willChange:`transform`}}:{position:y.value,left:t+`px`,top:n+`px`}}),w;function T(){if(p.value==null||m.value==null)return;let e=o.value;Rn(p.value,m.value,{middleware:s.value,placement:l.value,strategy:u.value}).then(t=>{h.value=t.x,v.value=t.y,y.value=t.strategy,b.value=t.placement,x.value=t.middlewareData,S.value=e!==!1})}function E(){typeof w==`function`&&(w(),w=void 0)}function D(){if(E(),r===void 0){T();return}if(p.value!=null&&m.value!=null){w=r(p.value,m.value,T);return}}function ee(){o.value||(S.value=!1)}return i([s,l,u,o],T,{flush:`sync`}),i([p,m],D,{flush:`sync`}),i(o,ee,{flush:`sync`}),a()&&c(E),{x:_(h),y:_(v),strategy:_(y),placement:_(b),middlewareData:_(x),isPositioned:_(S),floatingStyles:C,update:T}}var Kn=new WeakMap,qn=(...e)=>{let t=e[0],n=E()?.proxy??a();if(n==null&&!v())throw Error(`injectLocal must be called in setup`);return n&&Kn.has(n)&&t in Kn.get(n)?Kn.get(n)[t]:F(...e)},Jn=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var Yn=e=>e!==void 0,Xn=Object.prototype.toString,Zn=e=>Xn.call(e)===`[object Object]`;function Qn(e){return e.endsWith(`rem`)?Number.parseFloat(e)*16:Number.parseFloat(e)}function $n(e){return Array.isArray(e)?e:[e]}function er(e){return h(e)?A(new Proxy({},{get(t,n,r){return M(Reflect.get(e.value,n,r))},set(t,n,r){return h(e.value[n])&&!h(r)?e.value[n].value=r:e.value[n]=r,!0},deleteProperty(t,n){return Reflect.deleteProperty(e.value,n)},has(t,n){return Reflect.has(e.value,n)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}})):A(e)}function tr(e){return er(O(e))}function nr(e,...t){let n=t.flat(),r=n[0];return tr(()=>typeof r==`function`?Object.fromEntries(Object.entries(ne(e)).filter(([e,t])=>!r(D(t),e))):Object.fromEntries(Object.entries(ne(e)).filter(e=>!n.includes(e[0]))))}function rr(e,t,n){return i(e,t,{...n,immediate:!0})}function ir(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var ar=ir();function or(e){ar=e}var sr={exec:()=>null};function J(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(Y.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var cr=(()=>{try{return!0}catch{return!1}})(),Y={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,`i`)},lr=/^(?:[ \t]*(?:\n|$))+/,ur=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,dr=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,fr=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,pr=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,mr=/(?:[*+-]|\d{1,9}[.)])/,hr=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,gr=J(hr).replace(/bull/g,mr).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),_r=J(hr).replace(/bull/g,mr).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),vr=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,yr=/^[^\n]+/,br=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,xr=J(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,br).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Sr=J(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,mr).getRegex(),Cr=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,wr=/|$))/,Tr=J(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,wr).replace(`tag`,Cr).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Er=J(vr).replace(`hr`,fr).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)]) `).replace(`html`,`)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Cr).getRegex(),Dr={blockquote:J(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,Er).getRegex(),code:ur,def:xr,fences:dr,heading:pr,hr:fr,html:Tr,lheading:gr,list:Sr,newline:lr,paragraph:Er,table:sr,text:yr},Or=J(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,fr).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)]) `).replace(`html`,`)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Cr).getRegex(),kr={...Dr,lheading:_r,table:Or,paragraph:J(vr).replace(`hr`,fr).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,Or).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)]) `).replace(`html`,`)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Cr).getRegex()},Ar={...Dr,html:J(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,wr).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:sr,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:J(vr).replace(`hr`,fr).replace(`heading`,` *#{1,6} *[^ +]`).replace(`lheading`,gr).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},jr=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Mr=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Nr=/^( {2,}|\\)\n(?!\s*$)/,Pr=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,cr?"(?`+)[^`]+\k(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),Ur=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,Wr=J(Ur,`u`).replace(/punct/g,Fr).getRegex(),Gr=J(Ur,`u`).replace(/punct/g,zr).getRegex(),Kr=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,qr=J(Kr,`gu`).replace(/notPunctSpace/g,Lr).replace(/punctSpace/g,Ir).replace(/punct/g,Fr).getRegex(),Jr=J(Kr,`gu`).replace(/notPunctSpace/g,Vr).replace(/punctSpace/g,Br).replace(/punct/g,zr).getRegex(),Yr=J(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,Lr).replace(/punctSpace/g,Ir).replace(/punct/g,Fr).getRegex(),Xr=J(/\\(punct)/,`gu`).replace(/punct/g,Fr).getRegex(),Zr=J(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace(`scheme`,/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(`email`,/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Qr=J(wr).replace(`(?:-->|$)`,`-->`).getRegex(),$r=J(`^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^`).replace(`comment`,Qr).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),ei=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,ti=J(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace(`label`,ei).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),ni=J(/^!?\[(label)\]\[(ref)\]/).replace(`label`,ei).replace(`ref`,br).getRegex(),ri=J(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,br).getRegex(),ii=J(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,ni).replace(`nolink`,ri).getRegex(),ai=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,oi={_backpedal:sr,anyPunctuation:Xr,autolink:Zr,blockSkip:Hr,br:Nr,code:Mr,del:sr,emStrongLDelim:Wr,emStrongRDelimAst:qr,emStrongRDelimUnd:Yr,escape:jr,link:ti,nolink:ri,punctuation:Rr,reflink:ni,reflinkSearch:ii,tag:$r,text:Pr,url:sr},si={...oi,link:J(/^!?\[(label)\]\((.*?)\)/).replace(`label`,ei).getRegex(),reflink:J(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,ei).getRegex()},ci={...oi,emStrongRDelimAst:Jr,emStrongLDelim:Gr,url:J(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,ai).replace(`email`,/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:J(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":`>`,'"':`"`,"'":`'`},pi=e=>fi[e];function mi(e,t){if(t){if(Y.escapeTest.test(e))return e.replace(Y.escapeReplace,pi)}else if(Y.escapeTestNoEncode.test(e))return e.replace(Y.escapeReplaceNoEncode,pi);return e}function hi(e){try{e=encodeURI(e).replace(Y.percentDecode,`%`)}catch{return null}return e}function gi(e,t){let n=e.replace(Y.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(Y.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length0?-2:-1}function yi(e,t,n,r,i){let a=t.href,o=t.title||null,s=e[1].replace(i.other.outputLinkReplace,`$1`);r.state.inLink=!0;let c={type:e[0].charAt(0)===`!`?`image`:`link`,raw:n,href:a,title:o,text:s,tokens:r.inlineTokens(s)};return r.state.inLink=!1,c}function bi(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(` +`).map(e=>{let t=e.match(n.other.beginningSpace);if(t===null)return e;let[r]=t;return r.length>=i.length?e.slice(i.length):e}).join(` +`)}var xi=class{options;rules;lexer;constructor(e){this.options=e||ar}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:`space`,raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=t[0].replace(this.rules.other.codeRemoveIndent,``);return{type:`code`,raw:t[0],codeBlockStyle:`indented`,text:this.options.pedantic?e:_i(e,` +`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=bi(e,t[3]||``,this.rules);return{type:`code`,raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,`$1`):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=_i(e,`#`);(this.options.pedantic||!t||this.rules.other.endingSpaceChar.test(t))&&(e=t.trim())}return{type:`heading`,raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:`hr`,raw:_i(t[0],` +`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=_i(t[0],` +`).split(` +`),n=``,r=``,i=[];for(;e.length>0;){let t=!1,a=[],o;for(o=0;o1,i={type:`list`,raw:``,ordered:r,start:r?+n.slice(0,-1):``,loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:`[*+-]`);let a=this.rules.other.listItemRegex(n),o=!1;for(;e;){let n=!1,r=``,s=``;if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let c=t[2].split(` +`,1)[0].replace(this.rules.other.listReplaceTabs,e=>` `.repeat(3*e.length)),l=e.split(` +`,1)[0],u=!c.trim(),d=0;if(this.options.pedantic?(d=2,s=c.trimStart()):u?d=t[1].length+1:(d=t[2].search(this.rules.other.nonSpaceChar),d=d>4?1:d,s=c.slice(d),d+=t[1].length),u&&this.rules.other.blankLine.test(l)&&(r+=l+` +`,e=e.substring(l.length+1),n=!0),!n){let t=this.rules.other.nextBulletRegex(d),n=this.rules.other.hrRegex(d),i=this.rules.other.fencesBeginRegex(d),a=this.rules.other.headingBeginRegex(d),o=this.rules.other.htmlBeginRegex(d);for(;e;){let f=e.split(` +`,1)[0],p;if(l=f,this.options.pedantic?(l=l.replace(this.rules.other.listReplaceNesting,` `),p=l):p=l.replace(this.rules.other.tabCharGlobal,` `),i.test(l)||a.test(l)||o.test(l)||t.test(l)||n.test(l))break;if(p.search(this.rules.other.nonSpaceChar)>=d||!l.trim())s+=` +`+p.slice(d);else{if(u||c.replace(this.rules.other.tabCharGlobal,` `).search(this.rules.other.nonSpaceChar)>=4||i.test(c)||a.test(c)||n.test(c))break;s+=` +`+l}!u&&!l.trim()&&(u=!0),r+=f+` +`,e=e.substring(f.length+1),c=p.slice(d)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(o=!0)),i.items.push({type:`list_item`,raw:r,task:!!this.options.gfm&&this.rules.other.listIsTask.test(s),loose:!1,text:s,tokens:[]}),i.raw+=r}let s=i.items.at(-1);if(s)s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let e of i.items){if(this.lexer.state.top=!1,e.tokens=this.lexer.blockTokens(e.text,[]),e.task){if(e.text=e.text.replace(this.rules.other.listReplaceTask,``),e.tokens[0]?.type===`text`||e.tokens[0]?.type===`paragraph`){e.tokens[0].raw=e.tokens[0].raw.replace(this.rules.other.listReplaceTask,``),e.tokens[0].text=e.tokens[0].text.replace(this.rules.other.listReplaceTask,``);for(let e=this.lexer.inlineQueue.length-1;e>=0;e--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[e].src)){this.lexer.inlineQueue[e].src=this.lexer.inlineQueue[e].src.replace(this.rules.other.listReplaceTask,``);break}}let t=this.rules.other.listTaskCheckbox.exec(e.raw);if(t){let n={type:`checkbox`,raw:t[0]+` `,checked:t[0]!==`[ ]`};e.checked=n.checked,i.loose?e.tokens[0]&&[`paragraph`,`text`].includes(e.tokens[0].type)&&`tokens`in e.tokens[0]&&e.tokens[0].tokens?(e.tokens[0].raw=n.raw+e.tokens[0].raw,e.tokens[0].text=n.raw+e.tokens[0].text,e.tokens[0].tokens.unshift(n)):e.tokens.unshift({type:`paragraph`,raw:n.raw,text:n.raw,tokens:[n]}):e.tokens.unshift(n)}}if(!i.loose){let t=e.tokens.filter(e=>e.type===`space`);i.loose=t.length>0&&t.some(e=>this.rules.other.anyLine.test(e.raw))}}if(i.loose)for(let e of i.items){e.loose=!0;for(let t of e.tokens)t.type===`text`&&(t.type=`paragraph`)}return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:`html`,block:!0,raw:t[0],pre:t[1]===`pre`||t[1]===`script`||t[1]===`style`,text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let e=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,` `),n=t[2]?t[2].replace(this.rules.other.hrefBrackets,`$1`).replace(this.rules.inline.anyPunctuation,`$1`):``,r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,`$1`):t[3];return{type:`def`,tag:e,raw:t[0],href:n,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=gi(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,``).split(`|`),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,``).split(` +`):[],a={type:`table`,raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let e of r)this.rules.other.tableAlignRight.test(e)?a.align.push(`right`):this.rules.other.tableAlignCenter.test(e)?a.align.push(`center`):this.rules.other.tableAlignLeft.test(e)?a.align.push(`left`):a.align.push(null);for(let e=0;e({text:e,tokens:this.lexer.inline(e),header:!1,align:a.align[t]})));return a}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:`heading`,raw:t[0],depth:t[2].charAt(0)===`=`?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e=t[1].charAt(t[1].length-1)===` +`?t[1].slice(0,-1):t[1];return{type:`paragraph`,raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:`text`,raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:`escape`,raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:`html`,raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=_i(e.slice(0,-1),`\\`);if((e.length-t.length)%2==0)return}else{let e=vi(t[2],`()`);if(e===-2)return;if(e>-1){let n=(t[0].indexOf(`!`)===0?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=``}}let n=t[2],r=``;if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):``;return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),yi(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,`$1`),title:r&&r.replace(this.rules.inline.anyPunctuation,`$1`)},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,` `).toLowerCase()];if(!e){let e=n[0].charAt(0);return{type:`text`,raw:e,text:e}}return yi(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=``){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||r[3]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[2])||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=0,c=r[0][0]===`*`?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+n);(r=c.exec(t))!=null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i)continue;if(a=[...i].length,r[3]||r[4]){o+=a;continue}else if((r[5]||r[6])&&n%3&&!((n+a)%3)){s+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o+s);let t=[...r[0]][0].length,c=e.slice(0,n+r.index+t+a);if(Math.min(n,a)%2){let e=c.slice(1,-1);return{type:`em`,raw:c,text:e,tokens:this.lexer.inlineTokens(e)}}let l=c.slice(2,-2);return{type:`strong`,raw:c,text:l,tokens:this.lexer.inlineTokens(l)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal,` `),n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:`codespan`,raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:`br`,raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:`del`,raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return t[2]===`@`?(e=t[1],n=`mailto:`+e):(e=t[1],n=e),{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if(t[2]===`@`)e=t[0],n=`mailto:`+e;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??``;while(r!==t[0]);e=t[0],n=t[1]===`www.`?`http://`+t[0]:t[0]}return{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e=this.lexer.state.inRawBlock;return{type:`text`,raw:t[0],text:t[0],escaped:e}}}},X=class e{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||ar,this.options.tokenizer=this.options.tokenizer||new xi,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:Y,block:ui.normal,inline:di.normal};this.options.pedantic?(t.block=ui.pedantic,t.inline=di.pedantic):this.options.gfm&&(t.block=ui.gfm,this.options.breaks?t.inline=di.breaks:t.inline=di.gfm),this.tokenizer.rules=t}static get rules(){return{block:ui,inline:di}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){e=e.replace(Y.carriageReturn,` +`),this.blockTokens(e,this.tokens);for(let e=0;e(r=n.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let n=t.at(-1);r.raw.length===1&&n!==void 0?n.raw+=` +`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(` +`)?``:` +`)+r.raw,n.text+=` +`+r.text,this.inlineQueue.at(-1).src=n.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(` +`)?``:` +`)+r.raw,n.text+=` +`+r.raw,this.inlineQueue.at(-1).src=n.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let t=1/0,n=e.slice(1),r;this.options.extensions.startBlock.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(i=e.substring(0,t+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let a=t.at(-1);n&&a?.type===`paragraph`?(a.raw+=(a.raw.endsWith(` +`)?``:` +`)+r.raw,a.text+=` +`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let n=t.at(-1);n?.type===`text`?(n.raw+=(n.raw.endsWith(` +`)?``:` +`)+r.raw,n.text+=` +`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(r);continue}if(e){let t=`Infinite loop on byte: `+e.charCodeAt(0);if(this.options.silent){console.error(t);break}else throw Error(t)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,r=null;if(this.tokens.links){let e=Object.keys(this.tokens.links);if(e.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)e.includes(r[0].slice(r[0].lastIndexOf(`[`)+1,-1))&&(n=n.slice(0,r.index)+`[`+`a`.repeat(r[0].length-2)+`]`+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,r.index)+`++`+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+`[`+`a`.repeat(r[0].length-i-2)+`]`+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let a=!1,o=``;for(;e;){a||(o=``),a=!1;let r;if(this.options.extensions?.inline?.some(n=>(r=n.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.escape(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.tag(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.link(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(r.raw.length);let n=t.at(-1);r.type===`text`&&n?.type===`text`?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(r=this.tokenizer.emStrong(e,n,o)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.codespan(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.br(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.del(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.autolink(e)){e=e.substring(r.raw.length),t.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(e))){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startInline){let t=1/0,n=e.slice(1),r;this.options.extensions.startInline.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(i=e.substring(0,t+1))}if(r=this.tokenizer.inlineText(i)){e=e.substring(r.raw.length),r.raw.slice(-1)!==`_`&&(o=r.raw.slice(-1)),a=!0;let n=t.at(-1);n?.type===`text`?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(e){let t=`Infinite loop on byte: `+e.charCodeAt(0);if(this.options.silent){console.error(t);break}else throw Error(t)}}return t}},Si=class{options;parser;constructor(e){this.options=e||ar}space(e){return``}code({text:e,lang:t,escaped:n}){let r=(t||``).match(Y.notSpaceStart)?.[0],i=e.replace(Y.endingNewline,``)+` +`;return r?`
`+(n?i:mi(i,!0))+`
+`:`
`+(n?i:mi(i,!0))+`
+`}blockquote({tokens:e}){return`
+${this.parser.parse(e)}
+`}html({text:e}){return e}def(e){return``}heading({tokens:e,depth:t}){return`${this.parser.parseInline(e)} +`}hr(e){return`
+`}list(e){let t=e.ordered,n=e.start,r=``;for(let t=0;t +`+r+` +`}listitem(e){return`
  • ${this.parser.parse(e.tokens)}
  • +`}checkbox({checked:e}){return` `}paragraph({tokens:e}){return`

    ${this.parser.parseInline(e)}

    +`}table(e){let t=``,n=``;for(let t=0;t${r}`,` + +`+t+` +`+r+`
    +`}tablerow({text:e}){return` +${e} +`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+` +`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${mi(e,!0)}`}br(e){return`
    `}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=hi(e);if(i===null)return r;e=i;let a=`
    `+r+``,a}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=hi(e);if(i===null)return mi(n);e=i;let a=`${n}`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:mi(e.text)}},Ci=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},Z=class e{options;renderer;textRenderer;constructor(e){this.options=e||ar,this.options.renderer=this.options.renderer||new Si,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Ci}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){let t=``;for(let n=0;n{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new Si(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new xi(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new wi;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];wi.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async&&wi.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:t[r]=(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return X.lex(e,t??this.defaults)}parser(e,t){return Z.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer():e?X.lex:X.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser():e?Z.parse:Z.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer():e?X.lex:X.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser():e?Z.parse:Z.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=` +Please report this to https://github.com/markedjs/marked.`,e){let e=`

    An error occurred:

    `+mi(n.message+``,!0)+`
    `;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function Q(e,t){return Ti.parse(e,t)}Q.options=Q.setOptions=function(e){return Ti.setOptions(e),Q.defaults=Ti.defaults,or(Q.defaults),Q},Q.getDefaults=ir,Q.defaults=ar,Q.use=function(...e){return Ti.use(...e),Q.defaults=Ti.defaults,or(Q.defaults),Q},Q.walkTokens=function(e,t){return Ti.walkTokens(e,t)},Q.parseInline=Ti.parseInline,Q.Parser=Z,Q.parser=Z.parse,Q.Renderer=Si,Q.TextRenderer=Ci,Q.Lexer=X,Q.lexer=X.lex,Q.Tokenizer=xi,Q.Hooks=wi,Q.parse=Q,Q.options,Q.setOptions,Q.use,Q.walkTokens,Q.parseInline,Z.parse,X.lex;var Ei=1,$=new class{subscribers;toasts;dismissedToasts;constructor(){this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)});publish=e=>{this.subscribers.forEach(t=>t(e))};addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]};create=e=>{let{message:t,...n}=e,r=typeof e.id==`number`||e.id&&e.id?.length>0?e.id:Ei++,i=this.toasts.find(e=>e.id===r),a=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),i?this.toasts=this.toasts.map(n=>n.id===r?(this.publish({...n,...e,id:r,title:t}),{...n,...e,id:r,dismissible:a,title:t}):n):this.addToast({title:t,...n,dismissible:a,id:r}),r};dismiss=e=>(e?(this.dismissedToasts.add(e),requestAnimationFrame(()=>this.subscribers.forEach(t=>t({id:e,dismiss:!0})))):this.toasts.forEach(e=>{this.subscribers.forEach(t=>t({id:e.id,dismiss:!0}))}),e);message=(e,t)=>this.create({...t,message:e,type:`default`});error=(e,t)=>this.create({...t,type:`error`,message:e});success=(e,t)=>this.create({...t,type:`success`,message:e});info=(e,t)=>this.create({...t,type:`info`,message:e});warning=(e,t)=>this.create({...t,type:`warning`,message:e});loading=(e,t)=>this.create({...t,type:`loading`,message:e});promise=(e,t)=>{if(!t)return;let n;t.loading!==void 0&&(n=this.create({...t,promise:e,type:`loading`,message:t.loading,description:typeof t.description==`function`?void 0:t.description}));let r=Promise.resolve(e instanceof Function?e():e),i=n!==void 0,a,o=r.then(async e=>{if(a=[`resolve`,e],I(e))i=!1,this.create({id:n,type:`default`,message:e});else if(Oi(e)&&!e.ok){i=!1;let r=typeof t.error==`function`?await t.error(`HTTP error! status: ${e.status}`):t.error,a=typeof t.description==`function`?await t.description(`HTTP error! status: ${e.status}`):t.description,o=typeof r==`object`&&!I(r)?r:{message:r||``,id:n||``};this.create({id:n,type:`error`,description:a,...o})}else if(e instanceof Error){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!I(r)?r:{message:r||``,id:n||``};this.create({id:n,type:`error`,description:a,...o})}else if(t.success!==void 0){i=!1;let r=typeof t.success==`function`?await t.success(e):t.success,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!I(r)?r:{message:r||``,id:n||``};this.create({id:n,type:`success`,description:a,...o})}}).catch(async e=>{if(a=[`reject`,e],t.error!==void 0){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!I(r)?r:{message:r||``,id:n||``};this.create({id:n,type:`error`,description:a,...o})}}).finally(()=>{i&&(this.dismiss(n),n=void 0),t.finally?.()}),s=()=>new Promise((e,t)=>o.then(()=>a[0]===`reject`?t(a[1]):e(a[1])).catch(t));return typeof n!=`string`&&typeof n!=`number`?{unwrap:s}:Object.assign(n,{unwrap:s})};custom=(e,t)=>{let n=t?.id||Ei++,r=this.toasts.find(e=>e.id===n),i=t?.dismissible===void 0?!0:t.dismissible;return this.dismissedToasts.has(n)&&this.dismissedToasts.delete(n),r?this.toasts=this.toasts.map(r=>r.id===n?(this.publish({...r,component:e,dismissible:i,id:n,...t}),{...r,component:e,dismissible:i,id:n,...t}):r):this.addToast({component:e,dismissible:i,id:n,...t}),n};getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id))};function Di(e,t){let n=t?.id||Ei++;return $.create({message:e,id:n,type:`default`,...t}),n}var Oi=e=>e&&typeof e==`object`&&`ok`in e&&typeof e.ok==`boolean`&&`status`in e&&typeof e.status==`number`,ki=Di,Ai=Object.assign(ki,{success:$.success,info:$.info,warning:$.warning,error:$.error,custom:$.custom,message:$.message,promise:$.promise,dismiss:$.dismiss,loading:$.loading},{getHistory:()=>$.toasts,getToasts:()=>$.getActiveToasts()});function ji(e){return e.label!==void 0}var Mi=3,Ni=`24px`,Pi=`16px`,Fi=4e3,Ii=356,Li=14,Ri=45,zi=200;function Bi(){let e=g(!1);return o(()=>{let t=()=>{e.value=document.hidden};return document.addEventListener(`visibilitychange`,t),()=>window.removeEventListener(`visibilitychange`,t)}),{isDocumentHidden:e}}function Vi(...e){return e.filter(Boolean).join(` `)}function Hi(e){let[t,n]=e.split(`-`),r=[];return t&&r.push(t),n&&r.push(n),r}function Ui(e,t){let n={};return[e,t].forEach((e,t)=>{let r=t===1,i=r?`--mobile-offset`:`--offset`,a=r?Pi:Ni;function o(e){[`top`,`right`,`bottom`,`left`].forEach(t=>{n[`${i}-${t}`]=typeof e==`number`?`${e}px`:e})}typeof e==`number`||typeof e==`string`?o(e):typeof e==`object`?[`top`,`right`,`bottom`,`left`].forEach(t=>{e[t]===void 0?n[`${i}-${t}`]=a:n[`${i}-${t}`]=typeof e[t]==`number`?`${e[t]}px`:e[t]}):o(a)}),n}var Wi=[`data-rich-colors`,`data-styled`,`data-mounted`,`data-promise`,`data-swiped`,`data-removed`,`data-visible`,`data-y-position`,`data-x-position`,`data-index`,`data-front`,`data-swiping`,`data-dismissible`,`data-type`,`data-invert`,`data-swipe-out`,`data-swipe-direction`,`data-expanded`,`data-testid`],Gi=[`aria-label`,`data-disabled`,`data-close-button-position`],Ki=k({__name:`Toast`,props:{toast:{},toasts:{},index:{},swipeDirections:{},expanded:{type:Boolean},invert:{type:Boolean},heights:{},gap:{},position:{},closeButtonPosition:{},visibleToasts:{},expandByDefault:{type:Boolean},closeButton:{type:Boolean},interacting:{type:Boolean},style:{},cancelButtonStyle:{},actionButtonStyle:{},duration:{},class:{},unstyled:{type:Boolean},descriptionClass:{},loadingIcon:{},classes:{},icons:{},closeButtonAriaLabel:{},defaultRichColors:{type:Boolean}},emits:[`update:heights`,`update:height`,`removeToast`],setup(t,{emit:a}){let s=t,c=a,l=g(null),u=g(null),d=g(!1),f=g(!1),m=g(!1),h=g(!1),_=g(!1),v=g(0),C=g(0),E=g(s.toast.duration||s.duration||Fi),D=g(null),k=g(null),A=O(()=>s.index===0),ne=O(()=>s.index+1<=s.visibleToasts),F=O(()=>s.toast.type),I=O(()=>s.toast.dismissible!==!1),ae=O(()=>s.toast.class||``),oe=O(()=>s.descriptionClass||``),se=O(()=>{let e=s.toast.position||s.position,t=s.heights.filter(t=>t.position===e).findIndex(e=>e.toastId===s.toast.id);return t>=0?t:0}),ce=O(()=>{let e=s.toast.position||s.position;return s.heights.filter(t=>t.position===e).reduce((e,t,n)=>n>=se.value?e:e+t.height,0)}),le=O(()=>se.value*s.gap+ce.value||0),ue=O(()=>s.toast.closeButton??s.closeButton),de=O(()=>s.toast.duration||s.duration||Fi),fe=g(0),pe=g(0),L=g(null),me=O(()=>s.position.split(`-`)),he=O(()=>me.value[0]),ge=O(()=>me.value[1]),_e=O(()=>typeof s.toast.title!=`string`),ve=O(()=>typeof s.toast.description!=`string`),{isDocumentHidden:ye}=Bi(),be=O(()=>F.value&&F.value===`loading`);re(()=>{d.value=!0,E.value=de.value}),o(async()=>{if(!d.value||!k.value)return;await p();let e=k.value,t=e.style.height;e.style.height=`auto`;let n=e.getBoundingClientRect().height;e.style.height=t,C.value=n,c(`update:height`,{toastId:s.toast.id,height:n,position:s.toast.position||s.position})});function xe(){f.value=!0,v.value=le.value,setTimeout(()=>{c(`removeToast`,s.toast)},zi)}function Se(){if(be.value||!I.value)return{};xe(),s.toast.onDismiss?.(s.toast)}function Ce(e){e.button!==2&&(be.value||!I.value||(D.value=new Date,v.value=le.value,e.target.setPointerCapture(e.pointerId),e.target.tagName!==`BUTTON`&&(m.value=!0,L.value={x:e.clientX,y:e.clientY})))}function we(){if(h.value||!I.value)return;L.value=null;let e=Number(k.value?.style.getPropertyValue(`--swipe-amount-x`).replace(`px`,``)||0),t=Number(k.value?.style.getPropertyValue(`--swipe-amount-y`).replace(`px`,``)||0),n=new Date().getTime()-(D.value?.getTime()||0),r=l.value===`x`?e:t,i=Math.abs(r)/n;if(Math.abs(r)>=Ri||i>.11){v.value=le.value,s.toast.onDismiss?.(s.toast),l.value===`x`?u.value=e>0?`right`:`left`:u.value=t>0?`down`:`up`,xe(),h.value=!0;return}else k.value?.style.setProperty(`--swipe-amount-x`,`0px`),k.value?.style.setProperty(`--swipe-amount-y`,`0px`);_.value=!1,m.value=!1,l.value=null}function Te(e){if(!L.value||!I.value||(window?.getSelection()?.toString()?.length??!1))return;let t=e.clientY-L.value.y,n=e.clientX-L.value.x,r=s.swipeDirections??Hi(s.position);!l.value&&(Math.abs(n)>1||Math.abs(t)>1)&&(l.value=Math.abs(n)>Math.abs(t)?`x`:`y`);let i={x:0,y:0},a=e=>1/(1.5+Math.abs(e)/20);if(l.value===`y`){if(r.includes(`top`)||r.includes(`bottom`))if(r.includes(`top`)&&t<0||r.includes(`bottom`)&&t>0)i.y=t;else{let e=t*a(t);i.y=Math.abs(e)0)i.x=n;else{let e=n*a(n);i.x=Math.abs(e)0||Math.abs(i.y)>0)&&(_.value=!0),k.value?.style.setProperty(`--swipe-amount-x`,`${i.x}px`),k.value?.style.setProperty(`--swipe-amount-y`,`${i.y}px`)}re(()=>{if(d.value=!0,!k.value)return;let e=k.value.getBoundingClientRect().height;C.value=e,c(`update:heights`,[{toastId:s.toast.id,height:e,position:s.toast.position},...s.heights])}),n(()=>{k.value&&c(`removeToast`,s.toast)}),o(e=>{if(s.toast.promise&&F.value===`loading`||s.toast.duration===1/0||s.toast.type===`loading`)return;let t;s.expanded||s.interacting||ye.value?(()=>{if(pe.value{s.toast.onAutoClose?.(s.toast),xe()},E.value)),e(()=>{clearTimeout(t)})}),i(()=>s.toast.delete,e=>{e!==void 0&&e&&(xe(),s.toast.onDismiss?.(s.toast))},{deep:!0});function Ee(){m.value=!1,l.value=null,L.value=null}return(t,n)=>(r(),P(`li`,{tabindex:`0`,ref_key:`toastRef`,ref:k,class:y(M(Vi)(s.class,ae.value,t.classes?.toast,t.toast.classes?.toast,t.classes?.[F.value],t.toast?.classes?.[F.value])),"data-sonner-toast":``,"data-rich-colors":t.toast.richColors??t.defaultRichColors,"data-styled":!(t.toast.component||t.toast?.unstyled||t.unstyled),"data-mounted":d.value,"data-promise":!!t.toast.promise,"data-swiped":_.value,"data-removed":f.value,"data-visible":ne.value,"data-y-position":he.value,"data-x-position":ge.value,"data-index":t.index,"data-front":A.value,"data-swiping":m.value,"data-dismissible":I.value,"data-type":F.value,"data-invert":t.toast.invert||t.invert,"data-swipe-out":h.value,"data-swipe-direction":u.value,"data-expanded":!!(t.expanded||t.expandByDefault&&d.value),"data-testid":t.toast.testId,style:te({"--index":t.index,"--toasts-before":t.index,"--z-index":t.toasts.length-t.index,"--offset":`${f.value?v.value:le.value}px`,"--initial-height":t.expandByDefault?`auto`:`${C.value}px`,...t.style,...s.toast.style}),onDragend:Ee,onPointerdown:Ce,onPointerup:we,onPointermove:Te},[ue.value&&!t.toast.component&&F.value!==`loading`?(r(),P(`button`,{key:0,"aria-label":t.closeButtonAriaLabel||`Close toast`,"data-disabled":be.value,"data-close-button":`true`,"data-close-button-position":t.closeButtonPosition,class:y(M(Vi)(t.classes?.closeButton,t.toast?.classes?.closeButton)),onClick:Se},[t.icons?.close?(r(),b(e(t.icons?.close),{key:0})):w(t.$slots,`close-icon`,{key:1})],10,Gi)):T(`v-if`,!0),t.toast.component?(r(),b(e(t.toast.component),ie({key:1},t.toast.componentProps,{onCloseToast:Se,isPaused:t.$props.expanded||t.$props.interacting||M(ye)}),null,16,[`isPaused`])):(r(),P(j,{key:2},[F.value!==`default`||t.toast.icon||t.toast.promise?(r(),P(`div`,{key:0,"data-icon":``,class:y(M(Vi)(t.classes?.icon,t.toast?.classes?.icon))},[t.toast.icon?(r(),b(e(t.toast.icon),{key:0})):(r(),P(j,{key:1},[F.value===`loading`?w(t.$slots,`loading-icon`,{key:0}):F.value===`success`?w(t.$slots,`success-icon`,{key:1}):F.value===`error`?w(t.$slots,`error-icon`,{key:2}):F.value===`warning`?w(t.$slots,`warning-icon`,{key:3}):F.value===`info`?w(t.$slots,`info-icon`,{key:4}):T(`v-if`,!0)],64))],2)):T(`v-if`,!0),N(`div`,{"data-content":``,class:y(M(Vi)(t.classes?.content,t.toast?.classes?.content))},[N(`div`,{"data-title":``,class:y(M(Vi)(t.classes?.title,t.toast.classes?.title))},[_e.value?(r(),b(e(t.toast.title),ee(ie({key:0},t.toast.componentProps)),null,16)):(r(),P(j,{key:1},[S(x(t.toast.title),1)],64))],2),t.toast.description?(r(),P(`div`,{key:0,"data-description":``,class:y(M(Vi)(t.descriptionClass,oe.value,t.classes?.description,t.toast.classes?.description))},[ve.value?(r(),b(e(t.toast.description),ee(ie({key:0},t.toast.componentProps)),null,16)):(r(),P(j,{key:1},[S(x(t.toast.description),1)],64))],2)):T(`v-if`,!0)],2),t.toast.cancel?(r(),P(`button`,{key:1,style:te(t.toast.cancelButtonStyle||t.cancelButtonStyle),class:y(M(Vi)(t.classes?.cancelButton,t.toast.classes?.cancelButton)),"data-button":``,"data-cancel":``,onClick:n[0]||=e=>{M(ji)(t.toast.cancel)&&I.value&&(t.toast.cancel.onClick?.(e),xe())}},x(M(ji)(t.toast.cancel)?t.toast.cancel?.label:t.toast.cancel),7)):T(`v-if`,!0),t.toast.action?(r(),P(`button`,{key:2,style:te(t.toast.actionButtonStyle||t.actionButtonStyle),class:y(M(Vi)(t.classes?.actionButton,t.toast.classes?.actionButton)),"data-button":``,"data-action":``,onClick:n[1]||=e=>{M(ji)(t.toast.action)&&(t.toast.action.onClick?.(e),!e.defaultPrevented&&xe())}},x(M(ji)(t.toast.action)?t.toast.action?.label:t.toast.action),7)):T(`v-if`,!0)],64))],46,Wi))}}),qi=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},Ji={},Yi={xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stoke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function Xi(e,t){return r(),P(`svg`,Yi,t[0]||=[N(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`},null,-1),N(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`},null,-1)])}var Zi=qi(Ji,[[`render`,Xi]]),Qi=[`data-visible`],$i={class:`sonner-spinner`},ea=k({__name:`Loader`,props:{visible:{type:Boolean}},setup(e){let t=Array(12).fill(0);return(e,n)=>(r(),P(`div`,{class:`sonner-loading-wrapper`,"data-visible":e.visible},[N(`div`,$i,[(r(!0),P(j,null,u(M(t),e=>(r(),P(`div`,{key:`spinner-bar-${e}`,class:`sonner-loading-bar`}))),128))])],8,Qi))}}),ta={},na={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`};function ra(e,t){return r(),P(`svg`,na,t[0]||=[N(`path`,{"fill-rule":`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z`,"clip-rule":`evenodd`},null,-1)])}var ia=qi(ta,[[`render`,ra]]),aa={},oa={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`};function sa(e,t){return r(),P(`svg`,oa,t[0]||=[N(`path`,{"fill-rule":`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z`,"clip-rule":`evenodd`},null,-1)])}var ca=qi(aa,[[`render`,sa]]),la={},ua={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,height:`20`,width:`20`};function da(e,t){return r(),P(`svg`,ua,t[0]||=[N(`path`,{"fill-rule":`evenodd`,d:`M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z`,"clip-rule":`evenodd`},null,-1)])}var fa=qi(la,[[`render`,da]]),pa={},ma={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`};function ha(e,t){return r(),P(`svg`,ma,t[0]||=[N(`path`,{"fill-rule":`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z`,"clip-rule":`evenodd`},null,-1)])}var ga=qi(pa,[[`render`,ha]]),_a=[`aria-label`],va=[`data-sonner-theme`,`dir`,`data-theme`,`data-rich-colors`,`data-y-position`,`data-x-position`],ya=typeof window<`u`&&typeof document<`u`;function ba(){if(typeof window>`u`||typeof document>`u`)return`ltr`;let e=document.documentElement.getAttribute(`dir`);return e===`auto`||!e?window.getComputedStyle(document.documentElement).direction:e}var xa=k({name:`Toaster`,inheritAttrs:!1,__name:`Toaster`,props:{id:{},invert:{type:Boolean,default:!1},theme:{default:`light`},position:{default:`bottom-right`},closeButtonPosition:{default:`top-left`},hotkey:{default:()=>[`altKey`,`KeyT`]},richColors:{type:Boolean,default:!1},expand:{type:Boolean,default:!1},duration:{},gap:{default:Li},visibleToasts:{default:Mi},closeButton:{type:Boolean,default:!1},toastOptions:{default:()=>({})},class:{default:``},style:{},offset:{default:Ni},mobileOffset:{default:Pi},dir:{default:`auto`},swipeDirections:{},icons:{},containerAriaLabel:{default:`Notifications`}},setup(e){let t=e,n=l(),i=g([]),a=O(()=>t.id?i.value.filter(e=>e.toasterId===t.id):i.value.filter(e=>!e.toasterId));function s(e,t){return a.value.filter(n=>!n.position&&t===0||n.position===e)}let c=O(()=>{let e=a.value.filter(e=>e.position).map(e=>e.position);return e.length>0?Array.from(new Set([t.position].concat(e))):[t.position]}),d=O(()=>{let e={};return c.value.forEach(t=>{e[t]=i.value.filter(e=>e.position===t)}),e}),m=g([]),h=g({}),_=g(!1);o(()=>{c.value.forEach(e=>{e in h.value||(h.value[e]=!1)})});let v=g(t.theme===`system`?typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`:t.theme),x=g(null),S=g(null),E=g(!1),D=t.hotkey.join(`+`).replace(/Key/g,``).replace(/Digit/g,``);function ee(e){i.value.find(t=>t.id===e.id)?.delete||$.dismiss(e.id),i.value=i.value.filter(({id:t})=>t!==e.id),setTimeout(()=>{i.value.find(t=>t.id===e.id)||(m.value=m.value.filter(t=>t.toastId!==e.id))},zi+50)}function k(e){E.value&&!e.currentTarget?.contains?.(e.relatedTarget)&&(E.value=!1,S.value&&=(S.value.focus({preventScroll:!0}),null))}function A(e){e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||E.value||(E.value=!0,S.value=e.relatedTarget)}function ne(e){e.target&&e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||(_.value=!0)}o(e=>{e($.subscribe(e=>{if(e.dismiss){requestAnimationFrame(()=>{i.value=i.value.map(t=>t.id===e.id?{...t,delete:!0}:t)});return}p(()=>{let t=i.value.findIndex(t=>t.id===e.id);t===-1?i.value=[e,...i.value]:i.value=[...i.value.slice(0,t),{...i.value[t],...e},...i.value.slice(t+1)]})}))}),o(e=>{if(typeof window>`u`)return;if(t.theme!==`system`){v.value=t.theme;return}let n=window.matchMedia(`(prefers-color-scheme: dark)`),r=e=>{v.value=e?`dark`:`light`};r(n.matches);let i=e=>{r(e.matches)};try{n.addEventListener(`change`,i)}catch{n.addListener(i)}e(()=>{try{n.removeEventListener(`change`,i)}catch{n.removeListener(i)}})}),o(()=>{x.value&&S.value&&(S.value.focus({preventScroll:!0}),S.value=null,E.value=!1)}),o(()=>{i.value.length<=1&&Object.keys(h.value).forEach(e=>{h.value[e]=!1})}),o(e=>{function n(e){let n=t.hotkey.every(t=>e[t]||e.code===t),r=Array.isArray(x.value)?x.value[0]:x.value;n&&(c.value.forEach(e=>{h.value[e]=!0}),r?.focus());let i=document.activeElement===x.value||r?.contains(document.activeElement);e.code===`Escape`&&i&&c.value.forEach(e=>{h.value[e]=!1})}ya&&(document.addEventListener(`keydown`,n),e(()=>{document.removeEventListener(`keydown`,n)}))});function F(e){let t=e.currentTarget,n=t.getAttribute(`data-y-position`)+`-`+t.getAttribute(`data-x-position`);h.value[n]=!0}function re(e){if(!_.value){let t=e.currentTarget,n=t.getAttribute(`data-y-position`)+`-`+t.getAttribute(`data-x-position`);h.value[n]=!1}}function I(){Object.keys(h.value).forEach(e=>{h.value[e]=!1})}function ae(){_.value=!1}function oe(e){m.value=e}function se(e){let t=m.value.findIndex(t=>t.toastId===e.toastId);if(t!==-1)m.value[t]=e;else{let t=m.value.findIndex(t=>t.position===e.position);t===-1?m.value.unshift(e):m.value.splice(t,0,e)}}return(e,i)=>(r(),P(j,null,[T(` Remove item from normal navigation flow, only available via hotkey `),N(`section`,{"aria-label":`${e.containerAriaLabel} ${M(D)}`,tabIndex:-1,"aria-live":`polite`,"aria-relevant":`additions text`,"aria-atomic":`false`},[(r(!0),P(j,null,u(c.value,(i,a)=>(r(),P(`ol`,ie({key:i,ref_for:!0,ref_key:`listRef`,ref:x,"data-sonner-toaster":``,"data-sonner-theme":v.value,class:t.class,dir:e.dir===`auto`?ba():e.dir,tabIndex:-1,"data-theme":e.theme,"data-rich-colors":e.richColors,"data-y-position":i.split(`-`)[0],"data-x-position":i.split(`-`)[1],style:{"--front-toast-height":`${m.value[0]?.height||0}px`,"--width":`${M(Ii)}px`,"--gap":`${e.gap}px`,...e.style,...M(n).style,...M(Ui)(e.offset,e.mobileOffset)}},{ref_for:!0},e.$attrs,{onBlur:k,onFocus:A,onMouseenter:F,onMousemove:F,onMouseleave:re,onDragend:I,onPointerdown:ne,onPointerup:ae}),[(r(!0),P(j,null,u(s(i,a),(n,a)=>(r(),b(Ki,{key:n.id,heights:m.value,icons:e.icons,index:a,toast:n,defaultRichColors:e.richColors,duration:e.toastOptions?.duration??e.duration,class:y(e.toastOptions?.class??``),descriptionClass:e.toastOptions?.descriptionClass,invert:e.invert,visibleToasts:e.visibleToasts,closeButton:e.toastOptions?.closeButton??e.closeButton,interacting:_.value,position:i,closeButtonPosition:e.toastOptions?.closeButtonPosition??e.closeButtonPosition,style:te(e.toastOptions?.style),unstyled:e.toastOptions?.unstyled,classes:e.toastOptions?.classes,cancelButtonStyle:e.toastOptions?.cancelButtonStyle,actionButtonStyle:e.toastOptions?.actionButtonStyle,"close-button-aria-label":e.toastOptions?.closeButtonAriaLabel,toasts:d.value[i],expandByDefault:e.expand,gap:e.gap,expanded:h.value[i]||!1,swipeDirections:t.swipeDirections,"onUpdate:heights":oe,"onUpdate:height":se,onRemoveToast:ee},{"close-icon":f(()=>[w(e.$slots,`close-icon`,{},()=>[C(Zi)])]),"loading-icon":f(()=>[w(e.$slots,`loading-icon`,{},()=>[C(ea,{visible:n.type===`loading`},null,8,[`visible`])])]),"success-icon":f(()=>[w(e.$slots,`success-icon`,{},()=>[C(ia)])]),"error-icon":f(()=>[w(e.$slots,`error-icon`,{},()=>[C(ga)])]),"warning-icon":f(()=>[w(e.$slots,`warning-icon`,{},()=>[C(fa)])]),"info-icon":f(()=>[w(e.$slots,`info-icon`,{},()=>[C(ca)])]),_:2},1032,[`heights`,`icons`,`index`,`toast`,`defaultRichColors`,`duration`,`class`,`descriptionClass`,`invert`,`visibleToasts`,`closeButton`,`interacting`,`position`,`closeButtonPosition`,`style`,`unstyled`,`classes`,`cancelButtonStyle`,`actionButtonStyle`,`close-button-aria-label`,`toasts`,`expandByDefault`,`gap`,`expanded`,`swipeDirections`]))),128))],16,va))),128))],8,_a)],2112))}});export{Ce as A,oe as B,pe as C,be as D,ge as E,L as F,Ae as I,je as L,Oe as M,De as N,xe as O,ke as P,fe as R,Fe as S,he as T,Ln as _,Jn as a,Pn as b,Qn as c,rr as d,Hn as f,Fn as g,Nn as h,qn as i,ye as j,we as k,nr as l,An as m,Ai as n,Yn as o,Gn as p,Q as r,Zn as s,xa as t,$n as u,jn as v,me as w,We as x,Mn as y,le as z}; \ No newline at end of file diff --git a/docs/assets/vendor-others-DTUzJ7S-.js b/docs/assets/vendor-others-DTUzJ7S-.js deleted file mode 100644 index 35705f0..0000000 --- a/docs/assets/vendor-others-DTUzJ7S-.js +++ /dev/null @@ -1 +0,0 @@ -import{$t as e,An as t,Bn as n,Cn as r,En as i,Fn as a,Gn as o,Gt as s,In as c,Jn as l,Jt as u,Ln as d,Mn as f,On as p,Pn as m,Qt as h,Un as g,Wn as _,Xn as v,Xt as y,Yn as b,Yt as x,Zt as S,_n as C,an as w,bn as T,dn as E,en as D,fn as O,gn as k,kn as A,ln as j,mn as M,nn as N,on as ee,qn as P,sn as te,tn as F,un as ne,vn as re,wn as I,zn as L}from"./game-logic-Bi1l7y4K.js";function ie(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;ttypeof e==`boolean`?`${e}`:e===0?`0`:e;const se=ae,ce=(e,t)=>n=>{if(t?.variants==null)return se(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=oe(t)||oe(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return se(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)};function le(e){return typeof e==`string`?`'${e}'`:new ue().serialize(e)}var ue=function(){class e{#e=new Map;compare(e,t){let n=typeof e,r=typeof t;return n===`string`&&r===`string`?e.localeCompare(t):n===`number`&&r===`number`?e-t:String.prototype.localeCompare.call(this.serialize(e,!0),this.serialize(t,!0))}serialize(e,t){if(e===null)return`null`;switch(typeof e){case`string`:return t?e:`'${e}'`;case`bigint`:return`${e}n`;case`object`:return this.$object(e);case`function`:return this.$function(e)}return String(e)}serializeObject(e){let t=Object.prototype.toString.call(e);if(t!==`[object Object]`)return this.serializeBuiltInType(t.length<10?`unknown:${t}`:t.slice(8,-1),e);let n=e.constructor,r=n===Object||n===void 0?``:n.name;if(r!==``&&globalThis[r]===n)return this.serializeBuiltInType(r,e);if(typeof e.toJSON==`function`){let t=e.toJSON();return r+(typeof t==`object`&&t?this.$object(t):`(${this.serialize(t)})`)}return this.serializeObjectEntries(r,Object.entries(e))}serializeBuiltInType(e,t){let n=this[`$`+e];if(n)return n.call(this,t);if(typeof t?.entries==`function`)return this.serializeObjectEntries(e,t.entries());throw Error(`Cannot serialize ${e}`)}serializeObjectEntries(e,t){let n=Array.from(t).sort((e,t)=>this.compare(e[0],t[0])),r=`${e}{`;for(let e=0;ethis.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e}();function de(e,t){return e===t||le(e)===le(t)}function fe(e,t){let r=n();return I(()=>{r.value=e()},{...t,flush:t?.flush??`sync`}),c(r)}function R(e){return t()?(m(e),!0):!1}function pe(){let e=new Set,t=t=>{e.delete(t)};return{on:n=>{e.add(n);let r=()=>t(n);return R(r),{off:r}},off:t,trigger:(...t)=>Promise.all(Array.from(e).map(e=>e(...t))),clear:()=>{e.clear()}}}function me(e){let t=!1,n,r=A(!0);return(...i)=>(t||=(n=r.run(()=>e(...i)),!0),n)}function he(e){let t=0,n,r,i=()=>{--t,r&&t<=0&&(r.stop(),n=void 0,r=void 0)};return(...a)=>(t+=1,r||(r=A(!0),n=r.run(()=>e(...a))),R(i),n)}function ge(e){return f(e)?a(new Proxy({},{get(t,n,r){return o(Reflect.get(e.value,n,r))},set(t,n,r){return f(e.value[n])&&!f(r)?e.value[n].value=r:e.value[n]=r,!0},deleteProperty(t,n){return Reflect.deleteProperty(e.value,n)},has(t,n){return Reflect.has(e.value,n)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}})):a(e)}function _e(e){return ge(u(e))}function ve(e,...t){let n=t.flat(),r=n[0];return _e(()=>typeof r==`function`?Object.fromEntries(Object.entries(g(e)).filter(([e,t])=>!r(_(t),e))):Object.fromEntries(Object.entries(g(e)).filter(e=>!n.includes(e[0]))))}var ye=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var z=e=>e!==void 0,be=Object.prototype.toString,xe=e=>be.call(e)===`[object Object]`,Se=Ce();function Ce(){return ye&&(window==null?void 0:window.navigator)?.userAgent&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||(window==null?void 0:window.navigator)?.maxTouchPoints>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function we(e){return e||N()}function Te(e){return Array.isArray(e)?e:[e]}function Ee(e,t=1e4){return p((n,r)=>{let i=_(e),a,o=()=>setTimeout(()=>{i=_(e),r()},_(t));return R(()=>{clearTimeout(a)}),{get(){return n(),i},set(e){i=e,r(),clearTimeout(a),a=o()}}})}function De(e,t){we(t)&&E(e,t)}function Oe(e,t,r={}){let{immediate:i=!0,immediateCallback:a=!1}=r,o=n(!1),s=null;function l(){s&&=(clearTimeout(s),null)}function u(){o.value=!1,l()}function d(...n){a&&e(),l(),o.value=!0,s=setTimeout(()=>{o.value=!1,s=null,e(...n)},_(t))}return i&&(o.value=!0,ye&&d()),R(u),{isPending:c(o),start:d,stop:u}}function ke(e,t,n){return r(e,t,{...n,immediate:!0})}function Ae(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)===`[object Module]`:!0}function je(e,t,n=`.`,r){if(!Ae(t))return je(e,{},n,r);let i=Object.assign({},t);for(let t in e){if(t===`__proto__`||t===`constructor`)continue;let a=e[t];a!=null&&(r&&r(i,t,a,n)||(Array.isArray(a)&&Array.isArray(i[t])?i[t]=[...a,...i[t]]:Ae(a)&&Ae(i[t])?i[t]=je(a,i[t],(n?`${n}.`:``)+t.toString(),r):i[t]=a))}return i}function Me(e){return(...t)=>t.reduce((t,n)=>je(t,n,``,e),{})}var Ne=Me(),Pe=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},Fe=new WeakMap,Ie=new WeakMap,Le={},Re=0,ze=function(e){return e&&(e.host||ze(e.parentNode))},Be=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=ze(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},Ve=function(e,t,n,r){var i=Be(t,Array.isArray(e)?e:[e]);Le[n]||(Le[n]=new WeakMap);var a=Le[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(Fe.get(e)||0)+1,l=(a.get(e)||0)+1;Fe.set(e,c),a.set(e,l),o.push(e),c===1&&i&&Ie.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),Re++,function(){o.forEach(function(e){var t=Fe.get(e)-1,i=a.get(e)-1;Fe.set(e,t),a.set(e,i),t||(Ie.has(e)||e.removeAttribute(r),Ie.delete(e)),i||e.removeAttribute(n)}),Re--,Re||(Fe=new WeakMap,Fe=new WeakMap,Ie=new WeakMap,Le={})}},He=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||Pe(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),Ve(r,i,n,`aria-hidden`)):function(){return null}},Ue=[`top`,`right`,`bottom`,`left`],B=Math.min,V=Math.max,We=Math.round,Ge=Math.floor,H=e=>({x:e,y:e}),Ke={left:`right`,right:`left`,bottom:`top`,top:`bottom`},qe={start:`end`,end:`start`};function Je(e,t,n){return V(e,B(t,n))}function U(e,t){return typeof e==`function`?e(t):e}function W(e){return e.split(`-`)[0]}function Ye(e){return e.split(`-`)[1]}function Xe(e){return e===`x`?`y`:`x`}function Ze(e){return e===`y`?`height`:`width`}var Qe=new Set([`top`,`bottom`]);function G(e){return Qe.has(W(e))?`y`:`x`}function $e(e){return Xe(G(e))}function et(e,t,n){n===void 0&&(n=!1);let r=Ye(e),i=$e(e),a=Ze(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=lt(o)),[o,lt(o)]}function tt(e){let t=lt(e);return[nt(e),t,nt(t)]}function nt(e){return e.replace(/start|end/g,e=>qe[e])}var rt=[`left`,`right`],it=[`right`,`left`],at=[`top`,`bottom`],ot=[`bottom`,`top`];function st(e,t,n){switch(e){case`top`:case`bottom`:return n?t?it:rt:t?rt:it;case`left`:case`right`:return t?at:ot;default:return[]}}function ct(e,t,n,r){let i=Ye(e),a=st(W(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(nt)))),a}function lt(e){return e.replace(/left|right|bottom|top/g,e=>Ke[e])}function ut(e){return{top:0,right:0,bottom:0,left:0,...e}}function dt(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:ut(e)}function ft(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function pt(e,t,n){let{reference:r,floating:i}=e,a=G(t),o=$e(t),s=Ze(o),c=W(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(Ye(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}var mt=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=a.filter(Boolean),c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=pt(l,r,c),f=r,p={},m=0;for(let n=0;n({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=U(e,t)||{};if(l==null)return{};let d=dt(u),f={x:n,y:r},p=$e(i),m=Ze(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=B(d[_],T),D=B(d[v],T),O=E,k=C-h[m]-D,A=C/2-h[m]/2+w,j=Je(O,A,k),M=!c.arrow&&Ye(i)!=null&&A!==j&&a.reference[m]/2-(Ae<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(!(u===`alignment`&&_!==G(t))||T.every(e=>G(e.placement)===_?e.overflows[0]>0:!0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=G(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function vt(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function yt(e){return Ue.some(t=>e[t]>=0)}var bt=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n}=t,{strategy:r=`referenceHidden`,...i}=U(e,t);switch(r){case`referenceHidden`:{let e=vt(await ht(t,{...i,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:yt(e)}}}case`escaped`:{let e=vt(await ht(t,{...i,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:yt(e)}}}default:return{}}}}},xt=new Set([`left`,`top`]);async function St(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=W(n),s=Ye(n),c=G(n)===`y`,l=xt.has(o)?-1:1,u=a&&c?-1:1,d=U(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var Ct=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await St(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},wt=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i}=t,{mainAxis:a=!0,crossAxis:o=!1,limiter:s={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...c}=U(e,t),l={x:n,y:r},u=await ht(t,c),d=G(W(i)),f=Xe(d),p=l[f],m=l[d];if(a){let e=f===`y`?`top`:`left`,t=f===`y`?`bottom`:`right`,n=p+u[e],r=p-u[t];p=Je(n,p,r)}if(o){let e=d===`y`?`top`:`left`,t=d===`y`?`bottom`:`right`,n=m+u[e],r=m-u[t];m=Je(n,m,r)}let h=s.fn({...t,[f]:p,[d]:m});return{...h,data:{x:h.x-n,y:h.y-r,enabled:{[f]:a,[d]:o}}}}}},Tt=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=U(e,t),u={x:n,y:r},d=G(i),f=Xe(d),p=u[f],m=u[d],h=U(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=xt.has(W(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);mr&&(m=r)}return{[f]:p,[d]:m}}}},Et=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){var n,r;let{placement:i,rects:a,platform:o,elements:s}=t,{apply:c=()=>{},...l}=U(e,t),u=await ht(t,l),d=W(i),f=Ye(i),p=G(i)===`y`,{width:m,height:h}=a.floating,g,_;d===`top`||d===`bottom`?(g=d,_=f===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?`start`:`end`)?`left`:`right`):(_=d,g=f===`end`?`top`:`bottom`);let v=h-u.top-u.bottom,y=m-u.left-u.right,b=B(h-u[g],v),x=B(m-u[_],y),S=!t.middlewareData.shift,C=b,w=x;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(w=y),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(C=v),S&&!f){let e=V(u.left,0),t=V(u.right,0),n=V(u.top,0),r=V(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:V(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:V(u.top,u.bottom))}await c({...t,availableWidth:w,availableHeight:C});let T=await o.getDimensions(s.floating);return m!==T.width||h!==T.height?{reset:{rects:!0}}:{}}}};function Dt(){return typeof window<`u`}function Ot(e){return kt(e)?(e.nodeName||``).toLowerCase():`#document`}function K(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function q(e){return((kt(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function kt(e){return Dt()?e instanceof Node||e instanceof K(e).Node:!1}function J(e){return Dt()?e instanceof Element||e instanceof K(e).Element:!1}function Y(e){return Dt()?e instanceof HTMLElement||e instanceof K(e).HTMLElement:!1}function At(e){return!Dt()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof K(e).ShadowRoot}var jt=new Set([`inline`,`contents`]);function Mt(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=X(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!jt.has(i)}var Nt=new Set([`table`,`td`,`th`]);function Pt(e){return Nt.has(Ot(e))}var Ft=[`:popover-open`,`:modal`];function It(e){return Ft.some(t=>{try{return e.matches(t)}catch{return!1}})}var Lt=[`transform`,`translate`,`scale`,`rotate`,`perspective`],Rt=[`transform`,`translate`,`scale`,`rotate`,`perspective`,`filter`],zt=[`paint`,`layout`,`strict`,`content`];function Bt(e){let t=Ht(),n=J(e)?X(e):e;return Lt.some(e=>n[e]?n[e]!==`none`:!1)||(n.containerType?n.containerType!==`normal`:!1)||!t&&(n.backdropFilter?n.backdropFilter!==`none`:!1)||!t&&(n.filter?n.filter!==`none`:!1)||Rt.some(e=>(n.willChange||``).includes(e))||zt.some(e=>(n.contain||``).includes(e))}function Vt(e){let t=Z(e);for(;Y(t)&&!Wt(t);){if(Bt(t))return t;if(It(t))return null;t=Z(t)}return null}function Ht(){return typeof CSS>`u`||!CSS.supports?!1:CSS.supports(`-webkit-backdrop-filter`,`none`)}var Ut=new Set([`html`,`body`,`#document`]);function Wt(e){return Ut.has(Ot(e))}function X(e){return K(e).getComputedStyle(e)}function Gt(e){return J(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Z(e){if(Ot(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||At(e)&&e.host||q(e);return At(t)?t.host:t}function Kt(e){let t=Z(e);return Wt(t)?e.ownerDocument?e.ownerDocument.body:e.body:Y(t)&&Mt(t)?t:Kt(t)}function qt(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=Kt(e),i=r===e.ownerDocument?.body,a=K(r);if(i){let e=Jt(a);return t.concat(a,a.visualViewport||[],Mt(r)?r:[],e&&n?qt(e):[])}return t.concat(r,qt(r,[],n))}function Jt(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Yt(e){let t=X(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=Y(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=We(n)!==a||We(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function Xt(e){return J(e)?e:e.contextElement}function Zt(e){let t=Xt(e);if(!Y(t))return H(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=Yt(t),o=(a?We(n.width):n.width)/r,s=(a?We(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var Qt=H(0);function $t(e){let t=K(e);return!Ht()||!t.visualViewport?Qt:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function en(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==K(e)?!1:t}function tn(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=Xt(e),o=H(1);t&&(r?J(r)&&(o=Zt(r)):o=Zt(e));let s=en(a,n,r)?$t(a):H(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=K(a),t=r&&J(r)?K(r):r,n=e,i=Jt(n);for(;i&&r&&t!==n;){let e=Zt(i),t=i.getBoundingClientRect(),r=X(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=K(i),i=Jt(n)}}return ft({width:u,height:d,x:c,y:l})}function nn(e,t){let n=Gt(e).scrollLeft;return t?t.left+n:tn(q(e)).left+n}function rn(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-nn(e,n),y:n.top+t.scrollTop}}function an(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=q(r),s=t?It(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=H(1),u=H(0),d=Y(r);if((d||!d&&!a)&&((Ot(r)!==`body`||Mt(o))&&(c=Gt(r)),Y(r))){let e=tn(r);l=Zt(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?rn(o,c):H(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function on(e){return Array.from(e.getClientRects())}function sn(e){let t=q(e),n=Gt(e),r=e.ownerDocument.body,i=V(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=V(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+nn(e),s=-n.scrollTop;return X(r).direction===`rtl`&&(o+=V(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var cn=25;function ln(e,t){let n=K(e),r=q(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=Ht();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=nn(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=cn&&(a-=o)}else l<=cn&&(a+=l);return{width:a,height:o,x:s,y:c}}var un=new Set([`absolute`,`fixed`]);function dn(e,t){let n=tn(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=Y(e)?Zt(e):H(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function fn(e,t,n){let r;if(t===`viewport`)r=ln(e,n);else if(t===`document`)r=sn(q(e));else if(J(t))r=dn(t,n);else{let n=$t(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return ft(r)}function pn(e,t){let n=Z(e);return n===t||!J(n)||Wt(n)?!1:X(n).position===`fixed`||pn(n,t)}function mn(e,t){let n=t.get(e);if(n)return n;let r=qt(e,[],!1).filter(e=>J(e)&&Ot(e)!==`body`),i=null,a=X(e).position===`fixed`,o=a?Z(e):e;for(;J(o)&&!Wt(o);){let t=X(o),n=Bt(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&un.has(i.position)||Mt(o)&&!n&&pn(e,o))?r=r.filter(e=>e!==o):i=t,o=Z(o)}return t.set(e,r),r}function hn(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?It(t)?[]:mn(t,this._c):[].concat(n),r],o=a[0],s=a.reduce((e,n)=>{let r=fn(t,n,i);return e.top=V(r.top,e.top),e.right=B(r.right,e.right),e.bottom=B(r.bottom,e.bottom),e.left=V(r.left,e.left),e},fn(t,o,i));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}}function gn(e){let{width:t,height:n}=Yt(e);return{width:t,height:n}}function _n(e,t,n){let r=Y(t),i=q(t),a=n===`fixed`,o=tn(e,!0,a,t),s={scrollLeft:0,scrollTop:0},c=H(0);function l(){c.x=nn(i)}if(r||!r&&!a)if((Ot(t)!==`body`||Mt(i))&&(s=Gt(t)),r){let e=tn(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else i&&l();a&&!r&&i&&l();let u=i&&!r&&!a?rn(i,s):H(0);return{x:o.left+s.scrollLeft-c.x-u.x,y:o.top+s.scrollTop-c.y-u.y,width:o.width,height:o.height}}function vn(e){return X(e).position===`static`}function yn(e,t){if(!Y(e)||X(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return q(e)===n&&(n=n.ownerDocument.body),n}function bn(e,t){let n=K(e);if(It(e))return n;if(!Y(e)){let t=Z(e);for(;t&&!Wt(t);){if(J(t)&&!vn(t))return t;t=Z(t)}return n}let r=yn(e,t);for(;r&&Pt(r)&&vn(r);)r=yn(r,t);return r&&Wt(r)&&vn(r)&&!Bt(r)?n:r||Vt(e)||n}var xn=async function(e){let t=this.getOffsetParent||bn,n=this.getDimensions,r=await n(e.floating);return{reference:_n(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function Sn(e){return X(e).direction===`rtl`}var Cn={convertOffsetParentRelativeRectToViewportRelativeRect:an,getDocumentElement:q,getClippingRect:hn,getOffsetParent:bn,getElementRects:xn,getClientRects:on,getDimensions:gn,getScale:Zt,isElement:J,isRTL:Sn};function wn(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Tn(e,t){let n=null,r,i=q(e);function a(){var e;clearTimeout(r),(e=n)==null||e.disconnect(),n=null}function o(s,c){s===void 0&&(s=!1),c===void 0&&(c=1),a();let l=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=l;if(s||t(),!f||!p)return;let m=Ge(d),h=Ge(i.clientWidth-(u+f)),g=Ge(i.clientHeight-(d+p)),_=Ge(u),v={rootMargin:-m+`px `+-h+`px `+-g+`px `+-_+`px`,threshold:V(0,B(1,c))||1},y=!0;function b(t){let n=t[0].intersectionRatio;if(n!==c){if(!y)return o();n?o(!1,n):r=setTimeout(()=>{o(!1,1e-7)},1e3)}n===1&&!wn(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(b,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(b,v)}n.observe(e)}return o(!0),a}function En(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=Xt(e),u=i||a?[...l?qt(l):[],...qt(t)]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?Tn(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),p.observe(t));let m,h=c?tn(e):null;c&&g();function g(){let t=tn(e);h&&!wn(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var Dn=Ct,On=wt,kn=_t,An=Et,jn=bt,Mn=gt,Nn=Tt,Pn=(e,t,n)=>{let r=new Map,i={platform:Cn,...n},a={...i.platform,_c:r};return mt(e,t,{...i,platform:a})};function Fn(e){return typeof e==`object`&&!!e&&`$el`in e}function In(e){if(Fn(e)){let t=e.$el;return kt(t)&&Ot(t)===`#comment`?null:t}return e}function Ln(e){return typeof e==`function`?e():o(e)}function Rn(e){return{name:`arrow`,options:e,fn(t){let n=In(Ln(e.element));return n==null?{}:Mn({element:n,padding:e.padding}).fn(t)}}}function zn(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Bn(e,t){let n=zn(e);return Math.round(t*n)/n}function Vn(e,i,a){a===void 0&&(a={});let o=a.whileElementsMounted,s=u(()=>Ln(a.open)??!0),c=u(()=>Ln(a.middleware)),l=u(()=>Ln(a.placement)??`bottom`),f=u(()=>Ln(a.strategy)??`absolute`),p=u(()=>Ln(a.transform)??!0),h=u(()=>In(e.value)),g=u(()=>In(i.value)),_=d(0),v=d(0),y=d(f.value),b=d(l.value),x=n({}),S=d(!1),C=u(()=>{let e={position:y.value,left:`0`,top:`0`};if(!g.value)return e;let t=Bn(g.value,_.value),n=Bn(g.value,v.value);return p.value?{...e,transform:`translate(`+t+`px, `+n+`px)`,...zn(g.value)>=1.5&&{willChange:`transform`}}:{position:y.value,left:t+`px`,top:n+`px`}}),w;function T(){if(h.value==null||g.value==null)return;let e=s.value;Pn(h.value,g.value,{middleware:c.value,placement:l.value,strategy:f.value}).then(t=>{_.value=t.x,v.value=t.y,y.value=t.strategy,b.value=t.placement,x.value=t.middlewareData,S.value=e!==!1})}function E(){typeof w==`function`&&(w(),w=void 0)}function D(){if(E(),o===void 0){T();return}if(h.value!=null&&g.value!=null){w=o(h.value,g.value,T);return}}function O(){s.value||(S.value=!1)}return r([c,l,f,s],T,{flush:`sync`}),r([h,g],D,{flush:`sync`}),r(s,O,{flush:`sync`}),t()&&m(E),{x:L(_),y:L(v),strategy:L(y),placement:L(b),middlewareData:L(x),isPositioned:L(S),floatingStyles:C,update:T}}var Hn=new WeakMap,Un=(...e)=>{let n=e[0],r=N()?.proxy??t();if(r==null&&!w())throw Error(`injectLocal must be called in setup`);return r&&Hn.has(r)&&n in Hn.get(r)?Hn.get(r)[n]:ee(...e)},Wn=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var Gn=e=>e!==void 0,Kn=Object.prototype.toString,qn=e=>Kn.call(e)===`[object Object]`;function Jn(e){return e.endsWith(`rem`)?Number.parseFloat(e)*16:Number.parseFloat(e)}function Yn(e){return Array.isArray(e)?e:[e]}function Xn(e){return f(e)?a(new Proxy({},{get(t,n,r){return o(Reflect.get(e.value,n,r))},set(t,n,r){return f(e.value[n])&&!f(r)?e.value[n].value=r:e.value[n]=r,!0},deleteProperty(t,n){return Reflect.deleteProperty(e.value,n)},has(t,n){return Reflect.has(e.value,n)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}})):a(e)}function Zn(e){return Xn(u(e))}function Qn(e,...t){let n=t.flat(),r=n[0];return Zn(()=>typeof r==`function`?Object.fromEntries(Object.entries(g(e)).filter(([e,t])=>!r(_(t),e))):Object.fromEntries(Object.entries(g(e)).filter(e=>!n.includes(e[0]))))}function $n(e,t,n){return r(e,t,{...n,immediate:!0})}var er=1,Q=new class{subscribers;toasts;dismissedToasts;constructor(){this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)});publish=e=>{this.subscribers.forEach(t=>t(e))};addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]};create=e=>{let{message:t,...n}=e,r=typeof e.id==`number`||e.id&&e.id?.length>0?e.id:er++,i=this.toasts.find(e=>e.id===r),a=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),i?this.toasts=this.toasts.map(n=>n.id===r?(this.publish({...n,...e,id:r,title:t}),{...n,...e,id:r,dismissible:a,title:t}):n):this.addToast({title:t,...n,dismissible:a,id:r}),r};dismiss=e=>(e?(this.dismissedToasts.add(e),requestAnimationFrame(()=>this.subscribers.forEach(t=>t({id:e,dismiss:!0})))):this.toasts.forEach(e=>{this.subscribers.forEach(t=>t({id:e.id,dismiss:!0}))}),e);message=(e,t)=>this.create({...t,message:e,type:`default`});error=(e,t)=>this.create({...t,type:`error`,message:e});success=(e,t)=>this.create({...t,type:`success`,message:e});info=(e,t)=>this.create({...t,type:`info`,message:e});warning=(e,t)=>this.create({...t,type:`warning`,message:e});loading=(e,t)=>this.create({...t,type:`loading`,message:e});promise=(e,t)=>{if(!t)return;let n;t.loading!==void 0&&(n=this.create({...t,promise:e,type:`loading`,message:t.loading,description:typeof t.description==`function`?void 0:t.description}));let r=Promise.resolve(e instanceof Function?e():e),i=n!==void 0,a,o=r.then(async e=>{if(a=[`resolve`,e],te(e))i=!1,this.create({id:n,type:`default`,message:e});else if(nr(e)&&!e.ok){i=!1;let r=typeof t.error==`function`?await t.error(`HTTP error! status: ${e.status}`):t.error,a=typeof t.description==`function`?await t.description(`HTTP error! status: ${e.status}`):t.description,o=typeof r==`object`&&!te(r)?r:{message:r||``,id:n||``};this.create({id:n,type:`error`,description:a,...o})}else if(e instanceof Error){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!te(r)?r:{message:r||``,id:n||``};this.create({id:n,type:`error`,description:a,...o})}else if(t.success!==void 0){i=!1;let r=typeof t.success==`function`?await t.success(e):t.success,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!te(r)?r:{message:r||``,id:n||``};this.create({id:n,type:`success`,description:a,...o})}}).catch(async e=>{if(a=[`reject`,e],t.error!==void 0){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!te(r)?r:{message:r||``,id:n||``};this.create({id:n,type:`error`,description:a,...o})}}).finally(()=>{i&&(this.dismiss(n),n=void 0),t.finally?.()}),s=()=>new Promise((e,t)=>o.then(()=>a[0]===`reject`?t(a[1]):e(a[1])).catch(t));return typeof n!=`string`&&typeof n!=`number`?{unwrap:s}:Object.assign(n,{unwrap:s})};custom=(e,t)=>{let n=t?.id||er++,r=this.toasts.find(e=>e.id===n),i=t?.dismissible===void 0?!0:t.dismissible;return this.dismissedToasts.has(n)&&this.dismissedToasts.delete(n),r?this.toasts=this.toasts.map(r=>r.id===n?(this.publish({...r,component:e,dismissible:i,id:n,...t}),{...r,component:e,dismissible:i,id:n,...t}):r):this.addToast({component:e,dismissible:i,id:n,...t}),n};getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id))};function tr(e,t){let n=t?.id||er++;return Q.create({message:e,id:n,type:`default`,...t}),n}var nr=e=>e&&typeof e==`object`&&`ok`in e&&typeof e.ok==`boolean`&&`status`in e&&typeof e.status==`number`,rr=tr,ir=Object.assign(rr,{success:Q.success,info:Q.info,warning:Q.warning,error:Q.error,custom:Q.custom,message:Q.message,promise:Q.promise,dismiss:Q.dismiss,loading:Q.loading},{getHistory:()=>Q.toasts,getToasts:()=>Q.getActiveToasts()});function ar(e){return e.label!==void 0}var or=3,sr=`24px`,cr=`16px`,lr=4e3,ur=356,dr=14,fr=45,pr=200;function mr(){let e=d(!1);return I(()=>{let t=()=>{e.value=document.hidden};return document.addEventListener(`visibilitychange`,t),()=>window.removeEventListener(`visibilitychange`,t)}),{isDocumentHidden:e}}function $(...e){return e.filter(Boolean).join(` `)}function hr(e){let[t,n]=e.split(`-`),r=[];return t&&r.push(t),n&&r.push(n),r}function gr(e,t){let n={};return[e,t].forEach((e,t)=>{let r=t===1,i=r?`--mobile-offset`:`--offset`,a=r?cr:sr;function o(e){[`top`,`right`,`bottom`,`left`].forEach(t=>{n[`${i}-${t}`]=typeof e==`number`?`${e}px`:e})}typeof e==`number`||typeof e==`string`?o(e):typeof e==`object`?[`top`,`right`,`bottom`,`left`].forEach(t=>{e[t]===void 0?n[`${i}-${t}`]=a:n[`${i}-${t}`]=typeof e[t]==`number`?`${e[t]}px`:e[t]}):o(a)}),n}var _r=[`data-rich-colors`,`data-styled`,`data-mounted`,`data-promise`,`data-swiped`,`data-removed`,`data-visible`,`data-y-position`,`data-x-position`,`data-index`,`data-front`,`data-swiping`,`data-dismissible`,`data-type`,`data-invert`,`data-swipe-out`,`data-swipe-direction`,`data-expanded`,`data-testid`],vr=[`aria-label`,`data-disabled`,`data-close-button-position`],yr=F({__name:`Toast`,props:{toast:{},toasts:{},index:{},swipeDirections:{},expanded:{type:Boolean},invert:{type:Boolean},heights:{},gap:{},position:{},closeButtonPosition:{},visibleToasts:{},expandByDefault:{type:Boolean},closeButton:{type:Boolean},interacting:{type:Boolean},style:{},cancelButtonStyle:{},actionButtonStyle:{},duration:{},class:{},unstyled:{type:Boolean},descriptionClass:{},loadingIcon:{},classes:{},icons:{},closeButtonAriaLabel:{},defaultRichColors:{type:Boolean}},emits:[`update:heights`,`update:height`,`removeToast`],setup(t,{emit:n}){let i=t,a=n,c=d(null),f=d(null),p=d(!1),m=d(!1),g=d(!1),_=d(!1),w=d(!1),T=d(0),D=d(0),k=d(i.toast.duration||i.duration||lr),A=d(null),N=d(null),ee=u(()=>i.index===0),te=u(()=>i.index+1<=i.visibleToasts),F=u(()=>i.toast.type),L=u(()=>i.toast.dismissible!==!1),ie=u(()=>i.toast.class||``),ae=u(()=>i.descriptionClass||``),oe=u(()=>{let e=i.toast.position||i.position,t=i.heights.filter(t=>t.position===e).findIndex(e=>e.toastId===i.toast.id);return t>=0?t:0}),se=u(()=>{let e=i.toast.position||i.position;return i.heights.filter(t=>t.position===e).reduce((e,t,n)=>n>=oe.value?e:e+t.height,0)}),ce=u(()=>oe.value*i.gap+se.value||0),le=u(()=>i.toast.closeButton??i.closeButton),ue=u(()=>i.toast.duration||i.duration||lr),de=d(0),fe=d(0),R=d(null),pe=u(()=>i.position.split(`-`)),me=u(()=>pe.value[0]),he=u(()=>pe.value[1]),ge=u(()=>typeof i.toast.title!=`string`),_e=u(()=>typeof i.toast.description!=`string`),{isDocumentHidden:ve}=mr(),ye=u(()=>F.value&&F.value===`loading`);O(()=>{p.value=!0,k.value=ue.value}),I(async()=>{if(!p.value||!N.value)return;await ne();let e=N.value,t=e.style.height;e.style.height=`auto`;let n=e.getBoundingClientRect().height;e.style.height=t,D.value=n,a(`update:height`,{toastId:i.toast.id,height:n,position:i.toast.position||i.position})});function z(){m.value=!0,T.value=ce.value,setTimeout(()=>{a(`removeToast`,i.toast)},pr)}function be(){if(ye.value||!L.value)return{};z(),i.toast.onDismiss?.(i.toast)}function xe(e){e.button!==2&&(ye.value||!L.value||(A.value=new Date,T.value=ce.value,e.target.setPointerCapture(e.pointerId),e.target.tagName!==`BUTTON`&&(g.value=!0,R.value={x:e.clientX,y:e.clientY})))}function Se(){if(_.value||!L.value)return;R.value=null;let e=Number(N.value?.style.getPropertyValue(`--swipe-amount-x`).replace(`px`,``)||0),t=Number(N.value?.style.getPropertyValue(`--swipe-amount-y`).replace(`px`,``)||0),n=new Date().getTime()-(A.value?.getTime()||0),r=c.value===`x`?e:t,a=Math.abs(r)/n;if(Math.abs(r)>=fr||a>.11){T.value=ce.value,i.toast.onDismiss?.(i.toast),c.value===`x`?f.value=e>0?`right`:`left`:f.value=t>0?`down`:`up`,z(),_.value=!0;return}else N.value?.style.setProperty(`--swipe-amount-x`,`0px`),N.value?.style.setProperty(`--swipe-amount-y`,`0px`);w.value=!1,g.value=!1,c.value=null}function Ce(e){if(!R.value||!L.value||(window?.getSelection()?.toString()?.length??!1))return;let t=e.clientY-R.value.y,n=e.clientX-R.value.x,r=i.swipeDirections??hr(i.position);!c.value&&(Math.abs(n)>1||Math.abs(t)>1)&&(c.value=Math.abs(n)>Math.abs(t)?`x`:`y`);let a={x:0,y:0},o=e=>1/(1.5+Math.abs(e)/20);if(c.value===`y`){if(r.includes(`top`)||r.includes(`bottom`))if(r.includes(`top`)&&t<0||r.includes(`bottom`)&&t>0)a.y=t;else{let e=t*o(t);a.y=Math.abs(e)0)a.x=n;else{let e=n*o(n);a.x=Math.abs(e)0||Math.abs(a.y)>0)&&(w.value=!0),N.value?.style.setProperty(`--swipe-amount-x`,`${a.x}px`),N.value?.style.setProperty(`--swipe-amount-y`,`${a.y}px`)}O(()=>{if(p.value=!0,!N.value)return;let e=N.value.getBoundingClientRect().height;D.value=e,a(`update:heights`,[{toastId:i.toast.id,height:e,position:i.toast.position},...i.heights])}),E(()=>{N.value&&a(`removeToast`,i.toast)}),I(e=>{if(i.toast.promise&&F.value===`loading`||i.toast.duration===1/0||i.toast.type===`loading`)return;let t;i.expanded||i.interacting||ve.value?(()=>{if(fe.value{i.toast.onAutoClose?.(i.toast),z()},k.value)),e(()=>{clearTimeout(t)})}),r(()=>i.toast.delete,e=>{e!==void 0&&e&&(z(),i.toast.onDismiss?.(i.toast))},{deep:!0});function we(){g.value=!1,c.value=null,R.value=null}return(t,n)=>(M(),h(`li`,{tabindex:`0`,ref_key:`toastRef`,ref:N,class:P(o($)(i.class,ie.value,t.classes?.toast,t.toast.classes?.toast,t.classes?.[F.value],t.toast?.classes?.[F.value])),"data-sonner-toast":``,"data-rich-colors":t.toast.richColors??t.defaultRichColors,"data-styled":!(t.toast.component||t.toast?.unstyled||t.unstyled),"data-mounted":p.value,"data-promise":!!t.toast.promise,"data-swiped":w.value,"data-removed":m.value,"data-visible":te.value,"data-y-position":me.value,"data-x-position":he.value,"data-index":t.index,"data-front":ee.value,"data-swiping":g.value,"data-dismissible":L.value,"data-type":F.value,"data-invert":t.toast.invert||t.invert,"data-swipe-out":_.value,"data-swipe-direction":f.value,"data-expanded":!!(t.expanded||t.expandByDefault&&p.value),"data-testid":t.toast.testId,style:b({"--index":t.index,"--toasts-before":t.index,"--z-index":t.toasts.length-t.index,"--offset":`${m.value?T.value:ce.value}px`,"--initial-height":t.expandByDefault?`auto`:`${D.value}px`,...t.style,...i.toast.style}),onDragend:we,onPointerdown:xe,onPointerup:Se,onPointermove:Ce},[le.value&&!t.toast.component&&F.value!==`loading`?(M(),h(`button`,{key:0,"aria-label":t.closeButtonAriaLabel||`Close toast`,"data-disabled":ye.value,"data-close-button":`true`,"data-close-button-position":t.closeButtonPosition,class:P(o($)(t.classes?.closeButton,t.toast?.classes?.closeButton)),onClick:be},[t.icons?.close?(M(),y(re(t.icons?.close),{key:0})):C(t.$slots,`close-icon`,{key:1})],10,vr)):S(`v-if`,!0),t.toast.component?(M(),y(re(t.toast.component),j({key:1},t.toast.componentProps,{onCloseToast:be,isPaused:t.$props.expanded||t.$props.interacting||o(ve)}),null,16,[`isPaused`])):(M(),h(s,{key:2},[F.value!==`default`||t.toast.icon||t.toast.promise?(M(),h(`div`,{key:0,"data-icon":``,class:P(o($)(t.classes?.icon,t.toast?.classes?.icon))},[t.toast.icon?(M(),y(re(t.toast.icon),{key:0})):(M(),h(s,{key:1},[F.value===`loading`?C(t.$slots,`loading-icon`,{key:0}):F.value===`success`?C(t.$slots,`success-icon`,{key:1}):F.value===`error`?C(t.$slots,`error-icon`,{key:2}):F.value===`warning`?C(t.$slots,`warning-icon`,{key:3}):F.value===`info`?C(t.$slots,`info-icon`,{key:4}):S(`v-if`,!0)],64))],2)):S(`v-if`,!0),x(`div`,{"data-content":``,class:P(o($)(t.classes?.content,t.toast?.classes?.content))},[x(`div`,{"data-title":``,class:P(o($)(t.classes?.title,t.toast.classes?.title))},[ge.value?(M(),y(re(t.toast.title),l(j({key:0},t.toast.componentProps)),null,16)):(M(),h(s,{key:1},[e(v(t.toast.title),1)],64))],2),t.toast.description?(M(),h(`div`,{key:0,"data-description":``,class:P(o($)(t.descriptionClass,ae.value,t.classes?.description,t.toast.classes?.description))},[_e.value?(M(),y(re(t.toast.description),l(j({key:0},t.toast.componentProps)),null,16)):(M(),h(s,{key:1},[e(v(t.toast.description),1)],64))],2)):S(`v-if`,!0)],2),t.toast.cancel?(M(),h(`button`,{key:1,style:b(t.toast.cancelButtonStyle||t.cancelButtonStyle),class:P(o($)(t.classes?.cancelButton,t.toast.classes?.cancelButton)),"data-button":``,"data-cancel":``,onClick:n[0]||=e=>{o(ar)(t.toast.cancel)&&L.value&&(t.toast.cancel.onClick?.(e),z())}},v(o(ar)(t.toast.cancel)?t.toast.cancel?.label:t.toast.cancel),7)):S(`v-if`,!0),t.toast.action?(M(),h(`button`,{key:2,style:b(t.toast.actionButtonStyle||t.actionButtonStyle),class:P(o($)(t.classes?.actionButton,t.toast.classes?.actionButton)),"data-button":``,"data-action":``,onClick:n[1]||=e=>{o(ar)(t.toast.action)&&(t.toast.action.onClick?.(e),!e.defaultPrevented&&z())}},v(o(ar)(t.toast.action)?t.toast.action?.label:t.toast.action),7)):S(`v-if`,!0)],64))],46,_r))}}),br=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},xr={},Sr={xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stoke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function Cr(e,t){return M(),h(`svg`,Sr,t[0]||=[x(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`},null,-1),x(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`},null,-1)])}var wr=br(xr,[[`render`,Cr]]),Tr=[`data-visible`],Er={class:`sonner-spinner`},Dr=F({__name:`Loader`,props:{visible:{type:Boolean}},setup(e){let t=Array(12).fill(0);return(e,n)=>(M(),h(`div`,{class:`sonner-loading-wrapper`,"data-visible":e.visible},[x(`div`,Er,[(M(!0),h(s,null,k(o(t),e=>(M(),h(`div`,{key:`spinner-bar-${e}`,class:`sonner-loading-bar`}))),128))])],8,Tr))}}),Or={},kr={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`};function Ar(e,t){return M(),h(`svg`,kr,t[0]||=[x(`path`,{"fill-rule":`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z`,"clip-rule":`evenodd`},null,-1)])}var jr=br(Or,[[`render`,Ar]]),Mr={},Nr={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`};function Pr(e,t){return M(),h(`svg`,Nr,t[0]||=[x(`path`,{"fill-rule":`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z`,"clip-rule":`evenodd`},null,-1)])}var Fr=br(Mr,[[`render`,Pr]]),Ir={},Lr={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,height:`20`,width:`20`};function Rr(e,t){return M(),h(`svg`,Lr,t[0]||=[x(`path`,{"fill-rule":`evenodd`,d:`M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z`,"clip-rule":`evenodd`},null,-1)])}var zr=br(Ir,[[`render`,Rr]]),Br={},Vr={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`};function Hr(e,t){return M(),h(`svg`,Vr,t[0]||=[x(`path`,{"fill-rule":`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z`,"clip-rule":`evenodd`},null,-1)])}var Ur=br(Br,[[`render`,Hr]]),Wr=[`aria-label`],Gr=[`data-sonner-theme`,`dir`,`data-theme`,`data-rich-colors`,`data-y-position`,`data-x-position`],Kr=typeof window<`u`&&typeof document<`u`;function qr(){if(typeof window>`u`||typeof document>`u`)return`ltr`;let e=document.documentElement.getAttribute(`dir`);return e===`auto`||!e?window.getComputedStyle(document.documentElement).direction:e}var Jr=F({name:`Toaster`,inheritAttrs:!1,__name:`Toaster`,props:{id:{},invert:{type:Boolean,default:!1},theme:{default:`light`},position:{default:`bottom-right`},closeButtonPosition:{default:`top-left`},hotkey:{default:()=>[`altKey`,`KeyT`]},richColors:{type:Boolean,default:!1},expand:{type:Boolean,default:!1},duration:{},gap:{default:dr},visibleToasts:{default:or},closeButton:{type:Boolean,default:!1},toastOptions:{default:()=>({})},class:{default:``},style:{},offset:{default:sr},mobileOffset:{default:cr},dir:{default:`auto`},swipeDirections:{},icons:{},containerAriaLabel:{default:`Notifications`}},setup(e){let t=e,n=T(),r=d([]),a=u(()=>t.id?r.value.filter(e=>e.toasterId===t.id):r.value.filter(e=>!e.toasterId));function c(e,t){return a.value.filter(n=>!n.position&&t===0||n.position===e)}let l=u(()=>{let e=a.value.filter(e=>e.position).map(e=>e.position);return e.length>0?Array.from(new Set([t.position].concat(e))):[t.position]}),f=u(()=>{let e={};return l.value.forEach(t=>{e[t]=r.value.filter(e=>e.position===t)}),e}),p=d([]),m=d({}),g=d(!1);I(()=>{l.value.forEach(e=>{e in m.value||(m.value[e]=!1)})});let _=d(t.theme===`system`?typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`:t.theme),v=d(null),w=d(null),E=d(!1),O=t.hotkey.join(`+`).replace(/Key/g,``).replace(/Digit/g,``);function A(e){r.value.find(t=>t.id===e.id)?.delete||Q.dismiss(e.id),r.value=r.value.filter(({id:t})=>t!==e.id),setTimeout(()=>{r.value.find(t=>t.id===e.id)||(p.value=p.value.filter(t=>t.toastId!==e.id))},pr+50)}function N(e){E.value&&!e.currentTarget?.contains?.(e.relatedTarget)&&(E.value=!1,w.value&&=(w.value.focus({preventScroll:!0}),null))}function ee(e){e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||E.value||(E.value=!0,w.value=e.relatedTarget)}function te(e){e.target&&e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||(g.value=!0)}I(e=>{e(Q.subscribe(e=>{if(e.dismiss){requestAnimationFrame(()=>{r.value=r.value.map(t=>t.id===e.id?{...t,delete:!0}:t)});return}ne(()=>{let t=r.value.findIndex(t=>t.id===e.id);t===-1?r.value=[e,...r.value]:r.value=[...r.value.slice(0,t),{...r.value[t],...e},...r.value.slice(t+1)]})}))}),I(e=>{if(typeof window>`u`)return;if(t.theme!==`system`){_.value=t.theme;return}let n=window.matchMedia(`(prefers-color-scheme: dark)`),r=e=>{_.value=e?`dark`:`light`};r(n.matches);let i=e=>{r(e.matches)};try{n.addEventListener(`change`,i)}catch{n.addListener(i)}e(()=>{try{n.removeEventListener(`change`,i)}catch{n.removeListener(i)}})}),I(()=>{v.value&&w.value&&(w.value.focus({preventScroll:!0}),w.value=null,E.value=!1)}),I(()=>{r.value.length<=1&&Object.keys(m.value).forEach(e=>{m.value[e]=!1})}),I(e=>{function n(e){let n=t.hotkey.every(t=>e[t]||e.code===t),r=Array.isArray(v.value)?v.value[0]:v.value;n&&(l.value.forEach(e=>{m.value[e]=!0}),r?.focus());let i=document.activeElement===v.value||r?.contains(document.activeElement);e.code===`Escape`&&i&&l.value.forEach(e=>{m.value[e]=!1})}Kr&&(document.addEventListener(`keydown`,n),e(()=>{document.removeEventListener(`keydown`,n)}))});function F(e){let t=e.currentTarget,n=t.getAttribute(`data-y-position`)+`-`+t.getAttribute(`data-x-position`);m.value[n]=!0}function re(e){if(!g.value){let t=e.currentTarget,n=t.getAttribute(`data-y-position`)+`-`+t.getAttribute(`data-x-position`);m.value[n]=!1}}function L(){Object.keys(m.value).forEach(e=>{m.value[e]=!1})}function ie(){g.value=!1}function ae(e){p.value=e}function oe(e){let t=p.value.findIndex(t=>t.toastId===e.toastId);if(t!==-1)p.value[t]=e;else{let t=p.value.findIndex(t=>t.position===e.position);t===-1?p.value.unshift(e):p.value.splice(t,0,e)}}return(e,r)=>(M(),h(s,null,[S(` Remove item from normal navigation flow, only available via hotkey `),x(`section`,{"aria-label":`${e.containerAriaLabel} ${o(O)}`,tabIndex:-1,"aria-live":`polite`,"aria-relevant":`additions text`,"aria-atomic":`false`},[(M(!0),h(s,null,k(l.value,(r,a)=>(M(),h(`ol`,j({key:r,ref_for:!0,ref_key:`listRef`,ref:v,"data-sonner-toaster":``,"data-sonner-theme":_.value,class:t.class,dir:e.dir===`auto`?qr():e.dir,tabIndex:-1,"data-theme":e.theme,"data-rich-colors":e.richColors,"data-y-position":r.split(`-`)[0],"data-x-position":r.split(`-`)[1],style:{"--front-toast-height":`${p.value[0]?.height||0}px`,"--width":`${o(ur)}px`,"--gap":`${e.gap}px`,...e.style,...o(n).style,...o(gr)(e.offset,e.mobileOffset)}},{ref_for:!0},e.$attrs,{onBlur:N,onFocus:ee,onMouseenter:F,onMousemove:F,onMouseleave:re,onDragend:L,onPointerdown:te,onPointerup:ie}),[(M(!0),h(s,null,k(c(r,a),(n,a)=>(M(),y(yr,{key:n.id,heights:p.value,icons:e.icons,index:a,toast:n,defaultRichColors:e.richColors,duration:e.toastOptions?.duration??e.duration,class:P(e.toastOptions?.class??``),descriptionClass:e.toastOptions?.descriptionClass,invert:e.invert,visibleToasts:e.visibleToasts,closeButton:e.toastOptions?.closeButton??e.closeButton,interacting:g.value,position:r,closeButtonPosition:e.toastOptions?.closeButtonPosition??e.closeButtonPosition,style:b(e.toastOptions?.style),unstyled:e.toastOptions?.unstyled,classes:e.toastOptions?.classes,cancelButtonStyle:e.toastOptions?.cancelButtonStyle,actionButtonStyle:e.toastOptions?.actionButtonStyle,"close-button-aria-label":e.toastOptions?.closeButtonAriaLabel,toasts:f.value[r],expandByDefault:e.expand,gap:e.gap,expanded:m.value[r]||!1,swipeDirections:t.swipeDirections,"onUpdate:heights":ae,"onUpdate:height":oe,onRemoveToast:A},{"close-icon":i(()=>[C(e.$slots,`close-icon`,{},()=>[D(wr)])]),"loading-icon":i(()=>[C(e.$slots,`loading-icon`,{},()=>[D(Dr,{visible:n.type===`loading`},null,8,[`visible`])])]),"success-icon":i(()=>[C(e.$slots,`success-icon`,{},()=>[D(jr)])]),"error-icon":i(()=>[C(e.$slots,`error-icon`,{},()=>[D(Ur)])]),"warning-icon":i(()=>[C(e.$slots,`warning-icon`,{},()=>[D(zr)])]),"info-icon":i(()=>[C(e.$slots,`info-icon`,{},()=>[D(Fr)])]),_:2},1032,[`heights`,`icons`,`index`,`toast`,`defaultRichColors`,`duration`,`class`,`descriptionClass`,`invert`,`visibleToasts`,`closeButton`,`interacting`,`position`,`closeButtonPosition`,`style`,`unstyled`,`classes`,`cancelButtonStyle`,`actionButtonStyle`,`close-button-aria-label`,`toasts`,`expandByDefault`,`gap`,`expanded`,`swipeDirections`]))),128))],16,Gr))),128))],8,Wr)],2112))}});export{ve as A,pe as C,z as D,ye as E,Oe as F,ke as I,de as L,Te as M,De as N,Se as O,R as P,ce as R,fe as S,he as T,Dn as _,Gn as a,He as b,Qn as c,Rn as d,Vn as f,Nn as g,jn as h,Wn as i,Ee as j,xe as k,Yn as l,kn as m,ir as n,qn as o,En as p,Un as r,Jn as s,Jr as t,$n as u,On as v,me as w,Ne as x,An as y,ae as z}; \ No newline at end of file diff --git a/docs/assets/vendor-pinia-DqhKuBjp.js b/docs/assets/vendor-pinia-L_8CmDWM.js similarity index 67% rename from docs/assets/vendor-pinia-DqhKuBjp.js rename to docs/assets/vendor-pinia-L_8CmDWM.js index b0ec9e9..f2bcc0a 100644 --- a/docs/assets/vendor-pinia-DqhKuBjp.js +++ b/docs/assets/vendor-pinia-L_8CmDWM.js @@ -1 +1 @@ -import{An as e,Cn as t,Fn as n,Jt as r,Ln as i,Mn as a,Nn as o,Pn as s,Un as c,Vn as l,an as u,jn as d,kn as f,on as p,un as m}from"./game-logic-Bi1l7y4K.js";var h=typeof window<`u`,g,_=e=>g=e,v=Symbol();function y(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var b;(function(e){e.direct=`direct`,e.patchObject=`patch object`,e.patchFunction=`patch function`})(b||={});var x=(()=>typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null})();function S(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function C(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){O(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function w(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function T(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var E=typeof navigator==`object`?navigator:{userAgent:``},D=(()=>/Macintosh/.test(E.userAgent)&&/AppleWebKit/.test(E.userAgent)&&!/Safari/.test(E.userAgent))(),O=h?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!D?k:`msSaveOrOpenBlob`in E?A:j:()=>{};function k(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?T(r):w(r.href)?C(e,t,n):(r.target=`_blank`,T(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){T(r)},0))}function A(e,t=`download`,n){if(typeof e==`string`)if(w(e))C(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){T(t)})}else navigator.msSaveOrOpenBlob(S(e,n),t)}function j(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return C(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(x.HTMLElement))||`safari`in x,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||D)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:ee}=Object;function M(){let e=f(!0),t=e.run(()=>i({})),n=[],r=[],a=o({install(e){_(a),a._a=e,e.provide(v,a),e.config.globalProperties.$pinia=a,r.forEach(e=>n.push(e)),r=[]},use(e){return this._a?n.push(e):r.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return a}var N=()=>{};function P(t,n,r,i=N){t.add(n);let a=()=>{t.delete(n)&&i()};return!r&&e()&&s(a),a}function F(e,...t){e.forEach(e=>{e(...t)})}var I=e=>e(),L=Symbol(),R=Symbol();function z(e,t){for(let n in e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e),t){if(!t.hasOwnProperty(n))continue;let r=t[n],i=e[n];y(i)&&y(r)&&e.hasOwnProperty(n)&&!a(r)&&!d(r)?e[n]=z(i,r):e[n]=r}return e}var B=Symbol();function V(e){return!y(e)||!Object.prototype.hasOwnProperty.call(e,B)}var{assign:H}=Object;function U(e){return!!(a(e)&&e.effect)}function W(e,t,n,i){let{state:a,actions:s,getters:l}=t,u=n.state.value[e],d;function f(){return u||(n.state.value[e]=a?a():{}),H(c(n.state.value[e]),s,Object.keys(l||{}).reduce((t,i)=>(t[i]=o(r(()=>{_(n);let t=n._s.get(e);return l[i].call(t,t)})),t),{}))}return d=G(e,f,t,n,i,!0),d}function G(e,r,o={},s,c,u){let p,h=H({actions:{}},o),g={deep:!0},v,y,x=new Set,S=new Set,C=s.state.value[e];!u&&!C&&(s.state.value[e]={}),i({});let w;function T(t){let n;v=y=!1,typeof t==`function`?(t(s.state.value[e]),n={type:b.patchFunction,storeId:e,events:void 0}):(z(s.state.value[e],t),n={type:b.patchObject,payload:t,storeId:e,events:void 0});let r=w=Symbol();m().then(()=>{w===r&&(v=!0)}),y=!0,F(x,n,s.state.value[e])}let E=u?function(){let{state:e}=o,t=e?e():{};this.$patch(e=>{H(e,t)})}:N;function D(){p.stop(),x.clear(),S.clear(),s._s.delete(e)}let O=(t,n=``)=>{if(L in t)return t[R]=n,t;let r=function(){_(s);let n=Array.from(arguments),i=new Set,a=new Set;function o(e){i.add(e)}function c(e){a.add(e)}F(S,{args:n,name:r[R],store:k,after:o,onError:c});let l;try{l=t.apply(this&&this.$id===e?this:k,n)}catch(e){throw F(a,e),e}return l instanceof Promise?l.then(e=>(F(i,e),e)).catch(e=>(F(a,e),Promise.reject(e))):(F(i,l),l)};return r[L]=!0,r[R]=n,r},k=n({_p:s,$id:e,$onAction:P.bind(null,S),$patch:T,$reset:E,$subscribe(n,r={}){let i=P(x,n,r.detached,()=>a()),a=p.run(()=>t(()=>s.state.value[e],t=>{(r.flush===`sync`?y:v)&&n({storeId:e,type:b.direct,events:void 0},t)},H({},g,r)));return i},$dispose:D});s._s.set(e,k);let A=(s._a&&s._a.runWithContext||I)(()=>s._e.run(()=>(p=f()).run(()=>r({action:O}))));for(let t in A){let n=A[t];a(n)&&!U(n)||d(n)?u||(C&&V(n)&&(a(n)?n.value=C[t]:z(n,C[t])),s.state.value[e][t]=n):typeof n==`function`&&(A[t]=O(n,t),h.actions[t]=n)}return H(k,A),H(l(k),A),Object.defineProperty(k,`$state`,{get:()=>s.state.value[e],set:e=>{T(t=>{H(t,e)})}}),s._p.forEach(e=>{H(k,p.run(()=>e({store:k,app:s._a,pinia:s,options:h})))}),C&&u&&o.hydrate&&o.hydrate(k.$state,C),v=!0,y=!0,k}function K(e,t,n){let r,i=typeof t==`function`;r=i?n:t;function a(n,a){let o=u();return n||=o?p(v,null):null,n&&_(n),n=g,n._s.has(e)||(i?G(e,t,r,n):W(e,r,n)),n._s.get(e)}return a.$id=e,a}function q(e,t){if(e==null)return;let n=e;for(let e=0;e1&&(t=J(typeof e!=`object`||!e||!Object.prototype.hasOwnProperty.call(e,r)?Number.isInteger(Number(n[1]))?[]:{}:e[r],t,Array.prototype.slice.call(n,1))),Number.isInteger(Number(r))&&Array.isArray(e)?e.slice()[r]:Object.assign({},e,{[r]:t})}function Y(e,t){if(e==null||t.length===0)return e;if(t.length===1){if(e==null)return e;if(Number.isInteger(t[0])&&Array.isArray(e))return Array.prototype.slice.call(e,0).splice(t[0],1);let n={};for(let t in e)n[t]=e[t];return delete n[t[0]],n}if(e[t[0]]==null){if(Number.isInteger(t[0])&&Array.isArray(e))return Array.prototype.concat.call([],e);let n={};for(let t in e)n[t]=e[t];return n}return J(e,Y(e[t[0]],Array.prototype.slice.call(t,1)),[t[0]])}function X(e,t){return t.map(e=>e.split(`.`)).map(t=>[t,q(e,t)]).filter(e=>e[1]!==void 0).reduce((e,t)=>J(e,t[1],t[0]),{})}function Z(e,t){return t.map(e=>e.split(`.`)).reduce((e,t)=>Y(e,t),e)}function Q(e,{storage:t,serializer:n,key:r,debug:i,pick:a,omit:o,beforeHydrate:s,afterHydrate:c},l,u=!0){try{u&&s?.(l);let i=t.getItem(r);if(i){let t=n.deserialize(i),r=a?X(t,a):t,s=o?Z(r,o):r;e.$patch(s)}u&&c?.(l)}catch(e){i&&console.error(`[pinia-plugin-persistedstate]`,e)}}function $(e,{storage:t,serializer:n,key:r,debug:i,pick:a,omit:o}){try{let i=a?X(e,a):e,s=o?Z(i,o):i,c=n.serialize(s);t.setItem(r,c)}catch(e){i&&console.error(`[pinia-plugin-persistedstate]`,e)}}function te(e,t){return typeof e==`function`?e(t):typeof e==`string`?e:t}function ne(e,t,n){let{pinia:r,store:i,options:{persist:a=n}}=e;if(!a)return;if(!(i.$id in r.state.value)){let e=r._s.get(i.$id.replace(`__hot:`,``));e&&Promise.resolve().then(()=>e.$persist());return}let o=(Array.isArray(a)?a:a===!0?[{}]:[a]).map(t);i.$hydrate=({runHooks:t=!0}={})=>{o.forEach(n=>{Q(i,n,e,t)})},i.$persist=()=>{o.forEach(e=>{$(i.$state,e)})},o.forEach(t=>{Q(i,t,e),i.$subscribe((e,n)=>$(n,t),{detached:!0})})}function re(e={}){return function(t){ne(t,n=>{let r=te(n.key,t.store.$id);return{key:(e.key?e.key:e=>e)(r),debug:n.debug??e.debug??!1,serializer:n.serializer??e.serializer??{serialize:e=>JSON.stringify(e),deserialize:e=>JSON.parse(e)},storage:n.storage??e.storage??window.localStorage,beforeHydrate:n.beforeHydrate??e.beforeHydrate,afterHydrate:n.afterHydrate??e.afterHydrate,pick:n.pick,omit:n.omit}},e.auto??!1)}}var ie=re();export{M as n,K as r,ie as t}; \ No newline at end of file +import{$n as e,Fn as t,Gn as n,Hn as r,Kn as i,Sn as a,Un as o,Vn as s,Wn as c,Yn as l,_n as u,on as d,qn as f,tr as p,vn as m}from"./game-logic-BBFCPVtv.js";var h=typeof window<`u`,g,_=e=>g=e,v=Symbol();function y(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var b;(function(e){e.direct=`direct`,e.patchObject=`patch object`,e.patchFunction=`patch function`})(b||={});var x=(()=>typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null})();function S(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function C(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){O(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function w(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function T(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var E=typeof navigator==`object`?navigator:{userAgent:``},D=(()=>/Macintosh/.test(E.userAgent)&&/AppleWebKit/.test(E.userAgent)&&!/Safari/.test(E.userAgent))(),O=h?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!D?k:`msSaveOrOpenBlob`in E?A:j:()=>{};function k(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?T(r):w(r.href)?C(e,t,n):(r.target=`_blank`,T(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){T(r)},0))}function A(e,t=`download`,n){if(typeof e==`string`)if(w(e))C(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){T(t)})}else navigator.msSaveOrOpenBlob(S(e,n),t)}function j(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return C(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(x.HTMLElement))||`safari`in x,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||D)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:ee}=Object;function M(){let e=s(!0),t=e.run(()=>l({})),r=[],i=[],a=n({install(e){_(a),a._a=e,e.provide(v,a),e.config.globalProperties.$pinia=a,i.forEach(e=>r.push(e)),i=[]},use(e){return this._a?r.push(e):i.push(e),this},_p:r,_a:null,_e:e,_s:new Map,state:t});return a}var N=()=>{};function P(e,t,n,a=N){e.add(t);let o=()=>{e.delete(t)&&a()};return!n&&r()&&i(o),o}function F(e,...t){e.forEach(e=>{e(...t)})}var I=e=>e(),L=Symbol(),R=Symbol();function z(e,t){for(let n in e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e),t){if(!t.hasOwnProperty(n))continue;let r=t[n],i=e[n];y(i)&&y(r)&&e.hasOwnProperty(n)&&!c(r)&&!o(r)?e[n]=z(i,r):e[n]=r}return e}var B=Symbol();function V(e){return!y(e)||!Object.prototype.hasOwnProperty.call(e,B)}var{assign:H}=Object;function U(e){return!!(c(e)&&e.effect)}function W(e,t,r,i){let{state:a,actions:o,getters:s}=t,c=r.state.value[e],l;function u(){return c||(r.state.value[e]=a?a():{}),H(p(r.state.value[e]),o,Object.keys(s||{}).reduce((t,i)=>(t[i]=n(d(()=>{_(r);let t=r._s.get(e);return s[i].call(t,t)})),t),{}))}return l=G(e,u,t,r,i,!0),l}function G(n,r,i={},u,d,p){let m,h=H({actions:{}},i),g={deep:!0},v,y,x=new Set,S=new Set,C=u.state.value[n];!p&&!C&&(u.state.value[n]={}),l({});let w;function T(e){let t;v=y=!1,typeof e==`function`?(e(u.state.value[n]),t={type:b.patchFunction,storeId:n,events:void 0}):(z(u.state.value[n],e),t={type:b.patchObject,payload:e,storeId:n,events:void 0});let r=w=Symbol();a().then(()=>{w===r&&(v=!0)}),y=!0,F(x,t,u.state.value[n])}let E=p?function(){let{state:e}=i,t=e?e():{};this.$patch(e=>{H(e,t)})}:N;function D(){m.stop(),x.clear(),S.clear(),u._s.delete(n)}let O=(e,t=``)=>{if(L in e)return e[R]=t,e;let r=function(){_(u);let t=Array.from(arguments),i=new Set,a=new Set;function o(e){i.add(e)}function s(e){a.add(e)}F(S,{args:t,name:r[R],store:k,after:o,onError:s});let c;try{c=e.apply(this&&this.$id===n?this:k,t)}catch(e){throw F(a,e),e}return c instanceof Promise?c.then(e=>(F(i,e),e)).catch(e=>(F(a,e),Promise.reject(e))):(F(i,c),c)};return r[L]=!0,r[R]=t,r},k=f({_p:u,$id:n,$onAction:P.bind(null,S),$patch:T,$reset:E,$subscribe(e,r={}){let i=P(x,e,r.detached,()=>a()),a=m.run(()=>t(()=>u.state.value[n],t=>{(r.flush===`sync`?y:v)&&e({storeId:n,type:b.direct,events:void 0},t)},H({},g,r)));return i},$dispose:D});u._s.set(n,k);let A=(u._a&&u._a.runWithContext||I)(()=>u._e.run(()=>(m=s()).run(()=>r({action:O}))));for(let e in A){let t=A[e];c(t)&&!U(t)||o(t)?p||(C&&V(t)&&(c(t)?t.value=C[e]:z(t,C[e])),u.state.value[n][e]=t):typeof t==`function`&&(A[e]=O(t,e),h.actions[e]=t)}return H(k,A),H(e(k),A),Object.defineProperty(k,`$state`,{get:()=>u.state.value[n],set:e=>{T(t=>{H(t,e)})}}),u._p.forEach(e=>{H(k,m.run(()=>e({store:k,app:u._a,pinia:u,options:h})))}),C&&p&&i.hydrate&&i.hydrate(k.$state,C),v=!0,y=!0,k}function K(e,t,n){let r,i=typeof t==`function`;r=i?n:t;function a(n,a){let o=u();return n||=o?m(v,null):null,n&&_(n),n=g,n._s.has(e)||(i?G(e,t,r,n):W(e,r,n)),n._s.get(e)}return a.$id=e,a}function q(e,t){if(e==null)return;let n=e;for(let e=0;e1&&(t=J(typeof e!=`object`||!e||!Object.prototype.hasOwnProperty.call(e,r)?Number.isInteger(Number(n[1]))?[]:{}:e[r],t,Array.prototype.slice.call(n,1))),Number.isInteger(Number(r))&&Array.isArray(e)?e.slice()[r]:Object.assign({},e,{[r]:t})}function Y(e,t){if(e==null||t.length===0)return e;if(t.length===1){if(e==null)return e;if(Number.isInteger(t[0])&&Array.isArray(e))return Array.prototype.slice.call(e,0).splice(t[0],1);let n={};for(let t in e)n[t]=e[t];return delete n[t[0]],n}if(e[t[0]]==null){if(Number.isInteger(t[0])&&Array.isArray(e))return Array.prototype.concat.call([],e);let n={};for(let t in e)n[t]=e[t];return n}return J(e,Y(e[t[0]],Array.prototype.slice.call(t,1)),[t[0]])}function X(e,t){return t.map(e=>e.split(`.`)).map(t=>[t,q(e,t)]).filter(e=>e[1]!==void 0).reduce((e,t)=>J(e,t[1],t[0]),{})}function Z(e,t){return t.map(e=>e.split(`.`)).reduce((e,t)=>Y(e,t),e)}function Q(e,{storage:t,serializer:n,key:r,debug:i,pick:a,omit:o,beforeHydrate:s,afterHydrate:c},l,u=!0){try{u&&s?.(l);let i=t.getItem(r);if(i){let t=n.deserialize(i),r=a?X(t,a):t,s=o?Z(r,o):r;e.$patch(s)}u&&c?.(l)}catch(e){i&&console.error(`[pinia-plugin-persistedstate]`,e)}}function $(e,{storage:t,serializer:n,key:r,debug:i,pick:a,omit:o}){try{let i=a?X(e,a):e,s=o?Z(i,o):i,c=n.serialize(s);t.setItem(r,c)}catch(e){i&&console.error(`[pinia-plugin-persistedstate]`,e)}}function te(e,t){return typeof e==`function`?e(t):typeof e==`string`?e:t}function ne(e,t,n){let{pinia:r,store:i,options:{persist:a=n}}=e;if(!a)return;if(!(i.$id in r.state.value)){let e=r._s.get(i.$id.replace(`__hot:`,``));e&&Promise.resolve().then(()=>e.$persist());return}let o=(Array.isArray(a)?a:a===!0?[{}]:[a]).map(t);i.$hydrate=({runHooks:t=!0}={})=>{o.forEach(n=>{Q(i,n,e,t)})},i.$persist=()=>{o.forEach(e=>{$(i.$state,e)})},o.forEach(t=>{Q(i,t,e),i.$subscribe((e,n)=>$(n,t),{detached:!0})})}function re(e={}){return function(t){ne(t,n=>{let r=te(n.key,t.store.$id);return{key:(e.key?e.key:e=>e)(r),debug:n.debug??e.debug??!1,serializer:n.serializer??e.serializer??{serialize:e=>JSON.stringify(e),deserialize:e=>JSON.parse(e)},storage:n.storage??e.storage??window.localStorage,beforeHydrate:n.beforeHydrate??e.beforeHydrate,afterHydrate:n.afterHydrate??e.afterHydrate,pick:n.pick,omit:n.omit}},e.auto??!1)}}var ie=re();export{M as n,K as r,ie as t}; \ No newline at end of file diff --git a/docs/assets/vendor-reka-ui-BEHIKScj.js b/docs/assets/vendor-reka-ui-BEHIKScj.js deleted file mode 100644 index 17f8b00..0000000 --- a/docs/assets/vendor-reka-ui-BEHIKScj.js +++ /dev/null @@ -1,8 +0,0 @@ -import{$t as e,Bn as t,Cn as n,En as r,Fn as i,Gn as a,Gt as o,Hn as s,Ht as c,Jn as l,Jt as u,Kn as d,Kt as f,Ln as p,Nn as m,Qt as h,Rt as g,Sn as _,Tn as v,Un as y,Ut as b,Wn as x,Wt as S,Xn as C,Xt as w,Yn as T,Yt as E,Zn as D,Zt as O,_n as k,cn as ee,dn as te,en as A,fn as j,gn as ne,hn as re,in as ie,ln as M,mn as N,nn as ae,on as oe,pn as se,qt as ce,rn as P,tn as F,un as I,vn as le,wn as L,xn as ue,yn as de}from"./game-logic-Bi1l7y4K.js";import{A as fe,C as pe,D as me,E as R,F as he,I as ge,L as _e,M as ve,N as ye,O as be,P as xe,S as Se,T as Ce,_ as we,b as Te,d as Ee,f as De,g as Oe,h as ke,j as Ae,k as je,m as Me,p as Ne,v as Pe,w as Fe,x as Ie,y as Le}from"./vendor-others-DTUzJ7S-.js";function Re(e,t=-1/0,n=1/0){return Math.min(n,Math.max(t,e))}function z(e,t){let n=typeof e==`string`&&!t?`${e}Context`:t,r=Symbol(n);return[t=>{let n=oe(r,t);if(n||n===null)return n;throw Error(`Injection \`${r.toString()}\` not found. Component must be used within ${Array.isArray(e)?`one of the following components: ${e.join(`, `)}`:`\`${e}\``}`)},e=>(re(r,e),e)]}function B(){let e=document.activeElement;if(e==null)return null;for(;e!=null&&e.shadowRoot!=null&&e.shadowRoot.activeElement!=null;)e=e.shadowRoot.activeElement;return e}function ze(e,t,n){let r=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&r.addEventListener(e,t,{once:!0}),r.dispatchEvent(i)}function V(e){return e==null}function Be(e,t){return V(e)?!1:Array.isArray(e)?e.some(e=>_e(e,t)):_e(e,t)}function Ve(e){return e?e.flatMap(e=>e.type===o?Ve(e.children):[e]):[]}var[He,Ue]=z(`ConfigProvider`),We=R?window:void 0;R&&window.document,R&&window.navigator,R&&window.location;function H(e){let t=x(e);return t?.$el??t}function Ge(...e){let t=[],n=()=>{t.forEach(e=>e()),t.length=0},r=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),i=u(()=>{let t=ve(x(e[0])).filter(e=>e!=null);return t.every(e=>typeof e!=`string`)?t:void 0}),o=ge(()=>[i.value?.map(e=>H(e))??[We].filter(e=>e!=null),ve(x(i.value?e[1]:e[0])),ve(a(i.value?e[2]:e[1])),x(i.value?e[3]:e[2])],([e,i,a,o])=>{if(n(),!e?.length||!i?.length||!a?.length)return;let s=je(o)?{...o}:o;t.push(...e.flatMap(e=>i.flatMap(t=>a.map(n=>r(e,t,n,s)))))},{flush:`post`});return xe(n),()=>{o(),n()}}function Ke(){let e=t(!1),n=ae();return n&&j(()=>{e.value=!0},n),e}function qe(e){let t=Ke();return u(()=>(t.value,!!e()))}function Je(e){return typeof e==`function`?e:typeof e==`string`?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Ye(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]==`object`?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);let{target:i=We,eventName:a=`keydown`,passive:o=!1,dedupe:s=!1}=r,c=Je(t);return Ge(i,a,e=>{e.repeat&&x(s)||c(e)&&n(e)},o)}function Xe(e){return JSON.parse(JSON.stringify(e))}function Ze(e,t,r={}){let{window:i=We,...a}=r,o,s=qe(()=>i&&`ResizeObserver`in i),c=()=>{o&&=(o.disconnect(),void 0)},l=n(u(()=>{let t=x(e);return Array.isArray(t)?t.map(e=>H(e)):[H(t)]}),e=>{if(c(),s.value&&i){o=new ResizeObserver(t);for(let t of e)t&&o.observe(t,a)}},{immediate:!0,flush:`post`}),d=()=>{c(),l()};return xe(d),{isSupported:s,stop:d}}function U(e,t,r,i={}){let{clone:a=!1,passive:o=!1,eventName:s,deep:c=!1,defaultValue:l,shouldEmit:d}=i,f=ae(),m=r||f?.emit||(f?.$emit)?.bind(f)||(f?.proxy?.$emit)?.bind(f?.proxy),h=s;t||=`modelValue`,h||=`update:${t.toString()}`;let g=e=>a?typeof a==`function`?a(e):Xe(e):e,_=()=>me(e[t])?g(e[t]):l,v=e=>{d?d(e)&&m(h,e):m(h,e)};if(o){let r=p(_()),i=!1;return n(()=>e[t],e=>{i||(i=!0,r.value=g(e),I(()=>i=!1))}),n(r,n=>{!i&&(n!==e[t]||c)&&v(n)},{deep:c}),r}else return u({get(){return _()},set(e){v(e)}})}var Qe=Ce(()=>{let e=p(new Map),t=p(),r=u(()=>{for(let t of e.value.values())if(t)return!0;return!1}),i=He({scrollBody:p(!0)}),a=null,o=()=>{document.body.style.paddingRight=``,document.body.style.marginRight=``,document.body.style.pointerEvents=``,document.documentElement.style.removeProperty(`--scrollbar-width`),document.body.style.overflow=t.value??``,be&&a?.(),t.value=void 0};return n(r,(e,n)=>{if(!R)return;if(!e){n&&o();return}t.value===void 0&&(t.value=document.body.style.overflow);let r=window.innerWidth-document.documentElement.clientWidth,s={padding:r,margin:0},c=i.scrollBody?.value?typeof i.scrollBody.value==`object`?Ie({padding:i.scrollBody.value.padding===!0?r:i.scrollBody.value.padding,margin:i.scrollBody.value.margin===!0?r:i.scrollBody.value.margin},s):s:{padding:0,margin:0};r>0&&(document.body.style.paddingRight=typeof c.padding==`number`?`${c.padding}px`:String(c.padding),document.body.style.marginRight=typeof c.margin==`number`?`${c.margin}px`:String(c.margin),document.documentElement.style.setProperty(`--scrollbar-width`,`${r}px`),document.body.style.overflow=`hidden`),be&&(a=Ge(document,`touchmove`,e=>tt(e),{passive:!1})),I(()=>{document.body.style.pointerEvents=`none`,document.body.style.overflow=`hidden`})},{immediate:!0,flush:`sync`}),e});function $e(e){let t=Math.random().toString(36).substring(2,7),n=Qe();n.value.set(t,e??!1);let r=u({get:()=>n.value.get(t)??!1,set:e=>n.value.set(t,e)});return ye(()=>{n.value.delete(t)}),r}function et(e){let t=window.getComputedStyle(e);if(t.overflowX===`scroll`||t.overflowY===`scroll`||t.overflowX===`auto`&&e.clientWidth1?!0:(t.preventDefault&&t.cancelable&&t.preventDefault(),!1)}function nt(e){let t=He({dir:p(`ltr`)});return u(()=>e?.value||t.dir?.value||`ltr`)}function rt(e){let t=ae(),n=t?.type.emits,r={};return n?.length||console.warn(`No emitted event found. Please check component: ${t?.type.__name}`),n?.forEach(t=>{r[D(d(t))]=(...n)=>e(t,...n)}),r}var it=0;function at(){L(e=>{if(!R)return;let t=document.querySelectorAll(`[data-reka-focus-guard]`);document.body.insertAdjacentElement(`afterbegin`,t[0]??ot()),document.body.insertAdjacentElement(`beforeend`,t[1]??ot()),it++,e(()=>{it===1&&document.querySelectorAll(`[data-reka-focus-guard]`).forEach(e=>e.remove()),it--})})}function ot(){let e=document.createElement(`span`);return e.setAttribute(`data-reka-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}function st(e){return u(()=>x(e)?!!H(e)?.closest(`form`):!0)}function W(){let e=ae(),t=p(),n=u(()=>[`#text`,`#comment`].includes(t.value?.$el.nodeName)?t.value?.$el.nextElementSibling:H(t)),r=Object.assign({},e.exposed),i={};for(let t in e.props)Object.defineProperty(i,t,{enumerable:!0,configurable:!0,get:()=>e.props[t]});if(Object.keys(r).length>0)for(let e in r)Object.defineProperty(i,e,{enumerable:!0,configurable:!0,get:()=>r[e]});Object.defineProperty(i,`$el`,{enumerable:!0,configurable:!0,get:()=>e.vnode.el}),e.exposed=i;function a(n){t.value=n,n&&(Object.defineProperty(i,`$el`,{enumerable:!0,configurable:!0,get:()=>n instanceof Element?n:n.$el}),e.exposed=i)}return{forwardRef:a,currentRef:t,currentElement:n}}function ct(e){let t=ae(),n=Object.keys(t?.type.props??{}).reduce((e,n)=>{let r=(t?.type.props[n]).default;return r!==void 0&&(e[n]=r),e},{}),r=s(e);return u(()=>{let e={},i=t?.vnode.props??{};return Object.keys(i).forEach(t=>{e[d(t)]=i[t]}),Object.keys({...n,...e}).reduce((e,t)=>(r.value[t]!==void 0&&(e[t]=r.value[t]),e),{})})}function G(e,t){let n=ct(e),r=t?rt(t):{};return u(()=>({...n.value,...r}))}function lt(e,t){let n=Ae(!1,300),r=p(null),i=pe();function a(){r.value=null,n.value=!1}function o(e,t){let i=e.currentTarget,a={x:e.clientX,y:e.clientY},o=dt(a,ut(a,i.getBoundingClientRect())),s=ft(t.getBoundingClientRect());r.value=mt([...o,...s]),n.value=!0}return L(n=>{if(e.value&&t.value){let r=e=>o(e,t.value),i=t=>o(t,e.value);e.value.addEventListener(`pointerleave`,r),t.value.addEventListener(`pointerleave`,i),n(()=>{e.value?.removeEventListener(`pointerleave`,r),t.value?.removeEventListener(`pointerleave`,i)})}}),L(n=>{if(r.value){let o=n=>{if(!r.value||!(n.target instanceof Element))return;let o=n.target,s={x:n.clientX,y:n.clientY},c=e.value?.contains(o)||t.value?.contains(o),l=!pt(s,r.value),u=!!o.closest(`[data-grace-area-trigger]`);c?a():(l||u)&&(a(),i.trigger())};e.value?.ownerDocument.addEventListener(`pointermove`,o),n(()=>e.value?.ownerDocument.removeEventListener(`pointermove`,o))}}),{isPointerInTransit:n,onPointerExit:i.on}}function ut(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function dt(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function ft(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function pt(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=l>r&&n<(c-o)*(r-s)/(l-s)+o&&(i=!i)}return i}function mt(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y?1:0),ht(t)}function ht(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}function gt(e){let t;n(()=>H(e),e=>{e?t=Te(e):t&&t()}),se(()=>{t&&t()})}var _t=0;function K(e,t=`reka`){if(e)return e;if(`useId`in g)return`${t}-${ue?.()}`;let n=He({useId:void 0});return n.useId?`${t}-${n.useId()}`:`${t}-${++_t}`}function vt(e){let t=p(),n=u(()=>t.value?.width??0),r=u(()=>t.value?.height??0);return j(()=>{let n=H(e);if(n){t.value={width:n.offsetWidth,height:n.offsetHeight};let e=new ResizeObserver(e=>{if(!Array.isArray(e)||!e.length)return;let r=e[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=n.offsetWidth,a=n.offsetHeight;t.value={width:i,height:a}});return e.observe(n,{box:`border-box`}),()=>e.unobserve(n)}else t.value=void 0}),{width:n,height:r}}function yt(e,t){let n=p(e);function r(e){return t[n.value][e]??n.value}return{state:n,dispatch:e=>{n.value=r(e)}}}function bt(e){let t=Ae(``,1e3);return{search:t,handleTypeaheadSearch:(n,r)=>{if(t.value+=n,e)e(n);else{let e=B(),n=r.map(e=>({...e,textValue:e.value?.textValue??e.ref.textContent?.trim()??``})),i=n.find(t=>t.ref===e),a=St(n.map(e=>e.textValue),t.value,i?.textValue),o=n.find(e=>e.textValue===a);return o&&o.ref.focus(),o?.ref}},resetTypeahead:()=>{t.value=``}}}function xt(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function St(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=xt(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function Ct(e,t){let r=p({}),i=p(`none`),a=p(e),o=e.value?`mounted`:`unmounted`,s,c=t.value?.ownerDocument.defaultView??We,{state:l,dispatch:d}=yt(o,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}}),f=e=>{if(R){let n=new CustomEvent(e,{bubbles:!1,cancelable:!1});t.value?.dispatchEvent(n)}};n(e,async(e,n)=>{let a=n!==e;if(await I(),a){let a=i.value,o=wt(t.value);e?(d(`MOUNT`),f(`enter`),o===`none`&&f(`after-enter`)):o===`none`||o===`undefined`||r.value?.display===`none`?(d(`UNMOUNT`),f(`leave`),f(`after-leave`)):n&&a!==o?(d(`ANIMATION_OUT`),f(`leave`)):(d(`UNMOUNT`),f(`after-leave`))}},{immediate:!0});let m=e=>{let n=wt(t.value),r=n.includes(CSS.escape(e.animationName)),i=l.value===`mounted`?`enter`:`leave`;if(e.target===t.value&&r&&(f(`after-${i}`),d(`ANIMATION_END`),!a.value)){let e=t.value.style.animationFillMode;t.value.style.animationFillMode=`forwards`,s=c?.setTimeout(()=>{t.value?.style.animationFillMode===`forwards`&&(t.value.style.animationFillMode=e)})}e.target===t.value&&n===`none`&&d(`ANIMATION_END`)},h=e=>{e.target===t.value&&(i.value=wt(t.value))},g=n(t,(e,t)=>{e?(r.value=getComputedStyle(e),e.addEventListener(`animationstart`,h),e.addEventListener(`animationcancel`,m),e.addEventListener(`animationend`,m)):(d(`ANIMATION_END`),s!==void 0&&c?.clearTimeout(s),t?.removeEventListener(`animationstart`,h),t?.removeEventListener(`animationcancel`,m),t?.removeEventListener(`animationend`,m))},{immediate:!0}),_=n(l,()=>{let e=wt(t.value);i.value=l.value===`mounted`?e:`none`});return se(()=>{g(),_()}),{isPresent:u(()=>[`mounted`,`unmountSuspended`].includes(l.value))}}function wt(e){return e&&getComputedStyle(e).animationName||`none`}var Tt=F({name:`Presence`,props:{present:{type:Boolean,required:!0},forceMount:{type:Boolean}},slots:{},setup(e,{slots:t,expose:n}){let{present:r,forceMount:i}=y(e),a=p(),{isPresent:o}=Ct(r,a);n({present:o});let s=t.default({present:o.value});s=Ve(s||[]);let c=ae();if(s&&s?.length>1){let e=c?.parent?.type.name?`<${c.parent.type.name} />`:`component`;throw Error([`Detected an invalid children for \`${e}\` for \`Presence\` component.`,``,"Note: Presence works similarly to `v-if` directly, but it waits for animation/transition to finished before unmounting. So it expect only one direct child of valid VNode type.",`You can apply a few solutions:`,["Provide a single child element so that `presence` directive attach correctly.",`Ensure the first child is an actual element instead of a raw text node or comment node.`].map(e=>` - ${e}`).join(` -`)].join(` -`))}return()=>i.value||r.value||o.value?ie(t.default({present:o.value})[0],{ref:e=>{let t=H(e);return t?.hasAttribute===void 0||(t?.hasAttribute(`data-reka-popper-content-wrapper`)?a.value=t.firstElementChild:a.value=t),t}}):null}}),Et=F({name:`PrimitiveSlot`,inheritAttrs:!1,setup(e,{attrs:t,slots:n}){return()=>{if(!n.default)return null;let e=Ve(n.default()),r=e.findIndex(e=>e.type!==S);if(r===-1)return e;let i=e[r];delete i.props?.ref;let a=i.props?M(t,i.props):t,o=ce({...i,props:{}},a);return e.length===1?o:(e[r]=o,e)}}}),Dt=[`area`,`img`,`input`],q=F({name:`Primitive`,inheritAttrs:!1,props:{asChild:{type:Boolean,default:!1},as:{type:[String,Object],default:`div`}},setup(e,{attrs:t,slots:n}){let r=e.asChild?`template`:e.as;return typeof r==`string`&&Dt.includes(r)?()=>ie(r,t):r===`template`?()=>ie(Et,t,{default:n.default}):()=>ie(e.as,t,{default:n.default})}});function Ot(){let e=p();return{primitiveElement:e,currentElement:u(()=>[`#text`,`#comment`].includes(e.value?.$el.nodeName)?e.value?.$el.nextElementSibling:H(e))}}var[J,kt]=z(`DialogRoot`),At=F({inheritAttrs:!1,__name:`DialogRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1,default:!1},modal:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,r=U(n,`open`,t,{defaultValue:n.defaultOpen,passive:n.open===void 0}),i=p(),o=p(),{modal:s}=y(n);return kt({open:r,modal:s,openModal:()=>{r.value=!0},onOpenChange:e=>{r.value=e},onOpenToggle:()=>{r.value=!r.value},contentId:``,titleId:``,descriptionId:``,triggerElement:i,contentElement:o}),(e,t)=>k(e.$slots,`default`,{open:a(r),close:()=>r.value=!1})}}),jt=F({__name:`DialogClose`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;W();let n=J();return(e,i)=>(N(),w(a(q),M(t,{type:e.as===`button`?`button`:void 0,onClick:i[0]||=e=>a(n).onOpenChange(!1)}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16,[`type`]))}}),Mt=`dismissableLayer.pointerDownOutside`,Nt=`dismissableLayer.focusOutside`;function Pt(e,t){let n=t.closest(`[data-dismissable-layer]`),r=e.dataset.dismissableLayer===``?e:e.querySelector(`[data-dismissable-layer]`),i=Array.from(e.ownerDocument.querySelectorAll(`[data-dismissable-layer]`));return!!(n&&(r===n||i.indexOf(r){});return L(o=>{if(!R||!x(n))return;let s=async n=>{let o=n.target;if(!(!t?.value||!o)){if(Pt(t.value,o)){i.value=!1;return}if(n.target&&!i.value){let t={originalEvent:n};function i(){ze(Mt,e,t)}n.pointerType===`touch`?(r.removeEventListener(`click`,a.value),a.value=i,r.addEventListener(`click`,a.value,{once:!0})):i()}else r.removeEventListener(`click`,a.value);i.value=!1}},c=window.setTimeout(()=>{r.addEventListener(`pointerdown`,s)},0);o(()=>{window.clearTimeout(c),r.removeEventListener(`pointerdown`,s),r.removeEventListener(`click`,a.value)})}),{onPointerDownCapture:()=>{x(n)&&(i.value=!0)}}}function It(e,t,n=!0){let r=t?.value?.ownerDocument??globalThis?.document,i=p(!1);return L(a=>{if(!R||!x(n))return;let o=async n=>{if(!t?.value)return;await I(),await I();let r=n.target;!t.value||!r||Pt(t.value,r)||n.target&&!i.value&&ze(Nt,e,{originalEvent:n})};r.addEventListener(`focusin`,o),a(()=>r.removeEventListener(`focusin`,o))}),{onFocusCapture:()=>{x(n)&&(i.value=!0)},onBlurCapture:()=>{x(n)&&(i.value=!1)}}}var Y=i({layersRoot:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Lt=F({__name:`DismissableLayer`,props:{disableOutsidePointerEvents:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`dismiss`],setup(e,{emit:t}){let n=e,i=t,{forwardRef:o,currentElement:s}=W(),c=u(()=>s.value?.ownerDocument??globalThis.document),l=u(()=>Y.layersRoot),d=u(()=>s.value?Array.from(l.value).indexOf(s.value):-1),f=u(()=>Y.layersWithOutsidePointerEventsDisabled.size>0),p=u(()=>{let e=Array.from(l.value),[t]=[...Y.layersWithOutsidePointerEventsDisabled].slice(-1),n=e.indexOf(t);return d.value>=n}),m=Ft(async e=>{let t=[...Y.branches].some(t=>t?.contains(e.target));!p.value||t||(i(`pointerDownOutside`,e),i(`interactOutside`,e),await I(),e.defaultPrevented||i(`dismiss`))},s),h=It(e=>{[...Y.branches].some(t=>t?.contains(e.target))||(i(`focusOutside`,e),i(`interactOutside`,e),e.defaultPrevented||i(`dismiss`))},s);Ye(`Escape`,e=>{d.value===l.value.size-1&&(i(`escapeKeyDown`,e),e.defaultPrevented||i(`dismiss`))});let g;return L(e=>{s.value&&(n.disableOutsidePointerEvents&&(Y.layersWithOutsidePointerEventsDisabled.size===0&&(g=c.value.body.style.pointerEvents,c.value.body.style.pointerEvents=`none`),Y.layersWithOutsidePointerEventsDisabled.add(s.value)),l.value.add(s.value),e(()=>{n.disableOutsidePointerEvents&&Y.layersWithOutsidePointerEventsDisabled.size===1&&(c.value.body.style.pointerEvents=g)}))}),L(e=>{e(()=>{s.value&&(l.value.delete(s.value),Y.layersWithOutsidePointerEventsDisabled.delete(s.value))})}),(e,t)=>(N(),w(a(q),{ref:a(o),"as-child":e.asChild,as:e.as,"data-dismissable-layer":``,style:T({pointerEvents:f.value?p.value?`auto`:`none`:void 0}),onFocusCapture:a(h).onFocusCapture,onBlurCapture:a(h).onBlurCapture,onPointerdownCapture:a(m).onPointerDownCapture},{default:r(()=>[k(e.$slots,`default`)]),_:3},8,[`as-child`,`as`,`style`,`onFocusCapture`,`onBlurCapture`,`onPointerdownCapture`]))}}),Rt=Fe(()=>p([]));function zt(){let e=Rt();return{add(t){let n=e.value[0];t!==n&&n?.pause(),e.value=Bt(e.value,t),e.value.unshift(t)},remove(t){e.value=Bt(e.value,t),e.value[0]?.resume()}}}function Bt(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function Vt(e){return e.filter(e=>e.tagName!==`A`)}var Ht=`focusScope.autoFocusOnMount`,Ut=`focusScope.autoFocusOnUnmount`,Wt={bubbles:!1,cancelable:!0};function Gt(e,{select:t=!1}={}){let n=B();for(let r of e)if(X(r,{select:t}),B()!==n)return!0}function Kt(e){let t=qt(e);return[Jt(t,e),Jt(t.reverse(),e)]}function qt(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Jt(e,t){for(let n of e)if(!Yt(n,{upTo:t}))return n}function Yt(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function Xt(e){return e instanceof HTMLInputElement&&`select`in e}function X(e,{select:t=!1}={}){if(e&&e.focus){let n=B();e.focus({preventScroll:!0}),e!==n&&Xt(e)&&t&&e.select()}}var Zt=F({__name:`FocusScope`,props:{loop:{type:Boolean,required:!1,default:!1},trapped:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`mountAutoFocus`,`unmountAutoFocus`],setup(e,{emit:t}){let n=e,o=t,{currentRef:s,currentElement:c}=W(),l=p(null),u=zt(),d=i({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}});L(e=>{if(!R)return;let t=c.value;if(!n.trapped)return;function r(e){if(d.paused||!t)return;let n=e.target;t.contains(n)?l.value=n:X(l.value,{select:!0})}function i(e){if(d.paused||!t)return;let n=e.relatedTarget;n!==null&&(t.contains(n)||X(l.value,{select:!0}))}function a(e){t.contains(l.value)||X(t)}document.addEventListener(`focusin`,r),document.addEventListener(`focusout`,i);let o=new MutationObserver(a);t&&o.observe(t,{childList:!0,subtree:!0}),e(()=>{document.removeEventListener(`focusin`,r),document.removeEventListener(`focusout`,i),o.disconnect()})}),L(async e=>{let t=c.value;if(await I(),!t)return;u.add(d);let n=B();if(!t.contains(n)){let e=new CustomEvent(Ht,Wt);t.addEventListener(Ht,e=>o(`mountAutoFocus`,e)),t.dispatchEvent(e),e.defaultPrevented||(Gt(Vt(qt(t)),{select:!0}),B()===n&&X(t))}e(()=>{t.removeEventListener(Ht,e=>o(`mountAutoFocus`,e));let e=new CustomEvent(Ut,Wt),r=e=>{o(`unmountAutoFocus`,e)};t.addEventListener(Ut,r),t.dispatchEvent(e),setTimeout(()=>{e.defaultPrevented||X(n??document.body,{select:!0}),t.removeEventListener(Ut,r),u.remove(d)},0)})});function f(e){if(!n.loop&&!n.trapped||d.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,r=B();if(t&&r){let t=e.currentTarget,[i,a]=Kt(t);i&&a?!e.shiftKey&&r===a?(e.preventDefault(),n.loop&&X(i,{select:!0})):e.shiftKey&&r===i&&(e.preventDefault(),n.loop&&X(a,{select:!0})):r===t&&e.preventDefault()}}return(e,t)=>(N(),w(a(q),{ref_key:`currentRef`,ref:s,tabindex:`-1`,"as-child":e.asChild,as:e.as,onKeydown:f},{default:r(()=>[k(e.$slots,`default`)]),_:3},8,[`as-child`,`as`]))}}),Qt=[`Enter`,` `],$t=[`ArrowDown`,`PageUp`,`Home`],en=[`ArrowUp`,`PageDown`,`End`];[...$t,...en],[...Qt],[...Qt];function tn(e){return e?`open`:`closed`}function nn(e){let t=B();for(let n of e)if(n===t||(n.focus(),B()!==t))return}var rn=F({__name:`DialogContentImpl`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,o=J(),{forwardRef:s,currentElement:c}=W();return o.titleId||=K(void 0,`reka-dialog-title`),o.descriptionId||=K(void 0,`reka-dialog-description`),j(()=>{o.contentElement=c,B()!==document.body&&(o.triggerElement.value=B())}),(e,t)=>(N(),w(a(Zt),{"as-child":``,loop:``,trapped:n.trapFocus,onMountAutoFocus:t[5]||=e=>i(`openAutoFocus`,e),onUnmountAutoFocus:t[6]||=e=>i(`closeAutoFocus`,e)},{default:r(()=>[A(a(Lt),M({id:a(o).contentId,ref:a(s),as:e.as,"as-child":e.asChild,"disable-outside-pointer-events":e.disableOutsidePointerEvents,role:`dialog`,"aria-describedby":a(o).descriptionId,"aria-labelledby":a(o).titleId,"data-state":a(tn)(a(o).open.value)},e.$attrs,{onDismiss:t[0]||=e=>a(o).onOpenChange(!1),onEscapeKeyDown:t[1]||=e=>i(`escapeKeyDown`,e),onFocusOutside:t[2]||=e=>i(`focusOutside`,e),onInteractOutside:t[3]||=e=>i(`interactOutside`,e),onPointerDownOutside:t[4]||=e=>i(`pointerDownOutside`,e)}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16,[`id`,`as`,`as-child`,`disable-outside-pointer-events`,`aria-describedby`,`aria-labelledby`,`data-state`])]),_:3},8,[`trapped`]))}}),an=F({__name:`DialogContentModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,o=J(),s=rt(i),{forwardRef:c,currentElement:l}=W();return gt(l),(e,t)=>(N(),w(rn,M({...n,...a(s)},{ref:a(c),"trap-focus":a(o).open.value,"disable-outside-pointer-events":!0,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(e.preventDefault(),a(o).triggerElement.value?.focus())},onPointerDownOutside:t[1]||=e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()},onFocusOutside:t[2]||=e=>{e.preventDefault()}}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16,[`trap-focus`]))}}),on=F({__name:`DialogContentNonModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=rt(t);W();let o=J(),s=p(!1),c=p(!1);return(e,t)=>(N(),w(rn,M({...n,...a(i)},{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(s.value||a(o).triggerElement.value?.focus(),e.preventDefault()),s.value=!1,c.value=!1},onInteractOutside:t[1]||=e=>{e.defaultPrevented||(s.value=!0,e.detail.originalEvent.type===`pointerdown`&&(c.value=!0));let t=e.target;a(o).triggerElement.value?.contains(t)&&e.preventDefault(),e.detail.originalEvent.type===`focusin`&&c.value&&e.preventDefault()}}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))}}),sn=F({__name:`DialogContent`,props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,o=J(),s=rt(i),{forwardRef:c}=W();return(e,t)=>(N(),w(a(Tt),{present:e.forceMount||a(o).open.value},{default:r(()=>[a(o).modal.value?(N(),w(an,M({key:0,ref:a(c)},{...n,...a(s),...e.$attrs}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16)):(N(),w(on,M({key:1,ref:a(c)},{...n,...a(s),...e.$attrs}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),cn=F({__name:`DialogDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`p`}},setup(e){let t=e;W();let n=J();return(e,i)=>(N(),w(a(q),M(t,{id:a(n).descriptionId}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16,[`id`]))}}),ln=F({__name:`DialogOverlayImpl`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=J();return $e(!0),W(),(e,n)=>(N(),w(a(q),{as:e.as,"as-child":e.asChild,"data-state":a(t).open.value?`open`:`closed`,style:{"pointer-events":`auto`}},{default:r(()=>[k(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`data-state`]))}}),un=F({__name:`DialogOverlay`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=J(),{forwardRef:n}=W();return(e,i)=>a(t)?.modal.value?(N(),w(a(Tt),{key:0,present:e.forceMount||a(t).open.value},{default:r(()=>[A(ln,M(e.$attrs,{ref:a(n),as:e.as,"as-child":e.asChild}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16,[`as`,`as-child`])]),_:3},8,[`present`])):O(`v-if`,!0)}}),dn=F({__name:`Teleport`,props:{to:{type:null,required:!1,default:`body`},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=Ke();return(e,n)=>a(t)||e.forceMount?(N(),w(f,{key:0,to:e.to,disabled:e.disabled,defer:e.defer},[k(e.$slots,`default`)],8,[`to`,`disabled`,`defer`])):O(`v-if`,!0)}}),fn=F({__name:`DialogPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(N(),w(a(dn),l(P(t)),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))}}),pn=F({__name:`DialogTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`h2`}},setup(e){let t=e,n=J();return W(),(e,i)=>(N(),w(a(q),M(t,{id:a(n).titleId}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16,[`id`]))}}),mn=F({__name:`AlertDialogAction`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;return W(),(e,n)=>(N(),w(a(jt),l(P(t)),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))}}),[hn,gn]=z(`AlertDialogContent`),_n=F({__name:`AlertDialogContent`,props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=rt(t);W();let o=p();return gn({onCancelElementChange:e=>{o.value=e}}),(e,t)=>(N(),w(a(sn),M({...n,...a(i)},{role:`alertdialog`,onPointerDownOutside:t[0]||=b(()=>{},[`prevent`]),onInteractOutside:t[1]||=b(()=>{},[`prevent`]),onOpenAutoFocus:t[2]||=()=>{I(()=>{o.value?.focus({preventScroll:!0})})}}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))}}),vn=F({__name:`AlertDialogCancel`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=hn(),{forwardRef:i,currentElement:o}=W();return j(()=>{n.onCancelElementChange(o.value)}),(e,n)=>(N(),w(a(jt),M(t,{ref:a(i)}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))}}),yn=F({__name:`AlertDialogDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`p`}},setup(e){let t=e;return W(),(e,n)=>(N(),w(a(cn),l(P(t)),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))}}),bn=F({__name:`AlertDialogOverlay`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e;return W(),(e,n)=>(N(),w(a(un),l(P(t)),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))}}),xn=F({__name:`AlertDialogPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(N(),w(a(dn),l(P(t)),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))}}),Sn=F({__name:`AlertDialogRoot`,props:{open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1}},emits:[`update:open`],setup(e,{emit:t}){let n=G(e,t);return W(),(e,t)=>(N(),w(a(At),M(a(n),{modal:!0}),{default:r(t=>[k(e.$slots,`default`,l(P(t)))]),_:3},16))}}),Cn=F({__name:`AlertDialogTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`h2`}},setup(e){let t=e;return W(),(e,n)=>(N(),w(a(pn),l(P(t)),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))}}),wn=`data-reka-collection-item`;function Z(e={}){let{key:t=``,isProvider:r=!1}=e,i=`${t}CollectionProvider`,a;if(r){let e=p(new Map);a={collectionRef:p(),itemMap:e},re(i,a)}else a=oe(i);let o=(e=!1)=>{let t=a.collectionRef.value;if(!t)return[];let n=Array.from(t.querySelectorAll(`[${wn}]`)),r=Array.from(a.itemMap.value.values()).sort((e,t)=>n.indexOf(e.ref)-n.indexOf(t.ref));return e?r:r.filter(e=>e.ref.dataset.disabled!==``)},s=F({name:`CollectionSlot`,setup(e,{slots:t}){let{primitiveElement:r,currentElement:i}=Ot();return n(i,()=>{a.collectionRef.value=i.value}),()=>ie(Et,{ref:r},t)}}),c=F({name:`CollectionItem`,inheritAttrs:!1,props:{value:{validator:()=>!0}},setup(e,{slots:t,attrs:n}){let{primitiveElement:r,currentElement:i}=Ot();return L(t=>{if(i.value){let n=m(i.value);a.itemMap.value.set(n,{ref:i.value,value:e.value}),t(()=>a.itemMap.value.delete(n))}}),()=>ie(Et,{...n,[wn]:``,ref:r},t)}});return{getItems:o,reactiveItems:u(()=>Array.from(a.itemMap.value.values())),itemMapSize:u(()=>a.itemMap.value.size),CollectionSlot:s,CollectionItem:c}}var Tn=`rovingFocusGroup.onEntryFocus`,En={bubbles:!1,cancelable:!0},Dn={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function On(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function kn(e,t,n){let r=On(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return Dn[r]}function An(e,t=!1){let n=B();for(let r of e)if(r===n||(r.focus({preventScroll:t}),B()!==n))return}function jn(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var[Mn,Nn]=z(`RovingFocusGroup`),Pn=F({__name:`RovingFocusGroup`,props:{orientation:{type:String,required:!1,default:void 0},dir:{type:String,required:!1},loop:{type:Boolean,required:!1,default:!1},currentTabStopId:{type:[String,null],required:!1},defaultCurrentTabStopId:{type:String,required:!1},preventScrollOnEntryFocus:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`entryFocus`,`update:currentTabStopId`],setup(e,{expose:t,emit:n}){let i=e,o=n,{loop:s,orientation:c,dir:l}=y(i),u=nt(l),d=U(i,`currentTabStopId`,o,{defaultValue:i.defaultCurrentTabStopId,passive:i.currentTabStopId===void 0}),f=p(!1),m=p(!1),h=p(0),{getItems:g,CollectionSlot:_}=Z({isProvider:!0});function v(e){let t=!m.value;if(e.currentTarget&&e.target===e.currentTarget&&t&&!f.value){let t=new CustomEvent(Tn,En);if(e.currentTarget.dispatchEvent(t),o(`entryFocus`,t),!t.defaultPrevented){let e=g().map(e=>e.ref).filter(e=>e.dataset.disabled!==``);An([e.find(e=>e.getAttribute(`data-active`)===``),e.find(e=>e.getAttribute(`data-highlighted`)===``),e.find(e=>e.id===d.value),...e].filter(Boolean),i.preventScrollOnEntryFocus)}}m.value=!1}function b(){setTimeout(()=>{m.value=!1},1)}return t({getItems:g}),Nn({loop:s,dir:u,orientation:c,currentTabStopId:d,onItemFocus:e=>{d.value=e},onItemShiftTab:()=>{f.value=!0},onFocusableItemAdd:()=>{h.value++},onFocusableItemRemove:()=>{h.value--}}),(e,t)=>(N(),w(a(_),null,{default:r(()=>[A(a(q),{tabindex:f.value||h.value===0?-1:0,"data-orientation":a(c),as:e.as,"as-child":e.asChild,dir:a(u),style:{outline:`none`},onMousedown:t[0]||=e=>m.value=!0,onMouseup:b,onFocus:v,onBlur:t[1]||=e=>f.value=!1},{default:r(()=>[k(e.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`as`,`as-child`,`dir`])]),_:3}))}}),Fn=F({__name:`RovingFocusItem`,props:{tabStopId:{type:String,required:!1},focusable:{type:Boolean,required:!1,default:!0},active:{type:Boolean,required:!1},allowShiftKey:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,n=Mn(),i=K(),o=u(()=>t.tabStopId||i),s=u(()=>n.currentTabStopId.value===o.value),{getItems:c,CollectionItem:l}=Z();j(()=>{t.focusable&&n.onFocusableItemAdd()}),se(()=>{t.focusable&&n.onFocusableItemRemove()});function d(e){if(e.key===`Tab`&&e.shiftKey){n.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let r=kn(e,n.orientation.value,n.dir.value);if(r!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||!t.allowShiftKey&&e.shiftKey)return;e.preventDefault();let i=[...c().map(e=>e.ref).filter(e=>e.dataset.disabled!==``)];if(r===`last`)i.reverse();else if(r===`prev`||r===`next`){r===`prev`&&i.reverse();let t=i.indexOf(e.currentTarget);i=n.loop.value?jn(i,t+1):i.slice(t+1)}I(()=>An(i))}}return(e,t)=>(N(),w(a(l),null,{default:r(()=>[A(a(q),{tabindex:s.value?0:-1,"data-orientation":a(n).orientation.value,"data-active":e.active?``:void 0,"data-disabled":e.focusable?void 0:``,as:e.as,"as-child":e.asChild,onMousedown:t[0]||=t=>{e.focusable?a(n).onItemFocus(o.value):t.preventDefault()},onFocus:t[1]||=e=>a(n).onItemFocus(o.value),onKeydown:d},{default:r(()=>[k(e.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`data-active`,`data-disabled`,`as`,`as-child`])]),_:3}))}}),In=F({__name:`VisuallyHidden`,props:{feature:{type:String,required:!1,default:`focusable`},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){return(e,t)=>(N(),w(a(q),{as:e.as,"as-child":e.asChild,"aria-hidden":e.feature===`focusable`?`true`:void 0,"data-hidden":e.feature===`fully-hidden`?``:void 0,tabindex:e.feature===`fully-hidden`?`-1`:void 0,style:{position:`absolute`,border:0,width:`1px`,height:`1px`,padding:0,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,clipPath:`inset(50%)`,whiteSpace:`nowrap`,wordWrap:`normal`,top:`-1px`,left:`-1px`}},{default:r(()=>[k(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`aria-hidden`,`data-hidden`,`tabindex`]))}}),Ln=F({inheritAttrs:!1,__name:`VisuallyHiddenInputBubble`,props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:`fully-hidden`}},setup(e){let t=e,{primitiveElement:r,currentElement:i}=Ot();return n(u(()=>t.checked??t.value),(e,t)=>{if(!i.value)return;let n=i.value,r=window.HTMLInputElement.prototype,a=Object.getOwnPropertyDescriptor(r,`value`).set;if(a&&e!==t){let t=new Event(`input`,{bubbles:!0}),r=new Event(`change`,{bubbles:!0});a.call(n,e),n.dispatchEvent(t),n.dispatchEvent(r)}}),(e,n)=>(N(),w(In,M({ref_key:`primitiveElement`,ref:r},{...t,...e.$attrs},{as:`input`}),null,16))}}),Rn=F({inheritAttrs:!1,__name:`VisuallyHiddenInput`,props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:`fully-hidden`}},setup(e){let t=e,n=u(()=>typeof t.value==`object`&&Array.isArray(t.value)&&t.value.length===0&&t.required),r=u(()=>typeof t.value==`string`||typeof t.value==`number`||typeof t.value==`boolean`||t.value===null||t.value===void 0?[{name:t.name,value:t.value}]:typeof t.value==`object`&&Array.isArray(t.value)?t.value.flatMap((e,n)=>typeof e==`object`?Object.entries(e).map(([e,r])=>({name:`${t.name}[${n}][${e}]`,value:r})):{name:`${t.name}[${n}]`,value:e}):t.value!==null&&typeof t.value==`object`&&!Array.isArray(t.value)?Object.entries(t.value).map(([e,n])=>({name:`${t.name}[${e}]`,value:n})):[]);return(e,i)=>(N(),h(o,null,[O(` We render single input if it's required `),n.value?(N(),w(Ln,M({key:e.name},{...t,...e.$attrs},{name:e.name,value:e.value}),null,16,[`name`,`value`])):(N(!0),h(o,{key:1},ne(r.value,n=>(N(),w(Ln,M({key:n.name},{ref_for:!0},{...t,...e.$attrs},{name:n.name,value:n.value}),null,16,[`name`,`value`]))),128))],2112))}}),[zn,Bn]=z(`CheckboxGroupRoot`);function Vn(e){return e===`indeterminate`}function Hn(e){return Vn(e)?`indeterminate`:e?`checked`:`unchecked`}var[Un,Wn]=z(`CheckboxRoot`),Gn=F({inheritAttrs:!1,__name:`CheckboxRoot`,props:{defaultValue:{type:[Boolean,String],required:!1},modelValue:{type:[Boolean,String,null],required:!1,default:void 0},disabled:{type:Boolean,required:!1},value:{type:null,required:!1,default:`on`},id:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,i=t,{forwardRef:o,currentElement:s}=W(),l=zn(null),d=U(n,`modelValue`,i,{defaultValue:n.defaultValue,passive:n.modelValue===void 0}),f=u(()=>l?.disabled.value||n.disabled),p=u(()=>V(l?.modelValue.value)?d.value===`indeterminate`?`indeterminate`:d.value:Be(l.modelValue.value,n.value));function m(){if(V(l?.modelValue.value))d.value=Vn(d.value)?!0:!d.value;else{let e=[...l.modelValue.value||[]];if(Be(e,n.value)){let t=e.findIndex(e=>_e(e,n.value));e.splice(t,1)}else e.push(n.value);l.modelValue.value=e}}let h=st(s),g=u(()=>n.id&&s.value?document.querySelector(`[for="${n.id}"]`)?.innerText:void 0);return Wn({disabled:f,state:p}),(e,t)=>(N(),w(le(a(l)?.rovingFocus.value?a(Fn):a(q)),M(e.$attrs,{id:e.id,ref:a(o),role:`checkbox`,"as-child":e.asChild,as:e.as,type:e.as===`button`?`button`:void 0,"aria-checked":a(Vn)(p.value)?`mixed`:p.value,"aria-required":e.required,"aria-label":e.$attrs[`aria-label`]||g.value,"data-state":a(Hn)(p.value),"data-disabled":f.value?``:void 0,disabled:f.value,focusable:a(l)?.rovingFocus.value?!f.value:void 0,onKeydown:c(b(()=>{},[`prevent`]),[`enter`]),onClick:m}),{default:r(()=>[k(e.$slots,`default`,{modelValue:a(d),state:p.value}),a(h)&&e.name&&!a(l)?(N(),w(a(Rn),{key:0,type:`checkbox`,checked:!!p.value,name:e.name,value:e.value,disabled:f.value,required:e.required},null,8,[`checked`,`name`,`value`,`disabled`,`required`])):O(`v-if`,!0)]),_:3},16,[`id`,`as-child`,`as`,`type`,`aria-checked`,`aria-required`,`aria-label`,`data-state`,`data-disabled`,`disabled`,`focusable`,`onKeydown`]))}}),Kn=F({__name:`CheckboxIndicator`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let{forwardRef:t}=W(),n=Un();return(e,i)=>(N(),w(a(Tt),{present:e.forceMount||a(Vn)(a(n).state.value)||a(n).state.value===!0},{default:r(()=>[A(a(q),M({ref:a(t),"data-state":a(Hn)(a(n).state.value),"data-disabled":a(n).disabled.value?``:void 0,style:{pointerEvents:`none`},"as-child":e.asChild,as:e.as},e.$attrs),{default:r(()=>[k(e.$slots,`default`)]),_:3},16,[`data-state`,`data-disabled`,`as-child`,`as`])]),_:3},8,[`present`]))}}),[qn,Jn]=z(`PopperRoot`),Yn=F({inheritAttrs:!1,__name:`PopperRoot`,setup(e){let t=p();return Jn({anchor:t,onAnchorChange:e=>t.value=e}),(e,t)=>k(e.$slots,`default`)}}),Xn=F({__name:`PopperAnchor`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,{forwardRef:n,currentElement:i}=W(),o=qn();return v(()=>{o.onAnchorChange(t.reference??i.value)}),(e,t)=>(N(),w(a(q),{ref:a(n),as:e.as,"as-child":e.asChild},{default:r(()=>[k(e.$slots,`default`)]),_:3},8,[`as`,`as-child`]))}}),Zn={key:0,d:`M0 0L6 6L12 0`},Qn={key:1,d:`M0 0L4.58579 4.58579C5.36683 5.36683 6.63316 5.36684 7.41421 4.58579L12 0`},$n=F({__name:`Arrow`,props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(e){let t=e;return W(),(e,n)=>(N(),w(a(q),M(t,{width:e.width,height:e.height,viewBox:e.asChild?void 0:`0 0 12 6`,preserveAspectRatio:e.asChild?void 0:`none`}),{default:r(()=>[k(e.$slots,`default`,{},()=>[e.rounded?(N(),h(`path`,Qn)):(N(),h(`path`,Zn))])]),_:3},16,[`width`,`height`,`viewBox`,`preserveAspectRatio`]))}});function er(e){return e!==null}function tr(e){return{name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=nr(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}}}function nr(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var rr={side:`bottom`,sideOffset:0,sideFlip:!0,align:`center`,alignOffset:0,alignFlip:!0,arrowPadding:0,avoidCollisions:!0,collisionBoundary:()=>[],collisionPadding:0,sticky:`partial`,hideWhenDetached:!1,positionStrategy:`fixed`,updatePositionStrategy:`optimized`,prioritizePosition:!1},[ir,ar]=z(`PopperContent`),or=F({inheritAttrs:!1,__name:`PopperContent`,props:ee({side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},{...rr}),emits:[`placed`],setup(e,{emit:t}){let n=e,i=t,o=qn(),{forwardRef:s,currentElement:c}=W(),l=p(),d=p(),{width:f,height:m}=vt(d),g=u(()=>n.side+(n.align===`center`?``:`-${n.align}`)),_=u(()=>typeof n.collisionPadding==`number`?n.collisionPadding:{top:0,right:0,bottom:0,left:0,...n.collisionPadding}),y=u(()=>Array.isArray(n.collisionBoundary)?n.collisionBoundary:[n.collisionBoundary]),b=u(()=>({padding:_.value,boundary:y.value.filter(er),altBoundary:y.value.length>0})),x=u(()=>({mainAxis:n.sideFlip,crossAxis:n.alignFlip})),S=Se(()=>[we({mainAxis:n.sideOffset+m.value,alignmentAxis:n.alignOffset}),n.prioritizePosition&&n.avoidCollisions&&Me({...b.value,...x.value}),n.avoidCollisions&&Pe({mainAxis:!0,crossAxis:!!n.prioritizePosition,limiter:n.sticky===`partial`?Oe():void 0,...b.value}),!n.prioritizePosition&&n.avoidCollisions&&Me({...b.value,...x.value}),Le({...b.value,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--reka-popper-available-width`,`${n}px`),o.setProperty(`--reka-popper-available-height`,`${r}px`),o.setProperty(`--reka-popper-anchor-width`,`${i}px`),o.setProperty(`--reka-popper-anchor-height`,`${a}px`)}}),d.value&&Ee({element:d.value,padding:n.arrowPadding}),tr({arrowWidth:f.value,arrowHeight:m.value}),n.hideWhenDetached&&ke({strategy:`referenceHidden`,...b.value})]),{floatingStyles:C,placement:w,isPositioned:E,middlewareData:D,update:O}=De(u(()=>n.reference??o.anchor.value),l,{strategy:n.positionStrategy,placement:g,whileElementsMounted:(...e)=>Ne(...e,{layoutShift:!n.disableUpdateOnLayoutShift,animationFrame:n.updatePositionStrategy===`always`}),middleware:S}),ee=u(()=>nr(w.value)[0]),te=u(()=>nr(w.value)[1]);v(()=>{E.value&&i(`placed`)});let j=u(()=>D.value.arrow?.centerOffset!==0),ne=p(``);return L(()=>{c.value&&(ne.value=window.getComputedStyle(c.value).zIndex)}),ar({placedSide:ee,onArrowChange:e=>d.value=e,arrowX:u(()=>D.value.arrow?.x??0),arrowY:u(()=>D.value.arrow?.y??0),shouldHideArrow:j}),(e,t)=>(N(),h(`div`,{ref_key:`floatingRef`,ref:l,"data-reka-popper-content-wrapper":``,style:T({...a(C),transform:a(E)?a(C).transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:ne.value,"--reka-popper-transform-origin":[a(D).transformOrigin?.x,a(D).transformOrigin?.y].join(` `),...a(D).hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}})},[A(a(q),M({ref:a(s)},e.$attrs,{"as-child":n.asChild,as:e.as,"data-side":ee.value,"data-align":te.value,style:{animation:a(E)?void 0:`none`}}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16,[`as-child`,`as`,`data-side`,`data-align`,`style`])],4))}}),sr={top:`bottom`,right:`left`,bottom:`top`,left:`right`},cr=F({inheritAttrs:!1,__name:`PopperArrow`,props:{width:{type:Number,required:!1},height:{type:Number,required:!1},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(e){let{forwardRef:t}=W(),n=ir(),i=u(()=>sr[n.placedSide.value]);return(e,o)=>(N(),h(`span`,{ref:e=>{a(n).onArrowChange(e)},style:T({position:`absolute`,left:a(n).arrowX?.value?`${a(n).arrowX?.value}px`:void 0,top:a(n).arrowY?.value?`${a(n).arrowY?.value}px`:void 0,[i.value]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[a(n).placedSide.value],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[a(n).placedSide.value],visibility:a(n).shouldHideArrow.value?`hidden`:void 0})},[A($n,M(e.$attrs,{ref:a(t),style:{display:`block`},as:e.as,"as-child":e.asChild,rounded:e.rounded,width:e.width,height:e.height}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16,[`as`,`as-child`,`rounded`,`width`,`height`])],4))}});function lr(e){let t=He({nonce:p()});return u(()=>e?.value||t.nonce?.value)}var[ur,dr]=z(`PopoverRoot`),fr=F({__name:`PopoverRoot`,props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},modal:{type:Boolean,required:!1,default:!1}},emits:[`update:open`],setup(e,{emit:t}){let n=e,i=t,{modal:o}=y(n),s=U(n,`open`,i,{defaultValue:n.defaultOpen,passive:n.open===void 0});return dr({contentId:``,triggerId:``,modal:o,open:s,onOpenChange:e=>{s.value=e},onOpenToggle:()=>{s.value=!s.value},triggerElement:p(),hasCustomAnchor:p(!1)}),(e,t)=>(N(),w(a(Yn),null,{default:r(()=>[k(e.$slots,`default`,{open:a(s),close:()=>s.value=!1})]),_:3}))}}),pr=F({__name:`PopoverContentImpl`,props:{trapFocus:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,o=ct(fe(n,`trapFocus`,`disableOutsidePointerEvents`)),{forwardRef:s}=W(),c=ur();return at(),(e,t)=>(N(),w(a(Zt),{"as-child":``,loop:``,trapped:e.trapFocus,onMountAutoFocus:t[5]||=e=>i(`openAutoFocus`,e),onUnmountAutoFocus:t[6]||=e=>i(`closeAutoFocus`,e)},{default:r(()=>[A(a(Lt),{"as-child":``,"disable-outside-pointer-events":e.disableOutsidePointerEvents,onPointerDownOutside:t[0]||=e=>i(`pointerDownOutside`,e),onInteractOutside:t[1]||=e=>i(`interactOutside`,e),onEscapeKeyDown:t[2]||=e=>i(`escapeKeyDown`,e),onFocusOutside:t[3]||=e=>i(`focusOutside`,e),onDismiss:t[4]||=e=>a(c).onOpenChange(!1)},{default:r(()=>[A(a(or),M(a(o),{id:a(c).contentId,ref:a(s),"data-state":a(c).open.value?`open`:`closed`,"aria-labelledby":a(c).triggerId,style:{"--reka-popover-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-popover-content-available-width":`var(--reka-popper-available-width)`,"--reka-popover-content-available-height":`var(--reka-popper-available-height)`,"--reka-popover-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-popover-trigger-height":`var(--reka-popper-anchor-height)`},role:`dialog`}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16,[`id`,`data-state`,`aria-labelledby`])]),_:3},8,[`disable-outside-pointer-events`])]),_:3},8,[`trapped`]))}}),mr=F({__name:`PopoverContentModal`,props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,o=ur(),s=p(!1);$e(!0);let c=G(n,i),{forwardRef:l,currentElement:u}=W();return gt(u),(e,t)=>(N(),w(pr,M(a(c),{ref:a(l),"trap-focus":a(o).open.value,"disable-outside-pointer-events":``,onCloseAutoFocus:t[0]||=b(e=>{i(`closeAutoFocus`,e),s.value||a(o).triggerElement.value?.focus()},[`prevent`]),onPointerDownOutside:t[1]||=e=>{i(`pointerDownOutside`,e);let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;s.value=t.button===2||n},onFocusOutside:t[2]||=b(()=>{},[`prevent`])}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16,[`trap-focus`]))}}),hr=F({__name:`PopoverContentNonModal`,props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,o=ur(),s=p(!1),c=p(!1),l=G(n,i);return(e,t)=>(N(),w(pr,M(a(l),{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:t[0]||=e=>{i(`closeAutoFocus`,e),e.defaultPrevented||(s.value||a(o).triggerElement.value?.focus(),e.preventDefault()),s.value=!1,c.value=!1},onInteractOutside:t[1]||=async e=>{i(`interactOutside`,e),e.defaultPrevented||(s.value=!0,e.detail.originalEvent.type===`pointerdown`&&(c.value=!0));let t=e.target;a(o).triggerElement.value?.contains(t)&&e.preventDefault(),e.detail.originalEvent.type===`focusin`&&c.value&&e.preventDefault()}}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))}}),gr=F({__name:`PopoverContent`,props:{forceMount:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,o=ur(),s=G(n,i),{forwardRef:c}=W();return o.contentId||=K(void 0,`reka-popover-content`),(e,t)=>(N(),w(a(Tt),{present:e.forceMount||a(o).open.value},{default:r(()=>[a(o).modal.value?(N(),w(mr,M({key:0},a(s),{ref:a(c)}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16)):(N(),w(hr,M({key:1},a(s),{ref:a(c)}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),_r=F({__name:`PopoverPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(N(),w(a(dn),l(P(t)),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))}}),vr=F({__name:`PopoverTrigger`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=ur(),{forwardRef:i,currentElement:o}=W();return n.triggerId||=K(void 0,`reka-popover-trigger`),j(()=>{n.triggerElement.value=o.value}),(e,o)=>(N(),w(le(a(n).hasCustomAnchor.value?a(q):a(Xn)),{"as-child":``},{default:r(()=>[A(a(q),{id:a(n).triggerId,ref:a(i),type:e.as===`button`?`button`:void 0,"aria-haspopup":`dialog`,"aria-expanded":a(n).open.value,"aria-controls":a(n).contentId,"data-state":a(n).open.value?`open`:`closed`,as:e.as,"as-child":t.asChild,onClick:a(n).onOpenToggle},{default:r(()=>[k(e.$slots,`default`)]),_:3},8,[`id`,`type`,`aria-expanded`,`aria-controls`,`data-state`,`as`,`as-child`,`onClick`])]),_:3}))}}),yr=F({__name:`Label`,props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`label`}},setup(e){let t=e;return W(),(e,n)=>(N(),w(a(q),M(t,{onMousedown:n[0]||=e=>{!e.defaultPrevented&&e.detail>1&&e.preventDefault()}}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))}}),[br,xr]=z(`PaginationRoot`),Sr=F({__name:`PaginationRoot`,props:{page:{type:Number,required:!1},defaultPage:{type:Number,required:!1,default:1},itemsPerPage:{type:Number,required:!0},total:{type:Number,required:!1,default:0},siblingCount:{type:Number,required:!1,default:2},disabled:{type:Boolean,required:!1},showEdges:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`nav`}},emits:[`update:page`],setup(e,{emit:t}){let n=e,i=t,{siblingCount:o,disabled:s,showEdges:c}=y(n);W();let l=U(n,`page`,i,{defaultValue:n.defaultPage,passive:n.page===void 0}),d=u(()=>Math.max(1,Math.ceil(n.total/(n.itemsPerPage||1))));return xr({page:l,onPageChange(e){l.value=e},pageCount:d,siblingCount:o,disabled:s,showEdges:c}),(e,t)=>(N(),w(a(q),{as:e.as,"as-child":e.asChild},{default:r(()=>[k(e.$slots,`default`,{page:a(l),pageCount:d.value})]),_:3},8,[`as`,`as-child`]))}});function Q(e,t){let n=t-e+1;return Array.from({length:n},(t,n)=>n+e)}function Cr(e){return e.map(e=>typeof e==`number`?{type:`page`,value:e}:{type:`ellipsis`})}var wr=`ellipsis`;function Tr(e,t,n,r){let i=t,a=Math.max(e-n,1),o=Math.min(e+n,i);if(r){let e=Math.min(2*n+5,t)-2,r=a>3&&Math.abs(i-e-1+1)>2&&Math.abs(a-1)>2,s=o2&&Math.abs(i-o)>2;return!r&&s?[...Q(1,e),wr,i]:r&&!s?[1,wr,...Q(i-e+1,i)]:r&&s?[1,wr,...Q(a,o),wr,i]:Q(1,i)}else{let r=n*2+1;return tCr(Tr(n.page.value,n.pageCount.value,n.siblingCount.value,n.showEdges.value)));return(e,n)=>(N(),w(a(q),l(P(t)),{default:r(()=>[k(e.$slots,`default`,{items:i.value})]),_:3},16))}}),Dr=F({__name:`PaginationListItem`,props:{value:{type:Number,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(t){let n=t;W();let i=br(),o=u(()=>i.page.value===n.value),s=u(()=>i.disabled.value);return(t,c)=>(N(),w(a(q),M(n,{"data-type":`page`,"aria-label":`Page ${t.value}`,"aria-current":o.value?`page`:void 0,"data-selected":o.value?`true`:void 0,disabled:s.value,type:t.as===`button`?`button`:void 0,onClick:c[0]||=e=>!s.value&&a(i).onPageChange(t.value)}),{default:r(()=>[k(t.$slots,`default`,{},()=>[e(C(t.value),1)])]),_:3},16,[`aria-label`,`aria-current`,`data-selected`,`disabled`,`type`]))}}),Or=F({__name:`PaginationNext`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(t){let n=t;W();let i=br(),o=u(()=>i.page.value===i.pageCount.value||i.disabled.value);return(t,s)=>(N(),w(a(q),M(n,{"aria-label":`Next Page`,type:t.as===`button`?`button`:void 0,disabled:o.value,onClick:s[0]||=e=>!o.value&&a(i).onPageChange(a(i).page.value+1)}),{default:r(()=>[k(t.$slots,`default`,{},()=>[s[1]||=e(`Next page`)])]),_:3},16,[`type`,`disabled`]))}}),kr=F({__name:`PaginationPrev`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(t){let n=t;W();let i=br(),o=u(()=>i.page.value===1||i.disabled.value);return(t,s)=>(N(),w(a(q),M(n,{"aria-label":`Previous Page`,type:t.as===`button`?`button`:void 0,disabled:o.value,onClick:s[0]||=e=>!o.value&&a(i).onPageChange(a(i).page.value-1)}),{default:r(()=>[k(t.$slots,`default`,{},()=>[s[1]||=e(`Prev page`)])]),_:3},16,[`type`,`disabled`]))}}),Ar=100,[jr,Mr]=z(`ProgressRoot`),Nr=e=>typeof e==`number`;function Pr(e,t){return V(e)||Nr(e)&&!Number.isNaN(e)&&e<=t&&e>=0?e:(console.error(`Invalid prop \`value\` of value \`${e}\` supplied to \`ProgressRoot\`. The \`value\` prop must be: - - a positive number - - less than the value passed to \`max\` (or ${Ar} if no \`max\` prop is set) - - \`null\` or \`undefined\` if the progress is indeterminate. - -Defaulting to \`null\`.`),null)}function Fr(e){return Nr(e)&&!Number.isNaN(e)&&e>0?e:(console.error(`Invalid prop \`max\` of value \`${e}\` supplied to \`ProgressRoot\`. Only numbers greater than 0 are valid max values. Defaulting to \`${Ar}\`.`),Ar)}var Ir=F({__name:`ProgressRoot`,props:{modelValue:{type:[Number,null],required:!1},max:{type:Number,required:!1,default:Ar},getValueLabel:{type:Function,required:!1,default:(e,t)=>Nr(e)?`${Math.round(e/t*Ar)}%`:void 0},getValueText:{type:Function,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`,`update:max`],setup(e,{emit:t}){let i=e,o=t;W();let s=U(i,`modelValue`,o,{passive:i.modelValue===void 0}),c=U(i,`max`,o,{passive:i.max===void 0});n(()=>s.value,async e=>{let t=Pr(e,i.max);t!==e&&(await I(),s.value=t)},{immediate:!0}),n(()=>i.max,e=>{let t=Fr(i.max);t!==e&&(c.value=t)},{immediate:!0});let l=u(()=>V(s.value)?`indeterminate`:s.value===c.value?`complete`:`loading`);return Mr({modelValue:s,max:c,progressState:l}),(e,t)=>(N(),w(a(q),{"as-child":e.asChild,as:e.as,"aria-valuemax":a(c),"aria-valuemin":0,"aria-valuenow":Nr(a(s))?a(s):void 0,"aria-valuetext":e.getValueText?.(a(s),a(c)),"aria-label":e.getValueLabel(a(s),a(c)),role:`progressbar`,"data-state":l.value,"data-value":a(s)??void 0,"data-max":a(c)},{default:r(()=>[k(e.$slots,`default`,{modelValue:a(s)})]),_:3},8,[`as-child`,`as`,`aria-valuemax`,`aria-valuenow`,`aria-valuetext`,`aria-label`,`data-state`,`data-value`,`data-max`]))}}),Lr=F({__name:`ProgressIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,n=jr();return W(),(e,i)=>(N(),w(a(q),M(t,{"data-state":a(n).progressState.value,"data-value":a(n).modelValue?.value??void 0,"data-max":a(n).max.value}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16,[`data-state`,`data-value`,`data-max`]))}}),Rr=[` `,`Enter`,`ArrowUp`,`ArrowDown`],zr=[` `,`Enter`];function Br(e,t,n){return e===void 0?!1:Array.isArray(e)?e.some(e=>Vr(e,t,n)):Vr(e,t,n)}function Vr(e,t,n){return e===void 0||t===void 0?!1:typeof e==`string`?e===t:typeof n==`function`?n(e,t):typeof n==`string`?e?.[n]===t?.[n]:_e(e,t)}function Hr(e){return e==null||e===``||Array.isArray(e)&&e.length===0}var Ur={key:0,value:``},[$,Wr]=z(`SelectRoot`),Gr=F({inheritAttrs:!1,__name:`SelectRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},by:{type:[String,Function],required:!1},dir:{type:String,required:!1},multiple:{type:Boolean,required:!1},autocomplete:{type:String,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`,`update:open`],setup(e,{emit:t}){let n=e,i=t,{required:s,disabled:c,multiple:l,dir:d}=y(n),f=U(n,`modelValue`,i,{defaultValue:n.defaultValue??(l.value?[]:void 0),passive:n.modelValue===void 0,deep:!0}),m=U(n,`open`,i,{defaultValue:n.defaultOpen,passive:n.open===void 0}),g=p(),_=p(),v=p({x:0,y:0}),b=u(()=>l.value&&Array.isArray(f.value)?f.value?.length===0:V(f.value));Z({isProvider:!0});let x=nt(d),S=st(g),C=p(new Set),T=u(()=>Array.from(C.value).map(e=>e.value).join(`;`));function E(e){if(l.value){let t=Array.isArray(f.value)?[...f.value]:[],r=t.findIndex(t=>Vr(t,e,n.by));r===-1?t.push(e):t.splice(r,1),f.value=[...t]}else f.value=e}function D(e){return Array.from(C.value).find(t=>Br(e,t.value,n.by))}return Wr({triggerElement:g,onTriggerChange:e=>{g.value=e},valueElement:_,onValueElementChange:e=>{_.value=e},contentId:``,modelValue:f,onValueChange:E,by:n.by,open:m,multiple:l,required:s,onOpenChange:e=>{m.value=e},dir:x,triggerPointerDownPosRef:v,disabled:c,isEmptyModelValue:b,optionsSet:C,onOptionAdd:e=>{let t=D(e.value);t&&C.value.delete(t),C.value.add(e)},onOptionRemove:e=>{let t=D(e.value);t&&C.value.delete(t)}}),(e,t)=>(N(),w(a(Yn),null,{default:r(()=>[k(e.$slots,`default`,{modelValue:a(f),open:a(m)}),a(S)?(N(),w(Kr,{key:T.value,"aria-hidden":`true`,tabindex:`-1`,multiple:a(l),required:a(s),name:e.name,autocomplete:e.autocomplete,disabled:a(c),value:a(f)},{default:r(()=>[a(V)(a(f))?(N(),h(`option`,Ur)):O(`v-if`,!0),(N(!0),h(o,null,ne(Array.from(C.value),e=>(N(),h(`option`,M({key:e.value??``},{ref_for:!0},e),null,16))),128))]),_:1},8,[`multiple`,`required`,`name`,`autocomplete`,`disabled`,`value`])):O(`v-if`,!0)]),_:3}))}}),Kr=F({__name:`BubbleSelect`,props:{autocomplete:{type:String,required:!1},autofocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},form:{type:String,required:!1},multiple:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},size:{type:Number,required:!1},value:{type:null,required:!1}},setup(e){let t=e,i=p(),o=$();n(()=>t.value,(e,t)=>{let n=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(e!==t&&r&&i.value){let t=new Event(`change`,{bubbles:!0});r.call(i.value,e),i.value.dispatchEvent(t)}});function s(e){o.onValueChange(e.target.value)}return(e,n)=>(N(),w(a(In),{"as-child":``},{default:r(()=>[E(`select`,M({ref_key:`selectElement`,ref:i},t,{onInput:s}),[k(e.$slots,`default`)],16)]),_:3}))}}),qr=F({__name:`SelectPopperPosition`,props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:`start`},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1,default:10},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=ct(e);return(e,n)=>(N(),w(a(or),M(a(t),{style:{boxSizing:`border-box`,"--reka-select-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-select-content-available-width":`var(--reka-popper-available-width)`,"--reka-select-content-available-height":`var(--reka-popper-available-height)`,"--reka-select-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-select-trigger-height":`var(--reka-popper-anchor-height)`}}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))}}),Jr={onViewportChange:()=>{},itemTextRefCallback:()=>{},itemRefCallback:()=>{}},[Yr,Xr]=z(`SelectContent`),Zr=F({__name:`SelectContentImpl`,props:{position:{type:String,required:!1,default:`item-aligned`},bodyLock:{type:Boolean,required:!1,default:!0},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:`start`},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let i=e,o=t,s=$();at(),$e(i.bodyLock);let{CollectionSlot:c,getItems:l}=Z(),d=p();gt(d);let{search:f,handleTypeaheadSearch:m}=bt(),h=p(),g=p(),_=p(),v=p(!1),y=p(!1),x=p(!1);function S(){g.value&&d.value&&nn([g.value,d.value])}n(v,()=>{S()});let{onOpenChange:C,triggerPointerDownPosRef:T}=s;L(e=>{if(!d.value)return;let t={x:0,y:0},n=e=>{t={x:Math.abs(Math.round(e.pageX)-(T.value?.x??0)),y:Math.abs(Math.round(e.pageY)-(T.value?.y??0))}},r=e=>{e.pointerType!==`touch`&&(t.x<=10&&t.y<=10?e.preventDefault():d.value?.contains(e.target)||C(!1),document.removeEventListener(`pointermove`,n),T.value=null)};T.value!==null&&(document.addEventListener(`pointermove`,n),document.addEventListener(`pointerup`,r,{capture:!0,once:!0})),e(()=>{document.removeEventListener(`pointermove`,n),document.removeEventListener(`pointerup`,r,{capture:!0})})});function E(e){let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&m(e.key,l()),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=[...l().map(e=>e.ref)];if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>nn(t)),e.preventDefault()}}let D=ct(u(()=>i.position===`popper`?i:{}).value);return Xr({content:d,viewport:h,onViewportChange:e=>{h.value=e},itemRefCallback:(e,t,n)=>{let r=!y.value&&!n,i=Br(s.modelValue.value,t,s.by);if(s.multiple.value){if(x.value)return;(i||r)&&(g.value=e,i&&(x.value=!0))}else (i||r)&&(g.value=e);r&&(y.value=!0)},selectedItem:g,selectedItemText:_,onItemLeave:()=>{d.value?.focus()},itemTextRefCallback:(e,t,n)=>{let r=!y.value&&!n;(Br(s.modelValue.value,t,s.by)||r)&&(_.value=e)},focusSelectedItem:S,position:i.position,isPositioned:v,searchRef:f}),(e,t)=>(N(),w(a(c),null,{default:r(()=>[A(a(Zt),{"as-child":``,onMountAutoFocus:t[6]||=b(()=>{},[`prevent`]),onUnmountAutoFocus:t[7]||=e=>{o(`closeAutoFocus`,e),!e.defaultPrevented&&(a(s).triggerElement.value?.focus({preventScroll:!0}),e.preventDefault())}},{default:r(()=>[A(a(Lt),{"as-child":``,"disable-outside-pointer-events":``,onFocusOutside:t[2]||=b(()=>{},[`prevent`]),onDismiss:t[3]||=e=>a(s).onOpenChange(!1),onEscapeKeyDown:t[4]||=e=>o(`escapeKeyDown`,e),onPointerDownOutside:t[5]||=e=>o(`pointerDownOutside`,e)},{default:r(()=>[(N(),w(le(e.position===`popper`?qr:ei),M({...e.$attrs,...a(D)},{id:a(s).contentId,ref:e=>{let t=a(H)(e);t?.hasAttribute(`data-reka-popper-content-wrapper`)?d.value=t.firstElementChild:d.value=t},role:`listbox`,"data-state":a(s).open.value?`open`:`closed`,dir:a(s).dir.value,style:{display:`flex`,flexDirection:`column`,outline:`none`},onContextmenu:t[0]||=b(()=>{},[`prevent`]),onPlaced:t[1]||=e=>v.value=!0,onKeydown:E}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16,[`id`,`data-state`,`dir`,`onKeydown`]))]),_:3})]),_:3})]),_:3}))}}),[Qr,$r]=z(`SelectItemAlignedPosition`),ei=F({inheritAttrs:!1,__name:`SelectItemAlignedPosition`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`placed`],setup(e,{emit:t}){let n=e,i=t,{getItems:o}=Z(),s=$(),c=Yr(),l=p(!1),u=p(!0),d=p(),{forwardRef:f,currentElement:m}=W(),{viewport:g,selectedItem:_,selectedItemText:v,focusSelectedItem:y}=c;function b(){if(s.triggerElement.value&&s.valueElement.value&&d.value&&m.value&&g?.value&&_?.value&&v?.value){let e=s.triggerElement.value.getBoundingClientRect(),t=m.value.getBoundingClientRect(),n=s.valueElement.value.getBoundingClientRect(),r=v.value.getBoundingClientRect();if(s.dir.value!==`rtl`){let i=r.left-t.left,a=n.left-i,o=e.left-a,s=e.width+o,c=Math.max(s,t.width),l=window.innerWidth-10,u=Re(a,10,Math.max(10,l-c));d.value.style.minWidth=`${s}px`,d.value.style.left=`${u}px`}else{let i=t.right-r.right,a=window.innerWidth-n.right-i,o=window.innerWidth-e.right-a,s=e.width+o,c=Math.max(s,t.width),l=window.innerWidth-10,u=Re(a,10,Math.max(10,l-c));d.value.style.minWidth=`${s}px`,d.value.style.right=`${u}px`}let a=o().map(e=>e.ref),c=window.innerHeight-20,u=g.value.scrollHeight,f=window.getComputedStyle(m.value),p=Number.parseInt(f.borderTopWidth,10),h=Number.parseInt(f.paddingTop,10),y=Number.parseInt(f.borderBottomWidth,10),b=Number.parseInt(f.paddingBottom,10),x=p+h+u+b+y,S=Math.min(_.value.offsetHeight*5,x),C=window.getComputedStyle(g.value),w=Number.parseInt(C.paddingTop,10),T=Number.parseInt(C.paddingBottom,10),E=e.top+e.height/2-10,D=c-E,O=_.value.offsetHeight/2,k=_.value.offsetTop+O,ee=p+h+k,te=x-ee;if(ee<=E){let e=_.value===a[a.length-1];d.value.style.bottom=`0px`;let t=m.value.clientHeight-g.value.offsetTop-g.value.offsetHeight,n=ee+Math.max(D,O+(e?T:0)+t+y);d.value.style.height=`${n}px`}else{let e=_.value===a[0];d.value.style.top=`0px`;let t=Math.max(E,p+g.value.offsetTop+(e?w:0)+O)+te;d.value.style.height=`${t}px`,g.value.scrollTop=ee-E+g.value.offsetTop}d.value.style.margin=`10px 0`,d.value.style.minHeight=`${S}px`,d.value.style.maxHeight=`${c}px`,i(`placed`),requestAnimationFrame(()=>l.value=!0)}}let x=p(``);j(async()=>{await I(),b(),m.value&&(x.value=window.getComputedStyle(m.value).zIndex)});function S(e){e&&u.value===!0&&(b(),y?.(),u.value=!1)}return Ze(s.triggerElement,()=>{b()}),$r({contentWrapper:d,shouldExpandOnScrollRef:l,onScrollButtonChange:S}),(e,t)=>(N(),h(`div`,{ref_key:`contentWrapperElement`,ref:d,style:T({display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:x.value})},[A(a(q),M({ref:a(f),style:{boxSizing:`border-box`,maxHeight:`100%`}},{...e.$attrs,...n}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16)],4))}}),ti=F({inheritAttrs:!1,__name:`SelectProvider`,props:{context:{type:Object,required:!0}},setup(e){return Wr(e.context),Xr(Jr),(e,t)=>k(e.$slots,`default`)}}),ni={key:1},ri=F({inheritAttrs:!1,__name:`SelectContent`,props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let i=e,o=G(i,t),s=$(),c=p();j(()=>{c.value=new DocumentFragment});let d=p(),m=u(()=>i.forceMount||s.open.value),g=p(m.value);return n(m,()=>{setTimeout(()=>g.value=m.value)}),(e,t)=>m.value||g.value||d.value?.present?(N(),w(a(Tt),{key:0,ref_key:`presenceRef`,ref:d,present:m.value},{default:r(()=>[A(Zr,l(P({...a(o),...e.$attrs})),{default:r(()=>[k(e.$slots,`default`)]),_:3},16)]),_:3},8,[`present`])):c.value?(N(),h(`div`,ni,[(N(),w(f,{to:c.value},[A(ti,{context:a(s)},{default:r(()=>[k(e.$slots,`default`)]),_:3},8,[`context`])],8,[`to`]))])):O(`v-if`,!0)}}),ii=F({__name:`SelectIcon`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(t){return(t,n)=>(N(),w(a(q),{"aria-hidden":`true`,as:t.as,"as-child":t.asChild},{default:r(()=>[k(t.$slots,`default`,{},()=>[n[0]||=e(`▼`)])]),_:3},8,[`as`,`as-child`]))}}),[ai,oi]=z(`SelectItem`),si=F({__name:`SelectItem`,props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(e,{emit:t}){let n=e,i=t,{disabled:o}=y(n),s=$(),c=Yr(),{forwardRef:l,currentElement:d}=W(),{CollectionItem:f}=Z(),m=u(()=>Br(s.modelValue?.value,n.value,s.by)),h=p(!1),g=p(n.textValue??``),_=K(void 0,`reka-select-item-text`);async function v(e){e.defaultPrevented||ze(`select.select`,x,{originalEvent:e,value:n.value})}async function x(e){await I(),i(`select`,e),!e.defaultPrevented&&(o.value||(s.onValueChange(n.value),s.multiple.value||s.onOpenChange(!1)))}async function S(e){await I(),!e.defaultPrevented&&(o.value?c.onItemLeave?.():e.currentTarget?.focus({preventScroll:!0}))}async function C(e){await I(),!e.defaultPrevented&&e.currentTarget===B()&&c.onItemLeave?.()}async function T(e){await I(),!e.defaultPrevented&&(c.searchRef?.value!==``&&e.key===` `||(zr.includes(e.key)&&v(e),e.key===` `&&e.preventDefault()))}if(n.value===``)throw Error(`A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return j(()=>{d.value&&c.itemRefCallback(d.value,n.value,n.disabled)}),oi({value:n.value,disabled:o,textId:_,isSelected:m,onItemTextChange:e=>{g.value=((g.value||e?.textContent)??``).trim()}}),(e,t)=>(N(),w(a(f),{value:{textValue:g.value}},{default:r(()=>[A(a(q),{ref:a(l),role:`option`,"aria-labelledby":a(_),"data-highlighted":h.value?``:void 0,"aria-selected":m.value,"data-state":m.value?`checked`:`unchecked`,"aria-disabled":a(o)||void 0,"data-disabled":a(o)?``:void 0,tabindex:a(o)?void 0:-1,as:e.as,"as-child":e.asChild,onFocus:t[0]||=e=>h.value=!0,onBlur:t[1]||=e=>h.value=!1,onPointerup:v,onPointerdown:t[2]||=e=>{e.currentTarget.focus({preventScroll:!0})},onTouchend:t[3]||=b(()=>{},[`prevent`,`stop`]),onPointermove:S,onPointerleave:C,onKeydown:T},{default:r(()=>[k(e.$slots,`default`)]),_:3},8,[`aria-labelledby`,`data-highlighted`,`aria-selected`,`data-state`,`aria-disabled`,`data-disabled`,`tabindex`,`as`,`as-child`])]),_:3},8,[`value`]))}}),ci=F({__name:`SelectItemIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,n=ai();return(e,i)=>a(n).isSelected.value?(N(),w(a(q),M({key:0,"aria-hidden":`true`},t),{default:r(()=>[k(e.$slots,`default`)]),_:3},16)):O(`v-if`,!0)}}),li=F({inheritAttrs:!1,__name:`SelectItemText`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,n=$(),i=Yr(),o=ai(),{forwardRef:s,currentElement:c}=W(),l=u(()=>({value:o.value,disabled:o.disabled.value,textContent:c.value?.textContent??o.value?.toString()??``}));return j(()=>{c.value&&(o.onItemTextChange(c.value),i.itemTextRefCallback(c.value,o.value,o.disabled.value),n.onOptionAdd(l.value))}),se(()=>{n.onOptionRemove(l.value)}),(e,n)=>(N(),w(a(q),M({id:a(o).textId,ref:a(s)},{...t,...e.$attrs}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16,[`id`]))}}),ui=F({__name:`SelectPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(N(),w(a(dn),l(P(t)),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))}}),di=F({__name:`SelectScrollButtonImpl`,emits:[`autoScroll`],setup(e,{emit:t}){let n=t,{getItems:i}=Z(),o=Yr(),s=p(null);function c(){s.value!==null&&(window.clearInterval(s.value),s.value=null)}L(()=>{i().map(e=>e.ref).find(e=>e===B())?.scrollIntoView({block:`nearest`})});function l(){s.value===null&&(s.value=window.setInterval(()=>{n(`autoScroll`)},50))}function u(){o.onItemLeave?.(),s.value===null&&(s.value=window.setInterval(()=>{n(`autoScroll`)},50))}return te(()=>c()),(e,t)=>(N(),w(a(q),M({"aria-hidden":`true`,style:{flexShrink:0}},e.$parent?.$props,{onPointerdown:l,onPointermove:u,onPointerleave:t[0]||=()=>{c()}}),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))}}),fi=F({__name:`SelectScrollDownButton`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=Yr(),i=t.position===`item-aligned`?Qr():void 0,{forwardRef:o,currentElement:s}=W(),c=p(!1);return L(e=>{if(t.viewport?.value&&t.isPositioned?.value){let n=t.viewport.value;function r(){let e=n.scrollHeight-n.clientHeight;c.value=Math.ceil(n.scrollTop)n.removeEventListener(`scroll`,r))}}),n(s,()=>{s.value&&i?.onScrollButtonChange(s.value)}),(e,n)=>c.value?(N(),w(di,{key:0,ref:a(o),onAutoScroll:n[0]||=()=>{let{viewport:e,selectedItem:n}=a(t);e?.value&&n?.value&&(e.value.scrollTop=e.value.scrollTop+n.value.offsetHeight)}},{default:r(()=>[k(e.$slots,`default`)]),_:3},512)):O(`v-if`,!0)}}),pi=F({__name:`SelectScrollUpButton`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=Yr(),i=t.position===`item-aligned`?Qr():void 0,{forwardRef:o,currentElement:s}=W(),c=p(!1);return L(e=>{if(t.viewport?.value&&t.isPositioned?.value){let n=t.viewport.value;function r(){c.value=n.scrollTop>0}r(),n.addEventListener(`scroll`,r),e(()=>n.removeEventListener(`scroll`,r))}}),n(s,()=>{s.value&&i?.onScrollButtonChange(s.value)}),(e,n)=>c.value?(N(),w(di,{key:0,ref:a(o),onAutoScroll:n[0]||=()=>{let{viewport:e,selectedItem:n}=a(t);e?.value&&n?.value&&(e.value.scrollTop=e.value.scrollTop-n.value.offsetHeight)}},{default:r(()=>[k(e.$slots,`default`)]),_:3},512)):O(`v-if`,!0)}}),mi=F({__name:`SelectTrigger`,props:{disabled:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=$(),{forwardRef:i,currentElement:o}=W(),s=u(()=>n.disabled?.value||t.disabled);n.contentId||=K(void 0,`reka-select-content`),j(()=>{n.onTriggerChange(o.value)});let{getItems:c}=Z(),{search:l,handleTypeaheadSearch:d,resetTypeahead:f}=bt();function p(){s.value||(n.onOpenChange(!0),f())}function m(e){p(),n.triggerPointerDownPosRef.value={x:Math.round(e.pageX),y:Math.round(e.pageY)}}return(e,t)=>(N(),w(a(Xn),{"as-child":``,reference:e.reference},{default:r(()=>[A(a(q),{ref:a(i),role:`combobox`,type:e.as===`button`?`button`:void 0,"aria-controls":a(n).contentId,"aria-expanded":a(n).open.value||!1,"aria-required":a(n).required?.value,"aria-autocomplete":`none`,disabled:s.value,dir:a(n)?.dir.value,"data-state":a(n)?.open.value?`open`:`closed`,"data-disabled":s.value?``:void 0,"data-placeholder":a(Hr)(a(n).modelValue?.value)?``:void 0,"as-child":e.asChild,as:e.as,onClick:t[0]||=e=>{(e?.currentTarget)?.focus()},onPointerdown:t[1]||=e=>{if(e.pointerType===`touch`)return e.preventDefault();let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&(m(e),e.preventDefault())},onPointerup:t[2]||=b(e=>{e.pointerType===`touch`&&m(e)},[`prevent`]),onKeydown:t[3]||=e=>{let t=a(l)!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&t&&e.key===` `||(a(d)(e.key,a(c)()),a(Rr).includes(e.key)&&(p(),e.preventDefault()))}},{default:r(()=>[k(e.$slots,`default`)]),_:3},8,[`type`,`aria-controls`,`aria-expanded`,`aria-required`,`disabled`,`dir`,`data-state`,`data-disabled`,`data-placeholder`,`as-child`,`as`])]),_:3},8,[`reference`]))}}),hi=F({__name:`SelectValue`,props:{placeholder:{type:String,required:!1,default:``},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(t){let n=t,{forwardRef:i,currentElement:o}=W(),s=$();j(()=>{s.valueElement=o});let c=u(()=>{let e=[],t=Array.from(s.optionsSet.value),n=e=>t.find(t=>Br(e,t.value,s.by));return e=Array.isArray(s.modelValue.value)?s.modelValue.value.map(e=>n(e)?.textContent??``):[n(s.modelValue.value)?.textContent??``],e.filter(Boolean)}),l=u(()=>c.value.length?c.value.join(`, `):n.placeholder);return(t,o)=>(N(),w(a(q),{ref:a(i),as:t.as,"as-child":t.asChild,style:{pointerEvents:`none`},"data-placeholder":c.value.length?void 0:n.placeholder},{default:r(()=>[k(t.$slots,`default`,{selectedLabel:c.value,modelValue:a(s).modelValue.value},()=>[e(C(l.value),1)])]),_:3},8,[`as`,`as-child`,`data-placeholder`]))}}),gi=F({__name:`SelectViewport`,props:{nonce:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let n=t,{nonce:i}=y(n),s=lr(i),c=Yr(),l=c.position===`item-aligned`?Qr():void 0,{forwardRef:u,currentElement:d}=W();j(()=>{c?.onViewportChange(d.value)});let f=p(0);function m(e){let t=e.currentTarget,{shouldExpandOnScrollRef:n,contentWrapper:r}=l??{};if(n?.value&&r?.value){let e=Math.abs(f.value-t.scrollTop);if(e>0){let n=window.innerHeight-20,i=Number.parseFloat(r.value.style.minHeight),a=Number.parseFloat(r.value.style.height),o=Math.max(i,a);if(o0?s:0,r.value.style.justifyContent=`flex-end`)}}}f.value=t.scrollTop}return(t,i)=>(N(),h(o,null,[A(a(q),M({ref:a(u),"data-reka-select-viewport":``,role:`presentation`},{...t.$attrs,...n},{style:{position:`relative`,flex:1,overflow:`hidden auto`},onScroll:m}),{default:r(()=>[k(t.$slots,`default`)]),_:3},16),A(a(q),{as:`style`,nonce:a(s)},{default:r(()=>i[0]||=[e(` /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-select-viewport] { scrollbar-width:none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } [data-reka-select-viewport]::-webkit-scrollbar { display: none; } `)]),_:1,__:[0]},8,[`nonce`])],64))}}),[_i,vi]=z(`TabsRoot`),yi=F({__name:`TabsRoot`,props:{defaultValue:{type:null,required:!1},orientation:{type:String,required:!1,default:`horizontal`},dir:{type:String,required:!1},activationMode:{type:String,required:!1,default:`automatic`},modelValue:{type:null,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,i=t,{orientation:o,unmountOnHide:s,dir:c}=y(n),l=nt(c);W();let u=U(n,`modelValue`,i,{defaultValue:n.defaultValue,passive:n.modelValue===void 0}),d=p();return vi({modelValue:u,changeModelValue:e=>{u.value=e},orientation:o,dir:l,unmountOnHide:s,activationMode:n.activationMode,baseId:K(void 0,`reka-tabs`),tabsList:d}),(e,t)=>(N(),w(a(q),{dir:a(l),"data-orientation":a(o),"as-child":e.asChild,as:e.as},{default:r(()=>[k(e.$slots,`default`,{modelValue:a(u)})]),_:3},8,[`dir`,`data-orientation`,`as-child`,`as`]))}});function bi(e,t){return`${e}-trigger-${t}`}function xi(e,t){return`${e}-content-${t}`}var Si=F({__name:`TabsContent`,props:{value:{type:[String,Number],required:!0},forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,{forwardRef:n}=W(),i=_i(),o=u(()=>bi(i.baseId,t.value)),s=u(()=>xi(i.baseId,t.value)),c=u(()=>t.value===i.modelValue.value),l=p(c.value);return j(()=>{requestAnimationFrame(()=>{l.value=!1})}),(e,t)=>(N(),w(a(Tt),{present:e.forceMount||c.value,"force-mount":``},{default:r(({present:t})=>[A(a(q),{id:s.value,ref:a(n),"as-child":e.asChild,as:e.as,role:`tabpanel`,"data-state":c.value?`active`:`inactive`,"data-orientation":a(i).orientation.value,"aria-labelledby":o.value,hidden:!t,tabindex:`0`,style:T({animationDuration:l.value?`0s`:void 0})},{default:r(()=>[!a(i).unmountOnHide.value||t?k(e.$slots,`default`,{key:0}):O(`v-if`,!0)]),_:2},1032,[`id`,`as-child`,`as`,`data-state`,`data-orientation`,`aria-labelledby`,`hidden`,`style`])]),_:3},8,[`present`]))}}),Ci=F({__name:`TabsList`,props:{loop:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let{loop:t}=y(e),{forwardRef:n,currentElement:i}=W(),o=_i();return o.tabsList=i,(e,i)=>(N(),w(a(Pn),{"as-child":``,orientation:a(o).orientation.value,dir:a(o).dir.value,loop:a(t)},{default:r(()=>[A(a(q),{ref:a(n),role:`tablist`,"as-child":e.asChild,as:e.as,"aria-orientation":a(o).orientation.value},{default:r(()=>[k(e.$slots,`default`)]),_:3},8,[`as-child`,`as`,`aria-orientation`])]),_:3},8,[`orientation`,`dir`,`loop`]))}}),wi=F({__name:`TabsTrigger`,props:{value:{type:[String,Number],required:!0},disabled:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,{forwardRef:n}=W(),i=_i(),o=u(()=>bi(i.baseId,t.value)),s=u(()=>xi(i.baseId,t.value)),l=u(()=>t.value===i.modelValue.value);return(e,t)=>(N(),w(a(Fn),{"as-child":``,focusable:!e.disabled,active:l.value},{default:r(()=>[A(a(q),{id:o.value,ref:a(n),role:`tab`,type:e.as===`button`?`button`:void 0,as:e.as,"as-child":e.asChild,"aria-selected":l.value?`true`:`false`,"aria-controls":s.value,"data-state":l.value?`active`:`inactive`,disabled:e.disabled,"data-disabled":e.disabled?``:void 0,"data-orientation":a(i).orientation.value,onMousedown:t[0]||=b(t=>{!e.disabled&&t.ctrlKey===!1?a(i).changeModelValue(e.value):t.preventDefault()},[`left`]),onKeydown:t[1]||=c(t=>a(i).changeModelValue(e.value),[`enter`,`space`]),onFocus:t[2]||=()=>{let t=a(i).activationMode!==`manual`;!l.value&&!e.disabled&&t&&a(i).changeModelValue(e.value)}},{default:r(()=>[k(e.$slots,`default`)]),_:3},8,[`id`,`type`,`as`,`as-child`,`aria-selected`,`aria-controls`,`data-state`,`disabled`,`data-disabled`,`data-orientation`])]),_:3},8,[`focusable`,`active`]))}}),Ti=F({__name:`TooltipArrow`,props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(e){let t=e;return W(),(e,n)=>(N(),w(a(cr),l(P(t)),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))}}),[Ei,Di]=z(`TooltipProvider`),Oi=F({inheritAttrs:!1,__name:`TooltipProvider`,props:{delayDuration:{type:Number,required:!1,default:700},skipDelayDuration:{type:Number,required:!1,default:300},disableHoverableContent:{type:Boolean,required:!1,default:!1},disableClosingTrigger:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:!1}},setup(e){let{delayDuration:t,skipDelayDuration:n,disableHoverableContent:r,disableClosingTrigger:i,ignoreNonKeyboardFocus:a,disabled:o}=y(e);W();let s=p(!0),c=p(!1),{start:l,stop:u}=he(()=>{s.value=!0},n,{immediate:!1});return Di({isOpenDelayed:s,delayDuration:t,onOpen(){u(),s.value=!1},onClose(){l()},isPointerInTransitRef:c,disableHoverableContent:r,disableClosingTrigger:i,disabled:o,ignoreNonKeyboardFocus:a}),(e,t)=>k(e.$slots,`default`)}}),ki=`tooltip.open`,[Ai,ji]=z(`TooltipRoot`),Mi=F({__name:`TooltipRoot`,props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},delayDuration:{type:Number,required:!1,default:void 0},disableHoverableContent:{type:Boolean,required:!1,default:void 0},disableClosingTrigger:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1,default:void 0},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:void 0}},emits:[`update:open`],setup(e,{emit:t}){let i=e,o=t;W();let s=Ei(),c=u(()=>i.disableHoverableContent??s.disableHoverableContent.value),l=u(()=>i.disableClosingTrigger??s.disableClosingTrigger.value),d=u(()=>i.disabled??s.disabled.value),f=u(()=>i.delayDuration??s.delayDuration.value),m=u(()=>i.ignoreNonKeyboardFocus??s.ignoreNonKeyboardFocus.value),h=U(i,`open`,o,{defaultValue:i.defaultOpen,passive:i.open===void 0});n(h,e=>{s.onClose&&(e?(s.onOpen(),document.dispatchEvent(new CustomEvent(ki))):s.onClose())});let g=p(!1),_=p(),v=u(()=>h.value?g.value?`delayed-open`:`instant-open`:`closed`),{start:y,stop:b}=he(()=>{g.value=!0,h.value=!0},f,{immediate:!1});function x(){b(),g.value=!1,h.value=!0}function S(){b(),h.value=!1}function C(){y()}return ji({contentId:``,open:h,stateAttribute:v,trigger:_,onTriggerChange(e){_.value=e},onTriggerEnter(){s.isOpenDelayed.value?C():x()},onTriggerLeave(){c.value?S():b()},onOpen:x,onClose:S,disableHoverableContent:c,disableClosingTrigger:l,disabled:d,ignoreNonKeyboardFocus:m}),(e,t)=>(N(),w(a(Yn),null,{default:r(()=>[k(e.$slots,`default`,{open:a(h)})]),_:3}))}}),Ni=F({__name:`TooltipContentImpl`,props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1,default:`top`},sideOffset:{type:Number,required:!1,default:0},align:{type:null,required:!1,default:`center`},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1,default:!0},collisionBoundary:{type:null,required:!1,default:()=>[]},collisionPadding:{type:[Number,Object],required:!1,default:0},arrowPadding:{type:Number,required:!1,default:0},sticky:{type:String,required:!1,default:`partial`},hideWhenDetached:{type:Boolean,required:!1,default:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(t,{emit:n}){let i=t,o=n,s=Ai(),{forwardRef:c}=W(),l=_(),d=u(()=>l.default?.({})),f=u(()=>{if(i.ariaLabel)return i.ariaLabel;let e=``;function t(n){typeof n.children==`string`&&n.type!==S?e+=n.children:Array.isArray(n.children)&&n.children.forEach(e=>t(e))}return d.value?.forEach(e=>t(e)),e}),p=u(()=>{let{ariaLabel:e,...t}=i;return t});return j(()=>{Ge(window,`scroll`,e=>{e.target?.contains(s.trigger.value)&&s.onClose()}),Ge(window,ki,s.onClose)}),(t,n)=>(N(),w(a(Lt),{"as-child":``,"disable-outside-pointer-events":!1,onEscapeKeyDown:n[0]||=e=>o(`escapeKeyDown`,e),onPointerDownOutside:n[1]||=e=>{a(s).disableClosingTrigger.value&&a(s).trigger.value?.contains(e.target)&&e.preventDefault(),o(`pointerDownOutside`,e)},onFocusOutside:n[2]||=b(()=>{},[`prevent`]),onDismiss:n[3]||=e=>a(s).onClose()},{default:r(()=>[A(a(or),M({ref:a(c),"data-state":a(s).stateAttribute.value},{...t.$attrs,...p.value},{style:{"--reka-tooltip-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-tooltip-content-available-width":`var(--reka-popper-available-width)`,"--reka-tooltip-content-available-height":`var(--reka-popper-available-height)`,"--reka-tooltip-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-tooltip-trigger-height":`var(--reka-popper-anchor-height)`}}),{default:r(()=>[k(t.$slots,`default`),A(a(In),{id:a(s).contentId,role:`tooltip`},{default:r(()=>[e(C(f.value),1)]),_:1},8,[`id`])]),_:3},16,[`data-state`])]),_:3}))}}),Pi=F({__name:`TooltipContentHoverable`,props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},setup(e){let t=ct(e),{forwardRef:n,currentElement:i}=W(),{trigger:o,onClose:s}=Ai(),c=Ei(),{isPointerInTransit:l,onPointerExit:u}=lt(o,i);return c.isPointerInTransitRef=l,u(()=>{s()}),(e,i)=>(N(),w(Ni,M({ref:a(n)},a(t)),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))}}),Fi=F({__name:`TooltipContent`,props:{forceMount:{type:Boolean,required:!1},ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1,default:`top`},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let n=e,i=t,o=Ai(),s=G(n,i),{forwardRef:c}=W();return(e,t)=>(N(),w(a(Tt),{present:e.forceMount||a(o).open.value},{default:r(()=>[(N(),w(le(a(o).disableHoverableContent.value?Ni:Pi),M({ref:a(c)},a(s)),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),Ii=F({__name:`TooltipPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(N(),w(a(dn),l(P(t)),{default:r(()=>[k(e.$slots,`default`)]),_:3},16))}}),Li=F({__name:`TooltipTrigger`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=Ai(),i=Ei();n.contentId||=K(void 0,`reka-tooltip-content`);let{forwardRef:o,currentElement:s}=W(),c=p(!1),l=p(!1),d=u(()=>n.disabled.value?{}:{click:y,focus:_,pointermove:h,pointerleave:g,pointerdown:m,blur:v});j(()=>{n.onTriggerChange(s.value)});function f(){setTimeout(()=>{c.value=!1},1)}function m(){n.open&&!n.disableClosingTrigger.value&&n.onClose(),c.value=!0,document.addEventListener(`pointerup`,f,{once:!0})}function h(e){e.pointerType!==`touch`&&!l.value&&!i.isPointerInTransitRef.value&&(n.onTriggerEnter(),l.value=!0)}function g(){n.onTriggerLeave(),l.value=!1}function _(e){c.value||n.ignoreNonKeyboardFocus.value&&!e.target.matches?.(`:focus-visible`)||n.onOpen()}function v(){n.onClose()}function y(){n.disableClosingTrigger.value||n.onClose()}return(e,i)=>(N(),w(a(Xn),{"as-child":``,reference:e.reference},{default:r(()=>[A(a(q),M({ref:a(o),"aria-describedby":a(n).open.value?a(n).contentId:void 0,"data-state":a(n).stateAttribute.value,as:e.as,"as-child":t.asChild,"data-grace-area-trigger":``},de(d.value)),{default:r(()=>[k(e.$slots,`default`)]),_:3},16,[`aria-describedby`,`data-state`,`as`,`as-child`])]),_:3},8,[`reference`]))}});export{G as $,yr as A,bn as B,Lr as C,Dr as D,Or as E,Kn as F,pn as G,vn as H,Gn as I,cn as J,fn as K,Cn as L,_r as M,gr as N,Er as O,fr as P,q as Q,Sn as R,Gr as S,kr as T,_n as U,yn as V,mn as W,jt as X,sn as Y,At as Z,li as _,Oi as a,ii as b,Ci as c,gi as d,ct as et,hi as f,ui as g,fi as h,Mi as i,vr as j,Sr as k,Si as l,pi as m,Ii as n,Ti as o,mi as p,un as q,Fi as r,wi as s,Li as t,z as tt,yi as u,ci as v,Ir as w,ri as x,si as y,xn as z}; \ No newline at end of file diff --git a/docs/assets/vendor-reka-ui-DR3m_AkV.js b/docs/assets/vendor-reka-ui-DR3m_AkV.js new file mode 100644 index 0000000..dd6e2cc --- /dev/null +++ b/docs/assets/vendor-reka-ui-DR3m_AkV.js @@ -0,0 +1,8 @@ +import{An as e,Cn as t,Dn as n,En as r,Fn as i,Gn as a,In as o,Ln as s,Nn as c,On as l,Pn as u,Qn as d,Rn as f,Sn as p,Tn as m,Yn as h,Yt as g,an as _,bn as v,cn as y,cr as b,dn as x,en as S,er as C,fn as w,gn as T,hn as E,in as ee,ir as D,jn as te,kn as O,ln as k,lr as ne,mn as re,nn as ie,nr as A,on as j,or as M,pn as N,qn as ae,rn as oe,rr as P,sn as se,sr as ce,tn as F,tr as I,un as L,vn as le,wn as R,xn as z}from"./game-logic-BBFCPVtv.js";import{A as ue,C as de,D as B,E as fe,F as pe,I as me,L as he,M as ge,N as _e,O as ve,P as ye,R as be,S as xe,T as Se,_ as Ce,b as we,f as Te,g as Ee,h as De,j as Oe,k as ke,m as Ae,p as je,v as Me,w as Ne,x as Pe,y as Fe}from"./vendor-others-Bce0hM6h.js";function Ie(e,t=-1/0,n=1/0){return Math.min(n,Math.max(t,e))}function V(e,t){let r=typeof e==`string`&&!t?`${e}Context`:t,i=Symbol(r);return[t=>{let n=le(i,t);if(n||n===null)return n;throw Error(`Injection \`${i.toString()}\` not found. Component must be used within ${Array.isArray(e)?`one of the following components: ${e.join(`, `)}`:`\`${e}\``}`)},e=>(n(i,e),e)]}function H(){let e=document.activeElement;if(e==null)return null;for(;e!=null&&e.shadowRoot!=null&&e.shadowRoot.activeElement!=null;)e=e.shadowRoot.activeElement;return e}function Le(e,t,n){let r=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&r.addEventListener(e,t,{once:!0}),r.dispatchEvent(i)}function Re(e){return e==null}function ze(e,t){return Re(e)?!1:Array.isArray(e)?e.some(e=>be(e,t)):be(e,t)}function Be(e){return e?e.flatMap(e=>e.type===oe?Be(e.children):[e]):[]}var[Ve,He]=V(`ConfigProvider`),Ue=B?window:void 0;B&&window.document,B&&window.navigator,B&&window.location;function U(e){let t=A(e);return t?.$el??t}function We(...e){let t=[],n=()=>{t.forEach(e=>e()),t.length=0},r=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),i=j(()=>{let t=_e(A(e[0])).filter(e=>e!=null);return t.every(e=>typeof e!=`string`)?t:void 0}),a=he(()=>[i.value?.map(e=>U(e))??[Ue].filter(e=>e!=null),_e(A(i.value?e[1]:e[0])),_e(P(i.value?e[2]:e[1])),A(i.value?e[3]:e[2])],([e,i,a,o])=>{if(n(),!e?.length||!i?.length||!a?.length)return;let s=ue(o)?{...o}:o;t.push(...e.flatMap(e=>i.flatMap(t=>a.map(n=>r(e,t,n,s)))))},{flush:`post`});return pe(n),()=>{a(),n()}}function Ge(){let e=d(!1),t=re();return t&&R(()=>{e.value=!0},t),e}function Ke(e){let t=Ge();return j(()=>(t.value,!!e()))}function qe(e){return typeof e==`function`?e:typeof e==`string`?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Je(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]==`object`?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);let{target:i=Ue,eventName:a=`keydown`,passive:o=!1,dedupe:s=!1}=r,c=qe(t);return We(i,a,e=>{e.repeat&&A(s)||c(e)&&n(e)},o)}function Ye(e){return JSON.parse(JSON.stringify(e))}function Xe(e,t,n={}){let{window:r=Ue,...a}=n,o,s=Ke(()=>r&&`ResizeObserver`in r),c=()=>{o&&=(o.disconnect(),void 0)},l=i(j(()=>{let t=A(e);return Array.isArray(t)?t.map(e=>U(e)):[U(t)]}),e=>{if(c(),s.value&&r){o=new ResizeObserver(t);for(let t of e)t&&o.observe(t,a)}},{immediate:!0,flush:`post`}),u=()=>{c(),l()};return pe(u),{isSupported:s,stop:u}}function W(e,t,n,r={}){let{clone:a=!1,passive:o=!1,eventName:s,deep:c=!1,defaultValue:l,shouldEmit:u}=r,d=re(),f=n||d?.emit||(d?.$emit)?.bind(d)||(d?.proxy?.$emit)?.bind(d?.proxy),m=s;t||=`modelValue`,m||=`update:${t.toString()}`;let g=e=>a?typeof a==`function`?a(e):Ye(e):e,_=()=>ve(e[t])?g(e[t]):l,v=e=>{u?u(e)&&f(m,e):f(m,e)};if(o){let n=h(_()),r=!1;return i(()=>e[t],e=>{r||(r=!0,n.value=g(e),p(()=>r=!1))}),i(n,n=>{!r&&(n!==e[t]||c)&&v(n)},{deep:c}),n}else return j({get(){return _()},set(e){v(e)}})}var Ze=fe(()=>{let e=h(new Map),t=h(),n=j(()=>{for(let t of e.value.values())if(t)return!0;return!1}),r=Ve({scrollBody:h(!0)}),a=null,o=()=>{document.body.style.paddingRight=``,document.body.style.marginRight=``,document.body.style.pointerEvents=``,document.documentElement.style.removeProperty(`--scrollbar-width`),document.body.style.overflow=t.value??``,ke&&a?.(),t.value=void 0};return i(n,(e,n)=>{if(!B)return;if(!e){n&&o();return}t.value===void 0&&(t.value=document.body.style.overflow);let i=window.innerWidth-document.documentElement.clientWidth,s={padding:i,margin:0},c=r.scrollBody?.value?typeof r.scrollBody.value==`object`?xe({padding:r.scrollBody.value.padding===!0?i:r.scrollBody.value.padding,margin:r.scrollBody.value.margin===!0?i:r.scrollBody.value.margin},s):s:{padding:0,margin:0};i>0&&(document.body.style.paddingRight=typeof c.padding==`number`?`${c.padding}px`:String(c.padding),document.body.style.marginRight=typeof c.margin==`number`?`${c.margin}px`:String(c.margin),document.documentElement.style.setProperty(`--scrollbar-width`,`${i}px`),document.body.style.overflow=`hidden`),ke&&(a=We(document,`touchmove`,e=>et(e),{passive:!1})),p(()=>{document.body.style.pointerEvents=`none`,document.body.style.overflow=`hidden`})},{immediate:!0,flush:`sync`}),e});function Qe(e){let t=Math.random().toString(36).substring(2,7),n=Ze();n.value.set(t,e??!1);let r=j({get:()=>n.value.get(t)??!1,set:e=>n.value.set(t,e)});return ye(()=>{n.value.delete(t)}),r}function $e(e){let t=window.getComputedStyle(e);if(t.overflowX===`scroll`||t.overflowY===`scroll`||t.overflowX===`auto`&&e.clientWidth1?!0:(t.preventDefault&&t.cancelable&&t.preventDefault(),!1)}function tt(e){let t=Ve({dir:h(`ltr`)});return j(()=>e?.value||t.dir?.value||`ltr`)}function nt(e){let t=re(),n=t?.type.emits,r={};return n?.length||console.warn(`No emitted event found. Please check component: ${t?.type.__name}`),n?.forEach(t=>{r[ne(D(t))]=(...n)=>e(t,...n)}),r}var rt=0;function it(){o(e=>{if(!B)return;let t=document.querySelectorAll(`[data-reka-focus-guard]`);document.body.insertAdjacentElement(`afterbegin`,t[0]??at()),document.body.insertAdjacentElement(`beforeend`,t[1]??at()),rt++,e(()=>{rt===1&&document.querySelectorAll(`[data-reka-focus-guard]`).forEach(e=>e.remove()),rt--})})}function at(){let e=document.createElement(`span`);return e.setAttribute(`data-reka-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}function ot(e){return j(()=>A(e)?!!U(e)?.closest(`form`):!0)}function G(){let e=re(),t=h(),n=j(()=>[`#text`,`#comment`].includes(t.value?.$el.nodeName)?t.value?.$el.nextElementSibling:U(t)),r=Object.assign({},e.exposed),i={};for(let t in e.props)Object.defineProperty(i,t,{enumerable:!0,configurable:!0,get:()=>e.props[t]});if(Object.keys(r).length>0)for(let e in r)Object.defineProperty(i,e,{enumerable:!0,configurable:!0,get:()=>r[e]});Object.defineProperty(i,`$el`,{enumerable:!0,configurable:!0,get:()=>e.vnode.el}),e.exposed=i;function a(n){t.value=n,n&&(Object.defineProperty(i,`$el`,{enumerable:!0,configurable:!0,get:()=>n instanceof Element?n:n.$el}),e.exposed=i)}return{forwardRef:a,currentRef:t,currentElement:n}}function st(e){let t=re(),n=Object.keys(t?.type.props??{}).reduce((e,n)=>{let r=(t?.type.props[n]).default;return r!==void 0&&(e[n]=r),e},{}),r=C(e);return j(()=>{let e={},i=t?.vnode.props??{};return Object.keys(i).forEach(t=>{e[D(t)]=i[t]}),Object.keys({...n,...e}).reduce((e,t)=>(r.value[t]!==void 0&&(e[t]=r.value[t]),e),{})})}function ct(e,t){let n=st(e),r=t?nt(t):{};return j(()=>({...n.value,...r}))}function lt(e,t){let n=ge(!1,300),r=h(null),i=Ne();function a(){r.value=null,n.value=!1}function s(e,t){let i=e.currentTarget,a={x:e.clientX,y:e.clientY},o=dt(a,ut(a,i.getBoundingClientRect())),s=ft(t.getBoundingClientRect());r.value=mt([...o,...s]),n.value=!0}return o(n=>{if(e.value&&t.value){let r=e=>s(e,t.value),i=t=>s(t,e.value);e.value.addEventListener(`pointerleave`,r),t.value.addEventListener(`pointerleave`,i),n(()=>{e.value?.removeEventListener(`pointerleave`,r),t.value?.removeEventListener(`pointerleave`,i)})}}),o(n=>{if(r.value){let o=n=>{if(!r.value||!(n.target instanceof Element))return;let o=n.target,s={x:n.clientX,y:n.clientY},c=e.value?.contains(o)||t.value?.contains(o),l=!pt(s,r.value),u=!!o.closest(`[data-grace-area-trigger]`);c?a():(l||u)&&(a(),i.trigger())};e.value?.ownerDocument.addEventListener(`pointermove`,o),n(()=>e.value?.ownerDocument.removeEventListener(`pointermove`,o))}}),{isPointerInTransit:n,onPointerExit:i.on}}function ut(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function dt(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function ft(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function pt(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=l>r&&n<(c-o)*(r-s)/(l-s)+o&&(i=!i)}return i}function mt(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y?1:0),ht(t)}function ht(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}function gt(e){let t;i(()=>U(e),e=>{e?t=Pe(e):t&&t()}),m(()=>{t&&t()})}var _t=0;function K(e,t=`reka`){if(e)return e;if(`useId`in g)return`${t}-${c?.()}`;let n=Ve({useId:void 0});return n.useId?`${t}-${n.useId()}`:`${t}-${++_t}`}function vt(e){let t=h(),n=j(()=>t.value?.width??0),r=j(()=>t.value?.height??0);return R(()=>{let n=U(e);if(n){t.value={width:n.offsetWidth,height:n.offsetHeight};let e=new ResizeObserver(e=>{if(!Array.isArray(e)||!e.length)return;let r=e[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=n.offsetWidth,a=n.offsetHeight;t.value={width:i,height:a}});return e.observe(n,{box:`border-box`}),()=>e.unobserve(n)}else t.value=void 0}),{width:n,height:r}}function yt(e,t){let n=h(e);function r(e){return t[n.value][e]??n.value}return{state:n,dispatch:e=>{n.value=r(e)}}}function bt(e){let t=ge(``,1e3);return{search:t,handleTypeaheadSearch:(n,r)=>{if(t.value+=n,e)e(n);else{let e=H(),n=r.map(e=>({...e,textValue:e.value?.textValue??e.ref.textContent?.trim()??``})),i=n.find(t=>t.ref===e),a=St(n.map(e=>e.textValue),t.value,i?.textValue),o=n.find(e=>e.textValue===a);return o&&o.ref.focus(),o?.ref}},resetTypeahead:()=>{t.value=``}}}function xt(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function St(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=xt(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function Ct(e,t){let n=h({}),r=h(`none`),a=h(e),o=e.value?`mounted`:`unmounted`,s,c=t.value?.ownerDocument.defaultView??Ue,{state:l,dispatch:u}=yt(o,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}}),d=e=>{if(B){let n=new CustomEvent(e,{bubbles:!1,cancelable:!1});t.value?.dispatchEvent(n)}};i(e,async(e,i)=>{let a=i!==e;if(await p(),a){let a=r.value,o=wt(t.value);e?(u(`MOUNT`),d(`enter`),o===`none`&&d(`after-enter`)):o===`none`||o===`undefined`||n.value?.display===`none`?(u(`UNMOUNT`),d(`leave`),d(`after-leave`)):i&&a!==o?(u(`ANIMATION_OUT`),d(`leave`)):(u(`UNMOUNT`),d(`after-leave`))}},{immediate:!0});let f=e=>{let n=wt(t.value),r=n.includes(CSS.escape(e.animationName)),i=l.value===`mounted`?`enter`:`leave`;if(e.target===t.value&&r&&(d(`after-${i}`),u(`ANIMATION_END`),!a.value)){let e=t.value.style.animationFillMode;t.value.style.animationFillMode=`forwards`,s=c?.setTimeout(()=>{t.value?.style.animationFillMode===`forwards`&&(t.value.style.animationFillMode=e)})}e.target===t.value&&n===`none`&&u(`ANIMATION_END`)},g=e=>{e.target===t.value&&(r.value=wt(t.value))},_=i(t,(e,t)=>{e?(n.value=getComputedStyle(e),e.addEventListener(`animationstart`,g),e.addEventListener(`animationcancel`,f),e.addEventListener(`animationend`,f)):(u(`ANIMATION_END`),s!==void 0&&c?.clearTimeout(s),t?.removeEventListener(`animationstart`,g),t?.removeEventListener(`animationcancel`,f),t?.removeEventListener(`animationend`,f))},{immediate:!0}),v=i(l,()=>{let e=wt(t.value);r.value=l.value===`mounted`?e:`none`});return m(()=>{_(),v()}),{isPresent:j(()=>[`mounted`,`unmountSuspended`].includes(l.value))}}function wt(e){return e&&getComputedStyle(e).animationName||`none`}var Tt=N({name:`Presence`,props:{present:{type:Boolean,required:!0},forceMount:{type:Boolean}},slots:{},setup(e,{slots:t,expose:n}){let{present:r,forceMount:i}=I(e),a=h(),{isPresent:o}=Ct(r,a);n({present:o});let s=t.default({present:o.value});s=Be(s||[]);let c=re();if(s&&s?.length>1){let e=c?.parent?.type.name?`<${c.parent.type.name} />`:`component`;throw Error([`Detected an invalid children for \`${e}\` for \`Presence\` component.`,``,"Note: Presence works similarly to `v-if` directly, but it waits for animation/transition to finished before unmounting. So it expect only one direct child of valid VNode type.",`You can apply a few solutions:`,["Provide a single child element so that `presence` directive attach correctly.",`Ensure the first child is an actual element instead of a raw text node or comment node.`].map(e=>` - ${e}`).join(` +`)].join(` +`))}return()=>i.value||r.value||o.value?T(t.default({present:o.value})[0],{ref:e=>{let t=U(e);return t?.hasAttribute===void 0||(t?.hasAttribute(`data-reka-popper-content-wrapper`)?a.value=t.firstElementChild:a.value=t),t}}):null}}),Et=N({name:`PrimitiveSlot`,inheritAttrs:!1,setup(e,{attrs:t,slots:n}){return()=>{if(!n.default)return null;let e=Be(n.default()),r=e.findIndex(e=>e.type!==ie);if(r===-1)return e;let i=e[r];delete i.props?.ref;let a=i.props?z(t,i.props):t,o=_({...i,props:{}},a);return e.length===1?o:(e[r]=o,e)}}}),Dt=[`area`,`img`,`input`],q=N({name:`Primitive`,inheritAttrs:!1,props:{asChild:{type:Boolean,default:!1},as:{type:[String,Object],default:`div`}},setup(e,{attrs:t,slots:n}){let r=e.asChild?`template`:e.as;return typeof r==`string`&&Dt.includes(r)?()=>T(r,t):r===`template`?()=>T(Et,t,{default:n.default}):()=>T(e.as,t,{default:n.default})}});function Ot(){let e=h();return{primitiveElement:e,currentElement:j(()=>[`#text`,`#comment`].includes(e.value?.$el.nodeName)?e.value?.$el.nextElementSibling:U(e))}}var[J,kt]=V(`DialogRoot`),At=N({inheritAttrs:!1,__name:`DialogRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1,default:!1},modal:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,r=W(n,`open`,t,{defaultValue:n.defaultOpen,passive:n.open===void 0}),i=h(),a=h(),{modal:o}=I(n);return kt({open:r,modal:o,openModal:()=>{r.value=!0},onOpenChange:e=>{r.value=e},onOpenToggle:()=>{r.value=!r.value},contentId:``,titleId:``,descriptionId:``,triggerElement:i,contentElement:a}),(e,t)=>O(e.$slots,`default`,{open:P(r),close:()=>r.value=!1})}}),jt=N({__name:`DialogClose`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;G();let n=J();return(e,i)=>(r(),y(P(q),z(t,{type:e.as===`button`?`button`:void 0,onClick:i[0]||=e=>P(n).onOpenChange(!1)}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16,[`type`]))}}),Mt=`dismissableLayer.pointerDownOutside`,Nt=`dismissableLayer.focusOutside`;function Pt(e,t){let n=t.closest(`[data-dismissable-layer]`),r=e.dataset.dismissableLayer===``?e:e.querySelector(`[data-dismissable-layer]`),i=Array.from(e.ownerDocument.querySelectorAll(`[data-dismissable-layer]`));return!!(n&&(r===n||i.indexOf(r){});return o(o=>{if(!B||!A(n))return;let s=async n=>{let o=n.target;if(!(!t?.value||!o)){if(Pt(t.value,o)){i.value=!1;return}if(n.target&&!i.value){let t={originalEvent:n};function i(){Le(Mt,e,t)}n.pointerType===`touch`?(r.removeEventListener(`click`,a.value),a.value=i,r.addEventListener(`click`,a.value,{once:!0})):i()}else r.removeEventListener(`click`,a.value);i.value=!1}},c=window.setTimeout(()=>{r.addEventListener(`pointerdown`,s)},0);o(()=>{window.clearTimeout(c),r.removeEventListener(`pointerdown`,s),r.removeEventListener(`click`,a.value)})}),{onPointerDownCapture:()=>{A(n)&&(i.value=!0)}}}function It(e,t,n=!0){let r=t?.value?.ownerDocument??globalThis?.document,i=h(!1);return o(a=>{if(!B||!A(n))return;let o=async n=>{if(!t?.value)return;await p(),await p();let r=n.target;!t.value||!r||Pt(t.value,r)||n.target&&!i.value&&Le(Nt,e,{originalEvent:n})};r.addEventListener(`focusin`,o),a(()=>r.removeEventListener(`focusin`,o))}),{onFocusCapture:()=>{A(n)&&(i.value=!0)},onBlurCapture:()=>{A(n)&&(i.value=!1)}}}var Y=ae({layersRoot:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Lt=N({__name:`DismissableLayer`,props:{disableOutsidePointerEvents:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`dismiss`],setup(e,{emit:t}){let n=e,i=t,{forwardRef:a,currentElement:s}=G(),c=j(()=>s.value?.ownerDocument??globalThis.document),l=j(()=>Y.layersRoot),u=j(()=>s.value?Array.from(l.value).indexOf(s.value):-1),d=j(()=>Y.layersWithOutsidePointerEventsDisabled.size>0),m=j(()=>{let e=Array.from(l.value),[t]=[...Y.layersWithOutsidePointerEventsDisabled].slice(-1),n=e.indexOf(t);return u.value>=n}),h=Ft(async e=>{let t=[...Y.branches].some(t=>t?.contains(e.target));!m.value||t||(i(`pointerDownOutside`,e),i(`interactOutside`,e),await p(),e.defaultPrevented||i(`dismiss`))},s),g=It(e=>{[...Y.branches].some(t=>t?.contains(e.target))||(i(`focusOutside`,e),i(`interactOutside`,e),e.defaultPrevented||i(`dismiss`))},s);Je(`Escape`,e=>{u.value===l.value.size-1&&(i(`escapeKeyDown`,e),e.defaultPrevented||i(`dismiss`))});let _;return o(e=>{s.value&&(n.disableOutsidePointerEvents&&(Y.layersWithOutsidePointerEventsDisabled.size===0&&(_=c.value.body.style.pointerEvents,c.value.body.style.pointerEvents=`none`),Y.layersWithOutsidePointerEventsDisabled.add(s.value)),l.value.add(s.value),e(()=>{n.disableOutsidePointerEvents&&Y.layersWithOutsidePointerEventsDisabled.size===1&&(c.value.body.style.pointerEvents=_)}))}),o(e=>{e(()=>{s.value&&(l.value.delete(s.value),Y.layersWithOutsidePointerEventsDisabled.delete(s.value))})}),(e,t)=>(r(),y(P(q),{ref:P(a),"as-child":e.asChild,as:e.as,"data-dismissable-layer":``,style:ce({pointerEvents:d.value?m.value?`auto`:`none`:void 0}),onFocusCapture:P(g).onFocusCapture,onBlurCapture:P(g).onBlurCapture,onPointerdownCapture:P(h).onPointerDownCapture},{default:f(()=>[O(e.$slots,`default`)]),_:3},8,[`as-child`,`as`,`style`,`onFocusCapture`,`onBlurCapture`,`onPointerdownCapture`]))}}),Rt=Se(()=>h([]));function zt(){let e=Rt();return{add(t){let n=e.value[0];t!==n&&n?.pause(),e.value=Bt(e.value,t),e.value.unshift(t)},remove(t){e.value=Bt(e.value,t),e.value[0]?.resume()}}}function Bt(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function Vt(e){return e.filter(e=>e.tagName!==`A`)}var Ht=`focusScope.autoFocusOnMount`,Ut=`focusScope.autoFocusOnUnmount`,Wt={bubbles:!1,cancelable:!0};function Gt(e,{select:t=!1}={}){let n=H();for(let r of e)if(X(r,{select:t}),H()!==n)return!0}function Kt(e){let t=qt(e);return[Jt(t,e),Jt(t.reverse(),e)]}function qt(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Jt(e,t){for(let n of e)if(!Yt(n,{upTo:t}))return n}function Yt(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function Xt(e){return e instanceof HTMLInputElement&&`select`in e}function X(e,{select:t=!1}={}){if(e&&e.focus){let n=H();e.focus({preventScroll:!0}),e!==n&&Xt(e)&&t&&e.select()}}var Zt=N({__name:`FocusScope`,props:{loop:{type:Boolean,required:!1,default:!1},trapped:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`mountAutoFocus`,`unmountAutoFocus`],setup(e,{emit:t}){let n=e,i=t,{currentRef:a,currentElement:s}=G(),c=h(null),l=zt(),u=ae({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}});o(e=>{if(!B)return;let t=s.value;if(!n.trapped)return;function r(e){if(u.paused||!t)return;let n=e.target;t.contains(n)?c.value=n:X(c.value,{select:!0})}function i(e){if(u.paused||!t)return;let n=e.relatedTarget;n!==null&&(t.contains(n)||X(c.value,{select:!0}))}function a(e){t.contains(c.value)||X(t)}document.addEventListener(`focusin`,r),document.addEventListener(`focusout`,i);let o=new MutationObserver(a);t&&o.observe(t,{childList:!0,subtree:!0}),e(()=>{document.removeEventListener(`focusin`,r),document.removeEventListener(`focusout`,i),o.disconnect()})}),o(async e=>{let t=s.value;if(await p(),!t)return;l.add(u);let n=H();if(!t.contains(n)){let e=new CustomEvent(Ht,Wt);t.addEventListener(Ht,e=>i(`mountAutoFocus`,e)),t.dispatchEvent(e),e.defaultPrevented||(Gt(Vt(qt(t)),{select:!0}),H()===n&&X(t))}e(()=>{t.removeEventListener(Ht,e=>i(`mountAutoFocus`,e));let e=new CustomEvent(Ut,Wt),r=e=>{i(`unmountAutoFocus`,e)};t.addEventListener(Ut,r),t.dispatchEvent(e),setTimeout(()=>{e.defaultPrevented||X(n??document.body,{select:!0}),t.removeEventListener(Ut,r),l.remove(u)},0)})});function d(e){if(!n.loop&&!n.trapped||u.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,r=H();if(t&&r){let t=e.currentTarget,[i,a]=Kt(t);i&&a?!e.shiftKey&&r===a?(e.preventDefault(),n.loop&&X(i,{select:!0})):e.shiftKey&&r===i&&(e.preventDefault(),n.loop&&X(a,{select:!0})):r===t&&e.preventDefault()}}return(e,t)=>(r(),y(P(q),{ref_key:`currentRef`,ref:a,tabindex:`-1`,"as-child":e.asChild,as:e.as,onKeydown:d},{default:f(()=>[O(e.$slots,`default`)]),_:3},8,[`as-child`,`as`]))}}),Qt=[`Enter`,` `],$t=[`ArrowDown`,`PageUp`,`Home`],en=[`ArrowUp`,`PageDown`,`End`];[...$t,...en],[...Qt],[...Qt];function tn(e){return e?`open`:`closed`}function nn(e){let t=H();for(let n of e)if(n===t||(n.focus(),H()!==t))return}var rn=N({__name:`DialogContentImpl`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,a=J(),{forwardRef:o,currentElement:s}=G();return a.titleId||=K(void 0,`reka-dialog-title`),a.descriptionId||=K(void 0,`reka-dialog-description`),R(()=>{a.contentElement=s,H()!==document.body&&(a.triggerElement.value=H())}),(e,t)=>(r(),y(P(Zt),{"as-child":``,loop:``,trapped:n.trapFocus,onMountAutoFocus:t[5]||=e=>i(`openAutoFocus`,e),onUnmountAutoFocus:t[6]||=e=>i(`closeAutoFocus`,e)},{default:f(()=>[w(P(Lt),z({id:P(a).contentId,ref:P(o),as:e.as,"as-child":e.asChild,"disable-outside-pointer-events":e.disableOutsidePointerEvents,role:`dialog`,"aria-describedby":P(a).descriptionId,"aria-labelledby":P(a).titleId,"data-state":P(tn)(P(a).open.value)},e.$attrs,{onDismiss:t[0]||=e=>P(a).onOpenChange(!1),onEscapeKeyDown:t[1]||=e=>i(`escapeKeyDown`,e),onFocusOutside:t[2]||=e=>i(`focusOutside`,e),onInteractOutside:t[3]||=e=>i(`interactOutside`,e),onPointerDownOutside:t[4]||=e=>i(`pointerDownOutside`,e)}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16,[`id`,`as`,`as-child`,`disable-outside-pointer-events`,`aria-describedby`,`aria-labelledby`,`data-state`])]),_:3},8,[`trapped`]))}}),an=N({__name:`DialogContentModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,a=J(),o=nt(i),{forwardRef:s,currentElement:c}=G();return gt(c),(e,t)=>(r(),y(rn,z({...n,...P(o)},{ref:P(s),"trap-focus":P(a).open.value,"disable-outside-pointer-events":!0,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(e.preventDefault(),P(a).triggerElement.value?.focus())},onPointerDownOutside:t[1]||=e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()},onFocusOutside:t[2]||=e=>{e.preventDefault()}}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16,[`trap-focus`]))}}),on=N({__name:`DialogContentNonModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=nt(t);G();let a=J(),o=h(!1),s=h(!1);return(e,t)=>(r(),y(rn,z({...n,...P(i)},{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(o.value||P(a).triggerElement.value?.focus(),e.preventDefault()),o.value=!1,s.value=!1},onInteractOutside:t[1]||=e=>{e.defaultPrevented||(o.value=!0,e.detail.originalEvent.type===`pointerdown`&&(s.value=!0));let t=e.target;P(a).triggerElement.value?.contains(t)&&e.preventDefault(),e.detail.originalEvent.type===`focusin`&&s.value&&e.preventDefault()}}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))}}),sn=N({__name:`DialogContent`,props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,a=J(),o=nt(i),{forwardRef:s}=G();return(e,t)=>(r(),y(P(Tt),{present:e.forceMount||P(a).open.value},{default:f(()=>[P(a).modal.value?(r(),y(an,z({key:0,ref:P(s)},{...n,...P(o),...e.$attrs}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16)):(r(),y(on,z({key:1,ref:P(s)},{...n,...P(o),...e.$attrs}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),cn=N({__name:`DialogDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`p`}},setup(e){let t=e;G();let n=J();return(e,i)=>(r(),y(P(q),z(t,{id:P(n).descriptionId}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16,[`id`]))}}),ln=N({__name:`DialogOverlayImpl`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=J();return Qe(!0),G(),(e,n)=>(r(),y(P(q),{as:e.as,"as-child":e.asChild,"data-state":P(t).open.value?`open`:`closed`,style:{"pointer-events":`auto`}},{default:f(()=>[O(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`data-state`]))}}),un=N({__name:`DialogOverlay`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=J(),{forwardRef:n}=G();return(e,i)=>P(t)?.modal.value?(r(),y(P(Tt),{key:0,present:e.forceMount||P(t).open.value},{default:f(()=>[w(ln,z(e.$attrs,{ref:P(n),as:e.as,"as-child":e.asChild}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16,[`as`,`as-child`])]),_:3},8,[`present`])):k(`v-if`,!0)}}),dn=N({__name:`Teleport`,props:{to:{type:null,required:!1,default:`body`},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=Ge();return(e,n)=>P(t)||e.forceMount?(r(),y(ee,{key:0,to:e.to,disabled:e.disabled,defer:e.defer},[O(e.$slots,`default`)],8,[`to`,`disabled`,`defer`])):k(`v-if`,!0)}}),fn=N({__name:`DialogPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(r(),y(P(dn),M(E(t)),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))}}),pn=N({__name:`DialogTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`h2`}},setup(e){let t=e,n=J();return G(),(e,i)=>(r(),y(P(q),z(t,{id:P(n).titleId}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16,[`id`]))}}),mn=N({__name:`AlertDialogAction`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;return G(),(e,n)=>(r(),y(P(jt),M(E(t)),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))}}),[hn,gn]=V(`AlertDialogContent`),_n=N({__name:`AlertDialogContent`,props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=nt(t);G();let a=h();return gn({onCancelElementChange:e=>{a.value=e}}),(e,t)=>(r(),y(P(sn),z({...n,...P(i)},{role:`alertdialog`,onPointerDownOutside:t[0]||=F(()=>{},[`prevent`]),onInteractOutside:t[1]||=F(()=>{},[`prevent`]),onOpenAutoFocus:t[2]||=()=>{p(()=>{a.value?.focus({preventScroll:!0})})}}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))}}),vn=N({__name:`AlertDialogCancel`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=hn(),{forwardRef:i,currentElement:a}=G();return R(()=>{n.onCancelElementChange(a.value)}),(e,n)=>(r(),y(P(jt),z(t,{ref:P(i)}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))}}),yn=N({__name:`AlertDialogDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`p`}},setup(e){let t=e;return G(),(e,n)=>(r(),y(P(cn),M(E(t)),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))}}),bn=N({__name:`AlertDialogOverlay`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e;return G(),(e,n)=>(r(),y(P(un),M(E(t)),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))}}),xn=N({__name:`AlertDialogPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(r(),y(P(dn),M(E(t)),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))}}),Sn=N({__name:`AlertDialogRoot`,props:{open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1}},emits:[`update:open`],setup(e,{emit:t}){let n=ct(e,t);return G(),(e,t)=>(r(),y(P(At),z(P(n),{modal:!0}),{default:f(t=>[O(e.$slots,`default`,M(E(t)))]),_:3},16))}}),Cn=N({__name:`AlertDialogTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`h2`}},setup(e){let t=e;return G(),(e,n)=>(r(),y(P(pn),M(E(t)),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))}}),wn=`data-reka-collection-item`;function Z(e={}){let{key:t=``,isProvider:r=!1}=e,s=`${t}CollectionProvider`,c;if(r){let e=h(new Map);c={collectionRef:h(),itemMap:e},n(s,c)}else c=le(s);let l=(e=!1)=>{let t=c.collectionRef.value;if(!t)return[];let n=Array.from(t.querySelectorAll(`[${wn}]`)),r=Array.from(c.itemMap.value.values()).sort((e,t)=>n.indexOf(e.ref)-n.indexOf(t.ref));return e?r:r.filter(e=>e.ref.dataset.disabled!==``)},u=N({name:`CollectionSlot`,setup(e,{slots:t}){let{primitiveElement:n,currentElement:r}=Ot();return i(r,()=>{c.collectionRef.value=r.value}),()=>T(Et,{ref:n},t)}}),d=N({name:`CollectionItem`,inheritAttrs:!1,props:{value:{validator:()=>!0}},setup(e,{slots:t,attrs:n}){let{primitiveElement:r,currentElement:i}=Ot();return o(t=>{if(i.value){let n=a(i.value);c.itemMap.value.set(n,{ref:i.value,value:e.value}),t(()=>c.itemMap.value.delete(n))}}),()=>T(Et,{...n,[wn]:``,ref:r},t)}});return{getItems:l,reactiveItems:j(()=>Array.from(c.itemMap.value.values())),itemMapSize:j(()=>c.itemMap.value.size),CollectionSlot:u,CollectionItem:d}}var Tn=`rovingFocusGroup.onEntryFocus`,En={bubbles:!1,cancelable:!0},Dn={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function On(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function kn(e,t,n){let r=On(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return Dn[r]}function An(e,t=!1){let n=H();for(let r of e)if(r===n||(r.focus({preventScroll:t}),H()!==n))return}function jn(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var[Mn,Nn]=V(`RovingFocusGroup`),Pn=N({__name:`RovingFocusGroup`,props:{orientation:{type:String,required:!1,default:void 0},dir:{type:String,required:!1},loop:{type:Boolean,required:!1,default:!1},currentTabStopId:{type:[String,null],required:!1},defaultCurrentTabStopId:{type:String,required:!1},preventScrollOnEntryFocus:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`entryFocus`,`update:currentTabStopId`],setup(e,{expose:t,emit:n}){let i=e,a=n,{loop:o,orientation:s,dir:c}=I(i),l=tt(c),u=W(i,`currentTabStopId`,a,{defaultValue:i.defaultCurrentTabStopId,passive:i.currentTabStopId===void 0}),d=h(!1),p=h(!1),m=h(0),{getItems:g,CollectionSlot:_}=Z({isProvider:!0});function v(e){let t=!p.value;if(e.currentTarget&&e.target===e.currentTarget&&t&&!d.value){let t=new CustomEvent(Tn,En);if(e.currentTarget.dispatchEvent(t),a(`entryFocus`,t),!t.defaultPrevented){let e=g().map(e=>e.ref).filter(e=>e.dataset.disabled!==``);An([e.find(e=>e.getAttribute(`data-active`)===``),e.find(e=>e.getAttribute(`data-highlighted`)===``),e.find(e=>e.id===u.value),...e].filter(Boolean),i.preventScrollOnEntryFocus)}}p.value=!1}function b(){setTimeout(()=>{p.value=!1},1)}return t({getItems:g}),Nn({loop:o,dir:l,orientation:s,currentTabStopId:u,onItemFocus:e=>{u.value=e},onItemShiftTab:()=>{d.value=!0},onFocusableItemAdd:()=>{m.value++},onFocusableItemRemove:()=>{m.value--}}),(e,t)=>(r(),y(P(_),null,{default:f(()=>[w(P(q),{tabindex:d.value||m.value===0?-1:0,"data-orientation":P(s),as:e.as,"as-child":e.asChild,dir:P(l),style:{outline:`none`},onMousedown:t[0]||=e=>p.value=!0,onMouseup:b,onFocus:v,onBlur:t[1]||=e=>d.value=!1},{default:f(()=>[O(e.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`as`,`as-child`,`dir`])]),_:3}))}}),Fn=N({__name:`RovingFocusItem`,props:{tabStopId:{type:String,required:!1},focusable:{type:Boolean,required:!1,default:!0},active:{type:Boolean,required:!1},allowShiftKey:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,n=Mn(),i=K(),a=j(()=>t.tabStopId||i),o=j(()=>n.currentTabStopId.value===a.value),{getItems:s,CollectionItem:c}=Z();R(()=>{t.focusable&&n.onFocusableItemAdd()}),m(()=>{t.focusable&&n.onFocusableItemRemove()});function l(e){if(e.key===`Tab`&&e.shiftKey){n.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let r=kn(e,n.orientation.value,n.dir.value);if(r!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||!t.allowShiftKey&&e.shiftKey)return;e.preventDefault();let i=[...s().map(e=>e.ref).filter(e=>e.dataset.disabled!==``)];if(r===`last`)i.reverse();else if(r===`prev`||r===`next`){r===`prev`&&i.reverse();let t=i.indexOf(e.currentTarget);i=n.loop.value?jn(i,t+1):i.slice(t+1)}p(()=>An(i))}}return(e,t)=>(r(),y(P(c),null,{default:f(()=>[w(P(q),{tabindex:o.value?0:-1,"data-orientation":P(n).orientation.value,"data-active":e.active?``:void 0,"data-disabled":e.focusable?void 0:``,as:e.as,"as-child":e.asChild,onMousedown:t[0]||=t=>{e.focusable?P(n).onItemFocus(a.value):t.preventDefault()},onFocus:t[1]||=e=>P(n).onItemFocus(a.value),onKeydown:l},{default:f(()=>[O(e.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`data-active`,`data-disabled`,`as`,`as-child`])]),_:3}))}}),In=N({__name:`VisuallyHidden`,props:{feature:{type:String,required:!1,default:`focusable`},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){return(e,t)=>(r(),y(P(q),{as:e.as,"as-child":e.asChild,"aria-hidden":e.feature===`focusable`?`true`:void 0,"data-hidden":e.feature===`fully-hidden`?``:void 0,tabindex:e.feature===`fully-hidden`?`-1`:void 0,style:{position:`absolute`,border:0,width:`1px`,height:`1px`,padding:0,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,clipPath:`inset(50%)`,whiteSpace:`nowrap`,wordWrap:`normal`,top:`-1px`,left:`-1px`}},{default:f(()=>[O(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`aria-hidden`,`data-hidden`,`tabindex`]))}}),Ln=N({inheritAttrs:!1,__name:`VisuallyHiddenInputBubble`,props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:`fully-hidden`}},setup(e){let t=e,{primitiveElement:n,currentElement:a}=Ot();return i(j(()=>t.checked??t.value),(e,t)=>{if(!a.value)return;let n=a.value,r=window.HTMLInputElement.prototype,i=Object.getOwnPropertyDescriptor(r,`value`).set;if(i&&e!==t){let t=new Event(`input`,{bubbles:!0}),r=new Event(`change`,{bubbles:!0});i.call(n,e),n.dispatchEvent(t),n.dispatchEvent(r)}}),(e,i)=>(r(),y(In,z({ref_key:`primitiveElement`,ref:n},{...t,...e.$attrs},{as:`input`}),null,16))}}),Rn=N({inheritAttrs:!1,__name:`VisuallyHiddenInput`,props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:`fully-hidden`}},setup(e){let t=e,n=j(()=>typeof t.value==`object`&&Array.isArray(t.value)&&t.value.length===0&&t.required),i=j(()=>typeof t.value==`string`||typeof t.value==`number`||typeof t.value==`boolean`||t.value===null||t.value===void 0?[{name:t.name,value:t.value}]:typeof t.value==`object`&&Array.isArray(t.value)?t.value.flatMap((e,n)=>typeof e==`object`?Object.entries(e).map(([e,r])=>({name:`${t.name}[${n}][${e}]`,value:r})):{name:`${t.name}[${n}]`,value:e}):t.value!==null&&typeof t.value==`object`&&!Array.isArray(t.value)?Object.entries(t.value).map(([e,n])=>({name:`${t.name}[${e}]`,value:n})):[]);return(e,a)=>(r(),L(oe,null,[k(` We render single input if it's required `),n.value?(r(),y(Ln,z({key:e.name},{...t,...e.$attrs},{name:e.name,value:e.value}),null,16,[`name`,`value`])):(r(!0),L(oe,{key:1},l(i.value,n=>(r(),y(Ln,z({key:n.name},{ref_for:!0},{...t,...e.$attrs},{name:n.name,value:n.value}),null,16,[`name`,`value`]))),128))],2112))}}),[zn,Bn]=V(`CheckboxGroupRoot`);function Vn(e){return e===`indeterminate`}function Hn(e){return Vn(e)?`indeterminate`:e?`checked`:`unchecked`}var[Un,Wn]=V(`CheckboxRoot`),Gn=N({inheritAttrs:!1,__name:`CheckboxRoot`,props:{defaultValue:{type:[Boolean,String],required:!1},modelValue:{type:[Boolean,String,null],required:!1,default:void 0},disabled:{type:Boolean,required:!1},value:{type:null,required:!1,default:`on`},id:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`],setup(t,{emit:n}){let i=t,a=n,{forwardRef:o,currentElement:s}=G(),c=zn(null),l=W(i,`modelValue`,a,{defaultValue:i.defaultValue,passive:i.modelValue===void 0}),u=j(()=>c?.disabled.value||i.disabled),d=j(()=>Re(c?.modelValue.value)?l.value===`indeterminate`?`indeterminate`:l.value:ze(c.modelValue.value,i.value));function p(){if(Re(c?.modelValue.value))l.value=Vn(l.value)?!0:!l.value;else{let e=[...c.modelValue.value||[]];if(ze(e,i.value)){let t=e.findIndex(e=>be(e,i.value));e.splice(t,1)}else e.push(i.value);c.modelValue.value=e}}let m=ot(s),h=j(()=>i.id&&s.value?document.querySelector(`[for="${i.id}"]`)?.innerText:void 0);return Wn({disabled:u,state:d}),(t,n)=>(r(),y(e(P(c)?.rovingFocus.value?P(Fn):P(q)),z(t.$attrs,{id:t.id,ref:P(o),role:`checkbox`,"as-child":t.asChild,as:t.as,type:t.as===`button`?`button`:void 0,"aria-checked":P(Vn)(d.value)?`mixed`:d.value,"aria-required":t.required,"aria-label":t.$attrs[`aria-label`]||h.value,"data-state":P(Hn)(d.value),"data-disabled":u.value?``:void 0,disabled:u.value,focusable:P(c)?.rovingFocus.value?!u.value:void 0,onKeydown:S(F(()=>{},[`prevent`]),[`enter`]),onClick:p}),{default:f(()=>[O(t.$slots,`default`,{modelValue:P(l),state:d.value}),P(m)&&t.name&&!P(c)?(r(),y(P(Rn),{key:0,type:`checkbox`,checked:!!d.value,name:t.name,value:t.value,disabled:u.value,required:t.required},null,8,[`checked`,`name`,`value`,`disabled`,`required`])):k(`v-if`,!0)]),_:3},16,[`id`,`as-child`,`as`,`type`,`aria-checked`,`aria-required`,`aria-label`,`data-state`,`data-disabled`,`disabled`,`focusable`,`onKeydown`]))}}),Kn=N({__name:`CheckboxIndicator`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let{forwardRef:t}=G(),n=Un();return(e,i)=>(r(),y(P(Tt),{present:e.forceMount||P(Vn)(P(n).state.value)||P(n).state.value===!0},{default:f(()=>[w(P(q),z({ref:P(t),"data-state":P(Hn)(P(n).state.value),"data-disabled":P(n).disabled.value?``:void 0,style:{pointerEvents:`none`},"as-child":e.asChild,as:e.as},e.$attrs),{default:f(()=>[O(e.$slots,`default`)]),_:3},16,[`data-state`,`data-disabled`,`as-child`,`as`])]),_:3},8,[`present`]))}}),[qn,Jn]=V(`PopperRoot`),Yn=N({inheritAttrs:!1,__name:`PopperRoot`,setup(e){let t=h();return Jn({anchor:t,onAnchorChange:e=>t.value=e}),(e,t)=>O(e.$slots,`default`)}}),Xn=N({__name:`PopperAnchor`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,{forwardRef:n,currentElement:i}=G(),a=qn();return s(()=>{a.onAnchorChange(t.reference??i.value)}),(e,t)=>(r(),y(P(q),{ref:P(n),as:e.as,"as-child":e.asChild},{default:f(()=>[O(e.$slots,`default`)]),_:3},8,[`as`,`as-child`]))}}),Zn={key:0,d:`M0 0L6 6L12 0`},Qn={key:1,d:`M0 0L4.58579 4.58579C5.36683 5.36683 6.63316 5.36684 7.41421 4.58579L12 0`},$n=N({__name:`Arrow`,props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(e){let t=e;return G(),(e,n)=>(r(),y(P(q),z(t,{width:e.width,height:e.height,viewBox:e.asChild?void 0:`0 0 12 6`,preserveAspectRatio:e.asChild?void 0:`none`}),{default:f(()=>[O(e.$slots,`default`,{},()=>[e.rounded?(r(),L(`path`,Qn)):(r(),L(`path`,Zn))])]),_:3},16,[`width`,`height`,`viewBox`,`preserveAspectRatio`]))}});function er(e){return e!==null}function tr(e){return{name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=nr(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}}}function nr(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var rr={side:`bottom`,sideOffset:0,sideFlip:!0,align:`center`,alignOffset:0,alignFlip:!0,arrowPadding:0,avoidCollisions:!0,collisionBoundary:()=>[],collisionPadding:0,sticky:`partial`,hideWhenDetached:!1,positionStrategy:`fixed`,updatePositionStrategy:`optimized`,prioritizePosition:!1},[ir,ar]=V(`PopperContent`),or=N({inheritAttrs:!1,__name:`PopperContent`,props:v({side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},{...rr}),emits:[`placed`],setup(e,{emit:t}){let n=e,i=t,a=qn(),{forwardRef:c,currentElement:l}=G(),u=h(),d=h(),{width:p,height:m}=vt(d),g=j(()=>n.side+(n.align===`center`?``:`-${n.align}`)),_=j(()=>typeof n.collisionPadding==`number`?n.collisionPadding:{top:0,right:0,bottom:0,left:0,...n.collisionPadding}),v=j(()=>Array.isArray(n.collisionBoundary)?n.collisionBoundary:[n.collisionBoundary]),y=j(()=>({padding:_.value,boundary:v.value.filter(er),altBoundary:v.value.length>0})),b=j(()=>({mainAxis:n.sideFlip,crossAxis:n.alignFlip})),x=de(()=>[Me({mainAxis:n.sideOffset+m.value,alignmentAxis:n.alignOffset}),n.prioritizePosition&&n.avoidCollisions&&De({...y.value,...b.value}),n.avoidCollisions&&Fe({mainAxis:!0,crossAxis:!!n.prioritizePosition,limiter:n.sticky===`partial`?Ce():void 0,...y.value}),!n.prioritizePosition&&n.avoidCollisions&&De({...y.value,...b.value}),we({...y.value,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--reka-popper-available-width`,`${n}px`),o.setProperty(`--reka-popper-available-height`,`${r}px`),o.setProperty(`--reka-popper-anchor-width`,`${i}px`),o.setProperty(`--reka-popper-anchor-height`,`${a}px`)}}),d.value&&Te({element:d.value,padding:n.arrowPadding}),tr({arrowWidth:p.value,arrowHeight:m.value}),n.hideWhenDetached&&Ee({strategy:`referenceHidden`,...y.value})]),{floatingStyles:S,placement:C,isPositioned:T,middlewareData:E,update:ee}=je(j(()=>n.reference??a.anchor.value),u,{strategy:n.positionStrategy,placement:g,whileElementsMounted:(...e)=>Ae(...e,{layoutShift:!n.disableUpdateOnLayoutShift,animationFrame:n.updatePositionStrategy===`always`}),middleware:x}),D=j(()=>nr(C.value)[0]),te=j(()=>nr(C.value)[1]);s(()=>{T.value&&i(`placed`)});let k=j(()=>E.value.arrow?.centerOffset!==0),ne=h(``);return o(()=>{l.value&&(ne.value=window.getComputedStyle(l.value).zIndex)}),ar({placedSide:D,onArrowChange:e=>d.value=e,arrowX:j(()=>E.value.arrow?.x??0),arrowY:j(()=>E.value.arrow?.y??0),shouldHideArrow:k}),(e,t)=>(r(),L(`div`,{ref_key:`floatingRef`,ref:u,"data-reka-popper-content-wrapper":``,style:ce({...P(S),transform:P(T)?P(S).transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:ne.value,"--reka-popper-transform-origin":[P(E).transformOrigin?.x,P(E).transformOrigin?.y].join(` `),...P(E).hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}})},[w(P(q),z({ref:P(c)},e.$attrs,{"as-child":n.asChild,as:e.as,"data-side":D.value,"data-align":te.value,style:{animation:P(T)?void 0:`none`}}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16,[`as-child`,`as`,`data-side`,`data-align`,`style`])],4))}}),sr={top:`bottom`,right:`left`,bottom:`top`,left:`right`},cr=N({inheritAttrs:!1,__name:`PopperArrow`,props:{width:{type:Number,required:!1},height:{type:Number,required:!1},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(e){let{forwardRef:t}=G(),n=ir(),i=j(()=>sr[n.placedSide.value]);return(e,a)=>(r(),L(`span`,{ref:e=>{P(n).onArrowChange(e)},style:ce({position:`absolute`,left:P(n).arrowX?.value?`${P(n).arrowX?.value}px`:void 0,top:P(n).arrowY?.value?`${P(n).arrowY?.value}px`:void 0,[i.value]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[P(n).placedSide.value],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[P(n).placedSide.value],visibility:P(n).shouldHideArrow.value?`hidden`:void 0})},[w($n,z(e.$attrs,{ref:P(t),style:{display:`block`},as:e.as,"as-child":e.asChild,rounded:e.rounded,width:e.width,height:e.height}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16,[`as`,`as-child`,`rounded`,`width`,`height`])],4))}});function lr(e){let t=Ve({nonce:h()});return j(()=>e?.value||t.nonce?.value)}var[ur,dr]=V(`PopoverRoot`),fr=N({__name:`PopoverRoot`,props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},modal:{type:Boolean,required:!1,default:!1}},emits:[`update:open`],setup(e,{emit:t}){let n=e,i=t,{modal:a}=I(n),o=W(n,`open`,i,{defaultValue:n.defaultOpen,passive:n.open===void 0});return dr({contentId:``,triggerId:``,modal:a,open:o,onOpenChange:e=>{o.value=e},onOpenToggle:()=>{o.value=!o.value},triggerElement:h(),hasCustomAnchor:h(!1)}),(e,t)=>(r(),y(P(Yn),null,{default:f(()=>[O(e.$slots,`default`,{open:P(o),close:()=>o.value=!1})]),_:3}))}}),pr=N({__name:`PopoverContentImpl`,props:{trapFocus:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,a=st(Oe(n,`trapFocus`,`disableOutsidePointerEvents`)),{forwardRef:o}=G(),s=ur();return it(),(e,t)=>(r(),y(P(Zt),{"as-child":``,loop:``,trapped:e.trapFocus,onMountAutoFocus:t[5]||=e=>i(`openAutoFocus`,e),onUnmountAutoFocus:t[6]||=e=>i(`closeAutoFocus`,e)},{default:f(()=>[w(P(Lt),{"as-child":``,"disable-outside-pointer-events":e.disableOutsidePointerEvents,onPointerDownOutside:t[0]||=e=>i(`pointerDownOutside`,e),onInteractOutside:t[1]||=e=>i(`interactOutside`,e),onEscapeKeyDown:t[2]||=e=>i(`escapeKeyDown`,e),onFocusOutside:t[3]||=e=>i(`focusOutside`,e),onDismiss:t[4]||=e=>P(s).onOpenChange(!1)},{default:f(()=>[w(P(or),z(P(a),{id:P(s).contentId,ref:P(o),"data-state":P(s).open.value?`open`:`closed`,"aria-labelledby":P(s).triggerId,style:{"--reka-popover-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-popover-content-available-width":`var(--reka-popper-available-width)`,"--reka-popover-content-available-height":`var(--reka-popper-available-height)`,"--reka-popover-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-popover-trigger-height":`var(--reka-popper-anchor-height)`},role:`dialog`}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16,[`id`,`data-state`,`aria-labelledby`])]),_:3},8,[`disable-outside-pointer-events`])]),_:3},8,[`trapped`]))}}),mr=N({__name:`PopoverContentModal`,props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,a=ur(),o=h(!1);Qe(!0);let s=ct(n,i),{forwardRef:c,currentElement:l}=G();return gt(l),(e,t)=>(r(),y(pr,z(P(s),{ref:P(c),"trap-focus":P(a).open.value,"disable-outside-pointer-events":``,onCloseAutoFocus:t[0]||=F(e=>{i(`closeAutoFocus`,e),o.value||P(a).triggerElement.value?.focus()},[`prevent`]),onPointerDownOutside:t[1]||=e=>{i(`pointerDownOutside`,e);let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;o.value=t.button===2||n},onFocusOutside:t[2]||=F(()=>{},[`prevent`])}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16,[`trap-focus`]))}}),hr=N({__name:`PopoverContentNonModal`,props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,a=ur(),o=h(!1),s=h(!1),c=ct(n,i);return(e,t)=>(r(),y(pr,z(P(c),{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:t[0]||=e=>{i(`closeAutoFocus`,e),e.defaultPrevented||(o.value||P(a).triggerElement.value?.focus(),e.preventDefault()),o.value=!1,s.value=!1},onInteractOutside:t[1]||=async e=>{i(`interactOutside`,e),e.defaultPrevented||(o.value=!0,e.detail.originalEvent.type===`pointerdown`&&(s.value=!0));let t=e.target;P(a).triggerElement.value?.contains(t)&&e.preventDefault(),e.detail.originalEvent.type===`focusin`&&s.value&&e.preventDefault()}}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))}}),gr=N({__name:`PopoverContent`,props:{forceMount:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,i=t,a=ur(),o=ct(n,i),{forwardRef:s}=G();return a.contentId||=K(void 0,`reka-popover-content`),(e,t)=>(r(),y(P(Tt),{present:e.forceMount||P(a).open.value},{default:f(()=>[P(a).modal.value?(r(),y(mr,z({key:0},P(o),{ref:P(s)}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16)):(r(),y(hr,z({key:1},P(o),{ref:P(s)}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),_r=N({__name:`PopoverPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(r(),y(P(dn),M(E(t)),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))}}),vr=N({__name:`PopoverTrigger`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(t){let n=t,i=ur(),{forwardRef:a,currentElement:o}=G();return i.triggerId||=K(void 0,`reka-popover-trigger`),R(()=>{i.triggerElement.value=o.value}),(t,o)=>(r(),y(e(P(i).hasCustomAnchor.value?P(q):P(Xn)),{"as-child":``},{default:f(()=>[w(P(q),{id:P(i).triggerId,ref:P(a),type:t.as===`button`?`button`:void 0,"aria-haspopup":`dialog`,"aria-expanded":P(i).open.value,"aria-controls":P(i).contentId,"data-state":P(i).open.value?`open`:`closed`,as:t.as,"as-child":n.asChild,onClick:P(i).onOpenToggle},{default:f(()=>[O(t.$slots,`default`)]),_:3},8,[`id`,`type`,`aria-expanded`,`aria-controls`,`data-state`,`as`,`as-child`,`onClick`])]),_:3}))}}),yr=N({__name:`Label`,props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`label`}},setup(e){let t=e;return G(),(e,n)=>(r(),y(P(q),z(t,{onMousedown:n[0]||=e=>{!e.defaultPrevented&&e.detail>1&&e.preventDefault()}}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))}}),[br,xr]=V(`PaginationRoot`),Sr=N({__name:`PaginationRoot`,props:{page:{type:Number,required:!1},defaultPage:{type:Number,required:!1,default:1},itemsPerPage:{type:Number,required:!0},total:{type:Number,required:!1,default:0},siblingCount:{type:Number,required:!1,default:2},disabled:{type:Boolean,required:!1},showEdges:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`nav`}},emits:[`update:page`],setup(e,{emit:t}){let n=e,i=t,{siblingCount:a,disabled:o,showEdges:s}=I(n);G();let c=W(n,`page`,i,{defaultValue:n.defaultPage,passive:n.page===void 0}),l=j(()=>Math.max(1,Math.ceil(n.total/(n.itemsPerPage||1))));return xr({page:c,onPageChange(e){c.value=e},pageCount:l,siblingCount:a,disabled:o,showEdges:s}),(e,t)=>(r(),y(P(q),{as:e.as,"as-child":e.asChild},{default:f(()=>[O(e.$slots,`default`,{page:P(c),pageCount:l.value})]),_:3},8,[`as`,`as-child`]))}});function Q(e,t){let n=t-e+1;return Array.from({length:n},(t,n)=>n+e)}function Cr(e){return e.map(e=>typeof e==`number`?{type:`page`,value:e}:{type:`ellipsis`})}var wr=`ellipsis`;function Tr(e,t,n,r){let i=t,a=Math.max(e-n,1),o=Math.min(e+n,i);if(r){let e=Math.min(2*n+5,t)-2,r=a>3&&Math.abs(i-e-1+1)>2&&Math.abs(a-1)>2,s=o2&&Math.abs(i-o)>2;return!r&&s?[...Q(1,e),wr,i]:r&&!s?[1,wr,...Q(i-e+1,i)]:r&&s?[1,wr,...Q(a,o),wr,i]:Q(1,i)}else{let r=n*2+1;return tCr(Tr(n.page.value,n.pageCount.value,n.siblingCount.value,n.showEdges.value)));return(e,n)=>(r(),y(P(q),M(E(t)),{default:f(()=>[O(e.$slots,`default`,{items:i.value})]),_:3},16))}}),Dr=N({__name:`PaginationListItem`,props:{value:{type:Number,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;G();let n=br(),i=j(()=>n.page.value===t.value),a=j(()=>n.disabled.value);return(e,o)=>(r(),y(P(q),z(t,{"data-type":`page`,"aria-label":`Page ${e.value}`,"aria-current":i.value?`page`:void 0,"data-selected":i.value?`true`:void 0,disabled:a.value,type:e.as===`button`?`button`:void 0,onClick:o[0]||=t=>!a.value&&P(n).onPageChange(e.value)}),{default:f(()=>[O(e.$slots,`default`,{},()=>[x(b(e.value),1)])]),_:3},16,[`aria-label`,`aria-current`,`data-selected`,`disabled`,`type`]))}}),Or=N({__name:`PaginationNext`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;G();let n=br(),i=j(()=>n.page.value===n.pageCount.value||n.disabled.value);return(e,a)=>(r(),y(P(q),z(t,{"aria-label":`Next Page`,type:e.as===`button`?`button`:void 0,disabled:i.value,onClick:a[0]||=e=>!i.value&&P(n).onPageChange(P(n).page.value+1)}),{default:f(()=>[O(e.$slots,`default`,{},()=>[a[1]||=x(`Next page`)])]),_:3},16,[`type`,`disabled`]))}}),kr=N({__name:`PaginationPrev`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;G();let n=br(),i=j(()=>n.page.value===1||n.disabled.value);return(e,a)=>(r(),y(P(q),z(t,{"aria-label":`Previous Page`,type:e.as===`button`?`button`:void 0,disabled:i.value,onClick:a[0]||=e=>!i.value&&P(n).onPageChange(P(n).page.value-1)}),{default:f(()=>[O(e.$slots,`default`,{},()=>[a[1]||=x(`Prev page`)])]),_:3},16,[`type`,`disabled`]))}}),Ar=100,[jr,Mr]=V(`ProgressRoot`),Nr=e=>typeof e==`number`;function Pr(e,t){return Re(e)||Nr(e)&&!Number.isNaN(e)&&e<=t&&e>=0?e:(console.error(`Invalid prop \`value\` of value \`${e}\` supplied to \`ProgressRoot\`. The \`value\` prop must be: + - a positive number + - less than the value passed to \`max\` (or ${Ar} if no \`max\` prop is set) + - \`null\` or \`undefined\` if the progress is indeterminate. + +Defaulting to \`null\`.`),null)}function Fr(e){return Nr(e)&&!Number.isNaN(e)&&e>0?e:(console.error(`Invalid prop \`max\` of value \`${e}\` supplied to \`ProgressRoot\`. Only numbers greater than 0 are valid max values. Defaulting to \`${Ar}\`.`),Ar)}var Ir=N({__name:`ProgressRoot`,props:{modelValue:{type:[Number,null],required:!1},max:{type:Number,required:!1,default:Ar},getValueLabel:{type:Function,required:!1,default:(e,t)=>Nr(e)?`${Math.round(e/t*Ar)}%`:void 0},getValueText:{type:Function,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`,`update:max`],setup(e,{emit:t}){let n=e,a=t;G();let o=W(n,`modelValue`,a,{passive:n.modelValue===void 0}),s=W(n,`max`,a,{passive:n.max===void 0});i(()=>o.value,async e=>{let t=Pr(e,n.max);t!==e&&(await p(),o.value=t)},{immediate:!0}),i(()=>n.max,e=>{let t=Fr(n.max);t!==e&&(s.value=t)},{immediate:!0});let c=j(()=>Re(o.value)?`indeterminate`:o.value===s.value?`complete`:`loading`);return Mr({modelValue:o,max:s,progressState:c}),(e,t)=>(r(),y(P(q),{"as-child":e.asChild,as:e.as,"aria-valuemax":P(s),"aria-valuemin":0,"aria-valuenow":Nr(P(o))?P(o):void 0,"aria-valuetext":e.getValueText?.(P(o),P(s)),"aria-label":e.getValueLabel(P(o),P(s)),role:`progressbar`,"data-state":c.value,"data-value":P(o)??void 0,"data-max":P(s)},{default:f(()=>[O(e.$slots,`default`,{modelValue:P(o)})]),_:3},8,[`as-child`,`as`,`aria-valuemax`,`aria-valuenow`,`aria-valuetext`,`aria-label`,`data-state`,`data-value`,`data-max`]))}}),Lr=N({__name:`ProgressIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,n=jr();return G(),(e,i)=>(r(),y(P(q),z(t,{"data-state":P(n).progressState.value,"data-value":P(n).modelValue?.value??void 0,"data-max":P(n).max.value}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16,[`data-state`,`data-value`,`data-max`]))}}),Rr=[` `,`Enter`,`ArrowUp`,`ArrowDown`],zr=[` `,`Enter`];function Br(e,t,n){return e===void 0?!1:Array.isArray(e)?e.some(e=>Vr(e,t,n)):Vr(e,t,n)}function Vr(e,t,n){return e===void 0||t===void 0?!1:typeof e==`string`?e===t:typeof n==`function`?n(e,t):typeof n==`string`?e?.[n]===t?.[n]:be(e,t)}function Hr(e){return e==null||e===``||Array.isArray(e)&&e.length===0}var Ur={key:0,value:``},[$,Wr]=V(`SelectRoot`),Gr=N({inheritAttrs:!1,__name:`SelectRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},by:{type:[String,Function],required:!1},dir:{type:String,required:!1},multiple:{type:Boolean,required:!1},autocomplete:{type:String,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`,`update:open`],setup(e,{emit:t}){let n=e,i=t,{required:a,disabled:o,multiple:s,dir:c}=I(n),u=W(n,`modelValue`,i,{defaultValue:n.defaultValue??(s.value?[]:void 0),passive:n.modelValue===void 0,deep:!0}),d=W(n,`open`,i,{defaultValue:n.defaultOpen,passive:n.open===void 0}),p=h(),m=h(),g=h({x:0,y:0}),_=j(()=>s.value&&Array.isArray(u.value)?u.value?.length===0:Re(u.value));Z({isProvider:!0});let v=tt(c),b=ot(p),x=h(new Set),S=j(()=>Array.from(x.value).map(e=>e.value).join(`;`));function C(e){if(s.value){let t=Array.isArray(u.value)?[...u.value]:[],r=t.findIndex(t=>Vr(t,e,n.by));r===-1?t.push(e):t.splice(r,1),u.value=[...t]}else u.value=e}function w(e){return Array.from(x.value).find(t=>Br(e,t.value,n.by))}return Wr({triggerElement:p,onTriggerChange:e=>{p.value=e},valueElement:m,onValueElementChange:e=>{m.value=e},contentId:``,modelValue:u,onValueChange:C,by:n.by,open:d,multiple:s,required:a,onOpenChange:e=>{d.value=e},dir:v,triggerPointerDownPosRef:g,disabled:o,isEmptyModelValue:_,optionsSet:x,onOptionAdd:e=>{let t=w(e.value);t&&x.value.delete(t),x.value.add(e)},onOptionRemove:e=>{let t=w(e.value);t&&x.value.delete(t)}}),(e,t)=>(r(),y(P(Yn),null,{default:f(()=>[O(e.$slots,`default`,{modelValue:P(u),open:P(d)}),P(b)?(r(),y(Kr,{key:S.value,"aria-hidden":`true`,tabindex:`-1`,multiple:P(s),required:P(a),name:e.name,autocomplete:e.autocomplete,disabled:P(o),value:P(u)},{default:f(()=>[P(Re)(P(u))?(r(),L(`option`,Ur)):k(`v-if`,!0),(r(!0),L(oe,null,l(Array.from(x.value),e=>(r(),L(`option`,z({key:e.value??``},{ref_for:!0},e),null,16))),128))]),_:1},8,[`multiple`,`required`,`name`,`autocomplete`,`disabled`,`value`])):k(`v-if`,!0)]),_:3}))}}),Kr=N({__name:`BubbleSelect`,props:{autocomplete:{type:String,required:!1},autofocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},form:{type:String,required:!1},multiple:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},size:{type:Number,required:!1},value:{type:null,required:!1}},setup(e){let t=e,n=h(),a=$();i(()=>t.value,(e,t)=>{let r=window.HTMLSelectElement.prototype,i=Object.getOwnPropertyDescriptor(r,`value`).set;if(e!==t&&i&&n.value){let t=new Event(`change`,{bubbles:!0});i.call(n.value,e),n.value.dispatchEvent(t)}});function o(e){a.onValueChange(e.target.value)}return(e,i)=>(r(),y(P(In),{"as-child":``},{default:f(()=>[se(`select`,z({ref_key:`selectElement`,ref:n},t,{onInput:o}),[O(e.$slots,`default`)],16)]),_:3}))}}),qr=N({__name:`SelectPopperPosition`,props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:`start`},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1,default:10},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=st(e);return(e,n)=>(r(),y(P(or),z(P(t),{style:{boxSizing:`border-box`,"--reka-select-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-select-content-available-width":`var(--reka-popper-available-width)`,"--reka-select-content-available-height":`var(--reka-popper-available-height)`,"--reka-select-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-select-trigger-height":`var(--reka-popper-anchor-height)`}}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))}}),Jr={onViewportChange:()=>{},itemTextRefCallback:()=>{},itemRefCallback:()=>{}},[Yr,Xr]=V(`SelectContent`),Zr=N({__name:`SelectContentImpl`,props:{position:{type:String,required:!1,default:`item-aligned`},bodyLock:{type:Boolean,required:!1,default:!0},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:`start`},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(t,{emit:n}){let a=t,s=n,c=$();it(),Qe(a.bodyLock);let{CollectionSlot:l,getItems:u}=Z(),d=h();gt(d);let{search:p,handleTypeaheadSearch:m}=bt(),g=h(),_=h(),v=h(),b=h(!1),x=h(!1),S=h(!1);function C(){_.value&&d.value&&nn([_.value,d.value])}i(b,()=>{C()});let{onOpenChange:T,triggerPointerDownPosRef:E}=c;o(e=>{if(!d.value)return;let t={x:0,y:0},n=e=>{t={x:Math.abs(Math.round(e.pageX)-(E.value?.x??0)),y:Math.abs(Math.round(e.pageY)-(E.value?.y??0))}},r=e=>{e.pointerType!==`touch`&&(t.x<=10&&t.y<=10?e.preventDefault():d.value?.contains(e.target)||T(!1),document.removeEventListener(`pointermove`,n),E.value=null)};E.value!==null&&(document.addEventListener(`pointermove`,n),document.addEventListener(`pointerup`,r,{capture:!0,once:!0})),e(()=>{document.removeEventListener(`pointermove`,n),document.removeEventListener(`pointerup`,r,{capture:!0})})});function ee(e){let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&m(e.key,u()),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=[...u().map(e=>e.ref)];if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>nn(t)),e.preventDefault()}}let D=st(j(()=>a.position===`popper`?a:{}).value);return Xr({content:d,viewport:g,onViewportChange:e=>{g.value=e},itemRefCallback:(e,t,n)=>{let r=!x.value&&!n,i=Br(c.modelValue.value,t,c.by);if(c.multiple.value){if(S.value)return;(i||r)&&(_.value=e,i&&(S.value=!0))}else (i||r)&&(_.value=e);r&&(x.value=!0)},selectedItem:_,selectedItemText:v,onItemLeave:()=>{d.value?.focus()},itemTextRefCallback:(e,t,n)=>{let r=!x.value&&!n;(Br(c.modelValue.value,t,c.by)||r)&&(v.value=e)},focusSelectedItem:C,position:a.position,isPositioned:b,searchRef:p}),(t,n)=>(r(),y(P(l),null,{default:f(()=>[w(P(Zt),{"as-child":``,onMountAutoFocus:n[6]||=F(()=>{},[`prevent`]),onUnmountAutoFocus:n[7]||=e=>{s(`closeAutoFocus`,e),!e.defaultPrevented&&(P(c).triggerElement.value?.focus({preventScroll:!0}),e.preventDefault())}},{default:f(()=>[w(P(Lt),{"as-child":``,"disable-outside-pointer-events":``,onFocusOutside:n[2]||=F(()=>{},[`prevent`]),onDismiss:n[3]||=e=>P(c).onOpenChange(!1),onEscapeKeyDown:n[4]||=e=>s(`escapeKeyDown`,e),onPointerDownOutside:n[5]||=e=>s(`pointerDownOutside`,e)},{default:f(()=>[(r(),y(e(t.position===`popper`?qr:ei),z({...t.$attrs,...P(D)},{id:P(c).contentId,ref:e=>{let t=P(U)(e);t?.hasAttribute(`data-reka-popper-content-wrapper`)?d.value=t.firstElementChild:d.value=t},role:`listbox`,"data-state":P(c).open.value?`open`:`closed`,dir:P(c).dir.value,style:{display:`flex`,flexDirection:`column`,outline:`none`},onContextmenu:n[0]||=F(()=>{},[`prevent`]),onPlaced:n[1]||=e=>b.value=!0,onKeydown:ee}),{default:f(()=>[O(t.$slots,`default`)]),_:3},16,[`id`,`data-state`,`dir`,`onKeydown`]))]),_:3})]),_:3})]),_:3}))}}),[Qr,$r]=V(`SelectItemAlignedPosition`),ei=N({inheritAttrs:!1,__name:`SelectItemAlignedPosition`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`placed`],setup(e,{emit:t}){let n=e,i=t,{getItems:a}=Z(),o=$(),s=Yr(),c=h(!1),l=h(!0),u=h(),{forwardRef:d,currentElement:m}=G(),{viewport:g,selectedItem:_,selectedItemText:v,focusSelectedItem:y}=s;function b(){if(o.triggerElement.value&&o.valueElement.value&&u.value&&m.value&&g?.value&&_?.value&&v?.value){let e=o.triggerElement.value.getBoundingClientRect(),t=m.value.getBoundingClientRect(),n=o.valueElement.value.getBoundingClientRect(),r=v.value.getBoundingClientRect();if(o.dir.value!==`rtl`){let i=r.left-t.left,a=n.left-i,o=e.left-a,s=e.width+o,c=Math.max(s,t.width),l=window.innerWidth-10,d=Ie(a,10,Math.max(10,l-c));u.value.style.minWidth=`${s}px`,u.value.style.left=`${d}px`}else{let i=t.right-r.right,a=window.innerWidth-n.right-i,o=window.innerWidth-e.right-a,s=e.width+o,c=Math.max(s,t.width),l=window.innerWidth-10,d=Ie(a,10,Math.max(10,l-c));u.value.style.minWidth=`${s}px`,u.value.style.right=`${d}px`}let s=a().map(e=>e.ref),l=window.innerHeight-20,d=g.value.scrollHeight,f=window.getComputedStyle(m.value),p=Number.parseInt(f.borderTopWidth,10),h=Number.parseInt(f.paddingTop,10),y=Number.parseInt(f.borderBottomWidth,10),b=Number.parseInt(f.paddingBottom,10),x=p+h+d+b+y,S=Math.min(_.value.offsetHeight*5,x),C=window.getComputedStyle(g.value),w=Number.parseInt(C.paddingTop,10),T=Number.parseInt(C.paddingBottom,10),E=e.top+e.height/2-10,ee=l-E,D=_.value.offsetHeight/2,te=_.value.offsetTop+D,O=p+h+te,k=x-O;if(O<=E){let e=_.value===s[s.length-1];u.value.style.bottom=`0px`;let t=m.value.clientHeight-g.value.offsetTop-g.value.offsetHeight,n=O+Math.max(ee,D+(e?T:0)+t+y);u.value.style.height=`${n}px`}else{let e=_.value===s[0];u.value.style.top=`0px`;let t=Math.max(E,p+g.value.offsetTop+(e?w:0)+D)+k;u.value.style.height=`${t}px`,g.value.scrollTop=O-E+g.value.offsetTop}u.value.style.margin=`10px 0`,u.value.style.minHeight=`${S}px`,u.value.style.maxHeight=`${l}px`,i(`placed`),requestAnimationFrame(()=>c.value=!0)}}let x=h(``);R(async()=>{await p(),b(),m.value&&(x.value=window.getComputedStyle(m.value).zIndex)});function S(e){e&&l.value===!0&&(b(),y?.(),l.value=!1)}return Xe(o.triggerElement,()=>{b()}),$r({contentWrapper:u,shouldExpandOnScrollRef:c,onScrollButtonChange:S}),(e,t)=>(r(),L(`div`,{ref_key:`contentWrapperElement`,ref:u,style:ce({display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:x.value})},[w(P(q),z({ref:P(d),style:{boxSizing:`border-box`,maxHeight:`100%`}},{...e.$attrs,...n}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16)],4))}}),ti=N({inheritAttrs:!1,__name:`SelectProvider`,props:{context:{type:Object,required:!0}},setup(e){return Wr(e.context),Xr(Jr),(e,t)=>O(e.$slots,`default`)}}),ni={key:1},ri=N({inheritAttrs:!1,__name:`SelectContent`,props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let n=e,a=ct(n,t),o=$(),s=h();R(()=>{s.value=new DocumentFragment});let c=h(),l=j(()=>n.forceMount||o.open.value),u=h(l.value);return i(l,()=>{setTimeout(()=>u.value=l.value)}),(e,t)=>l.value||u.value||c.value?.present?(r(),y(P(Tt),{key:0,ref_key:`presenceRef`,ref:c,present:l.value},{default:f(()=>[w(Zr,M(E({...P(a),...e.$attrs})),{default:f(()=>[O(e.$slots,`default`)]),_:3},16)]),_:3},8,[`present`])):s.value?(r(),L(`div`,ni,[(r(),y(ee,{to:s.value},[w(ti,{context:P(o)},{default:f(()=>[O(e.$slots,`default`)]),_:3},8,[`context`])],8,[`to`]))])):k(`v-if`,!0)}}),ii=N({__name:`SelectIcon`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){return(e,t)=>(r(),y(P(q),{"aria-hidden":`true`,as:e.as,"as-child":e.asChild},{default:f(()=>[O(e.$slots,`default`,{},()=>[t[0]||=x(`▼`)])]),_:3},8,[`as`,`as-child`]))}}),[ai,oi]=V(`SelectItem`),si=N({__name:`SelectItem`,props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(e,{emit:t}){let n=e,i=t,{disabled:a}=I(n),o=$(),s=Yr(),{forwardRef:c,currentElement:l}=G(),{CollectionItem:u}=Z(),d=j(()=>Br(o.modelValue?.value,n.value,o.by)),m=h(!1),g=h(n.textValue??``),_=K(void 0,`reka-select-item-text`);async function v(e){e.defaultPrevented||Le(`select.select`,b,{originalEvent:e,value:n.value})}async function b(e){await p(),i(`select`,e),!e.defaultPrevented&&(a.value||(o.onValueChange(n.value),o.multiple.value||o.onOpenChange(!1)))}async function x(e){await p(),!e.defaultPrevented&&(a.value?s.onItemLeave?.():e.currentTarget?.focus({preventScroll:!0}))}async function S(e){await p(),!e.defaultPrevented&&e.currentTarget===H()&&s.onItemLeave?.()}async function C(e){await p(),!e.defaultPrevented&&(s.searchRef?.value!==``&&e.key===` `||(zr.includes(e.key)&&v(e),e.key===` `&&e.preventDefault()))}if(n.value===``)throw Error(`A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return R(()=>{l.value&&s.itemRefCallback(l.value,n.value,n.disabled)}),oi({value:n.value,disabled:a,textId:_,isSelected:d,onItemTextChange:e=>{g.value=((g.value||e?.textContent)??``).trim()}}),(e,t)=>(r(),y(P(u),{value:{textValue:g.value}},{default:f(()=>[w(P(q),{ref:P(c),role:`option`,"aria-labelledby":P(_),"data-highlighted":m.value?``:void 0,"aria-selected":d.value,"data-state":d.value?`checked`:`unchecked`,"aria-disabled":P(a)||void 0,"data-disabled":P(a)?``:void 0,tabindex:P(a)?void 0:-1,as:e.as,"as-child":e.asChild,onFocus:t[0]||=e=>m.value=!0,onBlur:t[1]||=e=>m.value=!1,onPointerup:v,onPointerdown:t[2]||=e=>{e.currentTarget.focus({preventScroll:!0})},onTouchend:t[3]||=F(()=>{},[`prevent`,`stop`]),onPointermove:x,onPointerleave:S,onKeydown:C},{default:f(()=>[O(e.$slots,`default`)]),_:3},8,[`aria-labelledby`,`data-highlighted`,`aria-selected`,`data-state`,`aria-disabled`,`data-disabled`,`tabindex`,`as`,`as-child`])]),_:3},8,[`value`]))}}),ci=N({__name:`SelectItemIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,n=ai();return(e,i)=>P(n).isSelected.value?(r(),y(P(q),z({key:0,"aria-hidden":`true`},t),{default:f(()=>[O(e.$slots,`default`)]),_:3},16)):k(`v-if`,!0)}}),li=N({inheritAttrs:!1,__name:`SelectItemText`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,n=$(),i=Yr(),a=ai(),{forwardRef:o,currentElement:s}=G(),c=j(()=>({value:a.value,disabled:a.disabled.value,textContent:s.value?.textContent??a.value?.toString()??``}));return R(()=>{s.value&&(a.onItemTextChange(s.value),i.itemTextRefCallback(s.value,a.value,a.disabled.value),n.onOptionAdd(c.value))}),m(()=>{n.onOptionRemove(c.value)}),(e,n)=>(r(),y(P(q),z({id:P(a).textId,ref:P(o)},{...t,...e.$attrs}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16,[`id`]))}}),ui=N({__name:`SelectPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(r(),y(P(dn),M(E(t)),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))}}),di=N({__name:`SelectScrollButtonImpl`,emits:[`autoScroll`],setup(e,{emit:n}){let i=n,{getItems:a}=Z(),s=Yr(),c=h(null);function l(){c.value!==null&&(window.clearInterval(c.value),c.value=null)}o(()=>{a().map(e=>e.ref).find(e=>e===H())?.scrollIntoView({block:`nearest`})});function u(){c.value===null&&(c.value=window.setInterval(()=>{i(`autoScroll`)},50))}function d(){s.onItemLeave?.(),c.value===null&&(c.value=window.setInterval(()=>{i(`autoScroll`)},50))}return t(()=>l()),(e,t)=>(r(),y(P(q),z({"aria-hidden":`true`,style:{flexShrink:0}},e.$parent?.$props,{onPointerdown:u,onPointermove:d,onPointerleave:t[0]||=()=>{l()}}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))}}),fi=N({__name:`SelectScrollDownButton`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=Yr(),n=t.position===`item-aligned`?Qr():void 0,{forwardRef:a,currentElement:s}=G(),c=h(!1);return o(e=>{if(t.viewport?.value&&t.isPositioned?.value){let n=t.viewport.value;function r(){let e=n.scrollHeight-n.clientHeight;c.value=Math.ceil(n.scrollTop)n.removeEventListener(`scroll`,r))}}),i(s,()=>{s.value&&n?.onScrollButtonChange(s.value)}),(e,n)=>c.value?(r(),y(di,{key:0,ref:P(a),onAutoScroll:n[0]||=()=>{let{viewport:e,selectedItem:n}=P(t);e?.value&&n?.value&&(e.value.scrollTop=e.value.scrollTop+n.value.offsetHeight)}},{default:f(()=>[O(e.$slots,`default`)]),_:3},512)):k(`v-if`,!0)}}),pi=N({__name:`SelectScrollUpButton`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=Yr(),n=t.position===`item-aligned`?Qr():void 0,{forwardRef:a,currentElement:s}=G(),c=h(!1);return o(e=>{if(t.viewport?.value&&t.isPositioned?.value){let n=t.viewport.value;function r(){c.value=n.scrollTop>0}r(),n.addEventListener(`scroll`,r),e(()=>n.removeEventListener(`scroll`,r))}}),i(s,()=>{s.value&&n?.onScrollButtonChange(s.value)}),(e,n)=>c.value?(r(),y(di,{key:0,ref:P(a),onAutoScroll:n[0]||=()=>{let{viewport:e,selectedItem:n}=P(t);e?.value&&n?.value&&(e.value.scrollTop=e.value.scrollTop-n.value.offsetHeight)}},{default:f(()=>[O(e.$slots,`default`)]),_:3},512)):k(`v-if`,!0)}}),mi=N({__name:`SelectTrigger`,props:{disabled:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=$(),{forwardRef:i,currentElement:a}=G(),o=j(()=>n.disabled?.value||t.disabled);n.contentId||=K(void 0,`reka-select-content`),R(()=>{n.onTriggerChange(a.value)});let{getItems:s}=Z(),{search:c,handleTypeaheadSearch:l,resetTypeahead:u}=bt();function d(){o.value||(n.onOpenChange(!0),u())}function p(e){d(),n.triggerPointerDownPosRef.value={x:Math.round(e.pageX),y:Math.round(e.pageY)}}return(e,t)=>(r(),y(P(Xn),{"as-child":``,reference:e.reference},{default:f(()=>[w(P(q),{ref:P(i),role:`combobox`,type:e.as===`button`?`button`:void 0,"aria-controls":P(n).contentId,"aria-expanded":P(n).open.value||!1,"aria-required":P(n).required?.value,"aria-autocomplete":`none`,disabled:o.value,dir:P(n)?.dir.value,"data-state":P(n)?.open.value?`open`:`closed`,"data-disabled":o.value?``:void 0,"data-placeholder":P(Hr)(P(n).modelValue?.value)?``:void 0,"as-child":e.asChild,as:e.as,onClick:t[0]||=e=>{(e?.currentTarget)?.focus()},onPointerdown:t[1]||=e=>{if(e.pointerType===`touch`)return e.preventDefault();let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&(p(e),e.preventDefault())},onPointerup:t[2]||=F(e=>{e.pointerType===`touch`&&p(e)},[`prevent`]),onKeydown:t[3]||=e=>{let t=P(c)!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&t&&e.key===` `||(P(l)(e.key,P(s)()),P(Rr).includes(e.key)&&(d(),e.preventDefault()))}},{default:f(()=>[O(e.$slots,`default`)]),_:3},8,[`type`,`aria-controls`,`aria-expanded`,`aria-required`,`disabled`,`dir`,`data-state`,`data-disabled`,`data-placeholder`,`as-child`,`as`])]),_:3},8,[`reference`]))}}),hi=N({__name:`SelectValue`,props:{placeholder:{type:String,required:!1,default:``},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,{forwardRef:n,currentElement:i}=G(),a=$();R(()=>{a.valueElement=i});let o=j(()=>{let e=[],t=Array.from(a.optionsSet.value),n=e=>t.find(t=>Br(e,t.value,a.by));return e=Array.isArray(a.modelValue.value)?a.modelValue.value.map(e=>n(e)?.textContent??``):[n(a.modelValue.value)?.textContent??``],e.filter(Boolean)}),s=j(()=>o.value.length?o.value.join(`, `):t.placeholder);return(e,i)=>(r(),y(P(q),{ref:P(n),as:e.as,"as-child":e.asChild,style:{pointerEvents:`none`},"data-placeholder":o.value.length?void 0:t.placeholder},{default:f(()=>[O(e.$slots,`default`,{selectedLabel:o.value,modelValue:P(a).modelValue.value},()=>[x(b(s.value),1)])]),_:3},8,[`as`,`as-child`,`data-placeholder`]))}}),gi=N({__name:`SelectViewport`,props:{nonce:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,{nonce:n}=I(t),i=lr(n),a=Yr(),o=a.position===`item-aligned`?Qr():void 0,{forwardRef:s,currentElement:c}=G();R(()=>{a?.onViewportChange(c.value)});let l=h(0);function u(e){let t=e.currentTarget,{shouldExpandOnScrollRef:n,contentWrapper:r}=o??{};if(n?.value&&r?.value){let e=Math.abs(l.value-t.scrollTop);if(e>0){let n=window.innerHeight-20,i=Number.parseFloat(r.value.style.minHeight),a=Number.parseFloat(r.value.style.height),o=Math.max(i,a);if(o0?s:0,r.value.style.justifyContent=`flex-end`)}}}l.value=t.scrollTop}return(e,n)=>(r(),L(oe,null,[w(P(q),z({ref:P(s),"data-reka-select-viewport":``,role:`presentation`},{...e.$attrs,...t},{style:{position:`relative`,flex:1,overflow:`hidden auto`},onScroll:u}),{default:f(()=>[O(e.$slots,`default`)]),_:3},16),w(P(q),{as:`style`,nonce:P(i)},{default:f(()=>n[0]||=[x(` /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-select-viewport] { scrollbar-width:none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } [data-reka-select-viewport]::-webkit-scrollbar { display: none; } `)]),_:1,__:[0]},8,[`nonce`])],64))}}),[_i,vi]=V(`TabsRoot`),yi=N({__name:`TabsRoot`,props:{defaultValue:{type:null,required:!1},orientation:{type:String,required:!1,default:`horizontal`},dir:{type:String,required:!1},activationMode:{type:String,required:!1,default:`automatic`},modelValue:{type:null,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,i=t,{orientation:a,unmountOnHide:o,dir:s}=I(n),c=tt(s);G();let l=W(n,`modelValue`,i,{defaultValue:n.defaultValue,passive:n.modelValue===void 0}),u=h();return vi({modelValue:l,changeModelValue:e=>{l.value=e},orientation:a,dir:c,unmountOnHide:o,activationMode:n.activationMode,baseId:K(void 0,`reka-tabs`),tabsList:u}),(e,t)=>(r(),y(P(q),{dir:P(c),"data-orientation":P(a),"as-child":e.asChild,as:e.as},{default:f(()=>[O(e.$slots,`default`,{modelValue:P(l)})]),_:3},8,[`dir`,`data-orientation`,`as-child`,`as`]))}});function bi(e,t){return`${e}-trigger-${t}`}function xi(e,t){return`${e}-content-${t}`}var Si=N({__name:`TabsContent`,props:{value:{type:[String,Number],required:!0},forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,{forwardRef:n}=G(),i=_i(),a=j(()=>bi(i.baseId,t.value)),o=j(()=>xi(i.baseId,t.value)),s=j(()=>t.value===i.modelValue.value),c=h(s.value);return R(()=>{requestAnimationFrame(()=>{c.value=!1})}),(e,t)=>(r(),y(P(Tt),{present:e.forceMount||s.value,"force-mount":``},{default:f(({present:t})=>[w(P(q),{id:o.value,ref:P(n),"as-child":e.asChild,as:e.as,role:`tabpanel`,"data-state":s.value?`active`:`inactive`,"data-orientation":P(i).orientation.value,"aria-labelledby":a.value,hidden:!t,tabindex:`0`,style:ce({animationDuration:c.value?`0s`:void 0})},{default:f(()=>[!P(i).unmountOnHide.value||t?O(e.$slots,`default`,{key:0}):k(`v-if`,!0)]),_:2},1032,[`id`,`as-child`,`as`,`data-state`,`data-orientation`,`aria-labelledby`,`hidden`,`style`])]),_:3},8,[`present`]))}}),Ci=N({__name:`TabsList`,props:{loop:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let{loop:t}=I(e),{forwardRef:n,currentElement:i}=G(),a=_i();return a.tabsList=i,(e,i)=>(r(),y(P(Pn),{"as-child":``,orientation:P(a).orientation.value,dir:P(a).dir.value,loop:P(t)},{default:f(()=>[w(P(q),{ref:P(n),role:`tablist`,"as-child":e.asChild,as:e.as,"aria-orientation":P(a).orientation.value},{default:f(()=>[O(e.$slots,`default`)]),_:3},8,[`as-child`,`as`,`aria-orientation`])]),_:3},8,[`orientation`,`dir`,`loop`]))}}),wi=N({__name:`TabsTrigger`,props:{value:{type:[String,Number],required:!0},disabled:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,{forwardRef:n}=G(),i=_i(),a=j(()=>bi(i.baseId,t.value)),o=j(()=>xi(i.baseId,t.value)),s=j(()=>t.value===i.modelValue.value);return(e,t)=>(r(),y(P(Fn),{"as-child":``,focusable:!e.disabled,active:s.value},{default:f(()=>[w(P(q),{id:a.value,ref:P(n),role:`tab`,type:e.as===`button`?`button`:void 0,as:e.as,"as-child":e.asChild,"aria-selected":s.value?`true`:`false`,"aria-controls":o.value,"data-state":s.value?`active`:`inactive`,disabled:e.disabled,"data-disabled":e.disabled?``:void 0,"data-orientation":P(i).orientation.value,onMousedown:t[0]||=F(t=>{!e.disabled&&t.ctrlKey===!1?P(i).changeModelValue(e.value):t.preventDefault()},[`left`]),onKeydown:t[1]||=S(t=>P(i).changeModelValue(e.value),[`enter`,`space`]),onFocus:t[2]||=()=>{let t=P(i).activationMode!==`manual`;!s.value&&!e.disabled&&t&&P(i).changeModelValue(e.value)}},{default:f(()=>[O(e.$slots,`default`)]),_:3},8,[`id`,`type`,`as`,`as-child`,`aria-selected`,`aria-controls`,`data-state`,`disabled`,`data-disabled`,`data-orientation`])]),_:3},8,[`focusable`,`active`]))}}),Ti=N({__name:`TooltipArrow`,props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(e){let t=e;return G(),(e,n)=>(r(),y(P(cr),M(E(t)),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))}}),[Ei,Di]=V(`TooltipProvider`),Oi=N({inheritAttrs:!1,__name:`TooltipProvider`,props:{delayDuration:{type:Number,required:!1,default:700},skipDelayDuration:{type:Number,required:!1,default:300},disableHoverableContent:{type:Boolean,required:!1,default:!1},disableClosingTrigger:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:!1}},setup(e){let{delayDuration:t,skipDelayDuration:n,disableHoverableContent:r,disableClosingTrigger:i,ignoreNonKeyboardFocus:a,disabled:o}=I(e);G();let s=h(!0),c=h(!1),{start:l,stop:u}=me(()=>{s.value=!0},n,{immediate:!1});return Di({isOpenDelayed:s,delayDuration:t,onOpen(){u(),s.value=!1},onClose(){l()},isPointerInTransitRef:c,disableHoverableContent:r,disableClosingTrigger:i,disabled:o,ignoreNonKeyboardFocus:a}),(e,t)=>O(e.$slots,`default`)}}),ki=`tooltip.open`,[Ai,ji]=V(`TooltipRoot`),Mi=N({__name:`TooltipRoot`,props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},delayDuration:{type:Number,required:!1,default:void 0},disableHoverableContent:{type:Boolean,required:!1,default:void 0},disableClosingTrigger:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1,default:void 0},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:void 0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,a=t;G();let o=Ei(),s=j(()=>n.disableHoverableContent??o.disableHoverableContent.value),c=j(()=>n.disableClosingTrigger??o.disableClosingTrigger.value),l=j(()=>n.disabled??o.disabled.value),u=j(()=>n.delayDuration??o.delayDuration.value),d=j(()=>n.ignoreNonKeyboardFocus??o.ignoreNonKeyboardFocus.value),p=W(n,`open`,a,{defaultValue:n.defaultOpen,passive:n.open===void 0});i(p,e=>{o.onClose&&(e?(o.onOpen(),document.dispatchEvent(new CustomEvent(ki))):o.onClose())});let m=h(!1),g=h(),_=j(()=>p.value?m.value?`delayed-open`:`instant-open`:`closed`),{start:v,stop:b}=me(()=>{m.value=!0,p.value=!0},u,{immediate:!1});function x(){b(),m.value=!1,p.value=!0}function S(){b(),p.value=!1}function C(){v()}return ji({contentId:``,open:p,stateAttribute:_,trigger:g,onTriggerChange(e){g.value=e},onTriggerEnter(){o.isOpenDelayed.value?C():x()},onTriggerLeave(){s.value?S():b()},onOpen:x,onClose:S,disableHoverableContent:s,disableClosingTrigger:c,disabled:l,ignoreNonKeyboardFocus:d}),(e,t)=>(r(),y(P(Yn),null,{default:f(()=>[O(e.$slots,`default`,{open:P(p)})]),_:3}))}}),Ni=N({__name:`TooltipContentImpl`,props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1,default:`top`},sideOffset:{type:Number,required:!1,default:0},align:{type:null,required:!1,default:`center`},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1,default:!0},collisionBoundary:{type:null,required:!1,default:()=>[]},collisionPadding:{type:[Number,Object],required:!1,default:0},arrowPadding:{type:Number,required:!1,default:0},sticky:{type:String,required:!1,default:`partial`},hideWhenDetached:{type:Boolean,required:!1,default:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let n=e,i=t,a=Ai(),{forwardRef:o}=G(),s=u(),c=j(()=>s.default?.({})),l=j(()=>{if(n.ariaLabel)return n.ariaLabel;let e=``;function t(n){typeof n.children==`string`&&n.type!==ie?e+=n.children:Array.isArray(n.children)&&n.children.forEach(e=>t(e))}return c.value?.forEach(e=>t(e)),e}),d=j(()=>{let{ariaLabel:e,...t}=n;return t});return R(()=>{We(window,`scroll`,e=>{e.target?.contains(a.trigger.value)&&a.onClose()}),We(window,ki,a.onClose)}),(e,t)=>(r(),y(P(Lt),{"as-child":``,"disable-outside-pointer-events":!1,onEscapeKeyDown:t[0]||=e=>i(`escapeKeyDown`,e),onPointerDownOutside:t[1]||=e=>{P(a).disableClosingTrigger.value&&P(a).trigger.value?.contains(e.target)&&e.preventDefault(),i(`pointerDownOutside`,e)},onFocusOutside:t[2]||=F(()=>{},[`prevent`]),onDismiss:t[3]||=e=>P(a).onClose()},{default:f(()=>[w(P(or),z({ref:P(o),"data-state":P(a).stateAttribute.value},{...e.$attrs,...d.value},{style:{"--reka-tooltip-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-tooltip-content-available-width":`var(--reka-popper-available-width)`,"--reka-tooltip-content-available-height":`var(--reka-popper-available-height)`,"--reka-tooltip-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-tooltip-trigger-height":`var(--reka-popper-anchor-height)`}}),{default:f(()=>[O(e.$slots,`default`),w(P(In),{id:P(a).contentId,role:`tooltip`},{default:f(()=>[x(b(l.value),1)]),_:1},8,[`id`])]),_:3},16,[`data-state`])]),_:3}))}}),Pi=N({__name:`TooltipContentHoverable`,props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},setup(e){let t=st(e),{forwardRef:n,currentElement:i}=G(),{trigger:a,onClose:o}=Ai(),s=Ei(),{isPointerInTransit:c,onPointerExit:l}=lt(a,i);return s.isPointerInTransitRef=c,l(()=>{o()}),(e,i)=>(r(),y(Ni,z({ref:P(n)},P(t)),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))}}),Fi=N({__name:`TooltipContent`,props:{forceMount:{type:Boolean,required:!1},ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1,default:`top`},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(t,{emit:n}){let i=t,a=n,o=Ai(),s=ct(i,a),{forwardRef:c}=G();return(t,n)=>(r(),y(P(Tt),{present:t.forceMount||P(o).open.value},{default:f(()=>[(r(),y(e(P(o).disableHoverableContent.value?Ni:Pi),z({ref:P(c)},P(s)),{default:f(()=>[O(t.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),Ii=N({__name:`TooltipPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(r(),y(P(dn),M(E(t)),{default:f(()=>[O(e.$slots,`default`)]),_:3},16))}}),Li=N({__name:`TooltipTrigger`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=Ai(),i=Ei();n.contentId||=K(void 0,`reka-tooltip-content`);let{forwardRef:a,currentElement:o}=G(),s=h(!1),c=h(!1),l=j(()=>n.disabled.value?{}:{click:v,focus:g,pointermove:p,pointerleave:m,pointerdown:d,blur:_});R(()=>{n.onTriggerChange(o.value)});function u(){setTimeout(()=>{s.value=!1},1)}function d(){n.open&&!n.disableClosingTrigger.value&&n.onClose(),s.value=!0,document.addEventListener(`pointerup`,u,{once:!0})}function p(e){e.pointerType!==`touch`&&!c.value&&!i.isPointerInTransitRef.value&&(n.onTriggerEnter(),c.value=!0)}function m(){n.onTriggerLeave(),c.value=!1}function g(e){s.value||n.ignoreNonKeyboardFocus.value&&!e.target.matches?.(`:focus-visible`)||n.onOpen()}function _(){n.onClose()}function v(){n.disableClosingTrigger.value||n.onClose()}return(e,i)=>(r(),y(P(Xn),{"as-child":``,reference:e.reference},{default:f(()=>[w(P(q),z({ref:P(a),"aria-describedby":P(n).open.value?P(n).contentId:void 0,"data-state":P(n).stateAttribute.value,as:e.as,"as-child":t.asChild,"data-grace-area-trigger":``},te(l.value)),{default:f(()=>[O(e.$slots,`default`)]),_:3},16,[`aria-describedby`,`data-state`,`as`,`as-child`])]),_:3},8,[`reference`]))}});export{ct as $,yr as A,bn as B,Lr as C,Dr as D,Or as E,Kn as F,pn as G,vn as H,Gn as I,cn as J,fn as K,Cn as L,_r as M,gr as N,Er as O,fr as P,q as Q,Sn as R,Gr as S,kr as T,_n as U,yn as V,mn as W,jt as X,sn as Y,At as Z,li as _,Oi as a,ii as b,Ci as c,gi as d,st as et,hi as f,ui as g,fi as h,Mi as i,vr as j,Sr as k,Si as l,pi as m,Ii as n,Ti as o,mi as p,un as q,Fi as r,wi as s,Li as t,V as tt,yi as u,ci as v,Ir as w,ri as x,si as y,xn as z}; \ No newline at end of file diff --git a/docs/assets/vendor-vue-router-1sDnnIWZ.js b/docs/assets/vendor-vue-router-0mfLVB6Y.js similarity index 83% rename from docs/assets/vendor-vue-router-1sDnnIWZ.js rename to docs/assets/vendor-vue-router-0mfLVB6Y.js index 3c0ae71..356f8bf 100644 --- a/docs/assets/vendor-vue-router-1sDnnIWZ.js +++ b/docs/assets/vendor-vue-router-0mfLVB6Y.js @@ -1 +1 @@ -import{Bn as e,Cn as t,Fn as n,Gn as r,Jt as i,Ln as a,Rn as o,hn as s,in as c,on as l,tn as u,un as d}from"./game-logic-Bi1l7y4K.js";var f=typeof document<`u`;function p(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function m(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&&p(e.default)}var h=Object.assign;function g(e,t){let n={};for(let r in t){let i=t[r];n[r]=v(i)?i.map(e):e(i)}return n}var _=()=>{},v=Array.isArray;function y(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var b=/#/g,ee=/&/g,te=/\//g,ne=/=/g,re=/\?/g,ie=/\+/g,x=/%5B/g,S=/%5D/g,C=/%5E/g,w=/%60/g,ae=/%7B/g,oe=/%7C/g,T=/%7D/g,se=/%20/g;function E(e){return e==null?``:encodeURI(``+e).replace(oe,`|`).replace(x,`[`).replace(S,`]`)}function ce(e){return E(e).replace(ae,`{`).replace(T,`}`).replace(C,`^`)}function D(e){return E(e).replace(ie,`%2B`).replace(se,`+`).replace(b,`%23`).replace(ee,`%26`).replace(w,"`").replace(ae,`{`).replace(T,`}`).replace(C,`^`)}function le(e){return D(e).replace(ne,`%3D`)}function ue(e){return E(e).replace(b,`%23`).replace(re,`%3F`)}function de(e){return ue(e).replace(te,`%2F`)}function O(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var k=/\/$/,fe=e=>e.replace(k,``);function pe(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=F(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:O(o)}}function me(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function A(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function he(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&j(t.matched[r],n.matched[i])&&M(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function j(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function M(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(!N(e[n],t[n]))return!1;return!0}function N(e,t){return v(e)?P(e,t):v(t)?P(t,e):e===t}function P(e,t){return v(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function F(e,t){if(e.startsWith(`/`))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o1&&a--;else break;return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var I={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0},L=function(e){return e.pop=`pop`,e.push=`push`,e}({}),R=function(e){return e.back=`back`,e.forward=`forward`,e.unknown=``,e}({});function z(e){if(!e)if(f){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^\/]+/,``)}else e=`/`;return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),fe(e)}var B=/^[^#]+#/;function V(e,t){return e.replace(B,`#`)+t}function H(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var U=()=>({left:window.scrollX,top:window.scrollY});function ge(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=H(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function _e(e,t){return(history.state?history.state.position-t:-1)+e}var W=new Map;function ve(e,t){W.set(e,t)}function ye(e){let t=W.get(e);return W.delete(e),t}function be(e){return typeof e==`string`||e&&typeof e==`object`}function xe(e){return typeof e==`string`||typeof e==`symbol`}var G=function(e){return e[e.MATCHER_NOT_FOUND=1]=`MATCHER_NOT_FOUND`,e[e.NAVIGATION_GUARD_REDIRECT=2]=`NAVIGATION_GUARD_REDIRECT`,e[e.NAVIGATION_ABORTED=4]=`NAVIGATION_ABORTED`,e[e.NAVIGATION_CANCELLED=8]=`NAVIGATION_CANCELLED`,e[e.NAVIGATION_DUPLICATED=16]=`NAVIGATION_DUPLICATED`,e}({}),Se=Symbol(``);G.MATCHER_NOT_FOUND,G.NAVIGATION_GUARD_REDIRECT,G.NAVIGATION_ABORTED,G.NAVIGATION_CANCELLED,G.NAVIGATION_DUPLICATED;function K(e,t){return h(Error(),{type:e,[Se]:!0},t)}function q(e,t){return e instanceof Error&&Se in e&&(t==null||!!(e.type&t))}function Ce(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;ee&&D(e)):[r&&D(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function Te(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=v(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}var Ee=Symbol(``),De=Symbol(``),J=Symbol(``),Oe=Symbol(``),ke=Symbol(``);function Y(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function X(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(K(G.NAVIGATION_ABORTED,{from:n,to:t})):e instanceof Error?c(e):be(e)?c(K(G.NAVIGATION_GUARD_REDIRECT,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function Ae(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(!(t!==`beforeRouteEnter`&&!o.instances[e]))if(p(s)){let c=(s.__vccOpts||s)[t];c&&a.push(X(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=m(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&X(c,n,r,o,e,i)()}))}}return a}function je(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;oj(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>j(e,s))||i.push(s))}return[n,r,i]}var Me=()=>location.protocol+`//`+location.host;function Ne(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),A(n,``)}return A(n,e)+r+i}function Pe(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=Ne(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:L.pop,direction:u?u>0?R.forward:R.back:R.unknown})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(h({},e.state,{scroll:U()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function Fe(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?U():null}}function Ie(e){let{history:t,location:n}=window,r={value:Ne(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:Me()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,h({},t.state,Fe(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=h({},i.value,t.state,{forward:e,scroll:U()});a(o.current,o,!0),a(e,h({},Fe(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function Le(e){e=z(e);let t=Ie(e),n=Pe(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=h({location:``,base:e,go:r,createHref:V.bind(null,e)},t,n);return Object.defineProperty(i,`location`,{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,`state`,{enumerable:!0,get:()=>t.state.value}),i}function Re(e){return e=location.host?e||location.pathname+location.search:``,e.includes(`#`)||(e+=`#`),Le(e)}var Z=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.Group=2]=`Group`,e}({}),Q=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.ParamRegExp=2]=`ParamRegExp`,e[e.ParamRegExpEnd=3]=`ParamRegExpEnd`,e[e.EscapeNext=4]=`EscapeNext`,e}(Q||{}),ze={type:Z.Static,value:``},Be=/[a-zA-Z0-9_]/;function Ve(e){if(!e)return[[]];if(e===`/`)return[[ze]];if(!e.startsWith(`/`))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=Q.Static,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===Q.Static?a.push({type:Z.Static,value:l}):n===Q.Param||n===Q.ParamRegExp||n===Q.ParamRegExpEnd?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:Z.Param,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;st.length?t.length===1&&t[0]===$.Static+$.Segment?1:-1:0}function qe(e,t){let n=0,r=e.score,i=t.score;for(;n0&&t[t.length-1]<0}var Ye={strict:!1,end:!0,sensitive:!1};function Xe(e,t,n){let r=h(Ge(Ve(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Ze(e,t){let n=[],r=new Map;t=y(Ye,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=$e(e);s.aliasOf=r&&r.record;let l=y(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push($e(h({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=Xe(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!tt(d)&&o(e.name)),at(d)&&c(d),s.children){let e=s.children;for(let t=0;t{o(f)}:_}function o(e){if(xe(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=rt(e,n);n.splice(t,0,e),e.record.name&&!tt(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw K(G.MATCHER_NOT_FOUND,{location:e});s=i.record.name,a=h(Qe(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&Qe(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name);else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw K(G.MATCHER_NOT_FOUND,{location:e,currentLocation:t});s=i.record.name,a=h({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:nt(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function Qe(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function $e(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:et(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,`mods`,{value:{}}),t}function et(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function tt(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function nt(e){return e.reduce((e,t)=>h(e,t.meta),{})}function rt(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;qe(e,t[i])<0?r=i:n=i+1}let i=it(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function it(e){let t=e;for(;t=t.parent;)if(at(t)&&qe(e,t)===0)return t}function at({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function ot(e){let t=l(J),n=l(Oe),a=i(()=>{let n=r(e.to);return t.resolve(n)}),o=i(()=>{let{matched:e}=a.value,{length:t}=e,r=e[t-1],i=n.matched;if(!r||!i.length)return-1;let o=i.findIndex(j.bind(null,r));if(o>-1)return o;let s=dt(e[t-2]);return t>1&&dt(r)===s&&i[i.length-1].path!==s?i.findIndex(j.bind(null,e[t-2])):o}),s=i(()=>o.value>-1&&ut(n.params,a.value.params)),c=i(()=>o.value>-1&&o.value===n.matched.length-1&&M(n.params,a.value.params));function u(n={}){if(lt(n)){let n=t[r(e.replace)?`replace`:`push`](r(e.to)).catch(_);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:a,href:i(()=>a.value.href),isActive:s,isExactActive:c,navigate:u}}function st(e){return e.length===1?e[0]:e}var ct=u({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:ot,setup(e,{slots:t}){let r=n(ot(e)),{options:a}=l(J),o=i(()=>({[ft(e.activeClass,a.linkActiveClass,`router-link-active`)]:r.isActive,[ft(e.exactActiveClass,a.linkExactActiveClass,`router-link-exact-active`)]:r.isExactActive}));return()=>{let n=t.default&&st(t.default(r));return e.custom?n:c(`a`,{"aria-current":r.isExactActive?e.ariaCurrentValue:null,href:r.href,onClick:r.navigate,class:o.value},n)}}});function lt(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function ut(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!v(i)||i.length!==r.length||r.some((e,t)=>e!==i[t]))return!1}return!0}function dt(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var ft=(e,t,n)=>e??t??n,pt=u({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(e,{attrs:n,slots:o}){let u=l(ke),d=i(()=>e.route||u.value),f=l(De,0),p=i(()=>{let e=r(f),{matched:t}=d.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),m=i(()=>d.value.matched[p.value]);s(De,i(()=>p.value+1)),s(Ee,m),s(ke,d);let g=a();return t(()=>[g.value,m.value,e.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!j(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let t=d.value,r=e.name,i=m.value,a=i&&i.components[r];if(!a)return mt(o.default,{Component:a,route:t});let s=i.props[r],l=c(a,h({},s?s===!0?t.params:typeof s==`function`?s(t):s:null,n,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(i.instances[r]=null)},ref:g}));return mt(o.default,{Component:l,route:t})||l}}});function mt(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var ht=pt;function gt(t){let n=Ze(t.routes,t),i=t.parseQuery||Ce,a=t.stringifyQuery||we,s=t.history,c=Y(),l=Y(),u=Y(),p=e(I),m=I;f&&t.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let y=g.bind(null,e=>``+e),b=g.bind(null,de),ee=g.bind(null,O);function te(e,t){let r,i;return xe(e)?(r=n.getRecordMatcher(e),i=t):i=e,n.addRoute(i,r)}function ne(e){let t=n.getRecordMatcher(e);t&&n.removeRoute(t)}function re(){return n.getRoutes().map(e=>e.record)}function ie(e){return!!n.getRecordMatcher(e)}function x(e,t){if(t=h({},t||p.value),typeof e==`string`){let r=pe(i,e,t.path),a=n.resolve({path:r.path},t),o=s.createHref(r.fullPath);return h(r,a,{params:ee(a.params),hash:O(r.hash),redirectedFrom:void 0,href:o})}let r;if(e.path!=null)r=h({},e,{path:pe(i,e.path,t.path).path});else{let n=h({},e.params);for(let e in n)n[e]??delete n[e];r=h({},e,{params:b(n)}),t.params=b(t.params)}let o=n.resolve(r,t),c=e.hash||``;o.params=y(ee(o.params));let l=me(a,h({},e,{hash:ce(c),path:o.path})),u=s.createHref(l);return h({fullPath:l,hash:c,query:a===we?Te(e.query):e.query||{}},o,{redirectedFrom:void 0,href:u})}function S(e){return typeof e==`string`?pe(i,e,p.value.path):h({},e)}function C(e,t){if(m!==e)return K(G.NAVIGATION_CANCELLED,{from:t,to:e})}function w(e){return T(e)}function ae(e){return w(h(S(e),{replace:!0}))}function oe(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=S(i):{path:i},i.params={}),h({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function T(e,t){let n=m=x(e),r=p.value,i=e.state,o=e.force,s=e.replace===!0,c=oe(n,r);if(c)return T(h(S(c),{state:typeof c==`object`?h({},i,c.state):i,force:o,replace:s}),t||n);let l=n;l.redirectedFrom=t;let u;return!o&&he(a,r,n)&&(u=K(G.NAVIGATION_DUPLICATED,{to:l,from:r}),R(r,r,!0,!1)),(u?Promise.resolve(u):D(l,r)).catch(e=>q(e)?q(e,G.NAVIGATION_GUARD_REDIRECT)?e:F(e):N(e,l,r)).then(e=>{if(e){if(q(e,G.NAVIGATION_GUARD_REDIRECT))return T(h({replace:s},S(e.to),{state:typeof e.to==`object`?h({},i,e.to.state):i,force:o}),t||l)}else e=ue(l,r,!0,s,i);return le(l,r,e),e})}function se(e,t){let n=C(e,t);return n?Promise.reject(n):Promise.resolve()}function E(e){let t=V.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function D(e,t){let n,[r,i,a]=je(e,t);n=Ae(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(X(r,e,t))});let o=se.bind(null,e,t);return n.push(o),W(n).then(()=>{n=[];for(let r of c.list())n.push(X(r,e,t));return n.push(o),W(n)}).then(()=>{n=Ae(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(X(r,e,t))});return n.push(o),W(n)}).then(()=>{n=[];for(let r of a)if(r.beforeEnter)if(v(r.beforeEnter))for(let i of r.beforeEnter)n.push(X(i,e,t));else n.push(X(r.beforeEnter,e,t));return n.push(o),W(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=Ae(a,`beforeRouteEnter`,e,t,E),n.push(o),W(n))).then(()=>{n=[];for(let r of l.list())n.push(X(r,e,t));return n.push(o),W(n)}).catch(e=>q(e,G.NAVIGATION_CANCELLED)?e:Promise.reject(e))}function le(e,t,n){u.list().forEach(r=>E(()=>r(e,t,n)))}function ue(e,t,n,r,i){let a=C(e,t);if(a)return a;let o=t===I,c=f?history.state:{};n&&(r||o?s.replace(e.fullPath,h({scroll:o&&c&&c.scroll},i)):s.push(e.fullPath,i)),p.value=e,R(e,t,n,o),F()}let k;function fe(){k||=s.listen((e,t,n)=>{if(!H.listening)return;let r=x(e),i=oe(r,H.currentRoute.value);if(i){T(h(i,{replace:!0,force:!0}),r).catch(_);return}m=r;let a=p.value;f&&ve(_e(a.fullPath,n.delta),U()),D(r,a).catch(e=>q(e,G.NAVIGATION_ABORTED|G.NAVIGATION_CANCELLED)?e:q(e,G.NAVIGATION_GUARD_REDIRECT)?(T(h(S(e.to),{force:!0}),r).then(e=>{q(e,G.NAVIGATION_ABORTED|G.NAVIGATION_DUPLICATED)&&!n.delta&&n.type===L.pop&&s.go(-1,!1)}).catch(_),Promise.reject()):(n.delta&&s.go(-n.delta,!1),N(e,r,a))).then(e=>{e||=ue(r,a,!1),e&&(n.delta&&!q(e,G.NAVIGATION_CANCELLED)?s.go(-n.delta,!1):n.type===L.pop&&q(e,G.NAVIGATION_ABORTED|G.NAVIGATION_DUPLICATED)&&s.go(-1,!1)),le(r,a,e)}).catch(_)})}let A=Y(),j=Y(),M;function N(e,t,n){F(e);let r=j.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function P(){return M&&p.value!==I?Promise.resolve():new Promise((e,t)=>{A.add([e,t])})}function F(e){return M||(M=!e,fe(),A.list().forEach(([t,n])=>e?n(e):t()),A.reset()),e}function R(e,n,r,i){let{scrollBehavior:a}=t;if(!f||!a)return Promise.resolve();let o=!r&&ye(_e(e.fullPath,0))||(i||!r)&&history.state&&history.state.scroll||null;return d().then(()=>a(e,n,o)).then(e=>e&&ge(e)).catch(t=>N(t,e,n))}let z=e=>s.go(e),B,V=new Set,H={currentRoute:p,listening:!0,addRoute:te,removeRoute:ne,clearRoutes:n.clearRoutes,hasRoute:ie,getRoutes:re,resolve:x,options:t,push:w,replace:ae,go:z,back:()=>z(-1),forward:()=>z(1),beforeEach:c.add,beforeResolve:l.add,afterEach:u.add,onError:j.add,isReady:P,install(e){e.component(`RouterLink`,ct),e.component(`RouterView`,ht),e.config.globalProperties.$router=H,Object.defineProperty(e.config.globalProperties,`$route`,{enumerable:!0,get:()=>r(p)}),f&&!B&&p.value===I&&(B=!0,w(s.location).catch(e=>{}));let t={};for(let e in I)Object.defineProperty(t,e,{get:()=>p.value[e],enumerable:!0});e.provide(J,H),e.provide(Oe,o(t)),e.provide(ke,p);let n=e.unmount;V.add(e),e.unmount=function(){V.delete(e),V.size<1&&(m=I,k&&k(),k=null,p.value=I,B=!1,M=!1),n()}}};function W(e){return e.reduce((e,t)=>e.then(()=>E(t)),Promise.resolve())}return H}function _t(){return l(J)}function vt(e){return l(Oe)}export{vt as a,Re as i,ht as n,_t as o,gt as r,ct as t}; \ No newline at end of file +import{Dn as e,Fn as t,Qn as n,Sn as r,Xn as i,Yn as a,gn as o,on as s,pn as c,qn as l,rr as u,vn as d}from"./game-logic-BBFCPVtv.js";var f=typeof document<`u`;function p(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function m(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&&p(e.default)}var h=Object.assign;function g(e,t){let n={};for(let r in t){let i=t[r];n[r]=v(i)?i.map(e):e(i)}return n}var _=()=>{},v=Array.isArray;function y(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var b=/#/g,ee=/&/g,te=/\//g,ne=/=/g,re=/\?/g,ie=/\+/g,x=/%5B/g,S=/%5D/g,C=/%5E/g,w=/%60/g,ae=/%7B/g,oe=/%7C/g,T=/%7D/g,se=/%20/g;function E(e){return e==null?``:encodeURI(``+e).replace(oe,`|`).replace(x,`[`).replace(S,`]`)}function ce(e){return E(e).replace(ae,`{`).replace(T,`}`).replace(C,`^`)}function D(e){return E(e).replace(ie,`%2B`).replace(se,`+`).replace(b,`%23`).replace(ee,`%26`).replace(w,"`").replace(ae,`{`).replace(T,`}`).replace(C,`^`)}function le(e){return D(e).replace(ne,`%3D`)}function ue(e){return E(e).replace(b,`%23`).replace(re,`%3F`)}function de(e){return ue(e).replace(te,`%2F`)}function O(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var k=/\/$/,fe=e=>e.replace(k,``);function pe(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=F(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:O(o)}}function me(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function A(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function he(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&j(t.matched[r],n.matched[i])&&M(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function j(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function M(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(!N(e[n],t[n]))return!1;return!0}function N(e,t){return v(e)?P(e,t):v(t)?P(t,e):e===t}function P(e,t){return v(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function F(e,t){if(e.startsWith(`/`))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o1&&a--;else break;return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var I={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0},L=function(e){return e.pop=`pop`,e.push=`push`,e}({}),R=function(e){return e.back=`back`,e.forward=`forward`,e.unknown=``,e}({});function z(e){if(!e)if(f){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^\/]+/,``)}else e=`/`;return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),fe(e)}var B=/^[^#]+#/;function V(e,t){return e.replace(B,`#`)+t}function H(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var U=()=>({left:window.scrollX,top:window.scrollY});function ge(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=H(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function _e(e,t){return(history.state?history.state.position-t:-1)+e}var W=new Map;function ve(e,t){W.set(e,t)}function ye(e){let t=W.get(e);return W.delete(e),t}function be(e){return typeof e==`string`||e&&typeof e==`object`}function xe(e){return typeof e==`string`||typeof e==`symbol`}var G=function(e){return e[e.MATCHER_NOT_FOUND=1]=`MATCHER_NOT_FOUND`,e[e.NAVIGATION_GUARD_REDIRECT=2]=`NAVIGATION_GUARD_REDIRECT`,e[e.NAVIGATION_ABORTED=4]=`NAVIGATION_ABORTED`,e[e.NAVIGATION_CANCELLED=8]=`NAVIGATION_CANCELLED`,e[e.NAVIGATION_DUPLICATED=16]=`NAVIGATION_DUPLICATED`,e}({}),Se=Symbol(``);G.MATCHER_NOT_FOUND,G.NAVIGATION_GUARD_REDIRECT,G.NAVIGATION_ABORTED,G.NAVIGATION_CANCELLED,G.NAVIGATION_DUPLICATED;function K(e,t){return h(Error(),{type:e,[Se]:!0},t)}function q(e,t){return e instanceof Error&&Se in e&&(t==null||!!(e.type&t))}function Ce(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;ee&&D(e)):[r&&D(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function Te(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=v(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}var Ee=Symbol(``),De=Symbol(``),J=Symbol(``),Oe=Symbol(``),ke=Symbol(``);function Y(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function X(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(K(G.NAVIGATION_ABORTED,{from:n,to:t})):e instanceof Error?c(e):be(e)?c(K(G.NAVIGATION_GUARD_REDIRECT,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function Ae(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(!(t!==`beforeRouteEnter`&&!o.instances[e]))if(p(s)){let c=(s.__vccOpts||s)[t];c&&a.push(X(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=m(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&X(c,n,r,o,e,i)()}))}}return a}function je(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;oj(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>j(e,s))||i.push(s))}return[n,r,i]}var Me=()=>location.protocol+`//`+location.host;function Ne(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),A(n,``)}return A(n,e)+r+i}function Pe(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=Ne(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:L.pop,direction:u?u>0?R.forward:R.back:R.unknown})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(h({},e.state,{scroll:U()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function Fe(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?U():null}}function Ie(e){let{history:t,location:n}=window,r={value:Ne(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:Me()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,h({},t.state,Fe(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=h({},i.value,t.state,{forward:e,scroll:U()});a(o.current,o,!0),a(e,h({},Fe(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function Le(e){e=z(e);let t=Ie(e),n=Pe(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=h({location:``,base:e,go:r,createHref:V.bind(null,e)},t,n);return Object.defineProperty(i,`location`,{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,`state`,{enumerable:!0,get:()=>t.state.value}),i}function Re(e){return e=location.host?e||location.pathname+location.search:``,e.includes(`#`)||(e+=`#`),Le(e)}var Z=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.Group=2]=`Group`,e}({}),Q=function(e){return e[e.Static=0]=`Static`,e[e.Param=1]=`Param`,e[e.ParamRegExp=2]=`ParamRegExp`,e[e.ParamRegExpEnd=3]=`ParamRegExpEnd`,e[e.EscapeNext=4]=`EscapeNext`,e}(Q||{}),ze={type:Z.Static,value:``},Be=/[a-zA-Z0-9_]/;function Ve(e){if(!e)return[[]];if(e===`/`)return[[ze]];if(!e.startsWith(`/`))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=Q.Static,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===Q.Static?a.push({type:Z.Static,value:l}):n===Q.Param||n===Q.ParamRegExp||n===Q.ParamRegExpEnd?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:Z.Param,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;st.length?t.length===1&&t[0]===$.Static+$.Segment?1:-1:0}function qe(e,t){let n=0,r=e.score,i=t.score;for(;n0&&t[t.length-1]<0}var Ye={strict:!1,end:!0,sensitive:!1};function Xe(e,t,n){let r=h(Ge(Ve(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Ze(e,t){let n=[],r=new Map;t=y(Ye,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=$e(e);s.aliasOf=r&&r.record;let l=y(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push($e(h({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=Xe(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!tt(d)&&o(e.name)),at(d)&&c(d),s.children){let e=s.children;for(let t=0;t{o(f)}:_}function o(e){if(xe(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=rt(e,n);n.splice(t,0,e),e.record.name&&!tt(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw K(G.MATCHER_NOT_FOUND,{location:e});s=i.record.name,a=h(Qe(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&Qe(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name);else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw K(G.MATCHER_NOT_FOUND,{location:e,currentLocation:t});s=i.record.name,a=h({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:nt(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function Qe(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function $e(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:et(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,`mods`,{value:{}}),t}function et(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function tt(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function nt(e){return e.reduce((e,t)=>h(e,t.meta),{})}function rt(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;qe(e,t[i])<0?r=i:n=i+1}let i=it(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function it(e){let t=e;for(;t=t.parent;)if(at(t)&&qe(e,t)===0)return t}function at({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function ot(e){let t=d(J),n=d(Oe),r=s(()=>{let n=u(e.to);return t.resolve(n)}),i=s(()=>{let{matched:e}=r.value,{length:t}=e,i=e[t-1],a=n.matched;if(!i||!a.length)return-1;let o=a.findIndex(j.bind(null,i));if(o>-1)return o;let s=dt(e[t-2]);return t>1&&dt(i)===s&&a[a.length-1].path!==s?a.findIndex(j.bind(null,e[t-2])):o}),a=s(()=>i.value>-1&&ut(n.params,r.value.params)),o=s(()=>i.value>-1&&i.value===n.matched.length-1&&M(n.params,r.value.params));function c(n={}){if(lt(n)){let n=t[u(e.replace)?`replace`:`push`](u(e.to)).catch(_);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:r,href:s(()=>r.value.href),isActive:a,isExactActive:o,navigate:c}}function st(e){return e.length===1?e[0]:e}var ct=c({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:ot,setup(e,{slots:t}){let n=l(ot(e)),{options:r}=d(J),i=s(()=>({[ft(e.activeClass,r.linkActiveClass,`router-link-active`)]:n.isActive,[ft(e.exactActiveClass,r.linkExactActiveClass,`router-link-exact-active`)]:n.isExactActive}));return()=>{let r=t.default&&st(t.default(n));return e.custom?r:o(`a`,{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},r)}}});function lt(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function ut(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!v(i)||i.length!==r.length||r.some((e,t)=>e!==i[t]))return!1}return!0}function dt(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var ft=(e,t,n)=>e??t??n,pt=c({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(n,{attrs:r,slots:i}){let c=d(ke),l=s(()=>n.route||c.value),f=d(De,0),p=s(()=>{let e=u(f),{matched:t}=l.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),m=s(()=>l.value.matched[p.value]);e(De,s(()=>p.value+1)),e(Ee,m),e(ke,l);let g=a();return t(()=>[g.value,m.value,n.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!j(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let e=l.value,t=n.name,a=m.value,s=a&&a.components[t];if(!s)return mt(i.default,{Component:s,route:e});let c=a.props[t],u=o(s,h({},c?c===!0?e.params:typeof c==`function`?c(e):c:null,r,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(a.instances[t]=null)},ref:g}));return mt(i.default,{Component:u,route:e})||u}}});function mt(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var ht=pt;function gt(e){let t=Ze(e.routes,e),a=e.parseQuery||Ce,o=e.stringifyQuery||we,s=e.history,c=Y(),l=Y(),d=Y(),p=n(I),m=I;f&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let y=g.bind(null,e=>``+e),b=g.bind(null,de),ee=g.bind(null,O);function te(e,n){let r,i;return xe(e)?(r=t.getRecordMatcher(e),i=n):i=e,t.addRoute(i,r)}function ne(e){let n=t.getRecordMatcher(e);n&&t.removeRoute(n)}function re(){return t.getRoutes().map(e=>e.record)}function ie(e){return!!t.getRecordMatcher(e)}function x(e,n){if(n=h({},n||p.value),typeof e==`string`){let r=pe(a,e,n.path),i=t.resolve({path:r.path},n),o=s.createHref(r.fullPath);return h(r,i,{params:ee(i.params),hash:O(r.hash),redirectedFrom:void 0,href:o})}let r;if(e.path!=null)r=h({},e,{path:pe(a,e.path,n.path).path});else{let t=h({},e.params);for(let e in t)t[e]??delete t[e];r=h({},e,{params:b(t)}),n.params=b(n.params)}let i=t.resolve(r,n),c=e.hash||``;i.params=y(ee(i.params));let l=me(o,h({},e,{hash:ce(c),path:i.path})),u=s.createHref(l);return h({fullPath:l,hash:c,query:o===we?Te(e.query):e.query||{}},i,{redirectedFrom:void 0,href:u})}function S(e){return typeof e==`string`?pe(a,e,p.value.path):h({},e)}function C(e,t){if(m!==e)return K(G.NAVIGATION_CANCELLED,{from:t,to:e})}function w(e){return T(e)}function ae(e){return w(h(S(e),{replace:!0}))}function oe(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=S(i):{path:i},i.params={}),h({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function T(e,t){let n=m=x(e),r=p.value,i=e.state,a=e.force,s=e.replace===!0,c=oe(n,r);if(c)return T(h(S(c),{state:typeof c==`object`?h({},i,c.state):i,force:a,replace:s}),t||n);let l=n;l.redirectedFrom=t;let u;return!a&&he(o,r,n)&&(u=K(G.NAVIGATION_DUPLICATED,{to:l,from:r}),R(r,r,!0,!1)),(u?Promise.resolve(u):D(l,r)).catch(e=>q(e)?q(e,G.NAVIGATION_GUARD_REDIRECT)?e:F(e):N(e,l,r)).then(e=>{if(e){if(q(e,G.NAVIGATION_GUARD_REDIRECT))return T(h({replace:s},S(e.to),{state:typeof e.to==`object`?h({},i,e.to.state):i,force:a}),t||l)}else e=ue(l,r,!0,s,i);return le(l,r,e),e})}function se(e,t){let n=C(e,t);return n?Promise.reject(n):Promise.resolve()}function E(e){let t=V.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function D(e,t){let n,[r,i,a]=je(e,t);n=Ae(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(X(r,e,t))});let o=se.bind(null,e,t);return n.push(o),W(n).then(()=>{n=[];for(let r of c.list())n.push(X(r,e,t));return n.push(o),W(n)}).then(()=>{n=Ae(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(X(r,e,t))});return n.push(o),W(n)}).then(()=>{n=[];for(let r of a)if(r.beforeEnter)if(v(r.beforeEnter))for(let i of r.beforeEnter)n.push(X(i,e,t));else n.push(X(r.beforeEnter,e,t));return n.push(o),W(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=Ae(a,`beforeRouteEnter`,e,t,E),n.push(o),W(n))).then(()=>{n=[];for(let r of l.list())n.push(X(r,e,t));return n.push(o),W(n)}).catch(e=>q(e,G.NAVIGATION_CANCELLED)?e:Promise.reject(e))}function le(e,t,n){d.list().forEach(r=>E(()=>r(e,t,n)))}function ue(e,t,n,r,i){let a=C(e,t);if(a)return a;let o=t===I,c=f?history.state:{};n&&(r||o?s.replace(e.fullPath,h({scroll:o&&c&&c.scroll},i)):s.push(e.fullPath,i)),p.value=e,R(e,t,n,o),F()}let k;function fe(){k||=s.listen((e,t,n)=>{if(!H.listening)return;let r=x(e),i=oe(r,H.currentRoute.value);if(i){T(h(i,{replace:!0,force:!0}),r).catch(_);return}m=r;let a=p.value;f&&ve(_e(a.fullPath,n.delta),U()),D(r,a).catch(e=>q(e,G.NAVIGATION_ABORTED|G.NAVIGATION_CANCELLED)?e:q(e,G.NAVIGATION_GUARD_REDIRECT)?(T(h(S(e.to),{force:!0}),r).then(e=>{q(e,G.NAVIGATION_ABORTED|G.NAVIGATION_DUPLICATED)&&!n.delta&&n.type===L.pop&&s.go(-1,!1)}).catch(_),Promise.reject()):(n.delta&&s.go(-n.delta,!1),N(e,r,a))).then(e=>{e||=ue(r,a,!1),e&&(n.delta&&!q(e,G.NAVIGATION_CANCELLED)?s.go(-n.delta,!1):n.type===L.pop&&q(e,G.NAVIGATION_ABORTED|G.NAVIGATION_DUPLICATED)&&s.go(-1,!1)),le(r,a,e)}).catch(_)})}let A=Y(),j=Y(),M;function N(e,t,n){F(e);let r=j.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function P(){return M&&p.value!==I?Promise.resolve():new Promise((e,t)=>{A.add([e,t])})}function F(e){return M||(M=!e,fe(),A.list().forEach(([t,n])=>e?n(e):t()),A.reset()),e}function R(t,n,i,a){let{scrollBehavior:o}=e;if(!f||!o)return Promise.resolve();let s=!i&&ye(_e(t.fullPath,0))||(a||!i)&&history.state&&history.state.scroll||null;return r().then(()=>o(t,n,s)).then(e=>e&&ge(e)).catch(e=>N(e,t,n))}let z=e=>s.go(e),B,V=new Set,H={currentRoute:p,listening:!0,addRoute:te,removeRoute:ne,clearRoutes:t.clearRoutes,hasRoute:ie,getRoutes:re,resolve:x,options:e,push:w,replace:ae,go:z,back:()=>z(-1),forward:()=>z(1),beforeEach:c.add,beforeResolve:l.add,afterEach:d.add,onError:j.add,isReady:P,install(e){e.component(`RouterLink`,ct),e.component(`RouterView`,ht),e.config.globalProperties.$router=H,Object.defineProperty(e.config.globalProperties,`$route`,{enumerable:!0,get:()=>u(p)}),f&&!B&&p.value===I&&(B=!0,w(s.location).catch(e=>{}));let t={};for(let e in I)Object.defineProperty(t,e,{get:()=>p.value[e],enumerable:!0});e.provide(J,H),e.provide(Oe,i(t)),e.provide(ke,p);let n=e.unmount;V.add(e),e.unmount=function(){V.delete(e),V.size<1&&(m=I,k&&k(),k=null,p.value=I,B=!1,M=!1),n()}}};function W(e){return e.reduce((e,t)=>e.then(()=>E(t)),Promise.resolve())}return H}function _t(){return d(J)}function vt(e){return d(Oe)}export{vt as a,Re as i,ht as n,_t as o,gt as r,ct as t}; \ No newline at end of file diff --git a/docs/assets/vendor-vueuse-CJcfYqoW.js b/docs/assets/vendor-vueuse-CJcfYqoW.js deleted file mode 100644 index 37b8fb1..0000000 --- a/docs/assets/vendor-vueuse-CJcfYqoW.js +++ /dev/null @@ -1 +0,0 @@ -import{Bn as e,Cn as t,Gn as n,Jt as r,Ln as i,Wn as a,an as o,fn as s,nn as c,un as l,wn as u}from"./game-logic-Bi1l7y4K.js";import{a as d,i as f,l as p,o as m,r as h,s as g,u as _}from"./vendor-others-DTUzJ7S-.js";var v=f?window:void 0,y=f?window.document:void 0;f&&window.navigator,f&&window.location;function b(e){let t=a(e);return t?.$el??t}function x(...e){let t=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),i=r(()=>{let t=p(a(e[0])).filter(e=>e!=null);return t.every(e=>typeof e!=`string`)?t:void 0});return _(()=>[i.value?.map(e=>b(e))??[v].filter(e=>e!=null),p(a(i.value?e[1]:e[0])),p(n(i.value?e[2]:e[1])),a(i.value?e[3]:e[2])],([e,n,r,i],a,o)=>{if(!e?.length||!n?.length||!r?.length)return;let s=m(i)?{...i}:i,c=e.flatMap(e=>n.flatMap(n=>r.map(r=>t(e,n,r,s))));o(()=>{c.forEach(e=>e())})},{flush:`post`})}function S(){let t=e(!1),n=c();return n&&s(()=>{t.value=!0},n),t}function C(e){let t=S();return r(()=>(t.value,!!e()))}var w=Symbol(`vueuse-ssr-width`);function T(){let e=o()?h(w,null):null;return typeof e==`number`?e:void 0}function E(t,n={}){let{window:i=v,ssrWidth:o=T()}=n,s=C(()=>i&&`matchMedia`in i&&typeof i.matchMedia==`function`),c=e(typeof o==`number`),l=e(),d=e(!1);return u(()=>{if(c.value){c.value=!s.value,d.value=a(t).split(`,`).some(e=>{let t=e.includes(`not all`),n=e.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),r=e.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),i=!!(n||r);return n&&i&&(i=o>=g(n[1])),r&&i&&(i=o<=g(r[1])),t?!i:i});return}s.value&&(l.value=i.matchMedia(a(t)),d.value=l.value.matches)}),x(l,`change`,e=>{d.value=e.matches},{passive:!0}),r(()=>d.value)}function D(e){return JSON.parse(JSON.stringify(e))}function O(e,n,a,o={}){var s,u;let{clone:f=!1,passive:p=!1,eventName:m,deep:h=!1,defaultValue:g,shouldEmit:_}=o,v=c(),y=a||v?.emit||(v==null||(s=v.$emit)==null?void 0:s.bind(v))||(v==null||(u=v.proxy)==null||(u=u.$emit)==null?void 0:u.bind(v?.proxy)),b=m;n||=`modelValue`,b||=`update:${n.toString()}`;let x=e=>f?typeof f==`function`?f(e):D(e):e,S=()=>d(e[n])?x(e[n]):g,C=e=>{_?_(e)&&y(b,e):y(b,e)};if(p){let r=i(S()),a=!1;return t(()=>e[n],e=>{a||(a=!0,r.value=x(e),l(()=>a=!1))}),t(r,t=>{!a&&(t!==e[n]||h)&&C(t)},{deep:h}),r}else return r({get(){return S()},set(e){C(e)}})}export{O as i,x as n,E as r,y as t}; \ No newline at end of file diff --git a/docs/assets/vendor-vueuse-Djj-oRw9.js b/docs/assets/vendor-vueuse-Djj-oRw9.js new file mode 100644 index 0000000..58076a1 --- /dev/null +++ b/docs/assets/vendor-vueuse-Djj-oRw9.js @@ -0,0 +1 @@ +import{Fn as e,In as t,Qn as n,Sn as r,Yn as i,_n as a,mn as o,nr as s,on as c,rr as l,wn as u}from"./game-logic-BBFCPVtv.js";import{a as d,c as f,d as p,i as m,o as h,s as g,u as _}from"./vendor-others-Bce0hM6h.js";var v=d?window:void 0,y=d?window.document:void 0;d&&window.navigator,d&&window.location;function b(e){let t=s(e);return t?.$el??t}function x(...e){let t=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),n=c(()=>{let t=_(s(e[0])).filter(e=>e!=null);return t.every(e=>typeof e!=`string`)?t:void 0});return p(()=>[n.value?.map(e=>b(e))??[v].filter(e=>e!=null),_(s(n.value?e[1]:e[0])),_(l(n.value?e[2]:e[1])),s(n.value?e[3]:e[2])],([e,n,r,i],a,o)=>{if(!e?.length||!n?.length||!r?.length)return;let s=g(i)?{...i}:i,c=e.flatMap(e=>n.flatMap(n=>r.map(r=>t(e,n,r,s))));o(()=>{c.forEach(e=>e())})},{flush:`post`})}function S(){let e=n(!1),t=o();return t&&u(()=>{e.value=!0},t),e}function C(e){let t=S();return c(()=>(t.value,!!e()))}var w=Symbol(`vueuse-ssr-width`);function T(){let e=a()?m(w,null):null;return typeof e==`number`?e:void 0}function E(e,r={}){let{window:i=v,ssrWidth:a=T()}=r,o=C(()=>i&&`matchMedia`in i&&typeof i.matchMedia==`function`),l=n(typeof a==`number`),u=n(),d=n(!1);return t(()=>{if(l.value){l.value=!o.value,d.value=s(e).split(`,`).some(e=>{let t=e.includes(`not all`),n=e.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),r=e.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),i=!!(n||r);return n&&i&&(i=a>=f(n[1])),r&&i&&(i=a<=f(r[1])),t?!i:i});return}o.value&&(u.value=i.matchMedia(s(e)),d.value=u.value.matches)}),x(u,`change`,e=>{d.value=e.matches},{passive:!0}),c(()=>d.value)}function D(e){return JSON.parse(JSON.stringify(e))}function O(t,n,a,s={}){var l,u;let{clone:d=!1,passive:f=!1,eventName:p,deep:m=!1,defaultValue:g,shouldEmit:_}=s,v=o(),y=a||v?.emit||(v==null||(l=v.$emit)==null?void 0:l.bind(v))||(v==null||(u=v.proxy)==null||(u=u.$emit)==null?void 0:u.bind(v?.proxy)),b=p;n||=`modelValue`,b||=`update:${n.toString()}`;let x=e=>d?typeof d==`function`?d(e):D(e):e,S=()=>h(t[n])?x(t[n]):g,C=e=>{_?_(e)&&y(b,e):y(b,e)};if(f){let a=i(S()),o=!1;return e(()=>t[n],e=>{o||(o=!0,a.value=x(e),r(()=>o=!1))}),e(a,e=>{!o&&(e!==t[n]||m)&&C(e)},{deep:m}),a}else return c({get(){return S()},set(e){C(e)}})}export{O as i,x as n,E as r,y as t}; \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 7273ba8..3724619 100644 --- a/docs/index.html +++ b/docs/index.html @@ -7,21 +7,21 @@ OGame-Vue-Ts - - + + + - - - - + + + + - - - - + + + - + diff --git a/package.json b/package.json index c142305..f8fddcc 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,8 @@ "email": "1962257451@qq.com" }, "private": true, - "version": "1.2.0", - "buildDate": "2025/12/15 08:22:52", + "version": "1.2.5", + "buildDate": "2025/12/15 20:03:44", "main": "dist-electron/main.js", "type": "module", "scripts": { @@ -29,6 +29,7 @@ "file-saver": "^2.0.5", "finalhandler": "^2.1.1", "lucide-vue-next": "^0.556.0", + "marked": "^17.0.1", "pinia": "^3.0.4", "pinia-plugin-persistedstate": "^4.7.1", "reka-ui": "^2.6.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2f4a5a7..c528e33 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,6 +38,9 @@ importers: lucide-vue-next: specifier: ^0.556.0 version: 0.556.0(vue@3.5.25(typescript@5.9.3)) + marked: + specifier: ^17.0.1 + version: 17.0.1 pinia: specifier: ^3.0.4 version: 3.0.4(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) @@ -1744,6 +1747,11 @@ packages: resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + marked@17.0.1: + resolution: {integrity: sha512-boeBdiS0ghpWcSwoNm/jJBwdpFaMnZWRzjA6SkUMYb40SVaN1x7mmfGKp0jvexGcx+7y2La5zRZsYFZI6Qpypg==} + engines: {node: '>= 20'} + hasBin: true + matcher@3.0.0: resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} engines: {node: '>=10'} @@ -4271,6 +4279,8 @@ snapshots: - bluebird - supports-color + marked@17.0.1: {} + matcher@3.0.0: dependencies: escape-string-regexp: 4.0.0 diff --git a/src/App.vue b/src/App.vue index da61302..065f9a0 100644 --- a/src/App.vue +++ b/src/App.vue @@ -13,15 +13,67 @@
    -
    -

    - {{ planet.name }} - {{ t('planet.moon') }} -

    -

    - [{{ planet.position.galaxy }}:{{ planet.position.system }}:{{ planet.position.position }}] -

    -
    + + + + + + +
    +
    + {{ t('planet.switchPlanet') }} +
    +
    + +
    +
    +
    +
    +
    @@ -50,9 +102,19 @@ {{ item.name.value }} - + {{ unreadMessagesCount }} + + + {{ activeFleetMissionsCount }} + @@ -72,7 +134,11 @@ {{ localeNames[gameStore.locale] }} - +
    + + +
    +
    + +
    +
    +
    + +
    + + +
    +
    +
    +
    + + {{ t(`resources.${resourceType.key}`) }} +
    +
    + + + + +
    +
    +
    +
    +
    + + + +
    {{ confirmDialogTitle }} - {{ confirmDialogMessage }} + + {{ confirmDialogMessage }} + {{ t('common.cancel') }} - {{ t('common.confirm') }} + {{ t('common.confirm') }} @@ -244,15 +402,20 @@ + + + diff --git a/src/components/ItemDetailView.vue b/src/components/ItemDetailView.vue index 916d90f..5766766 100644 --- a/src/components/ItemDetailView.vue +++ b/src/components/ItemDetailView.vue @@ -15,23 +15,37 @@ {{ t('buildings.production') }} {{ t('buildings.consumption') }} {{ t('buildings.storageCapacity') }} - {{ t('buildings.fleetStorage') }} - {{ t('buildings.buildQueueBonus') }} + + {{ t('buildings.fleetStorage') }} + + + {{ t('buildings.buildQueueBonus') }} + {{ t('buildings.spaceBonus') }} {{ t('buildings.missileCapacity') }} - {{ t('buildings.buildSpeedBonus') }} - {{ t('buildings.researchSpeedBonus') }} + + {{ t('buildings.buildSpeedBonus') }} + + + {{ t('buildings.researchSpeedBonus') }} + {{ t('research.attackBonus') }} {{ t('research.shieldBonus') }} {{ t('research.armorBonus') }} {{ t('research.spyLevel') }} - {{ t('buildings.fleetStorage') }} - {{ t('research.researchQueueBonus') }} + + {{ t('buildings.fleetStorage') }} + + + {{ t('research.researchQueueBonus') }} + {{ t('research.colonySlots') }} {{ t('buildings.spaceBonus') }} {{ t('research.speedBonus') }} - {{ t('buildings.researchSpeedBonus') }} + + {{ t('buildings.researchSpeedBonus') }} + {{ t('player.points') }} @@ -78,7 +92,8 @@ - + + + + - @@ -87,7 +102,8 @@ - + + + + - @@ -95,8 +111,12 @@ +10 - +{{ getLevelData(level).buildSpeedBonus * 100 }}% - +{{ getLevelData(level).buildSpeedBonus * 100 }}% + + +{{ getLevelData(level).buildSpeedBonus * 100 }}% + + + +{{ getLevelData(level).buildSpeedBonus * 100 }}% + +{{ (getLevelData(level).researchSpeedBonus - 1) * 100 }}% @@ -115,7 +135,10 @@ +{{ level }} - + + + + + + +1 @@ -124,7 +147,7 @@ +1 - +5 {{ t('research.forAllPlanets') }} + +30 {{ t('research.forAllPlanets') }} +{{ level * 10 }}% @@ -275,7 +298,12 @@ {{ t(`${typeKey}.buildCost`) }} -
    +
    {{ t(`resources.${resourceType.key}`) }}:
    @@ -311,9 +339,17 @@

    {{ t(`${typeKey}.totalCost`) }}:

    -
    - {{ t(`resources.${resourceType.key}`) }}: - +
    + {{ t('resources.metal') }}: + +
    +
    + {{ t('resources.crystal') }}: + +
    +
    + {{ t('resources.deuterium') }}: +
    @@ -654,9 +690,9 @@ } else if (buildingType === 'shipyard') { fleetStorage = 1000 * level } else if (buildingType === 'terraformer') { - spaceBonus = 5 + spaceBonus = 30 } else if (buildingType === 'lunarBase') { - spaceBonus = 5 + spaceBonus = 30 } else if (buildingType === 'roboticsFactory') { buildSpeedBonus = level } else if (buildingType === 'naniteFactory') { @@ -685,7 +721,18 @@ } const points = pointsLogic.calculateTechnologyPoints(techType, level - 1, level) - return { cost, time, production: 0, consumption: 0, points, capacity: 0, fleetStorage: 0, spaceBonus: 0, buildSpeedBonus: 0, researchSpeedBonus } + return { + cost, + time, + production: 0, + consumption: 0, + points, + capacity: 0, + fleetStorage: 0, + spaceBonus: 0, + buildSpeedBonus: 0, + researchSpeedBonus + } } } diff --git a/src/components/UpdateDialog.vue b/src/components/UpdateDialog.vue new file mode 100644 index 0000000..1f3248d --- /dev/null +++ b/src/components/UpdateDialog.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/src/components/ui/dialog/DialogContent.vue b/src/components/ui/dialog/DialogContent.vue index b1a4e87..61c8de3 100644 --- a/src/components/ui/dialog/DialogContent.vue +++ b/src/components/ui/dialog/DialogContent.vue @@ -6,7 +6,7 @@ v-bind="{ ...$attrs, ...forwarded }" :class=" cn( - 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg', + 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-2xl', props.class ) " diff --git a/src/components/ui/dialog/ScrollableDialogContent.vue b/src/components/ui/dialog/ScrollableDialogContent.vue index 9820e90..02b8524 100644 --- a/src/components/ui/dialog/ScrollableDialogContent.vue +++ b/src/components/ui/dialog/ScrollableDialogContent.vue @@ -6,7 +6,7 @@ v-bind="{ ...$attrs, ...forwarded }" :class=" cn( - 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 w-[calc(100vw-3rem)] translate-x-[-50%] translate-y-[-50%] rounded-lg border shadow-lg duration-200 sm:w-auto flex flex-col p-0', + 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 w-[calc(100vw-3rem)] translate-x-[-50%] translate-y-[-50%] rounded-lg border shadow-lg duration-200 sm:w-auto sm:min-w-[764px] flex flex-col p-0', containerClass ) " diff --git a/src/components/ui/empty/Empty.vue b/src/components/ui/empty/Empty.vue new file mode 100644 index 0000000..cc0875a --- /dev/null +++ b/src/components/ui/empty/Empty.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/components/ui/empty/EmptyContent.vue b/src/components/ui/empty/EmptyContent.vue new file mode 100644 index 0000000..df010ec --- /dev/null +++ b/src/components/ui/empty/EmptyContent.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/empty/EmptyDescription.vue b/src/components/ui/empty/EmptyDescription.vue new file mode 100644 index 0000000..8a23597 --- /dev/null +++ b/src/components/ui/empty/EmptyDescription.vue @@ -0,0 +1,19 @@ + + + diff --git a/src/components/ui/empty/EmptyHeader.vue b/src/components/ui/empty/EmptyHeader.vue new file mode 100644 index 0000000..94d92ba --- /dev/null +++ b/src/components/ui/empty/EmptyHeader.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/empty/EmptyMedia.vue b/src/components/ui/empty/EmptyMedia.vue new file mode 100644 index 0000000..b59f2ce --- /dev/null +++ b/src/components/ui/empty/EmptyMedia.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/components/ui/empty/EmptyTitle.vue b/src/components/ui/empty/EmptyTitle.vue new file mode 100644 index 0000000..b330c91 --- /dev/null +++ b/src/components/ui/empty/EmptyTitle.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/empty/index.ts b/src/components/ui/empty/index.ts new file mode 100644 index 0000000..bd53bd2 --- /dev/null +++ b/src/components/ui/empty/index.ts @@ -0,0 +1,23 @@ +import type { VariantProps } from 'class-variance-authority' +import { cva } from 'class-variance-authority' + +export { default as Empty } from './Empty.vue' +export { default as EmptyContent } from './EmptyContent.vue' +export { default as EmptyDescription } from './EmptyDescription.vue' +export { default as EmptyHeader } from './EmptyHeader.vue' +export { default as EmptyMedia } from './EmptyMedia.vue' +export { default as EmptyTitle } from './EmptyTitle.vue' + +export const emptyMediaVariants = cva('mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0', { + variants: { + variant: { + default: 'bg-transparent', + icon: "bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6" + } + }, + defaultVariants: { + variant: 'default' + } +}) + +export type EmptyMediaVariants = VariantProps diff --git a/src/components/ui/scroll-area/ScrollArea.vue b/src/components/ui/scroll-area/ScrollArea.vue new file mode 100644 index 0000000..fdaf7fc --- /dev/null +++ b/src/components/ui/scroll-area/ScrollArea.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/components/ui/scroll-area/ScrollBar.vue b/src/components/ui/scroll-area/ScrollBar.vue new file mode 100644 index 0000000..57b5110 --- /dev/null +++ b/src/components/ui/scroll-area/ScrollBar.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/scroll-area/index.ts b/src/components/ui/scroll-area/index.ts new file mode 100644 index 0000000..2bd4fae --- /dev/null +++ b/src/components/ui/scroll-area/index.ts @@ -0,0 +1,2 @@ +export { default as ScrollArea } from './ScrollArea.vue' +export { default as ScrollBar } from './ScrollBar.vue' diff --git a/src/components/ui/sonner/Sonner.vue b/src/components/ui/sonner/Sonner.vue index c38642d..61831b1 100644 --- a/src/components/ui/sonner/Sonner.vue +++ b/src/components/ui/sonner/Sonner.vue @@ -37,6 +37,7 @@ import { CircleCheckIcon, InfoIcon, Loader2Icon, OctagonXIcon, TriangleAlertIcon, XIcon } from 'lucide-vue-next' import { Toaster as Sonner } from 'vue-sonner' import { cn } from '@/lib/utils' + import 'vue-sonner/style.css' const props = defineProps() diff --git a/src/composables/useGameLifecycle.ts b/src/composables/useGameLifecycle.ts deleted file mode 100644 index 43e8195..0000000 --- a/src/composables/useGameLifecycle.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { useGameStore } from '@/stores/gameStore' -import { useUniverseStore } from '@/stores/universeStore' -import * as gameLogic from '@/logic/gameLogic' -import * as planetLogic from '@/logic/planetLogic' -import * as resourceLogic from '@/logic/resourceLogic' -import * as officerLogic from '@/logic/officerLogic' - -/** - * 游戏生命周期管理 - * 处理游戏初始化、NPC星球生成等 - */ -export const useGameLifecycle = () => { - const gameStore = useGameStore() - const universeStore = useUniverseStore() - - /** - * 生成NPC星球 - */ - const generateNPCPlanets = (npcCount: number, planetPrefix: string) => { - for (let i = 0; i < npcCount; i++) { - const position = gameLogic.generateRandomPosition() - const key = gameLogic.generatePositionKey(position.galaxy, position.system, position.position) - if (universeStore.planets[key]) continue - const npcPlanet = planetLogic.createNPCPlanet(i, position, planetPrefix) - universeStore.planets[key] = npcPlanet - } - } - - /** - * 初始化游戏 - */ - const initGame = async (playerName: string, homePlanetName: string, planetPrefix: string) => { - const shouldInit = gameLogic.shouldInitializeGame(gameStore.player.planets) - - if (!shouldInit) { - const now = Date.now() - - // 计算离线收益(直接同步计算) - const bonuses = officerLogic.calculateActiveBonuses(gameStore.player.officers, now) - gameStore.player.planets.forEach(planet => { - resourceLogic.updatePlanetResources(planet, now, bonuses) - }) - - // 只在没有NPC星球时才生成(首次加载已有玩家数据时) - if (Object.keys(universeStore.planets).length === 0) { - generateNPCPlanets(200, planetPrefix) - } - return - } - - gameStore.player = gameLogic.initializePlayer(gameStore.player.id, playerName) - const initialPlanet = planetLogic.createInitialPlanet(gameStore.player.id, homePlanetName) - gameStore.player.planets = [initialPlanet] - gameStore.currentPlanetId = initialPlanet.id - // 新玩家初始化时生成NPC星球 - generateNPCPlanets(200, planetPrefix) - } - - return { - initGame, - generateNPCPlanets - } -} diff --git a/src/composables/useGameUpdate.ts b/src/composables/useGameUpdate.ts deleted file mode 100644 index 5aef26b..0000000 --- a/src/composables/useGameUpdate.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { useGameStore } from '@/stores/gameStore' -import { useNPCStore } from '@/stores/npcStore' -import type { FleetMission } from '@/types/game' -import * as gameLogic from '@/logic/gameLogic' - -/** - * 游戏更新循环 - * 处理游戏状态的定期更新 - */ -export const useGameUpdate = ( - processMissionArrival: (mission: FleetMission) => Promise, - processMissionReturn: (mission: FleetMission) => void, - processNPCMissionArrival: (npc: any, mission: FleetMission) => void, - processNPCMissionReturn: (npc: any, mission: FleetMission) => void, - updateNPCGrowth: (deltaSeconds: number) => void, - updateNPCBehavior: (deltaSeconds: number) => void -) => { - const gameStore = useGameStore() - const npcStore = useNPCStore() - - /** - * 游戏主更新函数 - */ - const updateGame = () => { - if (gameStore.isPaused) return - const now = Date.now() - gameStore.gameTime = now - - // 检查军官过期 - gameLogic.checkOfficersExpiration(gameStore.player.officers, now) - - // 处理游戏更新(建造队列、研究队列等) - const result = gameLogic.processGameUpdate(gameStore.player, now) - gameStore.player.researchQueue = result.updatedResearchQueue - - // 处理舰队任务 - gameStore.player.fleetMissions.forEach(mission => { - if (mission.status === 'outbound' && now >= mission.arrivalTime) { - processMissionArrival(mission) - } else if (mission.status === 'returning' && mission.returnTime && now >= mission.returnTime) { - processMissionReturn(mission) - } - }) - - // 处理NPC舰队任务 - npcStore.npcs.forEach(npc => { - if (npc.fleetMissions) { - npc.fleetMissions.forEach(mission => { - if (mission.status === 'outbound' && now >= mission.arrivalTime) { - processNPCMissionArrival(npc, mission) - } else if (mission.status === 'returning' && mission.returnTime && now >= mission.returnTime) { - processNPCMissionReturn(npc, mission) - } - }) - } - }) - - // NPC成长系统更新 - updateNPCGrowth(1) // 传入1秒的时间间隔 - - // NPC行为系统更新(侦查和攻击决策) - updateNPCBehavior(1) - } - - return { - updateGame - } -} diff --git a/src/composables/useI18n.ts b/src/composables/useI18n.ts index e1ec719..3441763 100644 --- a/src/composables/useI18n.ts +++ b/src/composables/useI18n.ts @@ -10,7 +10,7 @@ export const useI18n = () => { const messages = computed(() => locales[currentLocale.value]) // 获取翻译文本的辅助函数 - const t = (key: string): string => { + const t = (key: string, params?: Record): string => { const keys = key.split('.') let value: any = messages.value @@ -22,7 +22,16 @@ export const useI18n = () => { } } - return typeof value === 'string' ? value : key + let result = typeof value === 'string' ? value : key + + // 替换参数占位符 + if (params) { + Object.entries(params).forEach(([paramKey, paramValue]) => { + result = result.replace(new RegExp(`\\{${paramKey}\\}`, 'g'), String(paramValue)) + }) + } + + return result } const setLocale = (locale: Locale) => { diff --git a/src/composables/useMissionHandler.ts b/src/composables/useMissionHandler.ts deleted file mode 100644 index 2796003..0000000 --- a/src/composables/useMissionHandler.ts +++ /dev/null @@ -1,249 +0,0 @@ -import { useGameStore } from '@/stores/gameStore' -import { useUniverseStore } from '@/stores/universeStore' -import { useNPCStore } from '@/stores/npcStore' -import type { FleetMission } from '@/types/game' -import { MissionType } from '@/types/game' -import * as gameLogic from '@/logic/gameLogic' -import * as fleetLogic from '@/logic/fleetLogic' -import * as shipLogic from '@/logic/shipLogic' -import * as resourceLogic from '@/logic/resourceLogic' -import * as diplomaticLogic from '@/logic/diplomaticLogic' - -/** - * 舰队任务处理 - * 处理玩家舰队任务的到达和返回 - */ -export const useMissionHandler = (t: (key: string) => string) => { - const gameStore = useGameStore() - const universeStore = useUniverseStore() - const npcStore = useNPCStore() - - /** - * 处理任务到达 - */ - const processMissionArrival = async (mission: FleetMission) => { - // 从宇宙星球地图中查找目标星球 - const targetKey = gameLogic.generatePositionKey( - mission.targetPosition.galaxy, - mission.targetPosition.system, - mission.targetPosition.position - ) - // 先从玩家星球中查找,再从宇宙地图中查找 - const targetPlanet = - gameStore.player.planets.find( - p => - p.position.galaxy === mission.targetPosition.galaxy && - p.position.system === mission.targetPosition.system && - p.position.position === mission.targetPosition.position - ) || universeStore.planets[targetKey] - - // 获取起始星球名称(用于报告) - const originPlanet = gameStore.player.planets.find(p => p.id === mission.originPlanetId) - const originPlanetName = originPlanet?.name || t('fleetView.unknownPlanet') - - if (mission.missionType === MissionType.Transport) { - const result = fleetLogic.processTransportArrival(mission, targetPlanet, gameStore.player, npcStore.npcs) - // 生成运输任务报告 - if (!gameStore.player.missionReports) { - gameStore.player.missionReports = [] - } - gameStore.player.missionReports.push({ - id: `mission-report-${mission.id}`, - timestamp: Date.now(), - missionType: MissionType.Transport, - originPlanetId: mission.originPlanetId, - originPlanetName, - targetPosition: mission.targetPosition, - targetPlanetId: targetPlanet?.id, - targetPlanetName: - targetPlanet?.name || `[${mission.targetPosition.galaxy}:${mission.targetPosition.system}:${mission.targetPosition.position}]`, - success: result.success, - message: result.success ? t('missionReports.transportSuccess') : t('missionReports.transportFailed'), - details: { - transportedResources: mission.cargo - }, - read: false - }) - } else if (mission.missionType === MissionType.Attack) { - const attackResult = await fleetLogic.processAttackArrival(mission, targetPlanet, gameStore.player, null, gameStore.player.planets) - if (attackResult) { - gameStore.player.battleReports.push(attackResult.battleResult) - - // 检查是否攻击了NPC星球,更新外交关系 - if (targetPlanet) { - const targetNpc = npcStore.npcs.find(npc => npc.planets.some(p => p.id === targetPlanet.id)) - if (targetNpc) { - diplomaticLogic.handleAttackReputation(gameStore.player, targetNpc, attackResult.battleResult, npcStore.npcs) - } - } - - if (attackResult.moon) { - gameStore.player.planets.push(attackResult.moon) - } - if (attackResult.debrisField) { - // 将残骸场添加到游戏状态 - universeStore.debrisFields[attackResult.debrisField.id] = attackResult.debrisField - } - } - } else if (mission.missionType === MissionType.Colonize) { - const newPlanet = fleetLogic.processColonizeArrival(mission, targetPlanet, gameStore.player, t('planet.colonyPrefix')) - // 生成殖民任务报告 - if (!gameStore.player.missionReports) { - gameStore.player.missionReports = [] - } - gameStore.player.missionReports.push({ - id: `mission-report-${mission.id}`, - timestamp: Date.now(), - missionType: MissionType.Colonize, - originPlanetId: mission.originPlanetId, - originPlanetName, - targetPosition: mission.targetPosition, - targetPlanetId: newPlanet?.id, - targetPlanetName: newPlanet?.name, - success: !!newPlanet, - message: newPlanet ? t('missionReports.colonizeSuccess') : t('missionReports.colonizeFailed'), - details: newPlanet - ? { - newPlanetId: newPlanet.id, - newPlanetName: newPlanet.name - } - : undefined, - read: false - }) - if (newPlanet) { - gameStore.player.planets.push(newPlanet) - } - } else if (mission.missionType === MissionType.Spy) { - const spyReport = fleetLogic.processSpyArrival(mission, targetPlanet, gameStore.player, null, npcStore.npcs) - if (spyReport) gameStore.player.spyReports.push(spyReport) - } else if (mission.missionType === MissionType.Deploy) { - const deployed = fleetLogic.processDeployArrival(mission, targetPlanet, gameStore.player.id) - // 生成部署任务报告 - if (!gameStore.player.missionReports) { - gameStore.player.missionReports = [] - } - gameStore.player.missionReports.push({ - id: `mission-report-${mission.id}`, - timestamp: Date.now(), - missionType: MissionType.Deploy, - originPlanetId: mission.originPlanetId, - originPlanetName, - targetPosition: mission.targetPosition, - targetPlanetId: targetPlanet?.id, - targetPlanetName: - targetPlanet?.name || `[${mission.targetPosition.galaxy}:${mission.targetPosition.system}:${mission.targetPosition.position}]`, - success: deployed, - message: deployed ? t('missionReports.deploySuccess') : t('missionReports.deployFailed'), - details: { - deployedFleet: mission.fleet - }, - read: false - }) - if (deployed) { - const missionIndex = gameStore.player.fleetMissions.indexOf(mission) - if (missionIndex > -1) gameStore.player.fleetMissions.splice(missionIndex, 1) - return - } - } else if (mission.missionType === MissionType.Recycle) { - // 处理回收任务 - const debrisId = `debris_${mission.targetPosition.galaxy}_${mission.targetPosition.system}_${mission.targetPosition.position}` - const debrisField = universeStore.debrisFields[debrisId] - const recycleResult = fleetLogic.processRecycleArrival(mission, debrisField) - - // 生成回收任务报告 - if (!gameStore.player.missionReports) { - gameStore.player.missionReports = [] - } - gameStore.player.missionReports.push({ - id: `mission-report-${mission.id}`, - timestamp: Date.now(), - missionType: MissionType.Recycle, - originPlanetId: mission.originPlanetId, - originPlanetName, - targetPosition: mission.targetPosition, - success: !!recycleResult, - message: recycleResult ? t('missionReports.recycleSuccess') : t('missionReports.recycleFailed'), - details: recycleResult - ? { - recycledResources: recycleResult.collectedResources, - remainingDebris: recycleResult.remainingDebris || undefined - } - : undefined, - read: false - }) - - if (recycleResult && debrisField) { - if (recycleResult.remainingDebris && (recycleResult.remainingDebris.metal > 0 || recycleResult.remainingDebris.crystal > 0)) { - // 更新残骸场 - universeStore.debrisFields[debrisId] = { - id: debrisField.id, - position: debrisField.position, - resources: recycleResult.remainingDebris, - createdAt: debrisField.createdAt, - expiresAt: debrisField.expiresAt - } - } else { - // 残骸场已被完全收集,删除 - delete universeStore.debrisFields[debrisId] - } - } - } else if (mission.missionType === MissionType.Destroy) { - // 处理行星毁灭任务 - const destroyResult = fleetLogic.processDestroyArrival(mission, targetPlanet, gameStore.player) - - // 生成毁灭任务报告 - if (!gameStore.player.missionReports) { - gameStore.player.missionReports = [] - } - gameStore.player.missionReports.push({ - id: `mission-report-${mission.id}`, - timestamp: Date.now(), - missionType: MissionType.Destroy, - originPlanetId: mission.originPlanetId, - originPlanetName, - targetPosition: mission.targetPosition, - targetPlanetId: targetPlanet?.id, - targetPlanetName: targetPlanet?.name, - success: destroyResult?.success || false, - message: destroyResult?.success ? t('missionReports.destroySuccess') : t('missionReports.destroyFailed'), - details: destroyResult?.success - ? { - destroyedPlanetName: - targetPlanet?.name || - `[${mission.targetPosition.galaxy}:${mission.targetPosition.system}:${mission.targetPosition.position}]` - } - : undefined, - read: false - }) - - if (destroyResult && destroyResult.success && destroyResult.planetId) { - // 星球被摧毁 - // 从玩家星球列表中移除(如果是玩家的星球) - const planetIndex = gameStore.player.planets.findIndex(p => p.id === destroyResult.planetId) - if (planetIndex > -1) { - gameStore.player.planets.splice(planetIndex, 1) - } else { - // 不是玩家星球,从宇宙地图中移除 - delete universeStore.planets[targetKey] - } - } - } - } - - /** - * 处理任务返回 - */ - const processMissionReturn = (mission: FleetMission) => { - const originPlanet = gameStore.player.planets.find(p => p.id === mission.originPlanetId) - if (!originPlanet) return - shipLogic.addFleet(originPlanet.fleet, mission.fleet) - resourceLogic.addResources(originPlanet.resources, mission.cargo) - const missionIndex = gameStore.player.fleetMissions.indexOf(mission) - if (missionIndex > -1) gameStore.player.fleetMissions.splice(missionIndex, 1) - } - - return { - processMissionArrival, - processMissionReturn - } -} diff --git a/src/composables/useNPCHandler.ts b/src/composables/useNPCHandler.ts deleted file mode 100644 index 8ca3777..0000000 --- a/src/composables/useNPCHandler.ts +++ /dev/null @@ -1,300 +0,0 @@ -import { useGameStore } from '@/stores/gameStore' -import { useUniverseStore } from '@/stores/universeStore' -import { useNPCStore } from '@/stores/npcStore' -import type { NPC, FleetMission, IncomingFleetAlert } from '@/types/game' -import { MissionType } from '@/types/game' -import * as gameLogic from '@/logic/gameLogic' -import * as fleetLogic from '@/logic/fleetLogic' -import * as shipLogic from '@/logic/shipLogic' -import * as npcGrowthLogic from '@/logic/npcGrowthLogic' -import * as npcBehaviorLogic from '@/logic/npcBehaviorLogic' - -/** - * NPC处理 - * 处理NPC舰队任务、成长系统、行为系统 - */ -export const useNPCHandler = () => { - const gameStore = useGameStore() - const universeStore = useUniverseStore() - const npcStore = useNPCStore() - - /** - * 移除即将到来的舰队警告 - */ - const removeIncomingFleetAlert = (alert: IncomingFleetAlert) => { - if (!gameStore.player.incomingFleetAlerts) return - const index = gameStore.player.incomingFleetAlerts.indexOf(alert) - if (index > -1) { - gameStore.player.incomingFleetAlerts.splice(index, 1) - } - } - - /** - * 根据任务ID移除即将到来的舰队警告 - */ - const removeIncomingFleetAlertById = (missionId: string) => { - if (!gameStore.player.incomingFleetAlerts) return - const index = gameStore.player.incomingFleetAlerts.findIndex(a => a.id === missionId) - if (index > -1) { - gameStore.player.incomingFleetAlerts.splice(index, 1) - } - } - - /** - * 处理NPC任务到达 - */ - const processNPCMissionArrival = (npc: NPC, mission: FleetMission) => { - if (mission.missionType === MissionType.Recycle) { - // NPC回收任务到达 - const debrisId = mission.debrisFieldId - if (!debrisId) { - console.warn('[NPC Mission] Recycle mission missing debrisFieldId') - mission.status = 'returning' - mission.returnTime = Date.now() + (mission.arrivalTime - mission.departureTime) - return - } - - const debrisField = universeStore.debrisFields[debrisId] - const recycleResult = fleetLogic.processRecycleArrival(mission, debrisField) - - if (recycleResult && debrisField) { - if (recycleResult.remainingDebris && (recycleResult.remainingDebris.metal > 0 || recycleResult.remainingDebris.crystal > 0)) { - // 更新残骸场 - universeStore.debrisFields[debrisId] = { - id: debrisField.id, - position: debrisField.position, - resources: recycleResult.remainingDebris, - createdAt: debrisField.createdAt - } - } else { - // 残骸已被完全回收,从宇宙中删除 - delete universeStore.debrisFields[debrisId] - } - } - - // 移除即将到来的警告(回收任务已到达) - removeIncomingFleetAlertById(mission.id) - - // 设置返回时间 - mission.returnTime = Date.now() + (mission.arrivalTime - mission.departureTime) - return - } - - // 找到目标星球 - const targetKey = gameLogic.generatePositionKey( - mission.targetPosition.galaxy, - mission.targetPosition.system, - mission.targetPosition.position - ) - const targetPlanet = - gameStore.player.planets.find( - p => - p.position.galaxy === mission.targetPosition.galaxy && - p.position.system === mission.targetPosition.system && - p.position.position === mission.targetPosition.position - ) || universeStore.planets[targetKey] - - if (!targetPlanet) { - console.warn('[NPC Mission] Target planet not found') - return - } - - if (mission.missionType === MissionType.Spy) { - // NPC侦查到达 - const { spiedNotification, spyReport } = npcBehaviorLogic.processNPCSpyArrival(npc, mission, targetPlanet, gameStore.player) - - // 保存侦查报告到NPC(用于后续攻击决策) - if (!npc.playerSpyReports) { - npc.playerSpyReports = {} - } - npc.playerSpyReports[targetPlanet.id] = spyReport - - // 添加被侦查通知给玩家 - if (!gameStore.player.spiedNotifications) { - gameStore.player.spiedNotifications = [] - } - gameStore.player.spiedNotifications.push(spiedNotification) - - // 移除即将到来的警告(侦查已到达) - removeIncomingFleetAlertById(mission.id) - } else if (mission.missionType === MissionType.Attack) { - // NPC攻击到达 - 使用专门的NPC攻击处理逻辑 - fleetLogic.processNPCAttackArrival(npc, mission, targetPlanet, gameStore.player, gameStore.player.planets).then(attackResult => { - if (attackResult) { - // 添加战斗报告给玩家 - gameStore.player.battleReports.push(attackResult.battleResult) - - // 如果生成月球,添加到玩家星球列表 - if (attackResult.moon) { - gameStore.player.planets.push(attackResult.moon) - } - - // 如果生成残骸场,添加到宇宙残骸场列表 - if (attackResult.debrisField) { - universeStore.debrisFields[attackResult.debrisField.id] = attackResult.debrisField - } - } - - // 移除即将到来的警告(攻击已到达) - removeIncomingFleetAlertById(mission.id) - }) - } - } - - /** - * 处理NPC任务返回 - */ - const processNPCMissionReturn = (npc: NPC, mission: FleetMission) => { - // 找到NPC的起始星球 - const originPlanet = npc.planets.find(p => p.id === mission.originPlanetId) - if (!originPlanet) return - - // 返还舰队 - shipLogic.addFleet(originPlanet.fleet, mission.fleet) - - // 如果携带掠夺资源,给NPC添加资源 - if (mission.cargo) { - originPlanet.resources.metal += mission.cargo.metal - originPlanet.resources.crystal += mission.cargo.crystal - originPlanet.resources.deuterium += mission.cargo.deuterium - } - - // 从NPC任务列表中移除 - if (npc.fleetMissions) { - const missionIndex = npc.fleetMissions.indexOf(mission) - if (missionIndex > -1) { - npc.fleetMissions.splice(missionIndex, 1) - } - } - } - - // NPC成长系统更新 - let npcUpdateCounter = 0 - const NPC_UPDATE_INTERVAL = 10 - - /** - * 更新NPC成长系统 - */ - const updateNPCGrowth = (deltaSeconds: number) => { - // 累积时间 - npcUpdateCounter += deltaSeconds - - // 只在达到更新间隔时才执行 - if (npcUpdateCounter < NPC_UPDATE_INTERVAL) { - return - } - - // 获取所有星球 - const allPlanets = Object.values(universeStore.planets) - - // 如果NPC store为空,从星球数据中初始化NPC - if (npcStore.npcs.length === 0) { - const npcMap = new Map() - - allPlanets.forEach(planet => { - // 跳过玩家的星球 - if (planet.ownerId === gameStore.player.id || !planet.ownerId) return - - // 这是NPC的星球 - if (!npcMap.has(planet.ownerId)) { - npcMap.set(planet.ownerId, { - id: planet.ownerId, - name: `NPC-${planet.ownerId.substring(0, 8)}`, - planets: [], - technologies: {}, - difficulty: 'medium' as const, - relations: {}, - allies: [], - enemies: [] - }) - } - - npcMap.get(planet.ownerId)!.planets.push(planet) - }) - - // 保存到store - npcStore.npcs = Array.from(npcMap.values()) - - // 如果有NPC,基于玩家实力初始化NPC - if (npcStore.npcs.length > 0) { - const gameState: npcGrowthLogic.NPCGrowthGameState = { - planets: allPlanets, - player: gameStore.player, - npcs: npcStore.npcs - } - - const playerPower = npcGrowthLogic.calculatePlayerAveragePower(gameState) - - npcStore.npcs.forEach(npc => { - npcGrowthLogic.initializeNPCStartingPower(npc, playerPower) - }) - - // 初始化NPC之间的外交关系(盟友/敌人) - npcGrowthLogic.initializeNPCDiplomacy(npcStore.npcs) - } - } - - // 如果没有NPC,直接返回 - if (npcStore.npcs.length === 0) { - npcUpdateCounter = 0 - return - } - - // 构建游戏状态 - const gameState: npcGrowthLogic.NPCGrowthGameState = { - planets: allPlanets, - player: gameStore.player, - npcs: npcStore.npcs - } - - // 使用累积的时间更新每个NPC - npcStore.npcs.forEach(npc => { - npcGrowthLogic.updateNPCGrowth(npc, gameState, npcUpdateCounter) - }) - - // 重置计数器 - npcUpdateCounter = 0 - } - - // NPC行为系统更新 - let npcBehaviorCounter = 0 - const NPC_BEHAVIOR_INTERVAL = 5 - - /** - * 更新NPC行为系统 - */ - const updateNPCBehavior = (deltaSeconds: number) => { - // 累积时间 - npcBehaviorCounter += deltaSeconds - - // 只在达到更新间隔时才执行 - if (npcBehaviorCounter < NPC_BEHAVIOR_INTERVAL) { - return - } - - // 如果没有NPC,直接返回 - if (npcStore.npcs.length === 0) { - npcBehaviorCounter = 0 - return - } - - const now = Date.now() - const allPlanets = Object.values(universeStore.planets) - - // 更新每个NPC的行为 - npcStore.npcs.forEach(npc => { - npcBehaviorLogic.updateNPCBehavior(npc, gameStore.player, allPlanets, universeStore.debrisFields, now) - }) - - npcBehaviorCounter = 0 - } - - return { - processNPCMissionArrival, - processNPCMissionReturn, - removeIncomingFleetAlert, - removeIncomingFleetAlertById, - updateNPCGrowth, - updateNPCBehavior - } -} diff --git a/src/composables/useQueueHandler.ts b/src/composables/useQueueHandler.ts deleted file mode 100644 index d531e11..0000000 --- a/src/composables/useQueueHandler.ts +++ /dev/null @@ -1,103 +0,0 @@ -import type { Ref } from 'vue' -import { useGameStore } from '@/stores/gameStore' -import type { BuildQueueItem } from '@/types/game' -import * as buildingValidation from '@/logic/buildingValidation' -import * as resourceLogic from '@/logic/resourceLogic' -import * as researchValidation from '@/logic/researchValidation' - -/** - * 队列处理 - * 处理建造队列和研究队列的取消操作 - */ -export const useQueueHandler = ( - t: (key: string) => string, - confirmDialogOpen: Ref, - confirmDialogTitle: Ref, - confirmDialogMessage: Ref, - confirmDialogAction: Ref<(() => void) | null> -) => { - const gameStore = useGameStore() - - /** - * 取消建造 - */ - const handleCancelBuild = (queueId: string) => { - confirmDialogTitle.value = t('queue.cancelBuild') - confirmDialogMessage.value = t('queue.confirmCancel') - confirmDialogAction.value = () => { - if (!gameStore.currentPlanet) return false - const { item, index } = buildingValidation.findQueueItem(gameStore.currentPlanet.buildQueue, queueId) - if (!item) return false - if (item.type === 'building') { - const refund = buildingValidation.cancelBuildingUpgrade(gameStore.currentPlanet, item) - resourceLogic.addResources(gameStore.currentPlanet.resources, refund) - } - gameStore.currentPlanet.buildQueue.splice(index, 1) - return true - } - confirmDialogOpen.value = true - } - - /** - * 取消研究 - */ - const handleCancelResearch = (queueId: string) => { - confirmDialogTitle.value = t('queue.cancelResearch') - confirmDialogMessage.value = t('queue.confirmCancel') - confirmDialogAction.value = () => { - if (!gameStore.currentPlanet) return false - const { item, index } = buildingValidation.findQueueItem(gameStore.player.researchQueue, queueId) - if (!item) return false - if (item.type === 'technology') { - const refund = researchValidation.cancelTechnologyResearch(item) - resourceLogic.addResources(gameStore.currentPlanet.resources, refund) - } - gameStore.player.researchQueue.splice(index, 1) - return true - } - confirmDialogOpen.value = true - } - - /** - * 获取队列项名称 - */ - const getItemName = (item: BuildQueueItem): string => { - if (item.type === 'building' || item.type === 'demolish') { - const buildingName = t(`buildings.${item.itemType}`) - return item.type === 'demolish' ? `${t('buildingsView.demolish')} - ${buildingName}` : buildingName - } else if (item.type === 'technology') { - return t(`technologies.${item.itemType}`) - } else if (item.type === 'ship') { - return t(`ships.${item.itemType}`) - } else if (item.type === 'defense') { - return t(`defenses.${item.itemType}`) - } - return t('common.unknown') - } - - /** - * 获取剩余时间(秒) - */ - const getRemainingTime = (item: BuildQueueItem): number => { - const now = Date.now() - return Math.max(0, Math.floor((item.endTime - now) / 1000)) - } - - /** - * 获取队列进度(百分比) - */ - const getQueueProgress = (item: BuildQueueItem): number => { - const now = Date.now() - const total = item.endTime - item.startTime - const elapsed = now - item.startTime - return Math.min(100, Math.max(0, (elapsed / total) * 100)) - } - - return { - handleCancelBuild, - handleCancelResearch, - getItemName, - getRemainingTime, - getQueueProgress - } -} diff --git a/src/config/gameConfig.ts b/src/config/gameConfig.ts index 3cfd73f..3542203 100644 --- a/src/config/gameConfig.ts +++ b/src/config/gameConfig.ts @@ -123,7 +123,7 @@ export const BUILDINGS: Record = { baseTime: 30, // 减少建造时间:60→30秒 costMultiplier: 2, spaceUsage: 5, - fleetStorageBonus: 1000, // 每级增加100舰队仓储 + fleetStorageBonus: 1000, // 每级增加1000舰队仓储 requirements: { [BuildingType.RoboticsFactory]: 2 }, levelRequirements: { 8: { [BuildingType.RoboticsFactory]: 5, [BuildingType.ResearchLab]: 5 }, @@ -251,7 +251,7 @@ export const BUILDINGS: Record = { [BuildingType.Terraformer]: { id: BuildingType.Terraformer, name: '地形改造器', - description: '改造行星地形,每级增加5个可用空间', + description: '改造行星地形,每级增加30个可用空间', baseCost: { metal: 0, crystal: 50000, deuterium: 100000, darkMatter: 0, energy: 0 }, baseTime: 60, costMultiplier: 2, @@ -433,7 +433,7 @@ export const TECHNOLOGIES: Record = { baseCost: { metal: 0, crystal: 400, deuterium: 600, darkMatter: 0, energy: 0 }, baseTime: 60, costMultiplier: 2, - fleetStorageBonus: 500, // 每级全局增加50舰队仓储 + fleetStorageBonus: 500, // 每级全局增加500舰队仓储 maxLevel: 10, // 最多10级(最多11个研究队列) requirements: { [BuildingType.ResearchLab]: 1 }, levelRequirements: { @@ -588,7 +588,7 @@ export const TECHNOLOGIES: Record = { [TechnologyType.TerraformingTechnology]: { id: TechnologyType.TerraformingTechnology, name: '地形改造技术', - description: '研究行星地形改造技术,每级为所有行星增加5个可用空间', + description: '研究行星地形改造技术,每级为所有行星增加30个可用空间', baseCost: { metal: 0, crystal: 20000, deuterium: 40000, darkMatter: 0, energy: 0 }, baseTime: 90, costMultiplier: 2, @@ -867,7 +867,7 @@ export const SHIPS: Record = { fuelConsumption: 1, storageUsage: 100, requirements: { - [BuildingType.PlanetDestroyerFactory]: 10, + [BuildingType.PlanetDestroyerFactory]: 3, [TechnologyType.PlanetDestructionTech]: 7, [TechnologyType.HyperspaceDrive]: 7 } @@ -1085,15 +1085,15 @@ export const MOON_CONFIG = { baseChance: 1, // 基础1%概率 maxChance: 20, // 最大20%概率 chancePerDebris: 100000, // 每10万资源增加1%概率 - baseSize: 60, // 月球基础空间 - lunarBaseSpaceBonus: 5 // 每级月球基地增加的空间 + baseSize: 100, // 月球基础空间 + lunarBaseSpaceBonus: 30 // 每级月球基地增加的空间 } // 行星配置 export const PLANET_CONFIG = { - baseSize: 200, // 行星基础空间 - terraformerSpaceBonus: 5, // 每级地形改造器增加的空间 - terraformingTechSpaceBonus: 3 // 每级地形改造技术增加的空间 + baseSize: 300, // 行星基础空间 + terraformerSpaceBonus: 30, // 每级地形改造器增加的空间 + terraformingTechSpaceBonus: 30 // 每级地形改造技术增加的空间 } // 舰队仓储配置 diff --git a/src/locales/de.ts b/src/locales/de.ts index b9c5d57..c802afd 100644 --- a/src/locales/de.ts +++ b/src/locales/de.ts @@ -33,13 +33,19 @@ export default { viewRequirements: 'Anforderungen anzeigen', requirementsNotMet: 'Anforderungen nicht erfüllt', current: 'Aktuell', - level: 'Stufe' + level: 'Stufe', + gmModeActivated: 'GM-Modus aktiviert! Überprüfen Sie das Navigationsmenü.' }, errors: { requirementsNotMet: 'Anforderungen nicht erfüllt', insufficientResources: 'Unzureichende Ressourcen', insufficientFleetStorage: 'Unzureichender Flottenspeicher', shieldDomeLimit: 'Schildkuppel-Limit erreicht', + missileSiloLimit: 'Raketensilokapazität überschritten', + insufficientMissiles: 'Unzureichende Interkontinentalraketen', + invalidMissileCount: 'Ungültige Raketenanzahl', + targetOutOfRange: 'Ziel außer Reichweite', + cannotAttackOwnPlanet: 'Eigenen Planeten kann nicht angegriffen werden', fleetMissionsFull: 'Flottenmissionsplätze voll', insufficientFleet: 'Unzureichende Flotte', insufficientFuel: 'Unzureichender Treibstoff', @@ -166,8 +172,8 @@ export default { darkMatterCollector: 'Sammelt seltene Dunkle-Materie-Ressourcen', darkMatterTank: 'Erhöht Dunkle-Materie-Speicherkapazität', missileSilo: 'Lagert und startet Raketen, 10 Raketen pro Stufe', - terraformer: 'Terraformt Planetenoberfläche, erhöht verfügbaren Platz um 5 pro Stufe', - lunarBase: 'Erhöht verfügbaren Platz auf dem Mond, +5 Platz pro Stufe', + terraformer: 'Terraformt Planetenoberfläche, erhöht verfügbaren Platz um 30 pro Stufe', + lunarBase: 'Erhöht verfügbaren Platz auf dem Mond, +30 Platz pro Stufe', sensorPhalanx: 'Erkennt Flottenaktivitäten in umliegenden Systemen', jumpGate: 'Überträgt Flotten sofort zu anderen Monden', planetDestroyerFactory: 'Konstruiert ultimative Waffen zur Zerstörung von Planeten' @@ -283,7 +289,7 @@ export default { impulseDrive: 'Mittlere Antriebstechnologie', hyperspaceDrive: 'Fortgeschrittene Antriebstechnologie', darkMatterTechnology: 'Forschung zu Eigenschaften und Anwendungen von Dunkler Materie', - terraformingTechnology: 'Forschung zur Planeten-Terraforming-Technologie, erhöht verfügbaren Platz aller Planeten um 3 pro Stufe', + terraformingTechnology: 'Forschung zur Planeten-Terraforming-Technologie, erhöht verfügbaren Platz aller Planeten um 30 pro Stufe', planetDestructionTech: 'Schreckliche Technologie zur Zerstörung ganzer Planeten' }, officers: { @@ -316,6 +322,7 @@ export default { cancelResearch: 'Forschung abbrechen', confirmCancel: 'Möchten Sie wirklich abbrechen? 50% der Ressourcen werden zurückerstattet.', level: 'Stufe', + gmModeActivated: '', upgradeToLevel: 'Auf Stufe aufrüsten' }, overview: { @@ -336,6 +343,7 @@ export default { usedSpace: 'Verwendeter Platz', spaceUsage: 'Platzbedarf', level: 'Stufe', + gmModeActivated: '', upgradeCost: 'Ausbaukosten', buildTime: 'Bauzeit', upgrade: 'Ausbauen', @@ -361,6 +369,7 @@ export default { }, shipyard: { attack: 'Angriff', + missileAttack: 'Raketenangriff', shield: 'Schild', armor: 'Panzerung', speed: 'Geschwindigkeit', @@ -378,6 +387,7 @@ export default { title: 'Raumschiffwerft', fleetStorage: 'Flottenspeicher', attack: 'Angriff', + missileAttack: 'Raketenangriff', shield: 'Schild', speed: 'Geschwindigkeit', cargoCapacity: 'Ladekapazität', @@ -392,6 +402,7 @@ export default { }, defense: { attack: 'Angriff', + missileAttack: 'Raketenangriff', shield: 'Schild', armor: 'Panzerung', buildCost: 'Baukosten', @@ -405,6 +416,7 @@ export default { defenseView: { title: 'Verteidigung', attack: 'Angriff', + missileAttack: 'Raketenangriff', shield: 'Schild', armor: 'Panzerung', buildTime: 'Bauzeit', @@ -414,6 +426,7 @@ export default { totalCost: 'Gesamtkosten', build: 'Bauen', shieldDomeBuilt: 'Schildkuppel bereits gebaut', + missileCapacity: 'Raketenkapazität', inputError: 'Eingabefehler', inputErrorMessage: 'Bitte Baumenge eingeben!', buildFailed: 'Bau fehlgeschlagen', @@ -427,6 +440,7 @@ export default { flightMissions: 'Flugmissionen', currentPlanetFleet: 'Flotte auf diesem Planeten', attack: 'Angriff', + missileAttack: 'Raketenangriff', shield: 'Schild', armor: 'Panzerung', speed: 'Geschwindigkeit', @@ -521,27 +535,38 @@ export default { selectSystem: 'System auswählen', view: 'Anzeigen', myPlanet: 'Mein Planet', - myPlanets: 'Meine Planeten', + myPlanets: 'Meine Systeme ansehen', npcPlanets: 'NPC-Planeten', - selectPlanetToView: 'Planet zum Anzeigen auswählen', + selectPlanetToView: 'Planet auswählen, um sein System anzuzeigen', totalPositions: 'Insgesamt 10 Planetenpositionen', mine: 'Mein', hostile: 'Feindlich', emptySlot: 'Leer - Kolonisierbar', scout: 'Spähen', attack: 'Angriff', + missileAttack: 'Raketenangriff', colonize: 'Kolonisieren', switch: 'Wechseln', recycle: 'Recyceln', debrisField: 'Trümmerfeld', scoutPlanetTitle: 'Planet ausspionieren', attackPlanetTitle: 'Planet angreifen', + missileAttackTitle: 'Raketenangriff', colonizePlanetTitle: 'Planet kolonisieren', recyclePlanetTitle: 'Trümmer recyceln', scoutPlanetMessage: 'Möchten Sie wirklich Spionagesonden senden, um Planet [{coordinates}] auszuspionieren?\n\nBitte gehen Sie zur Flottenseite, um Schiffe auszuwählen und zu senden.', attackPlanetMessage: 'Möchten Sie wirklich Planet [{coordinates}] angreifen?\n\nBitte gehen Sie zur Flottenseite, um Schiffe auszuwählen und zu senden.', + missileAttackMessage: 'Interkontinentalraketen starten, um Planet [{coordinates}] anzugreifen', + missileCount: 'Raketenanzahl', + availableMissiles: 'Verfügbare Raketen', + missileRange: 'Raketenreichweite', + systems: 'Systeme', + distance: 'Entfernung', + flightTime: 'Flugzeit', + launchMissile: 'Starten', + cancel: 'Abbrechen', colonizePlanetMessage: 'Möchten Sie wirklich Position [{coordinates}] kolonisieren?\n\nBitte gehen Sie zur Flottenseite, um ein Kolonieschiff zu senden.', recyclePlanetMessage: @@ -699,10 +724,24 @@ export default { gamePaused: 'Spiel pausiert', gameResumed: 'Spiel fortgesetzt', playerName: 'Spielername', - gameSpeed: 'Spielgeschwindigkeit', - gameSpeedDesc: 'Aktueller Spielgeschwindigkeitsmultiplikator', + gameSpeed: 'Ressourcenproduktionsgeschwindigkeit', + gameSpeedDesc: 'Aktueller Ressourcenproduktionsgeschwindigkeitsmultiplikator', + speedChanged: 'Ressourcenproduktionsgeschwindigkeit auf {speed}x geändert', + speedReset: 'Ressourcenproduktionsgeschwindigkeit auf 1x zurückgesetzt', + reset: 'Zurücksetzen', about: 'Über', version: 'Version', + latestVersion: 'Neueste Version', + checkUpdate: 'Update prüfen', + checking: 'Prüfen...', + newVersionAvailable: 'Neue Version {version} verfügbar', + upToDate: 'Bereits auf dem neuesten Stand', + checkUpdateCooldown: 'Bitte versuchen Sie es später erneut (5 Minuten Abklingzeit)', + checkUpdateFailed: 'Update-Prüfung fehlgeschlagen, bitte überprüfen Sie Ihre Netzwerkverbindung', + viewUpdate: 'Update ansehen', + updateAvailable: 'Eine neue Version ist verfügbar. Klicken Sie, um die Versionshinweise anzuzeigen.', + download: 'Herunterladen', + goToDownload: 'Zum Download', buildDate: 'Build-Datum', community: 'Community', github: 'GitHub-Repository', @@ -741,12 +780,22 @@ export default { testSpy: 'Spionage testen', testAttack: 'Angriff testen', testSpyAndAttack: 'Spionage & Angriff testen', + testSpyMessage: 'Klicken Sie auf Bestätigen, um die Spionagemission zu beschleunigen', + testAttackMessage: 'Klicken Sie auf Bestätigen, um die Angriffsmission zu beschleunigen', + testSpyAndAttackMessage: 'Klicken Sie auf Bestätigen, um die Missionen zu beschleunigen', initializeFleet: 'NPC-Flotte initialisieren', accelerateMissions: 'Alle Missionen beschleunigen (5s)', selectNPCFirst: 'Bitte wählen Sie zuerst einen NPC', npcNoProbes: 'NPC hat keine Spionagesonden', npcNoSpyReport: 'NPC muss zuerst spionieren', npcMissionFailed: 'Mission konnte nicht erstellt werden', + npcNoPlanets: 'NPC hat keine Planeten', + npcWillSpyIn5s: '{npcName} wird in 5 Sekunden spionieren', + npcWillAttackIn5s: '{npcName} wird in 5 Sekunden angreifen', + npcWillSpyAndAttack: '{npcName} wird in 5s spionieren und in 10s angreifen', + acceleratedMissions: '{count} Missionen auf 5 Sekunden beschleunigt', + npcFleetInitialized: '{npcName} Flotte initialisiert', + npcFleetDetails: '100 Spionagesonden\n500 Leichte Jäger\n300 Schwere Jäger\n200 Kreuzer\n100 Schlachtschiffe\n50 Bomber\n30 Zerstörer\n20 Schlachtkreuzer', dangerZone: 'Gefahrenzone', dangerZoneDesc: 'Die folgenden Vorgänge sind irreversibel', resetGame: 'Spiel zurücksetzen', @@ -798,9 +847,32 @@ export default { events: { gift: 'Geschenk gesendet', attack: 'Angriff', + missileAttack: 'Raketenangriff', allyAttacked: 'Verbündeter angegriffen', spy: 'Spionage', stealDebris: 'Trümmer gestohlen' + }, + reports: { + giftedResources: '{metal}M {crystal}K {deuterium}D geschenkt', + receivedGiftFromPlayer: 'Geschenk von Spieler erhalten', + giftedToNpc: 'Sie haben {npcName} Ressourcen geschenkt. Ansehen +{reputation}', + rejectedPlayerGift: 'Geschenk des Spielers abgelehnt', + npcRejectedGift: '{npcName} hat Ihr Geschenk abgelehnt. Ansehen {reputation}', + attackedNpc: '{npcName} angegriffen', + wasAttackedByPlayer: 'Wurde von Spieler angegriffen', + youAttackedNpc: 'Sie haben {npcName} angegriffen', + playerAttackedAlly: 'Spieler hat Verbündeten {allyName} angegriffen', + allyDispleased: '{allyName} ist unzufrieden, dass Sie ihren Verbündeten {targetName} angegriffen haben', + wasSpiedByPlayer: 'Wurde von Spieler ausspioniert (entdeckt: {detected})', + spyDetected: 'Ihre Spionage wurde von {npcName} entdeckt', + stoleDebrisFromTerritory: 'Trümmer aus {npcName}s Territorium gestohlen', + playerStoleDebris: 'Spieler hat Trümmer aus Territorium gestohlen', + recycledDebrisNearNpc: 'Sie haben Trümmer in der Nähe von {npcName}s Planeten recycelt. Sie sind unzufrieden.', + giftedResourcesToPlayer: 'Ressourcen an Spieler geschenkt', + receivedGiftFromNpc: 'Geschenk von {npcName} erhalten', + acceptedGiftFromNpc: 'Sie haben ein Geschenk von {npcName} angenommen: {metal}M {crystal}K {deuterium}D', + playerRejectedGift: 'Spieler hat Geschenk abgelehnt', + rejectedGiftFromNpc: 'Sie haben ein Geschenk von {npcName} abgelehnt. Ansehen {reputation}' } }, pagination: { @@ -809,5 +881,10 @@ export default { first: 'Erste', last: 'Letzte', page: 'Seite {page}' + }, + notFound: { + title: 'Seite nicht gefunden', + description: 'Entschuldigung, die gesuchte Seite existiert nicht', + goHome: 'Zur Startseite' } } diff --git a/src/locales/en.ts b/src/locales/en.ts index ce78420..ecf2da3 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -33,13 +33,19 @@ export default { viewRequirements: 'View Requirements', requirementsNotMet: 'Requirements Not Met', current: 'Current', - level: 'Level' + level: 'Level', + gmModeActivated: 'GM Mode Activated! Check the navigation menu.' }, errors: { requirementsNotMet: 'Requirements not met', insufficientResources: 'Insufficient resources', insufficientFleetStorage: 'Insufficient fleet storage', shieldDomeLimit: 'Shield dome limit reached', + missileSiloLimit: 'Missile silo capacity exceeded', + insufficientMissiles: 'Insufficient interplanetary missiles', + invalidMissileCount: 'Invalid missile count', + targetOutOfRange: 'Target out of range', + cannotAttackOwnPlanet: 'Cannot attack your own planet', fleetMissionsFull: 'Fleet mission slots full', insufficientFleet: 'Insufficient fleet', insufficientFuel: 'Insufficient fuel', @@ -164,8 +170,8 @@ export default { darkMatterCollector: 'Collects rare dark matter resources', darkMatterTank: 'Increases dark matter storage capacity', missileSilo: 'Stores and launches missiles, 10 missiles per level', - terraformer: 'Terraforms planet surface, adds 5 available space per level', - lunarBase: 'Increases available space on the moon, +5 space per level', + terraformer: 'Terraforms planet surface, adds 30 available space per level', + lunarBase: 'Increases available space on the moon, +30 space per level', sensorPhalanx: 'Detects fleet activities in surrounding systems', jumpGate: 'Instantly transfers fleets to other moons', planetDestroyerFactory: 'Constructs ultimate weapons capable of destroying planets' @@ -283,7 +289,7 @@ export default { impulseDrive: 'Intermediate propulsion technology', hyperspaceDrive: 'Advanced propulsion technology', darkMatterTechnology: 'Research into dark matter properties and applications', - terraformingTechnology: 'Research planet terraforming technology, adds 3 available space to all planets per level', + terraformingTechnology: 'Research planet terraforming technology, adds 30 available space to all planets per level', planetDestructionTech: 'Terrifying technology for destroying entire planets' }, officers: { @@ -364,6 +370,7 @@ export default { }, shipyard: { attack: 'Attack', + missileAttack: 'Missile Attack', shield: 'Shield', armor: 'Armor', speed: 'Speed', @@ -381,6 +388,7 @@ export default { title: 'Shipyard', fleetStorage: 'Fleet Storage', attack: 'Attack', + missileAttack: 'Missile Attack', shield: 'Shield', speed: 'Speed', cargoCapacity: 'Cargo Capacity', @@ -395,6 +403,7 @@ export default { }, defense: { attack: 'Attack', + missileAttack: 'Missile Attack', shield: 'Shield', armor: 'Armor', buildCost: 'Build Cost', @@ -408,6 +417,7 @@ export default { defenseView: { title: 'Defense', attack: 'Attack', + missileAttack: 'Missile Attack', shield: 'Shield', armor: 'Armor', buildTime: 'Build Time', @@ -417,6 +427,7 @@ export default { totalCost: 'Total Cost', build: 'Build', shieldDomeBuilt: 'Shield dome already built', + missileCapacity: 'Missile Capacity', inputError: 'Input Error', inputErrorMessage: 'Please enter build quantity!', buildFailed: 'Build Failed', @@ -429,6 +440,7 @@ export default { flightMissions: 'Flight Missions', currentPlanetFleet: 'Current Planet Fleet', attack: 'Attack', + missileAttack: 'Missile Attack', shield: 'Shield', armor: 'Armor', speed: 'Speed', @@ -525,26 +537,37 @@ export default { selectSystem: 'Select System', view: 'View', myPlanet: 'My Planet', - myPlanets: 'My Planets', + myPlanets: 'View My Systems', npcPlanets: 'NPC Planets', - selectPlanetToView: 'Select planet to view', + selectPlanetToView: 'Select planet to view its system', totalPositions: '10 planet positions total', mine: 'Mine', hostile: 'Hostile', emptySlot: 'Empty - Colonizable', scout: 'Scout', attack: 'Attack', + missileAttack: 'Missile Attack', colonize: 'Colonize', switch: 'Switch', recycle: 'Recycle', debrisField: 'Debris Field', scoutPlanetTitle: 'Scout Planet', attackPlanetTitle: 'Attack Planet', + missileAttackTitle: 'Missile Attack', colonizePlanetTitle: 'Colonize Planet', recyclePlanetTitle: 'Recycle Debris', scoutPlanetMessage: 'Are you sure you want to send espionage probes to scout planet [{coordinates}]?\n\nPlease go to the fleet page to select ships and send.', attackPlanetMessage: 'Are you sure you want to attack planet [{coordinates}]?\n\nPlease go to the fleet page to select ships and send.', + missileAttackMessage: 'Launch interplanetary missiles to attack planet [{coordinates}]', + missileCount: 'Missile Count', + availableMissiles: 'Available Missiles', + missileRange: 'Missile Range', + systems: 'systems', + distance: 'Distance', + flightTime: 'Flight Time', + launchMissile: 'Launch', + cancel: 'Cancel', colonizePlanetMessage: 'Are you sure you want to colonize position [{coordinates}]?\n\nPlease go to the fleet page to send a colony ship.', recyclePlanetMessage: @@ -697,10 +720,24 @@ export default { gamePaused: 'Game paused', gameResumed: 'Game resumed', playerName: 'Player Name', - gameSpeed: 'Game Speed', - gameSpeedDesc: 'Current game speed multiplier', + gameSpeed: 'Resource Production Speed', + gameSpeedDesc: 'Current resource production speed multiplier', + speedChanged: 'Resource production speed changed to {speed}x', + speedReset: 'Resource production speed reset to 1x', + reset: 'Reset', about: 'About', version: 'Version', + latestVersion: 'Latest Version', + checkUpdate: 'Check Update', + checking: 'Checking...', + newVersionAvailable: 'New version {version} available', + upToDate: 'Already up to date', + checkUpdateCooldown: 'Please try again later (5 minute cooldown)', + checkUpdateFailed: 'Failed to check for updates, please check your network connection', + viewUpdate: 'View Update', + updateAvailable: 'A new version is available. Click to view release notes.', + download: 'Download', + goToDownload: 'Go to Download', buildDate: 'Build Date', community: 'Community', github: 'GitHub Repository', @@ -739,12 +776,22 @@ export default { testSpy: 'Test Spy', testAttack: 'Test Attack', testSpyAndAttack: 'Test Spy & Attack', + testSpyMessage: 'Click confirm to accelerate the spy mission', + testAttackMessage: 'Click confirm to accelerate the attack mission', + testSpyAndAttackMessage: 'Click confirm to accelerate the missions', initializeFleet: 'Initialize NPC Fleet', accelerateMissions: 'Accelerate All Missions (5s)', selectNPCFirst: 'Please select an NPC first', npcNoProbes: 'NPC has no spy probes', npcNoSpyReport: 'NPC needs to spy first', npcMissionFailed: 'Failed to create mission', + npcNoPlanets: 'NPC has no planets', + npcWillSpyIn5s: '{npcName} will spy in 5 seconds', + npcWillAttackIn5s: '{npcName} will attack in 5 seconds', + npcWillSpyAndAttack: '{npcName} will spy in 5s and attack in 10s', + acceleratedMissions: 'Accelerated {count} missions to 5 seconds', + npcFleetInitialized: '{npcName} fleet initialized', + npcFleetDetails: '100 Spy Probes\n500 Light Fighters\n300 Heavy Fighters\n200 Cruisers\n100 Battleships\n50 Bombers\n30 Destroyers\n20 Battlecruisers', dangerZone: 'Danger Zone', dangerZoneDesc: 'The following operations are irreversible', resetGame: 'Reset Game', @@ -796,9 +843,32 @@ export default { events: { gift: 'Sent Gift', attack: 'Attack', + missileAttack: 'Missile Attack', allyAttacked: 'Ally Attacked', spy: 'Espionage', stealDebris: 'Debris Stolen' + }, + reports: { + giftedResources: 'Gifted {metal}M {crystal}C {deuterium}D', + receivedGiftFromPlayer: 'Received gift from player', + giftedToNpc: 'You gifted resources to {npcName}. Reputation +{reputation}', + rejectedPlayerGift: 'Rejected player\'s gift', + npcRejectedGift: '{npcName} rejected your gift. Reputation {reputation}', + attackedNpc: 'Attacked {npcName}', + wasAttackedByPlayer: 'Was attacked by player', + youAttackedNpc: 'You attacked {npcName}', + playerAttackedAlly: 'Player attacked ally {allyName}', + allyDispleased: '{allyName} is displeased that you attacked their ally {targetName}', + wasSpiedByPlayer: 'Was spied by player (detected: {detected})', + spyDetected: 'Your espionage was detected by {npcName}', + stoleDebrisFromTerritory: 'Stole debris from {npcName}\'s territory', + playerStoleDebris: 'Player stole debris from territory', + recycledDebrisNearNpc: 'You recycled debris near {npcName}\'s planet. They are displeased.', + giftedResourcesToPlayer: 'Gifted resources to player', + receivedGiftFromNpc: 'Received gift from {npcName}', + acceptedGiftFromNpc: 'You accepted a gift from {npcName}: {metal}M {crystal}C {deuterium}D', + playerRejectedGift: 'Player rejected gift', + rejectedGiftFromNpc: 'You rejected a gift from {npcName}. Reputation {reputation}' } }, pagination: { @@ -807,5 +877,10 @@ export default { first: 'First', last: 'Last', page: 'Page {page}' + }, + notFound: { + title: 'Page Not Found', + description: 'Sorry, the page you are looking for does not exist', + goHome: 'Go Home' } } diff --git a/src/locales/ja.ts b/src/locales/ja.ts index e41d1aa..eb17250 100644 --- a/src/locales/ja.ts +++ b/src/locales/ja.ts @@ -33,13 +33,19 @@ export default { viewRequirements: '必要条件を表示', requirementsNotMet: '必要条件が満たされていません', current: '現在', - level: 'レベル' + level: 'レベル', + gmModeActivated: 'GMモードが有効になりました!ナビゲーションメニューをご確認ください。' }, errors: { requirementsNotMet: '前提条件を満たしていません', insufficientResources: '資源が不足しています', insufficientFleetStorage: '艦隊ストレージが不足しています', shieldDomeLimit: 'シールドドームの上限に達しました', + missileSiloLimit: 'ミサイル格納庫の容量を超えています', + insufficientMissiles: '惑星間ミサイルが不足しています', + invalidMissileCount: 'ミサイル数が無効です', + targetOutOfRange: 'ターゲットが射程外です', + cannotAttackOwnPlanet: '自分の惑星を攻撃できません', fleetMissionsFull: '艦隊ミッションスロットが満杯です', insufficientFleet: '艦隊が不足しています', insufficientFuel: '燃料が不足しています', @@ -166,8 +172,8 @@ export default { darkMatterCollector: '希少なダークマター資源を収集', darkMatterTank: 'ダークマターの貯蔵上限を増加', missileSilo: 'ミサイルを保管・発射、レベル毎に10発', - terraformer: '惑星地形を改造、レベル毎に利用可能スペース5増加', - lunarBase: '月の利用可能スペースを増加、レベル毎に+5スペース', + terraformer: '惑星地形を改造、レベル毎に利用可能スペース30増加', + lunarBase: '月の利用可能スペースを増加、レベル毎に+30スペース', sensorPhalanx: '周辺星系の艦隊活動を探知', jumpGate: '他の月へ艦隊を瞬間移動', planetDestroyerFactory: '惑星を破壊できる究極兵器を建造' @@ -283,7 +289,7 @@ export default { impulseDrive: '中級推進技術', hyperspaceDrive: '高級推進技術', darkMatterTechnology: 'ダークマターの性質と応用を研究', - terraformingTechnology: '惑星地形改造技術を研究、レベル毎に全惑星の利用可能スペース3増加', + terraformingTechnology: '惑星地形改造技術を研究、レベル毎に全惑星の利用可能スペース30増加', planetDestructionTech: '惑星全体を破壊する恐怖の技術を研究' }, officers: { @@ -316,10 +322,12 @@ export default { cancelResearch: '研究キャンセル', confirmCancel: 'キャンセルしますか?資源の50%が返還されます。', level: 'レベル', + gmModeActivated: '', upgradeToLevel: 'レベルにアップグレード' }, shipyard: { attack: '攻撃力', + missileAttack: 'ミサイル攻撃', shield: 'シールド', armor: '装甲', speed: '速度', @@ -351,6 +359,7 @@ export default { usedSpace: '使用済みスペース', spaceUsage: 'スペース使用量', level: 'レベル', + gmModeActivated: '', upgradeCost: 'アップグレードコスト', buildTime: '建設時間', upgrade: 'アップグレード', @@ -362,8 +371,8 @@ export default { demolishRefund: '解体返還', demolishFailed: '解体失敗', demolishFailedMessage: 'この建物を解体できません。建設キューが満杯か、建物レベルが0でないか確認してください。', - confirmDemolish: '', - confirmDemolishMessage: '' + confirmDemolish: '解体確認', + confirmDemolishMessage: '以下の建物を解体しますか?' }, researchView: { title: '研究', @@ -375,6 +384,7 @@ export default { }, defense: { attack: '攻撃力', + missileAttack: 'ミサイル攻撃', shield: 'シールド', armor: '装甲', buildCost: '建設コスト', @@ -389,6 +399,7 @@ export default { title: '造船所', fleetStorage: '艦隊ストレージ', attack: '攻撃力', + missileAttack: 'ミサイル攻撃', shield: 'シールド', speed: '速度', cargoCapacity: '積載量', @@ -404,6 +415,7 @@ export default { defenseView: { title: '防衛施設', attack: '攻撃力', + missileAttack: 'ミサイル攻撃', shield: 'シールド', armor: '装甲', buildTime: '建設時間', @@ -413,6 +425,7 @@ export default { totalCost: '総コスト', build: '建造', shieldDomeBuilt: 'シールドドーム建設済み', + missileCapacity: 'ミサイル容量', inputError: '入力エラー', inputErrorMessage: '建造数を入力してください!', buildFailed: '建造失敗', @@ -425,6 +438,7 @@ export default { flightMissions: '飛行ミッション', currentPlanetFleet: '現在の惑星艦隊', attack: '攻撃', + missileAttack: 'ミサイル攻撃', shield: 'シールド', armor: '装甲', speed: '速度', @@ -519,25 +533,36 @@ export default { selectSystem: '星系を選択', view: '表示', myPlanet: '自分の惑星', - myPlanets: '私の惑星', + myPlanets: '自分の星系を表示', npcPlanets: 'NPCの惑星', - selectPlanetToView: '表示する惑星を選択', + selectPlanetToView: '惑星を選択して星系を表示', totalPositions: '全10惑星位置', mine: '自分', hostile: '敵対', emptySlot: '空き - 植民可能', scout: '偵察', attack: '攻撃', + missileAttack: 'ミサイル攻撃', colonize: '植民', switch: '切り替え', recycle: '回収', debrisField: 'デブリフィールド', scoutPlanetTitle: '惑星偵察', attackPlanetTitle: '惑星攻撃', + missileAttackTitle: 'ミサイル攻撃', colonizePlanetTitle: '惑星植民', recyclePlanetTitle: 'デブリ回収', scoutPlanetMessage: '惑星[{coordinates}]にスパイプローブを送りますか?\n\n艦隊ページに移動して艦船を選択して派遣してください。', attackPlanetMessage: '惑星[{coordinates}]を攻撃しますか?\n\n艦隊ページに移動して艦船を選択して派遣してください。', + missileAttackMessage: '惑星[{coordinates}]に惑星間ミサイルを発射', + missileCount: 'ミサイル数', + availableMissiles: '利用可能なミサイル', + missileRange: 'ミサイル射程', + systems: 'システム', + distance: '距離', + flightTime: '飛行時間', + launchMissile: '発射', + cancel: 'キャンセル', colonizePlanetMessage: '位置[{coordinates}]を植民しますか?\n\n艦隊ページに移動してコロニーシップを派遣してください。', recyclePlanetMessage: '位置[{coordinates}]のデブリを回収しますか?\n\n艦隊ページに移動してリサイクラーを派遣してください。', sendGift: 'ギフト送信', @@ -690,10 +715,24 @@ export default { gamePaused: 'ゲームを一時停止しました', gameResumed: 'ゲームを再開しました', playerName: 'プレイヤー名', - gameSpeed: 'ゲーム速度', - gameSpeedDesc: '現在のゲーム速度倍率', + gameSpeed: '資源生産速度', + gameSpeedDesc: '現在の資源生産速度倍率', + speedChanged: '資源生産速度を{speed}xに変更しました', + speedReset: '資源生産速度を1xにリセットしました', + reset: 'リセット', about: 'について', version: 'バージョン', + latestVersion: '最新バージョン', + checkUpdate: 'アップデート確認', + checking: '確認中...', + newVersionAvailable: '新バージョン{version}が利用可能です', + upToDate: '最新バージョンです', + checkUpdateCooldown: 'しばらくしてから再度お試しください(5分間のクールダウン)', + checkUpdateFailed: 'アップデートの確認に失敗しました。ネットワーク接続を確認してください', + viewUpdate: '更新を表示', + updateAvailable: '新しいバージョンが利用可能です。クリックしてリリースノートを表示します。', + download: 'ダウンロード', + goToDownload: 'ダウンロードへ', buildDate: 'ビルド日', community: 'コミュニティ', github: 'GitHubリポジトリ', @@ -732,12 +771,22 @@ export default { testSpy: '偵察テスト', testAttack: '攻撃テスト', testSpyAndAttack: '偵察&攻撃テスト', + testSpyMessage: '確認をクリックして偵察ミッションを加速', + testAttackMessage: '確認をクリックして攻撃ミッションを加速', + testSpyAndAttackMessage: '確認をクリックしてミッションを加速', initializeFleet: 'NPC艦隊を初期化', accelerateMissions: 'すべてのミッションを加速(5秒)', selectNPCFirst: '最初にNPCを選択してください', npcNoProbes: 'NPCには偵察プローブがありません', npcNoSpyReport: 'NPCは最初に偵察する必要があります', npcMissionFailed: 'ミッションの作成に失敗しました', + npcNoPlanets: 'NPCに惑星がありません', + npcWillSpyIn5s: '{npcName}は5秒後に偵察します', + npcWillAttackIn5s: '{npcName}は5秒後に攻撃します', + npcWillSpyAndAttack: '{npcName}は5秒後に偵察し、10秒後に攻撃します', + acceleratedMissions: '{count}個のミッションを5秒後に加速しました', + npcFleetInitialized: '{npcName}艦隊が初期化されました', + npcFleetDetails: '100 偵察プローブ\n500 軽戦闘機\n300 重戦闘機\n200 巡洋艦\n100 戦艦\n50 爆撃機\n30 駆逐艦\n20 巡洋戦艦', dangerZone: '危険ゾーン', dangerZoneDesc: '以下の操作は元に戻せません', resetGame: 'ゲームをリセット', @@ -789,9 +838,32 @@ export default { events: { gift: 'ギフト送信', attack: '攻撃', + missileAttack: 'ミサイル攻撃', allyAttacked: '同盟が攻撃された', spy: '諜報活動', stealDebris: '残骸を略奪' + }, + reports: { + giftedResources: '{metal}M {crystal}C {deuterium}Dを贈呈', + receivedGiftFromPlayer: 'プレイヤーからギフトを受け取りました', + giftedToNpc: '{npcName}にリソースを贈呈しました。評判+{reputation}', + rejectedPlayerGift: 'プレイヤーのギフトを拒否しました', + npcRejectedGift: '{npcName}があなたのギフトを拒否しました。評判{reputation}', + attackedNpc: '{npcName}を攻撃しました', + wasAttackedByPlayer: 'プレイヤーに攻撃されました', + youAttackedNpc: 'あなたは{npcName}を攻撃しました', + playerAttackedAlly: 'プレイヤーが同盟{allyName}を攻撃しました', + allyDispleased: '{allyName}はあなたが同盟{targetName}を攻撃したことに不満です', + wasSpiedByPlayer: 'プレイヤーに偵察されました(発見:{detected})', + spyDetected: 'あなたの偵察が{npcName}に発見されました', + stoleDebrisFromTerritory: '{npcName}の領域から残骸を略奪しました', + playerStoleDebris: 'プレイヤーが領域から残骸を略奪しました', + recycledDebrisNearNpc: '{npcName}の惑星近くで残骸を回収しました。彼らは不満です。', + giftedResourcesToPlayer: 'プレイヤーにリソースを贈呈しました', + receivedGiftFromNpc: '{npcName}からギフトを受け取りました', + acceptedGiftFromNpc: '{npcName}からのギフトを受け取りました:{metal}M {crystal}C {deuterium}D', + playerRejectedGift: 'プレイヤーがギフトを拒否しました', + rejectedGiftFromNpc: '{npcName}からのギフトを拒否しました。評判{reputation}' } }, pagination: { @@ -800,5 +872,10 @@ export default { first: '最初', last: '最後', page: '{page}ページ' + }, + notFound: { + title: 'ページが見つかりません', + description: '申し訳ございません。お探しのページは存在しません', + goHome: 'ホームに戻る' } } diff --git a/src/locales/ko.ts b/src/locales/ko.ts index d24c698..4717d9f 100644 --- a/src/locales/ko.ts +++ b/src/locales/ko.ts @@ -33,13 +33,19 @@ export default { viewRequirements: '요구사항 보기', requirementsNotMet: '요구사항 미충족', current: '현재', - level: '레벨' + level: '레벨', + gmModeActivated: 'GM 모드가 활성화되었습니다! 탐색 메뉴를 확인하세요.' }, errors: { requirementsNotMet: '전제 조건 미충족', insufficientResources: '자원 부족', insufficientFleetStorage: '함대 저장소 부족', shieldDomeLimit: '실드 돔 한도 도달', + missileSiloLimit: '미사일 사일로 용량 초과', + insufficientMissiles: '행성간 미사일 부족', + invalidMissileCount: '잘못된 미사일 수량', + targetOutOfRange: '목표가 사정거리 밖', + cannotAttackOwnPlanet: '자신의 행성 공격 불가', fleetMissionsFull: '함대 임무 슬롯 가득 참', insufficientFleet: '함대 부족', insufficientFuel: '연료 부족', @@ -166,8 +172,8 @@ export default { darkMatterCollector: '희귀한 암흑 물질 자원 수집', darkMatterTank: '암흑 물질 저장 용량 증가', missileSilo: '미사일을 저장 및 발사, 레벨당 10발', - terraformer: '행성 지형 개조, 레벨당 가용 공간 5 증가', - lunarBase: '달 가용 공간 증가, 레벨당 +5 공간', + terraformer: '행성 지형 개조, 레벨당 가용 공간 30 증가', + lunarBase: '달 가용 공간 증가, 레벨당 +30 공간', sensorPhalanx: '주변 행성계의 함대 활동 감지', jumpGate: '다른 위성으로 함대 순간 이동', planetDestroyerFactory: '행성을 파괴할 수 있는 궁극 병기 건조' @@ -283,7 +289,7 @@ export default { impulseDrive: '중급 추진 기술', hyperspaceDrive: '고급 추진 기술', darkMatterTechnology: '암흑 물질의 성질과 응용 연구', - terraformingTechnology: '행성 지형 개조 기술 연구, 레벨당 모든 행성의 가용 공간 3 증가', + terraformingTechnology: '행성 지형 개조 기술 연구, 레벨당 모든 행성의 가용 공간 30 증가', planetDestructionTech: '행성 전체를 파괴하는 공포의 기술 연구' }, officers: { @@ -316,6 +322,7 @@ export default { cancelResearch: '연구 취소', confirmCancel: '취소하시겠습니까? 자원의 50%가 환불됩니다.', level: '레벨', + gmModeActivated: '', upgradeToLevel: '레벨로 업그레이드' }, overview: { @@ -336,6 +343,7 @@ export default { usedSpace: '사용된 공간', spaceUsage: '공간 사용', level: '레벨', + gmModeActivated: '', upgradeCost: '업그레이드 비용', buildTime: '건설 시간', upgrade: '업그레이드', @@ -347,8 +355,8 @@ export default { demolishRefund: '철거 환불', demolishFailed: '철거 실패', demolishFailedMessage: '이 건물을 철거할 수 없습니다. 건설 대기열이 가득 찼거나 건물 레벨이 0인지 확인하세요.', - confirmDemolish: '', - confirmDemolishMessage: '' + confirmDemolish: '철거 확인', + confirmDemolishMessage: '다음 건물을 철거하시겠습니까?' }, researchView: { title: '연구', @@ -360,6 +368,7 @@ export default { }, shipyard: { attack: '공격력', + missileAttack: '미사일 공격', shield: '쉴드', armor: '장갑', speed: '속도', @@ -377,6 +386,7 @@ export default { title: '조선소', fleetStorage: '함대 저장소', attack: '공격력', + missileAttack: '미사일 공격', shield: '실드', speed: '속도', cargoCapacity: '적재량', @@ -391,6 +401,7 @@ export default { }, defense: { attack: '공격력', + missileAttack: '미사일 공격', shield: '쉴드', armor: '장갑', buildCost: '건설 비용', @@ -404,6 +415,7 @@ export default { defenseView: { title: '방어 시설', attack: '공격력', + missileAttack: '미사일 공격', shield: '실드', armor: '장갑', buildTime: '건설 시간', @@ -413,6 +425,7 @@ export default { totalCost: '총 비용', build: '건조', shieldDomeBuilt: '실드 돔이 이미 건설됨', + missileCapacity: '미사일 용량', inputError: '입력 오류', inputErrorMessage: '건조 수량을 입력하세요!', buildFailed: '건조 실패', @@ -425,6 +438,7 @@ export default { flightMissions: '비행 임무', currentPlanetFleet: '현재 행성 함대', attack: '공격', + missileAttack: '미사일 공격', shield: '실드', armor: '장갑', speed: '속도', @@ -519,26 +533,37 @@ export default { selectSystem: '행성계 선택', view: '보기', myPlanet: '내 행성', - myPlanets: '내 행성들', + myPlanets: '내 행성계 보기', npcPlanets: 'NPC 행성들', - selectPlanetToView: '볼 행성 선택', + selectPlanetToView: '행성을 선택하여 행성계 보기', totalPositions: '총 10개 행성 위치', mine: '내 것', hostile: '적대', emptySlot: '빈 자리 - 식민 가능', scout: '정찰', attack: '공격', + missileAttack: '미사일 공격', colonize: '식민', switch: '전환', recycle: '회수', debrisField: '잔해 필드', scoutPlanetTitle: '행성 정찰', attackPlanetTitle: '행성 공격', + missileAttackTitle: '미사일 공격', colonizePlanetTitle: '행성 식민', recyclePlanetTitle: '잔해 회수', scoutPlanetMessage: '행성 [{coordinates}]을(를) 정찰하기 위해 정찰기를 보내시겠습니까?\n\n함대 페이지로 이동하여 함선을 선택하고 파견하세요.', attackPlanetMessage: '행성 [{coordinates}]을(를) 공격하시겠습니까?\n\n함대 페이지로 이동하여 함선을 선택하고 파견하세요.', + missileAttackMessage: '행성 [{coordinates}]에 행성간 미사일 발사', + missileCount: '미사일 수량', + availableMissiles: '사용 가능한 미사일', + missileRange: '미사일 사정거리', + systems: '시스템', + distance: '거리', + flightTime: '비행 시간', + launchMissile: '발사', + cancel: '취소', colonizePlanetMessage: '위치 [{coordinates}]을(를) 식민하시겠습니까?\n\n함대 페이지로 이동하여 식민선을 파견하세요.', recyclePlanetMessage: '위치 [{coordinates}]의 잔해를 회수하시겠습니까?\n\n함대 페이지로 이동하여 회수선을 파견하세요.', sendGift: '선물 보내기', @@ -691,10 +716,24 @@ export default { gamePaused: '게임이 일시정지되었습니다', gameResumed: '게임이 재개되었습니다', playerName: '플레이어 이름', - gameSpeed: '게임 속도', - gameSpeedDesc: '현재 게임 속도 배율', + gameSpeed: '자원 생산 속도', + gameSpeedDesc: '현재 자원 생산 속도 배율', + speedChanged: '자원 생산 속도가 {speed}x로 변경되었습니다', + speedReset: '자원 생산 속도가 1x로 재설정되었습니다', + reset: '재설정', about: '정보', version: '버전', + latestVersion: '최신 버전', + checkUpdate: '업데이트 확인', + checking: '확인 중...', + newVersionAvailable: '새 버전 {version} 사용 가능', + upToDate: '이미 최신 버전입니다', + checkUpdateCooldown: '나중에 다시 시도해주세요 (5분 쿨다운)', + checkUpdateFailed: '업데이트 확인 실패, 네트워크 연결을 확인하세요', + viewUpdate: '업데이트 보기', + updateAvailable: '새 버전이 사용 가능합니다. 릴리스 노트를 보려면 클릭하세요.', + download: '다운로드', + goToDownload: '다운로드로 이동', buildDate: '빌드 날짜', community: '커뮤니티', github: 'GitHub 저장소', @@ -733,12 +772,22 @@ export default { testSpy: '정찰 테스트', testAttack: '공격 테스트', testSpyAndAttack: '정찰 & 공격 테스트', - initializeFleet: 'NPC 함대 초기화', + testSpyMessage: '확인을 클릭하여 정찰 임무를 가속화', + testAttackMessage: '확인을 클릭하여 공격 임무를 가속화', + testSpyAndAttackMessage: '확인을 클릭하여 임무를 가속화', + initializeFleet: 'NPC 함대 초기化', accelerateMissions: '모든 임무 가속(5초)', selectNPCFirst: '먼저 NPC를 선택하세요', npcNoProbes: 'NPC에 정찰 프로브가 없습니다', npcNoSpyReport: 'NPC가 먼저 정찰해야 합니다', npcMissionFailed: '임무 생성 실패', + npcNoPlanets: 'NPC에 행성이 없습니다', + npcWillSpyIn5s: '{npcName}이(가) 5초 후에 정찰합니다', + npcWillAttackIn5s: '{npcName}이(가) 5초 후에 공격합니다', + npcWillSpyAndAttack: '{npcName}이(가) 5초 후에 정찰하고 10초 후에 공격합니다', + acceleratedMissions: '{count}개의 임무를 5초로 가속화했습니다', + npcFleetInitialized: '{npcName} 함대가 초기화되었습니다', + npcFleetDetails: '100 정찰 프로브\n500 경전투기\n300 중전투기\n200 순양함\n100 전함\n50 폭격기\n30 구축함\n20 순양전함', dangerZone: '위험 구역', dangerZoneDesc: '다음 작업은 되돌릴 수 없습니다', resetGame: '게임 초기화', @@ -790,9 +839,32 @@ export default { events: { gift: '선물 전송', attack: '공격', + missileAttack: '미사일 공격', allyAttacked: '동맹 공격당함', spy: '정찰', stealDebris: '잔해 약탈' + }, + reports: { + giftedResources: '{metal}M {crystal}C {deuterium}D 선물함', + receivedGiftFromPlayer: '플레이어로부터 선물을 받았습니다', + giftedToNpc: '{npcName}에게 자원을 선물했습니다. 평판 +{reputation}', + rejectedPlayerGift: '플레이어의 선물을 거부했습니다', + npcRejectedGift: '{npcName}이(가) 당신의 선물을 거부했습니다. 평판 {reputation}', + attackedNpc: '{npcName}을(를) 공격했습니다', + wasAttackedByPlayer: '플레이어에게 공격당했습니다', + youAttackedNpc: '당신은 {npcName}을(를) 공격했습니다', + playerAttackedAlly: '플레이어가 동맹 {allyName}을(를) 공격했습니다', + allyDispleased: '{allyName}은(는) 당신이 동맹 {targetName}을(를) 공격한 것에 불만입니다', + wasSpiedByPlayer: '플레이어에게 정찰당했습니다 (발견: {detected})', + spyDetected: '당신의 정찰이 {npcName}에게 발견되었습니다', + stoleDebrisFromTerritory: '{npcName}의 영역에서 잔해를 약탈했습니다', + playerStoleDebris: '플레이어가 영역에서 잔해를 약탈했습니다', + recycledDebrisNearNpc: '{npcName}의 행성 근처에서 잔해를 수집했습니다. 그들은 불만족스러워합니다.', + giftedResourcesToPlayer: '플레이어에게 자원을 선물했습니다', + receivedGiftFromNpc: '{npcName}로부터 선물을 받았습니다', + acceptedGiftFromNpc: '{npcName}의 선물을 받았습니다: {metal}M {crystal}C {deuterium}D', + playerRejectedGift: '플레이어가 선물을 거부했습니다', + rejectedGiftFromNpc: '{npcName}의 선물을 거부했습니다. 평판 {reputation}' } }, pagination: { @@ -801,5 +873,10 @@ export default { first: '처음', last: '마지막', page: '{page}페이지' + }, + notFound: { + title: '페이지를 찾을 수 없습니다', + description: '죄송합니다. 찾으시는 페이지가 존재하지 않습니다', + goHome: '홈으로 이동' } } diff --git a/src/locales/ru.ts b/src/locales/ru.ts index aaf1f90..f5efe03 100644 --- a/src/locales/ru.ts +++ b/src/locales/ru.ts @@ -33,13 +33,19 @@ export default { viewRequirements: 'Просмотр требований', requirementsNotMet: 'Требования не выполнены', current: 'Текущий', - level: 'Уровень' + level: 'Уровень', + gmModeActivated: 'Режим GM активирован! Проверьте навигационное меню.' }, errors: { requirementsNotMet: 'Требования не выполнены', insufficientResources: 'Недостаточно ресурсов', insufficientFleetStorage: 'Недостаточно места для флота', shieldDomeLimit: 'Достигнут лимит щитовых куполов', + missileSiloLimit: 'Превышена вместимость ракетной шахты', + insufficientMissiles: 'Недостаточно межпланетных ракет', + invalidMissileCount: 'Неверное количество ракет', + targetOutOfRange: 'Цель вне дальности', + cannotAttackOwnPlanet: 'Нельзя атаковать свою планету', fleetMissionsFull: 'Слоты миссий флота заполнены', insufficientFleet: 'Недостаточно флота', insufficientFuel: 'Недостаточно топлива', @@ -166,8 +172,8 @@ export default { darkMatterCollector: 'Собирает редкие ресурсы тёмной материи', darkMatterTank: 'Увеличивает ёмкость хранилища тёмной материи', missileSilo: 'Хранит и запускает ракеты, 10 ракет на уровень', - terraformer: 'Терраформирует поверхность планеты, увеличивает доступное пространство на 5 за уровень', - lunarBase: 'Увеличивает доступное пространство на луне, +5 пространства за уровень', + terraformer: 'Терраформирует поверхность планеты, увеличивает доступное пространство на 30 за уровень', + lunarBase: 'Увеличивает доступное пространство на луне, +30 пространства за уровень', sensorPhalanx: 'Обнаруживает активность флота в окружающих системах', jumpGate: 'Мгновенно переносит флоты на другие луны', planetDestroyerFactory: 'Производит абсолютное оружие, способное уничтожать планеты' @@ -284,7 +290,7 @@ export default { hyperspaceDrive: 'Продвинутая технология двигателей', darkMatterTechnology: 'Исследование свойств и применения тёмной материи', terraformingTechnology: - 'Исследование технологии терраформирования планет, увеличивает доступное пространство всех планет на 3 за уровень', + 'Исследование технологии терраформирования планет, увеличивает доступное пространство всех планет на 30 за уровень', planetDestructionTech: 'Исследование ужасающей технологии уничтожения целых планет' }, officers: { @@ -317,6 +323,7 @@ export default { cancelResearch: 'Отменить исследование', confirmCancel: 'Вы уверены, что хотите отменить? 50% ресурсов будет возвращено.', level: 'Уровень', + gmModeActivated: '', upgradeToLevel: 'Улучшить до уровня' }, overview: { @@ -337,6 +344,7 @@ export default { usedSpace: 'Использовано полей', spaceUsage: 'Использование полей', level: 'Уровень', + gmModeActivated: '', upgradeCost: 'Стоимость улучшения', buildTime: 'Время строительства', upgrade: 'Улучшить', @@ -348,8 +356,8 @@ export default { demolishRefund: 'Возврат от сноса', demolishFailed: 'Снос не удался', demolishFailedMessage: 'Невозможно снести это здание. Проверьте, не заполнена ли очередь строительства или уровень здания не равен 0.', - confirmDemolish: '', - confirmDemolishMessage: '' + confirmDemolish: 'Подтвердить снос', + confirmDemolishMessage: 'Вы уверены, что хотите снести следующее здание?' }, researchView: { title: 'Исследования', @@ -362,6 +370,7 @@ export default { }, shipyard: { attack: 'Атака', + missileAttack: 'Ракетная атака', shield: 'Щит', armor: 'Броня', speed: 'Скорость', @@ -379,6 +388,7 @@ export default { title: 'Верфь', fleetStorage: 'Хранилище флота', attack: 'Атака', + missileAttack: 'Ракетная атака', shield: 'Щит', speed: 'Скорость', cargoCapacity: 'Грузоподъёмность', @@ -393,6 +403,7 @@ export default { }, defense: { attack: 'Атака', + missileAttack: 'Ракетная атака', shield: 'Щит', armor: 'Броня', buildCost: 'Стоимость постройки', @@ -406,6 +417,7 @@ export default { defenseView: { title: 'Оборона', attack: 'Атака', + missileAttack: 'Ракетная атака', shield: 'Щит', armor: 'Броня', buildTime: 'Время постройки', @@ -415,6 +427,7 @@ export default { totalCost: 'Общая стоимость', build: 'Построить', shieldDomeBuilt: 'Щитовой купол уже построен', + missileCapacity: 'Вместимость ракет', inputError: 'Ошибка ввода', inputErrorMessage: 'Пожалуйста, введите количество для постройки!', buildFailed: 'Постройка не удалась', @@ -428,6 +441,7 @@ export default { flightMissions: 'Полетные миссии', currentPlanetFleet: 'Флот на этой планете', attack: 'Атака', + missileAttack: 'Ракетная атака', shield: 'Щит', armor: 'Броня', speed: 'Скорость', @@ -522,27 +536,38 @@ export default { selectSystem: 'Выбрать систему', view: 'Показать', myPlanet: 'Моя планета', - myPlanets: 'Мои планеты', + myPlanets: 'Просмотр моих систем', npcPlanets: 'Планеты NPC', - selectPlanetToView: 'Выберите планету для просмотра', + selectPlanetToView: 'Выберите планету для просмотра её системы', totalPositions: 'Всего 10 позиций планет', mine: 'Моя', hostile: 'Враждебная', emptySlot: 'Пусто - можно колонизировать', scout: 'Разведка', attack: 'Атака', + missileAttack: 'Ракетная атака', colonize: 'Колонизация', switch: 'Переключить', recycle: 'Переработка', debrisField: 'Поле обломков', scoutPlanetTitle: 'Разведать планету', attackPlanetTitle: 'Атаковать планету', + missileAttackTitle: 'Ракетная атака', colonizePlanetTitle: 'Колонизировать планету', recyclePlanetTitle: 'Переработать обломки', scoutPlanetMessage: 'Вы уверены, что хотите отправить шпионские зонды для разведки планеты [{coordinates}]?\n\nПерейдите на страницу флота, чтобы выбрать корабли и отправить.', attackPlanetMessage: 'Вы уверены, что хотите атаковать планету [{coordinates}]?\n\nПерейдите на страницу флота, чтобы выбрать корабли и отправить.', + missileAttackMessage: 'Запустить межпланетные ракеты по планете [{coordinates}]', + missileCount: 'Количество ракет', + availableMissiles: 'Доступно ракет', + missileRange: 'Дальность ракет', + systems: 'систем', + distance: 'Расстояние', + flightTime: 'Время полета', + launchMissile: 'Запустить', + cancel: 'Отмена', colonizePlanetMessage: 'Вы уверены, что хотите колонизировать позицию [{coordinates}]?\n\nПерейдите на страницу флота, чтобы отправить колонизационный корабль.', recyclePlanetMessage: @@ -698,10 +723,24 @@ export default { gamePaused: 'Игра приостановлена', gameResumed: 'Игра возобновлена', playerName: 'Имя игрока', - gameSpeed: 'Скорость игры', - gameSpeedDesc: 'Текущий множитель скорости игры', + gameSpeed: 'Скорость производства ресурсов', + gameSpeedDesc: 'Текущий множитель скорости производства ресурсов', + speedChanged: 'Скорость производства ресурсов изменена на {speed}x', + speedReset: 'Скорость производства ресурсов сброшена на 1x', + reset: 'Сбросить', about: 'О программе', version: 'Версия', + latestVersion: 'Последняя версия', + checkUpdate: 'Проверить обновление', + checking: 'Проверка...', + newVersionAvailable: 'Доступна новая версия {version}', + upToDate: 'Уже актуальная версия', + checkUpdateCooldown: 'Пожалуйста, попробуйте позже (5 минут перезарядки)', + checkUpdateFailed: 'Не удалось проверить обновления, проверьте подключение к Интернету', + viewUpdate: 'Просмотреть обновление', + updateAvailable: 'Доступна новая версия. Нажмите, чтобы просмотреть примечания к выпуску.', + download: 'Скачать', + goToDownload: 'Перейти к загрузке', buildDate: 'Дата сборки', community: 'Сообщество', github: 'Репозиторий GitHub', @@ -740,12 +779,22 @@ export default { testSpy: 'Тест разведки', testAttack: 'Тест атаки', testSpyAndAttack: 'Тест разведки и атаки', + testSpyMessage: 'Нажмите подтвердить, чтобы ускорить миссию разведки', + testAttackMessage: 'Нажмите подтвердить, чтобы ускорить миссию атаки', + testSpyAndAttackMessage: 'Нажмите подтвердить, чтобы ускорить миссии', initializeFleet: 'Инициализировать флот NPC', accelerateMissions: 'Ускорить все миссии (5с)', selectNPCFirst: 'Сначала выберите NPC', npcNoProbes: 'У NPC нет шпионских зондов', npcNoSpyReport: 'NPC нужно сначала разведать', npcMissionFailed: 'Не удалось создать миссию', + npcNoPlanets: 'У NPC нет планет', + npcWillSpyIn5s: '{npcName} проведет разведку через 5 секунд', + npcWillAttackIn5s: '{npcName} атакует через 5 секунд', + npcWillSpyAndAttack: '{npcName} проведет разведку через 5с и атакует через 10с', + acceleratedMissions: 'Ускорено {count} миссий до 5 секунд', + npcFleetInitialized: 'Флот {npcName} инициализирован', + npcFleetDetails: '100 шпионских зондов\n500 легких истребителей\n300 тяжелых истребителей\n200 крейсеров\n100 линкоров\n50 бомбардировщиков\n30 эсминцев\n20 линейных крейсеров', dangerZone: 'Опасная зона', dangerZoneDesc: 'Следующие операции необратимы', resetGame: 'Сбросить игру', @@ -797,9 +846,32 @@ export default { events: { gift: 'Подарок отправлен', attack: 'Атака', + missileAttack: 'Ракетная атака', allyAttacked: 'Союзник атакован', spy: 'Шпионаж', stealDebris: 'Обломки украдены' + }, + reports: { + giftedResources: 'Подарено {metal}M {crystal}C {deuterium}D', + receivedGiftFromPlayer: 'Получен подарок от игрока', + giftedToNpc: 'Вы подарили ресурсы {npcName}. Репутация +{reputation}', + rejectedPlayerGift: 'Отклонен подарок игрока', + npcRejectedGift: '{npcName} отклонил ваш подарок. Репутация {reputation}', + attackedNpc: 'Атакован {npcName}', + wasAttackedByPlayer: 'Был атакован игроком', + youAttackedNpc: 'Вы атаковали {npcName}', + playerAttackedAlly: 'Игрок атаковал союзника {allyName}', + allyDispleased: '{allyName} недоволен тем, что вы атаковали их союзника {targetName}', + wasSpiedByPlayer: 'Был разведан игроком (обнаружен: {detected})', + spyDetected: 'Ваш шпионаж был обнаружен {npcName}', + stoleDebrisFromTerritory: 'Украдены обломки с территории {npcName}', + playerStoleDebris: 'Игрок украл обломки с территории', + recycledDebrisNearNpc: 'Вы переработали обломки возле планеты {npcName}. Они недовольны.', + giftedResourcesToPlayer: 'Подарены ресурсы игроку', + receivedGiftFromNpc: 'Получен подарок от {npcName}', + acceptedGiftFromNpc: 'Вы приняли подарок от {npcName}: {metal}M {crystal}C {deuterium}D', + playerRejectedGift: 'Игрок отклонил подарок', + rejectedGiftFromNpc: 'Вы отклонили подарок от {npcName}. Репутация {reputation}' } }, pagination: { @@ -808,5 +880,10 @@ export default { first: 'Первая', last: 'Последняя', page: 'Страница {page}' + }, + notFound: { + title: 'Страница не найдена', + description: 'Извините, страница, которую вы ищете, не существует', + goHome: 'На главную' } } diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 9704a6f..0a66091 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -33,13 +33,20 @@ export default { viewRequirements: '查看前置条件', requirementsNotMet: '前置条件未满足', current: '当前', - level: '等级' + level: '等级', + gmModeActivated: 'GM 模式已激活!请查看导航菜单。' }, errors: { requirementsNotMet: '不满足前置条件', insufficientResources: '资源不足', insufficientFleetStorage: '舰队仓储空间不足', shieldDomeLimit: '护盾罩数量限制', + missileSiloLimit: '导弹发射井容量不足', + insufficientMissiles: '星际导弹数量不足', + invalidMissileCount: '导弹数量无效', + targetOutOfRange: '目标超出射程', + cannotAttackOwnPlanet: '不能攻击自己的星球', + launchFailed: '发射失败', fleetMissionsFull: '舰队任务槽位已满', insufficientFleet: '舰队数量不足', insufficientFuel: '燃料不足', @@ -164,8 +171,8 @@ export default { darkMatterCollector: '收集稀有的暗物质资源', darkMatterTank: '增加暗物质存储上限', missileSilo: '存储和发射导弹,每级可存储10枚导弹', - terraformer: '改造行星地形,每级增加5个可用空间', - lunarBase: '增加月球可用空间,每级+5空间', + terraformer: '改造行星地形,每级增加30个可用空间', + lunarBase: '增加月球可用空间,每级+30空间', sensorPhalanx: '侦测周围星系的舰队活动', jumpGate: '瞬间传送舰队到其他月球', planetDestroyerFactory: '建造能够摧毁行星的终极武器' @@ -283,7 +290,7 @@ export default { impulseDrive: '中级推进技术', hyperspaceDrive: '高级推进技术', darkMatterTechnology: '研究暗物质的性质和应用', - terraformingTechnology: '研究行星地形改造技术,每级为所有行星增加3个可用空间', + terraformingTechnology: '研究行星地形改造技术,每级为所有行星增加30个可用空间', planetDestructionTech: '研究如何摧毁整个行星的恐怖技术' }, officers: { @@ -415,6 +422,7 @@ export default { totalCost: '总成本', build: '建造', shieldDomeBuilt: '护盾罩已建造', + missileCapacity: '导弹容量', inputError: '输入错误', inputErrorMessage: '请输入建造数量!', buildFailed: '建造失败', @@ -520,15 +528,16 @@ export default { selectSystem: '选择星系', view: '查看', myPlanet: '我的星球', - myPlanets: '我的星球', + myPlanets: '查看我的星系', npcPlanets: 'NPC星球', - selectPlanetToView: '选择要查看的星球', + selectPlanetToView: '选择星球以查看其所在星系', totalPositions: '共10个星球位置', mine: '我的', hostile: '敌对', emptySlot: '空位 - 可殖民', scout: '侦察', attack: '攻击', + missileAttack: '导弹攻击', colonize: '殖民', switch: '切换', recycle: '回收', @@ -537,11 +546,22 @@ export default { debrisField: '残骸场', scoutPlanetTitle: '侦察星球', attackPlanetTitle: '攻击星球', + missileAttackTitle: '导弹攻击', colonizePlanetTitle: '殖民星球', recyclePlanetTitle: '回收残骸', giftPlanetTitle: '赠送礼物', scoutPlanetMessage: '确定要派遣间谍探测器侦察星球 [{coordinates}] 吗?\n\n请前往舰队页面选择舰船并派遣。', attackPlanetMessage: '确定要攻击星球 [{coordinates}] 吗?\n\n请前往舰队页面选择舰船并派遣。', + missileAttackMessage: '向星球 [{coordinates}] 发射导弹', + missileCount: '导弹数量', + availableMissiles: '可用导弹', + missileRange: '射程', + systems: '系统', + distance: '距离', + flightTime: '飞行时间', + launchMissile: '发射', + missileLaunched: '导弹已发射', + cancel: '取消', colonizePlanetMessage: '确定要殖民位置 [{coordinates}] 吗?\n\n请前往舰队页面派遣殖民船。', recyclePlanetMessage: '确定要回收位置 [{coordinates}] 的残骸吗?\n\n请前往舰队页面派遣回收船。', giftPlanetMessage: '确定要向星球 [{coordinates}] 赠送资源吗?\n\n请前往舰队页面选择运输船并装载资源。' @@ -622,7 +642,11 @@ export default { recycleSuccess: '回收任务成功完成', recycleFailed: '回收任务失败,目标位置没有残骸', destroySuccess: '行星毁灭任务成功执行', - destroyFailed: '行星毁灭任务失败' + destroyFailed: '行星毁灭任务失败', + missileAttackSuccess: '导弹攻击成功', + missileAttackFailed: '导弹攻击失败,目标星球不存在', + missileAttackIntercepted: '所有导弹被拦截', + hits: '枚命中' }, simulatorView: { title: '战斗模拟器', @@ -691,10 +715,24 @@ export default { gamePaused: '游戏已暂停', gameResumed: '游戏已恢复', playerName: '玩家名称', - gameSpeed: '游戏速度', - gameSpeedDesc: '当前游戏速度倍率', + gameSpeed: '资源产出速度', + gameSpeedDesc: '当前资源产出速度倍率', + speedChanged: '资源产出速度已更改为 {speed}x', + speedReset: '资源产出速度已重置为 1x', + reset: '重置', about: '关于', version: '版本', + latestVersion: '最新版本', + checkUpdate: '检查更新', + checking: '检查中...', + newVersionAvailable: '发现新版本 {version}', + upToDate: '已是最新版本', + checkUpdateCooldown: '请稍后再试(5分钟冷却时间)', + checkUpdateFailed: '检查更新失败,请检查网络连接', + viewUpdate: '查看更新', + updateAvailable: '有新版本可用。点击查看更新内容。', + download: '下载', + goToDownload: '前往下载', buildDate: '构建日期', community: '社区', github: 'GitHub 仓库', @@ -733,12 +771,22 @@ export default { testSpy: '测试侦查', testAttack: '测试攻击', testSpyAndAttack: '测试侦查&攻击', + testSpyMessage: '点击确认以加速侦查任务', + testAttackMessage: '点击确认以加速攻击任务', + testSpyAndAttackMessage: '点击确认以加速任务执行', initializeFleet: '初始化NPC舰队', accelerateMissions: '加速所有任务(5秒)', selectNPCFirst: '请先选择一个NPC', npcNoProbes: 'NPC没有间谍探测器', npcNoSpyReport: 'NPC需要先侦查', npcMissionFailed: '创建任务失败', + npcNoPlanets: 'NPC没有星球', + npcWillSpyIn5s: '{npcName}将在5秒后侦查', + npcWillAttackIn5s: '{npcName}将在5秒后攻击', + npcWillSpyAndAttack: '{npcName}将在5秒后侦查,10秒后攻击', + acceleratedMissions: '已加速{count}个任务至5秒后', + npcFleetInitialized: '{npcName}舰队已初始化', + npcFleetDetails: '100 间谍探测器\n500 轻型战机\n300 重型战机\n200 巡洋舰\n100 战列舰\n50 轰炸机\n30 毁灭者\n20 战列巡洋舰', dangerZone: '危险区域', dangerZoneDesc: '以下操作不可撤销,请谨慎操作', resetGame: '重置游戏', @@ -793,6 +841,28 @@ export default { allyAttacked: '攻击盟友', spy: '侦查', stealDebris: '抢夺残骸' + }, + reports: { + giftedResources: '赠送了 {metal}金属 {crystal}晶体 {deuterium}氘', + receivedGiftFromPlayer: '收到玩家的礼物', + giftedToNpc: '你向{npcName}赠送了资源。好感度+{reputation}', + rejectedPlayerGift: '拒绝了玩家的礼物', + npcRejectedGift: '{npcName}拒绝了你的礼物。好感度{reputation}', + attackedNpc: '攻击了{npcName}', + wasAttackedByPlayer: '被玩家攻击', + youAttackedNpc: '你攻击了{npcName}', + playerAttackedAlly: '玩家攻击了盟友{allyName}', + allyDispleased: '{allyName}对你攻击盟友{targetName}感到不满', + wasSpiedByPlayer: '被玩家侦查(被发现:{detected})', + spyDetected: '你的侦查被{npcName}发现了', + stoleDebrisFromTerritory: '从{npcName}的领地抢夺了残骸', + playerStoleDebris: '玩家从领地抢夺了残骸', + recycledDebrisNearNpc: '你在{npcName}的星球附近回收了残骸。他们很不高兴。', + giftedResourcesToPlayer: '向玩家赠送了资源', + receivedGiftFromNpc: '收到了{npcName}的礼物', + acceptedGiftFromNpc: '你接受了{npcName}的礼物:{metal}金属 {crystal}晶体 {deuterium}氘', + playerRejectedGift: '玩家拒绝了礼物', + rejectedGiftFromNpc: '你拒绝了{npcName}的礼物。好感度{reputation}' } }, pagination: { @@ -801,5 +871,10 @@ export default { first: '首页', last: '末页', page: '第 {page} 页' + }, + notFound: { + title: '页面未找到', + description: '抱歉,您访问的页面不存在', + goHome: '返回首页' } } diff --git a/src/locales/zh-TW.ts b/src/locales/zh-TW.ts index 8bbe21f..a6b0eeb 100644 --- a/src/locales/zh-TW.ts +++ b/src/locales/zh-TW.ts @@ -33,13 +33,19 @@ export default { viewRequirements: '查看前置條件', requirementsNotMet: '前置條件未滿足', current: '當前', - level: '等級' + level: '等級', + gmModeActivated: 'GM 模式已啟用!請查看導航選單。' }, errors: { requirementsNotMet: '不滿足前置條件', insufficientResources: '資源不足', insufficientFleetStorage: '艦隊倉儲空間不足', shieldDomeLimit: '護盾罩數量限制', + missileSiloLimit: '導彈發射井容量已滿', + insufficientMissiles: '星際導彈數量不足', + invalidMissileCount: '導彈數量無效', + targetOutOfRange: '目標超出射程', + cannotAttackOwnPlanet: '不能攻擊自己的星球', fleetMissionsFull: '艦隊任務槽位已滿', insufficientFleet: '艦隊數量不足', insufficientFuel: '燃料不足', @@ -166,8 +172,8 @@ export default { darkMatterCollector: '收集稀有的暗物質資源', darkMatterTank: '增加暗物質儲存上限', missileSilo: '存儲和發射導彈,每級可存儲10枚導彈', - terraformer: '改造行星地形,每級增加5個可用空間', - lunarBase: '增加月球可用空間,每級+5空間', + terraformer: '改造行星地形,每級增加30個可用空間', + lunarBase: '增加月球可用空間,每級+30空間', sensorPhalanx: '偵測周圍星系的艦隊活動', jumpGate: '瞬間傳送艦隊到其他月球', planetDestroyerFactory: '建造能夠摧毀行星的終極武器' @@ -285,7 +291,7 @@ export default { impulseDrive: '中級推進技術', hyperspaceDrive: '高級推進技術', darkMatterTechnology: '研究暗物質的性質和應用', - terraformingTechnology: '研究行星地形改造技術,每級為所有行星增加3個可用空間', + terraformingTechnology: '研究行星地形改造技術,每級為所有行星增加30個可用空間', planetDestructionTech: '研究如何摧毀整個行星的恐怖技術' }, officers: { @@ -318,6 +324,7 @@ export default { cancelResearch: '取消研究', confirmCancel: '確定要取消嗎?將返還50%的資源。', level: '等級', + gmModeActivated: '', upgradeToLevel: '升級到等級' }, overview: { @@ -338,6 +345,7 @@ export default { usedSpace: '已用空間', spaceUsage: '佔用空間', level: '等級', + gmModeActivated: '', upgradeCost: '升級消耗', buildTime: '建造時間', upgrade: '升級', @@ -349,8 +357,8 @@ export default { demolishRefund: '拆除返還', demolishFailed: '拆除失敗', demolishFailedMessage: '無法拆除該建築,請檢查建造隊列是否已滿或建築等級是否為0。', - confirmDemolish: '', - confirmDemolishMessage: '' + confirmDemolish: '確認拆除', + confirmDemolishMessage: '確定要拆除以下建築嗎?' }, researchView: { title: '研究', @@ -362,6 +370,7 @@ export default { }, shipyard: { attack: '攻擊力', + missileAttack: '導彈攻擊', shield: '護盾', armor: '裝甲', speed: '速度', @@ -379,6 +388,7 @@ export default { title: '船塢', fleetStorage: '艦隊倉儲', attack: '攻擊力', + missileAttack: '導彈攻擊', shield: '護盾', speed: '速度', cargoCapacity: '載貨量', @@ -393,6 +403,7 @@ export default { }, defense: { attack: '攻擊力', + missileAttack: '導彈攻擊', shield: '護盾', armor: '裝甲', buildCost: '建造成本', @@ -406,6 +417,7 @@ export default { defenseView: { title: '防禦設施', attack: '攻擊力', + missileAttack: '導彈攻擊', shield: '護盾', armor: '裝甲', buildTime: '建造時間', @@ -415,6 +427,7 @@ export default { totalCost: '總成本', build: '建造', shieldDomeBuilt: '護盾罩已建造', + missileCapacity: '導彈容量', inputError: '輸入錯誤', inputErrorMessage: '請輸入建造數量!', buildFailed: '建造失敗', @@ -427,6 +440,7 @@ export default { flightMissions: '飛行任務', currentPlanetFleet: '當前星球艦隊', attack: '攻擊', + missileAttack: '導彈攻擊', shield: '護盾', armor: '裝甲', speed: '速度', @@ -521,25 +535,36 @@ export default { selectSystem: '選擇星系', view: '查看', myPlanet: '我的星球', - myPlanets: '我的星球', + myPlanets: '查看我的星系', npcPlanets: 'NPC星球', - selectPlanetToView: '選擇要查看的星球', + selectPlanetToView: '選擇星球以查看其所在星系', totalPositions: '共10個星球位置', mine: '我的', hostile: '敵對', emptySlot: '空位 - 可殖民', scout: '偵察', attack: '攻擊', + missileAttack: '導彈攻擊', colonize: '殖民', switch: '切換', recycle: '回收', debrisField: '殘骸場', scoutPlanetTitle: '偵察星球', attackPlanetTitle: '攻擊星球', + missileAttackTitle: '導彈攻擊', colonizePlanetTitle: '殖民星球', recyclePlanetTitle: '回收殘骸', scoutPlanetMessage: '確定要派遣間諜探測器偵察星球 [{coordinates}] 嗎?\n\n請前往艦隊頁面選擇艦船並派遣。', attackPlanetMessage: '確定要攻擊星球 [{coordinates}] 嗎?\n\n請前往艦隊頁面選擇艦船並派遣。', + missileAttackMessage: '向星球 [{coordinates}] 發射星際導彈', + missileCount: '導彈數量', + availableMissiles: '可用導彈', + missileRange: '導彈射程', + systems: '星系', + distance: '距離', + flightTime: '飛行時間', + launchMissile: '發射', + cancel: '取消', colonizePlanetMessage: '確定要殖民位置 [{coordinates}] 嗎?\n\n請前往艦隊頁面派遣殖民船。', recyclePlanetMessage: '確定要回收位置 [{coordinates}] 的殘骸嗎?\n\n請前往艦隊頁面派遣回收船。', sendGift: '贈送禮物', @@ -692,10 +717,24 @@ export default { gamePaused: '遊戲已暫停', gameResumed: '遊戲已恢復', playerName: '玩家名稱', - gameSpeed: '遊戲速度', - gameSpeedDesc: '目前遊戲速度倍率', + gameSpeed: '資源產出速度', + gameSpeedDesc: '目前資源產出速度倍率', + speedChanged: '資源產出速度已更改為 {speed}x', + speedReset: '資源產出速度已重置為 1x', + reset: '重置', about: '關於', version: '版本', + latestVersion: '最新版本', + checkUpdate: '檢查更新', + checking: '檢查中...', + newVersionAvailable: '發現新版本 {version}', + upToDate: '已是最新版本', + checkUpdateCooldown: '請稍後再試(5分鐘冷卻時間)', + checkUpdateFailed: '檢查更新失敗,請檢查網路連線', + viewUpdate: '查看更新', + updateAvailable: '有新版本可用。點擊查看更新內容。', + download: '下載', + goToDownload: '前往下載', buildDate: '建置日期', community: '社群', github: 'GitHub 儲存庫', @@ -734,12 +773,22 @@ export default { testSpy: '測試偵查', testAttack: '測試攻擊', testSpyAndAttack: '測試偵查&攻擊', + testSpyMessage: '點擊確認以加速偵查任務', + testAttackMessage: '點擊確認以加速攻擊任務', + testSpyAndAttackMessage: '點擊確認以加速任務執行', initializeFleet: '初始化NPC艦隊', accelerateMissions: '加速所有任務(5秒)', selectNPCFirst: '請先選擇一個NPC', npcNoProbes: 'NPC沒有間諜探測器', npcNoSpyReport: 'NPC需要先偵查', npcMissionFailed: '創建任務失敗', + npcNoPlanets: 'NPC沒有星球', + npcWillSpyIn5s: '{npcName}將在5秒後偵查', + npcWillAttackIn5s: '{npcName}將在5秒後攻擊', + npcWillSpyAndAttack: '{npcName}將在5秒後偵查,10秒後攻擊', + acceleratedMissions: '已加速{count}個任務至5秒後', + npcFleetInitialized: '{npcName}艦隊已初始化', + npcFleetDetails: '100 間諜探測器\n500 輕型戰機\n300 重型戰機\n200 巡洋艦\n100 戰列艦\n50 轟炸機\n30 毀滅者\n20 戰列巡洋艦', dangerZone: '危險區域', dangerZoneDesc: '以下操作不可撤銷,請謹慎操作', resetGame: '重置遊戲', @@ -791,9 +840,32 @@ export default { events: { gift: '已贈送禮物', attack: '攻擊', + missileAttack: '導彈攻擊', allyAttacked: '盟友被攻擊', spy: '間諜活動', stealDebris: '掠奪殘骸' + }, + reports: { + giftedResources: '贈送了 {metal}金屬 {crystal}晶體 {deuterium}氘', + receivedGiftFromPlayer: '收到玩家的禮物', + giftedToNpc: '你向{npcName}贈送了資源。好感度+{reputation}', + rejectedPlayerGift: '拒絕了玩家的禮物', + npcRejectedGift: '{npcName}拒絕了你的禮物。好感度{reputation}', + attackedNpc: '攻擊了{npcName}', + wasAttackedByPlayer: '被玩家攻擊', + youAttackedNpc: '你攻擊了{npcName}', + playerAttackedAlly: '玩家攻擊了盟友{allyName}', + allyDispleased: '{allyName}對你攻擊盟友{targetName}感到不滿', + wasSpiedByPlayer: '被玩家偵查(被發現:{detected})', + spyDetected: '你的偵查被{npcName}發現了', + stoleDebrisFromTerritory: '從{npcName}的領地掠奪了殘骸', + playerStoleDebris: '玩家從領地掠奪了殘骸', + recycledDebrisNearNpc: '你在{npcName}的星球附近回收了殘骸。他們很不高興。', + giftedResourcesToPlayer: '向玩家贈送了資源', + receivedGiftFromNpc: '收到了{npcName}的禮物', + acceptedGiftFromNpc: '你接受了{npcName}的禮物:{metal}金屬 {crystal}晶體 {deuterium}氘', + playerRejectedGift: '玩家拒絕了禮物', + rejectedGiftFromNpc: '你拒絕了{npcName}的禮物。好感度{reputation}' } }, pagination: { @@ -802,5 +874,10 @@ export default { first: '首頁', last: '末頁', page: '第 {page} 頁' + }, + notFound: { + title: '找不到頁面', + description: '抱歉,您訪問的頁面不存在', + goHome: '返回首頁' } } diff --git a/src/logic/battleLogic.ts b/src/logic/battleLogic.ts index 08de154..a5bdb16 100644 --- a/src/logic/battleLogic.ts +++ b/src/logic/battleLogic.ts @@ -1,6 +1,7 @@ import type { Fleet, Resources, BattleResult, Officer, TechnologyType } from '@/types/game' import { DefenseType, OfficerType } from '@/types/game' import { workerManager } from '@/workers/workerManager' +import { MOON_CONFIG } from '@/config/gameConfig' /** * 执行战斗模拟 @@ -60,7 +61,10 @@ export const simulateBattle = async ( // 计算月球生成概率(根据残骸场总量) const totalDebris = debrisField.metal + debrisField.crystal - const moonChance = Math.min(totalDebris / 100000, 0.2) // 最高20%概率 + const moonChance = Math.min( + (MOON_CONFIG.baseChance + Math.floor(totalDebris / MOON_CONFIG.chancePerDebris)), + MOON_CONFIG.maxChance + ) / 100 // 转换为0-1的概率 // 生成战斗报告 const battleResult: BattleResult = { diff --git a/src/logic/buildingLogic.ts b/src/logic/buildingLogic.ts index 8a567f7..940bcde 100644 --- a/src/logic/buildingLogic.ts +++ b/src/logic/buildingLogic.ts @@ -3,6 +3,9 @@ import { BuildingType, TechnologyType, ShipType, DefenseType } from '@/types/gam import { BUILDINGS } from '@/config/gameConfig' import * as pointsLogic from './pointsLogic' +// 用于生成唯一ID的计数器 +let queueIdCounter = 0 + /** * 计算建筑升级成本 */ @@ -102,8 +105,9 @@ export const checkSpaceAvailable = (planet: Planet, buildingType: BuildingType): */ export const createBuildQueueItem = (buildingType: BuildingType, targetLevel: number, buildTime: number): BuildQueueItem => { const now = Date.now() + queueIdCounter++ return { - id: `build_${now}`, + id: `build_${now}_${queueIdCounter}`, type: 'building', itemType: buildingType, targetLevel, @@ -212,8 +216,9 @@ export const calculateDemolishTime = ( */ export const createDemolishQueueItem = (buildingType: BuildingType, currentLevel: number, demolishTime: number): BuildQueueItem => { const now = Date.now() + queueIdCounter++ return { - id: `demolish_${now}`, + id: `demolish_${now}_${queueIdCounter}`, type: 'demolish', itemType: buildingType, targetLevel: currentLevel - 1, // 目标等级为当前等级-1 diff --git a/src/logic/buildingValidation.ts b/src/logic/buildingValidation.ts index 993f83b..d81f1fb 100644 --- a/src/logic/buildingValidation.ts +++ b/src/logic/buildingValidation.ts @@ -23,6 +23,14 @@ export const validateBuildingUpgrade = ( const cost = buildingLogic.calculateBuildingCost(buildingType, targetLevel) const buildingConfig = BUILDINGS[buildingType] + // 检查队列中是否已存在该建筑的升级或拆除任务 + const existingQueueItem = planet.buildQueue.find( + item => (item.type === 'building' || item.type === 'demolish') && item.itemType === buildingType + ) + if (existingQueueItem) { + return { valid: false, reason: 'errors.buildingAlreadyInQueue' } + } + // 检查星球/月球限制 if (buildingConfig.planetOnly && planet.isMoon) { return { valid: false, reason: 'errors.planetOnly' } diff --git a/src/logic/diplomaticLogic.ts b/src/logic/diplomaticLogic.ts index 418d68b..d680307 100644 --- a/src/logic/diplomaticLogic.ts +++ b/src/logic/diplomaticLogic.ts @@ -5,6 +5,7 @@ */ import { DIPLOMATIC_CONFIG } from '@/config/gameConfig' +import { locales, type Locale } from '@/locales' import type { DiplomaticRelation, RelationStatus, @@ -21,6 +22,37 @@ import type { } from '@/types/game' import { RelationStatus as RS, DiplomaticEventType as DET } from '@/types/game' +/** + * 获取翻译文本的辅助函数 + * @param key 翻译键 + * @param locale 语言代码 + * @param params 参数 + * @returns 翻译后的文本 + */ +const t = (key: string, locale: Locale, params?: Record): string => { + const keys = key.split('.') + let value: any = locales[locale] + + for (const k of keys) { + if (value && typeof value === 'object' && k in value) { + value = value[k] + } else { + return key // 如果找不到翻译,返回原始 key + } + } + + let result = typeof value === 'string' ? value : key + + // 替换参数占位符 + if (params) { + Object.entries(params).forEach(([paramKey, paramValue]) => { + result = result.replace(new RegExp(`\\{${paramKey}\\}`, 'g'), String(paramValue)) + }) + } + + return result +} + /** * 根据好感度值计算关系状态 * @param reputation 好感度值 (-100 到 +100) @@ -118,8 +150,11 @@ export const calculateGiftReputationGain = (resources: Resources): number => { const baseGain = REPUTATION_CHANGES.GIFT_BASE const valueGain = Math.floor(totalValue / 1000) * REPUTATION_CHANGES.GIFT_PER_1K_RESOURCES + // 确保达到门槛的礼物至少获得1点好感度 + const totalGain = Math.max(baseGain + valueGain, 1) + // 限制在最大值范围内 - return Math.min(baseGain + valueGain, REPUTATION_CHANGES.GIFT_MAX_SINGLE) + return Math.min(totalGain, REPUTATION_CHANGES.GIFT_MAX_SINGLE) } /** @@ -173,16 +208,22 @@ export const calculateNPCRejectionProbability = (npc: NPC, player: Player): numb * @param mission 舰队任务 * @param player 玩家 * @param targetNpc 目标NPC + * @param locale 语言代码 * @returns { accepted: boolean, reputationGain?: number } */ -export const handleGiftArrival = (mission: FleetMission, player: Player, targetNpc: NPC): { accepted: boolean; reputationGain?: number } => { +export const handleGiftArrival = ( + mission: FleetMission, + player: Player, + targetNpc: NPC, + locale: Locale +): { accepted: boolean; reputationGain?: number } => { // 计算NPC拒绝概率 const rejectionProb = calculateNPCRejectionProbability(targetNpc, player) const isRejected = Math.random() < rejectionProb if (isRejected) { // NPC拒绝礼物 - handleGiftRejection(player, targetNpc, mission.cargo) + handleGiftRejection(player, targetNpc, mission.cargo, locale) return { accepted: false } } @@ -200,7 +241,11 @@ export const handleGiftArrival = (mission: FleetMission, player: Player, targetN relation, reputationGain, DET.GiftResources, - `Gifted ${mission.cargo.metal}M ${mission.cargo.crystal}C ${mission.cargo.deuterium}D` + t('diplomacy.reports.giftedResources', locale, { + metal: mission.cargo.metal.toString(), + crystal: mission.cargo.crystal.toString(), + deuterium: mission.cargo.deuterium.toString() + }) ) // 也更新NPC对玩家的关系(双向好感度) @@ -209,7 +254,12 @@ export const handleGiftArrival = (mission: FleetMission, player: Player, targetN } const npcRelation = getOrCreateRelation(targetNpc.relations, targetNpc.id, player.id) - targetNpc.relations[player.id] = updateReputation(npcRelation, reputationGain, DET.GiftResources, `Received gift from player`) + targetNpc.relations[player.id] = updateReputation( + npcRelation, + reputationGain, + DET.GiftResources, + t('diplomacy.reports.receivedGiftFromPlayer', locale) + ) // 生成外交报告 generateDiplomaticReport( @@ -217,7 +267,7 @@ export const handleGiftArrival = (mission: FleetMission, player: Player, targetN targetNpc, DET.GiftResources, reputationGain, - `You gifted resources to ${targetNpc.name}. Reputation +${reputationGain}` + t('diplomacy.reports.giftedToNpc', locale, { npcName: targetNpc.name, reputation: reputationGain.toString() }) ) return { accepted: true, reputationGain } @@ -228,8 +278,9 @@ export const handleGiftArrival = (mission: FleetMission, player: Player, targetN * @param player 玩家 * @param npc NPC * @param rejectedResources 被拒绝的资源 + * @param locale 语言代码 */ -const handleGiftRejection = (player: Player, npc: NPC, rejectedResources: Resources): void => { +const handleGiftRejection = (player: Player, npc: NPC, rejectedResources: Resources, locale: Locale): void => { const { GIFT_ACCEPTANCE_CONFIG } = DIPLOMATIC_CONFIG // 创建拒绝通知 @@ -268,7 +319,7 @@ const handleGiftRejection = (player: Player, npc: NPC, rejectedResources: Resour npcRelation, GIFT_ACCEPTANCE_CONFIG.REJECTION_REPUTATION_PENALTY, DET.GiftResources, - `Rejected player's gift` + t('diplomacy.reports.rejectedPlayerGift', locale) ) // 生成外交报告 @@ -277,7 +328,10 @@ const handleGiftRejection = (player: Player, npc: NPC, rejectedResources: Resour npc, DET.GiftResources, GIFT_ACCEPTANCE_CONFIG.REJECTION_REPUTATION_PENALTY, - `${npc.name} rejected your gift. Reputation ${GIFT_ACCEPTANCE_CONFIG.REJECTION_REPUTATION_PENALTY}` + t('diplomacy.reports.npcRejectedGift', locale, { + npcName: npc.name, + reputation: GIFT_ACCEPTANCE_CONFIG.REJECTION_REPUTATION_PENALTY.toString() + }) ) } @@ -287,8 +341,15 @@ const handleGiftRejection = (player: Player, npc: NPC, rejectedResources: Resour * @param defender 防御者(NPC) * @param battleResult 战斗结果 * @param allNpcs 所有NPC列表 + * @param locale 语言代码 */ -export const handleAttackReputation = (attacker: Player, defender: NPC, battleResult: BattleResult, allNpcs: NPC[]): void => { +export const handleAttackReputation = ( + attacker: Player, + defender: NPC, + battleResult: BattleResult, + allNpcs: NPC[], + locale: Locale +): void => { const { REPUTATION_CHANGES } = DIPLOMATIC_CONFIG // 计算好感度降低值 @@ -304,7 +365,12 @@ export const handleAttackReputation = (attacker: Player, defender: NPC, battleRe } const relation = getOrCreateRelation(attacker.diplomaticRelations, attacker.id, defender.id) - attacker.diplomaticRelations[defender.id] = updateReputation(relation, -reputationLoss, DET.Attack, `Attacked ${defender.name}`) + attacker.diplomaticRelations[defender.id] = updateReputation( + relation, + reputationLoss, + DET.Attack, + t('diplomacy.reports.attackedNpc', locale, { npcName: defender.name }) + ) // 更新被攻击NPC对玩家的关系 if (!defender.relations) { @@ -312,15 +378,26 @@ export const handleAttackReputation = (attacker: Player, defender: NPC, battleRe } const defenderRelation = getOrCreateRelation(defender.relations, defender.id, attacker.id) - defender.relations[attacker.id] = updateReputation(defenderRelation, -reputationLoss, DET.Attack, `Was attacked by player`) + defender.relations[attacker.id] = updateReputation( + defenderRelation, + reputationLoss, + DET.Attack, + t('diplomacy.reports.wasAttackedByPlayer', locale) + ) // 检查盟友关系网络 if (defender.allies && defender.allies.length > 0) { - handleAllyAttackedReputation(attacker, defender, allNpcs) + handleAllyAttackedReputation(attacker, defender, allNpcs, locale) } // 生成外交报告 - generateDiplomaticReport(attacker, defender, DET.Attack, -reputationLoss, `You attacked ${defender.name}`) + generateDiplomaticReport( + attacker, + defender, + DET.Attack, + -reputationLoss, + t('diplomacy.reports.youAttackedNpc', locale, { npcName: defender.name }) + ) } /** @@ -328,8 +405,9 @@ export const handleAttackReputation = (attacker: Player, defender: NPC, battleRe * @param attacker 攻击者(玩家) * @param attackedNpc 被攻击的NPC * @param allNpcs 所有NPC列表 + * @param locale 语言代码 */ -export const handleAllyAttackedReputation = (attacker: Player, attackedNpc: NPC, allNpcs: NPC[]): void => { +export const handleAllyAttackedReputation = (attacker: Player, attackedNpc: NPC, allNpcs: NPC[], locale: Locale): void => { const { REPUTATION_CHANGES } = DIPLOMATIC_CONFIG // 找到所有盟友 @@ -344,9 +422,9 @@ export const handleAllyAttackedReputation = (attacker: Player, attackedNpc: NPC, const allyRelation = getOrCreateRelation(ally.relations, ally.id, attacker.id) ally.relations[attacker.id] = updateReputation( allyRelation, - -REPUTATION_CHANGES.ALLY_ATTACKED, + REPUTATION_CHANGES.ALLY_ATTACKED, DET.AllyAttacked, - `Player attacked ally ${attackedNpc.name}` + t('diplomacy.reports.playerAttackedAlly', locale, { allyName: attackedNpc.name }) ) // 生成外交报告 @@ -354,8 +432,8 @@ export const handleAllyAttackedReputation = (attacker: Player, attackedNpc: NPC, attacker, ally, DET.AllyAttacked, - -REPUTATION_CHANGES.ALLY_ATTACKED, - `${ally.name} is displeased that you attacked their ally ${attackedNpc.name}` + REPUTATION_CHANGES.ALLY_ATTACKED, + t('diplomacy.reports.allyDispleased', locale, { allyName: ally.name, targetName: attackedNpc.name }) ) }) } @@ -365,8 +443,9 @@ export const handleAllyAttackedReputation = (attacker: Player, attackedNpc: NPC, * @param spy 侦查者(玩家) * @param target 侦查目标(NPC) * @param wasDetected 是否被发现 + * @param locale 语言代码 */ -export const handleSpyReputation = (spy: Player, target: NPC, wasDetected: boolean): void => { +export const handleSpyReputation = (spy: Player, target: NPC, wasDetected: boolean, locale: Locale): void => { const { REPUTATION_CHANGES } = DIPLOMATIC_CONFIG const reputationLoss = wasDetected ? REPUTATION_CHANGES.SPY_DETECTED : REPUTATION_CHANGES.SPY_UNDETECTED @@ -377,11 +456,16 @@ export const handleSpyReputation = (spy: Player, target: NPC, wasDetected: boole } const targetRelation = getOrCreateRelation(target.relations, target.id, spy.id) - target.relations[spy.id] = updateReputation(targetRelation, -reputationLoss, DET.Spy, `Was spied by player (detected: ${wasDetected})`) + target.relations[spy.id] = updateReputation( + targetRelation, + reputationLoss, + DET.Spy, + t('diplomacy.reports.wasSpiedByPlayer', locale, { detected: wasDetected ? 'true' : 'false' }) + ) // 如果被发现,生成外交报告 if (wasDetected) { - generateDiplomaticReport(spy, target, DET.Spy, -reputationLoss, `Your espionage was detected by ${target.name}`) + generateDiplomaticReport(spy, target, DET.Spy, reputationLoss, t('diplomacy.reports.spyDetected', locale, { npcName: target.name })) } } @@ -391,8 +475,9 @@ export const handleSpyReputation = (spy: Player, target: NPC, wasDetected: boole * @param player 玩家 * @param debrisPosition 残骸位置 * @param allNpcs 所有NPC列表 + * @param locale 语言代码 */ -export const handleDebrisRecycleReputation = (player: Player, debrisPosition: Position, allNpcs: NPC[]): void => { +export const handleDebrisRecycleReputation = (player: Player, debrisPosition: Position, allNpcs: NPC[], locale: Locale): void => { const { REPUTATION_CHANGES } = DIPLOMATIC_CONFIG // 找到该位置的NPC星球所有者 @@ -414,9 +499,9 @@ export const handleDebrisRecycleReputation = (player: Player, debrisPosition: Po const relation = getOrCreateRelation(player.diplomaticRelations, player.id, npcOwner.id) player.diplomaticRelations[npcOwner.id] = updateReputation( relation, - -REPUTATION_CHANGES.STEAL_DEBRIS, + REPUTATION_CHANGES.STEAL_DEBRIS, DET.StealDebris, - `Stole debris from ${npcOwner.name}'s territory` + t('diplomacy.reports.stoleDebrisFromTerritory', locale, { npcName: npcOwner.name }) ) // 更新NPC对玩家的关系 @@ -427,9 +512,9 @@ export const handleDebrisRecycleReputation = (player: Player, debrisPosition: Po const npcRelation = getOrCreateRelation(npcOwner.relations, npcOwner.id, player.id) npcOwner.relations[player.id] = updateReputation( npcRelation, - -REPUTATION_CHANGES.STEAL_DEBRIS, + REPUTATION_CHANGES.STEAL_DEBRIS, DET.StealDebris, - `Player stole debris from territory` + t('diplomacy.reports.playerStoleDebris', locale) ) // 生成外交报告 @@ -437,8 +522,8 @@ export const handleDebrisRecycleReputation = (player: Player, debrisPosition: Po player, npcOwner, DET.StealDebris, - -REPUTATION_CHANGES.STEAL_DEBRIS, - `You recycled debris near ${npcOwner.name}'s planet. They are displeased.` + REPUTATION_CHANGES.STEAL_DEBRIS, + t('diplomacy.reports.recycledDebrisNearNpc', locale, { npcName: npcOwner.name }) ) } } @@ -539,8 +624,9 @@ export const handleNPCGiftToPlayer = (npc: NPC, player: Player, giftResources: R * @param player 玩家 * @param npc NPC * @param giftNotification 礼物通知 + * @param locale 语言代码 */ -export const acceptNPCGift = (player: Player, npc: NPC, giftNotification: GiftNotification): void => { +export const acceptNPCGift = (player: Player, npc: NPC, giftNotification: GiftNotification, locale: Locale): void => { // 将资源添加到玩家主星球 if (player.planets && player.planets.length > 0) { const mainPlanet = player.planets[0] @@ -558,7 +644,12 @@ export const acceptNPCGift = (player: Player, npc: NPC, giftNotification: GiftNo } const npcRelation = getOrCreateRelation(npc.relations, npc.id, player.id) - npc.relations[player.id] = updateReputation(npcRelation, giftNotification.expectedReputationGain, DET.GiftResources, `Gifted resources to player`) + npc.relations[player.id] = updateReputation( + npcRelation, + giftNotification.expectedReputationGain, + DET.GiftResources, + t('diplomacy.reports.giftedResourcesToPlayer', locale) + ) // 也更新玩家对NPC的关系(收到礼物会增加好感) if (!player.diplomaticRelations) { @@ -570,7 +661,7 @@ export const acceptNPCGift = (player: Player, npc: NPC, giftNotification: GiftNo playerRelation, giftNotification.expectedReputationGain, DET.GiftResources, - `Received gift from ${npc.name}` + t('diplomacy.reports.receivedGiftFromNpc', locale, { npcName: npc.name }) ) // 生成外交报告 @@ -579,7 +670,12 @@ export const acceptNPCGift = (player: Player, npc: NPC, giftNotification: GiftNo npc, DET.GiftResources, giftNotification.expectedReputationGain, - `You accepted a gift from ${npc.name}: ${giftNotification.resources.metal}M ${giftNotification.resources.crystal}C ${giftNotification.resources.deuterium}D` + t('diplomacy.reports.acceptedGiftFromNpc', locale, { + npcName: npc.name, + metal: giftNotification.resources.metal.toString(), + crystal: giftNotification.resources.crystal.toString(), + deuterium: giftNotification.resources.deuterium.toString() + }) ) // 移除礼物通知 @@ -593,8 +689,9 @@ export const acceptNPCGift = (player: Player, npc: NPC, giftNotification: GiftNo * @param player 玩家 * @param npc NPC * @param giftNotification 礼物通知 + * @param locale 语言代码 */ -export const rejectNPCGift = (player: Player, npc: NPC, giftNotification: GiftNotification): void => { +export const rejectNPCGift = (player: Player, npc: NPC, giftNotification: GiftNotification, locale: Locale): void => { const { GIFT_ACCEPTANCE_CONFIG } = DIPLOMATIC_CONFIG // 拒绝礼物会降低好感度 @@ -607,7 +704,7 @@ export const rejectNPCGift = (player: Player, npc: NPC, giftNotification: GiftNo npcRelation, GIFT_ACCEPTANCE_CONFIG.REJECTION_REPUTATION_PENALTY, DET.GiftResources, - `Player rejected gift` + t('diplomacy.reports.playerRejectedGift', locale) ) // 生成外交报告 @@ -616,7 +713,10 @@ export const rejectNPCGift = (player: Player, npc: NPC, giftNotification: GiftNo npc, DET.GiftResources, GIFT_ACCEPTANCE_CONFIG.REJECTION_REPUTATION_PENALTY, - `You rejected a gift from ${npc.name}. Reputation ${GIFT_ACCEPTANCE_CONFIG.REJECTION_REPUTATION_PENALTY}` + t('diplomacy.reports.rejectedGiftFromNpc', locale, { + npcName: npc.name, + reputation: GIFT_ACCEPTANCE_CONFIG.REJECTION_REPUTATION_PENALTY.toString() + }) ) // 移除礼物通知 diff --git a/src/logic/fleetLogic.ts b/src/logic/fleetLogic.ts index 71d1233..a481038 100644 --- a/src/logic/fleetLogic.ts +++ b/src/logic/fleetLogic.ts @@ -1,4 +1,5 @@ import type { FleetMission, Planet, Resources, Fleet, BattleResult, SpyReport, Player, Officer, DebrisField, NPC } from '@/types/game' +import type { Locale } from '@/locales' import { ShipType, DefenseType, MissionType, BuildingType, OfficerType, TechnologyType } from '@/types/game' import { FLEET_STORAGE_CONFIG } from '@/config/gameConfig' import * as battleLogic from './battleLogic' @@ -75,13 +76,14 @@ export const processTransportArrival = ( mission: FleetMission, targetPlanet: Planet | undefined, player?: Player, - allNpcs?: NPC[] + allNpcs?: NPC[], + locale: Locale = 'zh-CN' ): { success: boolean; reputationGain?: number } => { // 检查是否是赠送任务 if (mission.isGift && mission.giftTargetNpcId && player && allNpcs) { const targetNpc = allNpcs.find(n => n.id === mission.giftTargetNpcId) if (targetNpc) { - const giftResult = diplomaticLogic.handleGiftArrival(mission, player, targetNpc) + const giftResult = diplomaticLogic.handleGiftArrival(mission, player, targetNpc, locale) mission.status = 'returning' // 如果礼物被拒绝,资源返还给玩家 @@ -316,8 +318,8 @@ export const processNPCAttackArrival = async ( * 基于天体物理学技术等级 */ export const calculateMaxPlanets = (astrophysicsLevel: number): number => { - // 基础1个星球 + 每2级天体物理学增加1个殖民地槽位 - return 1 + Math.floor(astrophysicsLevel / 2) + // 基础1个星球(主星) + 每级天体物理学增加1个殖民地槽位 + return 1 + astrophysicsLevel } /** @@ -463,7 +465,8 @@ export const processSpyArrival = ( targetPlanet: Planet | undefined, attacker: Player, defender: Player | null, - allNpcs?: NPC[] + allNpcs?: NPC[], + locale: Locale = 'zh-CN' ): SpyReport | null => { if (!targetPlanet) { mission.status = 'returning' @@ -504,7 +507,7 @@ export const processSpyArrival = ( if (allNpcs && targetPlanet.ownerId) { const targetNpc = allNpcs.find(npc => npc.planets.some(p => p.id === targetPlanet.id)) if (targetNpc) { - diplomaticLogic.handleSpyReputation(attacker, targetNpc, wasDetected) + diplomaticLogic.handleSpyReputation(attacker, targetNpc, wasDetected, locale) } } @@ -536,7 +539,8 @@ export const processRecycleArrival = ( mission: FleetMission, debrisField: DebrisField | undefined, player?: Player, - allNpcs?: NPC[] + allNpcs?: NPC[], + locale: Locale = 'zh-CN' ): { collectedResources: Pick; remainingDebris: Pick | null } | null => { if (!debrisField) { mission.status = 'returning' @@ -558,6 +562,12 @@ export const processRecycleArrival = ( const totalDebris = debrisField.resources.metal + debrisField.resources.crystal const collectedAmount = Math.min(totalDebris, availableCapacity) + // 防止除零:如果残骸为0,直接返回 + if (totalDebris === 0) { + mission.status = 'returning' + return null + } + // 按比例收集金属和晶体 const metalRatio = debrisField.resources.metal / totalDebris const crystalRatio = debrisField.resources.crystal / totalDebris @@ -577,7 +587,7 @@ export const processRecycleArrival = ( // 检查是否在NPC星球位置回收残骸,如果是则降低好感度 if (player && allNpcs && collectedAmount > 0) { - diplomaticLogic.handleDebrisRecycleReputation(player, debrisField.position, allNpcs) + diplomaticLogic.handleDebrisRecycleReputation(player, debrisField.position, allNpcs, locale) } return { diff --git a/src/logic/gameLogic.ts b/src/logic/gameLogic.ts index 8c18cea..c03f658 100644 --- a/src/logic/gameLogic.ts +++ b/src/logic/gameLogic.ts @@ -19,6 +19,7 @@ export const initializePlayer = (playerId: string, playerName: string = 'Command officers: {} as Record, researchQueue: [], fleetMissions: [], + missileAttacks: [], battleReports: [], spyReports: [], spiedNotifications: [], diff --git a/src/logic/missileLogic.ts b/src/logic/missileLogic.ts new file mode 100644 index 0000000..78d1230 --- /dev/null +++ b/src/logic/missileLogic.ts @@ -0,0 +1,207 @@ +/** + * 导弹系统逻辑 + * 处理星际导弹攻击、射程计算、拦截等 + */ + +import type { Planet, MissileAttack, DefenseType, TechnologyType, Position } from '@/types/game' +import { DefenseType as DefenseTypes } from '@/types/game' + +/** + * 计算导弹射程(基于脉冲引擎等级) + * 射程 = 5 * impulseDriveLevel - 1(系统距离) + */ +export const calculateMissileRange = (impulseDriveLevel: number): number => { + if (impulseDriveLevel === 0) return 0 + return 5 * impulseDriveLevel - 1 +} + +/** + * 计算两个位置之间的系统距离 + */ +export const calculateSystemDistance = (from: Position, to: Position): number => { + // 如果在不同银河系,距离无限大 + if (from.galaxy !== to.galaxy) { + return Infinity + } + + // 同一银河系内的系统距离 + return Math.abs(from.system - to.system) +} + +/** + * 检查目标是否在射程内 + */ +export const isTargetInRange = ( + originPosition: Position, + targetPosition: Position, + impulseDriveLevel: number +): boolean => { + const range = calculateMissileRange(impulseDriveLevel) + const distance = calculateSystemDistance(originPosition, targetPosition) + return distance <= range +} + +/** + * 计算导弹飞行时间(秒) + * 基础飞行时间: 30秒 + 60秒/系统距离 + */ +export const calculateMissileFlightTime = (distance: number): number => { + return 30 + distance * 60 +} + +/** + * 创建导弹攻击任务 + */ +export const createMissileAttack = ( + playerId: string, + originPlanet: Planet, + targetPosition: Position, + targetPlanetId: string | undefined, + missileCount: number +): MissileAttack => { + const now = Date.now() + const distance = calculateSystemDistance(originPlanet.position, targetPosition) + const flightTime = calculateMissileFlightTime(distance) * 1000 // 转换为毫秒 + + return { + id: `missile_${now}_${playerId}`, + playerId, + originPlanetId: originPlanet.id, + targetPosition, + targetPlanetId, + missileCount, + launchTime: now, + arrivalTime: now + flightTime, + status: 'flying' + } +} + +/** + * 验证导弹发射条件 + */ +export const validateMissileLaunch = ( + originPlanet: Planet, + targetPosition: Position, + missileCount: number, + technologies: Partial> +): { + valid: boolean + reason?: string +} => { + // 检查是否有足够的星际导弹 + const availableMissiles = originPlanet.defense[DefenseTypes.InterplanetaryMissile] || 0 + if (availableMissiles < missileCount) { + return { valid: false, reason: 'errors.insufficientMissiles' } + } + + // 检查发射数量 + if (missileCount <= 0) { + return { valid: false, reason: 'errors.invalidMissileCount' } + } + + // 检查射程 + const impulseDriveLevel = technologies['impulseDrive'] || 0 + if (!isTargetInRange(originPlanet.position, targetPosition, impulseDriveLevel)) { + return { valid: false, reason: 'errors.targetOutOfRange' } + } + + // 不能攻击自己的星球 + if ( + originPlanet.position.galaxy === targetPosition.galaxy && + originPlanet.position.system === targetPosition.system && + originPlanet.position.position === targetPosition.position + ) { + return { valid: false, reason: 'errors.cannotAttackOwnPlanet' } + } + + return { valid: true } +} + +/** + * 执行导弹发射(扣除导弹) + */ +export const executeMissileLaunch = (planet: Planet, missileCount: number): void => { + const currentMissiles = planet.defense[DefenseTypes.InterplanetaryMissile] || 0 + planet.defense[DefenseTypes.InterplanetaryMissile] = currentMissiles - missileCount +} + +/** + * 计算导弹攻击结果(考虑拦截) + * @returns 实际命中的导弹数量 + */ +export const calculateMissileImpact = ( + attackingMissiles: number, + defenderPlanet: Planet +): { + missileHits: number + missileIntercepted: number + defenseLosses: Partial> +} => { + const antiBallisticMissiles = defenderPlanet.defense[DefenseTypes.AntiBallisticMissile] || 0 + + // 反弹道导弹拦截(1:1) + const intercepted = Math.min(attackingMissiles, antiBallisticMissiles) + const missileHits = attackingMissiles - intercepted + + // 计算防御损失 + const defenseLosses: Partial> = {} + + // 消耗的反弹道导弹 + if (intercepted > 0) { + defenseLosses[DefenseTypes.AntiBallisticMissile] = intercepted + } + + // 如果有导弹命中,随机摧毁防御设施 + if (missileHits > 0) { + const defenseTypes = Object.keys(defenderPlanet.defense) as DefenseType[] + const availableDefenses = defenseTypes.filter(type => { + // 不能摧毁护盾罩和行星护盾 + if ( + type === DefenseTypes.SmallShieldDome || + type === DefenseTypes.LargeShieldDome || + type === DefenseTypes.PlanetaryShield + ) { + return false + } + return (defenderPlanet.defense[type] || 0) > 0 + }) + + // 每枚导弹可以摧毁一个防御设施 + for (let i = 0; i < missileHits && availableDefenses.length > 0; i++) { + const randomIndex = Math.floor(Math.random() * availableDefenses.length) + const targetDefense = availableDefenses[randomIndex] + + if (targetDefense) { + if (!defenseLosses[targetDefense]) { + defenseLosses[targetDefense] = 0 + } + defenseLosses[targetDefense]!++ + + // 如果该类型防御全部摧毁,从可用列表中移除 + const remaining = (defenderPlanet.defense[targetDefense] || 0) - (defenseLosses[targetDefense] || 0) + if (remaining <= 0) { + availableDefenses.splice(randomIndex, 1) + } + } + } + } + + return { + missileHits, + missileIntercepted: intercepted, + defenseLosses + } +} + +/** + * 应用导弹攻击结果到星球 + */ +export const applyMissileAttackResult = ( + planet: Planet, + defenseLosses: Partial> +): void => { + for (const [defenseType, lossCount] of Object.entries(defenseLosses)) { + const currentCount = planet.defense[defenseType as DefenseType] || 0 + planet.defense[defenseType as DefenseType] = Math.max(0, currentCount - lossCount) + } +} diff --git a/src/logic/npcBehaviorLogic.ts b/src/logic/npcBehaviorLogic.ts index 4fcc3f6..8fb14f0 100644 --- a/src/logic/npcBehaviorLogic.ts +++ b/src/logic/npcBehaviorLogic.ts @@ -97,8 +97,8 @@ export const shouldNPCSpyPlayer = (npc: NPC, player: Player, currentTime: number return Math.random() < 0.5 } if (relation.status === RelationStatus.Hostile) { - // 敌对NPC侦查频率提高50% - return Math.random() < 1.5 + // 敌对NPC必定侦查 + return true } } @@ -695,7 +695,7 @@ export const forceNPCSpyAndAttack = ( return { spyMission, attackMission: null } } - const { spyReport } = processNPCSpyArrival(npc, spyMission, targetPlanet, player) + const { spyReport, spiedNotification } = processNPCSpyArrival(npc, spyMission, targetPlanet, player) // 保存侦查报告到NPC if (!npc.playerSpyReports) { @@ -703,6 +703,12 @@ export const forceNPCSpyAndAttack = ( } npc.playerSpyReports[targetPlanet.id] = spyReport + // 添加被侦查通知给玩家 + if (!player.spiedNotifications) { + player.spiedNotifications = [] + } + player.spiedNotifications.push(spiedNotification) + // 3. 立即发起攻击 const attackMission = forceNPCAttackPlayer(npc, player, allPlanets, targetPlanetIndex) @@ -713,7 +719,7 @@ export const forceNPCSpyAndAttack = ( * 测试函数:加速舰队任务到达时间 * 将任务的到达时间设置为现在+指定秒数 */ -export const accelerateNPCMission = (npc: NPC, missionId: string, arriveInSeconds = 5): boolean => { +export const accelerateNPCMission = (npc: NPC, missionId: string, arriveInSeconds = 5, player?: Player): boolean => { if (!npc.fleetMissions) { console.error('[Test] NPC has no fleet missions') return false @@ -726,7 +732,19 @@ export const accelerateNPCMission = (npc: NPC, missionId: string, arriveInSecond } const now = Date.now() - mission.arrivalTime = now + arriveInSeconds * 1000 + const flightTime = arriveInSeconds * 1000 // 飞行时间(毫秒) + + // 同时修改 departureTime 和 arrivalTime,保持飞行时间为指定秒数 + mission.departureTime = now + mission.arrivalTime = now + flightTime + + // 同时更新对应的 IncomingFleetAlert + if (player && player.incomingFleetAlerts) { + const alert = player.incomingFleetAlerts.find(a => a.id === missionId) + if (alert) { + alert.arrivalTime = mission.arrivalTime + } + } return true } @@ -734,21 +752,34 @@ export const accelerateNPCMission = (npc: NPC, missionId: string, arriveInSecond /** * 测试函数:加速所有NPC舰队任务 */ -export const accelerateAllNPCMissions = (npc: NPC, arriveInSeconds = 5): number => { +export const accelerateAllNPCMissions = (npc: NPC, arriveInSeconds = 5, player?: Player): number => { if (!npc.fleetMissions) { console.error('[Test] NPC has no fleet missions') return 0 } const now = Date.now() + const flightTime = arriveInSeconds * 1000 let count = 0 npc.fleetMissions.forEach(mission => { if (mission.status === 'outbound') { - mission.arrivalTime = now + arriveInSeconds * 1000 + // 同时修改 departureTime 和 arrivalTime + mission.departureTime = now + mission.arrivalTime = now + flightTime + + // 同时更新对应的 IncomingFleetAlert + if (player && player.incomingFleetAlerts) { + const alert = player.incomingFleetAlerts.find(a => a.id === mission.id) + if (alert) { + alert.arrivalTime = mission.arrivalTime + } + } + count++ } else if (mission.status === 'returning' && mission.returnTime) { - mission.returnTime = now + arriveInSeconds * 1000 + // 对于返回任务,保持原来的逻辑 + mission.returnTime = now + flightTime count++ } }) diff --git a/src/logic/researchLogic.ts b/src/logic/researchLogic.ts index 8171166..9144fc4 100644 --- a/src/logic/researchLogic.ts +++ b/src/logic/researchLogic.ts @@ -3,6 +3,9 @@ import { TechnologyType, BuildingType } from '@/types/game' import { TECHNOLOGIES } from '@/config/gameConfig' import * as pointsLogic from './pointsLogic' +// 用于生成唯一ID的计数器 +let researchQueueIdCounter = 0 + /** * 计算科技研究成本 */ @@ -77,8 +80,9 @@ export const checkTechnologyRequirements = ( */ export const createResearchQueueItem = (techType: TechnologyType, targetLevel: number, researchTime: number): BuildQueueItem => { const now = Date.now() + researchQueueIdCounter++ return { - id: `research_${now}`, + id: `research_${now}_${researchQueueIdCounter}`, type: 'technology', itemType: techType, targetLevel, diff --git a/src/logic/researchValidation.ts b/src/logic/researchValidation.ts index 41bb094..75b1431 100644 --- a/src/logic/researchValidation.ts +++ b/src/logic/researchValidation.ts @@ -21,6 +21,14 @@ export const validateTechnologyResearch = ( const targetLevel = currentLevel + 1 const cost = researchLogic.calculateTechnologyCost(techType, targetLevel) + // 检查队列中是否已存在该科技的研究任务 + const existingQueueItem = researchQueue.find( + item => item.type === 'technology' && item.itemType === techType + ) + if (existingQueueItem) { + return { valid: false, reason: 'errors.technologyAlreadyInQueue' } + } + // 检查研究队列是否已满 const maxQueue = publicLogic.getMaxResearchQueue(technologies) if (researchQueue.length >= maxQueue) { diff --git a/src/logic/shipLogic.ts b/src/logic/shipLogic.ts index d5432b4..877bd29 100644 --- a/src/logic/shipLogic.ts +++ b/src/logic/shipLogic.ts @@ -2,6 +2,9 @@ import type { Resources, BuildQueueItem, Fleet } from '@/types/game' import { ShipType, DefenseType, BuildingType, TechnologyType } from '@/types/game' import { SHIPS, DEFENSES } from '@/config/gameConfig' +// 用于生成唯一ID的计数器 +let shipQueueIdCounter = 0 + /** * 计算舰船建造成本 */ @@ -153,13 +156,52 @@ export const checkShieldDomeLimit = ( return true } +/** + * 计算导弹发射井容量 + */ +export const calculateMissileSiloCapacity = (buildings: Partial>): number => { + const siloLevel = buildings[BuildingType.MissileSilo] || 0 + return siloLevel * 10 // 每级存储10枚导弹 +} + +/** + * 计算当前导弹总数 + */ +export const calculateCurrentMissileCount = (defense: Partial>): number => { + const interplanetaryMissiles = defense[DefenseType.InterplanetaryMissile] || 0 + const antiBallisticMissiles = defense[DefenseType.AntiBallisticMissile] || 0 + return interplanetaryMissiles + antiBallisticMissiles +} + +/** + * 检查导弹容量限制 + */ +export const checkMissileSiloLimit = ( + defenseType: DefenseType, + currentDefense: Partial>, + buildings: Partial>, + quantity: number +): boolean => { + // 只对导弹类型进行检查 + if (defenseType !== DefenseType.InterplanetaryMissile && defenseType !== DefenseType.AntiBallisticMissile) { + return true + } + + const maxCapacity = calculateMissileSiloCapacity(buildings) + const currentCount = calculateCurrentMissileCount(currentDefense) + const newCount = currentCount + quantity + + return newCount <= maxCapacity +} + /** * 创建舰船建造队列项 */ export const createShipQueueItem = (shipType: ShipType, quantity: number, buildTime: number): BuildQueueItem => { const now = Date.now() + shipQueueIdCounter++ return { - id: `ship_${now}`, + id: `ship_${now}_${shipQueueIdCounter}`, type: 'ship', itemType: shipType, quantity, @@ -173,8 +215,9 @@ export const createShipQueueItem = (shipType: ShipType, quantity: number, buildT */ export const createDefenseQueueItem = (defenseType: DefenseType, quantity: number, buildTime: number): BuildQueueItem => { const now = Date.now() + shipQueueIdCounter++ return { - id: `defense_${now}`, + id: `defense_${now}_${shipQueueIdCounter}`, type: 'defense', itemType: defenseType, quantity, diff --git a/src/logic/shipValidation.ts b/src/logic/shipValidation.ts index 3fad0af..1dbdc52 100644 --- a/src/logic/shipValidation.ts +++ b/src/logic/shipValidation.ts @@ -100,6 +100,11 @@ export const validateDefenseBuild = ( return { valid: false, reason: 'errors.shieldDomeLimit' } } + // 导弹发射井容量限制 + if (!shipLogic.checkMissileSiloLimit(defenseType, planet.defense, planet.buildings, quantity)) { + return { valid: false, reason: 'errors.missileSiloLimit' } + } + return { valid: true } } diff --git a/src/router/index.ts b/src/router/index.ts index 82b1bff..23bb8f6 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -15,19 +15,8 @@ const router = createRouter({ { path: '/galaxy', name: 'galaxy', component: () => import('@/views/GalaxyView.vue') }, { path: '/diplomacy', name: 'diplomacy', component: () => import('@/views/DiplomacyView.vue') }, { path: '/settings', name: 'settings', component: () => import('@/views/SettingsView.vue') }, - { - path: '/gm', - name: 'gm', - component: () => import('@/views/GMView.vue'), - beforeEnter: (_to, _from, next) => { - // GM页面仅在开发模式下可访问 - if (import.meta.env.DEV) { - next() - } else { - next('/') - } - } - } + { path: '/gm', name: 'gm', component: () => import('@/views/GMView.vue') }, + { path: '/:pathMatch(.*)*', name: 'not-found', component: () => import('@/views/NotFoundView.vue') } ] }) diff --git a/src/stores/gameStore.ts b/src/stores/gameStore.ts index 219d5fc..a49e615 100644 --- a/src/stores/gameStore.ts +++ b/src/stores/gameStore.ts @@ -1,5 +1,5 @@ import { defineStore } from 'pinia' -import type { Planet, Player, BuildQueueItem, FleetMission, BattleResult, SpyReport, Officer, SpiedNotification, NPCActivityNotification, IncomingFleetAlert } from '@/types/game' +import type { Planet, Player, BuildQueueItem, FleetMission, BattleResult, SpyReport, Officer, SpiedNotification, NPCActivityNotification, IncomingFleetAlert, MissileAttack } from '@/types/game' import { TechnologyType, OfficerType } from '@/types/game' import type { Locale } from '@/locales' import pkg from '../../package.json' @@ -9,6 +9,7 @@ export const useGameStore = defineStore('game', { state: () => ({ gameTime: Date.now(), isPaused: false, + gameSpeed: 1, player: { id: 'player1', name: '', @@ -17,6 +18,7 @@ export const useGameStore = defineStore('game', { officers: {} as Record, researchQueue: [] as BuildQueueItem[], fleetMissions: [] as FleetMission[], + missileAttacks: [] as MissileAttack[], battleReports: [] as BattleResult[], spyReports: [] as SpyReport[], spiedNotifications: [] as SpiedNotification[], @@ -25,7 +27,9 @@ export const useGameStore = defineStore('game', { incomingFleetAlerts: [] as IncomingFleetAlert[], giftNotifications: [], giftRejectedNotifications: [], - points: 0 + points: 0, + isGMEnabled: false, // 明确设置 GM 模式默认为 false + lastVersionCheckTime: 0 // 最后一次检查版本的时间戳,默认为0 } as Player, currentPlanetId: '', isDark: '', diff --git a/src/style.css b/src/style.css index eb654e9..b518455 100644 --- a/src/style.css +++ b/src/style.css @@ -6,37 +6,38 @@ :root { --radius: 0.625rem; - /* Light mode colors */ - --background: oklch(0.99 0 0); - --foreground: oklch(0.129 0.042 264.695); - --card: oklch(1 0 0); - --card-foreground: oklch(0.129 0.042 264.695); - --popover: oklch(1 0 0); - --popover-foreground: oklch(0.129 0.042 264.695); - --primary: oklch(0.208 0.042 265.755); - --primary-foreground: oklch(0.984 0.003 247.858); - --secondary: oklch(0.968 0.007 247.896); - --secondary-foreground: oklch(0.208 0.042 265.755); - --muted: oklch(0.968 0.007 247.896); - --muted-foreground: oklch(0.554 0.046 257.417); - --accent: oklch(0.968 0.007 247.896); - --accent-foreground: oklch(0.208 0.042 265.755); - --destructive: oklch(0.577 0.245 27.325); - --border: oklch(0.929 0.013 255.508); - --input: oklch(0.929 0.013 255.508); + /* Light mode colors - 更护眼的暖色调配色 */ + --background: oklch(0.95 0.008 85); + --foreground: oklch(0.3 0.02 85); + --card: oklch(0.97 0.006 85); + --card-foreground: oklch(0.3 0.02 85); + --popover: oklch(0.97 0.006 85); + --popover-foreground: oklch(0.3 0.02 85); + --primary: oklch(0.35 0.03 240); + --primary-foreground: oklch(0.98 0.005 85); + --secondary: oklch(0.92 0.01 85); + --secondary-foreground: oklch(0.3 0.02 85); + --muted: oklch(0.92 0.01 85); + --muted-foreground: oklch(0.5 0.02 85); + --accent: oklch(0.92 0.01 85); + --accent-foreground: oklch(0.3 0.02 85); + --destructive: oklch(0.5 0.15 25); + --destructive-foreground: oklch(0.98 0.005 85); + --border: oklch(0.86 0.012 85); + --input: oklch(0.86 0.012 85); --ring: oklch(0.704 0.04 256.788); --chart-1: oklch(0.646 0.222 41.116); --chart-2: oklch(0.6 0.118 184.704); --chart-3: oklch(0.398 0.07 227.392); --chart-4: oklch(0.828 0.189 84.429); --chart-5: oklch(0.769 0.188 70.08); - --sidebar: oklch(0.984 0.003 247.858); - --sidebar-foreground: oklch(0.129 0.042 264.695); - --sidebar-primary: oklch(0.208 0.042 265.755); - --sidebar-primary-foreground: oklch(0.984 0.003 247.858); - --sidebar-accent: oklch(0.968 0.007 247.896); - --sidebar-accent-foreground: oklch(0.208 0.042 265.755); - --sidebar-border: oklch(0.929 0.013 255.508); + --sidebar: oklch(0.96 0.006 85); + --sidebar-foreground: oklch(0.3 0.02 85); + --sidebar-primary: oklch(0.35 0.03 240); + --sidebar-primary-foreground: oklch(0.98 0.005 85); + --sidebar-accent: oklch(0.92 0.01 85); + --sidebar-accent-foreground: oklch(0.3 0.02 85); + --sidebar-border: oklch(0.86 0.012 85); --sidebar-ring: oklch(0.704 0.04 256.788); } @@ -94,6 +95,7 @@ --color-accent: var(--accent); --color-accent-foreground: var(--accent-foreground); --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); --color-border: var(--border); --color-input: var(--input); --color-ring: var(--ring); diff --git a/src/types/game.ts b/src/types/game.ts index 73b59d0..c872129 100644 --- a/src/types/game.ts +++ b/src/types/game.ts @@ -206,7 +206,8 @@ export const MissionType = { Expedition: 'expedition', HarvestDarkMatter: 'harvestDarkMatter', // 暗物质采集 Recycle: 'recycle', // 回收残骸 - Destroy: 'destroy' // 行星毁灭 + Destroy: 'destroy', // 行星毁灭 + MissileAttack: 'missileAttack' // 导弹攻击 } as const export type MissionType = (typeof MissionType)[keyof typeof MissionType] @@ -284,6 +285,19 @@ export interface FleetMission { giftTargetNpcId?: string // 赠送目标NPC ID } +// 导弹攻击任务(不使用舰队系统) +export interface MissileAttack { + id: string + playerId: string + originPlanetId: string + targetPosition: { galaxy: number; system: number; position: number } + targetPlanetId?: string + missileCount: number // 发射的星际导弹数量 + launchTime: number + arrivalTime: number + status: 'flying' | 'arrived' | 'intercepted' +} + // 战斗结果 export interface BattleResult { id: string @@ -407,6 +421,11 @@ export interface MissionReport { destroyedPlanetName?: string // 部署任务:部署的舰队 deployedFleet?: Partial + // 导弹攻击任务:导弹信息 + missileCount?: number + missileHits?: number + missileIntercepted?: number + defenseLosses?: Partial> } read?: boolean } @@ -533,6 +552,7 @@ export interface Player { officers: Record researchQueue: BuildQueueItem[] fleetMissions: FleetMission[] + missileAttacks: MissileAttack[] // 导弹攻击任务 battleReports: BattleResult[] spyReports: SpyReport[] spiedNotifications: SpiedNotification[] // 被侦查通知 @@ -542,6 +562,9 @@ export interface Player { giftNotifications: GiftNotification[] // 礼物通知(等待接受/拒绝) giftRejectedNotifications: GiftRejectedNotification[] // 礼物被拒绝通知 points: number // 总积分(每1000资源=1分) + isGMEnabled?: boolean // GM模式开关(默认false,通过秘籍激活) + lastVersionCheckTime?: number // 最后一次自动检查版本的时间戳(被动检测) + lastManualUpdateCheck?: number // 最后一次手动检查更新的时间戳(主动检测) // 外交系统字段 diplomaticRelations?: Record // 玩家对NPC的关系(key: npcId) diplomaticReports?: DiplomaticReport[] // 外交变化报告 diff --git a/src/utils/battleSimulator.ts b/src/utils/battleSimulator.ts index caeb324..4d14b4a 100644 --- a/src/utils/battleSimulator.ts +++ b/src/utils/battleSimulator.ts @@ -342,6 +342,7 @@ export const simulateBattle = ( } else if (defenderUnits.length === 0) { winner = 'attacker' } else { + // OGame原版规则:6回合后双方都有剩余单位时判定为平局 winner = 'draw' } diff --git a/src/utils/format.ts b/src/utils/format.ts index a9675e8..4ea641b 100644 --- a/src/utils/format.ts +++ b/src/utils/format.ts @@ -1,3 +1,4 @@ + /** * 格式化数字为英文单位(K, M, B, T, Q) * @param num 数字 diff --git a/src/utils/versionCheck.ts b/src/utils/versionCheck.ts new file mode 100644 index 0000000..5c4cc62 --- /dev/null +++ b/src/utils/versionCheck.ts @@ -0,0 +1,57 @@ +import pkg from '../../package.json' + +export interface VersionInfo { + version: string + releaseNotes: string + downloadUrl: string +} + +// 检查GitHub最新版本 +export const checkLatestVersion = async (lastCheckTime: number, updateCheckTime: (time: number) => void): Promise => { + const now = Date.now() + const fiveMinutes = 5 * 60 * 1000 // 5分钟 + + // 如果距离上次检查不到5分钟,跳过 + if (now - lastCheckTime < fiveMinutes) { + return null + } + + try { + const response = await fetch(`https://api.github.com/repos/${pkg.author.name}/${pkg.name}/releases/latest`) + + if (!response.ok) { + console.error('Failed to fetch latest version:', response.status) + // 更新检查时间,避免频繁请求失败的API + updateCheckTime(now) + throw new Error(`Failed to fetch version: ${response.status}`) + } + + const data = await response.json() + const githubVersion = data.tag_name?.replace(/^v/, '') // 移除开头的 'v' (如 v1.2.0 -> 1.2.0) + + // 更新最后检查时间 + updateCheckTime(now) + + // 比较版本号 + if (githubVersion && githubVersion !== pkg.version) { + return { + version: githubVersion, + releaseNotes: data.body || '', + downloadUrl: `https://github.com/${pkg.author.name}/${pkg.name}/releases/latest` + } + } + return null + } catch (error) { + console.error('Error checking version:', error) + // 更新检查时间,避免频繁请求失败的API + updateCheckTime(now) + throw error + } +} + +// 检查是否可以进行版本检查(距离上次检查是否超过5分钟) +export const canCheckVersion = (lastCheckTime: number): boolean => { + const now = Date.now() + const fiveMinutes = 5 * 60 * 1000 // 5分钟 + return now - lastCheckTime >= fiveMinutes +} diff --git a/src/views/BuildingsView.vue b/src/views/BuildingsView.vue index 502d2ae..3d9b091 100644 --- a/src/views/BuildingsView.vue +++ b/src/views/BuildingsView.vue @@ -415,7 +415,9 @@ ${t('buildingsView.demolishRefund')}: ${t('resources.metal')}: ${formatNumber(refund.metal)} ${t('resources.crystal')}: ${formatNumber(refund.crystal)} -${t('resources.deuterium')}: ${formatNumber(refund.deuterium)}${refund.darkMatter > 0 ? `\n${t('resources.darkMatter')}: ${formatNumber(refund.darkMatter)}` : ''}` +${t('resources.deuterium')}: ${formatNumber(refund.deuterium)}${ + refund.darkMatter > 0 ? `\n${t('resources.darkMatter')}: ${formatNumber(refund.darkMatter)}` : '' + }` pendingDemolishBuilding.value = buildingType demolishConfirmOpen.value = true diff --git a/src/views/DefenseView.vue b/src/views/DefenseView.vue index b91868c..d703e7c 100644 --- a/src/views/DefenseView.vue +++ b/src/views/DefenseView.vue @@ -5,6 +5,29 @@

    {{ t('defenseView.title') }}

    + +
    +
    +
    {{ t('defenseView.missileCapacity') }}:
    +
    + + {{ formatNumber(currentMissileCount) }} + + / + {{ formatNumber(missileSiloCapacity) }} +
    +
    +
    +
    +
    +
    +
    +
    +
    @@ -156,6 +179,7 @@ import { formatNumber, getResourceCostColor } from '@/utils/format' import * as publicLogic from '@/logic/publicLogic' import * as shipValidation from '@/logic/shipValidation' + import * as shipLogic from '@/logic/shipLogic' const gameStore = useGameStore() const detailDialog = useDetailDialogStore() @@ -163,6 +187,17 @@ const { DEFENSES } = useGameConfig() const planet = computed(() => gameStore.currentPlanet) + // 导弹容量相关计算 + const missileSiloCapacity = computed(() => { + if (!planet.value) return 0 + return shipLogic.calculateMissileSiloCapacity(planet.value.buildings) + }) + + const currentMissileCount = computed(() => { + if (!planet.value) return 0 + return shipLogic.calculateCurrentMissileCount(planet.value.defense) + }) + // AlertDialog 状态 const alertDialogOpen = ref(false) const alertDialogTitle = ref('') @@ -197,11 +232,12 @@ } const buildDefense = (defenseType: DefenseType, quantity: number): boolean => { - if (!gameStore.currentPlanet) return false - const validation = shipValidation.validateDefenseBuild(gameStore.currentPlanet, defenseType, quantity, gameStore.player.technologies) + const currentPlanet = gameStore.currentPlanet + if (!currentPlanet) return false + const validation = shipValidation.validateDefenseBuild(currentPlanet, defenseType, quantity, gameStore.player.technologies) if (!validation.valid) return false - const queueItem = shipValidation.executeDefenseBuild(gameStore.currentPlanet, defenseType, quantity, gameStore.player.officers) - gameStore.currentPlanet.buildQueue.push(queueItem) + const queueItem = shipValidation.executeDefenseBuild(currentPlanet, defenseType, quantity, gameStore.player.officers) + currentPlanet.buildQueue.push(queueItem) return true } diff --git a/src/views/DiplomacyView.vue b/src/views/DiplomacyView.vue index 18c5f94..f8b20da 100644 --- a/src/views/DiplomacyView.vue +++ b/src/views/DiplomacyView.vue @@ -12,19 +12,34 @@ {{ t('diplomacy.tabs.all') }} - {{ allNpcs.length }} + {{ allNpcs.length }} {{ t('diplomacy.tabs.friendly') }} - {{ friendlyNpcs.length }} + + {{ friendlyNpcs.length }} + {{ t('diplomacy.tabs.neutral') }} - {{ neutralNpcs.length }} + + {{ neutralNpcs.length }} + {{ t('diplomacy.tabs.hostile') }} - {{ hostileNpcs.length }} + + {{ hostileNpcs.length }} + @@ -202,7 +217,7 @@ diff --git a/src/views/GalaxyView.vue b/src/views/GalaxyView.vue index 5f14dad..f698a88 100644 --- a/src/views/GalaxyView.vue +++ b/src/views/GalaxyView.vue @@ -162,7 +162,7 @@
    - -
    - {{ slot.position }} -
    - - -
    -
    - -
    - -
    -

    {{ slot.planet.name }}

    - - [{{ slot.planet.position.galaxy }}:{{ slot.planet.position.system }}:{{ slot.planet.position.position }}] - + +
    + +
    + +
    + {{ slot.position }} +
    + +
    +
    + +
    +

    {{ slot.planet.name }}

    + + [{{ slot.planet.position.galaxy }}:{{ slot.planet.position.system }}:{{ slot.planet.position.position }}] + + + {{ t('galaxyView.mine') }} + + + {{ getRelationStatusText(slot.planet) }} + + + + + + + + +
    +

    {{ t('galaxyView.debrisField') }}

    +
    +
    + + {{ t('resources.metal') }}: + + {{ formatNumber(getDebrisFieldAt(currentGalaxy, currentSystem, slot.position)!.resources.metal) }} + +
    +
    + + {{ t('resources.crystal') }}: + + {{ formatNumber(getDebrisFieldAt(currentGalaxy, currentSystem, slot.position)!.resources.crystal) }} + +
    +
    +
    +
    +
    +
    + +
    + {{ t('diplomacy.reputation') }}: + + {{ getReputationValue(slot.planet)! > 0 ? '+' : '' }}{{ getReputationValue(slot.planet) }} + +
    - -
    - {{ t('galaxyView.mine') }} - - {{ getRelationStatusText(slot.planet) }} - - + +
    +
    {{ t('galaxyView.emptySlot') }}
    + - + {{ t('galaxyView.debris') }} @@ -250,59 +293,195 @@
    - - - -
    - {{ t('diplomacy.reputation') }}: - - {{ getReputationValue(slot.planet)! > 0 ? '+' : '' }}{{ getReputationValue(slot.planet) }} - -
    - -
    -
    {{ t('galaxyView.emptySlot') }}
    - - - - - - {{ t('galaxyView.debris') }} - - - -
    -

    {{ t('galaxyView.debrisField') }}

    -
    -
    - - {{ t('resources.metal') }}: - - {{ formatNumber(getDebrisFieldAt(currentGalaxy, currentSystem, slot.position)!.resources.metal) }} - -
    -
    - - {{ t('resources.crystal') }}: - - {{ formatNumber(getDebrisFieldAt(currentGalaxy, currentSystem, slot.position)!.resources.crystal) }} - -
    -
    -
    -
    -
    + + +
    + + + + + + +

    {{ t('galaxyView.scout') }}

    +
    +
    + + + + + +

    {{ t('galaxyView.attack') }}

    +
    +
    + + + + + +

    {{ t('galaxyView.missileAttack') }}

    +
    +
    + + + + + +

    {{ t('galaxyView.sendGift') }}

    +
    +
    + + + + + +

    {{ t('galaxyView.colonize') }}

    +
    +
    + + + + + +

    {{ t('galaxyView.switch') }}

    +
    +
    + + + + + +

    {{ t('galaxyView.recycle') }}

    +
    +
    +
    - -
    + + + + +