diff --git a/404.html b/404.html index 7546df37..b6b0c982 100644 --- a/404.html +++ b/404.html @@ -1,41 +1,42 @@ - - - + + + - - - + + + - - - - + + + + - - - - + + + + + - - - - - - - - - - - + + + + + + + + + + + - Ocular - - - - -
- - + Ocular + + + + +
+ + diff --git a/assets/AnimatedRouterView-0f460d78.js b/assets/AnimatedRouterView-43191cc5.js similarity index 60% rename from assets/AnimatedRouterView-0f460d78.js rename to assets/AnimatedRouterView-43191cc5.js index 75532ff8..baca54b3 100644 --- a/assets/AnimatedRouterView-0f460d78.js +++ b/assets/AnimatedRouterView-43191cc5.js @@ -1 +1 @@ -import{_ as i,h as r,o as t,i as s,w as n,l as c,a6 as l,q as m}from"./index-1bee1cb1.js";const u="l",_="m",v={transitionTarget:u,transitionOrigin:_},d={};function f(e,p){const a=r("RouterView");return t(),s(a,null,{default:n(({Component:o})=>[c(l,{"enter-active-class":e.$style.transitionTarget,"enter-from-class":e.$style.transitionOrigin,"leave-active-class":e.$style.transitionTarget,"leave-to-class":e.$style.transitionOrigin,mode:"out-in"},{default:n(()=>[(t(),s(m(o)))]),_:2},1032,["enter-active-class","enter-from-class","leave-active-class","leave-to-class"])]),_:1})}const g={$style:v},w=i(d,[["render",f],["__cssModules",g]]);export{w as A}; +import{_ as i,h as r,o as t,i as s,w as n,l as c,a6 as l,q as _}from"./index-635eac34.js";const m="_",u="a",v={transitionTarget:m,transitionOrigin:u},d={};function f(e,p){const a=r("RouterView");return t(),s(a,null,{default:n(({Component:o})=>[c(l,{"enter-active-class":e.$style.transitionTarget,"enter-from-class":e.$style.transitionOrigin,"leave-active-class":e.$style.transitionTarget,"leave-to-class":e.$style.transitionOrigin,mode:"out-in"},{default:n(()=>[(t(),s(_(o)))]),_:2},1032,["enter-active-class","enter-from-class","leave-active-class","leave-to-class"])]),_:1})}const g={$style:v},w=i(d,[["render",f],["__cssModules",g]]);export{w as A}; diff --git a/assets/AnimatedRouterView-56c49743.css b/assets/AnimatedRouterView-56c49743.css deleted file mode 100644 index bbb948fe..00000000 --- a/assets/AnimatedRouterView-56c49743.css +++ /dev/null @@ -1 +0,0 @@ -.l{transition:all var(--transition-s)}.m{opacity:0} diff --git a/assets/AnimatedRouterView-72717bb4.css b/assets/AnimatedRouterView-72717bb4.css new file mode 100644 index 00000000..82a234ce --- /dev/null +++ b/assets/AnimatedRouterView-72717bb4.css @@ -0,0 +1 @@ +._{transition:all var(--transition-s)}.a{opacity:0} diff --git a/assets/AsyncComponent-20af1d2f.css b/assets/AsyncComponent-20af1d2f.css new file mode 100644 index 00000000..1bdb5d54 --- /dev/null +++ b/assets/AsyncComponent-20af1d2f.css @@ -0,0 +1 @@ +@keyframes t{0%{transform:translate(-25px)}50%{width:30px}to{transform:translate(25px)}}.s{display:flex;align-items:center;justify-content:center;width:100%;height:100%;flex-grow:1}.s>span{width:10px;height:5px;background:var(--c-primary);border-radius:15px;animation:t 1s infinite alternate ease-in-out}.u{display:flex;width:100%;height:100%;animation:var(--animation-fade-in-scale) var(--transition-s)} diff --git a/assets/AsyncComponent-f4427d1d.js b/assets/AsyncComponent-3263497c.js similarity index 57% rename from assets/AsyncComponent-f4427d1d.js rename to assets/AsyncComponent-3263497c.js index 869f15b1..ac1694c7 100644 --- a/assets/AsyncComponent-f4427d1d.js +++ b/assets/AsyncComponent-3263497c.js @@ -1 +1 @@ -import{d as p,I as u,c as d,J as m,o as a,a as n,i,n as c,q as _,F as h,p as f,b as y,_ as v}from"./index-1bee1cb1.js";const w=y("span",null,null,-1),k=[w],C=p({__name:"AsyncComponent",props:{class:{},show:{type:Boolean,default:!0},import:{}},setup(r){const s=r,o=u(),t=d(()=>s.class);let l=!1;return m(()=>{s.show&&!l&&(l=!0,s.import().then(e=>o.value=e.default))}),(e,F)=>e.show?(a(),n(h,{key:0},[o.value?(a(),i(_(o.value),{key:0,class:c(t.value)},null,8,["class"])):(a(),n("div",{key:1,class:c([e.$style.placeholder,t.value])},k,2))],64)):f("",!0)}}),B="N",A="O",N="P",g={placeholder:B,loader:A,wrapper:N},E={$style:g},V=v(C,[["__cssModules",E]]);export{V as A}; +import{d as p,I as u,c as d,J as m,o as a,a as n,i,n as c,q as _,F as h,p as f,b as y,_ as v}from"./index-635eac34.js";const w=y("span",null,null,-1),k=[w],C=p({__name:"AsyncComponent",props:{class:{},show:{type:Boolean,default:!0},import:{}},setup(r){const s=r,o=u(),t=d(()=>s.class);let l=!1;return m(()=>{s.show&&!l&&(l=!0,s.import().then(e=>o.value=e.default))}),(e,M)=>e.show?(a(),n(h,{key:0},[o.value?(a(),i(_(o.value),{key:0,class:c(t.value)},null,8,["class"])):(a(),n("div",{key:1,class:c([e.$style.placeholder,t.value])},k,2))],64)):f("",!0)}}),B="s",A="t",g="u",E={placeholder:B,loader:A,wrapper:g},F={$style:E},V=v(C,[["__cssModules",F]]);export{V as A}; diff --git a/assets/AsyncComponent-baca1621.css b/assets/AsyncComponent-baca1621.css deleted file mode 100644 index 09c837d9..00000000 --- a/assets/AsyncComponent-baca1621.css +++ /dev/null @@ -1 +0,0 @@ -@keyframes O{0%{transform:translate(-25px)}50%{width:30px}to{transform:translate(25px)}}.N{display:flex;align-items:center;justify-content:center;width:100%;height:100%;flex-grow:1}.N>span{width:10px;height:5px;background:var(--c-primary);border-radius:15px;animation:O 1s infinite alternate ease-in-out}.P{display:flex;width:100%;height:100%;animation:var(--animation-fade-in-scale) var(--transition-s)} diff --git a/assets/BudgetPane-21b65ecf.js b/assets/BudgetPane-21b65ecf.js deleted file mode 100644 index fbbc2db1..00000000 --- a/assets/BudgetPane-21b65ecf.js +++ /dev/null @@ -1 +0,0 @@ -import{u as x,i as ee,a as te,b as se,_ as le}from"./EChart.vue_vue_type_script_setup_true_lang-e0bf0237.js";import{d as A,c as M,o as m,i as R,n as u,K as ne,x as I,a as f,l as g,k as v,s as oe,b as c,t as E,p as ae,_ as S,L as Z,M as j,e as K,N as ue,O as H,P as J,y as re,f as X,B as z,G as O,F as w,r as P,w as q}from"./index-1bee1cb1.js";import{t as ce}from"./budgets-531db56b.js";import{P as de}from"./Pane-ff954356.js";import{B as U}from"./Button-6d17a4fd.js";import{C as F}from"./Currency-e1b802bf.js";import{u as pe}from"./useMonthNames-09c7e203.js";const ie=A({__name:"MiniChart",props:{class:{},values:{}},setup(b){const _=b;x([ee,te,se]);const l=M(()=>_.class),d=M(()=>({xAxis:{type:"category",show:!1},yAxis:{show:!1,min:Math.min(..._.values)},grid:{top:"15%",left:0,bottom:"20%",right:0},series:[{data:_.values,type:"line",smooth:!0,showSymbol:!1,silent:!0}]}));return(p,i)=>(m(),R(le,{class:u(l.value),options:d.value},null,8,["class","options"]))}}),o=ne({group:void 0,source:void 0,target:void 0,type:void 0}),me=A({__name:"Draggable",props:{text:{type:Function},name:{},id:{}},emits:["drop"],setup(b,{emit:_}){const l=b,d=I(),p=I(),i=I(0),h=I(0),B=M(()=>l.id===o.target&&o.type),N=M(()=>B.value?o.type==="before"?"skip-up-line":"skip-down-line":"draggable"),k=M(()=>{var s;return o.target&&o.target&&o.source?(s=l.text)==null?void 0:s.call(l,o):void 0}),G=s=>{s.dataTransfer&&p.value&&(o.group=l.name,o.source=l.id,s.dataTransfer.effectAllowed="move",s.dataTransfer.setDragImage(p.value,1/0,1/0),s.dataTransfer.setData("text/plain",l.name))},C=s=>{i.value=s.pageX,h.value=s.pageY},a=s=>{var e;if(o.group===l.name){const y=(e=d.value)==null?void 0:e.getBoundingClientRect();if(s.preventDefault(),y&&l.id!==o.source){const n=s.pageY{s.pageX&&s.pageY&&o.target!==l.id&&(o.type=void 0,o.target=void 0)},$=()=>{o.type=void 0,o.target=void 0,o.source=void 0,o.group=void 0},r=s=>{o.target&&o.target&&o.source&&_("drop",o),s.preventDefault()};return(s,e)=>(m(),f("div",{ref_key:"draggable",ref:d,class:u(s.$style.draggable),draggable:"true",onDragend:$,onDragover:a,onDragleave:t,onDrop:r,onDrag:C,onDragstart:G},[g(U,{color:v(o).group===l.name?"primary":"dimmed",icon:N.value,textual:""},null,8,["color","icon"]),v(o).source===l.id&&h.value&&i.value&&k.value?(m(),f("div",{key:0,style:oe({top:`${h.value+5}px`,left:`${i.value+5}px`}),class:u(s.$style.content)},[c("span",{class:u(s.$style.text)},E(k.value),3)],6)):ae("",!0),c("div",{ref_key:"element",ref:p,class:u(s.$style.hidden)},"hidden",2)],34))}}),ge="lb",ve="mb",ye="nb",fe="ob",$e={draggable:ge,content:ve,text:ye,hidden:fe},be={$style:$e},Q=S(me,[["__cssModules",be]]),_e=["type","value"],he=A({__name:"CurrencyCell",props:Z({max:{default:Number.MAX_SAFE_INTEGER}},{modelValue:{}}),emits:["update:modelValue"],setup(b){const _=b,l=j(b,"modelValue"),d=I(),p=I(!1),{n:i}=K(),h=M(()=>p.value||!l.value?l.value||"":i(l.value,"currency")),B=a=>{const t=Number((a==null?void 0:a.trim())||NaN);l.value=Number.isNaN(t)?0:t},N=a=>{a.key==="-"&&a.preventDefault()},k=()=>{p.value=!0,J(()=>d.value.select())},G=a=>B(a.target.value),C=a=>{var t;return B((t=a.clipboardData)==null?void 0:t.getData("text/plain").trim())};return ue(()=>l.value,(a,t)=>{(a??0)>_.max&&t!==void 0&&(l.value=t)}),(a,t)=>(m(),f("input",{ref_key:"input",ref:d,class:u(a.$style.currencyCell),type:p.value?"number":"text",value:h.value,onBlur:t[0]||(t[0]=$=>p.value=!1),onFocus:k,onInput:G,onKeydown:[N,t[1]||(t[1]=H((...$)=>{var r,s;return((r=d.value)==null?void 0:r.blur)&&((s=d.value)==null?void 0:s.blur(...$))},["enter"]))],onPaste:C},null,42,_e))}}),Be="pb",Ce={currencyCell:Be},Me={$style:Ce},ke=S(he,[["__cssModules",Me]]),De=["value"],Ge=A({__name:"TextCell",props:Z({inline:{type:Boolean,default:!1}},{modelValue:{}}),emits:["update:modelValue"],setup(b){const _=b,l=j(b,"modelValue"),d=I(),p=re(),i=I(!1),h=M(()=>[p.textInput,{[p.empty]:!l.value,[p.inline]:_.inline}]),B=()=>{i.value=!0,J(()=>{d.value.select()})},N=k=>{l.value=k.target.value};return(k,G)=>(m(),f("span",{class:u(h.value)},[c("input",{ref_key:"input",ref:d,value:l.value,class:u(k.$style.input),type:"text",onBlur:G[0]||(G[0]=C=>i.value=!1),onFocus:B,onInput:N,onKeydown:G[1]||(G[1]=H((...C)=>{var a,t;return((a=d.value)==null?void 0:a.blur)&&((t=d.value)==null?void 0:t.blur(...C))},["enter"]))},null,42,De)],2))}}),Ve="vb",Ne="wb",we="xb",Ie="yb",Te={textInput:Ve,input:Ne,inline:we,empty:Ie},Ae={$style:Te},W=S(Ge,[["__cssModules",Ae]]),Fe=c("span",null,null,-1),Pe=c("span",{style:{"grid-column":"3 / 16"}},null,-1),Se=A({__name:"BudgetGroup",props:{group:{}},setup(b){const _=b,{moveBudget:l,removeBudgetGroup:d,getBudget:p,addBudget:i,setBudgetName:h,setBudgetGroupName:B,setBudget:N,removeBudget:k,isCurrentMonth:G}=X(),{t:C}=K(),a=M(()=>{const e=new Array(12).fill(0);for(const{values:y}of _.group.budgets)for(let n=0;nz(a.value)),$=M(()=>O(a.value)),r=e=>{const[y,n]=e.source?p(e.source)??[]:[],[D,T]=e.target?p(e.target)??[]:[];if(n&&y){if(T&&D){const V=y.id===D.id,L=V?n.name:`${y.name} » ${n.name}`,Y=V?T.name:`${D.name} » ${T.name}`;return e.type==="before"?C("budget.prepend",{from:L,to:Y}):C("budget.append",{from:L,to:Y})}return C("budget.move",{from:n.name})}},s=e=>{l(e.source,e.target,e.type==="after")};return(e,y)=>(m(),f(w,null,[g(U,{color:"dimmed",icon:"close-circle",textual:"",onClick:y[0]||(y[0]=n=>v(d)(e.group.id))}),g(W,{class:u([e.$style.top,e.$style.start]),"model-value":e.group.name,inline:"","onUpdate:modelValue":y[1]||(y[1]=n=>v(B)(e.group.id,n))},null,8,["class","model-value"]),(m(!0),f(w,null,P(a.value,(n,D)=>(m(),f("span",{key:D,class:u(e.$style.top)},[g(F,{value:n},null,8,["value"])],2))),128)),c("span",{class:u(e.$style.top)},[c("span",null,E(v(C)("budget.total")),1)],2),c("span",{class:u([e.$style.top,e.$style.end])},[c("span",null,E(v(C)("budget.average")),1)],2),(m(!0),f(w,null,P(e.group.budgets,(n,D)=>(m(),f(w,{key:n.id+D},[g(Q,{id:n.id,name:"budget-group",text:r,onDrop:s},null,8,["id"]),g(U,{color:"dimmed",icon:"close-circle",textual:"",onClick:T=>v(k)(n.id)},null,8,["onClick"]),c("span",{class:u(e.$style.header)},[g(W,{"model-value":n.name,"onUpdate:modelValue":T=>v(h)(n.id,T)},null,8,["model-value","onUpdate:modelValue"])],2),(m(!0),f(w,null,P(n.values,(T,V)=>(m(),f("span",{key:n.id+V,class:u([e.$style.currencyCell,{[e.$style.even]:D%2,[e.$style.firstRow]:D===0,[e.$style.firstColumn]:V===0,[e.$style.currentMonth]:v(G)(V),[e.$style.tlc]:D===0&&V===0,[e.$style.trc]:D===0&&V===11,[e.$style.blc]:D===e.group.budgets.length-1&&V===0,[e.$style.brc]:D===e.group.budgets.length-1&&V===11}])},[g(ke,{"model-value":n.values[V],"onUpdate:modelValue":L=>v(N)(n.id,V,L)},null,8,["model-value","onUpdate:modelValue"])],2))),128)),g(F,{class:u(e.$style.meta),value:v(z)(n.values)},null,8,["class","value"]),g(F,{class:u(e.$style.meta),value:v(O)(n.values)},null,8,["class","value"])],64))),128)),Fe,g(U,{icon:"plus",class:u(e.$style.addBudgetBtn),textual:"",color:"success",onClick:y[2]||(y[2]=n=>v(i)(e.group.id))},null,8,["class"]),Pe,g(F,{class:u([e.$style.meta,e.$style.bold]),value:t.value},null,8,["class","value"]),g(F,{class:u([e.$style.meta,e.$style.bold]),value:$.value},null,8,["class","value"])],64))}}),Ue="U_",Ee="V_",Le="W_",Re="X_",Ke="Y_",Xe="Z_",Ye="_b",ze="ab",Oe="bb",qe="cb",We="db",Ze="eb",je="fb",He="gb",Je="hb",Qe={header:Ue,meta:Ee,bold:Le,top:Re,start:Ke,end:Xe,currencyCell:Ye,firstRow:ze,firstColumn:Oe,currentMonth:qe,even:We,tlc:Ze,trc:je,blc:He,brc:Je},xe={$style:Qe},et=S(Se,[["__cssModules",xe]]),tt=c("span",null,null,-1),st=c("span",null,null,-1),lt=c("span",null,null,-1),nt=c("span",null,null,-1),ot=c("span",null,null,-1),at=c("span",null,null,-1),ut=c("span",null,null,-1),rt=c("span",null,null,-1),ct=c("span",null,null,-1),dt=c("span",null,null,-1),pt=A({__name:"BudgetGroups",props:{type:{}},setup(b){const _=b,{state:l,moveBudgetGroup:d,addBudgetGroup:p,getBudgetGroup:i,isCurrentMonth:h}=X(),{t:B}=K(),N=M(()=>l[_.type]),k=pe(),G=M(()=>{const t=new Array(12).fill(0);for(const{budgets:$}of N.value)for(const{values:r}of $)for(let s=0;s{const $=t.source?i(t.source):void 0,r=t.target?i(t.target):void 0;if($)return r?t.type==="before"?B("budget.prepend",{from:$.name,to:r.name}):B("budget.append",{from:$.name,to:r.name}):B("budget.move",{from:$.name})},a=t=>{d(t.source,t.target,t.type==="after")};return(t,$)=>(m(),f("div",{class:u(t.$style.budgetGroups)},[tt,st,lt,(m(!0),f(w,null,P(v(k),(r,s)=>(m(),f("span",{key:r,class:u([t.$style.month,{[t.$style.current]:v(h)(s)}])},[c("span",null,E(r),1)],2))),128)),nt,ot,at,ut,c("span",{class:u(t.$style.sum)},E(v(B)("budget.totals")),3),(m(!0),f(w,null,P(G.value,(r,s)=>(m(),R(F,{key:s,value:r,class:u(t.$style.sum)},null,8,["value","class"]))),128)),rt,ct,(m(!0),f(w,null,P(N.value,r=>(m(),f(w,{key:r.id},[g(Q,{id:r.id,text:C,name:"budget-groups",onDrop:a},null,8,["id"]),g(et,{group:r},null,8,["group"])],64))),128)),dt,g(U,{class:u(t.$style.addGroupBtn),icon:"plus",text:v(B)("budget.addGroup"),onClick:$[0]||($[0]=r=>v(p)(t.type))},null,8,["class","text"])],2))}}),it="n_",mt="o_",gt="p_",vt="q_",yt="r_",ft={budgetGroups:it,sum:mt,month:gt,current:vt,addGroupBtn:yt},$t={$style:ft},bt=S(pt,[["__cssModules",$t]]),_t=A({__name:"BudgetPane",props:{title:{},type:{}},setup(b){const _=b,{state:l}=X(),d=M(()=>ce(l[_.type])),p=M(()=>d.value.reduce((i,h)=>i+h,0));return(i,h)=>(m(),R(de,{amount:p.value,title:i.title},{header:q(()=>[g(ie,{class:u(i.$style.miniChart),values:d.value},null,8,["class","values"])]),default:q(()=>[g(bt,{type:i.type},null,8,["type"])]),_:1},8,["amount","title"]))}}),ht="n",Bt={miniChart:ht},Ct={$style:Bt},It=S(_t,[["__cssModules",Ct]]);export{It as B}; diff --git a/assets/BudgetPane-3096f589.css b/assets/BudgetPane-3096f589.css new file mode 100644 index 00000000..c275010b --- /dev/null +++ b/assets/BudgetPane-3096f589.css @@ -0,0 +1 @@ +.O_{display:flex}.P_{position:fixed;background:var(--app-background);padding:4px 8px;box-shadow:var(--dialog-box-shadow);border-radius:var(--border-radius-m);z-index:10}.P_ .Q_{font-size:var(--font-size-xs);color:var(--theme-text)}.R_{position:fixed;visibility:hidden}.wb{all:unset;display:inline-flex;align-items:center;height:100%;width:100%;font-size:var(--input-field-font-size);max-height:100%;padding:0 4px;caret-color:var(--input-field-caret-color)}.wb::-webkit-outer-spin-button,.wb::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.Cb{position:relative;display:inline-block;width:100%}.Cb .Db{all:unset;max-width:var(--input-field-max-width);overflow:hidden;text-overflow:ellipsis}.Cb:not(.Eb){background:var(--input-field-background);border-radius:var(--border-radius-s);font-size:var(--input-field-font-size);transition:all var(--input-field-transition)}.Cb:not(.Eb):hover{background:var(--input-field-hover-background)}.Cb:not(.Eb):not(.Fb):hover{background:var(--input-field-hover-background)}.Cb:not(.Eb):focus-within{background:var(--input-field-focus-background);box-shadow:var(--input-field-focus-box-shadow)}.Cb:not(.Eb) .Db{max-height:100%;padding:2px 4px;caret-color:var(--input-field-caret-color)}.Cb:not(.Eb) .Db::-webkit-outer-spin-button,.Cb:not(.Eb) .Db::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ab{font-style:italic;font-size:var(--input-field-font-size);font-weight:var(--font-weight-m)}.bb{font-size:var(--input-field-font-size);font-weight:var(--font-weight-m);padding:0 10px}.bb.cb{position:relative;font-weight:var(--font-weight-l);text-decoration:underline}.db{display:inline-block;font-size:var(--input-field-font-size);font-weight:var(--font-weight-l);margin:4px 0;padding:5px 0;background:var(--grid-header-background);color:var(--grid-header-text)}.db>span{display:inline-block;padding:0 4px}.db.eb{border-top-left-radius:var(--border-radius-m);border-bottom-left-radius:var(--border-radius-m);padding-left:8px;cursor:text}.db.fb{border-top-right-radius:var(--border-radius-m);border-bottom-right-radius:var(--border-radius-m);padding-right:8px}.gb{background:var(--grid-background-odd);height:100%;border-right:1px solid var(--grid-border-color);border-bottom:1px solid var(--grid-border-color);transition:all var(--input-field-transition);box-shadow:inset 0 0 0 1px transparent}.gb.hb{border-top:1px solid var(--grid-border-color)}.gb.ib{border-left:1px solid var(--grid-border-color)}.gb.jb{background:var(--grid-background-odd-active)}.gb.kb{background:var(--grid-background-even)}.gb.kb.jb{background:var(--grid-background-even-active)}.gb.lb{border-top-left-radius:var(--grid-border-radius)}.gb.mb{border-top-right-radius:var(--grid-border-radius)}.gb.nb{border-bottom-left-radius:var(--grid-border-radius)}.gb.ob{border-bottom-right-radius:var(--grid-border-radius)}.p_{display:grid;grid-template:auto/max-content max-content max-content repeat(12,1fr) max-content max-content;align-items:center;padding-bottom:20px}.q_{font-size:var(--font-size-xs);font-weight:var(--font-weight-l);padding-right:10px;margin-bottom:4px}.r_{font-size:var(--font-size-xxs);font-weight:var(--font-weight-m);padding-right:20px;padding-bottom:5px}.r_.s_{font-weight:var(--font-weight-l)}.r_>span{position:absolute;display:inline-block;margin-top:-20px}@media all and (max-width: 786px){.r_>span{position:static;margin-top:0}}.t_{margin-top:20px;grid-area:auto/2/auto/4}.b{width:75px;height:100%;cursor:default} diff --git a/assets/BudgetPane-3f0100ab.js b/assets/BudgetPane-3f0100ab.js new file mode 100644 index 00000000..7d0dc546 --- /dev/null +++ b/assets/BudgetPane-3f0100ab.js @@ -0,0 +1 @@ +import{u as x,i as ee,a as te,b as se,_ as le}from"./EChart.vue_vue_type_script_setup_true_lang-b09f4fbe.js";import{d as A,c as k,o as m,i as U,n as u,K as ne,x as I,a as f,l as g,k as v,s as oe,b as c,t as S,p as ae,_ as E,L as Q,M as H,e as K,N as ue,O as J,P as W,y as re,f as O,B as Y,G as z,F as w,r as P,w as j}from"./index-635eac34.js";import{t as ce}from"./budgets-531db56b.js";import{P as de}from"./Pane-ff6685ec.js";import{B as R}from"./Button-1ed056c9.js";import{C as F}from"./Currency-532cc709.js";import{u as pe}from"./useMonthNames-a81a4bd7.js";const ie=A({__name:"MiniChart",props:{class:{},values:{}},setup(b){const _=b;x([ee,te,se]);const l=k(()=>_.class),d=k(()=>({xAxis:{type:"category",show:!1},yAxis:{show:!1,min:Math.min(..._.values)},grid:{top:"15%",left:0,bottom:"20%",right:0},series:[{data:_.values,type:"line",smooth:!0,showSymbol:!1,silent:!0}]}));return(p,i)=>(m(),U(le,{class:u(l.value),options:d.value},null,8,["class","options"]))}}),o=ne({group:void 0,source:void 0,target:void 0,type:void 0}),me=A({__name:"Draggable",props:{text:{type:Function},name:{},id:{}},emits:["drop"],setup(b,{emit:_}){const l=b,d=I(),p=I(),i=I(0),h=I(0),C=k(()=>l.id===o.target&&o.type),N=k(()=>C.value?o.type==="before"?"skip-up-line":"skip-down-line":"draggable"),M=k(()=>{var s;return o.target&&o.target&&o.source?(s=l.text)==null?void 0:s.call(l,o):void 0}),G=s=>{s.dataTransfer&&p.value&&(o.group=l.name,o.source=l.id,s.dataTransfer.effectAllowed="move",s.dataTransfer.setDragImage(p.value,1/0,1/0),s.dataTransfer.setData("text/plain",l.name))},B=s=>{i.value=s.pageX,h.value=s.pageY},a=s=>{var e;if(o.group===l.name){const y=(e=d.value)==null?void 0:e.getBoundingClientRect();if(s.preventDefault(),y&&l.id!==o.source){const n=s.pageY{s.pageX&&s.pageY&&o.target!==l.id&&(o.type=void 0,o.target=void 0)},$=()=>{o.type=void 0,o.target=void 0,o.source=void 0,o.group=void 0},r=s=>{o.target&&o.target&&o.source&&_("drop",o),s.preventDefault()};return(s,e)=>(m(),f("div",{ref_key:"draggable",ref:d,class:u(s.$style.draggable),draggable:"true",onDragend:$,onDragover:a,onDragleave:t,onDrop:r,onDrag:B,onDragstart:G},[g(R,{color:v(o).group===l.name?"primary":"dimmed",icon:N.value,textual:""},null,8,["color","icon"]),v(o).source===l.id&&h.value&&i.value&&M.value?(m(),f("div",{key:0,style:oe({top:`${h.value+5}px`,left:`${i.value+5}px`}),class:u(s.$style.content)},[c("span",{class:u(s.$style.text)},S(M.value),3)],6)):ae("",!0),c("div",{ref_key:"element",ref:p,class:u(s.$style.hidden)},"hidden",2)],34))}}),ge="O_",ve="P_",ye="Q_",fe="R_",$e={draggable:ge,content:ve,text:ye,hidden:fe},be={$style:$e},Z=E(me,[["__cssModules",be]]),_e=["type","value"],he=A({__name:"CurrencyCell",props:Q({max:{default:Number.MAX_SAFE_INTEGER}},{modelValue:{}}),emits:["update:modelValue"],setup(b){const _=b,l=H(b,"modelValue"),d=I(),p=I(!1),{n:i}=K(),h=k(()=>p.value||!l.value?l.value||"":i(l.value,"currency")),C=a=>{const t=Number((a==null?void 0:a.trim())||NaN);l.value=Number.isNaN(t)?0:t},N=a=>{a.key==="-"&&a.preventDefault()},M=()=>{p.value=!0,W(()=>d.value.select())},G=a=>C(a.target.value),B=a=>{var t;return C((t=a.clipboardData)==null?void 0:t.getData("text/plain").trim())};return ue(()=>l.value,(a,t)=>{(a??0)>_.max&&t!==void 0&&(l.value=t)}),(a,t)=>(m(),f("input",{ref_key:"input",ref:d,class:u(a.$style.currencyCell),type:p.value?"number":"text",value:h.value,onBlur:t[0]||(t[0]=$=>p.value=!1),onFocus:M,onInput:G,onKeydown:[N,t[1]||(t[1]=J((...$)=>{var r,s;return((r=d.value)==null?void 0:r.blur)&&((s=d.value)==null?void 0:s.blur(...$))},["enter"]))],onPaste:B},null,42,_e))}}),Ce="wb",Be={currencyCell:Ce},ke={$style:Be},Me=E(he,[["__cssModules",ke]]),De=["value"],Ge=A({__name:"TextCell",props:Q({inline:{type:Boolean,default:!1}},{modelValue:{}}),emits:["update:modelValue"],setup(b){const _=b,l=H(b,"modelValue"),d=I(),p=re(),i=I(!1),h=k(()=>[p.textInput,{[p.empty]:!l.value,[p.inline]:_.inline}]),C=()=>{i.value=!0,W(()=>{d.value.select()})},N=M=>{l.value=M.target.value};return(M,G)=>(m(),f("span",{class:u(h.value)},[c("input",{ref_key:"input",ref:d,value:l.value,class:u(M.$style.input),type:"text",onBlur:G[0]||(G[0]=B=>i.value=!1),onFocus:C,onInput:N,onKeydown:G[1]||(G[1]=J((...B)=>{var a,t;return((a=d.value)==null?void 0:a.blur)&&((t=d.value)==null?void 0:t.blur(...B))},["enter"]))},null,42,De)],2))}}),Ve="Cb",Ne="Db",we="Eb",Ie="Fb",Te={textInput:Ve,input:Ne,inline:we,empty:Ie},Ae={$style:Te},q=E(Ge,[["__cssModules",Ae]]),Fe=c("span",null,null,-1),Pe=c("span",{style:{"grid-column":"3 / 16"}},null,-1),Ee=A({__name:"BudgetGroup",props:{group:{}},setup(b){const _=b,{moveBudget:l,removeBudgetGroup:d,getBudget:p,addBudget:i,setBudgetName:h,setBudgetGroupName:C,setBudget:N,removeBudget:M,isCurrentMonth:G}=O(),{t:B}=K(),a=k(()=>{const e=new Array(12).fill(0);for(const{values:y}of _.group.budgets)for(let n=0;nY(a.value)),$=k(()=>z(a.value)),r=e=>{const[y,n]=e.source?p(e.source)??[]:[],[D,T]=e.target?p(e.target)??[]:[];if(n&&y){if(T&&D){const V=y.id===D.id,L=V?n.name:`${y.name} » ${n.name}`,X=V?T.name:`${D.name} » ${T.name}`;return e.type==="before"?B("budget.prepend",{from:L,to:X}):B("budget.append",{from:L,to:X})}return B("budget.move",{from:n.name})}},s=e=>{l(e.source,e.target,e.type==="after")};return(e,y)=>(m(),f(w,null,[g(R,{color:"dimmed",icon:"close-circle",textual:"",onClick:y[0]||(y[0]=n=>v(d)(e.group.id))}),g(q,{class:u([e.$style.top,e.$style.start]),"model-value":e.group.name,inline:"","onUpdate:modelValue":y[1]||(y[1]=n=>v(C)(e.group.id,n))},null,8,["class","model-value"]),(m(!0),f(w,null,P(a.value,(n,D)=>(m(),f("span",{key:D,class:u(e.$style.top)},[g(F,{value:n},null,8,["value"])],2))),128)),c("span",{class:u(e.$style.top)},[c("span",null,S(v(B)("budget.total")),1)],2),c("span",{class:u([e.$style.top,e.$style.end])},[c("span",null,S(v(B)("budget.average")),1)],2),(m(!0),f(w,null,P(e.group.budgets,(n,D)=>(m(),f(w,{key:n.id+D},[g(Z,{id:n.id,name:"budget-group",text:r,onDrop:s},null,8,["id"]),g(R,{color:"dimmed",icon:"close-circle",textual:"",onClick:T=>v(M)(n.id)},null,8,["onClick"]),c("span",{class:u(e.$style.header)},[g(q,{"model-value":n.name,"onUpdate:modelValue":T=>v(h)(n.id,T)},null,8,["model-value","onUpdate:modelValue"])],2),(m(!0),f(w,null,P(n.values,(T,V)=>(m(),f("span",{key:n.id+V,class:u([e.$style.currencyCell,{[e.$style.even]:D%2,[e.$style.firstRow]:D===0,[e.$style.firstColumn]:V===0,[e.$style.currentMonth]:v(G)(V),[e.$style.tlc]:D===0&&V===0,[e.$style.trc]:D===0&&V===11,[e.$style.blc]:D===e.group.budgets.length-1&&V===0,[e.$style.brc]:D===e.group.budgets.length-1&&V===11}])},[g(Me,{"model-value":n.values[V],"onUpdate:modelValue":L=>v(N)(n.id,V,L)},null,8,["model-value","onUpdate:modelValue"])],2))),128)),g(F,{class:u(e.$style.meta),value:v(Y)(n.values)},null,8,["class","value"]),g(F,{class:u(e.$style.meta),value:v(z)(n.values)},null,8,["class","value"])],64))),128)),Fe,g(R,{icon:"plus",class:u(e.$style.addBudgetBtn),textual:"",color:"success",onClick:y[2]||(y[2]=n=>v(i)(e.group.id))},null,8,["class"]),Pe,g(F,{class:u([e.$style.meta,e.$style.bold]),value:t.value},null,8,["class","value"]),g(F,{class:u([e.$style.meta,e.$style.bold]),value:$.value},null,8,["class","value"])],64))}}),Re="ab",Se="bb",Le="cb",Ue="db",Ke="eb",Oe="fb",Xe="gb",Ye="hb",ze="ib",je="jb",qe="kb",Qe="lb",He="mb",Je="nb",We="ob",Ze={header:Re,meta:Se,bold:Le,top:Ue,start:Ke,end:Oe,currencyCell:Xe,firstRow:Ye,firstColumn:ze,currentMonth:je,even:qe,tlc:Qe,trc:He,blc:Je,brc:We},xe={$style:Ze},et=E(Ee,[["__cssModules",xe]]),tt=c("span",null,null,-1),st=c("span",null,null,-1),lt=c("span",null,null,-1),nt=c("span",null,null,-1),ot=c("span",null,null,-1),at=c("span",null,null,-1),ut=c("span",null,null,-1),rt=c("span",null,null,-1),ct=c("span",null,null,-1),dt=c("span",null,null,-1),pt=A({__name:"BudgetGroups",props:{type:{}},setup(b){const _=b,{state:l,moveBudgetGroup:d,addBudgetGroup:p,getBudgetGroup:i,isCurrentMonth:h}=O(),{t:C}=K(),N=k(()=>l[_.type]),M=pe(),G=k(()=>{const t=new Array(12).fill(0);for(const{budgets:$}of N.value)for(const{values:r}of $)for(let s=0;s{const $=t.source?i(t.source):void 0,r=t.target?i(t.target):void 0;if($)return r?t.type==="before"?C("budget.prepend",{from:$.name,to:r.name}):C("budget.append",{from:$.name,to:r.name}):C("budget.move",{from:$.name})},a=t=>{d(t.source,t.target,t.type==="after")};return(t,$)=>(m(),f("div",{class:u(t.$style.budgetGroups)},[tt,st,lt,(m(!0),f(w,null,P(v(M),(r,s)=>(m(),f("span",{key:r,class:u([t.$style.month,{[t.$style.current]:v(h)(s)}])},[c("span",null,S(r),1)],2))),128)),nt,ot,at,ut,c("span",{class:u(t.$style.sum)},S(v(C)("budget.totals")),3),(m(!0),f(w,null,P(G.value,(r,s)=>(m(),U(F,{key:s,value:r,class:u(t.$style.sum)},null,8,["value","class"]))),128)),rt,ct,(m(!0),f(w,null,P(N.value,r=>(m(),f(w,{key:r.id},[g(Z,{id:r.id,text:B,name:"budget-groups",onDrop:a},null,8,["id"]),g(et,{group:r},null,8,["group"])],64))),128)),dt,g(R,{class:u(t.$style.addGroupBtn),icon:"plus",text:v(C)("budget.addGroup"),onClick:$[0]||($[0]=r=>v(p)(t.type))},null,8,["class","text"])],2))}}),it="p_",mt="q_",gt="r_",vt="s_",yt="t_",ft={budgetGroups:it,sum:mt,month:gt,current:vt,addGroupBtn:yt},$t={$style:ft},bt=E(pt,[["__cssModules",$t]]),_t=A({__name:"BudgetPane",props:{title:{},type:{}},setup(b){const _=b,{state:l}=O(),d=k(()=>ce(l[_.type])),p=k(()=>d.value.reduce((i,h)=>i+h,0));return(i,h)=>(m(),U(de,{amount:p.value,title:i.title},{header:j(()=>[g(ie,{class:u(i.$style.miniChart),values:d.value},null,8,["class","values"])]),default:j(()=>[g(bt,{type:i.type},null,8,["type"])]),_:1},8,["amount","title"]))}}),ht="b",Ct={miniChart:ht},Bt={$style:Ct},It=E(_t,[["__cssModules",Bt]]);export{It as B}; diff --git a/assets/BudgetPane-6b25a68b.css b/assets/BudgetPane-6b25a68b.css deleted file mode 100644 index c826fa5e..00000000 --- a/assets/BudgetPane-6b25a68b.css +++ /dev/null @@ -1 +0,0 @@ -.lb{display:flex}.mb{position:fixed;background:var(--app-background);padding:4px 8px;box-shadow:var(--dialog-box-shadow);border-radius:var(--border-radius-m);z-index:10}.mb .nb{font-size:var(--font-size-xs);color:var(--theme-text)}.ob{position:fixed;visibility:hidden}.pb{all:unset;display:inline-flex;align-items:center;height:100%;width:100%;font-size:var(--input-field-font-size);max-height:100%;padding:0 4px;caret-color:var(--input-field-caret-color)}.pb::-webkit-outer-spin-button,.pb::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.vb{position:relative;display:inline-block;width:100%}.vb .wb{all:unset;max-width:var(--input-field-max-width);overflow:hidden;text-overflow:ellipsis}.vb:not(.xb){background:var(--input-field-background);border-radius:var(--border-radius-s);font-size:var(--input-field-font-size);transition:all var(--input-field-transition)}.vb:not(.xb):hover{background:var(--input-field-hover-background)}.vb:not(.xb):not(.yb):hover{background:var(--input-field-hover-background)}.vb:not(.xb):focus-within{background:var(--input-field-focus-background);box-shadow:var(--input-field-focus-box-shadow)}.vb:not(.xb) .wb{max-height:100%;padding:2px 4px;caret-color:var(--input-field-caret-color)}.vb:not(.xb) .wb::-webkit-outer-spin-button,.vb:not(.xb) .wb::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.U_{font-style:italic;font-size:var(--input-field-font-size);font-weight:var(--font-weight-m)}.V_{font-size:var(--input-field-font-size);font-weight:var(--font-weight-m);padding:0 10px}.V_.W_{position:relative;font-weight:var(--font-weight-l);text-decoration:underline}.X_{display:inline-block;font-size:var(--input-field-font-size);font-weight:var(--font-weight-l);margin:4px 0;padding:5px 0;background:var(--grid-header-background);color:var(--grid-header-text)}.X_>span{display:inline-block;padding:0 4px}.X_.Y_{border-top-left-radius:var(--border-radius-m);border-bottom-left-radius:var(--border-radius-m);padding-left:8px;cursor:text}.X_.Z_{border-top-right-radius:var(--border-radius-m);border-bottom-right-radius:var(--border-radius-m);padding-right:8px}._b{background:var(--grid-background-odd);height:100%;border-right:1px solid var(--grid-border-color);border-bottom:1px solid var(--grid-border-color);transition:all var(--input-field-transition);box-shadow:inset 0 0 0 1px transparent}._b.ab{border-top:1px solid var(--grid-border-color)}._b.bb{border-left:1px solid var(--grid-border-color)}._b.cb{background:var(--grid-background-odd-active)}._b.db{background:var(--grid-background-even)}._b.db.cb{background:var(--grid-background-even-active)}._b.eb{border-top-left-radius:var(--grid-border-radius)}._b.fb{border-top-right-radius:var(--grid-border-radius)}._b.gb{border-bottom-left-radius:var(--grid-border-radius)}._b.hb{border-bottom-right-radius:var(--grid-border-radius)}.n_{display:grid;grid-template:auto/max-content max-content max-content repeat(12,1fr) max-content max-content;align-items:center;padding-bottom:20px}.o_{font-size:var(--font-size-xs);font-weight:var(--font-weight-l);padding-right:10px;margin-bottom:4px}.p_{font-size:var(--font-size-xxs);font-weight:var(--font-weight-m);padding-right:20px;padding-bottom:5px}.p_.q_{font-weight:var(--font-weight-l)}.p_>span{position:absolute;display:inline-block;margin-top:-20px}@media all and (max-width: 786px){.p_>span{position:static;margin-top:0}}.r_{margin-top:20px;grid-area:auto/2/auto/4}.n{width:75px;height:100%;cursor:default} diff --git a/assets/Button-075befd4.css b/assets/Button-075befd4.css deleted file mode 100644 index 7b3db027..00000000 --- a/assets/Button-075befd4.css +++ /dev/null @@ -1 +0,0 @@ -.v{all:unset;justify-self:flex-start;display:flex;align-items:center;cursor:pointer;background:var(--cb9920d8);color:var(--5af31a4c);border-radius:var(--border-radius-m);transition:all var(--transition-s);padding:8px 10px}.v.w{padding:3px}.v.x .y{margin-left:5px}.v .z{width:16px;height:16px}.v .y{width:100%;font-size:var(--font-size-xs);font-weight:var(--font-weight-l);line-height:1em}.v:focus{box-shadow:0 0 0 2px var(--4ab8ccc0)}.v.A{background:transparent;color:var(--aeed2022)}.v.A:focus{box-shadow:none}.v.B{border-radius:100px}@media (pointer: fine){.v:hover{background:var(--a6d50e4e);color:var(--7ea2de53)}.v.A:hover{background:transparent;color:var(--68ff83de)}} diff --git a/assets/Button-1ed056c9.js b/assets/Button-1ed056c9.js new file mode 100644 index 00000000..e62dba99 --- /dev/null +++ b/assets/Button-1ed056c9.js @@ -0,0 +1 @@ +import{d as f,u as b,y as x,c as k,$ as h,a0 as v,o as a,a as i,i as B,n as c,p as r,t as C,k as s,_ as I}from"./index-635eac34.js";import{I as $}from"./Icon-f54aec6a.js";import{u as D}from"./useThemeStyles-349ce8f2.js";const M=f({__name:"Button",props:{class:{},iconClass:{},icon:{},text:{},tooltip:{},tooltipPosition:{},color:{default:"primary"},textual:{type:Boolean,default:!1},rounded:{type:Boolean,default:!1}},emits:["click"],setup(u,{emit:p}){const t=u;b(o=>({cb9920d8:s(e).color.base,"5af31a4c":s(e).text.base,"4ab8ccc0":s(e).focus,aeed2022:s(e).pure.base,a6d50e4e:s(e).color.hover,"7ea2de53":s(e).text.hover,"68ff83de":s(e).pure.hover}));const n=x(),e=D(()=>t.color),d=k(()=>[t.class,n.button,{[n.hasIcon]:t.icon,[n.textual]:t.textual,[n.rounded]:t.rounded,[n.iconOnly]:t.icon&&!t.text}]);return(o,l)=>{const m=h("tooltip");return v((a(),i("button",{class:c(d.value),type:"button",onClick:l[0]||(l[0]=y=>p("click",y))},[o.icon?(a(),B($,{key:0,class:c([o.$style.icon,o.iconClass]),icon:o.icon},null,8,["class","icon"])):r("",!0),o.text?(a(),i("span",{key:1,class:c(o.$style.text)},C(o.text),3)):r("",!0)],2)),[[m,{text:o.tooltip,position:o.tooltipPosition}]])}}}),O="S",S="T",V="U",_="V",P="W",T="X",g="Y",w={button:O,iconOnly:S,hasIcon:V,text:_,icon:P,textual:T,rounded:g},z={$style:w},W=I(M,[["__cssModules",z]]);export{W as B}; diff --git a/assets/Button-6d17a4fd.js b/assets/Button-6d17a4fd.js deleted file mode 100644 index 00ffcd04..00000000 --- a/assets/Button-6d17a4fd.js +++ /dev/null @@ -1 +0,0 @@ -import{d as f,u as x,y as b,c as k,$ as v,a0 as B,o as a,a as i,i as h,n as c,p as r,t as C,k as s,_ as I}from"./index-1bee1cb1.js";import{I as $}from"./Icon-3e6d397d.js";import{u as D}from"./useThemeStyles-0768f685.js";const M=f({__name:"Button",props:{class:{},iconClass:{},icon:{},text:{},tooltip:{},tooltipPosition:{},color:{default:"primary"},textual:{type:Boolean,default:!1},rounded:{type:Boolean,default:!1}},emits:["click"],setup(u,{emit:p}){const t=u;x(o=>({cb9920d8:s(e).color.base,"5af31a4c":s(e).text.base,"4ab8ccc0":s(e).focus,aeed2022:s(e).pure.base,a6d50e4e:s(e).color.hover,"7ea2de53":s(e).text.hover,"68ff83de":s(e).pure.hover}));const n=b(),e=D(()=>t.color),d=k(()=>[t.class,n.button,{[n.hasIcon]:t.icon,[n.textual]:t.textual,[n.rounded]:t.rounded,[n.iconOnly]:t.icon&&!t.text}]);return(o,l)=>{const m=v("tooltip");return B((a(),i("button",{class:c(d.value),type:"button",onClick:l[0]||(l[0]=y=>p("click",y))},[o.icon?(a(),h($,{key:0,class:c([o.$style.icon,o.iconClass]),icon:o.icon},null,8,["class","icon"])):r("",!0),o.text?(a(),i("span",{key:1,class:c(o.$style.text)},C(o.text),3)):r("",!0)],2)),[[m,{text:o.tooltip,position:o.tooltipPosition}]])}}}),O="v",_="w",w="x",z="y",P="z",S="A",V="B",g={button:O,iconOnly:_,hasIcon:w,text:z,icon:P,textual:S,rounded:V},A={$style:g},j=I(M,[["__cssModules",A]]);export{j as B}; diff --git a/assets/Button-d60163ea.css b/assets/Button-d60163ea.css new file mode 100644 index 00000000..d6898aee --- /dev/null +++ b/assets/Button-d60163ea.css @@ -0,0 +1 @@ +.S{all:unset;justify-self:flex-start;display:flex;align-items:center;cursor:pointer;background:var(--cb9920d8);color:var(--5af31a4c);border-radius:var(--border-radius-m);transition:all var(--transition-s);padding:8px 10px}.S.T{padding:3px}.S.U .V{margin-left:5px}.S .W{width:16px;height:16px}.S .V{width:100%;font-size:var(--font-size-xs);font-weight:var(--font-weight-l);line-height:1em}.S:focus{box-shadow:0 0 0 2px var(--4ab8ccc0)}.S.X{background:transparent;color:var(--aeed2022)}.S.X:focus{box-shadow:none}.S.Y{border-radius:100px}@media (pointer: fine){.S:hover{background:var(--a6d50e4e);color:var(--7ea2de53)}.S.X:hover{background:transparent;color:var(--68ff83de)}} diff --git a/assets/ChartPlaceholder-26119b8c.css b/assets/ChartPlaceholder-26119b8c.css new file mode 100644 index 00000000..1fc28e4f --- /dev/null +++ b/assets/ChartPlaceholder-26119b8c.css @@ -0,0 +1 @@ +.I_{display:flex;flex-direction:column;align-items:center;justify-content:center;grid-gap:10px;flex-grow:1}.I_,.I_ .J_{color:var(--c-dimmed-pure)}.I_ .K_{display:grid;grid-template-columns:24px 24px;grid-gap:10px} diff --git a/assets/ChartPlaceholder-46abf122.js b/assets/ChartPlaceholder-46abf122.js deleted file mode 100644 index 969f9afb..00000000 --- a/assets/ChartPlaceholder-46abf122.js +++ /dev/null @@ -1 +0,0 @@ -import{d as p,c as i,e as d,o as h,a as u,b as o,l as a,n as e,t as m,k as _,_ as y}from"./index-1bee1cb1.js";import{I as c}from"./Icon-3e6d397d.js";const f=p({__name:"ChartPlaceholder",props:{class:{}},setup(l){const n=l,t=i(()=>n.class),{t:r}=d();return(s,v)=>(h(),u("div",{class:e([s.$style.placeholder,t.value])},[o("div",{class:e(s.$style.icons)},[a(c,{icon:"shopping-basket-2",class:e(s.$style.icon)},null,8,["class"]),a(c,{icon:"hand-coin",class:e(s.$style.icon)},null,8,["class"])],2),o("span",null,m(_(r)("dashboard.graph.placeholder")),1)],2))}}),C="x_",$="y_",k="z_",b={placeholder:C,icon:$,icons:k},g={$style:b},z=y(f,[["__cssModules",g]]);export{z as C}; diff --git a/assets/ChartPlaceholder-743c445d.js b/assets/ChartPlaceholder-743c445d.js new file mode 100644 index 00000000..bdf5f1fb --- /dev/null +++ b/assets/ChartPlaceholder-743c445d.js @@ -0,0 +1 @@ +import{d as p,c as i,e as d,o as h,a as u,b as o,l as a,n as e,t as m,k as _,_ as y}from"./index-635eac34.js";import{I as c}from"./Icon-f54aec6a.js";const f=p({__name:"ChartPlaceholder",props:{class:{}},setup(l){const n=l,t=i(()=>n.class),{t:r}=d();return(s,g)=>(h(),u("div",{class:e([s.$style.placeholder,t.value])},[o("div",{class:e(s.$style.icons)},[a(c,{icon:"shopping-basket-2",class:e(s.$style.icon)},null,8,["class"]),a(c,{icon:"hand-coin",class:e(s.$style.icon)},null,8,["class"])],2),o("span",null,m(_(r)("dashboard.graph.placeholder")),1)],2))}}),C="I_",$="J_",k="K_",I={placeholder:C,icon:$,icons:k},b={$style:I},M=y(f,[["__cssModules",b]]);export{M as C}; diff --git a/assets/ChartPlaceholder-9d647a5f.css b/assets/ChartPlaceholder-9d647a5f.css deleted file mode 100644 index 54883213..00000000 --- a/assets/ChartPlaceholder-9d647a5f.css +++ /dev/null @@ -1 +0,0 @@ -.x_{display:flex;flex-direction:column;align-items:center;justify-content:center;grid-gap:10px;flex-grow:1}.x_,.x_ .y_{color:var(--c-dimmed-pure)}.x_ .z_{display:grid;grid-template-columns:24px 24px;grid-gap:10px} diff --git a/assets/Currency-e1b802bf.js b/assets/Currency-532cc709.js similarity index 90% rename from assets/Currency-e1b802bf.js rename to assets/Currency-532cc709.js index be20e70e..5ef6c114 100644 --- a/assets/Currency-e1b802bf.js +++ b/assets/Currency-532cc709.js @@ -1 +1 @@ -import{d as p,e as i,f as d,R as m,k as e,o as r,a as o,S as _,t as l,b as k,n as a,_ as S}from"./index-1bee1cb1.js";const f=p({__name:"Currency",props:{value:{},locale:{},class:{}},setup(u){const n=u,{n:t}=i(),{state:c}=d(),{state:y}=m();return(s,B)=>e(y).appearance.mode==="privacy"?(r(),o("span",{key:0,class:a([s.$style.container,n.class])},[_(l(e(t)(s.value??0,{key:"currency",currency:e(c).currency}))+" ",1),k("span",{class:a(s.$style.overlay)},null,2)],2)):(r(),o("span",{key:1,class:a(n.class)},l(e(t)(s.value??0,{key:"currency",currency:e(c).currency})),3))}}),v="l_",C={container:v},g={$style:C},D=S(f,[["__cssModules",g]]);export{D as C}; +import{d as p,e as i,f as d,R as m,k as e,o as r,a as o,S as _,t as l,b as k,n as a,_ as S}from"./index-635eac34.js";const f=p({__name:"Currency",props:{value:{},locale:{},class:{}},setup(u){const n=u,{n:t}=i(),{state:c}=d(),{state:y}=m();return(s,B)=>e(y).appearance.mode==="privacy"?(r(),o("span",{key:0,class:a([s.$style.container,n.class])},[_(l(e(t)(s.value??0,{key:"currency",currency:e(c).currency}))+" ",1),k("span",{class:a(s.$style.overlay)},null,2)],2)):(r(),o("span",{key:1,class:a(n.class)},l(e(t)(s.value??0,{key:"currency",currency:e(c).currency})),3))}}),v="l_",C={container:v},g={$style:C},D=S(f,[["__cssModules",g]]);export{D as C}; diff --git a/assets/Dashboard-264bd2c0.js b/assets/Dashboard-264bd2c0.js new file mode 100644 index 00000000..5c4647af --- /dev/null +++ b/assets/Dashboard-264bd2c0.js @@ -0,0 +1 @@ +import{d as g,u as x,c as k,o as u,a as h,b as d,t as b,n as r,F as C,r as W,_ as w,e as Y,f as D,g as I,h as M,i as R,j as V,k as n,w as c,l as t}from"./index-635eac34.js";import{B as _}from"./Button-1ed056c9.js";import{L as $}from"./Link-b21ad2f6.js";import{A as L}from"./AnimatedRouterView-43191cc5.js";import{P as O}from"./Pane-ff6685ec.js";import"./Icon-f54aec6a.js";import"./useThemeStyles-349ce8f2.js";import"./Currency-532cc709.js";const S=g({__name:"TextWheel",props:{values:{},value:{}},setup(v){const l=v;x(e=>({"47c68fd3":o.value}));const o=k(()=>l.values.indexOf(l.value));return(e,p)=>(u(),h("span",{class:r(e.$style.container)},[d("span",{class:r(e.$style.placeholder)},b(e.value),3),d("span",{class:r(e.$style.textWheel)},[(u(!0),h(C,null,W(e.values,i=>(u(),h("span",{key:i,class:r(e.$style.value)},b(i),3))),128))],2)],2))}}),T="k",A="l",F="m",N="n",P={container:T,placeholder:A,textWheel:F,value:N},j={$style:P},z=w(S,[["__cssModules",j]]),E=g({__name:"Dashboard",setup(v){const{t:l}=Y(),{state:o,changeYear:e}=D(),p=I(),i=k(()=>o.years.map(a=>a.year)),f=a=>{const s=i.value,m=(s.indexOf(o.activeYear)+a+s.length)%s.length,B=s[m];e(B)};return(a,s)=>{const y=M("i18n-t");return u(),R(O,{class:r(a.$style.dashboard)},V({title:c(()=>[d("span",null,[t(y,{keypath:"dashboard.header"},{year:c(()=>[t(z,{values:i.value,value:n(o).activeYear},null,8,["values","value"])]),_:1})])]),header:c(()=>[d("div",{class:r(a.$style.viewButtons)},[t($,{tooltip:n(l)("navigation.menu.dashboard"),"tooltip-position":"bottom-end",to:"/dashboard",color:n(p).currentRoute.value.path.endsWith("/dashboard")?"primary":"dimmed",icon:"pi-chart-line"},null,8,["tooltip","color"]),t($,{tooltip:n(l)("dashboard.tableOverview"),"tooltip-position":"bottom-end",to:"/dashboard/summary",color:n(p).currentRoute.value.path.endsWith("/dashboard/summary")?"primary":"dimmed",icon:"grid-line"},null,8,["tooltip","color"])],2)]),default:c(()=>[t(L)]),_:2},[n(o).years.length>1?{name:"beforeTitle",fn:c(()=>[t(_,{icon:"arrow-left-s-line",rounded:"",onClick:s[0]||(s[0]=m=>f(-1))}),t(_,{icon:"arrow-right-s-line",rounded:"",onClick:s[1]||(s[1]=m=>f(1))})]),key:"0"}:void 0]),1032,["class"])}}}),q="f",G="g",H={dashboard:q,viewButtons:G},J={$style:H},oe=w(E,[["__cssModules",J]]);export{oe as default}; diff --git a/assets/Dashboard-4821cf07.css b/assets/Dashboard-4821cf07.css deleted file mode 100644 index b55fe5ae..00000000 --- a/assets/Dashboard-4821cf07.css +++ /dev/null @@ -1 +0,0 @@ -.r{position:relative;overflow:hidden;clip-path:inset(0 0 0 0)}.s{visibility:hidden}.t{left:0;position:absolute;display:inline-grid;grid-auto-flow:row}.u{transition:transform var(--transition-s);transform:translateY(calc(var(--47c68fd3) * -100%))}.b{flex-grow:1}.c{display:flex;grid-gap:10px} diff --git a/assets/Dashboard-c2e04d7d.js b/assets/Dashboard-c2e04d7d.js deleted file mode 100644 index 280fbc5f..00000000 --- a/assets/Dashboard-c2e04d7d.js +++ /dev/null @@ -1 +0,0 @@ -import{d as w,u as x,c as g,o as u,a as h,b as d,t as b,n as r,F as C,r as W,_ as k,e as Y,f as D,g as I,h as M,i as R,j as V,k as n,w as c,l as t}from"./index-1bee1cb1.js";import{B as _}from"./Button-6d17a4fd.js";import{L as $}from"./Link-2f976172.js";import{A as L}from"./AnimatedRouterView-0f460d78.js";import{P as O}from"./Pane-ff954356.js";import"./Icon-3e6d397d.js";import"./useThemeStyles-0768f685.js";import"./Currency-e1b802bf.js";const S=w({__name:"TextWheel",props:{values:{},value:{}},setup(v){const l=v;x(e=>({"47c68fd3":o.value}));const o=g(()=>l.values.indexOf(l.value));return(e,p)=>(u(),h("span",{class:r(e.$style.container)},[d("span",{class:r(e.$style.placeholder)},b(e.value),3),d("span",{class:r(e.$style.textWheel)},[(u(!0),h(C,null,W(e.values,i=>(u(),h("span",{key:i,class:r(e.$style.value)},b(i),3))),128))],2)],2))}}),T="r",A="s",F="t",N="u",P={container:T,placeholder:A,textWheel:F,value:N},j={$style:P},z=k(S,[["__cssModules",j]]),E=w({__name:"Dashboard",setup(v){const{t:l}=Y(),{state:o,changeYear:e}=D(),p=I(),i=g(()=>o.years.map(a=>a.year)),y=a=>{const s=i.value,m=(s.indexOf(o.activeYear)+a+s.length)%s.length,B=s[m];e(B)};return(a,s)=>{const f=M("i18n-t");return u(),R(O,{class:r(a.$style.dashboard)},V({title:c(()=>[d("span",null,[t(f,{keypath:"dashboard.header"},{year:c(()=>[t(z,{values:i.value,value:n(o).activeYear},null,8,["values","value"])]),_:1})])]),header:c(()=>[d("div",{class:r(a.$style.viewButtons)},[t($,{tooltip:n(l)("navigation.menu.dashboard"),"tooltip-position":"bottom-end",to:"/dashboard",color:n(p).currentRoute.value.path.endsWith("/dashboard")?"primary":"dimmed",icon:"pi-chart-line"},null,8,["tooltip","color"]),t($,{tooltip:n(l)("dashboard.tableOverview"),"tooltip-position":"bottom-end",to:"/dashboard/summary",color:n(p).currentRoute.value.path.endsWith("/dashboard/summary")?"primary":"dimmed",icon:"grid-line"},null,8,["tooltip","color"])],2)]),default:c(()=>[t(L)]),_:2},[n(o).years.length>1?{name:"beforeTitle",fn:c(()=>[t(_,{icon:"arrow-left-s-line",rounded:"",onClick:s[0]||(s[0]=m=>y(-1))}),t(_,{icon:"arrow-right-s-line",rounded:"",onClick:s[1]||(s[1]=m=>y(1))})]),key:"0"}:void 0]),1032,["class"])}}}),q="b",G="c",H={dashboard:q,viewButtons:G},J={$style:H},oe=k(E,[["__cssModules",J]]);export{oe as default}; diff --git a/assets/Dashboard-f39d504b.css b/assets/Dashboard-f39d504b.css new file mode 100644 index 00000000..01afa656 --- /dev/null +++ b/assets/Dashboard-f39d504b.css @@ -0,0 +1 @@ +.k{position:relative;overflow:hidden;clip-path:inset(0 0 0 0)}.l{visibility:hidden}.m{left:0;position:absolute;display:inline-grid;grid-auto-flow:row}.n{transition:transform var(--transition-s);transform:translateY(calc(var(--47c68fd3) * -100%))}.f{flex-grow:1}.g{display:flex;grid-gap:10px} diff --git a/assets/DevelopmentChart-8b404505.css b/assets/DevelopmentChart-8b404505.css new file mode 100644 index 00000000..78bc2c2e --- /dev/null +++ b/assets/DevelopmentChart-8b404505.css @@ -0,0 +1 @@ +.G_{width:100%;height:100%} diff --git a/assets/DevelopmentChart-a1189b00.css b/assets/DevelopmentChart-a1189b00.css deleted file mode 100644 index 04f05217..00000000 --- a/assets/DevelopmentChart-a1189b00.css +++ /dev/null @@ -1 +0,0 @@ -.t_{width:100%;height:100%} diff --git a/assets/DevelopmentChart-b67e1a9c.js b/assets/DevelopmentChart-f16a34ab.js similarity index 98% rename from assets/DevelopmentChart-b67e1a9c.js rename to assets/DevelopmentChart-f16a34ab.js index f35b8066..c3bf4f5e 100644 --- a/assets/DevelopmentChart-b67e1a9c.js +++ b/assets/DevelopmentChart-f16a34ab.js @@ -1,3 +1,3 @@ -import{d as le,c as O,o as E,i as K,n as U,_ as de,f as fe,e as ye,B as M,z as me,A as xe}from"./index-1bee1cb1.js";import{C as Se}from"./ChartPlaceholder-46abf122.js";import{a1 as be,R as q,H,n as se,e as P,a2 as _e,a3 as Ce,A as ce,g as Ge,W as Le,Z as De,F as Pe,a4 as Ie,o as $,z as Ae,$ as ee,a5 as Re,r as ke,f as te,s as we,a6 as j,M as Oe,a7 as re,a8 as ae,a9 as Be,aa as Te,ab as B,ac as ze,ad as We,ae as $e,c as A,af as ue,ag as Fe,ah as He,ai as Ve,aj as Ne,j as Ee,h as Ke,ak as Ue,al as je,u as F,_ as Ze,a as Je,b as Xe,i as Ye}from"./EChart.vue_vue_type_script_setup_true_lang-e0bf0237.js";import{u as qe}from"./useMonthNames-09c7e203.js";import{t as z}from"./budgets-531db56b.js";import"./Icon-3e6d397d.js";import"./useResizeObserver-9c83b660.js";function Qe(a,r){var e=be(r.get("padding")),t=r.getItemStyle(["color","opacity"]);return t.fill=r.get("backgroundColor"),a=new q({shape:{x:a.x-e[3],y:a.y-e[0],width:a.width+e[1]+e[3],height:a.height+e[0]+e[2],r:r.get("borderRadius")},style:t,silent:!0,z2:-1}),a}var Me=function(a,r){if(r==="all")return{type:"all",title:a.getLocaleModel().get(["legend","selector","all"])};if(r==="inverse")return{type:"inverse",title:a.getLocaleModel().get(["legend","selector","inverse"])}},et=function(a){H(r,a);function r(){var e=a!==null&&a.apply(this,arguments)||this;return e.type=r.type,e.layoutMode={type:"box",ignoreSize:!0},e}return r.prototype.init=function(e,t,n){this.mergeDefaultAndTheme(e,n),e.selected=e.selected||{},this._updateSelector(e)},r.prototype.mergeOption=function(e,t){a.prototype.mergeOption.call(this,e,t),this._updateSelector(e)},r.prototype._updateSelector=function(e){var t=e.selector,n=this.ecModel;t===!0&&(t=e.selector=["all","inverse"]),se(t)&&P(t,function(i,l){$(i)&&(i={type:i}),t[l]=_e(i,Me(n,i.type))})},r.prototype.optionUpdated=function(){this._updateData(this.ecModel);var e=this._data;if(e[0]&&this.get("selectedMode")==="single"){for(var t=!1,n=0;n=0},r.prototype.getOrient=function(){return this.get("orient")==="vertical"?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},r.type="legend.plain",r.dependencies=["series"],r.defaultOption={z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,symbolRotate:"inherit",symbolKeepAspect:!0,inactiveColor:"#ccc",inactiveBorderColor:"#ccc",inactiveBorderWidth:"auto",itemStyle:{color:"inherit",opacity:"inherit",borderColor:"inherit",borderWidth:"auto",borderCap:"inherit",borderJoin:"inherit",borderDashOffset:"inherit",borderMiterLimit:"inherit"},lineStyle:{width:"auto",color:"inherit",inactiveColor:"#ccc",inactiveWidth:2,opacity:"inherit",type:"inherit",cap:"inherit",join:"inherit",dashOffset:"inherit",miterLimit:"inherit"},textStyle:{color:"#333"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:"sans-serif",color:"#666",borderWidth:1,borderColor:"#666"},emphasis:{selectorLabel:{show:!0,color:"#eee",backgroundColor:"#666"}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}},r}(Ie);const Z=et;var I=A,J=P,W=ue,tt=function(a){H(r,a);function r(){var e=a!==null&&a.apply(this,arguments)||this;return e.type=r.type,e.newlineDisabled=!1,e}return r.prototype.init=function(){this.group.add(this._contentGroup=new W),this.group.add(this._selectorGroup=new W),this._isFirstRender=!0},r.prototype.getContentGroup=function(){return this._contentGroup},r.prototype.getSelectorGroup=function(){return this._selectorGroup},r.prototype.render=function(e,t,n){var i=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),!!e.get("show",!0)){var l=e.get("align"),v=e.get("orient");(!l||l==="auto")&&(l=e.get("left")==="right"&&v==="vertical"?"right":"left");var s=e.get("selector",!0),o=e.get("selectorPosition",!0);s&&(!o||o==="auto")&&(o=v==="horizontal"?"end":"start"),this.renderInner(l,e,t,n,s,v,o);var c=e.getBoxLayoutParams(),d={width:n.getWidth(),height:n.getHeight()},p=e.get("padding"),g=ee(c,d,p),h=this.layoutInner(e,l,g,i,s,o),u=ee(Re({width:h.width,height:h.height},c),d,p);this.group.x=u.x-h.x,this.group.y=u.y-h.y,this.group.markRedraw(),this.group.add(this._backgroundEl=Qe(h,e))}},r.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},r.prototype.renderInner=function(e,t,n,i,l,v,s){var o=this.getContentGroup(),c=ce(),d=t.get("selectedMode"),p=[];n.eachRawSeries(function(g){!g.get("legendHoverLink")&&p.push(g.id)}),J(t.getData(),function(g,h){var u=g.get("name");if(!this.newlineDisabled&&(u===""||u===` +import{d as le,c as O,o as E,i as K,n as U,_ as de,f as fe,e as ye,B as M,z as me,A as xe}from"./index-635eac34.js";import{C as Se}from"./ChartPlaceholder-743c445d.js";import{a1 as be,R as q,H,n as se,e as P,a2 as _e,a3 as Ce,A as ce,g as Ge,W as Le,Z as De,F as Pe,a4 as Ie,o as $,z as Ae,$ as ee,a5 as Re,r as ke,f as te,s as we,a6 as j,M as Oe,a7 as re,a8 as ae,a9 as Be,aa as Te,ab as B,ac as ze,ad as We,ae as $e,c as A,af as ue,ag as Fe,ah as He,ai as Ve,aj as Ne,j as Ee,h as Ke,ak as Ue,al as je,u as F,_ as Ze,a as Je,b as Xe,i as Ye}from"./EChart.vue_vue_type_script_setup_true_lang-b09f4fbe.js";import{u as qe}from"./useMonthNames-a81a4bd7.js";import{t as z}from"./budgets-531db56b.js";import"./Icon-f54aec6a.js";import"./useResizeObserver-3dd0959b.js";function Qe(a,r){var e=be(r.get("padding")),t=r.getItemStyle(["color","opacity"]);return t.fill=r.get("backgroundColor"),a=new q({shape:{x:a.x-e[3],y:a.y-e[0],width:a.width+e[1]+e[3],height:a.height+e[0]+e[2],r:r.get("borderRadius")},style:t,silent:!0,z2:-1}),a}var Me=function(a,r){if(r==="all")return{type:"all",title:a.getLocaleModel().get(["legend","selector","all"])};if(r==="inverse")return{type:"inverse",title:a.getLocaleModel().get(["legend","selector","inverse"])}},et=function(a){H(r,a);function r(){var e=a!==null&&a.apply(this,arguments)||this;return e.type=r.type,e.layoutMode={type:"box",ignoreSize:!0},e}return r.prototype.init=function(e,t,n){this.mergeDefaultAndTheme(e,n),e.selected=e.selected||{},this._updateSelector(e)},r.prototype.mergeOption=function(e,t){a.prototype.mergeOption.call(this,e,t),this._updateSelector(e)},r.prototype._updateSelector=function(e){var t=e.selector,n=this.ecModel;t===!0&&(t=e.selector=["all","inverse"]),se(t)&&P(t,function(i,l){$(i)&&(i={type:i}),t[l]=_e(i,Me(n,i.type))})},r.prototype.optionUpdated=function(){this._updateData(this.ecModel);var e=this._data;if(e[0]&&this.get("selectedMode")==="single"){for(var t=!1,n=0;n=0},r.prototype.getOrient=function(){return this.get("orient")==="vertical"?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},r.type="legend.plain",r.dependencies=["series"],r.defaultOption={z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,symbolRotate:"inherit",symbolKeepAspect:!0,inactiveColor:"#ccc",inactiveBorderColor:"#ccc",inactiveBorderWidth:"auto",itemStyle:{color:"inherit",opacity:"inherit",borderColor:"inherit",borderWidth:"auto",borderCap:"inherit",borderJoin:"inherit",borderDashOffset:"inherit",borderMiterLimit:"inherit"},lineStyle:{width:"auto",color:"inherit",inactiveColor:"#ccc",inactiveWidth:2,opacity:"inherit",type:"inherit",cap:"inherit",join:"inherit",dashOffset:"inherit",miterLimit:"inherit"},textStyle:{color:"#333"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:"sans-serif",color:"#666",borderWidth:1,borderColor:"#666"},emphasis:{selectorLabel:{show:!0,color:"#eee",backgroundColor:"#666"}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}},r}(Ie);const Z=et;var I=A,J=P,W=ue,tt=function(a){H(r,a);function r(){var e=a!==null&&a.apply(this,arguments)||this;return e.type=r.type,e.newlineDisabled=!1,e}return r.prototype.init=function(){this.group.add(this._contentGroup=new W),this.group.add(this._selectorGroup=new W),this._isFirstRender=!0},r.prototype.getContentGroup=function(){return this._contentGroup},r.prototype.getSelectorGroup=function(){return this._selectorGroup},r.prototype.render=function(e,t,n){var i=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),!!e.get("show",!0)){var l=e.get("align"),v=e.get("orient");(!l||l==="auto")&&(l=e.get("left")==="right"&&v==="vertical"?"right":"left");var s=e.get("selector",!0),o=e.get("selectorPosition",!0);s&&(!o||o==="auto")&&(o=v==="horizontal"?"end":"start"),this.renderInner(l,e,t,n,s,v,o);var c=e.getBoxLayoutParams(),d={width:n.getWidth(),height:n.getHeight()},p=e.get("padding"),g=ee(c,d,p),h=this.layoutInner(e,l,g,i,s,o),u=ee(Re({width:h.width,height:h.height},c),d,p);this.group.x=u.x-h.x,this.group.y=u.y-h.y,this.group.markRedraw(),this.group.add(this._backgroundEl=Qe(h,e))}},r.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},r.prototype.renderInner=function(e,t,n,i,l,v,s){var o=this.getContentGroup(),c=ce(),d=t.get("selectedMode"),p=[];n.eachRawSeries(function(g){!g.get("legendHoverLink")&&p.push(g.id)}),J(t.getData(),function(g,h){var u=g.get("name");if(!this.newlineDisabled&&(u===""||u===` `)){var m=new W;m.newline=!0,o.add(m);return}var f=n.getSeriesByName(u)[0];if(!c.get(u))if(f){var y=f.getData(),x=y.getVisual("legendLineStyle")||{},C=y.getVisual("legendIcon"),S=y.getVisual("style"),b=this._createItem(f,u,h,g,t,e,x,S,C,d,i);b.on("click",I(ne,u,null,i,p)).on("mouseover",I(X,f.name,null,i,p)).on("mouseout",I(Y,f.name,null,i,p)),c.set(u,!0)}else n.eachRawSeries(function(_){if(!c.get(u)&&_.legendVisualProvider){var G=_.legendVisualProvider;if(!G.containName(u))return;var T=G.indexOfName(u),L=G.getItemVisual(T,"style"),R=G.getItemVisual(T,"legendIcon"),D=ke(L.fill);D&&D[3]===0&&(D[3]=.2,L=te(te({},L),{fill:we(D,"rgba")}));var k=this._createItem(_,u,h,g,t,e,{},L,R,d,i);k.on("click",I(ne,null,u,i,p)).on("mouseover",I(X,null,u,i,p)).on("mouseout",I(Y,null,u,i,p)),c.set(u,!0)}},this)},this),l&&this._createSelector(l,t,i,v,s)},r.prototype._createSelector=function(e,t,n,i,l){var v=this.getSelectorGroup();J(e,function(o){var c=o.type,d=new j({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){n.dispatchAction({type:c==="all"?"legendAllSelect":"legendInverseSelect"})}});v.add(d);var p=t.getModel("selectorLabel"),g=t.getModel(["emphasis","selectorLabel"]);Oe(d,{normal:p,emphasis:g},{defaultText:o.title}),re(d)})},r.prototype._createItem=function(e,t,n,i,l,v,s,o,c,d,p){var g=e.visualDrawType,h=l.get("itemWidth"),u=l.get("itemHeight"),m=l.isSelected(t),f=i.get("symbolRotate"),y=i.get("symbolKeepAspect"),x=i.get("icon");c=x||c||"roundRect";var C=rt(c,i,s,o,g,m,p),S=new W,b=i.getModel("textStyle");if(ae(e.getLegendIcon)&&(!x||x==="inherit"))S.add(e.getLegendIcon({itemWidth:h,itemHeight:u,icon:c,iconRotate:f,itemStyle:C.itemStyle,lineStyle:C.lineStyle,symbolKeepAspect:y}));else{var _=x==="inherit"&&e.getData().getVisual("symbol")?f==="inherit"?e.getData().getVisual("symbolRotate"):f:0;S.add(at({itemWidth:h,itemHeight:u,icon:c,iconRotate:_,itemStyle:C.itemStyle,lineStyle:C.lineStyle,symbolKeepAspect:y}))}var G=v==="left"?h+5:-5,T=v,L=l.get("formatter"),R=t;$(L)&&L?R=L.replace("{name}",t??""):ae(L)&&(R=L(t));var D=m?b.getTextColor():i.get("inactiveColor");S.add(new j({style:Be(b,{text:R,x:G,y:u/2,fill:D,align:T,verticalAlign:"middle"},{inheritColor:D})}));var k=new q({shape:S.getBoundingRect(),invisible:!0}),Q=i.getModel("tooltip");return Q.get("show")&&Te({el:k,componentModel:l,itemName:t,itemTooltipOption:Q.option}),S.add(k),S.eachChild(function(ve){ve.silent=!0}),k.silent=!d,this.getContentGroup().add(S),re(S),S.__legendDataIndex=n,S},r.prototype.layoutInner=function(e,t,n,i,l,v){var s=this.getContentGroup(),o=this.getSelectorGroup();B(e.get("orient"),s,e.get("itemGap"),n.width,n.height);var c=s.getBoundingRect(),d=[-c.x,-c.y];if(o.markRedraw(),s.markRedraw(),l){B("horizontal",o,e.get("selectorItemGap",!0));var p=o.getBoundingRect(),g=[-p.x,-p.y],h=e.get("selectorButtonGap",!0),u=e.getOrient().index,m=u===0?"width":"height",f=u===0?"height":"width",y=u===0?"y":"x";v==="end"?g[u]+=c[m]+h:d[u]+=p[m]+h,g[1-u]+=c[f]/2-p[f]/2,o.x=g[0],o.y=g[1],s.x=d[0],s.y=d[1];var x={x:0,y:0};return x[m]=c[m]+h+p[m],x[f]=Math.max(c[f],p[f]),x[y]=Math.min(0,p[y]+g[1-u]),x}else return s.x=d[0],s.y=d[1],this.group.getBoundingRect()},r.prototype.remove=function(){this.getContentGroup().removeAll(),this._isFirstRender=!0},r.type="legend.plain",r}(ze);function rt(a,r,e,t,n,i,l){function v(m,f){m.lineWidth==="auto"&&(m.lineWidth=f.lineWidth>0?2:0),J(m,function(y,x){m[x]==="inherit"&&(m[x]=f[x])})}var s=r.getModel("itemStyle"),o=s.getItemStyle(),c=a.lastIndexOf("empty",0)===0?"fill":"stroke",d=s.getShallow("decal");o.decal=!d||d==="inherit"?t.decal:We(d,l),o.fill==="inherit"&&(o.fill=t[n]),o.stroke==="inherit"&&(o.stroke=t[c]),o.opacity==="inherit"&&(o.opacity=(n==="fill"?t:e).opacity),v(o,t);var p=r.getModel("lineStyle"),g=p.getLineStyle();if(v(g,e),o.fill==="auto"&&(o.fill=t.fill),o.stroke==="auto"&&(o.stroke=t.fill),g.stroke==="auto"&&(g.stroke=t.fill),!i){var h=r.get("inactiveBorderWidth"),u=o[c];o.lineWidth=h==="auto"?t.lineWidth>0&&u?2:0:o.lineWidth,o.fill=r.get("inactiveColor"),o.stroke=r.get("inactiveBorderColor"),g.stroke=p.get("inactiveColor"),g.lineWidth=p.get("inactiveWidth")}return{itemStyle:o,lineStyle:g}}function at(a){var r=a.icon||"roundRect",e=$e(r,0,0,a.itemWidth,a.itemHeight,a.itemStyle.fill,a.symbolKeepAspect);return e.setStyle(a.itemStyle),e.rotation=(a.iconRotate||0)*Math.PI/180,e.setOrigin([a.itemWidth/2,a.itemHeight/2]),r.indexOf("empty")>-1&&(e.style.stroke=e.style.fill,e.style.fill="#fff",e.style.lineWidth=2),e}function ne(a,r,e,t){Y(a,r,e,t),e.dispatchAction({type:"legendToggleSelect",name:a??r}),X(a,r,e,t)}function pe(a){for(var r=a.getZr().storage.getDisplayList(),e,t=0,n=r.length;tn[l],m=[-g.x,-g.y];t||(m[i]=c[o]);var f=[0,0],y=[-h.x,-h.y],x=Ue(e.get("pageButtonGap",!0),e.get("itemGap",!0));if(u){var C=e.get("pageButtonPosition",!0);C==="end"?y[i]+=n[l]-h[l]:f[i]+=h[l]+x}y[1-i]+=g[v]/2-h[v]/2,c.setPosition(m),d.setPosition(f),p.setPosition(y);var S={x:0,y:0};if(S[l]=u?n[l]:g[l],S[v]=Math.max(g[v],h[v]),S[s]=Math.min(0,h[s]+y[1-i]),d.__rectSize=n[l],u){var b={x:0,y:0};b[l]=Math.max(n[l]-h[l]-x,0),b[v]=S[v],d.setClipPath(new q({shape:b})),d.__rectSize=b[l]}else p.eachChild(function(G){G.attr({invisible:!0,silent:!0})});var _=this._getPageInfo(e);return _.pageIndex!=null&&je(c,{x:_.contentPosition[0],y:_.contentPosition[1]},u?e:null),this._updatePageInfoView(e,_),S},r.prototype._pageGo=function(e,t,n){var i=this._getPageInfo(t)[e];i!=null&&n.dispatchAction({type:"legendScroll",scrollDataIndex:i,legendId:t.id})},r.prototype._updatePageInfoView=function(e,t){var n=this._controllerGroup;P(["pagePrev","pageNext"],function(c){var d=c+"DataIndex",p=t[d]!=null,g=n.childOfName(c);g&&(g.setStyle("fill",p?e.get("pageIconColor",!0):e.get("pageIconInactiveColor",!0)),g.cursor=p?"pointer":"default")});var i=n.childOfName("pageText"),l=e.get("pageFormatter"),v=t.pageIndex,s=v!=null?v+1:0,o=t.pageCount;i&&l&&i.setStyle("text",$(l)?l.replace("{current}",s==null?"":s+"").replace("{total}",o==null?"":o+""):l({current:s,total:o}))},r.prototype._getPageInfo=function(e){var t=e.get("scrollDataIndex",!0),n=this.getContentGroup(),i=this._containerGroup.__rectSize,l=e.getOrient().index,v=V[l],s=N[l],o=this._findTargetItemIndex(t),c=n.children(),d=c[o],p=c.length,g=p?1:0,h={contentPosition:[n.x,n.y],pageCount:g,pageIndex:g-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!d)return h;var u=C(d);h.contentPosition[l]=-u.s;for(var m=o+1,f=u,y=u,x=null;m<=p;++m)x=C(c[m]),(!x&&y.e>f.s+i||x&&!S(x,f.s))&&(y.i>f.i?f=y:f=x,f&&(h.pageNextDataIndex==null&&(h.pageNextDataIndex=f.i),++h.pageCount)),y=x;for(var m=o-1,f=u,y=u,x=null;m>=-1;--m)x=C(c[m]),(!x||!S(y,x.s))&&f.i=_&&b.s<=_+i}},r.prototype._findTargetItemIndex=function(e){if(!this._showController)return 0;var t,n=this.getContentGroup(),i;return n.eachChild(function(l,v){var s=l.__legendDataIndex;i==null&&s!=null&&(i=v),s===e&&(t=v)}),t??i},r.type="legend.scroll",r}(ge);const ct=st;function ut(a){a.registerAction("legendScroll","legendscroll",function(r,e){var t=r.scrollDataIndex;t!=null&&e.eachComponent({mainType:"legend",subType:"scroll",query:r},function(n){n.setScrollDataIndex(t)})})}function pt(a){F(he),a.registerComponentModel(lt),a.registerComponentView(ct),ut(a)}function gt(a){F(he),F(pt)}const ht=le({__name:"LineChart",props:{class:{},data:{}},setup(a){const r=a;F([Je,Xe,gt,Ye]);const e=O(()=>r.class),t=O(()=>({animation:!1,legend:{data:r.data.series.map(n=>n.name),textStyle:{color:"var(--chart-label)"},lineStyle:{width:2,cap:"round"},itemStyle:{opacity:0}},grid:{left:"3%",right:"4%",bottom:"3%",containLabel:!0},xAxis:{type:"category",boundaryGap:!1,data:r.data.labels,axisTick:{lineStyle:{color:"var(--chart-line-color)"}},axisLine:{lineStyle:{color:"var(--chart-line-color)"}},axisLabel:{color:"var(--chart-label)"}},yAxis:{type:"value",axisTick:{lineStyle:{color:"var(--chart-line-color)"}},axisLine:{lineStyle:{color:"var(--chart-line-color)"}},axisLabel:{color:"var(--chart-label)"},splitLine:{lineStyle:{color:"var(--chart-line-color)"}}},series:r.data.series.map(n=>({name:n.name,type:"line",data:n.data,color:n.color,silent:!0}))}));return(n,i)=>(E(),K(Ze,{class:U([n.$style.stackedLineChart,e.value]),options:t.value},null,8,["class","options"]))}}),vt="t_",dt={stackedLineChart:vt},ft={$style:dt},yt=de(ht,[["__cssModules",ft]]),Lt=le({__name:"DevelopmentChart",props:{class:{}},setup(a){const r=a,e=O(()=>r.class),t=qe(),{state:n}=fe(),{t:i}=ye(),l=O(()=>{const s=M(z(n.income)),o=M(z(n.expenses));return!s||!o}),v=O(()=>{const s=z(n.income),o=z(n.expenses),c=me(xe(s,o));return{labels:t.value,series:[{name:i("dashboard.income"),color:"var(--c-success-light-dimmed)",data:s},{name:i("dashboard.expenses"),color:"var(--c-danger-light-dimmed)",data:o},{name:i("dashboard.endingBalance"),color:"var(--c-primary-light-dimmed)",data:c}]}});return(s,o)=>l.value?(E(),K(Se,{key:0,class:U(e.value)},null,8,["class"])):(E(),K(yt,{key:1,class:U(e.value),data:v.value},null,8,["class","data"]))}});export{Lt as default}; +`||o==="")){var c=l.isSelected(o);t.hasOwnProperty(o)?t[o]=t[o]&&c:t[o]=c}})}),a==="allSelect"||a==="inverseSelect"?{selected:t}:{name:r.name,selected:t}}function it(a){a.registerAction("legendToggleSelect","legendselectchanged",A(w,"toggleSelected")),a.registerAction("legendAllSelect","legendselectall",A(w,"allSelect")),a.registerAction("legendInverseSelect","legendinverseselect",A(w,"inverseSelect")),a.registerAction("legendSelect","legendselected",A(w,"select")),a.registerAction("legendUnSelect","legendunselected",A(w,"unSelect"))}function he(a){a.registerComponentModel(Z),a.registerComponentView(ge),a.registerProcessor(a.PRIORITY.PROCESSOR.SERIES_FILTER,nt),a.registerSubTypeDefaulter("legend",function(){return"plain"}),it(a)}var ot=function(a){H(r,a);function r(){var e=a!==null&&a.apply(this,arguments)||this;return e.type=r.type,e}return r.prototype.setScrollDataIndex=function(e){this.option.scrollDataIndex=e},r.prototype.init=function(e,t,n){var i=Fe(e);a.prototype.init.call(this,e,t,n),ie(this,e,i)},r.prototype.mergeOption=function(e,t){a.prototype.mergeOption.call(this,e,t),ie(this,this.option,e)},r.type="legend.scroll",r.defaultOption=He(Z.defaultOption,{scrollDataIndex:0,pageButtonItemGap:5,pageButtonGap:null,pageButtonPosition:"end",pageFormatter:"{current}/{total}",pageIcons:{horizontal:["M0,0L12,-10L12,10z","M0,0L-12,-10L-12,10z"],vertical:["M0,0L20,0L10,-20z","M0,0L20,0L10,20z"]},pageIconColor:"#2f4554",pageIconInactiveColor:"#aaa",pageIconSize:15,pageTextStyle:{color:"#333"},animationDurationUpdate:800}),r}(Z);function ie(a,r,e){var t=a.getOrient(),n=[1,1];n[t.index]=0,Ve(r,e,{type:"box",ignoreSize:!!n})}const lt=ot;var oe=ue,V=["width","height"],N=["x","y"],st=function(a){H(r,a);function r(){var e=a!==null&&a.apply(this,arguments)||this;return e.type=r.type,e.newlineDisabled=!0,e._currentIndex=0,e}return r.prototype.init=function(){a.prototype.init.call(this),this.group.add(this._containerGroup=new oe),this._containerGroup.add(this.getContentGroup()),this.group.add(this._controllerGroup=new oe)},r.prototype.resetInner=function(){a.prototype.resetInner.call(this),this._controllerGroup.removeAll(),this._containerGroup.removeClipPath(),this._containerGroup.__rectSize=null},r.prototype.renderInner=function(e,t,n,i,l,v,s){var o=this;a.prototype.renderInner.call(this,e,t,n,i,l,v,s);var c=this._controllerGroup,d=t.get("pageIconSize",!0),p=se(d)?d:[d,d];h("pagePrev",0);var g=t.getModel("pageTextStyle");c.add(new j({name:"pageText",style:{text:"xx/xx",fill:g.getTextColor(),font:g.getFont(),verticalAlign:"middle",align:"center"},silent:!0})),h("pageNext",1);function h(u,m){var f=u+"DataIndex",y=Ne(t.get("pageIcons",!0)[t.getOrient().name][m],{onclick:Ee(o._pageGo,o,f,t,i)},{x:-p[0]/2,y:-p[1]/2,width:p[0],height:p[1]});y.name=u,c.add(y)}},r.prototype.layoutInner=function(e,t,n,i,l,v){var s=this.getSelectorGroup(),o=e.getOrient().index,c=V[o],d=N[o],p=V[1-o],g=N[1-o];l&&B("horizontal",s,e.get("selectorItemGap",!0));var h=e.get("selectorButtonGap",!0),u=s.getBoundingRect(),m=[-u.x,-u.y],f=Ke(n);l&&(f[c]=n[c]-u[c]-h);var y=this._layoutContentAndController(e,i,f,o,c,p,g,d);if(l){if(v==="end")m[o]+=y[c]+h;else{var x=u[c]+h;m[o]-=x,y[d]-=x}y[c]+=u[c]+h,m[1-o]+=y[g]+y[p]/2-u[p]/2,y[p]=Math.max(y[p],u[p]),y[g]=Math.min(y[g],u[g]+m[1-o]),s.x=m[0],s.y=m[1],s.markRedraw()}return y},r.prototype._layoutContentAndController=function(e,t,n,i,l,v,s,o){var c=this.getContentGroup(),d=this._containerGroup,p=this._controllerGroup;B(e.get("orient"),c,e.get("itemGap"),i?n.width:null,i?null:n.height),B("horizontal",p,e.get("pageButtonItemGap",!0));var g=c.getBoundingRect(),h=p.getBoundingRect(),u=this._showController=g[l]>n[l],m=[-g.x,-g.y];t||(m[i]=c[o]);var f=[0,0],y=[-h.x,-h.y],x=Ue(e.get("pageButtonGap",!0),e.get("itemGap",!0));if(u){var C=e.get("pageButtonPosition",!0);C==="end"?y[i]+=n[l]-h[l]:f[i]+=h[l]+x}y[1-i]+=g[v]/2-h[v]/2,c.setPosition(m),d.setPosition(f),p.setPosition(y);var S={x:0,y:0};if(S[l]=u?n[l]:g[l],S[v]=Math.max(g[v],h[v]),S[s]=Math.min(0,h[s]+y[1-i]),d.__rectSize=n[l],u){var b={x:0,y:0};b[l]=Math.max(n[l]-h[l]-x,0),b[v]=S[v],d.setClipPath(new q({shape:b})),d.__rectSize=b[l]}else p.eachChild(function(G){G.attr({invisible:!0,silent:!0})});var _=this._getPageInfo(e);return _.pageIndex!=null&&je(c,{x:_.contentPosition[0],y:_.contentPosition[1]},u?e:null),this._updatePageInfoView(e,_),S},r.prototype._pageGo=function(e,t,n){var i=this._getPageInfo(t)[e];i!=null&&n.dispatchAction({type:"legendScroll",scrollDataIndex:i,legendId:t.id})},r.prototype._updatePageInfoView=function(e,t){var n=this._controllerGroup;P(["pagePrev","pageNext"],function(c){var d=c+"DataIndex",p=t[d]!=null,g=n.childOfName(c);g&&(g.setStyle("fill",p?e.get("pageIconColor",!0):e.get("pageIconInactiveColor",!0)),g.cursor=p?"pointer":"default")});var i=n.childOfName("pageText"),l=e.get("pageFormatter"),v=t.pageIndex,s=v!=null?v+1:0,o=t.pageCount;i&&l&&i.setStyle("text",$(l)?l.replace("{current}",s==null?"":s+"").replace("{total}",o==null?"":o+""):l({current:s,total:o}))},r.prototype._getPageInfo=function(e){var t=e.get("scrollDataIndex",!0),n=this.getContentGroup(),i=this._containerGroup.__rectSize,l=e.getOrient().index,v=V[l],s=N[l],o=this._findTargetItemIndex(t),c=n.children(),d=c[o],p=c.length,g=p?1:0,h={contentPosition:[n.x,n.y],pageCount:g,pageIndex:g-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!d)return h;var u=C(d);h.contentPosition[l]=-u.s;for(var m=o+1,f=u,y=u,x=null;m<=p;++m)x=C(c[m]),(!x&&y.e>f.s+i||x&&!S(x,f.s))&&(y.i>f.i?f=y:f=x,f&&(h.pageNextDataIndex==null&&(h.pageNextDataIndex=f.i),++h.pageCount)),y=x;for(var m=o-1,f=u,y=u,x=null;m>=-1;--m)x=C(c[m]),(!x||!S(y,x.s))&&f.i=_&&b.s<=_+i}},r.prototype._findTargetItemIndex=function(e){if(!this._showController)return 0;var t,n=this.getContentGroup(),i;return n.eachChild(function(l,v){var s=l.__legendDataIndex;i==null&&s!=null&&(i=v),s===e&&(t=v)}),t??i},r.type="legend.scroll",r}(ge);const ct=st;function ut(a){a.registerAction("legendScroll","legendscroll",function(r,e){var t=r.scrollDataIndex;t!=null&&e.eachComponent({mainType:"legend",subType:"scroll",query:r},function(n){n.setScrollDataIndex(t)})})}function pt(a){F(he),a.registerComponentModel(lt),a.registerComponentView(ct),ut(a)}function gt(a){F(he),F(pt)}const ht=le({__name:"LineChart",props:{class:{},data:{}},setup(a){const r=a;F([Je,Xe,gt,Ye]);const e=O(()=>r.class),t=O(()=>({animation:!1,legend:{data:r.data.series.map(n=>n.name),textStyle:{color:"var(--chart-label)"},lineStyle:{width:2,cap:"round"},itemStyle:{opacity:0}},grid:{left:"3%",right:"4%",bottom:"3%",containLabel:!0},xAxis:{type:"category",boundaryGap:!1,data:r.data.labels,axisTick:{lineStyle:{color:"var(--chart-line-color)"}},axisLine:{lineStyle:{color:"var(--chart-line-color)"}},axisLabel:{color:"var(--chart-label)"}},yAxis:{type:"value",axisTick:{lineStyle:{color:"var(--chart-line-color)"}},axisLine:{lineStyle:{color:"var(--chart-line-color)"}},axisLabel:{color:"var(--chart-label)"},splitLine:{lineStyle:{color:"var(--chart-line-color)"}}},series:r.data.series.map(n=>({name:n.name,type:"line",data:n.data,color:n.color,silent:!0}))}));return(n,i)=>(E(),K(Ze,{class:U([n.$style.stackedLineChart,e.value]),options:t.value},null,8,["class","options"]))}}),vt="G_",dt={stackedLineChart:vt},ft={$style:dt},yt=de(ht,[["__cssModules",ft]]),Lt=le({__name:"DevelopmentChart",props:{class:{}},setup(a){const r=a,e=O(()=>r.class),t=qe(),{state:n}=fe(),{t:i}=ye(),l=O(()=>{const s=M(z(n.income)),o=M(z(n.expenses));return!s||!o}),v=O(()=>{const s=z(n.income),o=z(n.expenses),c=me(xe(s,o));return{labels:t.value,series:[{name:i("dashboard.income"),color:"var(--c-success-light-dimmed)",data:s},{name:i("dashboard.expenses"),color:"var(--c-danger-light-dimmed)",data:o},{name:i("dashboard.endingBalance"),color:"var(--c-primary-light-dimmed)",data:c}]}});return(s,o)=>l.value?(E(),K(Se,{key:0,class:U(e.value)},null,8,["class"])):(E(),K(yt,{key:1,class:U(e.value),data:v.value},null,8,["class","data"]))}});export{Lt as default}; diff --git a/assets/DistributionChart-8ece1ec6.css b/assets/DistributionChart-8ece1ec6.css deleted file mode 100644 index 1ae12baa..00000000 --- a/assets/DistributionChart-8ece1ec6.css +++ /dev/null @@ -1 +0,0 @@ -.s_{width:100%;height:100%}.M{height:100%;width:100%} diff --git a/assets/DistributionChart-93c1fc6c.css b/assets/DistributionChart-93c1fc6c.css new file mode 100644 index 00000000..382b3d56 --- /dev/null +++ b/assets/DistributionChart-93c1fc6c.css @@ -0,0 +1 @@ +.F_{width:100%;height:100%}.c{height:100%;width:100%} diff --git a/assets/DistributionChart-ae33c3b2.js b/assets/DistributionChart-be2e2d0d.js similarity index 94% rename from assets/DistributionChart-ae33c3b2.js rename to assets/DistributionChart-be2e2d0d.js index 50bb9345..a2f0f566 100644 --- a/assets/DistributionChart-ae33c3b2.js +++ b/assets/DistributionChart-be2e2d0d.js @@ -1 +1 @@ -import{d as $t,c as H,o as gt,i as ht,n as Pt,_ as Rt,f as Jt,e as Qt,B as w,a4 as te}from"./index-1bee1cb1.js";import{C as ee}from"./ChartPlaceholder-46abf122.js";import{e as x,c as st,d as Bt,f as ae,m as ne,g as Ht,k as Ft,h as re,j as St,l as F,n as vt,o as pt,p as ut,s as lt,q as X,r as ie,t as oe,v as ct,x as se,y as Xt,z as Et,A as K,B as wt,C as ue,D as le,E as ce,F as de,G as fe,S as Mt,H as xt,I as ge,J as he,P as ve,K as bt,L as kt,M as _t,N as pe,O as Tt,Q as At,R as Yt,T as ye,U as me,V as xe,W as Ie,X as Ct,Y as Le,Z as Ve,$ as De,a0 as Se,u as Ee,_ as we,b as Me}from"./EChart.vue_vue_type_script_setup_true_lang-e0bf0237.js";import{t as U}from"./budgets-531db56b.js";import"./Icon-3e6d397d.js";import"./useResizeObserver-9c83b660.js";var V=ne();function be(a){var t=a.mainData,e=a.datas;e||(e={main:t},a.datasAttr={main:"data"}),a.datas=a.mainData=null,jt(t,e,a),x(e,function(n){x(t.TRANSFERABLE_METHODS,function(r){n.wrapMethod(r,st(ke,a))})}),t.wrapMethod("cloneShallow",st(Te,a)),x(t.CHANGABLE_METHODS,function(n){t.wrapMethod(n,st(_e,a))}),Bt(e[t.dataType]===t)}function ke(a,t){if(Ge(this)){var e=ae({},V(this).datas);e[this.dataType]=t,jt(t,e,a)}else It(t,this.dataType,V(this).mainData,a);return t}function _e(a,t){return a.struct&&a.struct.update(),t}function Te(a,t){return x(V(t).datas,function(e,n){e!==t&&It(e.cloneShallow(),n,t,a)}),t}function Ae(a){var t=V(this).mainData;return a==null||t==null?t:V(t).datas[a]}function Ce(){var a=V(this).mainData;return a==null?[{data:a}]:Ht(Ft(V(a).datas),function(t){return{type:t,data:V(a).datas[t]}})}function Ge(a){return V(a).mainData===a}function jt(a,t,e){V(a).datas={},x(t,function(n,r){It(n,r,a,e)})}function It(a,t,e,n){V(e).datas[t]=a,V(a).mainData=e,a.dataType=t,n.struct&&(a[n.structAttr]=n.struct,n.struct[n.datasAttr[t]]=a),a.getLinkedData=Ae,a.getLinkedDataAll=Ce}var Y=x,ze=F,Z=-1,Lt=function(){function a(t){var e=t.mappingMethod,n=t.type,r=this.option=re(t);this.type=n,this.mappingMethod=e,this._normalizeData=Re[e];var i=a.visualHandlers[n];this.applyVisual=i.applyVisual,this.getColorMapper=i.getColorMapper,this._normalizedToVisual=i._normalizedToVisual[e],e==="piecewise"?(dt(r),$e(r)):e==="category"?r.categories?Pe(r):dt(r,!0):(Bt(e!=="linear"||r.dataExtent),dt(r))}return a.prototype.mapValueToVisual=function(t){var e=this._normalizeData(t);return this._normalizedToVisual(e,t)},a.prototype.getNormalizer=function(){return St(this._normalizeData,this)},a.listVisualTypes=function(){return Ft(a.visualHandlers)},a.isValidType=function(t){return a.visualHandlers.hasOwnProperty(t)},a.eachVisual=function(t,e,n){F(t)?x(t,e,n):e.call(n,t)},a.mapVisual=function(t,e,n){var r,i=vt(t)?[]:F(t)?{}:(r=!0,null);return a.eachVisual(t,function(s,o){var u=e.call(n,s,o);r?i=u:i[o]=u}),i},a.retrieveVisuals=function(t){var e={},n;return t&&Y(a.visualHandlers,function(r,i){t.hasOwnProperty(i)&&(e[i]=t[i],n=!0)}),n?e:null},a.prepareVisualTypes=function(t){if(vt(t))t=t.slice();else if(ze(t)){var e=[];Y(t,function(n,r){e.push(r)}),t=e}else return[];return t.sort(function(n,r){return r==="color"&&n!=="color"&&n.indexOf("color")===0?1:-1}),t},a.dependsOn=function(t,e){return e==="color"?!!(t&&t.indexOf(e)===0):t===e},a.findPieceIndex=function(t,e,n){for(var r,i=1/0,s=0,o=e.length;s=0;i--)n[i]==null&&(delete e[t[i]],t.pop())}function dt(a,t){var e=a.visual,n=[];F(e)?Y(e,function(i){n.push(i)}):e!=null&&n.push(e);var r={color:1,symbol:1};!t&&n.length===1&&!r.hasOwnProperty(a.type)&&(n[1]=n[0]),Ot(a,n)}function W(a){return{applyVisual:function(t,e,n){var r=this.mapValueToVisual(t);n("color",a(e("color"),r))},_normalizedToVisual:yt([0,1])}}function Gt(a){var t=this.option.visual;return t[Math.round(X(a,[0,1],[0,t.length-1],!0))]||{}}function R(a){return function(t,e,n){n(a,this.mapValueToVisual(t))}}function B(a){var t=this.option.visual;return t[this.option.loop&&a!==Z?a%t.length:a]}function k(){return this.option.visual[0]}function yt(a){return{linear:function(t){return X(t,a,this.option.visual,!0)},category:B,piecewise:function(t,e){var n=mt.call(this,e);return n==null&&(n=X(t,a,this.option.visual,!0)),n},fixed:k}}function mt(a){var t=this.option,e=t.pieceList;if(t.hasSpecialVisual){var n=Lt.findPieceIndex(a,e),r=e[n];if(r&&r.visual)return r.visual[this.type]}}function Ot(a,t){return a.visual=t,a.type==="color"&&(a.parsedVisual=Ht(t,function(e){var n=ie(e);return n||[0,0,0,1]})),t}var Re={linear:function(a){return X(a,this.option.dataExtent,[0,1],!0)},piecewise:function(a){var t=this.option.pieceList,e=Lt.findPieceIndex(a,t,!0);if(e!=null)return X(e,[0,t.length-1],[0,1],!0)},category:function(a){var t=this.option.categories?this.option.categoryMap[a]:a;return t??Z},fixed:oe};function q(a,t,e){return a?t<=e:t=0&&t.call(e,n[i],i)},a.prototype.eachEdge=function(t,e){for(var n=this.edges,r=n.length,i=0;i=0&&n[i].node1.dataIndex>=0&&n[i].node2.dataIndex>=0&&t.call(e,n[i],i)},a.prototype.breadthFirstTraverse=function(t,e,n,r){if(e instanceof _||(e=this._nodesMap[$(e)]),!!e){for(var i=n==="out"?"outEdges":n==="in"?"inEdges":"edges",s=0;s=0&&u.node2.dataIndex>=0});for(var i=0,s=r.length;i=0&&this[a][t].setItemVisual(this.dataIndex,e,n)},getVisual:function(e){return this[a][t].getItemVisual(this.dataIndex,e)},setLayout:function(e,n){this.dataIndex>=0&&this[a][t].setItemLayout(this.dataIndex,e,n)},getLayout:function(){return this[a][t].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[a][t].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[a][t].getRawIndex(this.dataIndex)}}}Xt(_,Ut("hostGraph","data"));Xt(Nt,Ut("hostGraph","edgeData"));const Fe=He;function Xe(a,t,e,n,r){for(var i=new Fe(n),s=0;s "+p)),d++)}var v=e.get("coordinateSystem"),l;if(v==="cartesian2d"||v==="polar")l=le(a,e);else{var f=ce.get(v),h=f?f.dimensions||[]:[];de(h,"value")<0&&h.concat(["value"]);var y=fe(a,{coordDimensions:h,encodeDefine:e.getEncode()}).dimensions;l=new Mt(y,e),l.initData(a)}var m=new Mt(["value"],e);return m.initData(u,o),r&&r(l,m),be({mainData:l,struct:i,structAttr:"graph",datas:{node:l,edge:m},datasAttr:{node:"data",edge:"edgeData"}}),i.update(),i}var Ye=function(){function a(){this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.cpx1=0,this.cpy1=0,this.cpx2=0,this.cpy2=0,this.extent=0}return a}(),je=function(a){xt(t,a);function t(e){return a.call(this,e)||this}return t.prototype.getDefaultShape=function(){return new Ye},t.prototype.buildPath=function(e,n){var r=n.extent;e.moveTo(n.x1,n.y1),e.bezierCurveTo(n.cpx1,n.cpy1,n.cpx2,n.cpy2,n.x2,n.y2),n.orient==="vertical"?(e.lineTo(n.x2+r,n.y2),e.bezierCurveTo(n.cpx2+r,n.cpy2,n.cpx1+r,n.cpy1,n.x1+r,n.y1)):(e.lineTo(n.x2,n.y2+r),e.bezierCurveTo(n.cpx2,n.cpy2+r,n.cpx1,n.cpy1+r,n.x1,n.y1+r)),e.closePath()},t.prototype.highlight=function(){ge(this)},t.prototype.downplay=function(){he(this)},t}(ve),Oe=function(a){xt(t,a);function t(){var e=a!==null&&a.apply(this,arguments)||this;return e.type=t.type,e._focusAdjacencyDisabled=!1,e}return t.prototype.render=function(e,n,r){var i=this,s=e.getGraph(),o=this.group,u=e.layoutInfo,d=u.width,c=u.height,g=e.getData(),p=e.getData("edge"),v=e.get("orient");this._model=e,o.removeAll(),o.x=u.x,o.y=u.y,s.eachEdge(function(l){var f=new je,h=bt(f);h.dataIndex=l.dataIndex,h.seriesIndex=e.seriesIndex,h.dataType="edge";var y=l.getModel(),m=y.getModel("lineStyle"),I=m.get("curveness"),L=l.node1.getLayout(),D=l.node1.getModel(),E=D.get("localX"),S=D.get("localY"),T=l.node2.getLayout(),Vt=l.node2.getModel(),j=Vt.get("localX"),O=Vt.get("localY"),P=l.getLayout(),A,C,G,z,Q,tt,et,at;f.shape.extent=Math.max(1,P.dy),f.shape.orient=v,v==="vertical"?(A=(E!=null?E*d:L.x)+P.sy,C=(S!=null?S*c:L.y)+L.dy,G=(j!=null?j*d:T.x)+P.ty,z=O!=null?O*c:T.y,Q=A,tt=C*(1-I)+z*I,et=G,at=C*I+z*(1-I)):(A=(E!=null?E*d:L.x)+L.dx,C=(S!=null?S*c:L.y)+P.sy,G=j!=null?j*d:T.x,z=(O!=null?O*c:T.y)+P.ty,Q=A*(1-I)+G*I,tt=C,et=A*I+G*(1-I),at=z),f.setShape({x1:A,y1:C,x2:G,y2:z,cpx1:Q,cpy1:tt,cpx2:et,cpy2:at}),f.useStyle(m.getItemStyle()),zt(f.style,v,l);var Dt=""+y.get("value"),nt=kt(y,"edgeLabel");_t(f,nt,{labelFetcher:{getFormattedLabel:function(ot,N,Ea,qt,Kt,Zt){return e.getFormattedLabel(ot,N,"edge",qt,pe(Kt,nt.normal&&nt.normal.get("formatter"),Dt),Zt)}},labelDataIndex:l.dataIndex,defaultText:Dt}),f.setTextConfig({position:"inside"});var rt=y.getModel("emphasis");Tt(f,y,"lineStyle",function(ot){var N=ot.getItemStyle();return zt(N,v,l),N}),o.add(f),p.setItemGraphicEl(l.dataIndex,f);var it=rt.get("focus");At(f,it==="adjacency"?l.getAdjacentDataIndices():it==="trajectory"?l.getTrajectoryDataIndices():it,rt.get("blurScope"),rt.get("disabled"))}),s.eachNode(function(l){var f=l.getLayout(),h=l.getModel(),y=h.get("localX"),m=h.get("localY"),I=h.getModel("emphasis"),L=new Yt({shape:{x:y!=null?y*d:f.x,y:m!=null?m*c:f.y,width:f.dx,height:f.dy},style:h.getModel("itemStyle").getItemStyle(),z2:10});_t(L,kt(h),{labelFetcher:{getFormattedLabel:function(E,S){return e.getFormattedLabel(E,S,"node")}},labelDataIndex:l.dataIndex,defaultText:l.id}),L.disableLabelAnimation=!0,L.setStyle("fill",l.getVisual("color")),L.setStyle("decal",l.getVisual("style").decal),Tt(L,h),o.add(L),g.setItemGraphicEl(l.dataIndex,L),bt(L).dataType="node";var D=I.get("focus");At(L,D==="adjacency"?l.getAdjacentDataIndices():D==="trajectory"?l.getTrajectoryDataIndices():D,I.get("blurScope"),I.get("disabled"))}),g.eachItemGraphicEl(function(l,f){var h=g.getItemModel(f);h.get("draggable")&&(l.drift=function(y,m){i._focusAdjacencyDisabled=!0,this.shape.x+=y,this.shape.y+=m,this.dirty(),r.dispatchAction({type:"dragNode",seriesId:e.id,dataIndex:g.getRawIndex(f),localX:this.shape.x/d,localY:this.shape.y/c})},l.ondragend=function(){i._focusAdjacencyDisabled=!1},l.draggable=!0,l.cursor="move")}),!this._data&&e.isAnimationEnabled()&&o.setClipPath(Ne(o.getBoundingRect(),e,function(){o.removeClipPath()})),this._data=e.getData()},t.prototype.dispose=function(){},t.type="sankey",t}(ye);function zt(a,t,e){switch(a.fill){case"source":a.fill=e.node1.getVisual("color"),a.decal=e.node1.getVisual("style").decal;break;case"target":a.fill=e.node2.getVisual("color"),a.decal=e.node2.getVisual("style").decal;break;case"gradient":var n=e.node1.getVisual("color"),r=e.node2.getVisual("color");pt(n)&&pt(r)&&(a.fill=new me(0,0,+(t==="horizontal"),+(t==="vertical"),[{color:n,offset:0},{color:r,offset:1}]))}}function Ne(a,t,e){var n=new Yt({shape:{x:a.x-10,y:a.y-10,width:0,height:a.height+20}});return xe(n,{shape:{width:a.width+20}},t,e),n}const Ue=Oe;var We=function(a){xt(t,a);function t(){var e=a!==null&&a.apply(this,arguments)||this;return e.type=t.type,e}return t.prototype.getInitialData=function(e,n){var r=e.edges||e.links,i=e.data||e.nodes,s=e.levels;this.levelModels=[];for(var o=this.levelModels,u=0;u=0&&(o[s[u].depth]=new Ie(s[u],this,n));if(i&&r){var d=Xe(i,r,this,!0,c);return d.data}function c(g,p){g.wrapMethod("getItemModel",function(v,l){var f=v.parentModel,h=f.getData().getItemLayout(l);if(h){var y=h.depth,m=f.levelModels[y];m&&(v.parentModel=m)}return v}),p.wrapMethod("getItemModel",function(v,l){var f=v.parentModel,h=f.getGraph().getEdgeByIndex(l),y=h.node1.getLayout();if(y){var m=y.depth,I=f.levelModels[m];I&&(v.parentModel=I)}return v})}},t.prototype.setNodePosition=function(e,n){var r=this.option.data||this.option.nodes,i=r[e];i.localX=n[0],i.localY=n[1]},t.prototype.getGraph=function(){return this.getData().graph},t.prototype.getEdgeData=function(){return this.getGraph().edgeData},t.prototype.formatTooltip=function(e,n,r){function i(v){return isNaN(v)||v==null}if(r==="edge"){var s=this.getDataParams(e,r),o=s.data,u=s.value,d=o.source+" -- "+o.target;return Ct("nameValue",{name:d,value:u,noValue:i(u)})}else{var c=this.getGraph().getNodeByIndex(e),g=c.getLayout().value,p=this.getDataParams(e,r).data.name;return Ct("nameValue",{name:p!=null?p+"":null,value:g,noValue:i(g)})}},t.prototype.optionUpdated=function(){},t.prototype.getDataParams=function(e,n){var r=a.prototype.getDataParams.call(this,e,n);if(r.value==null&&n==="node"){var i=this.getGraph().getNodeByIndex(e),s=i.getLayout().value;r.value=s}return r},t.type="series.sankey",t.defaultOption={z:2,coordinateSystem:"view",left:"5%",top:"5%",right:"20%",bottom:"5%",orient:"horizontal",nodeWidth:20,nodeGap:8,draggable:!0,layoutIterations:32,label:{show:!0,position:"right",fontSize:12},edgeLabel:{show:!1,fontSize:12},levels:[],nodeAlign:"justify",lineStyle:{color:"#314656",opacity:.2,curveness:.5},emphasis:{label:{show:!0},lineStyle:{opacity:.5}},select:{itemStyle:{borderColor:"#212121"}},animationEasing:"linear",animationDuration:1e3},t}(Le);const qe=We;function Ke(a,t){a.eachSeriesByType("sankey",function(e){var n=e.get("nodeWidth"),r=e.get("nodeGap"),i=Ze(e,t);e.layoutInfo=i;var s=i.width,o=i.height,u=e.getGraph(),d=u.nodes,c=u.edges;Qe(d);var g=Ve(d,function(f){return f.getLayout().value===0}),p=g.length!==0?0:e.get("layoutIterations"),v=e.get("orient"),l=e.get("nodeAlign");Je(d,c,n,r,s,o,p,v,l)})}function Ze(a,t){return De(a.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()})}function Je(a,t,e,n,r,i,s,o,u){ta(a,t,e,r,i,o,u),ra(a,t,i,r,n,s,o),ga(a,o)}function Qe(a){x(a,function(t){var e=M(t.outEdges,J),n=M(t.inEdges,J),r=t.getValue()||0,i=Math.max(e,n,r);t.setLayout({value:i},!0)})}function ta(a,t,e,n,r,i,s){for(var o=[],u=[],d=[],c=[],g=0,p=0;p=0;y&&h.depth>v&&(v=h.depth),f.setLayout({depth:y?h.depth:g},!0),i==="vertical"?f.setLayout({dy:e},!0):f.setLayout({dx:e},!0);for(var m=0;mg-1?v:g-1;s&&s!=="left"&&ea(a,s,i,S);var T=i==="vertical"?(r-e)/S:(n-e)/S;na(a,T,i)}function Wt(a){var t=a.hostGraph.data.getRawDataItem(a.dataIndex);return t.depth!=null&&t.depth>=0}function ea(a,t,e,n){if(t==="right"){for(var r=[],i=a,s=0;i.length;){for(var o=0;o0;i--)u*=.99,sa(o,u,s),ft(o,r,e,n,s),fa(o,u,s),ft(o,r,e,n,s)}function ia(a,t){var e=[],n=t==="vertical"?"y":"x",r=Se(a,function(i){return i.getLayout()[n]});return r.keys.sort(function(i,s){return i-s}),x(r.keys,function(i){e.push(r.buckets.get(i))}),e}function oa(a,t,e,n,r,i){var s=1/0;x(a,function(o){var u=o.length,d=0;x(o,function(g){d+=g.getLayout().value});var c=i==="vertical"?(n-(u-1)*r)/d:(e-(u-1)*r)/d;c0&&(o=u.getLayout()[i]+d,r==="vertical"?u.setLayout({x:o},!0):u.setLayout({y:o},!0)),c=u.getLayout()[i]+u.getLayout()[p]+t;var l=r==="vertical"?n:e;if(d=c-t-l,d>0){o=u.getLayout()[i]-d,r==="vertical"?u.setLayout({x:o},!0):u.setLayout({y:o},!0),c=o;for(var v=g-2;v>=0;--v)u=s[v],d=u.getLayout()[i]+u.getLayout()[p]+t-c,d>0&&(o=u.getLayout()[i]-d,r==="vertical"?u.setLayout({x:o},!0):u.setLayout({y:o},!0)),c=u.getLayout()[i]}})}function sa(a,t,e){x(a.slice().reverse(),function(n){x(n,function(r){if(r.outEdges.length){var i=M(r.outEdges,ua,e)/M(r.outEdges,J);if(isNaN(i)){var s=r.outEdges.length;i=s?M(r.outEdges,la,e)/s:0}if(e==="vertical"){var o=r.getLayout().x+(i-b(r,e))*t;r.setLayout({x:o},!0)}else{var u=r.getLayout().y+(i-b(r,e))*t;r.setLayout({y:u},!0)}}})})}function ua(a,t){return b(a.node2,t)*a.getValue()}function la(a,t){return b(a.node2,t)}function ca(a,t){return b(a.node1,t)*a.getValue()}function da(a,t){return b(a.node1,t)}function b(a,t){return t==="vertical"?a.getLayout().x+a.getLayout().dx/2:a.getLayout().y+a.getLayout().dy/2}function J(a){return a.getValue()}function M(a,t,e){for(var n=0,r=a.length,i=-1;++is&&(s=u)}),x(n,function(o){var u=new Be({type:"color",mappingMethod:"linear",dataExtent:[i,s],visual:t.get("color")}),d=u.mapValueToVisual(o.getLayout().value),c=o.getModel().get(["itemStyle","color"]);c!=null?(o.setVisual("color",c),o.setVisual("style",{fill:c})):(o.setVisual("color",d),o.setVisual("style",{fill:d}))})}r.length&&x(r,function(o){var u=o.getModel().get("lineStyle");o.setVisual("style",u)})})}function va(a){a.registerChartView(Ue),a.registerSeriesModel(qe),a.registerLayout(Ke),a.registerVisual(ha),a.registerAction({type:"dragNode",event:"dragnode",update:"update"},function(t,e){e.eachComponent({mainType:"series",subType:"sankey",query:t},function(n){n.setNodePosition(t.dataIndex,[t.localX,t.localY])})})}const pa=$t({__name:"SankeyChart",props:{class:{},data:{}},setup(a){const t=a;Ee([va,Me]);const e=H(()=>t.class),n=H(()=>({animation:!1,series:{type:"sankey",label:{formatter:"{b}",textBorderWidth:0,fontWeight:"var(--font-weight-l)",fontFamily:"var(--font-family)",color:"var(--chart-label)"},lineStyle:{color:"source",curveness:.5},nodeGap:10,nodeWidth:7,left:0,right:0,links:t.data.links,data:t.data.labels.map(r=>({name:r.name,id:r.id,itemStyle:{color:r.color},label:r.align==="left"?{align:"right",padding:[0,20,0,0]}:void 0})),silent:!0}}));return(r,i)=>(gt(),ht(we,{class:Pt([r.$style.sankeyChart,e.value]),options:n.value},null,8,["class","options"]))}}),ya="s_",ma={sankeyChart:ya},xa={$style:ma},Ia=Rt(pa,[["__cssModules",xa]]),La=$t({__name:"DistributionChart",props:{class:{}},setup(a){const t=a,e=H(()=>t.class),{state:n}=Jt(),{n:r}=Qt(),i=H(()=>{const o=w(U(n.income)),u=w(U(n.expenses));return!o||!u}),s=H(()=>{const o=l=>r(l,"currency"),u=w(U(n.income)),d=w(U(n.expenses)),c=[],g=[],p=l=>`hsl(${l}, var(--chart-generic-saturation), var(--chart-generic-lightness))`,v={id:te(),name:`Income (${o(u)})`,color:p(120)};c.push(v);for(const l of n.income){const f=w(l.budgets.flatMap(h=>h.values));c.push({id:l.id,name:`${l.name} (${o(f)})`,color:p(60+60*(f/u))}),g.push({target:v.id,source:l.id,value:f});for(let h=0;hh.values));c.push({id:l.id,name:`${l.name} (${o(f)})`,color:p(60*(1-f/d))}),g.push({target:l.id,source:v.id,value:f});for(let h=0;hi.value?(gt(),ht(ee,{key:0})):(gt(),ht(Ia,{key:1,class:Pt([o.$style.distributionChart,e.value]),data:s.value},null,8,["class","data"]))}}),Va="M",Da={distributionChart:Va},Sa={$style:Da},Ca=Rt(La,[["__cssModules",Sa]]);export{Ca as default}; +import{d as $t,c as F,o as gt,i as ht,n as Pt,_ as Rt,f as Jt,e as Qt,B as w,a4 as te}from"./index-635eac34.js";import{C as ee}from"./ChartPlaceholder-743c445d.js";import{e as x,c as st,d as Bt,f as ae,m as ne,g as Ft,k as Ht,h as re,j as St,l as H,n as vt,o as pt,p as ut,s as lt,q as X,r as ie,t as oe,v as ct,x as se,y as Xt,z as Et,A as K,B as wt,C as ue,D as le,E as ce,F as de,G as fe,S as Mt,H as xt,I as ge,J as he,P as ve,K as bt,L as kt,M as _t,N as pe,O as Tt,Q as At,R as Yt,T as ye,U as me,V as xe,W as Ie,X as Ct,Y as Le,Z as Ve,$ as De,a0 as Se,u as Ee,_ as we,b as Me}from"./EChart.vue_vue_type_script_setup_true_lang-b09f4fbe.js";import{t as U}from"./budgets-531db56b.js";import"./Icon-f54aec6a.js";import"./useResizeObserver-3dd0959b.js";var V=ne();function be(a){var t=a.mainData,e=a.datas;e||(e={main:t},a.datasAttr={main:"data"}),a.datas=a.mainData=null,jt(t,e,a),x(e,function(n){x(t.TRANSFERABLE_METHODS,function(r){n.wrapMethod(r,st(ke,a))})}),t.wrapMethod("cloneShallow",st(Te,a)),x(t.CHANGABLE_METHODS,function(n){t.wrapMethod(n,st(_e,a))}),Bt(e[t.dataType]===t)}function ke(a,t){if(Ge(this)){var e=ae({},V(this).datas);e[this.dataType]=t,jt(t,e,a)}else It(t,this.dataType,V(this).mainData,a);return t}function _e(a,t){return a.struct&&a.struct.update(),t}function Te(a,t){return x(V(t).datas,function(e,n){e!==t&&It(e.cloneShallow(),n,t,a)}),t}function Ae(a){var t=V(this).mainData;return a==null||t==null?t:V(t).datas[a]}function Ce(){var a=V(this).mainData;return a==null?[{data:a}]:Ft(Ht(V(a).datas),function(t){return{type:t,data:V(a).datas[t]}})}function Ge(a){return V(a).mainData===a}function jt(a,t,e){V(a).datas={},x(t,function(n,r){It(n,r,a,e)})}function It(a,t,e,n){V(e).datas[t]=a,V(a).mainData=e,a.dataType=t,n.struct&&(a[n.structAttr]=n.struct,n.struct[n.datasAttr[t]]=a),a.getLinkedData=Ae,a.getLinkedDataAll=Ce}var Y=x,ze=H,Z=-1,Lt=function(){function a(t){var e=t.mappingMethod,n=t.type,r=this.option=re(t);this.type=n,this.mappingMethod=e,this._normalizeData=Re[e];var i=a.visualHandlers[n];this.applyVisual=i.applyVisual,this.getColorMapper=i.getColorMapper,this._normalizedToVisual=i._normalizedToVisual[e],e==="piecewise"?(dt(r),$e(r)):e==="category"?r.categories?Pe(r):dt(r,!0):(Bt(e!=="linear"||r.dataExtent),dt(r))}return a.prototype.mapValueToVisual=function(t){var e=this._normalizeData(t);return this._normalizedToVisual(e,t)},a.prototype.getNormalizer=function(){return St(this._normalizeData,this)},a.listVisualTypes=function(){return Ht(a.visualHandlers)},a.isValidType=function(t){return a.visualHandlers.hasOwnProperty(t)},a.eachVisual=function(t,e,n){H(t)?x(t,e,n):e.call(n,t)},a.mapVisual=function(t,e,n){var r,i=vt(t)?[]:H(t)?{}:(r=!0,null);return a.eachVisual(t,function(s,o){var u=e.call(n,s,o);r?i=u:i[o]=u}),i},a.retrieveVisuals=function(t){var e={},n;return t&&Y(a.visualHandlers,function(r,i){t.hasOwnProperty(i)&&(e[i]=t[i],n=!0)}),n?e:null},a.prepareVisualTypes=function(t){if(vt(t))t=t.slice();else if(ze(t)){var e=[];Y(t,function(n,r){e.push(r)}),t=e}else return[];return t.sort(function(n,r){return r==="color"&&n!=="color"&&n.indexOf("color")===0?1:-1}),t},a.dependsOn=function(t,e){return e==="color"?!!(t&&t.indexOf(e)===0):t===e},a.findPieceIndex=function(t,e,n){for(var r,i=1/0,s=0,o=e.length;s=0;i--)n[i]==null&&(delete e[t[i]],t.pop())}function dt(a,t){var e=a.visual,n=[];H(e)?Y(e,function(i){n.push(i)}):e!=null&&n.push(e);var r={color:1,symbol:1};!t&&n.length===1&&!r.hasOwnProperty(a.type)&&(n[1]=n[0]),Ot(a,n)}function W(a){return{applyVisual:function(t,e,n){var r=this.mapValueToVisual(t);n("color",a(e("color"),r))},_normalizedToVisual:yt([0,1])}}function Gt(a){var t=this.option.visual;return t[Math.round(X(a,[0,1],[0,t.length-1],!0))]||{}}function R(a){return function(t,e,n){n(a,this.mapValueToVisual(t))}}function B(a){var t=this.option.visual;return t[this.option.loop&&a!==Z?a%t.length:a]}function k(){return this.option.visual[0]}function yt(a){return{linear:function(t){return X(t,a,this.option.visual,!0)},category:B,piecewise:function(t,e){var n=mt.call(this,e);return n==null&&(n=X(t,a,this.option.visual,!0)),n},fixed:k}}function mt(a){var t=this.option,e=t.pieceList;if(t.hasSpecialVisual){var n=Lt.findPieceIndex(a,e),r=e[n];if(r&&r.visual)return r.visual[this.type]}}function Ot(a,t){return a.visual=t,a.type==="color"&&(a.parsedVisual=Ft(t,function(e){var n=ie(e);return n||[0,0,0,1]})),t}var Re={linear:function(a){return X(a,this.option.dataExtent,[0,1],!0)},piecewise:function(a){var t=this.option.pieceList,e=Lt.findPieceIndex(a,t,!0);if(e!=null)return X(e,[0,t.length-1],[0,1],!0)},category:function(a){var t=this.option.categories?this.option.categoryMap[a]:a;return t??Z},fixed:oe};function q(a,t,e){return a?t<=e:t=0&&t.call(e,n[i],i)},a.prototype.eachEdge=function(t,e){for(var n=this.edges,r=n.length,i=0;i=0&&n[i].node1.dataIndex>=0&&n[i].node2.dataIndex>=0&&t.call(e,n[i],i)},a.prototype.breadthFirstTraverse=function(t,e,n,r){if(e instanceof _||(e=this._nodesMap[$(e)]),!!e){for(var i=n==="out"?"outEdges":n==="in"?"inEdges":"edges",s=0;s=0&&u.node2.dataIndex>=0});for(var i=0,s=r.length;i=0&&this[a][t].setItemVisual(this.dataIndex,e,n)},getVisual:function(e){return this[a][t].getItemVisual(this.dataIndex,e)},setLayout:function(e,n){this.dataIndex>=0&&this[a][t].setItemLayout(this.dataIndex,e,n)},getLayout:function(){return this[a][t].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[a][t].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[a][t].getRawIndex(this.dataIndex)}}}Xt(_,Ut("hostGraph","data"));Xt(Nt,Ut("hostGraph","edgeData"));const He=Fe;function Xe(a,t,e,n,r){for(var i=new He(n),s=0;s "+p)),d++)}var v=e.get("coordinateSystem"),l;if(v==="cartesian2d"||v==="polar")l=le(a,e);else{var f=ce.get(v),h=f?f.dimensions||[]:[];de(h,"value")<0&&h.concat(["value"]);var y=fe(a,{coordDimensions:h,encodeDefine:e.getEncode()}).dimensions;l=new Mt(y,e),l.initData(a)}var m=new Mt(["value"],e);return m.initData(u,o),r&&r(l,m),be({mainData:l,struct:i,structAttr:"graph",datas:{node:l,edge:m},datasAttr:{node:"data",edge:"edgeData"}}),i.update(),i}var Ye=function(){function a(){this.x1=0,this.y1=0,this.x2=0,this.y2=0,this.cpx1=0,this.cpy1=0,this.cpx2=0,this.cpy2=0,this.extent=0}return a}(),je=function(a){xt(t,a);function t(e){return a.call(this,e)||this}return t.prototype.getDefaultShape=function(){return new Ye},t.prototype.buildPath=function(e,n){var r=n.extent;e.moveTo(n.x1,n.y1),e.bezierCurveTo(n.cpx1,n.cpy1,n.cpx2,n.cpy2,n.x2,n.y2),n.orient==="vertical"?(e.lineTo(n.x2+r,n.y2),e.bezierCurveTo(n.cpx2+r,n.cpy2,n.cpx1+r,n.cpy1,n.x1+r,n.y1)):(e.lineTo(n.x2,n.y2+r),e.bezierCurveTo(n.cpx2,n.cpy2+r,n.cpx1,n.cpy1+r,n.x1,n.y1+r)),e.closePath()},t.prototype.highlight=function(){ge(this)},t.prototype.downplay=function(){he(this)},t}(ve),Oe=function(a){xt(t,a);function t(){var e=a!==null&&a.apply(this,arguments)||this;return e.type=t.type,e._focusAdjacencyDisabled=!1,e}return t.prototype.render=function(e,n,r){var i=this,s=e.getGraph(),o=this.group,u=e.layoutInfo,d=u.width,c=u.height,g=e.getData(),p=e.getData("edge"),v=e.get("orient");this._model=e,o.removeAll(),o.x=u.x,o.y=u.y,s.eachEdge(function(l){var f=new je,h=bt(f);h.dataIndex=l.dataIndex,h.seriesIndex=e.seriesIndex,h.dataType="edge";var y=l.getModel(),m=y.getModel("lineStyle"),I=m.get("curveness"),L=l.node1.getLayout(),D=l.node1.getModel(),E=D.get("localX"),S=D.get("localY"),T=l.node2.getLayout(),Vt=l.node2.getModel(),j=Vt.get("localX"),O=Vt.get("localY"),P=l.getLayout(),A,C,G,z,Q,tt,et,at;f.shape.extent=Math.max(1,P.dy),f.shape.orient=v,v==="vertical"?(A=(E!=null?E*d:L.x)+P.sy,C=(S!=null?S*c:L.y)+L.dy,G=(j!=null?j*d:T.x)+P.ty,z=O!=null?O*c:T.y,Q=A,tt=C*(1-I)+z*I,et=G,at=C*I+z*(1-I)):(A=(E!=null?E*d:L.x)+L.dx,C=(S!=null?S*c:L.y)+P.sy,G=j!=null?j*d:T.x,z=(O!=null?O*c:T.y)+P.ty,Q=A*(1-I)+G*I,tt=C,et=A*I+G*(1-I),at=z),f.setShape({x1:A,y1:C,x2:G,y2:z,cpx1:Q,cpy1:tt,cpx2:et,cpy2:at}),f.useStyle(m.getItemStyle()),zt(f.style,v,l);var Dt=""+y.get("value"),nt=kt(y,"edgeLabel");_t(f,nt,{labelFetcher:{getFormattedLabel:function(ot,N,Ea,qt,Kt,Zt){return e.getFormattedLabel(ot,N,"edge",qt,pe(Kt,nt.normal&&nt.normal.get("formatter"),Dt),Zt)}},labelDataIndex:l.dataIndex,defaultText:Dt}),f.setTextConfig({position:"inside"});var rt=y.getModel("emphasis");Tt(f,y,"lineStyle",function(ot){var N=ot.getItemStyle();return zt(N,v,l),N}),o.add(f),p.setItemGraphicEl(l.dataIndex,f);var it=rt.get("focus");At(f,it==="adjacency"?l.getAdjacentDataIndices():it==="trajectory"?l.getTrajectoryDataIndices():it,rt.get("blurScope"),rt.get("disabled"))}),s.eachNode(function(l){var f=l.getLayout(),h=l.getModel(),y=h.get("localX"),m=h.get("localY"),I=h.getModel("emphasis"),L=new Yt({shape:{x:y!=null?y*d:f.x,y:m!=null?m*c:f.y,width:f.dx,height:f.dy},style:h.getModel("itemStyle").getItemStyle(),z2:10});_t(L,kt(h),{labelFetcher:{getFormattedLabel:function(E,S){return e.getFormattedLabel(E,S,"node")}},labelDataIndex:l.dataIndex,defaultText:l.id}),L.disableLabelAnimation=!0,L.setStyle("fill",l.getVisual("color")),L.setStyle("decal",l.getVisual("style").decal),Tt(L,h),o.add(L),g.setItemGraphicEl(l.dataIndex,L),bt(L).dataType="node";var D=I.get("focus");At(L,D==="adjacency"?l.getAdjacentDataIndices():D==="trajectory"?l.getTrajectoryDataIndices():D,I.get("blurScope"),I.get("disabled"))}),g.eachItemGraphicEl(function(l,f){var h=g.getItemModel(f);h.get("draggable")&&(l.drift=function(y,m){i._focusAdjacencyDisabled=!0,this.shape.x+=y,this.shape.y+=m,this.dirty(),r.dispatchAction({type:"dragNode",seriesId:e.id,dataIndex:g.getRawIndex(f),localX:this.shape.x/d,localY:this.shape.y/c})},l.ondragend=function(){i._focusAdjacencyDisabled=!1},l.draggable=!0,l.cursor="move")}),!this._data&&e.isAnimationEnabled()&&o.setClipPath(Ne(o.getBoundingRect(),e,function(){o.removeClipPath()})),this._data=e.getData()},t.prototype.dispose=function(){},t.type="sankey",t}(ye);function zt(a,t,e){switch(a.fill){case"source":a.fill=e.node1.getVisual("color"),a.decal=e.node1.getVisual("style").decal;break;case"target":a.fill=e.node2.getVisual("color"),a.decal=e.node2.getVisual("style").decal;break;case"gradient":var n=e.node1.getVisual("color"),r=e.node2.getVisual("color");pt(n)&&pt(r)&&(a.fill=new me(0,0,+(t==="horizontal"),+(t==="vertical"),[{color:n,offset:0},{color:r,offset:1}]))}}function Ne(a,t,e){var n=new Yt({shape:{x:a.x-10,y:a.y-10,width:0,height:a.height+20}});return xe(n,{shape:{width:a.width+20}},t,e),n}const Ue=Oe;var We=function(a){xt(t,a);function t(){var e=a!==null&&a.apply(this,arguments)||this;return e.type=t.type,e}return t.prototype.getInitialData=function(e,n){var r=e.edges||e.links,i=e.data||e.nodes,s=e.levels;this.levelModels=[];for(var o=this.levelModels,u=0;u=0&&(o[s[u].depth]=new Ie(s[u],this,n));if(i&&r){var d=Xe(i,r,this,!0,c);return d.data}function c(g,p){g.wrapMethod("getItemModel",function(v,l){var f=v.parentModel,h=f.getData().getItemLayout(l);if(h){var y=h.depth,m=f.levelModels[y];m&&(v.parentModel=m)}return v}),p.wrapMethod("getItemModel",function(v,l){var f=v.parentModel,h=f.getGraph().getEdgeByIndex(l),y=h.node1.getLayout();if(y){var m=y.depth,I=f.levelModels[m];I&&(v.parentModel=I)}return v})}},t.prototype.setNodePosition=function(e,n){var r=this.option.data||this.option.nodes,i=r[e];i.localX=n[0],i.localY=n[1]},t.prototype.getGraph=function(){return this.getData().graph},t.prototype.getEdgeData=function(){return this.getGraph().edgeData},t.prototype.formatTooltip=function(e,n,r){function i(v){return isNaN(v)||v==null}if(r==="edge"){var s=this.getDataParams(e,r),o=s.data,u=s.value,d=o.source+" -- "+o.target;return Ct("nameValue",{name:d,value:u,noValue:i(u)})}else{var c=this.getGraph().getNodeByIndex(e),g=c.getLayout().value,p=this.getDataParams(e,r).data.name;return Ct("nameValue",{name:p!=null?p+"":null,value:g,noValue:i(g)})}},t.prototype.optionUpdated=function(){},t.prototype.getDataParams=function(e,n){var r=a.prototype.getDataParams.call(this,e,n);if(r.value==null&&n==="node"){var i=this.getGraph().getNodeByIndex(e),s=i.getLayout().value;r.value=s}return r},t.type="series.sankey",t.defaultOption={z:2,coordinateSystem:"view",left:"5%",top:"5%",right:"20%",bottom:"5%",orient:"horizontal",nodeWidth:20,nodeGap:8,draggable:!0,layoutIterations:32,label:{show:!0,position:"right",fontSize:12},edgeLabel:{show:!1,fontSize:12},levels:[],nodeAlign:"justify",lineStyle:{color:"#314656",opacity:.2,curveness:.5},emphasis:{label:{show:!0},lineStyle:{opacity:.5}},select:{itemStyle:{borderColor:"#212121"}},animationEasing:"linear",animationDuration:1e3},t}(Le);const qe=We;function Ke(a,t){a.eachSeriesByType("sankey",function(e){var n=e.get("nodeWidth"),r=e.get("nodeGap"),i=Ze(e,t);e.layoutInfo=i;var s=i.width,o=i.height,u=e.getGraph(),d=u.nodes,c=u.edges;Qe(d);var g=Ve(d,function(f){return f.getLayout().value===0}),p=g.length!==0?0:e.get("layoutIterations"),v=e.get("orient"),l=e.get("nodeAlign");Je(d,c,n,r,s,o,p,v,l)})}function Ze(a,t){return De(a.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()})}function Je(a,t,e,n,r,i,s,o,u){ta(a,t,e,r,i,o,u),ra(a,t,i,r,n,s,o),ga(a,o)}function Qe(a){x(a,function(t){var e=M(t.outEdges,J),n=M(t.inEdges,J),r=t.getValue()||0,i=Math.max(e,n,r);t.setLayout({value:i},!0)})}function ta(a,t,e,n,r,i,s){for(var o=[],u=[],d=[],c=[],g=0,p=0;p=0;y&&h.depth>v&&(v=h.depth),f.setLayout({depth:y?h.depth:g},!0),i==="vertical"?f.setLayout({dy:e},!0):f.setLayout({dx:e},!0);for(var m=0;mg-1?v:g-1;s&&s!=="left"&&ea(a,s,i,S);var T=i==="vertical"?(r-e)/S:(n-e)/S;na(a,T,i)}function Wt(a){var t=a.hostGraph.data.getRawDataItem(a.dataIndex);return t.depth!=null&&t.depth>=0}function ea(a,t,e,n){if(t==="right"){for(var r=[],i=a,s=0;i.length;){for(var o=0;o0;i--)u*=.99,sa(o,u,s),ft(o,r,e,n,s),fa(o,u,s),ft(o,r,e,n,s)}function ia(a,t){var e=[],n=t==="vertical"?"y":"x",r=Se(a,function(i){return i.getLayout()[n]});return r.keys.sort(function(i,s){return i-s}),x(r.keys,function(i){e.push(r.buckets.get(i))}),e}function oa(a,t,e,n,r,i){var s=1/0;x(a,function(o){var u=o.length,d=0;x(o,function(g){d+=g.getLayout().value});var c=i==="vertical"?(n-(u-1)*r)/d:(e-(u-1)*r)/d;c0&&(o=u.getLayout()[i]+d,r==="vertical"?u.setLayout({x:o},!0):u.setLayout({y:o},!0)),c=u.getLayout()[i]+u.getLayout()[p]+t;var l=r==="vertical"?n:e;if(d=c-t-l,d>0){o=u.getLayout()[i]-d,r==="vertical"?u.setLayout({x:o},!0):u.setLayout({y:o},!0),c=o;for(var v=g-2;v>=0;--v)u=s[v],d=u.getLayout()[i]+u.getLayout()[p]+t-c,d>0&&(o=u.getLayout()[i]-d,r==="vertical"?u.setLayout({x:o},!0):u.setLayout({y:o},!0)),c=u.getLayout()[i]}})}function sa(a,t,e){x(a.slice().reverse(),function(n){x(n,function(r){if(r.outEdges.length){var i=M(r.outEdges,ua,e)/M(r.outEdges,J);if(isNaN(i)){var s=r.outEdges.length;i=s?M(r.outEdges,la,e)/s:0}if(e==="vertical"){var o=r.getLayout().x+(i-b(r,e))*t;r.setLayout({x:o},!0)}else{var u=r.getLayout().y+(i-b(r,e))*t;r.setLayout({y:u},!0)}}})})}function ua(a,t){return b(a.node2,t)*a.getValue()}function la(a,t){return b(a.node2,t)}function ca(a,t){return b(a.node1,t)*a.getValue()}function da(a,t){return b(a.node1,t)}function b(a,t){return t==="vertical"?a.getLayout().x+a.getLayout().dx/2:a.getLayout().y+a.getLayout().dy/2}function J(a){return a.getValue()}function M(a,t,e){for(var n=0,r=a.length,i=-1;++is&&(s=u)}),x(n,function(o){var u=new Be({type:"color",mappingMethod:"linear",dataExtent:[i,s],visual:t.get("color")}),d=u.mapValueToVisual(o.getLayout().value),c=o.getModel().get(["itemStyle","color"]);c!=null?(o.setVisual("color",c),o.setVisual("style",{fill:c})):(o.setVisual("color",d),o.setVisual("style",{fill:d}))})}r.length&&x(r,function(o){var u=o.getModel().get("lineStyle");o.setVisual("style",u)})})}function va(a){a.registerChartView(Ue),a.registerSeriesModel(qe),a.registerLayout(Ke),a.registerVisual(ha),a.registerAction({type:"dragNode",event:"dragnode",update:"update"},function(t,e){e.eachComponent({mainType:"series",subType:"sankey",query:t},function(n){n.setNodePosition(t.dataIndex,[t.localX,t.localY])})})}const pa=$t({__name:"SankeyChart",props:{class:{},data:{}},setup(a){const t=a;Ee([va,Me]);const e=F(()=>t.class),n=F(()=>({animation:!1,series:{type:"sankey",label:{formatter:"{b}",textBorderWidth:0,fontWeight:"var(--font-weight-l)",fontFamily:"var(--font-family)",color:"var(--chart-label)"},lineStyle:{color:"source",curveness:.5},nodeGap:10,nodeWidth:7,left:0,right:0,links:t.data.links,data:t.data.labels.map(r=>({name:r.name,id:r.id,itemStyle:{color:r.color},label:r.align==="left"?{align:"right",padding:[0,20,0,0]}:void 0})),silent:!0}}));return(r,i)=>(gt(),ht(we,{class:Pt([r.$style.sankeyChart,e.value]),options:n.value},null,8,["class","options"]))}}),ya="F_",ma={sankeyChart:ya},xa={$style:ma},Ia=Rt(pa,[["__cssModules",xa]]),La=$t({__name:"DistributionChart",props:{class:{}},setup(a){const t=a,e=F(()=>t.class),{state:n}=Jt(),{n:r}=Qt(),i=F(()=>{const o=w(U(n.income)),u=w(U(n.expenses));return!o||!u}),s=F(()=>{const o=l=>r(l,"currency"),u=w(U(n.income)),d=w(U(n.expenses)),c=[],g=[],p=l=>`hsl(${l}, var(--chart-generic-saturation), var(--chart-generic-lightness))`,v={id:te(),name:`Income (${o(u)})`,color:p(120)};c.push(v);for(const l of n.income){const f=w(l.budgets.flatMap(h=>h.values));c.push({id:l.id,name:`${l.name} (${o(f)})`,color:p(60+60*(f/u))}),g.push({target:v.id,source:l.id,value:f});for(let h=0;hh.values));c.push({id:l.id,name:`${l.name} (${o(f)})`,color:p(60*(1-f/d))}),g.push({target:l.id,source:v.id,value:f});for(let h=0;hi.value?(gt(),ht(ee,{key:0})):(gt(),ht(Ia,{key:1,class:Pt([o.$style.distributionChart,e.value]),data:s.value},null,8,["class","data"]))}}),Va="c",Da={distributionChart:Va},Sa={$style:Da},Ca=Rt(La,[["__cssModules",Sa]]);export{Ca as default}; diff --git a/assets/EChart.vue_vue_type_script_setup_true_lang-e0bf0237.js b/assets/EChart.vue_vue_type_script_setup_true_lang-b09f4fbe.js similarity index 99% rename from assets/EChart.vue_vue_type_script_setup_true_lang-e0bf0237.js rename to assets/EChart.vue_vue_type_script_setup_true_lang-b09f4fbe.js index 9d546b9b..81ca50d7 100644 --- a/assets/EChart.vue_vue_type_script_setup_true_lang-e0bf0237.js +++ b/assets/EChart.vue_vue_type_script_setup_true_lang-b09f4fbe.js @@ -1,4 +1,4 @@ -import{u as Yy}from"./useResizeObserver-9c83b660.js";import{d as Xy,c as Zy,x as qy,I as Ky,N as Ho,Q as Qy,T as Jy,o as jy,a as t0,n as e0}from"./index-1bee1cb1.js";/*! ***************************************************************************** +import{u as Yy}from"./useResizeObserver-3dd0959b.js";import{d as Xy,c as Zy,x as qy,I as Ky,N as Ho,Q as Qy,T as Jy,o as jy,a as t0,n as e0}from"./index-635eac34.js";/*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any diff --git a/assets/Expenses-2101cb61.js b/assets/Expenses-2101cb61.js new file mode 100644 index 00000000..070c5180 --- /dev/null +++ b/assets/Expenses-2101cb61.js @@ -0,0 +1 @@ +import{d as t,e as o,o as r,i as p,k as s}from"./index-635eac34.js";import{B as n}from"./BudgetPane-3f0100ab.js";import"./EChart.vue_vue_type_script_setup_true_lang-b09f4fbe.js";import"./useResizeObserver-3dd0959b.js";import"./budgets-531db56b.js";import"./Pane-ff6685ec.js";import"./Currency-532cc709.js";import"./Button-1ed056c9.js";import"./Icon-f54aec6a.js";import"./useThemeStyles-349ce8f2.js";import"./useMonthNames-a81a4bd7.js";const g=t({__name:"Expenses",setup(i){const{t:e}=o();return(m,a)=>(r(),p(n,{title:s(e)("dashboard.expenses"),type:"expenses"},null,8,["title"]))}});export{g as default}; diff --git a/assets/Expenses-493c1a39.js b/assets/Expenses-493c1a39.js deleted file mode 100644 index a8d80b21..00000000 --- a/assets/Expenses-493c1a39.js +++ /dev/null @@ -1 +0,0 @@ -import{d as t,e as o,o as r,i as p,k as s}from"./index-1bee1cb1.js";import{B as n}from"./BudgetPane-21b65ecf.js";import"./EChart.vue_vue_type_script_setup_true_lang-e0bf0237.js";import"./useResizeObserver-9c83b660.js";import"./budgets-531db56b.js";import"./Pane-ff954356.js";import"./Currency-e1b802bf.js";import"./Button-6d17a4fd.js";import"./Icon-3e6d397d.js";import"./useThemeStyles-0768f685.js";import"./useMonthNames-09c7e203.js";const g=t({__name:"Expenses",setup(i){const{t:e}=o();return(m,a)=>(r(),p(n,{title:s(e)("dashboard.expenses"),type:"expenses"},null,8,["title"]))}});export{g as default}; diff --git a/assets/Frame-0a0b5638.css b/assets/Frame-0a0b5638.css deleted file mode 100644 index 95517dfe..00000000 --- a/assets/Frame-0a0b5638.css +++ /dev/null @@ -1 +0,0 @@ -.k_{display:flex}.qb{display:flex;width:100%}.rb{all:unset;width:100%;display:flex;align-items:center;cursor:pointer;font-size:var(--font-size-xs);padding:6px 12px;transition:color var(--transition-s),background var(--transition-s);color:var(--context-menu-item-color);position:relative}.rb .sb{width:12px;height:12px;margin-right:8px}.rb.tb{padding-left:32px}.rb:hover,.rb.ub{color:var(--context-menu-item-color-hover)}.rb:hover{background:var(--context-menu-item-background-hover)}.L_{display:flex}.M_{all:unset;display:flex}.N_{display:flex;position:absolute;pointer-events:none;z-index:1}.N_.O_{pointer-events:all}.N_.O_ .P_{visibility:visible;opacity:1;transform:none}.P_{list-style:none outside none;display:flex;flex-direction:column;align-items:flex-end;-webkit-backdrop-filter:var(--context-menu-backdrop);backdrop-filter:var(--context-menu-backdrop);box-shadow:var(--context-menu-shadow);border-radius:var(--border-radius-m);padding:6px 0;max-height:130px;overflow:auto;visibility:hidden;opacity:0;transition:all var(--transition-s)}.P_.Q_{transform:translateY(6px)}.P_.R_{transform:translateY(-6px)}.P_.S_{transform:translate(6px)}.P_.T_{transform:translate(-6px)}.Fb{position:fixed;inset:0 0 0 0;display:flex;align-items:center;justify-content:center;background:transparent;width:100%;height:100%;max-width:100%;max-height:100%;border:none}.Fb,.Fb[open]::backdrop{visibility:hidden;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);opacity:0;transition:visibility 0s var(--transition-m),opacity var(--transition-m)}.Fb[open].Gb,.Fb[open].Gb::backdrop{transition-delay:0s}.Fb[open].Gb,.Fb[open].Gb::backdrop{opacity:1;visibility:visible}.Hb{background:var(--dialog-background);color:var(--theme-text);padding:10px 13px;border-radius:var(--border-radius-l);box-shadow:var(--dialog-box-shadow)}.Db{display:inline-flex;flex-direction:column;flex-shrink:0;padding:5px}.Eb{position:fixed;visibility:hidden}.Ib{display:flex;width:calc(var(--02918378) * 1px);height:calc(var(--35cff1b5) * 1px);transition:all var(--transition-m);overflow:hidden}.Ib>*:first-child{transition:all var(--transition-m);margin-left:calc(var(--98193572) * -1px)}.Lb{all:unset;display:flex;align-items:center;background:var(--input-field-background);padding:10px 15px;border-radius:var(--border-radius-m);cursor:pointer;border:1px dashed var(--input-field-border);transition:var(--input-field-transition);overflow:hidden}.Lb .Mb{height:15px;width:auto;margin-right:10px}.Lb .Nb{font-size:var(--input-field-font-size);font-weight:var(--font-weight-m);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.Lb:hover{border:1px dashed var(--input-field-hover-border);background:var(--input-field-hover-background)}.Lb:focus{border:1px dashed var(--input-field-focus-border);background:var(--input-field-focus-background);box-shadow:var(--input-field-focus-box-shadow)}.Lb.Ob .Nb{color:var(--input-field-placeholder)}.Jb{display:flex;flex-direction:column}.Kb{display:flex;align-items:center;font-size:var(--font-size-s);font-weight:var(--font-weight-m);margin-bottom:10px}.zb{display:flex;flex-direction:column;align-items:flex-end;grid-gap:10px}.Ab{width:250px}.Bb{display:flex;flex-direction:column;align-items:flex-end;grid-gap:10px}.Cb{width:250px}.jb{display:flex;flex-direction:column;grid-gap:15px}.jb .kb{font-size:var(--font-size-s);font-weight:var(--font-weight-m)}.G{display:flex;height:100%;width:100%}.H{overflow:hidden;height:100%;width:100%}.I{display:flex;height:100%;flex-direction:column;border-right:1px solid var(--app-border);padding:15px 10px;grid-gap:15px}.I .J{margin-top:auto}.I .K{width:100%;height:1px;background:var(--app-border)}.I .L{display:flex;align-items:center;justify-content:center}@media all and (max-width: 786px){.G{flex-direction:column-reverse}.H{height:auto;flex-grow:1}.I{border:none;border-top:1px solid var(--app-border);align-items:center;margin-top:0;justify-content:space-evenly;flex-direction:row-reverse;height:auto}.I .K{display:none}} diff --git a/assets/Frame-66c00bc5.css b/assets/Frame-66c00bc5.css new file mode 100644 index 00000000..ccb22219 --- /dev/null +++ b/assets/Frame-66c00bc5.css @@ -0,0 +1 @@ +.k_{display:flex}.xb{display:flex;width:100%}.yb{all:unset;width:100%;display:flex;align-items:center;cursor:pointer;font-size:var(--font-size-xs);padding:6px 12px;transition:color var(--transition-s),background var(--transition-s);color:var(--context-menu-item-color);position:relative}.yb .zb{width:12px;height:12px;margin-right:8px}.yb.Ab{padding-left:32px}.yb:hover,.yb.Bb{color:var(--context-menu-item-color-hover)}.yb:hover{background:var(--context-menu-item-background-hover)}.S_{display:flex}.T_{all:unset;display:flex}.U_{display:flex;position:absolute;pointer-events:none;z-index:1}.U_.V_{pointer-events:all}.U_.V_ .W_{visibility:visible;opacity:1;transform:none}.W_{list-style:none outside none;display:flex;flex-direction:column;align-items:flex-end;-webkit-backdrop-filter:var(--context-menu-backdrop);backdrop-filter:var(--context-menu-backdrop);box-shadow:var(--context-menu-shadow);border-radius:var(--border-radius-m);padding:6px 0;max-height:130px;overflow:auto;visibility:hidden;opacity:0;transition:all var(--transition-s)}.W_.X_{transform:translateY(6px)}.W_.Y_{transform:translateY(-6px)}.W_.Z_{transform:translate(6px)}.W_._b{transform:translate(-6px)}.Gb{position:fixed;inset:0 0 0 0;display:flex;align-items:center;justify-content:center;background:transparent;width:100%;height:100%;max-width:100%;max-height:100%;border:none}.Gb,.Gb[open]::backdrop{visibility:hidden;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);opacity:0;transition:visibility 0s var(--transition-m),opacity var(--transition-m)}.Gb[open].Hb,.Gb[open].Hb::backdrop{transition-delay:0s}.Gb[open].Hb,.Gb[open].Hb::backdrop{opacity:1;visibility:visible}.Ib{background:var(--dialog-background);color:var(--theme-text);padding:10px 13px;border-radius:var(--border-radius-l);box-shadow:var(--dialog-box-shadow)}.tb{display:inline-flex;flex-direction:column;flex-shrink:0;padding:5px}.ub{position:fixed;visibility:hidden}.vb{display:flex;width:calc(var(--02918378) * 1px);height:calc(var(--35cff1b5) * 1px);transition:all var(--transition-m);overflow:hidden}.vb>*:first-child{transition:all var(--transition-m);margin-left:calc(var(--98193572) * -1px)}.Lb{all:unset;display:flex;align-items:center;background:var(--input-field-background);padding:10px 15px;border-radius:var(--border-radius-m);cursor:pointer;border:1px dashed var(--input-field-border);transition:var(--input-field-transition);overflow:hidden}.Lb .Mb{height:15px;width:auto;margin-right:10px}.Lb .Nb{font-size:var(--input-field-font-size);font-weight:var(--font-weight-m);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.Lb:hover{border:1px dashed var(--input-field-hover-border);background:var(--input-field-hover-background)}.Lb:focus{border:1px dashed var(--input-field-focus-border);background:var(--input-field-focus-background);box-shadow:var(--input-field-focus-box-shadow)}.Lb.Ob .Nb{color:var(--input-field-placeholder)}.Jb{display:flex;flex-direction:column}.Kb{display:flex;align-items:center;font-size:var(--font-size-s);font-weight:var(--font-weight-m);margin-bottom:10px}.pb{display:flex;flex-direction:column;align-items:flex-end;grid-gap:10px}.qb{width:250px}.rb{display:flex;flex-direction:column;align-items:flex-end;grid-gap:10px}.sb{width:250px}.M_{display:flex;flex-direction:column;grid-gap:15px}.M_ .N_{font-size:var(--font-size-s);font-weight:var(--font-weight-m)}.c_{display:flex;height:100%;width:100%}.d_{overflow:hidden;height:100%;width:100%}.e_{display:flex;height:100%;flex-direction:column;border-right:1px solid var(--app-border);padding:15px 10px;grid-gap:15px}.e_ .f_{margin-top:auto}.e_ .g_{width:100%;height:1px;background:var(--app-border)}.e_ .h_{display:flex;align-items:center;justify-content:center}@media all and (max-width: 786px){.c_{flex-direction:column-reverse}.d_{height:auto;flex-grow:1}.e_{border:none;border-top:1px solid var(--app-border);align-items:center;margin-top:0;justify-content:space-evenly;flex-direction:row-reverse;height:auto}.e_ .g_{display:none}} diff --git a/assets/Frame-c2dae572.js b/assets/Frame-a1d81a2f.js similarity index 70% rename from assets/Frame-c2dae572.js rename to assets/Frame-a1d81a2f.js index 15a2d4e6..17c272c8 100644 --- a/assets/Frame-c2dae572.js +++ b/assets/Frame-a1d81a2f.js @@ -1,15 +1,15 @@ -import{x as G,N as Ie,Q as Te,T as Ye,U as at,d as N,c as T,V as Je,o as w,i as j,n as b,_ as ie,R as Ze,e as ne,W as lt,X as ct,k,y as Be,Y as Xe,a as se,b as oe,p as _e,t as Fe,Z as et,$ as ut,a0 as pt,E as Se,F as Le,r as tt,a1 as dt,f as ke,w as he,l as I,a2 as ht,C as ft,u as mt,K as gt,a3 as _t,L as vt,M as yt,a4 as Ke,a5 as We,I as He,q as bt,D as qe,v as kt,g as Ct}from"./index-1bee1cb1.js";import{L as $t}from"./Link-2f976172.js";import{A as wt}from"./AnimatedRouterView-0f460d78.js";import{B as fe}from"./Button-6d17a4fd.js";import{I as Et}from"./Icon-3e6d397d.js";import{u as xt}from"./useResizeObserver-9c83b660.js";import{c as Mt}from"./_commonjsHelpers-725317a4.js";import"./useThemeStyles-0768f685.js";const Rt=g=>{const c=G([]),i=new MutationObserver(s=>{c.value=s});return Ie(g,s=>{i.disconnect(),s&&i.observe(s,{subtree:!0,childList:!0})}),c},Ot=g=>{const c=G(new DOMRect),i=Rt(g),s=xt(g);return Ie([i,s],()=>{const a=g.value;a&&(a.style.setProperty("position","fixed"),c.value=a.getBoundingClientRect(),a.style.removeProperty("position"))}),c},St=(g,c,i)=>{const s=document.createElement("a");s.style.display="none",document.body.appendChild(s);const r=new Blob([g],{type:i});s.href=URL.createObjectURL(r),s.download=c,s.click(),document.body.removeChild(s)},It=({accept:g,multiple:c}={})=>{const i=document.createElement("input");return document.body.appendChild(i),i.type="file",i.style.display="none",g&&(i.accept=g),c&&(i.multiple=c),new Promise((s,r)=>{i.onchange=()=>{const a=Array.from(i.files??[]);document.body.removeChild(i),a.length?s(c?a:a[0]):r()},i.click()})},st=(g,c)=>{const i=at(g),s=r=>{r.isTrusted&&i.every(a=>!a.value||!r.composedPath().includes(a.value))&&c(r)};Te(()=>window.addEventListener("click",s)),Ye(()=>window.removeEventListener("click",s))},At=N({__name:"CloudButton",props:{class:{}},setup(g){const c=g,i=T(()=>c.class),{login:s,state:r}=Je(),a=T(()=>{switch(r.status){case"syncing":return"refresh-line";case"idle":return"cloud-off-line"}return"cloud-line"}),l=T(()=>{switch(r.status){case"authenticated":return"success";case"loading":return"warning";case"idle":return"danger";case"syncing":return"primary"}return"danger"}),u=()=>{r.status==="idle"&&s()};return(n,h)=>(w(),j(fe,{class:b([n.$style.cloudButton,i.value]),textual:"",color:l.value,icon:a.value,onClick:u},null,8,["class","color","icon"]))}}),Dt={},Lt={$style:Dt},Tt=ie(At,[["__cssModules",Lt]]),Bt=N({__name:"ThemeButton",props:{class:{}},setup(g){const c=g,{state:i,setTheme:s}=Ze(),{t:r}=ne(),a=lt();let l=!1;const u=T(()=>i.appearance.theme==="light"?"sun-fill":"moon-fill"),n=T(()=>c.class),h=ct(),C=()=>{var te;const D=(te=h==null?void 0:h.vnode.el)==null?void 0:te.getBoundingClientRect(),x=D.left+D.width/2,$=D.top+D.height/2;return`${x}px ${$}px`},ee=()=>{if(l)return;l=!0;const D=i.appearance.theme,x=D==="dark";s(x?"light":"dark");const $=C(),te=a.cloneNode(!0);te.classList.add(D),document.body[x?"prepend":"append"](te);const[ve,re]=x?[0,150]:[150,0],me=x?a:te;a.style.setProperty("--transitions","0"),te.style.setProperty("--transitions","0"),me.style.setProperty("clip-path",`circle(${ve}% at ${$})`),me.style.setProperty("transition","all 0.75s ease-in-out"),me.addEventListener("transitionend",Ae=>{Ae.target===me&&(a.style.removeProperty("--transitions"),te.style.removeProperty("--transitions"),me.style.removeProperty("transition"),me.style.removeProperty("clip-path"),te.remove(),l=!1)}),requestAnimationFrame(()=>{me.style.setProperty("clip-path",`circle(${re}% at ${$})`)})};return(D,x)=>(w(),j(fe,{tooltip:k(r)("navigation.theme"),class:b([D.$style.themeButton,n.value]),icon:u.value,textual:"",onClick:ee},null,8,["tooltip","class","icon"]))}}),Ft="k_",Pt={themeButton:Ft},zt={$style:Pt},Nt=ie(Bt,[["__cssModules",zt]]),nt=Symbol("ContextMenuStore"),Ut=N({__name:"ContextMenuButton",props:{class:{},text:{},icon:{},padIcon:{type:Boolean,default:!1},highlight:{type:Boolean,default:!1}},emits:["click"],setup(g,{emit:c}){const i=g,s=Be(),r=Xe(nt),a=T(()=>[i.class,s.btn,{[s.highlight]:i.highlight,[s.padIcon]:i.padIcon&&!i.icon}]),l=u=>{r==null||r.close(),c("click",u)};return(u,n)=>(w(),se("li",{class:b(u.$style.item)},[oe("button",{class:b(a.value),onClick:l},[u.icon?(w(),j(Et,{key:0,icon:u.icon,class:b(u.$style.icon)},null,8,["icon","class"])):_e("",!0),oe("span",null,Fe(u.text),1)],2)],2))}}),qt="qb",jt="rb",Vt="sb",Kt="tb",Wt="ub",Ht={item:qt,btn:jt,icon:Vt,padIcon:Kt,highlight:Wt},Gt={$style:Ht},Re=ie(Ut,[["__cssModules",Gt]]),Qt=N({__name:"ContextMenu",props:{class:{},tooltip:{},tooltipPosition:{},position:{default:"right-end"},options:{},highlight:{}},emits:["select"],setup(g,{emit:c}){const i=g,s=Be(),r=G(),a=G(),l=G(!1),u=G("auto");let n;st([a,r],()=>l.value=!1),Ie([l,r,a],()=>{l.value&&r.value&&a.value&&(n==null||n.destroy(),n=dt(r.value,a.value,{placement:i.position,modifiers:[{name:"offset",options:{offset:[10,10]}},{name:"positionTracker",enabled:!0,phase:"afterWrite",fn:({state:$})=>void(u.value=$.placement.split("-")[0])}]}))}),Ie(()=>i.position,$=>n==null?void 0:n.setOptions({placement:$}));const h=T(()=>{var $;return($=i.options)==null?void 0:$.some(te=>te.icon)}),C=T(()=>[i.class,s.contextMenu]),ee=T(()=>[s.list,{[s[u.value]]:u.value in s}]),D=$=>{c("select",$),l.value=!1},x=()=>requestAnimationFrame(()=>l.value=!l.value);return et(nt,{close:()=>requestAnimationFrame(()=>l.value=!1)}),($,te)=>{const ve=ut("tooltip");return w(),se("div",{class:b(C.value)},[pt((w(),se("div",{ref_key:"reference",ref:r,class:b($.$style.reference),onClick:x},[Se($.$slots,"default")],2)),[[ve,{text:$.tooltip,position:$.tooltipPosition}]]),oe("div",{ref_key:"popper",ref:a,class:b([$.$style.popper,{[$.$style.visible]:l.value}])},[oe("ul",{class:b(ee.value)},[$.$slots.options?Se($.$slots,"options",{key:0}):$.options?(w(!0),se(Le,{key:1},tt($.options,re=>(w(),j(Re,{key:re.id,"pad-icon":h.value,text:re.label??re.id,icon:re.icon,highlight:re.id===$.highlight,onClick:me=>D(re)},null,8,["pad-icon","text","icon","highlight","onClick"]))),128)):_e("",!0)],2)],2)],2)}}}),Yt="L_",Jt="M_",Zt="N_",Xt="O_",es="P_",ts="Q_",ss="R_",ns="S_",os="T_",is={contextMenu:Yt,reference:Jt,popper:Zt,visible:Xt,list:es,top:ts,bottom:ss,left:ns,right:os},rs={$style:is},Pe=ie(Qt,[["__cssModules",rs]]),as=["gbp","eur","usd"],ls=N({__name:"ChangeCurrencyButton",props:{class:{}},setup(g){const c=g,{t:i,locale:s}=ne(),{changeCurrency:r,state:a}=ke(),l=(h,C,ee)=>{var x;const D=(x=new Intl.NumberFormat(h,{style:"currency",currencyDisplay:ee,currency:C}).formatToParts(0).find($=>$.type==="currency"))==null?void 0:x.value;return D&&D[0].toUpperCase()+D.slice(1)},u=T(()=>c.class),n=T(()=>as.map(h=>({id:h,icon:a.currency===h?"check":void 0,label:`${l(s.value,h,"name")} (${l(s.value,h)})`})));return(h,C)=>(w(),j(Pe,{tooltip:k(i)("navigation.currency"),"tooltip-position":"right",class:b(u.value),options:n.value,onSelect:C[0]||(C[0]=ee=>k(r)(ee.id))},{default:he(()=>[I(fe,{icon:"currency-line",textual:"",color:"dimmed"})]),_:1},8,["tooltip","class","options"]))}}),cs=N({__name:"ChangeLanguageButton",props:{class:{}},setup(g){const c=g,{t:i,locale:s}=ne(),{changeLocale:r,state:a}=ke(),l=T(()=>c.class),u=T(()=>{const n=new Intl.DisplayNames(s.value,{type:"language"});return ht.map(h=>({id:h,icon:a.locale===h?"check":void 0,label:n.of(h)}))});return(n,h)=>(w(),j(Pe,{tooltip:k(i)("navigation.language"),"tooltip-position":"right",class:b(l.value),options:u.value,onSelect:h[0]||(h[0]=C=>k(r)(C.id))},{default:he(()=>[I(fe,{icon:"global-line",textual:"",color:"dimmed"})]),_:1},8,["tooltip","class","options"]))}}),us=N({__name:"CopyButton",setup(g){const{clipboard:c,state:i}=ke(),{t:s}=ne();return(r,a)=>(w(),j(Re,{text:k(s)("navigation.clipboard.copy",{year:k(i).activeYear}),icon:"clipboard-line",onClick:k(c).copy},null,8,["text","onClick"]))}}),ps=N({__name:"PasteButton",setup(g){const{clipboard:c,state:i}=ke(),{t:s}=ne();return(r,a)=>{var l;return k(c).data.value?(w(),j(Re,{key:0,text:k(s)("navigation.clipboard.paste",{from:(l=k(c).data.value)==null?void 0:l.year,to:k(i).activeYear}),icon:"clipboard-line",onClick:k(c).paste},null,8,["text","onClick"])):_e("",!0)}}}),ds=N({__name:"LoadDemoDataButton",setup(g){const{setBudgetGroups:c}=ke(),{t:i}=ne(),s=G(!1),r=async()=>{if(s.value)return;s.value=!0;const{default:a}=await ft(()=>import("./DemoData-06204352.js"),[]);c("income",a.income),c("expenses",a.expenses),s.value=!1};return Te(()=>{location.hash==="#demo"&&r()}),(a,l)=>(w(),j(Re,{text:k(i)("navigation.loadDemoData"),icon:"magic-line",onClick:r},null,8,["text"]))}}),hs=N({__name:"ExportButton",setup(g){const{serialize:c}=ke(),{t:i}=ne(),s=()=>{St(c(),`${i("navigation.export.fileName")}.json`,"application/json")};return(r,a)=>(w(),j(Re,{text:k(i)("navigation.export.export"),icon:"download-cloud-2-line",onClick:s},null,8,["text"]))}}),fs=N({__name:"Dialog",props:{open:{type:Boolean},contentClass:{}},emits:["close"],setup(g,{emit:c}){const i=g,s=G(),r=G(),a=G(!1),l=Be(),u=T(()=>[l.dialog,{[l.open]:i.open}]);st(s,()=>a.value&&c("close"));const n=()=>{var h;i.open||(h=r.value)==null||h.close()};return Ie(()=>i.open,h=>{var C;h?((C=r.value)==null||C.showModal(),requestAnimationFrame(()=>a.value=!0)):a.value=!1}),Te(()=>{var h;r.value&&(r.value.remove(),(h=document.getElementById("app"))==null||h.append(r.value))}),(h,C)=>(w(),se("dialog",{ref_key:"dialog",ref:r,class:b(u.value),onTransitionend:n},[oe("div",{ref_key:"content",ref:s,class:b([h.$style.content,h.contentClass])},[Se(h.$slots,"default")],2)],34))}}),ms="Fb",gs="Gb",_s="Hb",vs={dialog:ms,open:gs,content:_s},ys={$style:vs},bs=ie(fs,[["__cssModules",ys]]),ot=Symbol("OnboardingStore"),ks=N({__name:"Step",props:{class:{}},setup(g){const c=g,i=G(),s=Ot(i),{register:r,unregister:a}=Xe(ot);Te(()=>r(s)),Ye(()=>a(s));const l=T(()=>c.class);return(u,n)=>(w(),se("div",{ref_key:"root",ref:i,class:b([u.$style.step,l.value])},[Se(u.$slots,"default")],2))}}),Cs="Db",$s="Eb",ws={step:Cs,shadow:$s},Es={$style:ws},Ge=ie(ks,[["__cssModules",Es]]),xs=N({__name:"Steps",props:{class:{}},emits:["finish"],setup(g,{expose:c,emit:i}){const s=g;mt(x=>({"02918378":n.value.width,"35cff1b5":n.value.height,98193572:h.value}));const r=G(),a=gt([]),l=T(()=>s.class),u=G(0),n=T(()=>{var x;return((x=a[u.value])==null?void 0:x.value)??new DOMRect}),h=T(()=>a.slice(0,u.value).reduce((x,$)=>x+$.value.width,0));et(ot,{register:x=>a.push(x),unregister:x=>_t(a,x)});const C=()=>u.value=0,ee=()=>u.value=Math.max(0,u.value-1),D=()=>{u.value+1(w(),se("div",{ref_key:"root",ref:r,class:b([x.$style.steps,l.value])},[Se(x.$slots,"default",{next:D,previous:ee,reset:C})],2))}}),Ms="Ib",Rs={steps:Ms},Os={$style:Rs},Ss=ie(xs,[["__cssModules",Os]]),Is=N({__name:"FilePicker",props:vt({class:{},placeholder:{},accept:{}},{modelValue:{}}),emits:["update:modelValue"],setup(g){const c=g,i=yt(g,"modelValue"),s=Be(),r=T(()=>[c.class,s.filePicker,{[s.empty]:!i.value}]),a=()=>{var l;It({accept:(l=c.accept)==null?void 0:l.join(","),multiple:!1}).then(u=>{i.value=u})};return(l,u)=>{var n;return w(),se("button",{type:"button",class:b(r.value),onClick:a},[oe("span",{class:b(l.$style.label)},Fe(((n=i.value)==null?void 0:n.name)??l.placeholder),3)],2)}}}),As="Lb",Ds="Mb",Ls="Nb",Ts="Ob",Bs={filePicker:As,icon:Ds,label:Ls,empty:Ts},Fs={$style:Bs},Ue=ie(Is,[["__cssModules",Fs]]),Ps=N({__name:"Screen",props:{class:{},title:{},back:{type:Function}},setup(g){const c=g,i=T(()=>c.class);return(s,r)=>(w(),se("div",{class:b(s.$style.screen)},[s.title?(w(),se("h1",{key:0,class:b(s.$style.title)},[s.back?(w(),j(fe,{key:0,color:"dark",icon:"arrow-left-s-line",textual:"",onClick:s.back},null,8,["onClick"])):_e("",!0),oe("span",null,Fe(s.title),1)],2)):_e("",!0),oe("div",{class:b(i.value)},[Se(s.$slots,"default")],2)],2))}}),zs="Jb",Ns="Kb",Us={screen:zs,title:Ns},qs={$style:Us},it=ie(Ps,[["__cssModules",qs]]),js=N({__name:"BudgetFileScreen",props:{back:{type:Function}},emits:["loaded"],setup(g,{emit:c}){const{deserialize:i}=ke(),s=G(),{t:r}=ne(),a=async()=>{s.value&&(await i(s.value),c("loaded"))};return(l,u)=>(w(),j(it,{back:l.back,class:b(l.$style.screen),title:k(r)("navigation.import.start.ocular")},{default:he(()=>[I(Ue,{modelValue:s.value,"onUpdate:modelValue":u[0]||(u[0]=n=>s.value=n),class:b(l.$style.input),placeholder:k(r)("navigation.import.ocular.pickFile"),accept:[".json"]},null,8,["modelValue","class","placeholder","accept"]),s.value?(w(),j(fe,{key:0,icon:"upload-cloud-2-line",text:k(r)("navigation.import.import"),onClick:a},null,8,["text"])):_e("",!0)]),_:1},8,["back","class","title"]))}}),Vs="zb",Ks="Ab",Ws={screen:Vs,input:Ks},Hs={$style:Ws},Gs=ie(js,[["__cssModules",Hs]]);var rt={exports:{}};/* @license +import{x as G,N as Ie,Q as Be,T as Qe,U as at,d as N,c as B,V as Je,o as w,i as V,n as b,_ as ie,R as Ze,e as ne,W as lt,X as ct,k,y as Le,Y as Xe,a as se,b as oe,p as _e,t as Fe,Z as et,$ as ut,a0 as pt,E as Se,F as Te,r as tt,a1 as dt,f as ke,w as he,l as I,a2 as ht,C as ft,u as mt,K as gt,a3 as _t,L as vt,M as yt,a4 as We,a5 as Ke,I as He,q as bt,D as qe,v as kt,g as Ct}from"./index-635eac34.js";import{L as $t}from"./Link-b21ad2f6.js";import{A as wt}from"./AnimatedRouterView-43191cc5.js";import{B as fe}from"./Button-1ed056c9.js";import{I as Et}from"./Icon-f54aec6a.js";import{u as xt}from"./useResizeObserver-3dd0959b.js";import{c as Mt}from"./_commonjsHelpers-725317a4.js";import"./useThemeStyles-349ce8f2.js";const Rt=g=>{const c=G([]),i=new MutationObserver(s=>{c.value=s});return Ie(g,s=>{i.disconnect(),s&&i.observe(s,{subtree:!0,childList:!0})}),c},Ot=g=>{const c=G(new DOMRect),i=Rt(g),s=xt(g);return Ie([i,s],()=>{const a=g.value;a&&(a.style.setProperty("position","fixed"),c.value=a.getBoundingClientRect(),a.style.removeProperty("position"))}),c},St=(g,c,i)=>{const s=document.createElement("a");s.style.display="none",document.body.appendChild(s);const r=new Blob([g],{type:i});s.href=URL.createObjectURL(r),s.download=c,s.click(),document.body.removeChild(s)},It=({accept:g,multiple:c}={})=>{const i=document.createElement("input");return document.body.appendChild(i),i.type="file",i.style.display="none",g&&(i.accept=g),c&&(i.multiple=c),new Promise((s,r)=>{i.onchange=()=>{const a=Array.from(i.files??[]);document.body.removeChild(i),a.length?s(c?a:a[0]):r()},i.click()})},st=(g,c)=>{const i=at(g),s=r=>{r.isTrusted&&i.every(a=>!a.value||!r.composedPath().includes(a.value))&&c(r)};Be(()=>window.addEventListener("click",s)),Qe(()=>window.removeEventListener("click",s))},At=N({__name:"CloudButton",props:{class:{}},setup(g){const c=g,i=B(()=>c.class),{login:s,state:r}=Je(),a=B(()=>{switch(r.status){case"syncing":return"refresh-line";case"idle":return"cloud-off-line"}return"cloud-line"}),l=B(()=>{switch(r.status){case"authenticated":return"success";case"loading":return"warning";case"idle":return"danger";case"syncing":return"primary"}return"danger"}),u=()=>{r.status==="idle"&&s()};return(n,h)=>(w(),V(fe,{class:b([n.$style.cloudButton,i.value]),textual:"",color:l.value,icon:a.value,onClick:u},null,8,["class","color","icon"]))}}),Dt={},Tt={$style:Dt},Bt=ie(At,[["__cssModules",Tt]]),Lt=N({__name:"ThemeButton",props:{class:{}},setup(g){const c=g,{state:i,setTheme:s}=Ze(),{t:r}=ne(),a=lt();let l=!1;const u=B(()=>i.appearance.theme==="light"?"sun-fill":"moon-fill"),n=B(()=>c.class),h=ct(),C=()=>{var te;const D=(te=h==null?void 0:h.vnode.el)==null?void 0:te.getBoundingClientRect(),x=D.left+D.width/2,$=D.top+D.height/2;return`${x}px ${$}px`},ee=()=>{if(l)return;l=!0;const D=i.appearance.theme,x=D==="dark";s(x?"light":"dark");const $=C(),te=a.cloneNode(!0);te.classList.add(D),document.body[x?"prepend":"append"](te);const[ve,re]=x?[0,150]:[150,0],me=x?a:te;a.style.setProperty("--transitions","0"),te.style.setProperty("--transitions","0"),me.style.setProperty("clip-path",`circle(${ve}% at ${$})`),me.style.setProperty("transition","all 0.75s ease-in-out"),me.addEventListener("transitionend",Ae=>{Ae.target===me&&(a.style.removeProperty("--transitions"),te.style.removeProperty("--transitions"),me.style.removeProperty("transition"),me.style.removeProperty("clip-path"),te.remove(),l=!1)}),requestAnimationFrame(()=>{me.style.setProperty("clip-path",`circle(${re}% at ${$})`)})};return(D,x)=>(w(),V(fe,{tooltip:k(r)("navigation.theme"),class:b([D.$style.themeButton,n.value]),icon:u.value,textual:"",onClick:ee},null,8,["tooltip","class","icon"]))}}),Ft="k_",Pt={themeButton:Ft},zt={$style:Pt},Nt=ie(Lt,[["__cssModules",zt]]),nt=Symbol("ContextMenuStore"),Ut=N({__name:"ContextMenuButton",props:{class:{},text:{},icon:{},padIcon:{type:Boolean,default:!1},highlight:{type:Boolean,default:!1}},emits:["click"],setup(g,{emit:c}){const i=g,s=Le(),r=Xe(nt),a=B(()=>[i.class,s.btn,{[s.highlight]:i.highlight,[s.padIcon]:i.padIcon&&!i.icon}]),l=u=>{r==null||r.close(),c("click",u)};return(u,n)=>(w(),se("li",{class:b(u.$style.item)},[oe("button",{class:b(a.value),onClick:l},[u.icon?(w(),V(Et,{key:0,icon:u.icon,class:b(u.$style.icon)},null,8,["icon","class"])):_e("",!0),oe("span",null,Fe(u.text),1)],2)],2))}}),qt="xb",Vt="yb",jt="zb",Wt="Ab",Kt="Bb",Ht={item:qt,btn:Vt,icon:jt,padIcon:Wt,highlight:Kt},Gt={$style:Ht},Re=ie(Ut,[["__cssModules",Gt]]),Yt=N({__name:"ContextMenu",props:{class:{},tooltip:{},tooltipPosition:{},position:{default:"right-end"},options:{},highlight:{}},emits:["select"],setup(g,{emit:c}){const i=g,s=Le(),r=G(),a=G(),l=G(!1),u=G("auto");let n;st([a,r],()=>l.value=!1),Ie([l,r,a],()=>{l.value&&r.value&&a.value&&(n==null||n.destroy(),n=dt(r.value,a.value,{placement:i.position,modifiers:[{name:"offset",options:{offset:[10,10]}},{name:"positionTracker",enabled:!0,phase:"afterWrite",fn:({state:$})=>void(u.value=$.placement.split("-")[0])}]}))}),Ie(()=>i.position,$=>n==null?void 0:n.setOptions({placement:$}));const h=B(()=>{var $;return($=i.options)==null?void 0:$.some(te=>te.icon)}),C=B(()=>[i.class,s.contextMenu]),ee=B(()=>[s.list,{[s[u.value]]:u.value in s}]),D=$=>{c("select",$),l.value=!1},x=()=>requestAnimationFrame(()=>l.value=!l.value);return et(nt,{close:()=>requestAnimationFrame(()=>l.value=!1)}),($,te)=>{const ve=ut("tooltip");return w(),se("div",{class:b(C.value)},[pt((w(),se("div",{ref_key:"reference",ref:r,class:b($.$style.reference),onClick:x},[Se($.$slots,"default")],2)),[[ve,{text:$.tooltip,position:$.tooltipPosition}]]),oe("div",{ref_key:"popper",ref:a,class:b([$.$style.popper,{[$.$style.visible]:l.value}])},[oe("ul",{class:b(ee.value)},[$.$slots.options?Se($.$slots,"options",{key:0}):$.options?(w(!0),se(Te,{key:1},tt($.options,re=>(w(),V(Re,{key:re.id,"pad-icon":h.value,text:re.label??re.id,icon:re.icon,highlight:re.id===$.highlight,onClick:me=>D(re)},null,8,["pad-icon","text","icon","highlight","onClick"]))),128)):_e("",!0)],2)],2)],2)}}}),Qt="S_",Jt="T_",Zt="U_",Xt="V_",es="W_",ts="X_",ss="Y_",ns="Z_",os="_b",is={contextMenu:Qt,reference:Jt,popper:Zt,visible:Xt,list:es,top:ts,bottom:ss,left:ns,right:os},rs={$style:is},Pe=ie(Yt,[["__cssModules",rs]]),as=["gbp","eur","usd"],ls=N({__name:"ChangeCurrencyButton",props:{class:{}},setup(g){const c=g,{t:i,locale:s}=ne(),{changeCurrency:r,state:a}=ke(),l=(h,C,ee)=>{var x;const D=(x=new Intl.NumberFormat(h,{style:"currency",currencyDisplay:ee,currency:C}).formatToParts(0).find($=>$.type==="currency"))==null?void 0:x.value;return D&&D[0].toUpperCase()+D.slice(1)},u=B(()=>c.class),n=B(()=>as.map(h=>({id:h,icon:a.currency===h?"check":void 0,label:`${l(s.value,h,"name")} (${l(s.value,h)})`})));return(h,C)=>(w(),V(Pe,{tooltip:k(i)("navigation.currency"),"tooltip-position":"right",class:b(u.value),options:n.value,onSelect:C[0]||(C[0]=ee=>k(r)(ee.id))},{default:he(()=>[I(fe,{icon:"currency-line",textual:"",color:"dimmed"})]),_:1},8,["tooltip","class","options"]))}}),cs=N({__name:"ChangeLanguageButton",props:{class:{}},setup(g){const c=g,{t:i,locale:s}=ne(),{changeLocale:r,state:a}=ke(),l=B(()=>c.class),u=B(()=>{const n=new Intl.DisplayNames(s.value,{type:"language"});return ht.map(h=>({id:h,icon:a.locale===h?"check":void 0,label:n.of(h)}))});return(n,h)=>(w(),V(Pe,{tooltip:k(i)("navigation.language"),"tooltip-position":"right",class:b(l.value),options:u.value,onSelect:h[0]||(h[0]=C=>k(r)(C.id))},{default:he(()=>[I(fe,{icon:"global-line",textual:"",color:"dimmed"})]),_:1},8,["tooltip","class","options"]))}}),us=N({__name:"CopyButton",setup(g){const{clipboard:c,state:i}=ke(),{t:s}=ne();return(r,a)=>(w(),V(Re,{text:k(s)("navigation.clipboard.copy",{year:k(i).activeYear}),icon:"clipboard-line",onClick:k(c).copy},null,8,["text","onClick"]))}}),ps=N({__name:"PasteButton",setup(g){const{clipboard:c,state:i}=ke(),{t:s}=ne();return(r,a)=>{var l;return k(c).data.value?(w(),V(Re,{key:0,text:k(s)("navigation.clipboard.paste",{from:(l=k(c).data.value)==null?void 0:l.year,to:k(i).activeYear}),icon:"clipboard-line",onClick:k(c).paste},null,8,["text","onClick"])):_e("",!0)}}}),ds=N({__name:"LoadDemoDataButton",setup(g){const{setBudgetGroups:c}=ke(),{t:i}=ne(),s=G(!1),r=async()=>{if(s.value)return;s.value=!0;const{default:a}=await ft(()=>import("./DemoData-06204352.js"),[]);c("income",a.income),c("expenses",a.expenses),s.value=!1};return Be(()=>{location.hash==="#demo"&&r()}),(a,l)=>(w(),V(Re,{text:k(i)("navigation.loadDemoData"),icon:"magic-line",onClick:r},null,8,["text"]))}}),hs=N({__name:"ExportButton",setup(g){const{serialize:c}=ke(),{t:i}=ne(),s=()=>{St(c(),`${i("navigation.export.fileName")}.json`,"application/json")};return(r,a)=>(w(),V(Re,{text:k(i)("navigation.export.export"),icon:"download-cloud-2-line",onClick:s},null,8,["text"]))}}),fs=N({__name:"Dialog",props:{open:{type:Boolean},contentClass:{}},emits:["close"],setup(g,{emit:c}){const i=g,s=G(),r=G(),a=G(!1),l=Le(),u=B(()=>[l.dialog,{[l.open]:i.open}]);st(s,()=>a.value&&c("close"));const n=()=>{var h;i.open||(h=r.value)==null||h.close()};return Ie(()=>i.open,h=>{var C;h?((C=r.value)==null||C.showModal(),requestAnimationFrame(()=>a.value=!0)):a.value=!1}),Be(()=>{var h;r.value&&(r.value.remove(),(h=document.getElementById("app"))==null||h.append(r.value))}),(h,C)=>(w(),se("dialog",{ref_key:"dialog",ref:r,class:b(u.value),onTransitionend:n},[oe("div",{ref_key:"content",ref:s,class:b([h.$style.content,h.contentClass])},[Se(h.$slots,"default")],2)],34))}}),ms="Gb",gs="Hb",_s="Ib",vs={dialog:ms,open:gs,content:_s},ys={$style:vs},bs=ie(fs,[["__cssModules",ys]]),ot=Symbol("OnboardingStore"),ks=N({__name:"Step",props:{class:{}},setup(g){const c=g,i=G(),s=Ot(i),{register:r,unregister:a}=Xe(ot);Be(()=>r(s)),Qe(()=>a(s));const l=B(()=>c.class);return(u,n)=>(w(),se("div",{ref_key:"root",ref:i,class:b([u.$style.step,l.value])},[Se(u.$slots,"default")],2))}}),Cs="tb",$s="ub",ws={step:Cs,shadow:$s},Es={$style:ws},Ge=ie(ks,[["__cssModules",Es]]),xs=N({__name:"Steps",props:{class:{}},emits:["finish"],setup(g,{expose:c,emit:i}){const s=g;mt(x=>({"02918378":n.value.width,"35cff1b5":n.value.height,98193572:h.value}));const r=G(),a=gt([]),l=B(()=>s.class),u=G(0),n=B(()=>{var x;return((x=a[u.value])==null?void 0:x.value)??new DOMRect}),h=B(()=>a.slice(0,u.value).reduce((x,$)=>x+$.value.width,0));et(ot,{register:x=>a.push(x),unregister:x=>_t(a,x)});const C=()=>u.value=0,ee=()=>u.value=Math.max(0,u.value-1),D=()=>{u.value+1(w(),se("div",{ref_key:"root",ref:r,class:b([x.$style.steps,l.value])},[Se(x.$slots,"default",{next:D,previous:ee,reset:C})],2))}}),Ms="vb",Rs={steps:Ms},Os={$style:Rs},Ss=ie(xs,[["__cssModules",Os]]),Is=N({__name:"FilePicker",props:vt({class:{},placeholder:{},accept:{}},{modelValue:{}}),emits:["update:modelValue"],setup(g){const c=g,i=yt(g,"modelValue"),s=Le(),r=B(()=>[c.class,s.filePicker,{[s.empty]:!i.value}]),a=()=>{var l;It({accept:(l=c.accept)==null?void 0:l.join(","),multiple:!1}).then(u=>{i.value=u})};return(l,u)=>{var n;return w(),se("button",{type:"button",class:b(r.value),onClick:a},[oe("span",{class:b(l.$style.label)},Fe(((n=i.value)==null?void 0:n.name)??l.placeholder),3)],2)}}}),As="Lb",Ds="Mb",Ts="Nb",Bs="Ob",Ls={filePicker:As,icon:Ds,label:Ts,empty:Bs},Fs={$style:Ls},Ue=ie(Is,[["__cssModules",Fs]]),Ps=N({__name:"Screen",props:{class:{},title:{},back:{type:Function}},setup(g){const c=g,i=B(()=>c.class);return(s,r)=>(w(),se("div",{class:b(s.$style.screen)},[s.title?(w(),se("h1",{key:0,class:b(s.$style.title)},[s.back?(w(),V(fe,{key:0,color:"dark",icon:"arrow-left-s-line",textual:"",onClick:s.back},null,8,["onClick"])):_e("",!0),oe("span",null,Fe(s.title),1)],2)):_e("",!0),oe("div",{class:b(i.value)},[Se(s.$slots,"default")],2)],2))}}),zs="Jb",Ns="Kb",Us={screen:zs,title:Ns},qs={$style:Us},it=ie(Ps,[["__cssModules",qs]]),Vs=N({__name:"BudgetFileScreen",props:{back:{type:Function}},emits:["loaded"],setup(g,{emit:c}){const{deserialize:i}=ke(),s=G(),{t:r}=ne(),a=async()=>{s.value&&(await i(s.value),c("loaded"))};return(l,u)=>(w(),V(it,{back:l.back,class:b(l.$style.screen),title:k(r)("navigation.import.start.ocular")},{default:he(()=>[I(Ue,{modelValue:s.value,"onUpdate:modelValue":u[0]||(u[0]=n=>s.value=n),class:b(l.$style.input),placeholder:k(r)("navigation.import.ocular.pickFile"),accept:[".json"]},null,8,["modelValue","class","placeholder","accept"]),s.value?(w(),V(fe,{key:0,icon:"upload-cloud-2-line",text:k(r)("navigation.import.import"),onClick:a},null,8,["text"])):_e("",!0)]),_:1},8,["back","class","title"]))}}),js="pb",Ws="qb",Ks={screen:js,input:Ws},Hs={$style:Ks},Gs=ie(Vs,[["__cssModules",Hs]]);var rt={exports:{}};/* @license Papa Parse v5.4.1 https://github.com/mholt/PapaParse License: MIT -*/(function(g,c){(function(i,s){g.exports=s()})(Mt,function i(){var s=typeof self<"u"?self:typeof window<"u"?window:s!==void 0?s:{},r=!s.document&&!!s.postMessage,a=s.IS_PAPA_WORKER||!1,l={},u=0,n={parse:function(t,e){var o=(e=e||{}).dynamicTyping||!1;if(O(o)&&(e.dynamicTypingFunction=o,o={}),e.dynamicTyping=o,e.transform=!!O(e.transform)&&e.transform,e.worker&&n.WORKERS_SUPPORTED){var p=function(){if(!n.WORKERS_SUPPORTED)return!1;var y=(Q=s.URL||s.webkitURL||null,P=i.toString(),n.BLOB_URL||(n.BLOB_URL=Q.createObjectURL(new Blob(["var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; ","(",P,")();"],{type:"text/javascript"})))),E=new s.Worker(y),Q,P;return E.onmessage=me,E.id=u++,l[E.id]=E}();return p.userStep=e.step,p.userChunk=e.chunk,p.userComplete=e.complete,p.userError=e.error,e.step=O(e.step),e.chunk=O(e.chunk),e.complete=O(e.complete),e.error=O(e.error),delete e.worker,void p.postMessage({input:t,config:e,workerId:p.id})}var f=null;return n.NODE_STREAM_INPUT,typeof t=="string"?(t=function(y){return y.charCodeAt(0)===65279?y.slice(1):y}(t),f=e.download?new ee(e):new x(e)):t.readable===!0&&O(t.read)&&O(t.on)?f=new $(e):(s.File&&t instanceof File||t instanceof Object)&&(f=new D(e)),f.stream(t)},unparse:function(t,e){var o=!1,p=!0,f=",",y=`\r -`,E='"',Q=E+E,P=!1,m=null,U=!1;(function(){if(typeof e=="object"){if(typeof e.delimiter!="string"||n.BAD_DELIMITERS.filter(function(d){return e.delimiter.indexOf(d)!==-1}).length||(f=e.delimiter),(typeof e.quotes=="boolean"||typeof e.quotes=="function"||Array.isArray(e.quotes))&&(o=e.quotes),typeof e.skipEmptyLines!="boolean"&&typeof e.skipEmptyLines!="string"||(P=e.skipEmptyLines),typeof e.newline=="string"&&(y=e.newline),typeof e.quoteChar=="string"&&(E=e.quoteChar),typeof e.header=="boolean"&&(p=e.header),Array.isArray(e.columns)){if(e.columns.length===0)throw new Error("Option columns is empty");m=e.columns}e.escapeChar!==void 0&&(Q=e.escapeChar+E),(typeof e.escapeFormulae=="boolean"||e.escapeFormulae instanceof RegExp)&&(U=e.escapeFormulae instanceof RegExp?e.escapeFormulae:/^[=+\-@\t\r].*$/)}})();var v=new RegExp(ve(E),"g");if(typeof t=="string"&&(t=JSON.parse(t)),Array.isArray(t)){if(!t.length||Array.isArray(t[0]))return pe(null,t,P);if(typeof t[0]=="object")return pe(m||Object.keys(t[0]),t,P)}else if(typeof t=="object")return typeof t.data=="string"&&(t.data=JSON.parse(t.data)),Array.isArray(t.data)&&(t.fields||(t.fields=t.meta&&t.meta.fields||m),t.fields||(t.fields=Array.isArray(t.data[0])?t.fields:typeof t.data[0]=="object"?Object.keys(t.data[0]):[]),Array.isArray(t.data[0])||typeof t.data[0]=="object"||(t.data=[t.data])),pe(t.fields||[],t.data||[],P);throw new Error("Unable to serialize unrecognized input");function pe(d,L,Z){var z="";typeof d=="string"&&(d=JSON.parse(d)),typeof L=="string"&&(L=JSON.parse(L));var Y=Array.isArray(d)&&0=this._config.preview;if(a)s.postMessage({results:y,workerId:n.WORKER_ID,finished:Q});else if(O(this._config.chunk)&&!o){if(this._config.chunk(y,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);y=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(y.data),this._completeResults.errors=this._completeResults.errors.concat(y.errors),this._completeResults.meta=y.meta),this._completed||!Q||!O(this._config.complete)||y&&y.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),Q||y&&y.meta.paused||this._nextChunk(),y}this._halted=!0},this._sendError=function(e){O(this._config.error)?this._config.error(e):a&&this._config.error&&s.postMessage({workerId:n.WORKER_ID,error:e,finished:!1})}}function ee(t){var e;(t=t||{}).chunkSize||(t.chunkSize=n.RemoteChunkSize),C.call(this,t),this._nextChunk=r?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(o){this._input=o,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(e=new XMLHttpRequest,this._config.withCredentials&&(e.withCredentials=this._config.withCredentials),r||(e.onload=Ce(this._chunkLoaded,this),e.onerror=Ce(this._chunkError,this)),e.open(this._config.downloadRequestBody?"POST":"GET",this._input,!r),this._config.downloadRequestHeaders){var o=this._config.downloadRequestHeaders;for(var p in o)e.setRequestHeader(p,o[p])}if(this._config.chunkSize){var f=this._start+this._config.chunkSize-1;e.setRequestHeader("Range","bytes="+this._start+"-"+f)}try{e.send(this._config.downloadRequestBody)}catch(y){this._chunkError(y.message)}r&&e.status===0&&this._chunkError()}},this._chunkLoaded=function(){e.readyState===4&&(e.status<200||400<=e.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:e.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(o){var p=o.getResponseHeader("Content-Range");return p===null?-1:parseInt(p.substring(p.lastIndexOf("/")+1))}(e),this.parseChunk(e.responseText)))},this._chunkError=function(o){var p=e.statusText||o;this._sendError(new Error(p))}}function D(t){var e,o;(t=t||{}).chunkSize||(t.chunkSize=n.LocalChunkSize),C.call(this,t);var p=typeof FileReader<"u";this.stream=function(f){this._input=f,o=f.slice||f.webkitSlice||f.mozSlice,p?((e=new FileReader).onload=Ce(this._chunkLoaded,this),e.onerror=Ce(this._chunkError,this)):e=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount=this._input.size,this.parseChunk(f.target.result)},this._chunkError=function(){this._sendError(e.error)}}function x(t){var e;C.call(this,t=t||{}),this.stream=function(o){return e=o,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var o,p=this._config.chunkSize;return p?(o=e.substring(0,p),e=e.substring(p)):(o=e,e=""),this._finished=!e,this.parseChunk(o)}}}function $(t){C.call(this,t=t||{});var e=[],o=!0,p=!1;this.pause=function(){C.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){C.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(f){this._input=f,this._input.on("data",this._streamData),this._input.on("end",this._streamEnd),this._input.on("error",this._streamError)},this._checkIsFinished=function(){p&&e.length===1&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),e.length?this.parseChunk(e.shift()):o=!0},this._streamData=Ce(function(f){try{e.push(typeof f=="string"?f:f.toString(this._config.encoding)),o&&(o=!1,this._checkIsFinished(),this.parseChunk(e.shift()))}catch(y){this._streamError(y)}},this),this._streamError=Ce(function(f){this._streamCleanUp(),this._sendError(f)},this),this._streamEnd=Ce(function(){this._streamCleanUp(),p=!0,this._streamData("")},this),this._streamCleanUp=Ce(function(){this._input.removeListener("data",this._streamData),this._input.removeListener("end",this._streamEnd),this._input.removeListener("error",this._streamError)},this)}function te(t){var e,o,p,f=Math.pow(2,53),y=-f,E=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,Q=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/,P=this,m=0,U=0,v=!1,pe=!1,J=[],d={data:[],errors:[],meta:{}};if(O(t.step)){var L=t.step;t.step=function(_){if(d=_,Y())z();else{if(z(),d.data.length===0)return;m+=_.data.length,t.preview&&m>t.preview?o.abort():(d.data=d.data[0],L(d,P))}}}function Z(_){return t.skipEmptyLines==="greedy"?_.join("").trim()==="":_.length===1&&_[0].length===0}function z(){return d&&p&&(H("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+n.DefaultDelimiter+"'"),p=!1),t.skipEmptyLines&&(d.data=d.data.filter(function(_){return!Z(_)})),Y()&&function(){if(!d)return;function _(B,K){O(t.transformHeader)&&(B=t.transformHeader(B,K)),J.push(B)}if(Array.isArray(d.data[0])){for(var M=0;Y()&&M=J.length?"__parsed_extra":J[S]),t.transform&&(A=t.transform(A,q)),A=W(q,A),q==="__parsed_extra"?(X[q]=X[q]||[],X[q].push(A)):X[q]=A}return t.header&&(S>J.length?H("FieldMismatch","TooManyFields","Too many fields: expected "+J.length+" fields but parsed "+S,U+K):S=this._config.preview;if(a)s.postMessage({results:y,workerId:n.WORKER_ID,finished:Y});else if(O(this._config.chunk)&&!o){if(this._config.chunk(y,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);y=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(y.data),this._completeResults.errors=this._completeResults.errors.concat(y.errors),this._completeResults.meta=y.meta),this._completed||!Y||!O(this._config.complete)||y&&y.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),Y||y&&y.meta.paused||this._nextChunk(),y}this._halted=!0},this._sendError=function(e){O(this._config.error)?this._config.error(e):a&&this._config.error&&s.postMessage({workerId:n.WORKER_ID,error:e,finished:!1})}}function ee(t){var e;(t=t||{}).chunkSize||(t.chunkSize=n.RemoteChunkSize),C.call(this,t),this._nextChunk=r?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(o){this._input=o,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(e=new XMLHttpRequest,this._config.withCredentials&&(e.withCredentials=this._config.withCredentials),r||(e.onload=Ce(this._chunkLoaded,this),e.onerror=Ce(this._chunkError,this)),e.open(this._config.downloadRequestBody?"POST":"GET",this._input,!r),this._config.downloadRequestHeaders){var o=this._config.downloadRequestHeaders;for(var p in o)e.setRequestHeader(p,o[p])}if(this._config.chunkSize){var f=this._start+this._config.chunkSize-1;e.setRequestHeader("Range","bytes="+this._start+"-"+f)}try{e.send(this._config.downloadRequestBody)}catch(y){this._chunkError(y.message)}r&&e.status===0&&this._chunkError()}},this._chunkLoaded=function(){e.readyState===4&&(e.status<200||400<=e.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:e.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(o){var p=o.getResponseHeader("Content-Range");return p===null?-1:parseInt(p.substring(p.lastIndexOf("/")+1))}(e),this.parseChunk(e.responseText)))},this._chunkError=function(o){var p=e.statusText||o;this._sendError(new Error(p))}}function D(t){var e,o;(t=t||{}).chunkSize||(t.chunkSize=n.LocalChunkSize),C.call(this,t);var p=typeof FileReader<"u";this.stream=function(f){this._input=f,o=f.slice||f.webkitSlice||f.mozSlice,p?((e=new FileReader).onload=Ce(this._chunkLoaded,this),e.onerror=Ce(this._chunkError,this)):e=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount=this._input.size,this.parseChunk(f.target.result)},this._chunkError=function(){this._sendError(e.error)}}function x(t){var e;C.call(this,t=t||{}),this.stream=function(o){return e=o,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var o,p=this._config.chunkSize;return p?(o=e.substring(0,p),e=e.substring(p)):(o=e,e=""),this._finished=!e,this.parseChunk(o)}}}function $(t){C.call(this,t=t||{});var e=[],o=!0,p=!1;this.pause=function(){C.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){C.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(f){this._input=f,this._input.on("data",this._streamData),this._input.on("end",this._streamEnd),this._input.on("error",this._streamError)},this._checkIsFinished=function(){p&&e.length===1&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),e.length?this.parseChunk(e.shift()):o=!0},this._streamData=Ce(function(f){try{e.push(typeof f=="string"?f:f.toString(this._config.encoding)),o&&(o=!1,this._checkIsFinished(),this.parseChunk(e.shift()))}catch(y){this._streamError(y)}},this),this._streamError=Ce(function(f){this._streamCleanUp(),this._sendError(f)},this),this._streamEnd=Ce(function(){this._streamCleanUp(),p=!0,this._streamData("")},this),this._streamCleanUp=Ce(function(){this._input.removeListener("data",this._streamData),this._input.removeListener("end",this._streamEnd),this._input.removeListener("error",this._streamError)},this)}function te(t){var e,o,p,f=Math.pow(2,53),y=-f,E=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,Y=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/,P=this,m=0,U=0,v=!1,pe=!1,J=[],d={data:[],errors:[],meta:{}};if(O(t.step)){var T=t.step;t.step=function(_){if(d=_,Q())z();else{if(z(),d.data.length===0)return;m+=_.data.length,t.preview&&m>t.preview?o.abort():(d.data=d.data[0],T(d,P))}}}function Z(_){return t.skipEmptyLines==="greedy"?_.join("").trim()==="":_.length===1&&_[0].length===0}function z(){return d&&p&&(H("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+n.DefaultDelimiter+"'"),p=!1),t.skipEmptyLines&&(d.data=d.data.filter(function(_){return!Z(_)})),Q()&&function(){if(!d)return;function _(L,W){O(t.transformHeader)&&(L=t.transformHeader(L,W)),J.push(L)}if(Array.isArray(d.data[0])){for(var M=0;Q()&&M=J.length?"__parsed_extra":J[S]),t.transform&&(A=t.transform(A,q)),A=K(q,A),q==="__parsed_extra"?(X[q]=X[q]||[],X[q].push(A)):X[q]=A}return t.header&&(S>J.length?H("FieldMismatch","TooManyFields","Too many fields: expected "+J.length+" fields but parsed "+S,U+W):S=ae.length/2?`\r -`:"\r"}(_,K)),p=!1,t.delimiter)O(t.delimiter)&&(t.delimiter=t.delimiter(_),d.meta.delimiter=t.delimiter);else{var S=function(q,A,de,ae,ge){var ye,le,F,V;ge=ge||[","," ","|",";",n.RECORD_SEP,n.UNIT_SEP];for(var xe=0;xe=E)return ce(!0)}else for(R=m,m++;;){if((R=v.indexOf(e,R+1))===-1)return J||H.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:W.length,index:m}),we();if(R===d-1)return we(v.substring(m,R).replace(xe,e));if(e!==P||v[R+1]!==P){if(e===P||R===0||v[R-1]!==P){F!==-1&&F=E)return ce(!0);break}H.push({type:"Quotes",code:"InvalidQuotes",message:"Trailing quote on quoted field is malformed",row:W.length,index:m}),R++}}else R++}return we();function Me(ue){W.push(ue),M=m}function $e(ue){var Ve=0;if(ue!==-1){var Ne=v.substring(R+1,ue);Ne&&Ne.trim()===""&&(Ve=Ne.length)}return Ve}function we(ue){return J||(ue===void 0&&(ue=v.substring(m)),_.push(ue),m=d,Me(_),Y&&De()),ce()}function Ee(ue){m=ue,Me(_),_=[],V=v.indexOf(p,m)}function ce(ue){return{data:W,errors:H,meta:{delimiter:o,linebreak:p,aborted:U,truncated:!!ue,cursor:M+(pe||0)}}}function De(){y(ce()),W=[],H=[]}},this.abort=function(){U=!0},this.getCharIndex=function(){return m}}function me(t){var e=t.data,o=l[e.workerId],p=!1;if(e.error)o.userError(e.error,e.file);else if(e.results&&e.results.data){var f={abort:function(){p=!0,Ae(e.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:je,resume:je};if(O(o.userStep)){for(var y=0;y{const c=[],i=Qs.parse(g,{skipEmptyLines:"greedy"}).data;i.shift();let s;for(let r=0;rh.replace(/[^\d]/g,"")).map(Number).slice(0,12);s.budgets.push({id:Ke(),name:l.trim(),values:n})}}return c},Ys=N({__name:"GoogleAnnualBudgetScreen",props:{back:{type:Function}},emits:["loaded"],setup(g,{emit:c}){const{setBudgetGroups:i}=ke(),s=G(),r=G(),{t:a}=ne(),l=async()=>{if(s.value&&r.value){const u=Qe(await We(s.value)),n=Qe(await We(r.value));i("expenses",u),i("income",n),c("loaded")}};return(u,n)=>(w(),j(it,{back:u.back,class:b(u.$style.screen),title:k(a)("navigation.import.start.google")},{default:he(()=>[I(Ue,{modelValue:r.value,"onUpdate:modelValue":n[0]||(n[0]=h=>r.value=h),class:b(u.$style.input),placeholder:k(a)("navigation.import.google.income"),accept:[".csv"]},null,8,["modelValue","class","placeholder","accept"]),I(Ue,{modelValue:s.value,"onUpdate:modelValue":n[1]||(n[1]=h=>s.value=h),class:b(u.$style.input),placeholder:k(a)("navigation.import.google.expenses"),accept:[".csv"]},null,8,["modelValue","class","placeholder","accept"]),s.value&&r.value?(w(),j(fe,{key:0,icon:"upload-cloud-2-line",text:k(a)("navigation.import.import"),onClick:l},null,8,["text"])):_e("",!0)]),_:1},8,["back","class","title"]))}}),Js="Bb",Zs="Cb",Xs={screen:Js,input:Zs},en={$style:Xs},tn=ie(Ys,[["__cssModules",en]]),sn=N({__name:"ImportButton",setup(g){const c=He(),i=He(),s=G(!1),{t:r}=ne(),a=()=>{var u;(u=i.value)==null||u.reset(),s.value=!1},l=u=>{var n;c.value=u,(n=i.value)==null||n.next()};return(u,n)=>(w(),se(Le,null,[I(Re,{text:k(r)("navigation.import.import"),icon:"upload-cloud-2-line",onClick:n[0]||(n[0]=h=>s.value=!0)},null,8,["text"]),I(bs,{ref:"dialog",open:s.value,onClose:n[3]||(n[3]=h=>s.value=!1)},{default:he(()=>[I(Ss,{ref_key:"steps",ref:i,onFinish:a},{default:he(({previous:h})=>[I(Ge,{class:b(u.$style.step)},{default:he(()=>[oe("h1",{class:b(u.$style.title)},Fe(k(r)("navigation.import.start.title")),3),I(fe,{icon:"file-fill",text:k(r)("navigation.import.start.ocular"),onClick:n[1]||(n[1]=C=>l(Gs))},null,8,["text"]),I(fe,{icon:"google-fill",text:k(r)("navigation.import.start.google"),onClick:n[2]||(n[2]=C=>l(tn))},null,8,["text"])]),_:1},8,["class"]),I(Ge,null,{default:he(()=>[c.value?(w(),j(bt(c.value),{key:0,back:h,onLoaded:a},null,40,["back"])):_e("",!0)]),_:2},1024)]),_:1},512)]),_:1},8,["open"])],64))}}),nn="jb",on="kb",rn={step:nn,title:on},an={$style:rn},ln=ie(sn,[["__cssModules",an]]),cn=N({__name:"PrivacyModeButton",setup(g){const{setMode:c,state:i}=Ze(),{t:s}=ne(),r=T(()=>i.appearance.mode==="privacy"),a=()=>c(r.value?"normal":"privacy");return(l,u)=>(w(),j(Re,{text:r.value?k(s)("navigation.disablePrivacyMode"):k(s)("navigation.enablePrivacyMode"),icon:r.value?"eye-line":"eye-close",onClick:a},null,8,["text","icon"]))}}),un=N({__name:"ToolsButton",props:{class:{}},setup(g){const c=g,{state:i}=Je(),{t:s}=ne(),r=qe(),a=T(()=>c.class);return(l,u)=>(w(),j(Pe,{tooltip:k(s)("navigation.tools"),position:k(r)==="mobile"?"top":"right-end","tooltip-position":"right",class:b(a.value)},{options:he(()=>[k(i).status==="idle"?(w(),j(ds,{key:0})):_e("",!0),I(cn),I(hs),I(ln),I(us),I(ps)]),default:he(()=>[I(fe,{icon:"settings-4-line",textual:"",color:"dimmed"})]),_:1},8,["tooltip","position","class"]))}}),pn=1,dn=N({__name:"SelectYearButton",setup(g){const{t:c}=ne(),{changeYear:i,state:s}=ke(),r=qe(),a=kt(),l=T(()=>{const u=s.years.map(C=>C.year),n=Math.min(...u),h=[];for(let C=n;C<=a.year.value+pn;C++)h.push({id:C,icon:s.activeYear===C?"calendar-check-line":"calendar-todo-line"});return h});return(u,n)=>(w(),j(Pe,{tooltip:k(c)("navigation.year"),"tooltip-position":"right",position:k(r)==="mobile"?"top":"right-end",options:l.value,highlight:k(s).activeYear,onSelect:n[0]||(n[0]=h=>k(i)(h.id))},{default:he(()=>[I(fe,{icon:"calendar-line",textual:"",color:"dimmed"})]),_:1},8,["tooltip","position","options","highlight"]))}}),hn=N({__name:"Frame",setup(g){const c=G(),i=Ct(),s=qe(),{t:r}=ne(),a=T(()=>[{icon:"donut-chart",id:"dashboard",link:"/dashboard",tooltip:r("navigation.menu.dashboard")},{icon:"hand-coin",id:"income",link:"/income",tooltip:r("navigation.menu.income")},{icon:"shopping-basket-2",id:"expenses",link:"/expenses",tooltip:r("navigation.menu.expenses")}]);return(l,u)=>(w(),se("div",{class:b(l.$style.frame)},[oe("div",{ref_key:"menu",ref:c,class:b(l.$style.buttons)},[I(Nt,{class:b(l.$style.btn)},null,8,["class"]),oe("div",{class:b(l.$style.divider)},null,2),(w(!0),se(Le,null,tt(a.value,n=>(w(),j($t,{key:n.id,tooltip:n.tooltip,"tooltip-position":"right",class:b(l.$style.btn),color:k(i).currentRoute.value.path.startsWith(n.link)?"primary":"dimmed",icon:n.icon,to:n.link},null,8,["tooltip","class","color","icon","to"]))),128)),I(un,{class:b([l.$style.top,l.$style.btn])},null,8,["class"]),I(dn,{class:b(l.$style.btn)},null,8,["class"]),k(s)!=="mobile"?(w(),se(Le,{key:0},[I(cs,{class:b(l.$style.btn)},null,8,["class"]),I(ls,{class:b(l.$style.btn)},null,8,["class"])],64)):_e("",!0),oe("div",{class:b(l.$style.divider)},null,2),I(Tt,{class:b(l.$style.btn)},null,8,["class"])],2),oe("div",{ref:"panes",class:b(l.$style.panes)},[I(wt)],2)],2))}}),fn="G",mn="H",gn="I",_n="J",vn="K",yn="L",bn={frame:fn,panes:mn,buttons:gn,top:_n,divider:vn,btn:yn},kn={$style:bn},Sn=ie(hn,[["__cssModules",kn]]);export{Sn as default}; +`);var m=0,U=!1;this.parse=function(v,pe,J){if(typeof v!="string")throw new Error("Input must be a string");var d=v.length,T=o.length,Z=p.length,z=f.length,Q=O(y),K=[],H=[],_=[],M=m=0;if(!v)return ce();if(t.header&&!pe){var L=v.split(p)[0].split(o),W=[],S={},X=!1;for(var q in L){var A=L[q];O(t.transformHeader)&&(A=t.transformHeader(A,q));var de=A,ae=S[A]||0;for(0=E)return ce(!0)}else for(R=m,m++;;){if((R=v.indexOf(e,R+1))===-1)return J||H.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:K.length,index:m}),we();if(R===d-1)return we(v.substring(m,R).replace(xe,e));if(e!==P||v[R+1]!==P){if(e===P||R===0||v[R-1]!==P){F!==-1&&F=E)return ce(!0);break}H.push({type:"Quotes",code:"InvalidQuotes",message:"Trailing quote on quoted field is malformed",row:K.length,index:m}),R++}}else R++}return we();function Me(ue){K.push(ue),M=m}function $e(ue){var je=0;if(ue!==-1){var Ne=v.substring(R+1,ue);Ne&&Ne.trim()===""&&(je=Ne.length)}return je}function we(ue){return J||(ue===void 0&&(ue=v.substring(m)),_.push(ue),m=d,Me(_),Q&&De()),ce()}function Ee(ue){m=ue,Me(_),_=[],j=v.indexOf(p,m)}function ce(ue){return{data:K,errors:H,meta:{delimiter:o,linebreak:p,aborted:U,truncated:!!ue,cursor:M+(pe||0)}}}function De(){y(ce()),K=[],H=[]}},this.abort=function(){U=!0},this.getCharIndex=function(){return m}}function me(t){var e=t.data,o=l[e.workerId],p=!1;if(e.error)o.userError(e.error,e.file);else if(e.results&&e.results.data){var f={abort:function(){p=!0,Ae(e.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:Ve,resume:Ve};if(O(o.userStep)){for(var y=0;y{const c=[],i=Ys.parse(g,{skipEmptyLines:"greedy"}).data;i.shift();let s;for(let r=0;rh.replace(/[^\d]/g,"")).map(Number).slice(0,12);s.budgets.push({id:We(),name:l.trim(),values:n})}}return c},Qs=N({__name:"GoogleAnnualBudgetScreen",props:{back:{type:Function}},emits:["loaded"],setup(g,{emit:c}){const{setBudgetGroups:i}=ke(),s=G(),r=G(),{t:a}=ne(),l=async()=>{if(s.value&&r.value){const u=Ye(await Ke(s.value)),n=Ye(await Ke(r.value));i("expenses",u),i("income",n),c("loaded")}};return(u,n)=>(w(),V(it,{back:u.back,class:b(u.$style.screen),title:k(a)("navigation.import.start.google")},{default:he(()=>[I(Ue,{modelValue:r.value,"onUpdate:modelValue":n[0]||(n[0]=h=>r.value=h),class:b(u.$style.input),placeholder:k(a)("navigation.import.google.income"),accept:[".csv"]},null,8,["modelValue","class","placeholder","accept"]),I(Ue,{modelValue:s.value,"onUpdate:modelValue":n[1]||(n[1]=h=>s.value=h),class:b(u.$style.input),placeholder:k(a)("navigation.import.google.expenses"),accept:[".csv"]},null,8,["modelValue","class","placeholder","accept"]),s.value&&r.value?(w(),V(fe,{key:0,icon:"upload-cloud-2-line",text:k(a)("navigation.import.import"),onClick:l},null,8,["text"])):_e("",!0)]),_:1},8,["back","class","title"]))}}),Js="rb",Zs="sb",Xs={screen:Js,input:Zs},en={$style:Xs},tn=ie(Qs,[["__cssModules",en]]),sn=N({__name:"ImportButton",setup(g){const c=He(),i=He(),s=G(!1),{t:r}=ne(),a=()=>{var u;(u=i.value)==null||u.reset(),s.value=!1},l=u=>{var n;c.value=u,(n=i.value)==null||n.next()};return(u,n)=>(w(),se(Te,null,[I(Re,{text:k(r)("navigation.import.import"),icon:"upload-cloud-2-line",onClick:n[0]||(n[0]=h=>s.value=!0)},null,8,["text"]),I(bs,{ref:"dialog",open:s.value,onClose:n[3]||(n[3]=h=>s.value=!1)},{default:he(()=>[I(Ss,{ref_key:"steps",ref:i,onFinish:a},{default:he(({previous:h})=>[I(Ge,{class:b(u.$style.step)},{default:he(()=>[oe("h1",{class:b(u.$style.title)},Fe(k(r)("navigation.import.start.title")),3),I(fe,{icon:"file-fill",text:k(r)("navigation.import.start.ocular"),onClick:n[1]||(n[1]=C=>l(Gs))},null,8,["text"]),I(fe,{icon:"google-fill",text:k(r)("navigation.import.start.google"),onClick:n[2]||(n[2]=C=>l(tn))},null,8,["text"])]),_:1},8,["class"]),I(Ge,null,{default:he(()=>[c.value?(w(),V(bt(c.value),{key:0,back:h,onLoaded:a},null,40,["back"])):_e("",!0)]),_:2},1024)]),_:1},512)]),_:1},8,["open"])],64))}}),nn="M_",on="N_",rn={step:nn,title:on},an={$style:rn},ln=ie(sn,[["__cssModules",an]]),cn=N({__name:"PrivacyModeButton",setup(g){const{setMode:c,state:i}=Ze(),{t:s}=ne(),r=B(()=>i.appearance.mode==="privacy"),a=()=>c(r.value?"normal":"privacy");return(l,u)=>(w(),V(Re,{text:r.value?k(s)("navigation.disablePrivacyMode"):k(s)("navigation.enablePrivacyMode"),icon:r.value?"eye-line":"eye-close",onClick:a},null,8,["text","icon"]))}}),un=N({__name:"ToolsButton",props:{class:{}},setup(g){const c=g,{state:i}=Je(),{t:s}=ne(),r=qe(),a=B(()=>c.class);return(l,u)=>(w(),V(Pe,{tooltip:k(s)("navigation.tools"),position:k(r)==="mobile"?"top":"right-end","tooltip-position":"right",class:b(a.value)},{options:he(()=>[k(i).status==="idle"?(w(),V(ds,{key:0})):_e("",!0),I(cn),I(hs),I(ln),I(us),I(ps)]),default:he(()=>[I(fe,{icon:"settings-4-line",textual:"",color:"dimmed"})]),_:1},8,["tooltip","position","class"]))}}),pn=1,dn=N({__name:"SelectYearButton",setup(g){const{t:c}=ne(),{changeYear:i,state:s}=ke(),r=qe(),a=kt(),l=B(()=>{const u=s.years.map(C=>C.year),n=Math.min(...u),h=[];for(let C=n;C<=a.year.value+pn;C++)h.push({id:C,icon:s.activeYear===C?"calendar-check-line":"calendar-todo-line"});return h});return(u,n)=>(w(),V(Pe,{tooltip:k(c)("navigation.year"),"tooltip-position":"right",position:k(r)==="mobile"?"top":"right-end",options:l.value,highlight:k(s).activeYear,onSelect:n[0]||(n[0]=h=>k(i)(h.id))},{default:he(()=>[I(fe,{icon:"calendar-line",textual:"",color:"dimmed"})]),_:1},8,["tooltip","position","options","highlight"]))}}),hn=N({__name:"Frame",setup(g){const c=G(),i=Ct(),s=qe(),{t:r}=ne(),a=B(()=>[{icon:"donut-chart",id:"dashboard",link:"/dashboard",tooltip:r("navigation.menu.dashboard")},{icon:"hand-coin",id:"income",link:"/income",tooltip:r("navigation.menu.income")},{icon:"shopping-basket-2",id:"expenses",link:"/expenses",tooltip:r("navigation.menu.expenses")}]);return(l,u)=>(w(),se("div",{class:b(l.$style.frame)},[oe("div",{ref_key:"menu",ref:c,class:b(l.$style.buttons)},[I(Nt,{class:b(l.$style.btn)},null,8,["class"]),oe("div",{class:b(l.$style.divider)},null,2),(w(!0),se(Te,null,tt(a.value,n=>(w(),V($t,{key:n.id,tooltip:n.tooltip,"tooltip-position":"right",class:b(l.$style.btn),color:k(i).currentRoute.value.path.startsWith(n.link)?"primary":"dimmed",icon:n.icon,to:n.link},null,8,["tooltip","class","color","icon","to"]))),128)),I(un,{class:b([l.$style.top,l.$style.btn])},null,8,["class"]),I(dn,{class:b(l.$style.btn)},null,8,["class"]),k(s)!=="mobile"?(w(),se(Te,{key:0},[I(cs,{class:b(l.$style.btn)},null,8,["class"]),I(ls,{class:b(l.$style.btn)},null,8,["class"])],64)):_e("",!0),oe("div",{class:b(l.$style.divider)},null,2),I(Bt,{class:b(l.$style.btn)},null,8,["class"])],2),oe("div",{ref:"panes",class:b(l.$style.panes)},[I(wt)],2)],2))}}),fn="c_",mn="d_",gn="e_",_n="f_",vn="g_",yn="h_",bn={frame:fn,panes:mn,buttons:gn,top:_n,divider:vn,btn:yn},kn={$style:bn},Sn=ie(hn,[["__cssModules",kn]]);export{Sn as default}; diff --git a/assets/Icon-2d00bfea.css b/assets/Icon-2d00bfea.css new file mode 100644 index 00000000..6b37c1c2 --- /dev/null +++ b/assets/Icon-2d00bfea.css @@ -0,0 +1 @@ +.H_{color:inherit;height:100%;width:100%;display:flex;align-items:center;justify-content:center}.H_>svg{fill:currentColor;height:100%;width:100%} diff --git a/assets/Icon-f442fa03.css b/assets/Icon-f442fa03.css deleted file mode 100644 index 492b1820..00000000 --- a/assets/Icon-f442fa03.css +++ /dev/null @@ -1 +0,0 @@ -.m_{color:inherit;height:100%;width:100%;display:flex;align-items:center;justify-content:center}.m_>svg{fill:currentColor;height:100%;width:100%} diff --git a/assets/Icon-3e6d397d.js b/assets/Icon-f54aec6a.js similarity index 98% rename from assets/Icon-3e6d397d.js rename to assets/Icon-f54aec6a.js index 49d416dc..9c0da837 100644 --- a/assets/Icon-3e6d397d.js +++ b/assets/Icon-f54aec6a.js @@ -1,4 +1,4 @@ -import{d as g,c as v,o as i,a as e,n as w,_ as a}from"./index-1bee1cb1.js";const c=` +import{d as g,c as v,o as i,a as e,n as w,_ as a}from"./index-635eac34.js";const c=` `,_=` `,z=` `,p=` @@ -35,4 +35,4 @@ import{d as g,c as v,o as i,a as e,n as w,_ as a}from"./index-1bee1cb1.js";const `,N=` `,P=` `,Q=` -`,R=["innerHTML"],U=g({__name:"Icon",props:{class:{},icon:{}},setup(t){const h=t,n=Object.fromEntries(Object.entries(Object.assign({"/src/icons/arrow-down-s-line.svg":c,"/src/icons/arrow-left-s-line.svg":_,"/src/icons/arrow-right-s-line.svg":z,"/src/icons/calendar-2-line.svg":p,"/src/icons/calendar-check-line.svg":d,"/src/icons/calendar-line.svg":H,"/src/icons/calendar-todo-line.svg":r,"/src/icons/check.svg":M,"/src/icons/clipboard-line.svg":m,"/src/icons/close-circle.svg":x,"/src/icons/cloud-line.svg":V,"/src/icons/cloud-off-line.svg":L,"/src/icons/currency-line.svg":C,"/src/icons/donut-chart.svg":f,"/src/icons/download-cloud-2-line.svg":b,"/src/icons/draggable.svg":B,"/src/icons/eye-close.svg":A,"/src/icons/eye-line.svg":u,"/src/icons/file-fill.svg":Z,"/src/icons/global-line.svg":k,"/src/icons/google-fill.svg":y,"/src/icons/grid-line.svg":j,"/src/icons/hand-coin.svg":I,"/src/icons/magic-line.svg":O,"/src/icons/menu-line.svg":S,"/src/icons/moon-fill.svg":$,"/src/icons/pencil-fill.svg":E,"/src/icons/pi-chart-line.svg":T,"/src/icons/plus.svg":q,"/src/icons/refresh-line.svg":D,"/src/icons/save.svg":F,"/src/icons/settings-4-line.svg":G,"/src/icons/shopping-basket-2.svg":J,"/src/icons/skip-down-line.svg":K,"/src/icons/skip-up-line.svg":N,"/src/icons/sun-fill.svg":P,"/src/icons/upload-cloud-2-line.svg":Q})).map(s=>[s[0].replace(/.*\/|\.\w+$/g,""),s[1]])),l=v(()=>h.class),o=v(()=>n[h.icon]);return(s,s1)=>(i(),e("span",{class:w([s.$style.icon,l.value]),innerHTML:o.value},null,10,R))}}),W="m_",X={icon:W},Y={$style:X},v1=a(U,[["__cssModules",Y]]);export{v1 as I}; +`,R=["innerHTML"],U=g({__name:"Icon",props:{class:{},icon:{}},setup(t){const h=t,n=Object.fromEntries(Object.entries(Object.assign({"/src/icons/arrow-down-s-line.svg":c,"/src/icons/arrow-left-s-line.svg":_,"/src/icons/arrow-right-s-line.svg":z,"/src/icons/calendar-2-line.svg":p,"/src/icons/calendar-check-line.svg":d,"/src/icons/calendar-line.svg":H,"/src/icons/calendar-todo-line.svg":r,"/src/icons/check.svg":M,"/src/icons/clipboard-line.svg":m,"/src/icons/close-circle.svg":x,"/src/icons/cloud-line.svg":V,"/src/icons/cloud-off-line.svg":L,"/src/icons/currency-line.svg":C,"/src/icons/donut-chart.svg":f,"/src/icons/download-cloud-2-line.svg":b,"/src/icons/draggable.svg":B,"/src/icons/eye-close.svg":A,"/src/icons/eye-line.svg":u,"/src/icons/file-fill.svg":Z,"/src/icons/global-line.svg":k,"/src/icons/google-fill.svg":y,"/src/icons/grid-line.svg":j,"/src/icons/hand-coin.svg":I,"/src/icons/magic-line.svg":O,"/src/icons/menu-line.svg":S,"/src/icons/moon-fill.svg":$,"/src/icons/pencil-fill.svg":E,"/src/icons/pi-chart-line.svg":T,"/src/icons/plus.svg":q,"/src/icons/refresh-line.svg":D,"/src/icons/save.svg":F,"/src/icons/settings-4-line.svg":G,"/src/icons/shopping-basket-2.svg":J,"/src/icons/skip-down-line.svg":K,"/src/icons/skip-up-line.svg":N,"/src/icons/sun-fill.svg":P,"/src/icons/upload-cloud-2-line.svg":Q})).map(s=>[s[0].replace(/.*\/|\.\w+$/g,""),s[1]])),l=v(()=>h.class),o=v(()=>n[h.icon]);return(s,s1)=>(i(),e("span",{class:w([s.$style.icon,l.value]),innerHTML:o.value},null,10,R))}}),W="H_",X={icon:W},Y={$style:X},v1=a(U,[["__cssModules",Y]]);export{v1 as I}; diff --git a/assets/Income-257a2d07.js b/assets/Income-257a2d07.js new file mode 100644 index 00000000..4e256791 --- /dev/null +++ b/assets/Income-257a2d07.js @@ -0,0 +1 @@ +import{d as o,e,o as r,i as m,k as i}from"./index-635eac34.js";import{B as p}from"./BudgetPane-3f0100ab.js";import"./EChart.vue_vue_type_script_setup_true_lang-b09f4fbe.js";import"./useResizeObserver-3dd0959b.js";import"./budgets-531db56b.js";import"./Pane-ff6685ec.js";import"./Currency-532cc709.js";import"./Button-1ed056c9.js";import"./Icon-f54aec6a.js";import"./useThemeStyles-349ce8f2.js";import"./useMonthNames-a81a4bd7.js";const b=o({__name:"Income",setup(n){const{t}=e();return(a,s)=>(r(),m(p,{title:i(t)("dashboard.income"),type:"income"},null,8,["title"]))}});export{b as default}; diff --git a/assets/Income-7eb229d3.js b/assets/Income-7eb229d3.js deleted file mode 100644 index 937d0eac..00000000 --- a/assets/Income-7eb229d3.js +++ /dev/null @@ -1 +0,0 @@ -import{d as o,e,o as r,i as m,k as i}from"./index-1bee1cb1.js";import{B as p}from"./BudgetPane-21b65ecf.js";import"./EChart.vue_vue_type_script_setup_true_lang-e0bf0237.js";import"./useResizeObserver-9c83b660.js";import"./budgets-531db56b.js";import"./Pane-ff954356.js";import"./Currency-e1b802bf.js";import"./Button-6d17a4fd.js";import"./Icon-3e6d397d.js";import"./useThemeStyles-0768f685.js";import"./useMonthNames-09c7e203.js";const b=o({__name:"Income",setup(n){const{t}=e();return(a,s)=>(r(),m(p,{title:i(t)("dashboard.income"),type:"income"},null,8,["title"]))}});export{b as default}; diff --git a/assets/Link-2f976172.js b/assets/Link-2f976172.js deleted file mode 100644 index cf96f436..00000000 --- a/assets/Link-2f976172.js +++ /dev/null @@ -1 +0,0 @@ -import{d,u as f,k as n,a7 as k,y as _,c as y,h as v,$ as h,a0 as C,o as a,i as c,w as L,n as l,p as $,E as b,_ as w}from"./index-1bee1cb1.js";import{I as B}from"./Icon-3e6d397d.js";import{u as M}from"./useThemeStyles-0768f685.js";const S=d({__name:"Link",props:{class:{},icon:{},color:{default:"primary"},custom:{type:Boolean,default:void 0},tooltip:{},tooltipPosition:{},to:{}},setup(i){const s=i;f(o=>({"5a8aab04":n(e).pure.base,"11b4a92e":n(e).pure.hover}));const r=k(),t=_(),u=y(()=>[s.class,t.link,{[t.custom]:s.custom??r.default}]),e=M(()=>s.color);return(o,q)=>{const p=v("RouterLink"),m=h("tooltip");return C((a(),c(p,{to:o.to,class:l(u.value)},{default:L(()=>[o.icon?(a(),c(B,{key:0,class:l(o.$style.icon),icon:o.icon},null,8,["class","icon"])):$("",!0),b(o.$slots,"default")]),_:3},8,["to","class"])),[[m,{text:o.tooltip,position:o.tooltipPosition}]])}}}),D="o",I="p",P="q",R={link:D,icon:I,custom:P},V={$style:R},T=w(S,[["__cssModules",V]]);export{T as L}; diff --git a/assets/Link-b21ad2f6.js b/assets/Link-b21ad2f6.js new file mode 100644 index 00000000..0f94a3d7 --- /dev/null +++ b/assets/Link-b21ad2f6.js @@ -0,0 +1 @@ +import{d,u as f,k as n,a7 as k,y as _,c as y,h,$ as v,a0 as C,o as a,i as c,w as L,n as i,p as $,E as b,_ as w}from"./index-635eac34.js";import{I as B}from"./Icon-f54aec6a.js";import{u as M}from"./useThemeStyles-349ce8f2.js";const S=d({__name:"Link",props:{class:{},icon:{},color:{default:"primary"},custom:{type:Boolean,default:void 0},tooltip:{},tooltipPosition:{},to:{}},setup(l){const s=l;f(o=>({"5a8aab04":n(e).pure.base,"11b4a92e":n(e).pure.hover}));const r=k(),t=_(),u=y(()=>[s.class,t.link,{[t.custom]:s.custom??r.default}]),e=M(()=>s.color);return(o,j)=>{const p=h("RouterLink"),m=v("tooltip");return C((a(),c(p,{to:o.to,class:i(u.value)},{default:L(()=>[o.icon?(a(),c(B,{key:0,class:i(o.$style.icon),icon:o.icon},null,8,["class","icon"])):$("",!0),b(o.$slots,"default")]),_:3},8,["to","class"])),[[m,{text:o.tooltip,position:o.tooltipPosition}]])}}}),D="h",I="i",P="j",R={link:D,icon:I,custom:P},V={$style:R},T=w(S,[["__cssModules",V]]);export{T as L}; diff --git a/assets/Link-cbb29860.css b/assets/Link-cbb29860.css new file mode 100644 index 00000000..723bf2bd --- /dev/null +++ b/assets/Link-cbb29860.css @@ -0,0 +1 @@ +.h{background:transparent;color:var(--5a8aab04);transition:all var(--transition-s)}.h .i{width:20px;height:20px}.h.j{text-decoration:none;color:inherit;outline:none}@media (pointer: fine){.h:not(.j):hover{background:transparent;color:var(--11b4a92e)}} diff --git a/assets/Link-ef46abcf.css b/assets/Link-ef46abcf.css deleted file mode 100644 index dc9060dc..00000000 --- a/assets/Link-ef46abcf.css +++ /dev/null @@ -1 +0,0 @@ -.o{background:transparent;color:var(--5a8aab04);transition:all var(--transition-s)}.o .p{width:20px;height:20px}.o.q{text-decoration:none;color:inherit;outline:none}@media (pointer: fine){.o:not(.q):hover{background:transparent;color:var(--11b4a92e)}} diff --git a/assets/Overview-2227f059.css b/assets/Overview-2227f059.css deleted file mode 100644 index d0ac6086..00000000 --- a/assets/Overview-2227f059.css +++ /dev/null @@ -1 +0,0 @@ -.ib{overflow:visible;pointer-events:none}.A_{display:flex;width:100%;height:100%}.B_{display:flex;justify-content:space-between;grid-gap:2px;padding:30px;width:100%;height:100%;position:relative;background:var(--0b68ca22)}.B_ .C_{position:absolute;width:16px;height:16px;top:18px;right:18px;opacity:0;transform:translate(5px);transition:all var(--transition-m)}.B_:hover .C_{opacity:1;transform:none}.D_{display:flex;flex-direction:column;color:var(--7e5a6dd0);width:100%}.D_ .E_{font-weight:var(--font-weight-xl);font-size:var(--font-size-s)}.D_ .F_{font-size:var(--font-size-xxl);font-weight:var(--font-weight-xxl)}.D_ .G_{font-size:var(--font-size-l);font-weight:var(--font-weight-xxl);color:var(--630b55cb)}.D_ .H_{display:flex;flex-direction:column;align-items:center;justify-content:space-evenly;width:100%;height:100%;text-align:center}.D_ .H_ .I_{height:25px}.D_ .H_ .J_{font-size:var(--font-size-s);font-weight:var(--font-weight-l)}.K_{width:30%}@media all and (max-width: 786px){.B_{box-shadow:0 2px 2px var(--57562074)}.D_ .F_{margin-top:5px}.K_{width:50%}}.g_{--panels: 4;display:grid;grid-template:1fr/repeat(var(--panels),1fr);width:100%;height:150px;grid-gap:10px}@media all and (max-width: 786px){.g_{grid-template:repeat(var(--panels),1fr)/1fr;height:auto}}.g_>*{opacity:0;animation:var(--animation-fade-in-right) var(--transition-m) forwards}.g_.h_>*{animation:none;opacity:1;transform:none}.g_>*:nth-child(1){animation-delay:calc(var(--transition-s) * .25)}.g_>*:nth-child(2){animation-delay:calc(var(--transition-s) * .5)}.g_>*:nth-child(3){animation-delay:calc(var(--transition-s) * .75)}.g_>*:nth-child(4){animation-delay:calc(var(--transition-s) * 1)}.d{display:grid;grid-template:auto 1fr/1fr;overflow:hidden;height:100%}@media all and (max-width: 786px){.d{grid-template:1fr/1fr}.d .e{display:none}} diff --git a/assets/Overview-4f6e3f7c.js b/assets/Overview-4f6e3f7c.js new file mode 100644 index 00000000..5ff76580 --- /dev/null +++ b/assets/Overview-4f6e3f7c.js @@ -0,0 +1 @@ +import{d as C,c as a,o as r,i as w,n as l,_ as P,u as x,m as F,a as d,w as N,p as B,b as T,l as u,t as k,F as O,q,s as Q,f as R,e as j,v as G,x as H,y as J,z as D,A as V,B as f,k as t,C as K,D as U}from"./index-635eac34.js";import{A as W}from"./AsyncComponent-3263497c.js";import{t as z}from"./budgets-531db56b.js";import{C as X}from"./Currency-532cc709.js";import{I as E}from"./Icon-f54aec6a.js";import{L as Z}from"./Link-b21ad2f6.js";import{u as ee,i as se,a as ae,b as te,_ as le}from"./EChart.vue_vue_type_script_setup_true_lang-b09f4fbe.js";import"./useThemeStyles-349ce8f2.js";import"./useResizeObserver-3dd0959b.js";const oe=C({__name:"SummaryPanelChart",props:{class:{},color:{},values:{}},setup(v){const s=v;ee([se,ae,te]);const o=a(()=>s.class),n=a(()=>({animation:!1,xAxis:{type:"category",show:!1},yAxis:{type:"value",show:!1,min:Math.min(...s.values)},grid:{top:"5%",left:"5%",bottom:"5%",right:"5%"},series:[{data:s.values,type:"line",smooth:!0,showSymbol:!1,lineStyle:{width:5,cap:"round",color:s.color}}]}));return(i,m)=>(r(),w(le,{class:l([i.$style.summaryPanelChart,o.value]),options:n.value},null,8,["class","options"]))}}),ne="L_",re={summaryPanelChart:ne},ce={$style:re},ue=P(oe,[["__cssModules",ce]]),ie=C({__name:"SummaryPanel",props:{class:{},title:{},subTitle:{},to:{},alt:{},color:{},values:{}},setup(v){const s=v;x(e=>({"0b68ca22":_.value,"7e5a6dd0":h.value,"630b55cb":$.value,57562074:m.value}));const o=a(()=>s.class),n=F(.25),i=a(()=>Array.isArray(s.values)?s.values[s.values.length-1]:s.values),m=a(()=>`var(--c-${s.color}-shadow)`),h=a(()=>`var(--c-${s.color}-text-accent)`),_=a(()=>`var(--c-${s.color}-light)`),$=a(()=>`var(--c-${s.color}-light-dimmed)`),y=a(()=>s.to?Z:"div");return(e,A)=>(r(),d("div",{ref_key:"root",ref:n,style:Q(e.$style.wrapper)},[(r(),w(q(y.value),{to:e.to,class:l([e.$style.summaryPanel,o.value])},{default:N(()=>[e.to?(r(),w(E,{key:0,class:l(e.$style.editIcon),icon:"pencil-fill"},null,8,["class"])):B("",!0),T("div",{class:l(e.$style.header)},[e.alt?(r(),d("div",{key:0,class:l(e.$style.placeholder)},[u(E,{class:l(e.$style.icon),icon:"calendar-2-line"},null,8,["class"]),T("span",{class:l(e.$style.text)},k(e.alt),3)],2)):(r(),d(O,{key:1},[T("h2",{class:l(e.$style.head)},k(e.title),3),u(X,{class:l(e.$style.title),value:i.value},null,8,["class","value"]),e.subTitle?(r(),d("span",{key:0,class:l(e.$style.subTitle)},k(e.subTitle),3)):B("",!0)],64))],2),Array.isArray(e.values)?(r(),w(ue,{key:1,class:l(e.$style.chart),color:$.value,values:e.values},null,8,["class","color","values"])):B("",!0)]),_:1},8,["to","class"]))],4))}}),me="u_",ve="v_",de="w_",ye="x_",pe="y_",he="z_",_e="A_",$e="B_",be="C_",fe="D_",ge="E_",we={wrapper:me,summaryPanel:ve,editIcon:de,header:ye,head:pe,title:he,subTitle:_e,placeholder:$e,icon:be,text:fe,chart:ge},Ce={$style:we},g=P(ie,[["__cssModules",Ce]]),Pe=C({__name:"SummaryPanels",props:{class:{}},setup(v){const s=v,{state:o}=R(),{t:n,n:i}=j(),m=G(),h=H(0),_=J(),$=a(()=>[s.class,_.summaryPanels,{[_.unAnimated]:h.value>=3}]),y=a(()=>z(o.income)),e=a(()=>z(o.expenses)),A=a(()=>D(y.value)),M=a(()=>D(e.value)),b=a(()=>V(A.value,M.value)),L=a(()=>f(b.value)),S=a(()=>{const c=f(e.value),p=f(y.value);return p?c/p:0}),I=a(()=>{const c=m.year.value===o.activeYear?m.month.value+1:0;return f(V(y.value.slice(c),e.value.slice(c)))}),Y=a(()=>{const c=b.value[b.value.length-1];return c?I.value/c:0});return(c,p)=>(r(),d("div",{class:l($.value),onAnimationend:p[0]||(p[0]=Ee=>h.value++)},[u(g,{values:A.value,color:"success",to:"/income",title:t(n)("dashboard.income")},null,8,["values","title"]),u(g,{"sub-title":t(i)(S.value,"percent"),to:"/expenses",values:M.value,color:"warning",title:t(n)("dashboard.expenses")},null,8,["sub-title","values","title"]),u(g,{"sub-title":t(i)(L.value?1-S.value:0,"percent"),values:b.value,color:"primary",title:t(n)("dashboard.endingBalance")},null,8,["sub-title","values","title"]),u(g,{"sub-title":t(i)(Y.value,"percent"),alt:t(o).activeYeart(m).year.value?t(n)("dashboard.yearInTheFuture"):void 0,values:I.value,color:"secondary",title:t(n)("dashboard.remainingBalance",{year:t(o).activeYear+1})},null,8,["sub-title","alt","values","title"])],34))}}),Ae="Q",Be="R",Te={summaryPanels:Ae,unAnimated:Be},ke={$style:Te},Me=P(Pe,[["__cssModules",ke]]),Se=C({__name:"Overview",setup(v){const s=U();return(o,n)=>(r(),d("div",{class:l(o.$style.overview)},[u(Me),u(W,{show:t(s)!=="mobile",class:l(o.$style.chart),import:()=>K(()=>import("./DistributionChart-be2e2d0d.js"),["assets/DistributionChart-be2e2d0d.js","assets/index-635eac34.js","assets/index-89b69f17.css","assets/ChartPlaceholder-743c445d.js","assets/Icon-f54aec6a.js","assets/Icon-2d00bfea.css","assets/ChartPlaceholder-26119b8c.css","assets/EChart.vue_vue_type_script_setup_true_lang-b09f4fbe.js","assets/useResizeObserver-3dd0959b.js","assets/budgets-531db56b.js","assets/DistributionChart-93c1fc6c.css"])},null,8,["show","class","import"])],2))}}),Ie="o",De="p",Ve={overview:Ie,chart:De},ze={$style:Ve},je=P(Se,[["__cssModules",ze]]);export{je as default}; diff --git a/assets/Overview-70f23a5f.css b/assets/Overview-70f23a5f.css new file mode 100644 index 00000000..9479a20a --- /dev/null +++ b/assets/Overview-70f23a5f.css @@ -0,0 +1 @@ +.L_{overflow:visible;pointer-events:none}.u_{display:flex;width:100%;height:100%}.v_{display:flex;justify-content:space-between;grid-gap:2px;padding:30px;width:100%;height:100%;position:relative;background:var(--0b68ca22)}.v_ .w_{position:absolute;width:16px;height:16px;top:18px;right:18px;opacity:0;transform:translate(5px);transition:all var(--transition-m)}.v_:hover .w_{opacity:1;transform:none}.x_{display:flex;flex-direction:column;color:var(--7e5a6dd0);width:100%}.x_ .y_{font-weight:var(--font-weight-xl);font-size:var(--font-size-s)}.x_ .z_{font-size:var(--font-size-xxl);font-weight:var(--font-weight-xxl)}.x_ .A_{font-size:var(--font-size-l);font-weight:var(--font-weight-xxl);color:var(--630b55cb)}.x_ .B_{display:flex;flex-direction:column;align-items:center;justify-content:space-evenly;width:100%;height:100%;text-align:center}.x_ .B_ .C_{height:25px}.x_ .B_ .D_{font-size:var(--font-size-s);font-weight:var(--font-weight-l)}.E_{width:30%}@media all and (max-width: 786px){.v_{box-shadow:0 2px 2px var(--57562074)}.x_ .z_{margin-top:5px}.E_{width:50%}}.Q{--panels: 4;display:grid;grid-template:1fr/repeat(var(--panels),1fr);width:100%;height:150px;grid-gap:10px}@media all and (max-width: 786px){.Q{grid-template:repeat(var(--panels),1fr)/1fr;height:auto}}.Q>*{opacity:0;animation:var(--animation-fade-in-right) var(--transition-m) forwards}.Q.R>*{animation:none;opacity:1;transform:none}.Q>*:nth-child(1){animation-delay:calc(var(--transition-s) * .25)}.Q>*:nth-child(2){animation-delay:calc(var(--transition-s) * .5)}.Q>*:nth-child(3){animation-delay:calc(var(--transition-s) * .75)}.Q>*:nth-child(4){animation-delay:calc(var(--transition-s) * 1)}.o{display:grid;grid-template:auto 1fr/1fr;overflow:hidden;height:100%}@media all and (max-width: 786px){.o{grid-template:1fr/1fr}.o .p{display:none}} diff --git a/assets/Overview-d149b0fb.js b/assets/Overview-d149b0fb.js deleted file mode 100644 index c0ec61f6..00000000 --- a/assets/Overview-d149b0fb.js +++ /dev/null @@ -1 +0,0 @@ -import{d as P,c as a,o as r,i as C,n as l,_ as w,u as L,m as N,a as d,w as O,p as B,b as T,l as u,t as k,F as q,q as x,s as G,f as H,e as J,v as K,x as Q,y as R,z as D,A as V,B as f,k as t,C as j,D as U}from"./index-1bee1cb1.js";import{A as W}from"./AsyncComponent-f4427d1d.js";import{t as E}from"./budgets-531db56b.js";import{C as X}from"./Currency-e1b802bf.js";import{I as F}from"./Icon-3e6d397d.js";import{L as Z}from"./Link-2f976172.js";import{u as ee,i as se,a as ae,b as te,_ as le}from"./EChart.vue_vue_type_script_setup_true_lang-e0bf0237.js";import"./useThemeStyles-0768f685.js";import"./useResizeObserver-9c83b660.js";const oe=P({__name:"SummaryPanelChart",props:{class:{},color:{},values:{}},setup(v){const s=v;ee([se,ae,te]);const o=a(()=>s.class),n=a(()=>({animation:!1,xAxis:{type:"category",show:!1},yAxis:{type:"value",show:!1,min:Math.min(...s.values)},grid:{top:"5%",left:"5%",bottom:"5%",right:"5%"},series:[{data:s.values,type:"line",smooth:!0,showSymbol:!1,lineStyle:{width:5,cap:"round",color:s.color}}]}));return(i,m)=>(r(),C(le,{class:l([i.$style.summaryPanelChart,o.value]),options:n.value},null,8,["class","options"]))}}),ne="ib",re={summaryPanelChart:ne},ce={$style:re},ue=w(oe,[["__cssModules",ce]]),ie=P({__name:"SummaryPanel",props:{class:{},title:{},subTitle:{},to:{},alt:{},color:{},values:{}},setup(v){const s=v;L(e=>({"0b68ca22":_.value,"7e5a6dd0":h.value,"630b55cb":$.value,57562074:m.value}));const o=a(()=>s.class),n=N(.25),i=a(()=>Array.isArray(s.values)?s.values[s.values.length-1]:s.values),m=a(()=>`var(--c-${s.color}-shadow)`),h=a(()=>`var(--c-${s.color}-text-accent)`),_=a(()=>`var(--c-${s.color}-light)`),$=a(()=>`var(--c-${s.color}-light-dimmed)`),y=a(()=>s.to?Z:"div");return(e,A)=>(r(),d("div",{ref_key:"root",ref:n,style:G(e.$style.wrapper)},[(r(),C(x(y.value),{to:e.to,class:l([e.$style.summaryPanel,o.value])},{default:O(()=>[e.to?(r(),C(F,{key:0,class:l(e.$style.editIcon),icon:"pencil-fill"},null,8,["class"])):B("",!0),T("div",{class:l(e.$style.header)},[e.alt?(r(),d("div",{key:0,class:l(e.$style.placeholder)},[u(F,{class:l(e.$style.icon),icon:"calendar-2-line"},null,8,["class"]),T("span",{class:l(e.$style.text)},k(e.alt),3)],2)):(r(),d(q,{key:1},[T("h2",{class:l(e.$style.head)},k(e.title),3),u(X,{class:l(e.$style.title),value:i.value},null,8,["class","value"]),e.subTitle?(r(),d("span",{key:0,class:l(e.$style.subTitle)},k(e.subTitle),3)):B("",!0)],64))],2),Array.isArray(e.values)?(r(),C(ue,{key:1,class:l(e.$style.chart),color:$.value,values:e.values},null,8,["class","color","values"])):B("",!0)]),_:1},8,["to","class"]))],4))}}),me="A_",ve="B_",de="C_",ye="D_",pe="E_",he="F_",_e="G_",$e="H_",be="I_",fe="J_",ge="K_",Ce={wrapper:me,summaryPanel:ve,editIcon:de,header:ye,head:pe,title:he,subTitle:_e,placeholder:$e,icon:be,text:fe,chart:ge},Pe={$style:Ce},g=w(ie,[["__cssModules",Pe]]),we=P({__name:"SummaryPanels",props:{class:{}},setup(v){const s=v,{state:o}=H(),{t:n,n:i}=J(),m=K(),h=Q(0),_=R(),$=a(()=>[s.class,_.summaryPanels,{[_.unAnimated]:h.value>=3}]),y=a(()=>E(o.income)),e=a(()=>E(o.expenses)),A=a(()=>D(y.value)),M=a(()=>D(e.value)),b=a(()=>V(A.value,M.value)),Y=a(()=>f(b.value)),S=a(()=>{const c=f(e.value),p=f(y.value);return p?c/p:0}),I=a(()=>{const c=m.year.value===o.activeYear?m.month.value+1:0;return f(V(y.value.slice(c),e.value.slice(c)))}),z=a(()=>{const c=b.value[b.value.length-1];return c?I.value/c:0});return(c,p)=>(r(),d("div",{class:l($.value),onAnimationend:p[0]||(p[0]=Fe=>h.value++)},[u(g,{values:A.value,color:"success",to:"/income",title:t(n)("dashboard.income")},null,8,["values","title"]),u(g,{"sub-title":t(i)(S.value,"percent"),to:"/expenses",values:M.value,color:"warning",title:t(n)("dashboard.expenses")},null,8,["sub-title","values","title"]),u(g,{"sub-title":t(i)(Y.value?1-S.value:0,"percent"),values:b.value,color:"primary",title:t(n)("dashboard.endingBalance")},null,8,["sub-title","values","title"]),u(g,{"sub-title":t(i)(z.value,"percent"),alt:t(o).activeYeart(m).year.value?t(n)("dashboard.yearInTheFuture"):void 0,values:I.value,color:"secondary",title:t(n)("dashboard.remainingBalance",{year:t(o).activeYear+1})},null,8,["sub-title","alt","values","title"])],34))}}),Ae="g_",Be="h_",Te={summaryPanels:Ae,unAnimated:Be},ke={$style:Te},Me=w(we,[["__cssModules",ke]]),Se=P({__name:"Overview",setup(v){const s=U();return(o,n)=>(r(),d("div",{class:l(o.$style.overview)},[u(Me),u(W,{show:t(s)!=="mobile",class:l(o.$style.chart),import:()=>j(()=>import("./DistributionChart-ae33c3b2.js"),["assets/DistributionChart-ae33c3b2.js","assets/index-1bee1cb1.js","assets/index-8cbb8b66.css","assets/ChartPlaceholder-46abf122.js","assets/Icon-3e6d397d.js","assets/Icon-f442fa03.css","assets/ChartPlaceholder-9d647a5f.css","assets/EChart.vue_vue_type_script_setup_true_lang-e0bf0237.js","assets/useResizeObserver-9c83b660.js","assets/budgets-531db56b.js","assets/DistributionChart-8ece1ec6.css"])},null,8,["show","class","import"])],2))}}),Ie="d",De="e",Ve={overview:Ie,chart:De},Ee={$style:Ve},Je=w(Se,[["__cssModules",Ee]]);export{Je as default}; diff --git a/assets/Pane-b1cd382e.css b/assets/Pane-b1cd382e.css new file mode 100644 index 00000000..b192f4a7 --- /dev/null +++ b/assets/Pane-b1cd382e.css @@ -0,0 +1 @@ +.Z{display:flex;flex-direction:column;height:100%;overflow:hidden;background:var(--app-background)}.__{display:flex;justify-content:space-between;position:sticky;top:0;padding:16px 10px;background:var(--app-background);animation:var(--animation-fade-in-right) var(--transition-s);transition:all var(--transition-m)}.__ .a_{display:flex;align-items:center;gap:8px;font-size:var(--font-size-s);font-weight:var(--font-weight-l)}.b_{overflow:auto;flex-grow:1;padding:0 10px}@media all and (max-width: 786px){.Z{padding:0}.__{padding:20px 10px 15px;align-items:flex-end}.b_{padding:10px}} diff --git a/assets/Pane-ecb4ffff.css b/assets/Pane-ecb4ffff.css deleted file mode 100644 index 349ad1bb..00000000 --- a/assets/Pane-ecb4ffff.css +++ /dev/null @@ -1 +0,0 @@ -.C{display:flex;flex-direction:column;height:100%;overflow:hidden;background:var(--app-background)}.D{display:flex;justify-content:space-between;position:sticky;top:0;padding:16px 10px;background:var(--app-background);animation:var(--animation-fade-in-right) var(--transition-s);transition:all var(--transition-m)}.D .E{display:flex;align-items:center;gap:8px;font-size:var(--font-size-s);font-weight:var(--font-weight-l)}.F{overflow:auto;flex-grow:1;padding:0 10px}@media all and (max-width: 786px){.C{padding:0}.D{padding:20px 10px 15px;align-items:flex-end}.F{padding:10px}} diff --git a/assets/Pane-ff954356.js b/assets/Pane-ff6685ec.js similarity index 53% rename from assets/Pane-ff954356.js rename to assets/Pane-ff6685ec.js index d5dfd719..87a5936a 100644 --- a/assets/Pane-ff954356.js +++ b/assets/Pane-ff6685ec.js @@ -1 +1 @@ -import{C as i}from"./Currency-e1b802bf.js";import{Q as m,d as y,x as u,c as f,o as d,a as p,b as r,n as l,E as n,t as h,F as v,l as $,p as k,_ as b}from"./index-1bee1cb1.js";const C=(c,o,t,a=5)=>{m(()=>{var e;const s=c.value;s&&s.style.removeProperty("box-shadow"),(e=o.value)==null||e.addEventListener("scroll",()=>{s&&o.value&&(o.value.scrollTop>a?s.style.setProperty("box-shadow",t):s.style.removeProperty("box-shadow"))})})},P={key:1},w=r("span",null," - ",-1),_=y({__name:"Pane",props:{class:{},title:{},amount:{}},setup(c){const o=c,t=u(),a=u(),s=f(()=>o.class);return C(t,a,"var(--app-scroll-box-shadow)"),(e,V)=>(d(),p("div",{class:l(e.$style.pane)},[r("div",{ref_key:"header",ref:t,class:l(e.$style.header)},[r("h1",{class:l(e.$style.title)},[n(e.$slots,"beforeTitle"),e.$slots.title?n(e.$slots,"title",{key:0}):(d(),p("span",P,h(e.title),1)),e.amount?(d(),p(v,{key:2},[w,$(i,{value:e.amount},null,8,["value"])],64)):k("",!0)],2),n(e.$slots,"header")],2),r("div",{ref_key:"content",ref:a,class:l([e.$style.content,s.value])},[n(e.$slots,"default")],2)],2))}}),E="C",S="D",B="E",F="F",M={pane:E,header:S,title:B,content:F},N={$style:M},z=b(_,[["__cssModules",N]]);export{z as P}; +import{C as i}from"./Currency-532cc709.js";import{Q as m,d as y,x as u,c as f,o as d,a as p,b as r,n as l,E as n,t as h,F as v,l as $,p as _,_ as b}from"./index-635eac34.js";const k=(c,o,t,a=5)=>{m(()=>{var e;const s=c.value;s&&s.style.removeProperty("box-shadow"),(e=o.value)==null||e.addEventListener("scroll",()=>{s&&o.value&&(o.value.scrollTop>a?s.style.setProperty("box-shadow",t):s.style.removeProperty("box-shadow"))})})},P={key:1},w=r("span",null," - ",-1),C=y({__name:"Pane",props:{class:{},title:{},amount:{}},setup(c){const o=c,t=u(),a=u(),s=f(()=>o.class);return k(t,a,"var(--app-scroll-box-shadow)"),(e,F)=>(d(),p("div",{class:l(e.$style.pane)},[r("div",{ref_key:"header",ref:t,class:l(e.$style.header)},[r("h1",{class:l(e.$style.title)},[n(e.$slots,"beforeTitle"),e.$slots.title?n(e.$slots,"title",{key:0}):(d(),p("span",P,h(e.title),1)),e.amount?(d(),p(v,{key:2},[w,$(i,{value:e.amount},null,8,["value"])],64)):_("",!0)],2),n(e.$slots,"header")],2),r("div",{ref_key:"content",ref:a,class:l([e.$style.content,s.value])},[n(e.$slots,"default")],2)],2))}}),S="Z",B="__",E="a_",M="b_",N={pane:S,header:B,title:E,content:M},V={$style:N},D=b(C,[["__cssModules",V]]);export{D as P}; diff --git a/assets/Summary-a05fd135.js b/assets/Summary-646384f7.js similarity index 50% rename from assets/Summary-a05fd135.js rename to assets/Summary-646384f7.js index 0bd14dc6..124d1613 100644 --- a/assets/Summary-a05fd135.js +++ b/assets/Summary-646384f7.js @@ -1 +1 @@ -import{d as T,o as a,a as r,b as n,t as l,n as t,E as F,_ as w,e as C,f as B,c as k,i as E,w as N,r as h,k as s,F as $,B as f,G as M,H as V,p as L,A as P,z as Q,l as S,C as R,D as H}from"./index-1bee1cb1.js";import{A as I}from"./AsyncComponent-f4427d1d.js";import{f as O,t as A}from"./budgets-531db56b.js";import{u as G}from"./useMonthNames-09c7e203.js";const U=T({__name:"SummaryTable",props:{title:{}},setup(g){return(d,m)=>(a(),r("div",{class:t(d.$style.summaryTable)},[n("h1",{class:t(d.$style.title)},l(d.title),3),n("div",{class:t(d.$style.table)},[F(d.$slots,"default")],2)],2))}}),W="u_",X="v_",Y="w_",Z={summaryTable:W,title:X,table:Y},j={$style:Z},z=w(U,[["__cssModules",j]]),q=n("span",null,null,-1),J=T({__name:"GroupsSummaryTable",props:{class:{},groups:{},title:{}},setup(g){const d=g,{t:m,n:o}=C(),{isCurrentMonth:b}=B(),v=G(),i=k(()=>O(d.groups));return(u,e)=>(a(),E(z,{title:u.title},{default:N(()=>[n("div",{class:t(u.$style.table)},[q,(a(!0),r($,null,h(s(v),(p,c)=>(a(),r("span",{key:p,class:t([u.$style.bold,{[u.$style.currentMonth]:s(b)(c)}])},l(p),3))),128)),n("span",{class:t(u.$style.bold)},l(s(m)("budget.total")),3),n("span",{class:t(u.$style.bold)},l(s(m)("budget.average")),3),(a(!0),r($,null,h(i.value,(p,c)=>(a(),r($,{key:p.id},[n("span",{class:t(u.$style.bold)},l(p.name),3),(a(!0),r($,null,h(p.totals,(y,_)=>(a(),r("span",{key:_,class:t({[u.$style.current]:s(b)(_),[u.$style.first]:c===0,[u.$style.last]:c===i.value.length-1})},l(s(o)(y,"currency")),3))),128)),n("span",{class:t(u.$style.bold)},l(s(o)(s(f)(p.totals),"currency")),3),n("span",{class:t(u.$style.bold)},l(s(o)(s(M)(p.totals),"currency")),3)],64))),128)),i.value.length>1?(a(),r($,{key:0},[n("span",{class:t(u.$style.bold)},l(s(m)("budget.total")),3),(a(!0),r($,null,h(s(v),(p,c)=>(a(),r("span",{key:p,class:t(u.$style.bold)},l(s(o)(s(f)(i.value.map(y=>y.totals[c])),"currency")),3))),128)),n("span",{class:t(u.$style.underline)},l(s(o)(s(f)(s(V)(...i.value.map(p=>p.totals))),"currency")),3),n("span",{class:t(u.$style.underline)},l(s(o)(s(M)(s(V)(...i.value.map(p=>p.totals))),"currency")),3)],64)):L("",!0)],2)]),_:1},8,["title"]))}}),K="Q",x="R",ss="S",es="T",ts="U",ls="V",ns="W",as="X",rs={table:K,underline:x,bold:ss,muted:es,currentMonth:ts,current:ls,first:ns,last:as},os={$style:rs},D=w(J,[["__cssModules",os]]),us=n("span",null,null,-1),cs=n("span",null,null,-1),ys=n("span",null,null,-1),ds=T({__name:"TotalsSummaryTable",props:{income:{default:()=>[]},expenses:{default:()=>[]},title:{}},setup(g){const d=g,{t:m,n:o}=C(),{isCurrentMonth:b}=B(),v=G(),i=k(()=>P(d.income,d.expenses)),u=k(()=>Q(i.value));return(e,p)=>(a(),E(z,{title:e.title},{default:N(()=>[n("div",{class:t(e.$style.table)},[us,(a(!0),r($,null,h(s(v),(c,y)=>(a(),r("span",{key:c,class:t([e.$style.bold,{[e.$style.currentMonth]:s(b)(y)}])},l(c),3))),128)),n("span",{class:t(e.$style.bold)},l(s(m)("budget.total")),3),n("span",{class:t(e.$style.bold)},l(s(m)("budget.average")),3),n("span",{class:t([e.$style.bold,e.$style.muted])},l(s(m)("dashboard.income")),3),(a(!0),r($,null,h(e.income,(c,y)=>(a(),r("span",{key:y,class:t([e.$style.muted,e.$style.first,e.$style.income,{[e.$style.current]:s(b)(y)}])},l(s(o)(c,"currency")),3))),128)),n("span",{class:t(e.$style.muted)},l(s(o)(s(f)(e.income),"currency")),3),n("span",{class:t(e.$style.muted)},l(s(o)(s(M)(e.income),"currency")),3),n("span",{class:t([e.$style.bold,e.$style.muted])},l(s(m)("dashboard.expenses")),3),(a(!0),r($,null,h(e.expenses,(c,y)=>(a(),r("span",{key:y,class:t([e.$style.muted,e.$style.expense,{[e.$style.current]:s(b)(y)}])},l(s(o)(c,"currency")),3))),128)),n("span",{class:t(e.$style.muted)},l(s(o)(s(f)(e.expenses),"currency")),3),n("span",{class:t(e.$style.muted)},l(s(o)(s(M)(e.expenses),"currency")),3),n("span",{class:t([e.$style.bold,e.$style.muted])},l(s(m)("dashboard.netSavings")),3),(a(!0),r($,null,h(i.value,(c,y)=>(a(),r("span",{key:y,class:t([e.$style.muted,{[e.$style.current]:s(b)(y),[e.$style.overdrawn]:c<0}])},l(s(o)(c,"currency")),3))),128)),n("span",{class:t(e.$style.muted)},l(s(o)(s(f)(i.value),"currency")),3),n("span",{class:t(e.$style.muted)},l(s(o)(s(M)(i.value),"currency")),3),n("span",{class:t(e.$style.bold)},l(s(m)("dashboard.endingBalance")),3),(a(!0),r($,null,h(u.value,(c,y)=>(a(),r("span",{key:y,class:t([e.$style.bold,e.$style.last,{[e.$style.current]:s(b)(y),[e.$style.overdrawn]:c<0}])},l(s(o)(c,"currency")),3))),128)),cs,ys],2)]),_:1},8,["title"]))}}),ms="Y",ps="Z",is="__",$s="a_",bs="b_",hs="c_",vs="d_",fs="e_",gs="f_",Ms={table:ms,underline:ps,bold:is,muted:$s,currentMonth:bs,current:hs,first:vs,last:fs,overdrawn:gs},ks={$style:Ms},Ss=w(ds,[["__cssModules",ks]]),Ts=T({__name:"Summary",setup(g){const{state:d}=B(),{t:m}=C(),o=H(),b=k(()=>A(d.income)),v=k(()=>A(d.expenses));return(i,u)=>(a(),r("div",{class:t(i.$style.summary)},[S(I,{show:s(o)!=="mobile",class:t(i.$style.chart),import:()=>R(()=>import("./DevelopmentChart-b67e1a9c.js"),["assets/DevelopmentChart-b67e1a9c.js","assets/index-1bee1cb1.js","assets/index-8cbb8b66.css","assets/ChartPlaceholder-46abf122.js","assets/Icon-3e6d397d.js","assets/Icon-f442fa03.css","assets/ChartPlaceholder-9d647a5f.css","assets/EChart.vue_vue_type_script_setup_true_lang-e0bf0237.js","assets/useResizeObserver-9c83b660.js","assets/useMonthNames-09c7e203.js","assets/budgets-531db56b.js","assets/DevelopmentChart-a1189b00.css"])},null,8,["show","class","import"]),S(Ss,{title:s(m)("dashboard.summary"),income:b.value,expenses:v.value},null,8,["title","income","expenses"]),S(D,{title:s(m)("dashboard.income"),groups:s(d).income},null,8,["title","groups"]),S(D,{title:s(m)("dashboard.expenses"),groups:s(d).expenses},null,8,["title","groups"])],2))}}),ws="_",Cs="a",Bs={summary:ws,chart:Cs},_s={$style:Bs},Ns=w(Ts,[["__cssModules",_s]]);export{Ns as default}; +import{d as T,o as a,a as r,b as n,t as l,n as t,E as L,_ as w,e as C,f as B,c as k,i as N,w as V,r as h,k as s,F as $,B as f,G as M,H as D,p as H,A as I,z as P,l as S,C as J,D as K}from"./index-635eac34.js";import{A as O}from"./AsyncComponent-3263497c.js";import{f as Q,t as E}from"./budgets-531db56b.js";import{u as z}from"./useMonthNames-a81a4bd7.js";const R=T({__name:"SummaryTable",props:{title:{}},setup(g){return(d,m)=>(a(),r("div",{class:t(d.$style.summaryTable)},[n("h1",{class:t(d.$style.title)},l(d.title),3),n("div",{class:t(d.$style.table)},[L(d.$slots,"default")],2)],2))}}),j="m_",q="n_",U="o_",W={summaryTable:j,title:q,table:U},X={$style:W},F=w(R,[["__cssModules",X]]),Y=n("span",null,null,-1),Z=T({__name:"GroupsSummaryTable",props:{class:{},groups:{},title:{}},setup(g){const d=g,{t:m,n:o}=C(),{isCurrentMonth:b}=B(),v=z(),i=k(()=>Q(d.groups));return(u,e)=>(a(),N(F,{title:u.title},{default:V(()=>[n("div",{class:t(u.$style.table)},[Y,(a(!0),r($,null,h(s(v),(p,c)=>(a(),r("span",{key:p,class:t([u.$style.bold,{[u.$style.currentMonth]:s(b)(c)}])},l(p),3))),128)),n("span",{class:t(u.$style.bold)},l(s(m)("budget.total")),3),n("span",{class:t(u.$style.bold)},l(s(m)("budget.average")),3),(a(!0),r($,null,h(i.value,(p,c)=>(a(),r($,{key:p.id},[n("span",{class:t(u.$style.bold)},l(p.name),3),(a(!0),r($,null,h(p.totals,(y,A)=>(a(),r("span",{key:A,class:t({[u.$style.current]:s(b)(A),[u.$style.first]:c===0,[u.$style.last]:c===i.value.length-1})},l(s(o)(y,"currency")),3))),128)),n("span",{class:t(u.$style.bold)},l(s(o)(s(f)(p.totals),"currency")),3),n("span",{class:t(u.$style.bold)},l(s(o)(s(M)(p.totals),"currency")),3)],64))),128)),i.value.length>1?(a(),r($,{key:0},[n("span",{class:t(u.$style.bold)},l(s(m)("budget.total")),3),(a(!0),r($,null,h(s(v),(p,c)=>(a(),r("span",{key:p,class:t(u.$style.bold)},l(s(o)(s(f)(i.value.map(y=>y.totals[c])),"currency")),3))),128)),n("span",{class:t(u.$style.underline)},l(s(o)(s(f)(s(D)(...i.value.map(p=>p.totals))),"currency")),3),n("span",{class:t(u.$style.underline)},l(s(o)(s(M)(s(D)(...i.value.map(p=>p.totals))),"currency")),3)],64)):H("",!0)],2)]),_:1},8,["title"]))}}),_="v",x="w",ss="x",es="y",ts="z",ls="A",ns="B",as="C",rs={table:_,underline:x,bold:ss,muted:es,currentMonth:ts,current:ls,first:ns,last:as},os={$style:rs},G=w(Z,[["__cssModules",os]]),us=n("span",null,null,-1),cs=n("span",null,null,-1),ys=n("span",null,null,-1),ds=T({__name:"TotalsSummaryTable",props:{income:{default:()=>[]},expenses:{default:()=>[]},title:{}},setup(g){const d=g,{t:m,n:o}=C(),{isCurrentMonth:b}=B(),v=z(),i=k(()=>I(d.income,d.expenses)),u=k(()=>P(i.value));return(e,p)=>(a(),N(F,{title:e.title},{default:V(()=>[n("div",{class:t(e.$style.table)},[us,(a(!0),r($,null,h(s(v),(c,y)=>(a(),r("span",{key:c,class:t([e.$style.bold,{[e.$style.currentMonth]:s(b)(y)}])},l(c),3))),128)),n("span",{class:t(e.$style.bold)},l(s(m)("budget.total")),3),n("span",{class:t(e.$style.bold)},l(s(m)("budget.average")),3),n("span",{class:t([e.$style.bold,e.$style.muted])},l(s(m)("dashboard.income")),3),(a(!0),r($,null,h(e.income,(c,y)=>(a(),r("span",{key:y,class:t([e.$style.muted,e.$style.first,e.$style.income,{[e.$style.current]:s(b)(y)}])},l(s(o)(c,"currency")),3))),128)),n("span",{class:t(e.$style.muted)},l(s(o)(s(f)(e.income),"currency")),3),n("span",{class:t(e.$style.muted)},l(s(o)(s(M)(e.income),"currency")),3),n("span",{class:t([e.$style.bold,e.$style.muted])},l(s(m)("dashboard.expenses")),3),(a(!0),r($,null,h(e.expenses,(c,y)=>(a(),r("span",{key:y,class:t([e.$style.muted,e.$style.expense,{[e.$style.current]:s(b)(y)}])},l(s(o)(c,"currency")),3))),128)),n("span",{class:t(e.$style.muted)},l(s(o)(s(f)(e.expenses),"currency")),3),n("span",{class:t(e.$style.muted)},l(s(o)(s(M)(e.expenses),"currency")),3),n("span",{class:t([e.$style.bold,e.$style.muted])},l(s(m)("dashboard.netSavings")),3),(a(!0),r($,null,h(i.value,(c,y)=>(a(),r("span",{key:y,class:t([e.$style.muted,{[e.$style.current]:s(b)(y),[e.$style.overdrawn]:c<0}])},l(s(o)(c,"currency")),3))),128)),n("span",{class:t(e.$style.muted)},l(s(o)(s(f)(i.value),"currency")),3),n("span",{class:t(e.$style.muted)},l(s(o)(s(M)(i.value),"currency")),3),n("span",{class:t(e.$style.bold)},l(s(m)("dashboard.endingBalance")),3),(a(!0),r($,null,h(u.value,(c,y)=>(a(),r("span",{key:y,class:t([e.$style.bold,e.$style.last,{[e.$style.current]:s(b)(y),[e.$style.overdrawn]:c<0}])},l(s(o)(c,"currency")),3))),128)),cs,ys],2)]),_:1},8,["title"]))}}),ms="D",ps="E",is="F",$s="G",bs="H",hs="I",vs="J",fs="K",gs="L",Ms={table:ms,underline:ps,bold:is,muted:$s,currentMonth:bs,current:hs,first:vs,last:fs,overdrawn:gs},ks={$style:Ms},Ss=w(ds,[["__cssModules",ks]]),Ts=T({__name:"Summary",setup(g){const{state:d}=B(),{t:m}=C(),o=K(),b=k(()=>E(d.income)),v=k(()=>E(d.expenses));return(i,u)=>(a(),r("div",{class:t(i.$style.summary)},[S(O,{show:s(o)!=="mobile",class:t(i.$style.chart),import:()=>J(()=>import("./DevelopmentChart-f16a34ab.js"),["assets/DevelopmentChart-f16a34ab.js","assets/index-635eac34.js","assets/index-89b69f17.css","assets/ChartPlaceholder-743c445d.js","assets/Icon-f54aec6a.js","assets/Icon-2d00bfea.css","assets/ChartPlaceholder-26119b8c.css","assets/EChart.vue_vue_type_script_setup_true_lang-b09f4fbe.js","assets/useResizeObserver-3dd0959b.js","assets/useMonthNames-a81a4bd7.js","assets/budgets-531db56b.js","assets/DevelopmentChart-8b404505.css"])},null,8,["show","class","import"]),S(Ss,{title:s(m)("dashboard.summary"),income:b.value,expenses:v.value},null,8,["title","income","expenses"]),S(G,{title:s(m)("dashboard.income"),groups:s(d).income},null,8,["title","groups"]),S(G,{title:s(m)("dashboard.expenses"),groups:s(d).expenses},null,8,["title","groups"])],2))}}),ws="d",Cs="e",Bs={summary:ws,chart:Cs},As={$style:Bs},Vs=w(Ts,[["__cssModules",As]]);export{Vs as default}; diff --git a/assets/Summary-db64e953.css b/assets/Summary-db64e953.css new file mode 100644 index 00000000..735a17ac --- /dev/null +++ b/assets/Summary-db64e953.css @@ -0,0 +1 @@ +.m_{min-width:100%}.n_{font-size:var(--font-size-s);font-weight:var(--font-weight-xl);margin-bottom:5px;margin-left:12px;position:sticky;left:0}.o_{padding:10px;border:2px solid var(--app-border);border-radius:var(--border-radius-xxl);overflow:auto;--grid-layout: 100px repeat(14, minmax(max-content, auto))}.v{width:max-content;min-width:100%}.v>span{padding:5px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.w,.x{font-weight:var(--font-weight-l)}.w{text-decoration:underline}.y{color:var(--theme-text-muted)}.z{color:var(--c-primary-pure)}.A{font-weight:var(--font-weight-xl)}.A.B{border-top-left-radius:var(--border-radius-l);border-top-right-radius:var(--border-radius-l)}.A.C{border-bottom-left-radius:var(--border-radius-l);border-bottom-right-radius:var(--border-radius-l)}.v{display:grid;grid-template:auto/var(--grid-layout);font-size:var(--font-size-xs)}.D{width:max-content;min-width:100%}.D>span{padding:5px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.E,.F{font-weight:var(--font-weight-l)}.E{text-decoration:underline}.G{color:var(--theme-text-muted)}.H{color:var(--c-primary-pure)}.I{font-weight:var(--font-weight-xl)}.I.J{border-top-left-radius:var(--border-radius-l);border-top-right-radius:var(--border-radius-l)}.I.K{border-bottom-left-radius:var(--border-radius-l);border-bottom-right-radius:var(--border-radius-l)}.D{display:grid;grid-template:auto/var(--grid-layout);font-size:var(--font-size-xs)}.L{color:var(--c-danger-pure)}.d{display:flex;flex-direction:column;grid-gap:20px;flex-grow:1;height:100%;padding-bottom:10px}.e{flex-grow:1;min-height:250px} diff --git a/assets/Summary-f088636f.css b/assets/Summary-f088636f.css deleted file mode 100644 index 8e46425f..00000000 --- a/assets/Summary-f088636f.css +++ /dev/null @@ -1 +0,0 @@ -.u_{min-width:100%}.v_{font-size:var(--font-size-s);font-weight:var(--font-weight-xl);margin-bottom:5px;margin-left:12px;position:sticky;left:0}.w_{padding:10px;border:2px solid var(--app-border);border-radius:var(--border-radius-xxl);overflow:auto;--grid-layout: 100px repeat(14, minmax(max-content, auto))}.Q{width:max-content;min-width:100%}.Q>span{padding:5px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.R,.S{font-weight:var(--font-weight-l)}.R{text-decoration:underline}.T{color:var(--theme-text-muted)}.U{color:var(--c-primary-pure)}.V{font-weight:var(--font-weight-xl)}.V.W{border-top-left-radius:var(--border-radius-l);border-top-right-radius:var(--border-radius-l)}.V.X{border-bottom-left-radius:var(--border-radius-l);border-bottom-right-radius:var(--border-radius-l)}.Q{display:grid;grid-template:auto/var(--grid-layout);font-size:var(--font-size-xs)}.Y{width:max-content;min-width:100%}.Y>span{padding:5px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.Z,.__{font-weight:var(--font-weight-l)}.Z{text-decoration:underline}.a_{color:var(--theme-text-muted)}.b_{color:var(--c-primary-pure)}.c_{font-weight:var(--font-weight-xl)}.c_.d_{border-top-left-radius:var(--border-radius-l);border-top-right-radius:var(--border-radius-l)}.c_.e_{border-bottom-left-radius:var(--border-radius-l);border-bottom-right-radius:var(--border-radius-l)}.Y{display:grid;grid-template:auto/var(--grid-layout);font-size:var(--font-size-xs)}.f_{color:var(--c-danger-pure)}._{display:flex;flex-direction:column;grid-gap:20px;flex-grow:1;height:100%;padding-bottom:10px}.a{flex-grow:1;min-height:250px} diff --git a/assets/index-1bee1cb1.js b/assets/index-635eac34.js similarity index 98% rename from assets/index-1bee1cb1.js rename to assets/index-635eac34.js index 5030f57d..95cfb006 100644 --- a/assets/index-1bee1cb1.js +++ b/assets/index-635eac34.js @@ -24,4 +24,4 @@ * vue-router v4.2.4 * (c) 2023 Eduardo San Martin Morote * @license MIT - */const cn=typeof window<"u";function Ah(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const ue=Object.assign;function gs(e,t){const n={};for(const r in t){const s=t[r];n[r]=ct(s)?s.map(e):e(s)}return n}const Kn=()=>{},ct=Array.isArray,Ih=/\/$/,Sh=e=>e.replace(Ih,"");function vs(e,t,n="/"){let r,s={},o="",a="";const l=t.indexOf("#");let i=t.indexOf("?");return l=0&&(i=-1),i>-1&&(r=t.slice(0,i),o=t.slice(i+1,l>-1?l:t.length),s=e(o)),l>-1&&(r=r||t.slice(0,l),a=t.slice(l,t.length)),r=Rh(r??t,n),{fullPath:r+(o&&"?")+o+a,path:r,query:s,hash:a}}function Ph(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function fi(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Nh(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&Ln(t.matched[r],n.matched[s])&&gc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Ln(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function gc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!xh(e[n],t[n]))return!1;return!0}function xh(e,t){return ct(e)?di(e,t):ct(t)?di(t,e):e===t}function di(e,t){return ct(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Rh(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let o=n.length-1,a,l;for(a=0;a1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(a-(a===r.length?1:0)).join("/")}var sr;(function(e){e.pop="pop",e.push="push"})(sr||(sr={}));var Yn;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Yn||(Yn={}));function kh(e){if(!e)if(cn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Sh(e)}const Dh=/^[^#]+#/;function Mh(e,t){return e.replace(Dh,"#")+t}function Fh(e,t){const 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)}}const ns=()=>({left:window.pageXOffset,top:window.pageYOffset});function $h(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=Fh(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function pi(e,t){return(history.state?history.state.position-t:-1)+e}const Xs=new Map;function Uh(e,t){Xs.set(e,t)}function Wh(e){const t=Xs.get(e);return Xs.delete(e),t}let Hh=()=>location.protocol+"//"+location.host;function vc(e,t){const{pathname:n,search:r,hash:s}=t,o=e.indexOf("#");if(o>-1){let l=s.includes(e.slice(o))?e.slice(o).length:1,i=s.slice(l);return i[0]!=="/"&&(i="/"+i),fi(i,"")}return fi(n,e)+r+s}function Bh(e,t,n,r){let s=[],o=[],a=null;const l=({state:m})=>{const v=vc(e,location),L=n.value,b=t.value;let C=0;if(m){if(n.value=v,t.value=m,a&&a===L){a=null;return}C=b?m.position-b.position:0}else r(v);s.forEach(_=>{_(n.value,L,{delta:C,type:sr.pop,direction:C?C>0?Yn.forward:Yn.back:Yn.unknown})})};function i(){a=n.value}function c(m){s.push(m);const v=()=>{const L=s.indexOf(m);L>-1&&s.splice(L,1)};return o.push(v),v}function d(){const{history:m}=window;m.state&&m.replaceState(ue({},m.state,{scroll:ns()}),"")}function p(){for(const m of o)m();o=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",d)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",d,{passive:!0}),{pauseListeners:i,listen:c,destroy:p}}function mi(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?ns():null}}function jh(e){const{history:t,location:n}=window,r={value:vc(e,n)},s={value:t.state};s.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(i,c,d){const p=e.indexOf("#"),m=p>-1?(n.host&&document.querySelector("base")?e:e.slice(p))+i:Hh()+e+i;try{t[d?"replaceState":"pushState"](c,"",m),s.value=c}catch(v){console.error(v),n[d?"replace":"assign"](m)}}function a(i,c){const d=ue({},t.state,mi(s.value.back,i,s.value.forward,!0),c,{position:s.value.position});o(i,d,!0),r.value=i}function l(i,c){const d=ue({},s.value,t.state,{forward:i,scroll:ns()});o(d.current,d,!0);const p=ue({},mi(r.value,i,null),{position:d.position+1},c);o(i,p,!1),r.value=i}return{location:r,state:s,push:l,replace:a}}function Vh(e){e=kh(e);const t=jh(e),n=Bh(e,t.state,t.location,t.replace);function r(o,a=!0){a||n.pauseListeners(),history.go(o)}const s=ue({location:"",base:e,go:r,createHref:Mh.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function Kh(e){return typeof e=="string"||e&&typeof e=="object"}function _c(e){return typeof e=="string"||typeof e=="symbol"}const Nt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},yc=Symbol("");var hi;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(hi||(hi={}));function Tn(e,t){return ue(new Error,{type:e,[yc]:!0},t)}function wt(e,t){return e instanceof Error&&yc in e&&(t==null||!!(e.type&t))}const gi="[^/]+?",Yh={sensitive:!1,strict:!1,start:!0,end:!0},Gh=/[.+*?^${}()[\]/\\]/g;function qh(e,t){const n=ue({},Yh,t),r=[];let s=n.start?"^":"";const o=[];for(const c of e){const d=c.length?[]:[90];n.strict&&!c.length&&(s+="/");for(let p=0;pt.length?t.length===1&&t[0]===40+40?1:-1:0}function Jh(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const Qh={type:0,value:""},zh=/[a-zA-Z0-9_]/;function Zh(e){if(!e)return[[]];if(e==="/")return[[Qh]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(v){throw new Error(`ERR (${n})/"${c}": ${v}`)}let n=0,r=n;const s=[];let o;function a(){o&&s.push(o),o=[]}let l=0,i,c="",d="";function p(){c&&(n===0?o.push({type:0,value:c}):n===1||n===2||n===3?(o.length>1&&(i==="*"||i==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:c,regexp:d,repeatable:i==="*"||i==="+",optional:i==="*"||i==="?"})):t("Invalid state to consume buffer"),c="")}function m(){c+=i}for(;l{a(w)}:Kn}function a(d){if(_c(d)){const p=r.get(d);p&&(r.delete(d),n.splice(n.indexOf(p),1),p.children.forEach(a),p.alias.forEach(a))}else{const p=n.indexOf(d);p>-1&&(n.splice(p,1),d.record.name&&r.delete(d.record.name),d.children.forEach(a),d.alias.forEach(a))}}function l(){return n}function i(d){let p=0;for(;p=0&&(d.record.path!==n[p].record.path||!bc(d,n[p]));)p++;n.splice(p,0,d),d.record.name&&!yi(d)&&r.set(d.record.name,d)}function c(d,p){let m,v={},L,b;if("name"in d&&d.name){if(m=r.get(d.name),!m)throw Tn(1,{location:d});b=m.record.name,v=ue(_i(p.params,m.keys.filter(w=>!w.optional).map(w=>w.name)),d.params&&_i(d.params,m.keys.map(w=>w.name))),L=m.stringify(v)}else if("path"in d)L=d.path,m=n.find(w=>w.re.test(L)),m&&(v=m.parse(L),b=m.record.name);else{if(m=p.name?r.get(p.name):n.find(w=>w.re.test(p.path)),!m)throw Tn(1,{location:d,currentLocation:p});b=m.record.name,v=ue({},p.params,d.params),L=m.stringify(v)}const C=[];let _=m;for(;_;)C.unshift(_.record),_=_.parent;return{name:b,path:L,params:v,matched:C,meta:sg(C)}}return e.forEach(d=>o(d)),{addRoute:o,resolve:c,removeRoute:a,getRoutes:l,getRecordMatcher:s}}function _i(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function ng(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:rg(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function rg(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function yi(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function sg(e){return e.reduce((t,n)=>ue(t,n.meta),{})}function bi(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function bc(e,t){return t.children.some(n=>n===e||bc(e,n))}const Ec=/#/g,og=/&/g,ag=/\//g,ig=/=/g,lg=/\?/g,wc=/\+/g,cg=/%5B/g,ug=/%5D/g,Oc=/%5E/g,fg=/%60/g,Lc=/%7B/g,dg=/%7C/g,Tc=/%7D/g,pg=/%20/g;function ko(e){return encodeURI(""+e).replace(dg,"|").replace(cg,"[").replace(ug,"]")}function mg(e){return ko(e).replace(Lc,"{").replace(Tc,"}").replace(Oc,"^")}function Js(e){return ko(e).replace(wc,"%2B").replace(pg,"+").replace(Ec,"%23").replace(og,"%26").replace(fg,"`").replace(Lc,"{").replace(Tc,"}").replace(Oc,"^")}function hg(e){return Js(e).replace(ig,"%3D")}function gg(e){return ko(e).replace(Ec,"%23").replace(lg,"%3F")}function vg(e){return e==null?"":gg(e).replace(ag,"%2F")}function kr(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function _g(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;so&&Js(o)):[r&&Js(r)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function yg(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=ct(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}const bg=Symbol(""),wi=Symbol(""),rs=Symbol(""),Cc=Symbol(""),Qs=Symbol("");function xn(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Rt(e,t,n,r,s){const o=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((a,l)=>{const i=p=>{p===!1?l(Tn(4,{from:n,to:t})):p instanceof Error?l(p):Kh(p)?l(Tn(2,{from:t,to:p})):(o&&r.enterCallbacks[s]===o&&typeof p=="function"&&o.push(p),a())},c=e.call(r&&r.instances[s],t,n,i);let d=Promise.resolve(c);e.length<3&&(d=d.then(i)),d.catch(p=>l(p))})}function _s(e,t,n,r){const s=[];for(const o of e)for(const a in o.components){let l=o.components[a];if(!(t!=="beforeRouteEnter"&&!o.instances[a]))if(Eg(l)){const c=(l.__vccOpts||l)[t];c&&s.push(Rt(c,n,r,o,a))}else{let i=l();s.push(()=>i.then(c=>{if(!c)return Promise.reject(new Error(`Couldn't resolve component "${a}" at "${o.path}"`));const d=Ah(c)?c.default:c;o.components[a]=d;const m=(d.__vccOpts||d)[t];return m&&Rt(m,n,r,o,a)()}))}}return s}function Eg(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Oi(e){const t=Ye(rs),n=Ye(Cc),r=me(()=>t.resolve(gt(e.to))),s=me(()=>{const{matched:i}=r.value,{length:c}=i,d=i[c-1],p=n.matched;if(!d||!p.length)return-1;const m=p.findIndex(Ln.bind(null,d));if(m>-1)return m;const v=Li(i[c-2]);return c>1&&Li(d)===v&&p[p.length-1].path!==v?p.findIndex(Ln.bind(null,i[c-2])):m}),o=me(()=>s.value>-1&&Tg(n.params,r.value.params)),a=me(()=>s.value>-1&&s.value===n.matched.length-1&&gc(n.params,r.value.params));function l(i={}){return Lg(i)?t[gt(e.replace)?"replace":"push"](gt(e.to)).catch(Kn):Promise.resolve()}return{route:r,href:me(()=>r.value.href),isActive:o,isExactActive:a,navigate:l}}const wg=Vr({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"}},useLink:Oi,setup(e,{slots:t}){const n=Wt(Oi(e)),{options:r}=Ye(rs),s=me(()=>({[Ti(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Ti(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&t.default(n);return e.custom?o:ir("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}}),Og=wg;function Lg(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){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Tg(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!ct(s)||s.length!==r.length||r.some((o,a)=>o!==s[a]))return!1}return!0}function Li(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ti=(e,t,n)=>e??t??n,Cg=Vr({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=Ye(Qs),s=me(()=>e.route||r.value),o=Ye(wi,0),a=me(()=>{let c=gt(o);const{matched:d}=s.value;let p;for(;(p=d[c])&&!p.components;)c++;return c}),l=me(()=>s.value.matched[a.value]);Er(wi,me(()=>a.value+1)),Er(bg,l),Er(Qs,s);const i=ke();return We(()=>[i.value,l.value,e.name],([c,d,p],[m,v,L])=>{d&&(d.instances[p]=c,v&&v!==d&&c&&c===m&&(d.leaveGuards.size||(d.leaveGuards=v.leaveGuards),d.updateGuards.size||(d.updateGuards=v.updateGuards))),c&&d&&(!v||!Ln(d,v)||!m)&&(d.enterCallbacks[p]||[]).forEach(b=>b(c))},{flush:"post"}),()=>{const c=s.value,d=e.name,p=l.value,m=p&&p.components[d];if(!m)return Ci(n.default,{Component:m,route:c});const v=p.props[d],L=v?v===!0?c.params:typeof v=="function"?v(c):v:null,C=ir(m,ue({},L,t,{onVnodeUnmounted:_=>{_.component.isUnmounted&&(p.instances[d]=null)},ref:i}));return Ci(n.default,{Component:C,route:c})||C}}});function Ci(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Ag=Cg;function Ig(e){const t=tg(e.routes,e),n=e.parseQuery||_g,r=e.stringifyQuery||Ei,s=e.history,o=xn(),a=xn(),l=xn(),i=Xn(Nt);let c=Nt;cn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const d=gs.bind(null,P=>""+P),p=gs.bind(null,vg),m=gs.bind(null,kr);function v(P,$){let F,V;return _c(P)?(F=t.getRecordMatcher(P),V=$):V=P,t.addRoute(V,F)}function L(P){const $=t.getRecordMatcher(P);$&&t.removeRoute($)}function b(){return t.getRoutes().map(P=>P.record)}function C(P){return!!t.getRecordMatcher(P)}function _(P,$){if($=ue({},$||i.value),typeof P=="string"){const f=vs(n,P,$.path),h=t.resolve({path:f.path},$),E=s.createHref(f.fullPath);return ue(f,h,{params:m(h.params),hash:kr(f.hash),redirectedFrom:void 0,href:E})}let F;if("path"in P)F=ue({},P,{path:vs(n,P.path,$.path).path});else{const f=ue({},P.params);for(const h in f)f[h]==null&&delete f[h];F=ue({},P,{params:p(f)}),$.params=p($.params)}const V=t.resolve(F,$),te=P.hash||"";V.params=d(m(V.params));const g=Ph(r,ue({},P,{hash:mg(te),path:V.path})),u=s.createHref(g);return ue({fullPath:g,hash:te,query:r===Ei?yg(P.query):P.query||{}},V,{redirectedFrom:void 0,href:u})}function w(P){return typeof P=="string"?vs(n,P,i.value.path):ue({},P)}function S(P,$){if(c!==P)return Tn(8,{from:$,to:P})}function y(P){return k(P)}function T(P){return y(ue(w(P),{replace:!0}))}function x(P){const $=P.matched[P.matched.length-1];if($&&$.redirect){const{redirect:F}=$;let V=typeof F=="function"?F(P):F;return typeof V=="string"&&(V=V.includes("?")||V.includes("#")?V=w(V):{path:V},V.params={}),ue({query:P.query,hash:P.hash,params:"path"in V?{}:P.params},V)}}function k(P,$){const F=c=_(P),V=i.value,te=P.state,g=P.force,u=P.replace===!0,f=x(F);if(f)return k(ue(w(f),{state:typeof f=="object"?ue({},te,f.state):te,force:g,replace:u}),$||F);const h=F;h.redirectedFrom=$;let E;return!g&&Nh(r,V,F)&&(E=Tn(16,{to:h,from:V}),Le(V,V,!0,!1)),(E?Promise.resolve(E):K(h,V)).catch(I=>wt(I)?wt(I,2)?I:Ae(I):ee(I,h,V)).then(I=>{if(I){if(wt(I,2))return k(ue({replace:u},w(I.to),{state:typeof I.to=="object"?ue({},te,I.to.state):te,force:g}),$||h)}else I=U(h,V,!0,u,te);return q(h,V,I),I})}function W(P,$){const F=S(P,$);return F?Promise.reject(F):Promise.resolve()}function B(P){const $=Te.values().next().value;return $&&typeof $.runWithContext=="function"?$.runWithContext(P):P()}function K(P,$){let F;const[V,te,g]=Sg(P,$);F=_s(V.reverse(),"beforeRouteLeave",P,$);for(const f of V)f.leaveGuards.forEach(h=>{F.push(Rt(h,P,$))});const u=W.bind(null,P,$);return F.push(u),fe(F).then(()=>{F=[];for(const f of o.list())F.push(Rt(f,P,$));return F.push(u),fe(F)}).then(()=>{F=_s(te,"beforeRouteUpdate",P,$);for(const f of te)f.updateGuards.forEach(h=>{F.push(Rt(h,P,$))});return F.push(u),fe(F)}).then(()=>{F=[];for(const f of g)if(f.beforeEnter)if(ct(f.beforeEnter))for(const h of f.beforeEnter)F.push(Rt(h,P,$));else F.push(Rt(f.beforeEnter,P,$));return F.push(u),fe(F)}).then(()=>(P.matched.forEach(f=>f.enterCallbacks={}),F=_s(g,"beforeRouteEnter",P,$),F.push(u),fe(F))).then(()=>{F=[];for(const f of a.list())F.push(Rt(f,P,$));return F.push(u),fe(F)}).catch(f=>wt(f,8)?f:Promise.reject(f))}function q(P,$,F){l.list().forEach(V=>B(()=>V(P,$,F)))}function U(P,$,F,V,te){const g=S(P,$);if(g)return g;const u=$===Nt,f=cn?history.state:{};F&&(V||u?s.replace(P.fullPath,ue({scroll:u&&f&&f.scroll},te)):s.push(P.fullPath,te)),i.value=P,Le(P,$,F,u),Ae()}let G;function ce(){G||(G=s.listen((P,$,F)=>{if(!Ie.listening)return;const V=_(P),te=x(V);if(te){k(ue(te,{replace:!0}),V).catch(Kn);return}c=V;const g=i.value;cn&&Uh(pi(g.fullPath,F.delta),ns()),K(V,g).catch(u=>wt(u,12)?u:wt(u,2)?(k(u.to,V).then(f=>{wt(f,20)&&!F.delta&&F.type===sr.pop&&s.go(-1,!1)}).catch(Kn),Promise.reject()):(F.delta&&s.go(-F.delta,!1),ee(u,V,g))).then(u=>{u=u||U(V,g,!1),u&&(F.delta&&!wt(u,8)?s.go(-F.delta,!1):F.type===sr.pop&&wt(u,20)&&s.go(-1,!1)),q(V,g,u)}).catch(Kn)}))}let ye=xn(),Q=xn(),X;function ee(P,$,F){Ae(P);const V=Q.list();return V.length?V.forEach(te=>te(P,$,F)):console.error(P),Promise.reject(P)}function _e(){return X&&i.value!==Nt?Promise.resolve():new Promise((P,$)=>{ye.add([P,$])})}function Ae(P){return X||(X=!P,ce(),ye.list().forEach(([$,F])=>P?F(P):$()),ye.reset()),P}function Le(P,$,F,V){const{scrollBehavior:te}=e;if(!cn||!te)return Promise.resolve();const g=!F&&Wh(pi(P.fullPath,0))||(V||!F)&&history.state&&history.state.scroll||null;return Hr().then(()=>te(P,$,g)).then(u=>u&&$h(u)).catch(u=>ee(u,P,$))}const pe=P=>s.go(P);let Fe;const Te=new Set,Ie={currentRoute:i,listening:!0,addRoute:v,removeRoute:L,hasRoute:C,getRoutes:b,resolve:_,options:e,push:y,replace:T,go:pe,back:()=>pe(-1),forward:()=>pe(1),beforeEach:o.add,beforeResolve:a.add,afterEach:l.add,onError:Q.add,isReady:_e,install(P){const $=this;P.component("RouterLink",Og),P.component("RouterView",Ag),P.config.globalProperties.$router=$,Object.defineProperty(P.config.globalProperties,"$route",{enumerable:!0,get:()=>gt(i)}),cn&&!Fe&&i.value===Nt&&(Fe=!0,y(s.location).catch(te=>{}));const F={};for(const te in Nt)Object.defineProperty(F,te,{get:()=>i.value[te],enumerable:!0});P.provide(rs,$),P.provide(Cc,qi(F)),P.provide(Qs,i);const V=P.unmount;Te.add(P),P.unmount=function(){Te.delete(P),Te.size<1&&(c=Nt,G&&G(),G=null,i.value=Nt,Fe=!1,X=!1),V()}}};function fe(P){return P.reduce(($,F)=>$.then(()=>B(F)),Promise.resolve())}return Ie}function Sg(e,t){const n=[],r=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let a=0;aLn(c,l))?r.push(l):n.push(l));const i=e.matched[a];i&&(t.matched.find(c=>Ln(c,i))||s.push(i))}return[n,r,s]}function Pg(){return Ye(rs)}const Ng=Wn("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100"},[Wn("circle",{transform:"rotate(-44.992 50 50.001)",cx:"50",cy:"50",style:{fill:"var(--c-primary)"},r:"50"}),Wn("path",{d:"M37.9 30h24.2c1.8 0 3.5.9 4.6 2.4l8 11.3c1.6 2.2 1.3 5.3-.6 7.3L54 71c-2.2 2.2-5.8 2.2-8 0L25.9 50.9c-1.9-1.9-2.2-5-.6-7.3l8-11.3c1.1-1.4 2.8-2.3 4.6-2.3z",style:{fill:"#fff"}})],-1),xg=[Ng],Rg=Vr({__name:"LoadingScreen",props:{class:{},loading:{type:Boolean,default:!1},import:{}},setup(e){const t=e,n=Xn(),r=me(()=>t.class);return or(()=>{t.import().then(s=>n.value=s.default)}),(s,o)=>n.value&&!s.loading?(gn(),xs("div",{key:0,class:tn([s.$style.wrapper,r.value])},[(gn(),_o(zu(n.value)))],2)):(gn(),xs("div",{key:1,class:tn(s.$style.placeholder)},xg,2))}}),kg="h",Dg="k",Mg={placeholder:kg,"fade-down":"i","fade-down-shorted":"j",wrapper:Dg},Ac=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},Fg={$style:Mg},$g=Ac(Rg,[["__cssModules",Fg]]),Ug=Vr({__name:"App",setup(e){const{state:t}=ch(),{t:n}=ts(),r=Pg(),s=ih(),o=Bl(),a=pp(),l=Xm(me(()=>o.value==="minimized"?0:.035));return zn(()=>{a.classList.add(t.appearance.theme),Hr(()=>{const i=getComputedStyle(a).getPropertyValue("--app-background").trim();document.querySelectorAll('[data-meta="theme-color"]').forEach(c=>c.content=i)})}),We(()=>t.appearance.theme,(i,c)=>a.classList.remove(c)),We(()=>t.appearance.animations,i=>{a.classList[i?"remove":"add"]("reducedMotion")}),zn(()=>{document.title=["app.name",...r.currentRoute.value.matched.map(i=>i.name)].map(n).join(" / ")}),(i,c)=>(gn(),xs("div",{ref_key:"root",ref:l,class:tn(i.$style.app)},[Ue($g,{loading:gt(s).state.status==="loading",class:tn(i.$style.root),import:()=>kt(()=>import("./Frame-c2dae572.js"),["assets/Frame-c2dae572.js","assets/Link-2f976172.js","assets/Icon-3e6d397d.js","assets/Icon-f442fa03.css","assets/useThemeStyles-0768f685.js","assets/Link-ef46abcf.css","assets/AnimatedRouterView-0f460d78.js","assets/AnimatedRouterView-56c49743.css","assets/Button-6d17a4fd.js","assets/Button-075befd4.css","assets/useResizeObserver-9c83b660.js","assets/_commonjsHelpers-725317a4.js","assets/Frame-0a0b5638.css"])},null,8,["loading","class","import"])],2))}}),Wg="f",Hg="g",Bg={app:Wg,root:Hg},jg={$style:Bg},Vg=Ac(Ug,[["__cssModules",jg]]),Kg=Ig({history:Vh(),routes:[{path:"/",strict:!0,redirect:"/dashboard"},{path:"/dashboard",name:"navigation.menu.dashboard",component:()=>kt(()=>import("./Dashboard-c2e04d7d.js"),["assets/Dashboard-c2e04d7d.js","assets/Button-6d17a4fd.js","assets/Icon-3e6d397d.js","assets/Icon-f442fa03.css","assets/useThemeStyles-0768f685.js","assets/Button-075befd4.css","assets/Link-2f976172.js","assets/Link-ef46abcf.css","assets/AnimatedRouterView-0f460d78.js","assets/AnimatedRouterView-56c49743.css","assets/Pane-ff954356.js","assets/Currency-e1b802bf.js","assets/Currency-7e07fb54.css","assets/Pane-ecb4ffff.css","assets/Dashboard-4821cf07.css"]),children:[{path:"",name:"dashboard.distribution",component:()=>kt(()=>import("./Overview-d149b0fb.js"),["assets/Overview-d149b0fb.js","assets/AsyncComponent-f4427d1d.js","assets/AsyncComponent-baca1621.css","assets/budgets-531db56b.js","assets/Currency-e1b802bf.js","assets/Currency-7e07fb54.css","assets/Icon-3e6d397d.js","assets/Icon-f442fa03.css","assets/Link-2f976172.js","assets/useThemeStyles-0768f685.js","assets/Link-ef46abcf.css","assets/EChart.vue_vue_type_script_setup_true_lang-e0bf0237.js","assets/useResizeObserver-9c83b660.js","assets/Overview-2227f059.css"])},{path:"summary",name:"dashboard.summary",component:()=>kt(()=>import("./Summary-a05fd135.js"),["assets/Summary-a05fd135.js","assets/AsyncComponent-f4427d1d.js","assets/AsyncComponent-baca1621.css","assets/budgets-531db56b.js","assets/useMonthNames-09c7e203.js","assets/Summary-f088636f.css"])}]},{path:"/income",name:"navigation.menu.income",component:()=>kt(()=>import("./Income-7eb229d3.js"),["assets/Income-7eb229d3.js","assets/BudgetPane-21b65ecf.js","assets/EChart.vue_vue_type_script_setup_true_lang-e0bf0237.js","assets/useResizeObserver-9c83b660.js","assets/budgets-531db56b.js","assets/Pane-ff954356.js","assets/Currency-e1b802bf.js","assets/Currency-7e07fb54.css","assets/Pane-ecb4ffff.css","assets/Button-6d17a4fd.js","assets/Icon-3e6d397d.js","assets/Icon-f442fa03.css","assets/useThemeStyles-0768f685.js","assets/Button-075befd4.css","assets/useMonthNames-09c7e203.js","assets/BudgetPane-6b25a68b.css"])},{path:"/expenses",name:"navigation.menu.expenses",component:()=>kt(()=>import("./Expenses-493c1a39.js"),["assets/Expenses-493c1a39.js","assets/BudgetPane-21b65ecf.js","assets/EChart.vue_vue_type_script_setup_true_lang-e0bf0237.js","assets/useResizeObserver-9c83b660.js","assets/budgets-531db56b.js","assets/Pane-ff954356.js","assets/Currency-e1b802bf.js","assets/Currency-7e07fb54.css","assets/Pane-ecb4ffff.css","assets/Button-6d17a4fd.js","assets/Icon-3e6d397d.js","assets/Icon-f442fa03.css","assets/useThemeStyles-0768f685.js","assets/Button-075befd4.css","assets/useMonthNames-09c7e203.js","assets/BudgetPane-6b25a68b.css"])},{path:"/:pathMatch(.*)*",redirect:"/dashboard"}]});const Ai=uc("analytics"),{ACKEE_HOST:Ii,ACKEE_DOMAIN_ID:Si,PROD:Yg}={ACKEE_HOST:"https://ackee.reinisch.io",OAUTH_CLIENT_ID:"425971557048-usoe63101ucema007r06eoqdtfhj7fem.apps.googleusercontent.com",ACKEE_DOMAIN_ID:"75f260fd-90f9-400d-aad5-f3f0032cebfd",OAUTH_SCOPE:"https://www.googleapis.com/auth/drive.appdata",OAUTH_URI:"https://accounts.google.com/o/oauth2/auth",BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1,APP_BUILD_TIMESTAMP:1690642705585};Yg&&(Ii&&Si?kt(()=>import("./main-44350b7b.js"),["assets/main-44350b7b.js","assets/_commonjsHelpers-725317a4.js"]).then(({create:e})=>{Ai.success("Enabled, don't worry - it's self-hosted and just for me :)"),e(Ii).record(Si)}):Ai.info("Disabled (not configured)"));const{OAUTH_URI:Gg,OAUTH_CLIENT_ID:qg,OAUTH_SCOPE:Xg}={ACKEE_HOST:"https://ackee.reinisch.io",OAUTH_CLIENT_ID:"425971557048-usoe63101ucema007r06eoqdtfhj7fem.apps.googleusercontent.com",ACKEE_DOMAIN_ID:"75f260fd-90f9-400d-aad5-f3f0032cebfd",OAUTH_SCOPE:"https://www.googleapis.com/auth/drive.appdata",OAUTH_URI:"https://accounts.google.com/o/oauth2/auth",BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1,APP_BUILD_TIMESTAMP:1690642705585},Do=ah({authUri:Gg,clientId:qg,scope:Xg}),on=od(Vg);on.provide(hc,Ch(Do));on.provide(pc,lh(Do));on.provide(fc,Do);on.directive("tooltip",th);on.use(Dn);on.use(Kg);on.mount("#app");const Mn=uc("app"),Jg=new Date(1690642705585).toLocaleDateString(),Qg=new Date(1690642705585).toLocaleTimeString();Mn.info(`Ocular build on the ${Jg} at around ${Qg}`);Pc({onOfflineReady:()=>Mn.success("App available offline"),onNeedRefresh:()=>Mn.info("App updated, need to refresh..."),onRegisteredSW:()=>Mn.success("Service worker registered"),onRegisterError:e=>Mn.error("Failed to register service-worker",e)});export{tv as $,dv as A,cc as B,kt as C,Bl as D,sv as E,Ke as F,mv as G,pv as H,Xn as I,zn as J,Wt as K,iv as L,av as M,We as N,fv as O,Hr as P,or as Q,ch as R,Ef as S,Gr as T,gv as U,ih as V,pp as W,yt as X,Ye as Y,Er as Z,Ac as _,xs as a,Zg as a0,dp as a1,wh as a2,ps as a3,Rr as a4,qm as a5,Sl as a6,ov as a7,Wn as b,me as c,Vr as d,ts as e,vv as f,Pg as g,ev as h,_o as i,rv as j,gt as k,Ue as l,Xm as m,tn as n,gn as o,lv as p,zu as q,nv as r,ro as s,zg as t,uv as u,zm as v,Pu as w,ke as x,cv as y,hv as z}; + */const cn=typeof window<"u";function Ah(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const ue=Object.assign;function gs(e,t){const n={};for(const r in t){const s=t[r];n[r]=ct(s)?s.map(e):e(s)}return n}const Kn=()=>{},ct=Array.isArray,Ih=/\/$/,Sh=e=>e.replace(Ih,"");function vs(e,t,n="/"){let r,s={},o="",a="";const l=t.indexOf("#");let i=t.indexOf("?");return l=0&&(i=-1),i>-1&&(r=t.slice(0,i),o=t.slice(i+1,l>-1?l:t.length),s=e(o)),l>-1&&(r=r||t.slice(0,l),a=t.slice(l,t.length)),r=Rh(r??t,n),{fullPath:r+(o&&"?")+o+a,path:r,query:s,hash:a}}function Ph(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function fi(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Nh(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&Ln(t.matched[r],n.matched[s])&&gc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Ln(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function gc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!xh(e[n],t[n]))return!1;return!0}function xh(e,t){return ct(e)?di(e,t):ct(t)?di(t,e):e===t}function di(e,t){return ct(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Rh(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let o=n.length-1,a,l;for(a=0;a1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(a-(a===r.length?1:0)).join("/")}var sr;(function(e){e.pop="pop",e.push="push"})(sr||(sr={}));var Yn;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Yn||(Yn={}));function kh(e){if(!e)if(cn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Sh(e)}const Dh=/^[^#]+#/;function Mh(e,t){return e.replace(Dh,"#")+t}function Fh(e,t){const 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)}}const ns=()=>({left:window.pageXOffset,top:window.pageYOffset});function $h(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=Fh(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function pi(e,t){return(history.state?history.state.position-t:-1)+e}const Xs=new Map;function Uh(e,t){Xs.set(e,t)}function Wh(e){const t=Xs.get(e);return Xs.delete(e),t}let Hh=()=>location.protocol+"//"+location.host;function vc(e,t){const{pathname:n,search:r,hash:s}=t,o=e.indexOf("#");if(o>-1){let l=s.includes(e.slice(o))?e.slice(o).length:1,i=s.slice(l);return i[0]!=="/"&&(i="/"+i),fi(i,"")}return fi(n,e)+r+s}function Bh(e,t,n,r){let s=[],o=[],a=null;const l=({state:m})=>{const v=vc(e,location),L=n.value,b=t.value;let C=0;if(m){if(n.value=v,t.value=m,a&&a===L){a=null;return}C=b?m.position-b.position:0}else r(v);s.forEach(_=>{_(n.value,L,{delta:C,type:sr.pop,direction:C?C>0?Yn.forward:Yn.back:Yn.unknown})})};function i(){a=n.value}function c(m){s.push(m);const v=()=>{const L=s.indexOf(m);L>-1&&s.splice(L,1)};return o.push(v),v}function d(){const{history:m}=window;m.state&&m.replaceState(ue({},m.state,{scroll:ns()}),"")}function p(){for(const m of o)m();o=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",d)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",d,{passive:!0}),{pauseListeners:i,listen:c,destroy:p}}function mi(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?ns():null}}function jh(e){const{history:t,location:n}=window,r={value:vc(e,n)},s={value:t.state};s.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(i,c,d){const p=e.indexOf("#"),m=p>-1?(n.host&&document.querySelector("base")?e:e.slice(p))+i:Hh()+e+i;try{t[d?"replaceState":"pushState"](c,"",m),s.value=c}catch(v){console.error(v),n[d?"replace":"assign"](m)}}function a(i,c){const d=ue({},t.state,mi(s.value.back,i,s.value.forward,!0),c,{position:s.value.position});o(i,d,!0),r.value=i}function l(i,c){const d=ue({},s.value,t.state,{forward:i,scroll:ns()});o(d.current,d,!0);const p=ue({},mi(r.value,i,null),{position:d.position+1},c);o(i,p,!1),r.value=i}return{location:r,state:s,push:l,replace:a}}function Vh(e){e=kh(e);const t=jh(e),n=Bh(e,t.state,t.location,t.replace);function r(o,a=!0){a||n.pauseListeners(),history.go(o)}const s=ue({location:"",base:e,go:r,createHref:Mh.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function Kh(e){return typeof e=="string"||e&&typeof e=="object"}function _c(e){return typeof e=="string"||typeof e=="symbol"}const Nt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},yc=Symbol("");var hi;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(hi||(hi={}));function Tn(e,t){return ue(new Error,{type:e,[yc]:!0},t)}function wt(e,t){return e instanceof Error&&yc in e&&(t==null||!!(e.type&t))}const gi="[^/]+?",Yh={sensitive:!1,strict:!1,start:!0,end:!0},Gh=/[.+*?^${}()[\]/\\]/g;function qh(e,t){const n=ue({},Yh,t),r=[];let s=n.start?"^":"";const o=[];for(const c of e){const d=c.length?[]:[90];n.strict&&!c.length&&(s+="/");for(let p=0;pt.length?t.length===1&&t[0]===40+40?1:-1:0}function Jh(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const Qh={type:0,value:""},zh=/[a-zA-Z0-9_]/;function Zh(e){if(!e)return[[]];if(e==="/")return[[Qh]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(v){throw new Error(`ERR (${n})/"${c}": ${v}`)}let n=0,r=n;const s=[];let o;function a(){o&&s.push(o),o=[]}let l=0,i,c="",d="";function p(){c&&(n===0?o.push({type:0,value:c}):n===1||n===2||n===3?(o.length>1&&(i==="*"||i==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:c,regexp:d,repeatable:i==="*"||i==="+",optional:i==="*"||i==="?"})):t("Invalid state to consume buffer"),c="")}function m(){c+=i}for(;l{a(w)}:Kn}function a(d){if(_c(d)){const p=r.get(d);p&&(r.delete(d),n.splice(n.indexOf(p),1),p.children.forEach(a),p.alias.forEach(a))}else{const p=n.indexOf(d);p>-1&&(n.splice(p,1),d.record.name&&r.delete(d.record.name),d.children.forEach(a),d.alias.forEach(a))}}function l(){return n}function i(d){let p=0;for(;p=0&&(d.record.path!==n[p].record.path||!bc(d,n[p]));)p++;n.splice(p,0,d),d.record.name&&!yi(d)&&r.set(d.record.name,d)}function c(d,p){let m,v={},L,b;if("name"in d&&d.name){if(m=r.get(d.name),!m)throw Tn(1,{location:d});b=m.record.name,v=ue(_i(p.params,m.keys.filter(w=>!w.optional).map(w=>w.name)),d.params&&_i(d.params,m.keys.map(w=>w.name))),L=m.stringify(v)}else if("path"in d)L=d.path,m=n.find(w=>w.re.test(L)),m&&(v=m.parse(L),b=m.record.name);else{if(m=p.name?r.get(p.name):n.find(w=>w.re.test(p.path)),!m)throw Tn(1,{location:d,currentLocation:p});b=m.record.name,v=ue({},p.params,d.params),L=m.stringify(v)}const C=[];let _=m;for(;_;)C.unshift(_.record),_=_.parent;return{name:b,path:L,params:v,matched:C,meta:sg(C)}}return e.forEach(d=>o(d)),{addRoute:o,resolve:c,removeRoute:a,getRoutes:l,getRecordMatcher:s}}function _i(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function ng(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:rg(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function rg(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function yi(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function sg(e){return e.reduce((t,n)=>ue(t,n.meta),{})}function bi(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function bc(e,t){return t.children.some(n=>n===e||bc(e,n))}const Ec=/#/g,og=/&/g,ag=/\//g,ig=/=/g,lg=/\?/g,wc=/\+/g,cg=/%5B/g,ug=/%5D/g,Oc=/%5E/g,fg=/%60/g,Lc=/%7B/g,dg=/%7C/g,Tc=/%7D/g,pg=/%20/g;function ko(e){return encodeURI(""+e).replace(dg,"|").replace(cg,"[").replace(ug,"]")}function mg(e){return ko(e).replace(Lc,"{").replace(Tc,"}").replace(Oc,"^")}function Js(e){return ko(e).replace(wc,"%2B").replace(pg,"+").replace(Ec,"%23").replace(og,"%26").replace(fg,"`").replace(Lc,"{").replace(Tc,"}").replace(Oc,"^")}function hg(e){return Js(e).replace(ig,"%3D")}function gg(e){return ko(e).replace(Ec,"%23").replace(lg,"%3F")}function vg(e){return e==null?"":gg(e).replace(ag,"%2F")}function kr(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function _g(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;so&&Js(o)):[r&&Js(r)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function yg(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=ct(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}const bg=Symbol(""),wi=Symbol(""),rs=Symbol(""),Cc=Symbol(""),Qs=Symbol("");function xn(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Rt(e,t,n,r,s){const o=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((a,l)=>{const i=p=>{p===!1?l(Tn(4,{from:n,to:t})):p instanceof Error?l(p):Kh(p)?l(Tn(2,{from:t,to:p})):(o&&r.enterCallbacks[s]===o&&typeof p=="function"&&o.push(p),a())},c=e.call(r&&r.instances[s],t,n,i);let d=Promise.resolve(c);e.length<3&&(d=d.then(i)),d.catch(p=>l(p))})}function _s(e,t,n,r){const s=[];for(const o of e)for(const a in o.components){let l=o.components[a];if(!(t!=="beforeRouteEnter"&&!o.instances[a]))if(Eg(l)){const c=(l.__vccOpts||l)[t];c&&s.push(Rt(c,n,r,o,a))}else{let i=l();s.push(()=>i.then(c=>{if(!c)return Promise.reject(new Error(`Couldn't resolve component "${a}" at "${o.path}"`));const d=Ah(c)?c.default:c;o.components[a]=d;const m=(d.__vccOpts||d)[t];return m&&Rt(m,n,r,o,a)()}))}}return s}function Eg(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Oi(e){const t=Ye(rs),n=Ye(Cc),r=me(()=>t.resolve(gt(e.to))),s=me(()=>{const{matched:i}=r.value,{length:c}=i,d=i[c-1],p=n.matched;if(!d||!p.length)return-1;const m=p.findIndex(Ln.bind(null,d));if(m>-1)return m;const v=Li(i[c-2]);return c>1&&Li(d)===v&&p[p.length-1].path!==v?p.findIndex(Ln.bind(null,i[c-2])):m}),o=me(()=>s.value>-1&&Tg(n.params,r.value.params)),a=me(()=>s.value>-1&&s.value===n.matched.length-1&&gc(n.params,r.value.params));function l(i={}){return Lg(i)?t[gt(e.replace)?"replace":"push"](gt(e.to)).catch(Kn):Promise.resolve()}return{route:r,href:me(()=>r.value.href),isActive:o,isExactActive:a,navigate:l}}const wg=Vr({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"}},useLink:Oi,setup(e,{slots:t}){const n=Wt(Oi(e)),{options:r}=Ye(rs),s=me(()=>({[Ti(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Ti(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&t.default(n);return e.custom?o:ir("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}}),Og=wg;function Lg(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){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Tg(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!ct(s)||s.length!==r.length||r.some((o,a)=>o!==s[a]))return!1}return!0}function Li(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ti=(e,t,n)=>e??t??n,Cg=Vr({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=Ye(Qs),s=me(()=>e.route||r.value),o=Ye(wi,0),a=me(()=>{let c=gt(o);const{matched:d}=s.value;let p;for(;(p=d[c])&&!p.components;)c++;return c}),l=me(()=>s.value.matched[a.value]);Er(wi,me(()=>a.value+1)),Er(bg,l),Er(Qs,s);const i=ke();return We(()=>[i.value,l.value,e.name],([c,d,p],[m,v,L])=>{d&&(d.instances[p]=c,v&&v!==d&&c&&c===m&&(d.leaveGuards.size||(d.leaveGuards=v.leaveGuards),d.updateGuards.size||(d.updateGuards=v.updateGuards))),c&&d&&(!v||!Ln(d,v)||!m)&&(d.enterCallbacks[p]||[]).forEach(b=>b(c))},{flush:"post"}),()=>{const c=s.value,d=e.name,p=l.value,m=p&&p.components[d];if(!m)return Ci(n.default,{Component:m,route:c});const v=p.props[d],L=v?v===!0?c.params:typeof v=="function"?v(c):v:null,C=ir(m,ue({},L,t,{onVnodeUnmounted:_=>{_.component.isUnmounted&&(p.instances[d]=null)},ref:i}));return Ci(n.default,{Component:C,route:c})||C}}});function Ci(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Ag=Cg;function Ig(e){const t=tg(e.routes,e),n=e.parseQuery||_g,r=e.stringifyQuery||Ei,s=e.history,o=xn(),a=xn(),l=xn(),i=Xn(Nt);let c=Nt;cn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const d=gs.bind(null,P=>""+P),p=gs.bind(null,vg),m=gs.bind(null,kr);function v(P,$){let F,V;return _c(P)?(F=t.getRecordMatcher(P),V=$):V=P,t.addRoute(V,F)}function L(P){const $=t.getRecordMatcher(P);$&&t.removeRoute($)}function b(){return t.getRoutes().map(P=>P.record)}function C(P){return!!t.getRecordMatcher(P)}function _(P,$){if($=ue({},$||i.value),typeof P=="string"){const f=vs(n,P,$.path),h=t.resolve({path:f.path},$),E=s.createHref(f.fullPath);return ue(f,h,{params:m(h.params),hash:kr(f.hash),redirectedFrom:void 0,href:E})}let F;if("path"in P)F=ue({},P,{path:vs(n,P.path,$.path).path});else{const f=ue({},P.params);for(const h in f)f[h]==null&&delete f[h];F=ue({},P,{params:p(f)}),$.params=p($.params)}const V=t.resolve(F,$),te=P.hash||"";V.params=d(m(V.params));const g=Ph(r,ue({},P,{hash:mg(te),path:V.path})),u=s.createHref(g);return ue({fullPath:g,hash:te,query:r===Ei?yg(P.query):P.query||{}},V,{redirectedFrom:void 0,href:u})}function w(P){return typeof P=="string"?vs(n,P,i.value.path):ue({},P)}function S(P,$){if(c!==P)return Tn(8,{from:$,to:P})}function y(P){return k(P)}function T(P){return y(ue(w(P),{replace:!0}))}function x(P){const $=P.matched[P.matched.length-1];if($&&$.redirect){const{redirect:F}=$;let V=typeof F=="function"?F(P):F;return typeof V=="string"&&(V=V.includes("?")||V.includes("#")?V=w(V):{path:V},V.params={}),ue({query:P.query,hash:P.hash,params:"path"in V?{}:P.params},V)}}function k(P,$){const F=c=_(P),V=i.value,te=P.state,g=P.force,u=P.replace===!0,f=x(F);if(f)return k(ue(w(f),{state:typeof f=="object"?ue({},te,f.state):te,force:g,replace:u}),$||F);const h=F;h.redirectedFrom=$;let E;return!g&&Nh(r,V,F)&&(E=Tn(16,{to:h,from:V}),Le(V,V,!0,!1)),(E?Promise.resolve(E):K(h,V)).catch(I=>wt(I)?wt(I,2)?I:Ae(I):ee(I,h,V)).then(I=>{if(I){if(wt(I,2))return k(ue({replace:u},w(I.to),{state:typeof I.to=="object"?ue({},te,I.to.state):te,force:g}),$||h)}else I=U(h,V,!0,u,te);return q(h,V,I),I})}function W(P,$){const F=S(P,$);return F?Promise.reject(F):Promise.resolve()}function B(P){const $=Te.values().next().value;return $&&typeof $.runWithContext=="function"?$.runWithContext(P):P()}function K(P,$){let F;const[V,te,g]=Sg(P,$);F=_s(V.reverse(),"beforeRouteLeave",P,$);for(const f of V)f.leaveGuards.forEach(h=>{F.push(Rt(h,P,$))});const u=W.bind(null,P,$);return F.push(u),fe(F).then(()=>{F=[];for(const f of o.list())F.push(Rt(f,P,$));return F.push(u),fe(F)}).then(()=>{F=_s(te,"beforeRouteUpdate",P,$);for(const f of te)f.updateGuards.forEach(h=>{F.push(Rt(h,P,$))});return F.push(u),fe(F)}).then(()=>{F=[];for(const f of g)if(f.beforeEnter)if(ct(f.beforeEnter))for(const h of f.beforeEnter)F.push(Rt(h,P,$));else F.push(Rt(f.beforeEnter,P,$));return F.push(u),fe(F)}).then(()=>(P.matched.forEach(f=>f.enterCallbacks={}),F=_s(g,"beforeRouteEnter",P,$),F.push(u),fe(F))).then(()=>{F=[];for(const f of a.list())F.push(Rt(f,P,$));return F.push(u),fe(F)}).catch(f=>wt(f,8)?f:Promise.reject(f))}function q(P,$,F){l.list().forEach(V=>B(()=>V(P,$,F)))}function U(P,$,F,V,te){const g=S(P,$);if(g)return g;const u=$===Nt,f=cn?history.state:{};F&&(V||u?s.replace(P.fullPath,ue({scroll:u&&f&&f.scroll},te)):s.push(P.fullPath,te)),i.value=P,Le(P,$,F,u),Ae()}let G;function ce(){G||(G=s.listen((P,$,F)=>{if(!Ie.listening)return;const V=_(P),te=x(V);if(te){k(ue(te,{replace:!0}),V).catch(Kn);return}c=V;const g=i.value;cn&&Uh(pi(g.fullPath,F.delta),ns()),K(V,g).catch(u=>wt(u,12)?u:wt(u,2)?(k(u.to,V).then(f=>{wt(f,20)&&!F.delta&&F.type===sr.pop&&s.go(-1,!1)}).catch(Kn),Promise.reject()):(F.delta&&s.go(-F.delta,!1),ee(u,V,g))).then(u=>{u=u||U(V,g,!1),u&&(F.delta&&!wt(u,8)?s.go(-F.delta,!1):F.type===sr.pop&&wt(u,20)&&s.go(-1,!1)),q(V,g,u)}).catch(Kn)}))}let ye=xn(),Q=xn(),X;function ee(P,$,F){Ae(P);const V=Q.list();return V.length?V.forEach(te=>te(P,$,F)):console.error(P),Promise.reject(P)}function _e(){return X&&i.value!==Nt?Promise.resolve():new Promise((P,$)=>{ye.add([P,$])})}function Ae(P){return X||(X=!P,ce(),ye.list().forEach(([$,F])=>P?F(P):$()),ye.reset()),P}function Le(P,$,F,V){const{scrollBehavior:te}=e;if(!cn||!te)return Promise.resolve();const g=!F&&Wh(pi(P.fullPath,0))||(V||!F)&&history.state&&history.state.scroll||null;return Hr().then(()=>te(P,$,g)).then(u=>u&&$h(u)).catch(u=>ee(u,P,$))}const pe=P=>s.go(P);let Fe;const Te=new Set,Ie={currentRoute:i,listening:!0,addRoute:v,removeRoute:L,hasRoute:C,getRoutes:b,resolve:_,options:e,push:y,replace:T,go:pe,back:()=>pe(-1),forward:()=>pe(1),beforeEach:o.add,beforeResolve:a.add,afterEach:l.add,onError:Q.add,isReady:_e,install(P){const $=this;P.component("RouterLink",Og),P.component("RouterView",Ag),P.config.globalProperties.$router=$,Object.defineProperty(P.config.globalProperties,"$route",{enumerable:!0,get:()=>gt(i)}),cn&&!Fe&&i.value===Nt&&(Fe=!0,y(s.location).catch(te=>{}));const F={};for(const te in Nt)Object.defineProperty(F,te,{get:()=>i.value[te],enumerable:!0});P.provide(rs,$),P.provide(Cc,qi(F)),P.provide(Qs,i);const V=P.unmount;Te.add(P),P.unmount=function(){Te.delete(P),Te.size<1&&(c=Nt,G&&G(),G=null,i.value=Nt,Fe=!1,X=!1),V()}}};function fe(P){return P.reduce(($,F)=>$.then(()=>B(F)),Promise.resolve())}return Ie}function Sg(e,t){const n=[],r=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let a=0;aLn(c,l))?r.push(l):n.push(l));const i=e.matched[a];i&&(t.matched.find(c=>Ln(c,i))||s.push(i))}return[n,r,s]}function Pg(){return Ye(rs)}const Ng=Wn("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100"},[Wn("circle",{transform:"rotate(-44.992 50 50.001)",cx:"50",cy:"50",style:{fill:"var(--c-primary)"},r:"50"}),Wn("path",{d:"M37.9 30h24.2c1.8 0 3.5.9 4.6 2.4l8 11.3c1.6 2.2 1.3 5.3-.6 7.3L54 71c-2.2 2.2-5.8 2.2-8 0L25.9 50.9c-1.9-1.9-2.2-5-.6-7.3l8-11.3c1.1-1.4 2.8-2.3 4.6-2.3z",style:{fill:"#fff"}})],-1),xg=[Ng],Rg=Vr({__name:"LoadingScreen",props:{class:{},loading:{type:Boolean,default:!1},import:{}},setup(e){const t=e,n=Xn(),r=me(()=>t.class);return or(()=>{t.import().then(s=>n.value=s.default)}),(s,o)=>n.value&&!s.loading?(gn(),xs("div",{key:0,class:tn([s.$style.wrapper,r.value])},[(gn(),_o(zu(n.value)))],2)):(gn(),xs("div",{key:1,class:tn(s.$style.placeholder)},xg,2))}}),kg="M",Dg="P",Mg={placeholder:kg,"fade-down":"N","fade-down-shorted":"O",wrapper:Dg},Ac=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},Fg={$style:Mg},$g=Ac(Rg,[["__cssModules",Fg]]),Ug=Vr({__name:"App",setup(e){const{state:t}=ch(),{t:n}=ts(),r=Pg(),s=ih(),o=Bl(),a=pp(),l=Xm(me(()=>o.value==="minimized"?0:.035));return zn(()=>{a.classList.add(t.appearance.theme),Hr(()=>{const i=getComputedStyle(a).getPropertyValue("--app-background").trim();document.querySelectorAll('[data-meta="theme-color"]').forEach(c=>c.content=i)})}),We(()=>t.appearance.theme,(i,c)=>a.classList.remove(c)),We(()=>t.appearance.animations,i=>{a.classList[i?"remove":"add"]("reducedMotion")}),zn(()=>{document.title=["app.name",...r.currentRoute.value.matched.map(i=>i.name)].map(n).join(" / ")}),(i,c)=>(gn(),xs("div",{ref_key:"root",ref:l,class:tn(i.$style.app)},[Ue($g,{loading:gt(s).state.status==="loading",class:tn(i.$style.root),import:()=>kt(()=>import("./Frame-a1d81a2f.js"),["assets/Frame-a1d81a2f.js","assets/Link-b21ad2f6.js","assets/Icon-f54aec6a.js","assets/Icon-2d00bfea.css","assets/useThemeStyles-349ce8f2.js","assets/Link-cbb29860.css","assets/AnimatedRouterView-43191cc5.js","assets/AnimatedRouterView-72717bb4.css","assets/Button-1ed056c9.js","assets/Button-d60163ea.css","assets/useResizeObserver-3dd0959b.js","assets/_commonjsHelpers-725317a4.js","assets/Frame-66c00bc5.css"])},null,8,["loading","class","import"])],2))}}),Wg="q",Hg="r",Bg={app:Wg,root:Hg},jg={$style:Bg},Vg=Ac(Ug,[["__cssModules",jg]]),Kg=Ig({history:Vh(),routes:[{path:"/",strict:!0,redirect:"/dashboard"},{path:"/dashboard",name:"navigation.menu.dashboard",component:()=>kt(()=>import("./Dashboard-264bd2c0.js"),["assets/Dashboard-264bd2c0.js","assets/Button-1ed056c9.js","assets/Icon-f54aec6a.js","assets/Icon-2d00bfea.css","assets/useThemeStyles-349ce8f2.js","assets/Button-d60163ea.css","assets/Link-b21ad2f6.js","assets/Link-cbb29860.css","assets/AnimatedRouterView-43191cc5.js","assets/AnimatedRouterView-72717bb4.css","assets/Pane-ff6685ec.js","assets/Currency-532cc709.js","assets/Currency-7e07fb54.css","assets/Pane-b1cd382e.css","assets/Dashboard-f39d504b.css"]),children:[{path:"",name:"dashboard.distribution",component:()=>kt(()=>import("./Overview-4f6e3f7c.js"),["assets/Overview-4f6e3f7c.js","assets/AsyncComponent-3263497c.js","assets/AsyncComponent-20af1d2f.css","assets/budgets-531db56b.js","assets/Currency-532cc709.js","assets/Currency-7e07fb54.css","assets/Icon-f54aec6a.js","assets/Icon-2d00bfea.css","assets/Link-b21ad2f6.js","assets/useThemeStyles-349ce8f2.js","assets/Link-cbb29860.css","assets/EChart.vue_vue_type_script_setup_true_lang-b09f4fbe.js","assets/useResizeObserver-3dd0959b.js","assets/Overview-70f23a5f.css"])},{path:"summary",name:"dashboard.summary",component:()=>kt(()=>import("./Summary-646384f7.js"),["assets/Summary-646384f7.js","assets/AsyncComponent-3263497c.js","assets/AsyncComponent-20af1d2f.css","assets/budgets-531db56b.js","assets/useMonthNames-a81a4bd7.js","assets/Summary-db64e953.css"])}]},{path:"/income",name:"navigation.menu.income",component:()=>kt(()=>import("./Income-257a2d07.js"),["assets/Income-257a2d07.js","assets/BudgetPane-3f0100ab.js","assets/EChart.vue_vue_type_script_setup_true_lang-b09f4fbe.js","assets/useResizeObserver-3dd0959b.js","assets/budgets-531db56b.js","assets/Pane-ff6685ec.js","assets/Currency-532cc709.js","assets/Currency-7e07fb54.css","assets/Pane-b1cd382e.css","assets/Button-1ed056c9.js","assets/Icon-f54aec6a.js","assets/Icon-2d00bfea.css","assets/useThemeStyles-349ce8f2.js","assets/Button-d60163ea.css","assets/useMonthNames-a81a4bd7.js","assets/BudgetPane-3096f589.css"])},{path:"/expenses",name:"navigation.menu.expenses",component:()=>kt(()=>import("./Expenses-2101cb61.js"),["assets/Expenses-2101cb61.js","assets/BudgetPane-3f0100ab.js","assets/EChart.vue_vue_type_script_setup_true_lang-b09f4fbe.js","assets/useResizeObserver-3dd0959b.js","assets/budgets-531db56b.js","assets/Pane-ff6685ec.js","assets/Currency-532cc709.js","assets/Currency-7e07fb54.css","assets/Pane-b1cd382e.css","assets/Button-1ed056c9.js","assets/Icon-f54aec6a.js","assets/Icon-2d00bfea.css","assets/useThemeStyles-349ce8f2.js","assets/Button-d60163ea.css","assets/useMonthNames-a81a4bd7.js","assets/BudgetPane-3096f589.css"])},{path:"/:pathMatch(.*)*",redirect:"/dashboard"}]});const Ai=uc("analytics"),{ACKEE_HOST:Ii,ACKEE_DOMAIN_ID:Si,PROD:Yg}={ACKEE_HOST:"https://ackee.reinisch.io",OAUTH_CLIENT_ID:"425971557048-usoe63101ucema007r06eoqdtfhj7fem.apps.googleusercontent.com",ACKEE_DOMAIN_ID:"75f260fd-90f9-400d-aad5-f3f0032cebfd",OAUTH_SCOPE:"https://www.googleapis.com/auth/drive.appdata",OAUTH_URI:"https://accounts.google.com/o/oauth2/auth",BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1,APP_BUILD_TIMESTAMP:1690803828531};Yg&&(Ii&&Si?kt(()=>import("./main-44350b7b.js"),["assets/main-44350b7b.js","assets/_commonjsHelpers-725317a4.js"]).then(({create:e})=>{Ai.success("Enabled, don't worry - it's self-hosted and just for me :)"),e(Ii).record(Si)}):Ai.info("Disabled (not configured)"));const{OAUTH_URI:Gg,OAUTH_CLIENT_ID:qg,OAUTH_SCOPE:Xg}={ACKEE_HOST:"https://ackee.reinisch.io",OAUTH_CLIENT_ID:"425971557048-usoe63101ucema007r06eoqdtfhj7fem.apps.googleusercontent.com",ACKEE_DOMAIN_ID:"75f260fd-90f9-400d-aad5-f3f0032cebfd",OAUTH_SCOPE:"https://www.googleapis.com/auth/drive.appdata",OAUTH_URI:"https://accounts.google.com/o/oauth2/auth",BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1,APP_BUILD_TIMESTAMP:1690803828531},Do=ah({authUri:Gg,clientId:qg,scope:Xg}),on=od(Vg);on.provide(hc,Ch(Do));on.provide(pc,lh(Do));on.provide(fc,Do);on.directive("tooltip",th);on.use(Dn);on.use(Kg);on.mount("#app");const Mn=uc("app"),Jg=new Date(1690803828531).toLocaleDateString(),Qg=new Date(1690803828531).toLocaleTimeString();Mn.info(`Ocular build on the ${Jg} at around ${Qg}`);Pc({onOfflineReady:()=>Mn.success("App available offline"),onNeedRefresh:()=>Mn.info("App updated, need to refresh..."),onRegisteredSW:()=>Mn.success("Service worker registered"),onRegisterError:e=>Mn.error("Failed to register service-worker",e)});export{tv as $,dv as A,cc as B,kt as C,Bl as D,sv as E,Ke as F,mv as G,pv as H,Xn as I,zn as J,Wt as K,iv as L,av as M,We as N,fv as O,Hr as P,or as Q,ch as R,Ef as S,Gr as T,gv as U,ih as V,pp as W,yt as X,Ye as Y,Er as Z,Ac as _,xs as a,Zg as a0,dp as a1,wh as a2,ps as a3,Rr as a4,qm as a5,Sl as a6,ov as a7,Wn as b,me as c,Vr as d,ts as e,vv as f,Pg as g,ev as h,_o as i,rv as j,gt as k,Ue as l,Xm as m,tn as n,gn as o,lv as p,zu as q,nv as r,ro as s,zg as t,uv as u,zm as v,Pu as w,ke as x,cv as y,hv as z}; diff --git a/assets/index-8cbb8b66.css b/assets/index-89b69f17.css similarity index 94% rename from assets/index-8cbb8b66.css rename to assets/index-89b69f17.css index 3f6f4107..9b120d3b 100644 --- a/assets/index-8cbb8b66.css +++ b/assets/index-89b69f17.css @@ -1 +1 @@ -@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@200;400;500;600;700&display=swap";.i_{-webkit-backdrop-filter:var(--tooltip-backdrop);backdrop-filter:var(--tooltip-backdrop);padding:4px 8px;font-size:var(--font-size-xs);font-weight:var(--font-weight-m);border-radius:var(--border-radius-m);box-shadow:var(--tooltip-shadow);transition:opacity var(--transition-s);opacity:0}.i_.j_{opacity:1}@keyframes i{20%,80%{opacity:1;transform:none}to{opacity:0;transform:translateY(10px)}}@keyframes j{30%,60%{opacity:1;transform:none}to{opacity:0;transform:translateY(10px)}}.h{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.h>svg{width:50px;height:50px;overflow:visible}.h>svg>circle,.h>svg>path{opacity:0;transform:translateY(-10px)}.h>svg>circle{animation:i infinite var(--transition-xxl) ease-in-out}.h>svg>path{animation:j infinite var(--transition-xxl) ease-in-out}.k{width:100%;height:100%;animation:var(--animation-fade-in-scale) var(--transition-s)}.f{display:flex;flex-grow:1;width:100%;height:100%;max-width:1600px;max-height:1066.6666666667px;box-shadow:var(--app-box-shadow);overflow:hidden;background:var(--app-background)}@media all and (max-width: 1600px),(max-height: 1066.6666666667px){.f{max-width:100%;max-height:100%}}.g{display:flex}@media all and (max-width: 786px){.g{flex-direction:column-reverse}}@font-face{font-family:IBM Plex Sans;font-weight:300;src:url(/assets/IBMPlexSans-Light-1b5930de.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-weight:400;src:url(/assets/IBMPlexSans-Regular-35c550c1.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-weight:500;src:url(/assets/IBMPlexSans-Medium-0d831a6a.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-weight:600;src:url(/assets/IBMPlexSans-SemiBold-4dac4e29.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-weight:700;src:url(/assets/IBMPlexSans-Bold-7fae27cb.woff2) format("woff2")}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}@keyframes fade-in-right{0%{opacity:0;transform:translate(-5px)}to{opacity:1;transform:none}}@keyframes fade-in-scale{0%{opacity:0;transform:scale(.995)}to{opacity:1;transform:none}}*{-webkit-tap-highlight-color:transparent;box-sizing:border-box;padding:0;margin:0}::-webkit-scrollbar{width:15px}::-webkit-scrollbar-thumb{background:var(--app-scrollbar);background-clip:content-box;border:5px solid transparent;border-radius:10px}::-webkit-scrollbar-corner{display:none}@media (pointer: coarse){::-webkit-scrollbar{display:none}}html,body,#app{width:100%;height:100%}#app{position:fixed;top:0;left:0;bottom:0;right:0;background:var(--theme);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-s);font-family:var(--font-family);color:var(--theme-text);--media-type: "normal"}@media all and (max-width: 1600px),(max-height: 1066.6666666667px){#app{--media-type: "minimized"}}@media all and (max-width: 786px){#app{--media-type: "mobile"}}#app,::backdrop{--animation-fade-in-down: fade-in-down;--animation-fade-in-right: fade-in-right;--animation-fade-in-scale: fade-in-scale}#app.light,#app.light ::backdrop{--theme: #f8f9fa;--theme-text: var(--c-text-dark);--theme-text-muted: var(--c-text-dark-muted);--app-max-width: 1600px;--app-max-height: 1000px;--app-box-shadow: 0 4px 7px #e8e7f5;--app-scroll-box-shadow: 0 0 10px #00000038;--app-background: #fff;--app-border: #e8e9f4;--app-scrollbar: #bec9d4;--c-text-dark: #333946;--c-text-dark-muted: #788090;--c-text-light: #fff;--c-text-light-accent: #b8bbcc;--c-text-light-muted: #d2d2da;--c-dimmed: #bec9d4;--c-dimmed-hover: #a2a9b4;--c-dimmed-text: var(--c-text-light);--c-dimmed-text-hover: var(--c-dimmed-text);--c-dimmed-text-accent: var(--c-text-light);--c-dimmed-pure: var(--c-dimmed);--c-dimmed-pure-hover: var(--c-dimmed-hover);--c-dimmed-shadow: #555c655c;--c-primary: #202023;--c-primary-light: #e8f0fb;--c-primary-light-dimmed: #c9d9ec;--c-primary-hover: #2f2f34;--c-primary-text: var(--c-text-light);--c-primary-text-hover: var(--c-primary-text);--c-primary-text-accent: #748aa8;--c-primary-pure: var(--c-primary);--c-primary-pure-hover: var(--c-primary-hover);--c-primary-shadow: #5077be5c;--c-secondary: #f2e3ff;--c-secondary-light: var(--c-secondary);--c-secondary-light-dimmed: #dab2ff;--c-secondary-hover: #e2bfff;--c-secondary-text: var(--c-text-light);--c-secondary-text-hover: var(--c-secondary-text);--c-secondary-text-accent: #8969a7;--c-secondary-pure: var(--c-secondary);--c-secondary-pure-hover: var(--c-secondary-hover);--c-secondary-shadow: #b765ff5c;--c-success: #64d37d;--c-success-light: #eafdee;--c-success-light-dimmed: #9fd0a9;--c-success-hover: #55b26d;--c-success-text: var(--c-text-light);--c-success-text-hover: var(--c-success-text);--c-success-text-accent: #50805a;--c-success-pure: var(--c-success);--c-success-pure-hover: var(--c-success-hover);--c-success-shadow: #55b26d5c;--c-warning: #ffca67;--c-warning-light: #ffefe7;--c-warning-light-dimmed: #e5b197;--c-warning-hover: #ab6d4a;--c-warning-text: var(--c-text-light);--c-warning-text-hover: var(--c-warning-text);--c-warning-text-accent: #c58c6f;--c-warning-pure: var(--c-warning);--c-warning-pure-hover: var(--c-warning-hover);--c-warning-shadow: #f09e5a5c;--c-danger: #ee7a7a;--c-danger-light: #ffc9c9;--c-danger-light-dimmed: #e59696;--c-danger-hover: #de4e4e;--c-danger-text: var(--c-text-light);--c-danger-text-hover: var(--c-danger-text);--c-danger-text-accent: #bd5f5f;--c-danger-pure: var(--c-danger);--c-danger-pure-hover: var(--c-danger-hover);--c-danger-shadow: #ee7a7a5c;--font-family: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;--font-weight-s: 300;--font-weight-m: 400;--font-weight-l: 500;--font-weight-xl: 600;--font-weight-xxl: 700;--font-size-xxs: 10px;--font-size-xs: 12px;--font-size-s: 14px;--font-size-m: 16px;--font-size-l: 18px;--font-size-xl: 20px;--font-size-xxl: 24px;--transitions: 1;--transition-s: calc(var(--transitions) * .125s);--transition-m: calc(var(--transitions) * .25s);--transition-xl: calc(var(--transitions) * .75s);--transition-xxl: calc(var(--transitions) * 1.5s);--chart-line-color: #d7dfe4;--chart-label: var(--theme-text);--chart-generic-saturation: 55%;--chart-generic-lightness: 82%;--border-radius-s: 2px;--border-radius-m: 4px;--border-radius-l: 6px;--border-radius-xl: 8px;--border-radius-xxl: 16px;--border-radius-xxxl: 24px;--input-field-transition: var(--transition-s);--input-field-font-size: var(--font-size-xs);--input-field-caret-color: #2d3036;--input-field-border: var(--c-dimmed);--input-field-placeholder: var(--c-dimmed-pure);--input-field-background: var(--app-background);--input-field-hover-border: var(--c-dimmed-hover);--input-field-hover-background: var(--input-field-background);--input-field-focus-border: #0059ffac;--input-field-focus-background: var(--input-field-background);--input-field-focus-box-shadow: #0059ff5c;--input-field-max-width: 200px;--dialog-background: var(--app-background);--dialog-box-shadow: 0 2px 5px #00000012;--context-menu-item-color: #777788;--context-menu-item-color-hover: #222228;--context-menu-item-background-hover: #0000000d;--context-menu-backdrop: brightness(10);--context-menu-shadow: 0 2px 10px #c5c3db;--grid-background-odd: #f0f2f3;--grid-background-odd-hover: #e6e9eb;--grid-background-odd-active: #ededed;--grid-background-even: #fff;--grid-background-even-hover: #f5f5f7;--grid-background-even-active: #fafafa;--grid-border-color: #e4e5e6;--grid-border-radius: var(--border-radius-m);--grid-header-background: #272d46;--grid-header-text: #dfe2e8;--tooltip-backdrop: var(--context-menu-backdrop);--tooltip-shadow: 0 1px 2px #e0e0e0}#app.dark,#app.dark ::backdrop{--theme: #02040a;--theme-text: var(--c-text-light);--theme-text-muted: var(--c-text-light-muted);--app-max-width: 1600px;--app-max-height: 1000px;--app-box-shadow: 0 4px 7px #131316;--app-scroll-box-shadow: 0 0 10px #0c0c0c;--app-background: #15161e;--app-border: var(--theme);--app-scrollbar: #3f4354;--c-text-dark: #282d38;--c-text-dark-muted: #788090;--c-text-light: #fff;--c-text-light-accent: #b8bbcc;--c-text-light-muted: #d2d2da;--c-dimmed: #708dab;--c-dimmed-hover: #5d758f;--c-dimmed-text: var(--c-text-light);--c-dimmed-text-hover: var(--c-dimmed-text);--c-dimmed-text-accent: var(--c-text-light);--c-dimmed-pure: var(--c-dimmed);--c-dimmed-pure-hover: var(--c-dimmed-hover);--c-dimmed-shadow: #555c655c;--c-primary: #3f5df3;--c-primary-light: #3f94f3;--c-primary-light-dimmed: #bcdcff;--c-primary-hover: #3450d8;--c-primary-text: var(--c-text-light);--c-primary-text-hover: var(--c-primary-text);--c-primary-text-accent: #eaf4ff;--c-primary-pure: #6d86ff;--c-primary-pure-hover: #5970de;--c-primary-shadow: #4fa2ff5c;--c-secondary: #b460ff;--c-secondary-light: var(--c-secondary);--c-secondary-light-dimmed: #dab2ff;--c-secondary-hover: #9730f1;--c-secondary-text: var(--c-text-light);--c-secondary-text-hover: var(--c-secondary-text);--c-secondary-text-accent: #f5ebff;--c-secondary-pure: var(--c-secondary);--c-secondary-pure-hover: var(--c-secondary-hover);--c-secondary-shadow: #ac4fff5c;--c-success: #36b399;--c-success-light: var(--c-success);--c-success-light-dimmed: #4ddfc1;--c-success-hover: #1d9e83;--c-success-text: var(--c-text-light);--c-success-text-hover: var(--c-success-text);--c-success-text-accent: #dbfff8;--c-success-pure: var(--c-success);--c-success-pure-hover: var(--c-success-hover);--c-success-shadow: #17a6895c;--c-warning: #edbc3d;--c-warning-light: var(--c-warning);--c-warning-light-dimmed: #ffe59f;--c-warning-hover: #ab6d4a;--c-warning-text: var(--c-text-light);--c-warning-text-hover: var(--c-warning-text);--c-warning-text-accent: #fffbf2;--c-warning-pure: var(--c-warning);--c-warning-pure-hover: var(--c-warning-hover);--c-warning-shadow: #e7b6345c;--c-danger: #ed3d3d;--c-danger-light: var(--c-danger);--c-danger-light-dimmed: #ffa4a4;--c-danger-hover: #c42a2a;--c-danger-text: var(--c-text-light);--c-danger-text-hover: var(--c-danger-text);--c-danger-text-accent: #ffc7c7;--c-danger-pure: var(--c-danger);--c-danger-pure-hover: var(--c-danger-hover);--c-danger-shadow: #c42a2a5c;--font-family: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;--font-weight-s: 300;--font-weight-m: 400;--font-weight-l: 500;--font-weight-xl: 600;--font-weight-xxl: 700;--font-size-xxs: 10px;--font-size-xs: 12px;--font-size-s: 14px;--font-size-m: 16px;--font-size-l: 18px;--font-size-xl: 20px;--font-size-xxl: 24px;--transitions: 1;--transition-s: calc(var(--transitions) * .125s);--transition-m: calc(var(--transitions) * .25s);--transition-xl: calc(var(--transitions) * .75s);--transition-xxl: calc(var(--transitions) * 1.5s);--chart-line-color: #3c4249;--chart-label: var(--theme-text);--chart-generic-saturation: 75%;--chart-generic-lightness: 75%;--border-radius-s: 2px;--border-radius-m: 4px;--border-radius-l: 6px;--border-radius-xl: 8px;--border-radius-xxl: 16px;--border-radius-xxxl: 24px;--input-field-transition: var(--transition-s);--input-field-font-size: var(--font-size-xs);--input-field-caret-color: #a6aab7;--input-field-border: var(--c-dimmed);--input-field-placeholder: var(--c-dark-pure);--input-field-background: var(--app-background);--input-field-hover-border: var(--c-dimmed-hover);--input-field-hover-background: var(--input-field-background);--input-field-focus-border: #0750b1;--input-field-focus-background: var(--input-field-background);--input-field-focus-box-shadow: #005ad173;--input-field-max-width: 200px;--dialog-background: var(--app-background);--dialog-box-shadow: 0 2px 10px #00000080;--context-menu-item-color: #c1c1cf;--context-menu-item-color-hover: #ededf6;--context-menu-item-background-hover: #00000080;--context-menu-backdrop: blur(4px) brightness(.25);--context-menu-shadow: 0 1px 5px #0c0b0e;--grid-background-odd: #2c2f3d;--grid-background-odd-hover: #2c2f3d;--grid-background-odd-active: #3d4154;--grid-background-even: #1b1d26;--grid-background-even-hover: #1b1d26;--grid-background-even-active: #2a2d3a;--grid-border-color: #131316;--grid-border-radius: var(--border-radius-m);--grid-header-background: #1f2733;--grid-header-text: #dfe2e8;--tooltip-backdrop: var(--context-menu-backdrop);--tooltip-shadow: 0 1px 2px #141416} +@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@200;400;500;600;700&display=swap";.i_{-webkit-backdrop-filter:var(--tooltip-backdrop);backdrop-filter:var(--tooltip-backdrop);padding:4px 8px;font-size:var(--font-size-xs);font-weight:var(--font-weight-m);border-radius:var(--border-radius-m);box-shadow:var(--tooltip-shadow);transition:opacity var(--transition-s);opacity:0}.i_.j_{opacity:1}@keyframes N{20%,80%{opacity:1;transform:none}to{opacity:0;transform:translateY(10px)}}@keyframes O{30%,60%{opacity:1;transform:none}to{opacity:0;transform:translateY(10px)}}.M{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.M>svg{width:50px;height:50px;overflow:visible}.M>svg>circle,.M>svg>path{opacity:0;transform:translateY(-10px)}.M>svg>circle{animation:N infinite var(--transition-xxl) ease-in-out}.M>svg>path{animation:O infinite var(--transition-xxl) ease-in-out}.P{width:100%;height:100%;animation:var(--animation-fade-in-scale) var(--transition-s)}.q{display:flex;flex-grow:1;width:100%;height:100%;max-width:1600px;max-height:1066.6666666667px;box-shadow:var(--app-box-shadow);overflow:hidden;background:var(--app-background)}@media all and (max-width: 1600px),(max-height: 1066.6666666667px){.q{max-width:100%;max-height:100%}}.r{display:flex}@media all and (max-width: 786px){.r{flex-direction:column-reverse}}@font-face{font-family:IBM Plex Sans;font-weight:300;src:url(/assets/IBMPlexSans-Light-1b5930de.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-weight:400;src:url(/assets/IBMPlexSans-Regular-35c550c1.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-weight:500;src:url(/assets/IBMPlexSans-Medium-0d831a6a.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-weight:600;src:url(/assets/IBMPlexSans-SemiBold-4dac4e29.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-weight:700;src:url(/assets/IBMPlexSans-Bold-7fae27cb.woff2) format("woff2")}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}@keyframes fade-in-right{0%{opacity:0;transform:translate(-5px)}to{opacity:1;transform:none}}@keyframes fade-in-scale{0%{opacity:0;transform:scale(.995)}to{opacity:1;transform:none}}*{-webkit-tap-highlight-color:transparent;box-sizing:border-box;padding:0;margin:0}::-webkit-scrollbar{width:15px}::-webkit-scrollbar-thumb{background:var(--app-scrollbar);background-clip:content-box;border:5px solid transparent;border-radius:10px}::-webkit-scrollbar-corner{display:none}@media (pointer: coarse){::-webkit-scrollbar{display:none}}html,body,#app{width:100%;height:100%}#app{position:fixed;top:0;left:0;bottom:0;right:0;background:var(--theme);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-s);font-family:var(--font-family);color:var(--theme-text);--media-type: "normal"}@media all and (max-width: 1600px),(max-height: 1066.6666666667px){#app{--media-type: "minimized"}}@media all and (max-width: 786px){#app{--media-type: "mobile"}}#app,::backdrop{--animation-fade-in-down: fade-in-down;--animation-fade-in-right: fade-in-right;--animation-fade-in-scale: fade-in-scale}#app.light,#app.light ::backdrop{--theme: #f8f9fa;--theme-text: var(--c-text-dark);--theme-text-muted: var(--c-text-dark-muted);--app-max-width: 1600px;--app-max-height: 1000px;--app-box-shadow: 0 4px 7px #e8e7f5;--app-scroll-box-shadow: 0 0 10px #00000038;--app-background: #fff;--app-border: #e8e9f4;--app-scrollbar: #bec9d4;--c-text-dark: #333946;--c-text-dark-muted: #788090;--c-text-light: #fff;--c-text-light-accent: #b8bbcc;--c-text-light-muted: #d2d2da;--c-dimmed: #bec9d4;--c-dimmed-hover: #a2a9b4;--c-dimmed-text: var(--c-text-light);--c-dimmed-text-hover: var(--c-dimmed-text);--c-dimmed-text-accent: var(--c-text-light);--c-dimmed-pure: var(--c-dimmed);--c-dimmed-pure-hover: var(--c-dimmed-hover);--c-dimmed-shadow: #555c655c;--c-primary: #202023;--c-primary-light: #e8f0fb;--c-primary-light-dimmed: #c9d9ec;--c-primary-hover: #2f2f34;--c-primary-text: var(--c-text-light);--c-primary-text-hover: var(--c-primary-text);--c-primary-text-accent: #748aa8;--c-primary-pure: var(--c-primary);--c-primary-pure-hover: var(--c-primary-hover);--c-primary-shadow: #5077be5c;--c-secondary: #f2e3ff;--c-secondary-light: var(--c-secondary);--c-secondary-light-dimmed: #dab2ff;--c-secondary-hover: #e2bfff;--c-secondary-text: var(--c-text-light);--c-secondary-text-hover: var(--c-secondary-text);--c-secondary-text-accent: #8969a7;--c-secondary-pure: var(--c-secondary);--c-secondary-pure-hover: var(--c-secondary-hover);--c-secondary-shadow: #b765ff5c;--c-success: #64d37d;--c-success-light: #eafdee;--c-success-light-dimmed: #9fd0a9;--c-success-hover: #55b26d;--c-success-text: var(--c-text-light);--c-success-text-hover: var(--c-success-text);--c-success-text-accent: #50805a;--c-success-pure: var(--c-success);--c-success-pure-hover: var(--c-success-hover);--c-success-shadow: #55b26d5c;--c-warning: #ffca67;--c-warning-light: #ffefe7;--c-warning-light-dimmed: #e5b197;--c-warning-hover: #ab6d4a;--c-warning-text: var(--c-text-light);--c-warning-text-hover: var(--c-warning-text);--c-warning-text-accent: #c58c6f;--c-warning-pure: var(--c-warning);--c-warning-pure-hover: var(--c-warning-hover);--c-warning-shadow: #f09e5a5c;--c-danger: #ee7a7a;--c-danger-light: #ffc9c9;--c-danger-light-dimmed: #e59696;--c-danger-hover: #de4e4e;--c-danger-text: var(--c-text-light);--c-danger-text-hover: var(--c-danger-text);--c-danger-text-accent: #bd5f5f;--c-danger-pure: var(--c-danger);--c-danger-pure-hover: var(--c-danger-hover);--c-danger-shadow: #ee7a7a5c;--font-family: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;--font-weight-s: 300;--font-weight-m: 400;--font-weight-l: 500;--font-weight-xl: 600;--font-weight-xxl: 700;--font-size-xxs: 10px;--font-size-xs: 12px;--font-size-s: 14px;--font-size-m: 16px;--font-size-l: 18px;--font-size-xl: 20px;--font-size-xxl: 24px;--transitions: 1;--transition-s: calc(var(--transitions) * .125s);--transition-m: calc(var(--transitions) * .25s);--transition-xl: calc(var(--transitions) * .75s);--transition-xxl: calc(var(--transitions) * 1.5s);--chart-line-color: #d7dfe4;--chart-label: var(--theme-text);--chart-generic-saturation: 55%;--chart-generic-lightness: 82%;--border-radius-s: 2px;--border-radius-m: 4px;--border-radius-l: 6px;--border-radius-xl: 8px;--border-radius-xxl: 16px;--border-radius-xxxl: 24px;--input-field-transition: var(--transition-s);--input-field-font-size: var(--font-size-xs);--input-field-caret-color: #2d3036;--input-field-border: var(--c-dimmed);--input-field-placeholder: var(--c-dimmed-pure);--input-field-background: var(--app-background);--input-field-hover-border: var(--c-dimmed-hover);--input-field-hover-background: var(--input-field-background);--input-field-focus-border: #0059ffac;--input-field-focus-background: var(--input-field-background);--input-field-focus-box-shadow: #0059ff5c;--input-field-max-width: 200px;--dialog-background: var(--app-background);--dialog-box-shadow: 0 2px 5px #00000012;--context-menu-item-color: #777788;--context-menu-item-color-hover: #222228;--context-menu-item-background-hover: #0000000d;--context-menu-backdrop: brightness(10);--context-menu-shadow: 0 2px 10px #c5c3db;--grid-background-odd: #f0f2f3;--grid-background-odd-hover: #e6e9eb;--grid-background-odd-active: #ededed;--grid-background-even: #fff;--grid-background-even-hover: #f5f5f7;--grid-background-even-active: #fafafa;--grid-border-color: #e4e5e6;--grid-border-radius: var(--border-radius-m);--grid-header-background: #272d46;--grid-header-text: #dfe2e8;--tooltip-backdrop: var(--context-menu-backdrop);--tooltip-shadow: 0 1px 2px #e0e0e0}#app.dark,#app.dark ::backdrop{--theme: #02040a;--theme-text: var(--c-text-light);--theme-text-muted: var(--c-text-light-muted);--app-max-width: 1600px;--app-max-height: 1000px;--app-box-shadow: 0 4px 7px #131316;--app-scroll-box-shadow: 0 0 10px #0c0c0c;--app-background: #15161e;--app-border: var(--theme);--app-scrollbar: #3f4354;--c-text-dark: #282d38;--c-text-dark-muted: #788090;--c-text-light: #fff;--c-text-light-accent: #b8bbcc;--c-text-light-muted: #d2d2da;--c-dimmed: #708dab;--c-dimmed-hover: #5d758f;--c-dimmed-text: var(--c-text-light);--c-dimmed-text-hover: var(--c-dimmed-text);--c-dimmed-text-accent: var(--c-text-light);--c-dimmed-pure: var(--c-dimmed);--c-dimmed-pure-hover: var(--c-dimmed-hover);--c-dimmed-shadow: #555c655c;--c-primary: #3f5df3;--c-primary-light: #3f94f3;--c-primary-light-dimmed: #bcdcff;--c-primary-hover: #3450d8;--c-primary-text: var(--c-text-light);--c-primary-text-hover: var(--c-primary-text);--c-primary-text-accent: #eaf4ff;--c-primary-pure: #6d86ff;--c-primary-pure-hover: #5970de;--c-primary-shadow: #4fa2ff5c;--c-secondary: #b460ff;--c-secondary-light: var(--c-secondary);--c-secondary-light-dimmed: #dab2ff;--c-secondary-hover: #9730f1;--c-secondary-text: var(--c-text-light);--c-secondary-text-hover: var(--c-secondary-text);--c-secondary-text-accent: #f5ebff;--c-secondary-pure: var(--c-secondary);--c-secondary-pure-hover: var(--c-secondary-hover);--c-secondary-shadow: #ac4fff5c;--c-success: #36b399;--c-success-light: var(--c-success);--c-success-light-dimmed: #4ddfc1;--c-success-hover: #1d9e83;--c-success-text: var(--c-text-light);--c-success-text-hover: var(--c-success-text);--c-success-text-accent: #dbfff8;--c-success-pure: var(--c-success);--c-success-pure-hover: var(--c-success-hover);--c-success-shadow: #17a6895c;--c-warning: #edbc3d;--c-warning-light: var(--c-warning);--c-warning-light-dimmed: #ffe59f;--c-warning-hover: #ab6d4a;--c-warning-text: var(--c-text-light);--c-warning-text-hover: var(--c-warning-text);--c-warning-text-accent: #fffbf2;--c-warning-pure: var(--c-warning);--c-warning-pure-hover: var(--c-warning-hover);--c-warning-shadow: #e7b6345c;--c-danger: #ed3d3d;--c-danger-light: var(--c-danger);--c-danger-light-dimmed: #ffa4a4;--c-danger-hover: #c42a2a;--c-danger-text: var(--c-text-light);--c-danger-text-hover: var(--c-danger-text);--c-danger-text-accent: #ffc7c7;--c-danger-pure: var(--c-danger);--c-danger-pure-hover: var(--c-danger-hover);--c-danger-shadow: #c42a2a5c;--font-family: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;--font-weight-s: 300;--font-weight-m: 400;--font-weight-l: 500;--font-weight-xl: 600;--font-weight-xxl: 700;--font-size-xxs: 10px;--font-size-xs: 12px;--font-size-s: 14px;--font-size-m: 16px;--font-size-l: 18px;--font-size-xl: 20px;--font-size-xxl: 24px;--transitions: 1;--transition-s: calc(var(--transitions) * .125s);--transition-m: calc(var(--transitions) * .25s);--transition-xl: calc(var(--transitions) * .75s);--transition-xxl: calc(var(--transitions) * 1.5s);--chart-line-color: #3c4249;--chart-label: var(--theme-text);--chart-generic-saturation: 75%;--chart-generic-lightness: 75%;--border-radius-s: 2px;--border-radius-m: 4px;--border-radius-l: 6px;--border-radius-xl: 8px;--border-radius-xxl: 16px;--border-radius-xxxl: 24px;--input-field-transition: var(--transition-s);--input-field-font-size: var(--font-size-xs);--input-field-caret-color: #a6aab7;--input-field-border: var(--c-dimmed);--input-field-placeholder: var(--c-dark-pure);--input-field-background: var(--app-background);--input-field-hover-border: var(--c-dimmed-hover);--input-field-hover-background: var(--input-field-background);--input-field-focus-border: #0750b1;--input-field-focus-background: var(--input-field-background);--input-field-focus-box-shadow: #005ad173;--input-field-max-width: 200px;--dialog-background: var(--app-background);--dialog-box-shadow: 0 2px 10px #00000080;--context-menu-item-color: #c1c1cf;--context-menu-item-color-hover: #ededf6;--context-menu-item-background-hover: #00000080;--context-menu-backdrop: blur(4px) brightness(.25);--context-menu-shadow: 0 1px 5px #0c0b0e;--grid-background-odd: #2c2f3d;--grid-background-odd-hover: #2c2f3d;--grid-background-odd-active: #3d4154;--grid-background-even: #1b1d26;--grid-background-even-hover: #1b1d26;--grid-background-even-active: #2a2d3a;--grid-border-color: #131316;--grid-border-radius: var(--border-radius-m);--grid-header-background: #1f2733;--grid-header-text: #dfe2e8;--tooltip-backdrop: var(--context-menu-backdrop);--tooltip-shadow: 0 1px 2px #141416} diff --git a/assets/useMonthNames-09c7e203.js b/assets/useMonthNames-a81a4bd7.js similarity index 70% rename from assets/useMonthNames-09c7e203.js rename to assets/useMonthNames-a81a4bd7.js index 7f433b0d..9864e62d 100644 --- a/assets/useMonthNames-09c7e203.js +++ b/assets/useMonthNames-a81a4bd7.js @@ -1 +1 @@ -import{e as s,c as a}from"./index-1bee1cb1.js";const u=(o="long")=>{const{locale:n}=s();return a(()=>{const e=[];for(let t=0;t<12;t++)e.push(new Date(0,t).toLocaleDateString(n.value,{month:o}));return e})};export{u}; +import{e as s,c as a}from"./index-635eac34.js";const u=(o="long")=>{const{locale:n}=s();return a(()=>{const e=[];for(let t=0;t<12;t++)e.push(new Date(0,t).toLocaleDateString(n.value,{month:o}));return e})};export{u}; diff --git a/assets/useResizeObserver-9c83b660.js b/assets/useResizeObserver-3dd0959b.js similarity index 70% rename from assets/useResizeObserver-9c83b660.js rename to assets/useResizeObserver-3dd0959b.js index 29d31e8d..49ad7258 100644 --- a/assets/useResizeObserver-9c83b660.js +++ b/assets/useResizeObserver-3dd0959b.js @@ -1 +1 @@ -import{x as n,N as o}from"./index-1bee1cb1.js";const i=s=>{const r=n(new DOMRect),t=new ResizeObserver(e=>{r.value=e[0].target.getBoundingClientRect()});return o(s,e=>{t.disconnect(),e&&t.observe(e)}),r};export{i as u}; +import{x as n,N as o}from"./index-635eac34.js";const i=s=>{const r=n(new DOMRect),t=new ResizeObserver(e=>{r.value=e[0].target.getBoundingClientRect()});return o(s,e=>{t.disconnect(),e&&t.observe(e)}),r};export{i as u}; diff --git a/assets/useThemeStyles-0768f685.js b/assets/useThemeStyles-349ce8f2.js similarity index 82% rename from assets/useThemeStyles-0768f685.js rename to assets/useThemeStyles-349ce8f2.js index 6fc17456..d7ace4b8 100644 --- a/assets/useThemeStyles-0768f685.js +++ b/assets/useThemeStyles-349ce8f2.js @@ -1 +1 @@ -import{K as a,J as o}from"./index-1bee1cb1.js";const c=t=>{const r=(e=t())=>({focus:`var(--c-${e}-shadow)`,color:{base:`var(--c-${e})`,hover:`var(--c-${e}-hover)`},text:{base:`var(--c-${e}-text)`,hover:`var(--c-${e}-text-hover)`},pure:{base:`var(--c-${e}-pure)`,hover:`var(--c-${e}-pure-hover)`}}),s=a(r());return o(()=>Object.assign(s,r())),s};export{c as u}; +import{K as a,J as o}from"./index-635eac34.js";const c=t=>{const r=(e=t())=>({focus:`var(--c-${e}-shadow)`,color:{base:`var(--c-${e})`,hover:`var(--c-${e}-hover)`},text:{base:`var(--c-${e}-text)`,hover:`var(--c-${e}-text-hover)`},pure:{base:`var(--c-${e}-pure)`,hover:`var(--c-${e}-pure-hover)`}}),s=a(r());return o(()=>Object.assign(s,r())),s};export{c as u}; diff --git a/favicon-maskable.svg b/favicon-maskable.svg new file mode 100644 index 00000000..c640dfb3 --- /dev/null +++ b/favicon-maskable.svg @@ -0,0 +1 @@ + diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 00000000..2258e6e9 Binary files /dev/null and b/favicon.ico differ diff --git a/index.html b/index.html index 7546df37..b6b0c982 100644 --- a/index.html +++ b/index.html @@ -1,41 +1,42 @@ - - - + + + - - - + + + - - - - + + + + - - - - + + + + + - - - - - - - - - - - + + + + + + + + + + + - Ocular - - - - -
- - + Ocular + + + + +
+ + diff --git a/sw.js b/sw.js index 079803c8..67d0f062 100644 --- a/sw.js +++ b/sw.js @@ -1 +1 @@ -if(!self.define){let s,e={};const n=(n,l)=>(n=new URL(n+".js",l).href,e[n]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=n,s.onload=e,document.head.appendChild(s)}else s=n,importScripts(n),e()})).then((()=>{let s=e[n];if(!s)throw new Error(`Module ${n} didn’t register its module`);return s})));self.define=(l,i)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let u={};const a=s=>n(s,r),o={module:{uri:r},exports:u,require:a};e[r]=Promise.all(l.map((s=>o[s]||a(s)))).then((s=>(i(...s),u)))}}define(["./workbox-4de3aa5f"],(function(s){"use strict";self.addEventListener("message",(s=>{s.data&&"SKIP_WAITING"===s.data.type&&self.skipWaiting()})),s.precacheAndRoute([{url:"assets/_commonjsHelpers-725317a4.js",revision:null},{url:"assets/AnimatedRouterView-0f460d78.js",revision:null},{url:"assets/AnimatedRouterView-56c49743.css",revision:null},{url:"assets/AsyncComponent-baca1621.css",revision:null},{url:"assets/AsyncComponent-f4427d1d.js",revision:null},{url:"assets/BudgetPane-21b65ecf.js",revision:null},{url:"assets/BudgetPane-6b25a68b.css",revision:null},{url:"assets/budgets-531db56b.js",revision:null},{url:"assets/Button-075befd4.css",revision:null},{url:"assets/Button-6d17a4fd.js",revision:null},{url:"assets/ChartPlaceholder-46abf122.js",revision:null},{url:"assets/ChartPlaceholder-9d647a5f.css",revision:null},{url:"assets/Currency-7e07fb54.css",revision:null},{url:"assets/Currency-e1b802bf.js",revision:null},{url:"assets/Dashboard-4821cf07.css",revision:null},{url:"assets/Dashboard-c2e04d7d.js",revision:null},{url:"assets/DemoData-06204352.js",revision:null},{url:"assets/DevelopmentChart-a1189b00.css",revision:null},{url:"assets/DevelopmentChart-b67e1a9c.js",revision:null},{url:"assets/DistributionChart-8ece1ec6.css",revision:null},{url:"assets/DistributionChart-ae33c3b2.js",revision:null},{url:"assets/EChart.vue_vue_type_script_setup_true_lang-e0bf0237.js",revision:null},{url:"assets/Expenses-493c1a39.js",revision:null},{url:"assets/Frame-0a0b5638.css",revision:null},{url:"assets/Frame-c2dae572.js",revision:null},{url:"assets/Icon-3e6d397d.js",revision:null},{url:"assets/Icon-f442fa03.css",revision:null},{url:"assets/Income-7eb229d3.js",revision:null},{url:"assets/index-1bee1cb1.js",revision:null},{url:"assets/index-8cbb8b66.css",revision:null},{url:"assets/Link-2f976172.js",revision:null},{url:"assets/Link-ef46abcf.css",revision:null},{url:"assets/main-44350b7b.js",revision:null},{url:"assets/Overview-2227f059.css",revision:null},{url:"assets/Overview-d149b0fb.js",revision:null},{url:"assets/Pane-ecb4ffff.css",revision:null},{url:"assets/Pane-ff954356.js",revision:null},{url:"assets/Summary-a05fd135.js",revision:null},{url:"assets/Summary-f088636f.css",revision:null},{url:"assets/useMonthNames-09c7e203.js",revision:null},{url:"assets/useResizeObserver-9c83b660.js",revision:null},{url:"assets/useThemeStyles-0768f685.js",revision:null},{url:"assets/workbox-window.prod.es5-a7b12eab.js",revision:null},{url:"index.html",revision:"4f0aacd694db8be97c837d95f039274a"},{url:"images/icon-maskable-192x192.png",revision:"63967da70f2ae60c5a47f76cf4e377a6"},{url:"images/icon-maskable-256x256.png",revision:"1684b9c709dd96f30ff36195f8e4ef0e"},{url:"images/icon-maskable-512x512.png",revision:"6155bde7d596bd6a56764591b23cdeb2"},{url:"images/icon-maskable-1024x1024.png",revision:"73ed090e846296ed65e2e6f0ff797ddb"},{url:"images/icon-192x192.png",revision:"eee5c05355951e070c3627be215cef8a"},{url:"images/icon-512x512.png",revision:"cf652f09fc299c7727be11e25888f8fe"},{url:"images/icon-1024x1024.png",revision:"592da787a634488149b2d15c0fee22a9"},{url:"manifest.webmanifest",revision:"4a814bd4f2ed2afb3d55d1d072a1f2d5"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html")))})); +if(!self.define){let s,e={};const l=(l,n)=>(l=new URL(l+".js",n).href,e[l]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()})).then((()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s})));self.define=(n,i)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let u={};const a=s=>l(s,r),o={module:{uri:r},exports:u,require:a};e[r]=Promise.all(n.map((s=>o[s]||a(s)))).then((s=>(i(...s),u)))}}define(["./workbox-4de3aa5f"],(function(s){"use strict";self.addEventListener("message",(s=>{s.data&&"SKIP_WAITING"===s.data.type&&self.skipWaiting()})),s.precacheAndRoute([{url:"assets/_commonjsHelpers-725317a4.js",revision:null},{url:"assets/AnimatedRouterView-43191cc5.js",revision:null},{url:"assets/AnimatedRouterView-72717bb4.css",revision:null},{url:"assets/AsyncComponent-20af1d2f.css",revision:null},{url:"assets/AsyncComponent-3263497c.js",revision:null},{url:"assets/BudgetPane-3096f589.css",revision:null},{url:"assets/BudgetPane-3f0100ab.js",revision:null},{url:"assets/budgets-531db56b.js",revision:null},{url:"assets/Button-1ed056c9.js",revision:null},{url:"assets/Button-d60163ea.css",revision:null},{url:"assets/ChartPlaceholder-26119b8c.css",revision:null},{url:"assets/ChartPlaceholder-743c445d.js",revision:null},{url:"assets/Currency-532cc709.js",revision:null},{url:"assets/Currency-7e07fb54.css",revision:null},{url:"assets/Dashboard-264bd2c0.js",revision:null},{url:"assets/Dashboard-f39d504b.css",revision:null},{url:"assets/DemoData-06204352.js",revision:null},{url:"assets/DevelopmentChart-8b404505.css",revision:null},{url:"assets/DevelopmentChart-f16a34ab.js",revision:null},{url:"assets/DistributionChart-93c1fc6c.css",revision:null},{url:"assets/DistributionChart-be2e2d0d.js",revision:null},{url:"assets/EChart.vue_vue_type_script_setup_true_lang-b09f4fbe.js",revision:null},{url:"assets/Expenses-2101cb61.js",revision:null},{url:"assets/Frame-66c00bc5.css",revision:null},{url:"assets/Frame-a1d81a2f.js",revision:null},{url:"assets/IBMPlexSans-Bold-7fae27cb.woff2",revision:null},{url:"assets/IBMPlexSans-Light-1b5930de.woff2",revision:null},{url:"assets/IBMPlexSans-Medium-0d831a6a.woff2",revision:null},{url:"assets/IBMPlexSans-Regular-35c550c1.woff2",revision:null},{url:"assets/IBMPlexSans-SemiBold-4dac4e29.woff2",revision:null},{url:"assets/Icon-2d00bfea.css",revision:null},{url:"assets/Icon-f54aec6a.js",revision:null},{url:"assets/Income-257a2d07.js",revision:null},{url:"assets/index-635eac34.js",revision:null},{url:"assets/index-89b69f17.css",revision:null},{url:"assets/Link-b21ad2f6.js",revision:null},{url:"assets/Link-cbb29860.css",revision:null},{url:"assets/main-44350b7b.js",revision:null},{url:"assets/Overview-4f6e3f7c.js",revision:null},{url:"assets/Overview-70f23a5f.css",revision:null},{url:"assets/Pane-b1cd382e.css",revision:null},{url:"assets/Pane-ff6685ec.js",revision:null},{url:"assets/Summary-646384f7.js",revision:null},{url:"assets/Summary-db64e953.css",revision:null},{url:"assets/useMonthNames-a81a4bd7.js",revision:null},{url:"assets/useResizeObserver-3dd0959b.js",revision:null},{url:"assets/useThemeStyles-349ce8f2.js",revision:null},{url:"assets/workbox-window.prod.es5-a7b12eab.js",revision:null},{url:"index.html",revision:"8c00ccefae5521b1dd7d7f9e8e9edd14"},{url:"images/icon-maskable-192x192.png",revision:"63967da70f2ae60c5a47f76cf4e377a6"},{url:"images/icon-maskable-256x256.png",revision:"1684b9c709dd96f30ff36195f8e4ef0e"},{url:"images/icon-maskable-512x512.png",revision:"6155bde7d596bd6a56764591b23cdeb2"},{url:"images/icon-maskable-1024x1024.png",revision:"73ed090e846296ed65e2e6f0ff797ddb"},{url:"images/icon-192x192.png",revision:"eee5c05355951e070c3627be215cef8a"},{url:"images/icon-512x512.png",revision:"cf652f09fc299c7727be11e25888f8fe"},{url:"images/icon-1024x1024.png",revision:"592da787a634488149b2d15c0fee22a9"},{url:"manifest.webmanifest",revision:"4a814bd4f2ed2afb3d55d1d072a1f2d5"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html")))}));