From 3df9569bf3aac6df29fa802409f5f83698b402ec Mon Sep 17 00:00:00 2001 From: Michael Geers Date: Sat, 7 May 2022 16:23:01 +0200 Subject: [PATCH] Add unknown vehicle status to new design (#3332) --- assets/js/components/VehicleTitle.vue | 11 +++++++++-- assets/js/i18n/de.js | 3 ++- assets/js/i18n/en.js | 3 ++- assets/js/i18n/lt.js | 3 ++- dist/assets/{index.eb012e12.js => index.d8d48e97.js} | 8 ++++---- dist/index.html | 2 +- 6 files changed, 20 insertions(+), 10 deletions(-) rename dist/assets/{index.eb012e12.js => index.d8d48e97.js} (93%) diff --git a/assets/js/components/VehicleTitle.vue b/assets/js/components/VehicleTitle.vue index 4bf2bca12..2d1bffaff 100644 --- a/assets/js/components/VehicleTitle.vue +++ b/assets/js/components/VehicleTitle.vue @@ -2,7 +2,7 @@

e,e=>{const t=e.config.baseURL+e.config.url,n=`${e.message}: API request failed ${t}`;window.app.error({message:n})});const XS={name:"TopNavigation",props:{vehicleLogins:{type:Object,default:()=>({})}},computed:{logoutCount(){return this.providerLogins.filter(e=>!e.loggedIn).length},providerLogins(){return Object.entries(this.vehicleLogins).map(([e,t])=>({title:e,loggedIn:t.authenticated,loginPath:t.uri+"/login",logoutPath:t.uri+"/logout"}))}},methods:{handleProviderAuthorization:async function(e){e.loggedIn?rl.post(e.logoutPath):rl.post(e.loginPath).then(function(t){window.location.href=t.data.loginUri})}}},JS={type:"button","data-bs-toggle":"dropdown","data-bs-target":"#navbarNavAltMarkup","aria-controls":"navbarNavAltMarkup","aria-expanded":"false","aria-label":"Toggle navigation",class:"btn btn-sm btn-outline-secondary position-relative"},QS={key:0,class:"position-absolute top-0 start-100 translate-middle p-2 bg-danger border border-light rounded-circle"},ZS=S("span",{class:"visually-hidden"},"login available",-1),eC=[ZS],tC=S("shopicon-regular-menu",null,null,-1),nC={class:"dropdown-menu dropdown-menu-end"},rC={class:"dropdown-item",href:"https://docs.evcc.io/blog/",target:"_blank"},sC={class:"dropdown-item",href:"https://docs.evcc.io/docs/Home/",target:"_blank"},iC={class:"dropdown-item",href:"https://github.com/evcc-io/evcc",target:"_blank"},oC={class:"dropdown-item",href:"https://evcc.io/",target:"_blank"},aC=S("li",null,[S("hr",{class:"dropdown-divider"})],-1),lC={class:"dropdown-header"},cC=["onClick"],uC={key:0,class:"d-inline-block p-1 rounded-circle bg-danger border border-light rounded-circle"};function fC(e,t,n,r,s,i){return V(),q("div",null,[S("button",JS,[i.logoutCount>0?(V(),q("span",QS,eC)):Ne("",!0),tC]),S("ul",nC,[S("li",null,[S("a",rC,K(e.$t("header.blog")),1)]),S("li",null,[S("a",sC,K(e.$t("header.docs")),1)]),S("li",null,[S("a",iC,K(e.$t("header.github")),1)]),S("li",null,[S("a",oC,K(e.$t("header.about")),1)]),i.providerLogins.length>0?(V(),q(xe,{key:0},[aC,S("li",null,[S("h6",lC,K(e.$t("header.login")),1)]),(V(!0),q(xe,null,Zt(i.providerLogins,o=>(V(),q("li",{key:o.title},[S("button",{type:"button",class:"dropdown-item",onClick:a=>i.handleProviderAuthorization(o)},[o.loggedIn?Ne("",!0):(V(),q("span",uC)),De(" "+K(o.title)+" "+K(e.$t(o.loggedIn?"main.provider.logout":"main.provider.login")),1)],8,cC)]))),128))],64)):Ne("",!0)])])}var dC=Ie(XS,[["render",fC]]),hC='';class mC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=hC}}window.customElements.define("shopicon-regular-exclamationtriangle",mC);var hn={data:function(){return{fmtLimit:100,fmtDigits:1}},methods:{round:function(e,t){var n=10**t;return(Math.round(e*n)/n).toFixed(t)},fmt:function(e){return e==null?0:(e=Math.abs(e),e>=this.fmtLimit?this.round(e/1e3,this.fmtDigits):this.round(e,0))},fmtKw:function(e=0,t=!0,n=!0){const r=t?1:0,s=t?e/1e3:e;let i="";return n&&(i=t?" kW":" W"),`${new Intl.NumberFormat(this.$i18n.locale,{style:"decimal",minimumFractionDigits:r,maximumFractionDigits:r}).format(s)}${i}`},fmtKWh:function(e){return this.fmtKw(e)+"h"},fmtUnit:function(e){return Math.abs(e)>=this.fmtLimit?"k":""},fmtDuration:function(e){if(e<=0||e==null)return"\u2014";var t="0"+e%60,n="0"+Math.floor(e/60)%60,r=""+Math.floor(e/3600);return r.length<2&&(r="0"+r),r+":"+n.substr(-2)+":"+t.substr(-2)},fmtShortDuration:function(e=0,t=!1){if(e<=0)return"\u2014";var n=e%60,r=Math.floor(e/60)%60,s=Math.floor(e/3600),i="";return s>=1?i=s+":"+`${r}`.padStart(2,"0"):r>=1?i=r+":"+`${n}`.padStart(2,"0"):i=`${n}`,t&&(i+=this.fmtShortDurationUnit(e)),i},fmtShortDurationUnit:function(e=0){if(e<=0)return"";var t=Math.floor(e/60)%60,n=Math.floor(e/3600);return n>=1?"h":t>=1?"m":"s"},fmtDayString:function(e){const t=`${e.getFullYear()}`,n=`${e.getMonth()+1}`.padStart(2,"0"),r=`${e.getDate()}`.padStart(2,"0");return`${t}-${n}-${r}`},fmtTimeString:function(e){const t=`${e.getHours()}`.padStart(2,"0"),n=`${e.getMinutes()}`.padStart(2,"0");return`${t}:${n}`},isToday:function(e){return new Date().toDateString()===e.toDateString()},isTomorrow:function(e){const t=new Date;return t.setDate(t.getDate()+1),t.toDateString()===e.toDateString()},weekdayPrefix:function(e){const t=new Intl.RelativeTimeFormat(this.$i18n.locale,{numeric:"auto"});return this.isToday(e)?t.formatToParts(0,"day")[0].value:this.isTomorrow(e)?t.formatToParts(1,"day")[0].value:new Intl.DateTimeFormat(this.$i18n.locale,{weekday:"short"}).format(e)},fmtAbsoluteDate:function(e){const t=this.weekdayPrefix(e),n=new Intl.DateTimeFormat(this.$i18n.locale,{hour:"numeric",minute:"numeric"}).format(e);return`${t} ${n}`},fmtMoney:function(e=0,t="EUR"){return new Intl.NumberFormat(this.$i18n.locale,{style:"currency",currency:t}).format(e)},fmtPricePerKWh:function(e=0,t="EUR"){let n=t,r=e,s=3;return["EUR","USD"].includes(t)&&(r*=100,n="ct",s=1),`${new Intl.NumberFormat(this.$i18n.locale,{style:"decimal",maximumFractionDigits:s}).format(r)} ${n}/kWh`},fmtTimeAgo:function(e){const t={day:864e5,hour:36e5,minute:6e4,second:1e3},n=new Intl.RelativeTimeFormat(this.$i18n.locale,{numeric:"auto"});for(var r in t)if(Math.abs(e)>t[r]||r=="second")return n.format(Math.round(e/t[r]),r)}}};const pC={name:"Notifications",mixins:[hn],props:{notifications:Array},computed:{iconVisible:function(){return this.notifications.length>0},iconClass:function(){return this.notifications.find(e=>e.type==="error")?"text-danger":"text-warning"}},created:function(){this.interval=setInterval(()=>{this.$forceUpdate()},10*1e3)},unmounted:function(){clearTimeout(this.interval)},methods:{clear:function(){window.app&&window.app.clear()}}},gC={href:"#","data-bs-toggle":"modal","data-bs-target":"#notificationModal",class:"btn btn-sm btn-link text-decoration-none link-light text-nowrap"},_C={id:"notificationModal",class:"modal fade text-dark",tabindex:"-1",role:"dialog","aria-hidden":"true","data-bs-backdrop":"true"},vC={class:"modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable",role:"document"},bC={class:"modal-content"},yC={class:"modal-header"},EC={class:"modal-title"},wC=S("button",{type:"button",class:"btn-close","data-bs-dismiss":"modal","aria-label":"Close"},null,-1),TC={class:"modal-body"},SC=["title"],CC={class:"d-flex align-items-baseline"},AC={class:"flex-grow-1 px-2 py-1 text-break"},kC={key:0,class:"badge rounded-pill bg-secondary"},OC={class:"modal-footer"};function LC(e,t,n,r,s,i){return V(),q("div",null,[Xi(S("button",gC,[S("shopicon-regular-exclamationtriangle",{class:Pe(i.iconClass)},null,2)],512),[[dc,i.iconVisible]]),S("div",_C,[S("div",vC,[S("div",bC,[S("div",yC,[S("h5",EC,K(e.$t("notifications.modalTitle")),1),wC]),S("div",TC,[(V(!0),q(xe,null,Zt(n.notifications,(o,a)=>(V(),q("div",{key:a},[S("small",{class:"d-flex justify-content-end mt-3",title:e.fmtAbsoluteDate(o.time)},K(e.fmtTimeAgo(o.time-new Date)),9,SC),S("p",CC,[S("shopicon-regular-exclamationtriangle",{class:Pe([{"text-danger":o.type==="error","text-warning":o.type==="warn"},"flex-grow-0 d-block"])},null,2),S("span",AC,K(o.message),1),o.count>1?(V(),q("span",kC,K(o.count),1)):Ne("",!0)])]))),128))]),S("div",OC,[S("button",{type:"button","data-bs-dismiss":"modal","aria-label":"Close",class:"btn btn-outline-secondary",onClick:t[0]||(t[0]=(...o)=>i.clear&&i.clear(...o))},K(e.$t("notifications.dismissAll")),1)])])])])])}var NC=Ie(pC,[["render",LC]]),$C='';class xC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=$C}}window.customElements.define("shopicon-filled-square",xC);var PC='';class IC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=PC}}window.customElements.define("shopicon-regular-arrowdown",IC);var RC='';class MC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=RC}}window.customElements.define("shopicon-regular-batteryfull",MC);var DC='';class FC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=DC}}window.customElements.define("shopicon-regular-batterythreequarters",FC);var HC='';class BC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=HC}}window.customElements.define("shopicon-regular-batteryhalf",BC);var jC='';class VC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=jC}}window.customElements.define("shopicon-regular-batteryquarter",VC);var UC='';class WC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=UC}}window.customElements.define("shopicon-regular-batteryempty",WC);const zC={name:"BatteryIcon",props:{soc:{type:Number,default:0}},computed:{icon:function(){return this.soc>80?"batteryfull":this.soc>60?"batterythreequarters":this.soc>40?"batteryhalf":this.soc>20?"batteryquarter":"batteryempty"}}};function KC(e,t,n,r,s,i){return V(),Je(sc(`shopicon-regular-${i.icon}`))}var Ap=Ie(zC,[["render",KC]]);const YC={name:"LabelBar",props:{value:{type:Number,default:0},hideIcon:{type:Boolean},top:{type:Boolean},bottom:{type:Boolean},first:{type:Boolean},last:{type:Boolean}}},qC={class:"label-bar-scale"},GC={class:"label-bar-icon"};function XC(e,t,n,r,s,i){return V(),q("div",{class:Pe(["label-bar",{"label-bar--hide-icon":n.hideIcon,"label-bar--hidden":!n.value,"label-bar--top":n.top,"label-bar--bottom":n.bottom,"label-bar--first":n.first,"label-bar--last":n.last}])},[S("div",qC,[S("div",GC,[ac(e.$slots,"default",{},void 0,!0)])])],2)}var JC=Ie(YC,[["render",XC],["__scopeId","data-v-ec52d0bc"]]),QC='';class ZC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=QC}}window.customElements.define("shopicon-regular-car3",ZC);var eA='';class tA extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=eA}}window.customElements.define("shopicon-regular-sun",tA);var nA='';class rA extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=nA}}window.customElements.define("shopicon-regular-home",rA);const sA={name:"Visualization",components:{BatteryIcon:Ap,LabelBar:JC},mixins:[hn],props:{gridImport:{type:Number,default:0},selfConsumption:{type:Number,default:0},pvExport:{type:Number,default:0},loadpoints:{type:Number,default:0},batteryCharge:{type:Number,default:0},batteryDischarge:{type:Number,default:0},pvProduction:{type:Number,default:0},homePower:{type:Number,default:0},batterySoC:{type:Number,default:0},valuesInKw:{type:Boolean,default:!1}},data:function(){return{width:0,visualizationReady:!1}},computed:{gridExport:function(){return this.applyThreshold(this.pvExport)},totalRaw:function(){return this.gridImport+this.selfConsumption+this.pvExport},gridImportAdjusted:function(){return this.applyThreshold(this.gridImport)},selfConsumptionAdjusted:function(){return this.applyThreshold(this.selfConsumption)},pvExportAdjusted:function(){return this.applyThreshold(this.pvExport)},totalAdjusted:function(){return this.gridImportAdjusted+this.selfConsumptionAdjusted+this.pvExportAdjusted}},watch:{totalAdjusted:function(){!this.visualizationReady&&this.totalAdjusted>0&&setTimeout(()=>{this.visualizationReady=!0},500)}},mounted:function(){this.$nextTick(function(){window.addEventListener("resize",this.updateElementWidth),this.updateElementWidth()})},beforeUnmount(){window.removeEventListener("resize",this.updateElementWidth)},methods:{widthTotal:function(e){return this.totalAdjusted===0?"0%":100/this.totalAdjusted*e+"%"},kw:function(e){return this.fmtKw(e,this.valuesInKw,!0)},kwNoUnit:function(e){return this.fmtKw(e,this.valuesInKw,!1)},powerLabelAvailableSpace(e){if(this.totalAdjusted===0)return 0;const t=100/this.totalAdjusted*e;return this.width/100*t},powerLabelEnoughSpace(e){return this.powerLabelAvailableSpace(e)>60},powerLabelSomeSpace(e){return this.powerLabelAvailableSpace(e)>35},hideLabelIcon(e,t=32){if(this.totalAdjusted===0)return!0;const n=100/this.totalAdjusted*e;return this.width/100*n(Ft("data-v-6d3ba8b7"),e=e(),Ht(),e),iA={class:"label-scale d-flex"},oA={class:"d-flex justify-content-start flex-grow-1"},aA=br(()=>S("shopicon-regular-sun",null,null,-1)),lA=br(()=>S("shopicon-regular-powersupply",null,null,-1)),cA=br(()=>S("div",{class:"label-scale-name"},"In",-1)),uA={ref:"site_progress",class:"site-progress"},fA={key:0,class:"power"},dA={key:1,class:"power"},hA={key:0,class:"power"},mA={key:1,class:"power"},pA={key:0,class:"power"},gA={key:1,class:"power"},_A={key:0,class:"site-progress-bar bg-light border no-wrap w-100"},vA={class:"label-scale d-flex"},bA={class:"d-flex justify-content-start flex-grow-1"},yA=br(()=>S("shopicon-regular-home",null,null,-1)),EA=br(()=>S("shopicon-regular-car3",null,null,-1)),wA=br(()=>S("shopicon-regular-powersupply",null,null,-1)),TA=br(()=>S("div",{class:"label-scale-name"},"Out",-1));function SA(e,t,n,r,s,i){const o=Ce("LabelBar"),a=Ce("BatteryIcon");return V(),q("div",{class:Pe(["visualization",{"visualization--ready":e.visualizationReady}])},[S("div",iA,[S("div",oA,[se(o,dt(rt(i.labelBarProps("top","pvProduction"))),{default:wt(()=>[aA]),_:1},16),se(o,dt(rt(i.labelBarProps("top","batteryDischarge"))),{default:wt(()=>[se(a,{soc:n.batterySoC},null,8,["soc"])]),_:1},16),se(o,dt(rt(i.labelBarProps("top","gridImport"))),{default:wt(()=>[lA]),_:1},16)]),cA]),S("div",uA,[S("div",{class:"site-progress-bar self-consumption",style:Ke({width:i.widthTotal(i.selfConsumptionAdjusted)})},[i.powerLabelEnoughSpace(n.selfConsumption)?(V(),q("span",fA,K(i.kw(n.selfConsumption)),1)):i.powerLabelSomeSpace(n.selfConsumption)?(V(),q("span",dA,K(i.kwNoUnit(n.selfConsumption)),1)):Ne("",!0)],4),S("div",{class:"site-progress-bar grid-import",style:Ke({width:i.widthTotal(i.gridImportAdjusted)})},[i.powerLabelEnoughSpace(n.gridImport)?(V(),q("span",hA,K(i.kw(n.gridImport)),1)):i.powerLabelSomeSpace(n.gridImport)?(V(),q("span",mA,K(i.kwNoUnit(n.gridImport)),1)):Ne("",!0)],4),S("div",{class:"site-progress-bar pv-export",style:Ke({width:i.widthTotal(i.pvExportAdjusted)})},[i.powerLabelEnoughSpace(n.pvExport)?(V(),q("span",pA,K(i.kw(n.pvExport)),1)):i.powerLabelSomeSpace(n.pvExport)?(V(),q("span",gA,K(i.kwNoUnit(n.pvExport)),1)):Ne("",!0)],4),i.totalAdjusted<=0?(V(),q("div",_A,[S("span",null,K(e.$t("main.energyflow.noEnergy")),1)])):Ne("",!0)],512),S("div",vA,[S("div",bA,[se(o,dt(rt(i.labelBarProps("bottom","homePower"))),{default:wt(()=>[yA]),_:1},16),se(o,dt(rt(i.labelBarProps("bottom","loadpoints"))),{default:wt(()=>[EA]),_:1},16),se(o,dt(rt(i.labelBarProps("bottom","batteryCharge"))),{default:wt(()=>[se(a,{soc:n.batterySoC},null,8,["soc"])]),_:1},16),se(o,dt(rt(i.labelBarProps("bottom","gridExport"))),{default:wt(()=>[wA]),_:1},16)]),TA])],2)}var CA=Ie(sA,[["render",SA],["__scopeId","data-v-6d3ba8b7"]]),AA='';class kA extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=AA}}window.customElements.define("shopicon-regular-powersupply",kA);const OA={name:"EnergyflowEntry",components:{BatteryIcon:Ap},mixins:[hn],props:{name:{type:String},icon:{type:String},power:{type:Number},soc:{type:Number},valuesInKw:{type:Boolean}},computed:{active:function(){return this.power>10},isBattery:function(){return this.icon==="battery"},hasSoC:function(){return this.isBattery&&!isNaN(this.soc)}},methods:{kw:function(e){return this.fmtKw(e,this.valuesInKw)}}},LA={class:"d-flex flex-nowrap"},NA={class:"text-nowrap flex-grow-1 ms-3"},$A={class:"text-end text-nowrap ps-1 fw-bold"},xA={key:0};function PA(e,t,n,r,s,i){const o=Ce("BatteryIcon");return V(),q("div",{class:Pe(["d-flex justify-content-between mb-2 entry",{"text-gray-medium":!i.active}])},[S("span",LA,[i.isBattery?(V(),Je(o,{key:0,soc:n.soc},null,8,["soc"])):(V(),Je(sc(`shopicon-regular-${n.icon}`),{key:1}))]),S("span",NA,K(n.name),1),S("span",$A,[i.hasSoC?(V(),q("span",xA,K(n.soc)+"% / ",1)):Ne("",!0),De(K(i.kw(n.power)),1)])],2)}var IA=Ie(OA,[["render",PA],["__scopeId","data-v-d9ddb656"]]);const RA={name:"Energyflow",components:{Visualization:CA,EnergyflowEntry:IA},mixins:[hn],props:{gridConfigured:Boolean,gridPower:{type:Number,default:0},homePower:{type:Number,default:0},pvConfigured:Boolean,pvPower:{type:Number,default:0},loadpointsPower:{type:Number,default:0},activeLoadpointsCount:{type:Number,default:0},batteryConfigured:Boolean,batteryPower:{type:Number,default:0},batterySoC:{type:Number,default:0}},data:()=>({detailsOpen:!1,detailsCompleteHeight:null}),computed:{gridImport:function(){return Math.max(0,this.gridPower)},pvProduction:function(){return this.pvConfigured?Math.abs(this.pvPower):this.pvExport},batteryPowerAdjusted:function(){return Math.abs(this.batteryPower)<50?0:this.batteryPower},batteryDischarge:function(){return Math.abs(Math.max(0,this.batteryPowerAdjusted))},batteryCharge:function(){return Math.abs(Math.min(0,this.batteryPowerAdjusted)*-1)},selfConsumption:function(){const e=this.batteryDischarge+this.pvProduction,t=this.homePower+this.batteryCharge+this.loadpointsPower;return Math.min(e,t)},pvExport:function(){return Math.max(0,this.gridPower*-1)},valuesInKw:function(){return this.gridImport+this.selfConsumption+this.pvExport>1e3},inPower:function(){return this.gridImport+this.pvProduction+this.batteryDischarge},outPower:function(){return this.homePower+this.loadpointsPower+this.pvExport+this.batteryCharge},detailsHeight:function(){return this.detailsOpen?this.detailsCompleteHeight+"px":0}},mounted(){window.addEventListener("resize",this.updateHeight)},unmounted(){window.removeEventListener("resize",this.updateHeight)},methods:{kw:function(e){return this.fmtKw(e,this.valuesInKw)},toggleDetails:function(){this.updateHeight(),this.detailsOpen=!this.detailsOpen},updateHeight:function(){this.detailsCompleteHeight=this.$refs.detailsInner.offsetHeight}}},hs=e=>(Ft("data-v-8704b160"),e=e(),Ht(),e),MA={class:"row"},DA=hs(()=>S("div",{class:"indicator position-absolute bottom-0 start-50"},[S("shopicon-regular-arrowdown")],-1)),FA={ref:"detailsInner",class:"details-inner row"},HA={class:"col-12 d-flex justify-content-between pt-2 mb-4"},BA={class:"d-flex flex-nowrap align-items-center"},jA=hs(()=>S("span",{class:"color-self me-2"},[S("shopicon-filled-square")],-1)),VA={key:0,class:"d-flex flex-nowrap align-items-center"},UA=hs(()=>S("span",{class:"color-grid ms-2"},[S("shopicon-filled-square")],-1)),WA={key:1,class:"d-flex flex-nowrap align-items-center"},zA=hs(()=>S("span",{class:"color-export ms-2"},[S("shopicon-filled-square")],-1)),KA={class:"col-12 col-md-6 pe-md-5 pb-4 d-flex flex-column justify-content-between"},YA={class:"d-flex justify-content-between align-items-end mb-4"},qA=hs(()=>S("h3",{class:"m-0"},"In",-1)),GA={class:"fw-bold text-gray-medium"},XA={class:"col-12 col-md-6 ps-md-5 pb-4 d-flex flex-column justify-content-between"},JA={class:"d-flex justify-content-between align-items-end mb-4"},QA=hs(()=>S("h3",{class:"m-0"},"Out",-1)),ZA={class:"fw-bold text-gray-medium"};function e2(e,t,n,r,s,i){const o=Ce("Visualization"),a=Ce("EnergyflowEntry");return V(),q("div",{class:Pe(["energyflow cursor-pointer position-relative",{"energyflow--open":e.detailsOpen}]),onClick:t[0]||(t[0]=(...l)=>i.toggleDetails&&i.toggleDetails(...l))},[S("div",MA,[se(o,{class:"col-12 mb-3 mb-md-4",gridImport:i.gridImport,selfConsumption:i.selfConsumption,loadpoints:n.loadpointsPower,pvExport:i.pvExport,batteryCharge:i.batteryCharge,batteryDischarge:i.batteryDischarge,pvProduction:i.pvProduction,homePower:n.homePower,batterySoC:n.batterySoC,valuesInKw:i.valuesInKw},null,8,["gridImport","selfConsumption","loadpoints","pvExport","batteryCharge","batteryDischarge","pvProduction","homePower","batterySoC","valuesInKw"])]),DA,S("div",{class:"details",style:Ke({height:i.detailsHeight})},[S("div",FA,[S("div",HA,[S("div",BA,[jA,S("span",null,K(e.$t("main.energyflow.selfConsumption")),1)]),i.gridImport>0?(V(),q("div",VA,[S("span",null,K(e.$t("main.energyflow.gridImport")),1),UA])):(V(),q("div",WA,[S("span",null,K(e.$t("main.energyflow.pvExport")),1),zA]))]),S("div",KA,[S("div",YA,[qA,S("span",GA,K(i.kw(i.inPower)),1)]),S("div",null,[se(a,{name:e.$t("main.energyflow.pvProduction"),icon:"sun",power:i.pvProduction,valuesInKw:i.valuesInKw},null,8,["name","power","valuesInKw"]),n.batteryConfigured?(V(),Je(a,{key:0,name:e.$t("main.energyflow.batteryDischarge"),icon:"battery",soc:n.batterySoC,power:i.batteryDischarge,valuesInKw:i.valuesInKw},null,8,["name","soc","power","valuesInKw"])):Ne("",!0),se(a,{name:e.$t("main.energyflow.gridImport"),icon:"powersupply",power:i.gridImport,valuesInKw:i.valuesInKw},null,8,["name","power","valuesInKw"])])]),S("div",XA,[S("div",JA,[QA,S("span",ZA,K(i.kw(i.outPower)),1)]),S("div",null,[se(a,{name:e.$t("main.energyflow.homePower"),icon:"home",power:n.homePower,valuesInKw:i.valuesInKw},null,8,["name","power","valuesInKw"]),se(a,{name:e.$tc("main.energyflow.loadpoints",n.activeLoadpointsCount,{count:n.activeLoadpointsCount}),icon:"car3",power:n.loadpointsPower,valuesInKw:i.valuesInKw},null,8,["name","power","valuesInKw"]),n.batteryConfigured?(V(),Je(a,{key:0,name:e.$t("main.energyflow.batteryCharge"),icon:"battery",soc:n.batterySoC,power:i.batteryCharge,valuesInKw:i.valuesInKw},null,8,["name","soc","power","valuesInKw"])):Ne("",!0),se(a,{name:e.$t("main.energyflow.pvExport"),icon:"powersupply",power:i.pvExport,valuesInKw:i.valuesInKw},null,8,["name","power","valuesInKw"])])])],512)],4)],2)}var Xf=Ie(RA,[["render",e2],["__scopeId","data-v-8704b160"]]),t2='';class n2 extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=t2}}window.customElements.define("shopicon-filled-circle",n2);var r2='';class s2 extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=r2}}window.customElements.define("shopicon-regular-lightning",s2);var i2='';class o2 extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=i2}}window.customElements.define("shopicon-filled-options",o2);const a2={name:"Mode",props:{mode:String},emits:["updated"],data(){return{modes:["off","now","minpv","pv"]}},methods:{isActive:function(e){return this.mode===this.mapToOldModes(e)},setTargetMode:function(e){this.$emit("updated",this.mapToOldModes(e))},mapToOldModes:function(e){return{fast:"now",cheap:"pv"}[e]||e}}},l2={key:0,class:"mode-group border d-inline-flex",role:"group"},c2=["onClick"],u2={key:1,class:"mode-group border d-inline-flex",role:"group"},f2=["onClick"],d2={class:"d-inline d-sm-none"},h2={class:"d-none d-sm-inline"};function m2(e,t,n,r,s,i){return e.$hiddenFeatures?(V(),q("div",l2,[(V(),q(xe,null,Zt(["fast","cheap"],o=>S("button",{key:o,type:"button",class:Pe(["btn",{active:i.isActive(o)}]),onClick:a=>i.setTargetMode(o)},K(e.$t(`main.mode.${o}`)),11,c2)),64))])):(V(),q("div",u2,[(V(!0),q(xe,null,Zt(s.modes,o=>(V(),q("button",{key:o,type:"button",class:Pe(["btn",{active:i.isActive(o)}]),onClick:a=>i.setTargetMode(o)},[S("span",d2,K(e.$t(`main.mode.${o}Short`)),1),S("span",h2,K(e.$t(`main.mode.${o}Long`)),1)],10,f2))),128))]))}var p2=Ie(a2,[["render",m2],["__scopeId","data-v-b76c4bcc"]]),yr={methods:{collectProps:function(e){let t={};for(var n in e.props)n in this&&(t[n]=this[n]);return t}}};const g2={name:"LabelAndValue",props:{label:String,value:String,extraValue:String,onDark:Boolean}},_2={class:"mb-2 label"},v2={class:"value m-0"},b2={key:0,class:"extraValue d-block d-sm-inline text-nowrap"};function y2(e,t,n,r,s,i){return V(),q("div",{class:Pe(["root",{"root--dark":n.onDark}])},[S("div",_2,K(n.label),1),ac(e.$slots,"default",{},()=>[S("h3",v2,[De(K(n.value)+" ",1),n.extraValue?(V(),q("span",b2,K(n.extraValue),1)):Ne("",!0)])],!0)],2)}var Tc=Ie(g2,[["render",y2],["__scopeId","data-v-61a0ab7e"]]),E2='';class w2 extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=E2}}window.customElements.define("shopicon-regular-cablecharge",w2);const T2={name:"VehicleTitle",mixins:[yr],props:{vehiclePresent:Boolean,vehicleTitle:String,parked:Boolean},computed:{name(){return this.vehiclePresent||this.parked?this.vehicleTitle||this.$t("main.vehicle.fallbackName"):this.$t("main.vehicle.noVehicle")}}},S2={class:"d-flex justify-content-between mb-3 align-items-center"},C2={class:"d-flex align-items-center m-0 flex-grow-1 overflow-hidden"},A2={key:0,class:"me-2 flex-shrink-0 car-icon"},k2={key:1,class:"me-2 flex-shrink-0 car-icon"},O2={class:"flex-grow-1 text-truncate"},L2={key:0,class:"btn btn-link text-white p-0 flex-shrink-0"},N2=S("shopicon-filled-options",{size:"s"},null,-1),$2=[N2];function x2(e,t,n,r,s,i){return V(),q("div",S2,[S("h4",C2,[n.vehiclePresent||n.parked?(V(),q("shopicon-regular-car3",A2)):(V(),q("shopicon-regular-cablecharge",k2)),S("span",O2,K(i.name),1)]),e.$hiddenFeatures?(V(),q("button",L2,$2)):Ne("",!0)])}var Jf=Ie(T2,[["render",x2]]);const P2={name:"VehicleSoc",props:{connected:Boolean,vehiclePresent:Boolean,vehicleSoC:Number,enabled:Boolean,charging:Boolean,minSoC:Number,targetSoC:Number,parked:Boolean},emits:["target-soc-drag","target-soc-updated"],data:function(){return{selectedTargetSoC:null,interactionStartScreenY:null}},computed:{vehicleSoCDisplayWidth:function(){return this.vehiclePresent&&this.vehicleSoC>=0?this.vehicleSoC:100},progressColor:function(){return this.minSoCActive?"bg-danger":"bg-primary"},minSoCActive:function(){return this.minSoC>0&&this.vehicleSoCthis.vehicleSoC?this.visibleTargetSoC-this.vehicleSoC:null},visibleTargetSoC:function(){return Number(this.selectedTargetSoC||this.targetSoC)}},watch:{targetSoC:function(){this.selectedTargetSoC=this.targetSoC}},methods:{changeTargetSoCStart:function(e){const t=e.screenY||e.changedTouches[0].screenY;this.interactionStartScreenY=t},changeTargetSoCEnd:function(e){const t=e.screenY||e.changedTouches[0].screenY;if(Math.abs(t-this.interactionStartScreenY)>80)return e.preventDefault(),e.target.value=this.targetSoC,this.selectedTargetSoC=this.targetSoC,!1;e.target.value!==this.targetSoC&&this.$emit("target-soc-updated",e.target.value)},movedTargetSoC:function(e){return e.target.value<20?(e.target.value=20,this.selectedTargetSoC=e.target.value,e.preventDefault(),!1):(this.selectedTargetSoC=e.target.value,this.$emit("target-soc-drag",this.selectedTargetSoC),!0)}}},I2={class:"vehicle-soc"},R2={class:"progress"},M2={class:"target"},D2=["value"];function F2(e,t,n,r,s,i){return V(),q("div",I2,[S("div",R2,[n.connected||n.parked?(V(),q("div",{key:0,class:Pe(["progress-bar",{[i.progressColor]:!0,"progress-bar-striped":n.charging,"progress-bar-animated":n.charging}]),role:"progressbar",style:Ke({width:`${i.vehicleSoCDisplayWidth}%`})},null,6)):Ne("",!0),i.remainingSoCWidth>0&&n.enabled&&n.connected?(V(),q("div",{key:1,class:Pe(["progress-bar bg-muted",i.progressColor]),role:"progressbar",style:Ke({width:`${i.remainingSoCWidth}%`,transition:"none"})},null,6)):Ne("",!0)]),S("div",M2,[S("div",{class:"target-label d-flex align-items-center justify-content-center",style:Ke({left:`${i.visibleTargetSoC}%`})},null,4),n.vehiclePresent&&(n.connected||n.parked)?(V(),q("input",{key:0,type:"range",min:"0",max:"100",step:"5",value:i.visibleTargetSoC,class:"target-slider",onInput:t[0]||(t[0]=(...o)=>i.movedTargetSoC&&i.movedTargetSoC(...o)),onMousedown:t[1]||(t[1]=(...o)=>i.changeTargetSoCStart&&i.changeTargetSoCStart(...o)),onTouchstart:t[2]||(t[2]=(...o)=>i.changeTargetSoCStart&&i.changeTargetSoCStart(...o)),onMouseup:t[3]||(t[3]=(...o)=>i.changeTargetSoCEnd&&i.changeTargetSoCEnd(...o)),onTouchend:t[4]||(t[4]=(...o)=>i.changeTargetSoCEnd&&i.changeTargetSoCEnd(...o))},null,40,D2)):Ne("",!0)])])}var Qf=Ie(P2,[["render",F2],["__scopeId","data-v-cbe29806"]]);const H2={name:"VehicleStatus",mixins:[yr,hn],props:{vehicleSoC:Number,minSoC:Number,enabled:Boolean,connected:Boolean,charging:Boolean,targetTime:String,targetTimeProjectedStart:String,phaseAction:String,phaseRemainingInterpolated:Number,pvAction:String,pvRemainingInterpolated:Number},computed:{phaseTimerActive(){return this.charging&&this.phaseRemainingInterpolated>0&&["scale1p","scale3p"].includes(this.phaseAction)},pvTimerActive(){return this.pvRemainingInterpolated>0&&["enable","disable"].includes(this.pvAction)},message:function(){const e=(t,n)=>this.$t(`main.vehicleStatus.${t}`,n);if(!this.connected)return e("disconnected");if(this.minSoC>0&&this.vehicleSoC';class U2 extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=V2}}window.customElements.define("shopicon-filled-plus",U2);var W2='';class z2 extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=W2}}window.customElements.define("shopicon-filled-edit",z2);const K2="7:00",ed="last_target_time",Y2={name:"TargetCharge",components:{LabelAndValue:Tc},mixins:[hn],props:{id:[String,Number],targetTime:String,targetTimeActive:Boolean,targetSoC:Number,disabled:Boolean},emits:["target-time-updated","target-time-removed"],data:function(){return{selectedDay:null,selectedTime:null}},computed:{targetChargeEnabled:function(){return this.targetTime},buttonIsEnabled:function(){return this.targetChargeEnabled&&!this.disabled},selectedTargetTimeValid:function(){return new Datenew Date;this.targetChargeEnabled&&t&&(e=new Date(this.targetTime)),this.selectedDay=this.fmtDayString(e),this.selectedTime=this.fmtTimeString(e)},dayOptions:function(){const e=[],t=new Date,n=[this.$t("main.targetCharge.today"),this.$t("main.targetCharge.tomorrow")];for(let r=0;r<7;r++){const s=t.toLocaleDateString("default",{month:"short",day:"numeric"}),i=n[r]||t.toLocaleDateString("default",{weekday:"long"});e.push({value:t.toISOString().split("T")[0],name:`${s} (${i})`}),t.setDate(t.getDate()+1)}return e},minTime:function(){return new Date().toISOString().split("T")[1].slice(0,-8)},setTargetTime:function(){try{const e=this.selectedTargetTime.getHours(),t=this.selectedTargetTime.getMinutes();window.localStorage[ed]=`${e}:${t}`}catch(e){console.warn(e)}this.$emit("target-time-updated",this.selectedTargetTime)},removeTargetTime:function(){this.$emit("target-time-removed")}}},kp=e=>(Ft("data-v-26c7faef"),e=e(),Ht(),e),q2=["data-bs-target"],G2={key:0},X2={key:1},J2=["id"],Q2={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},Z2={class:"modal-content"},ek={class:"modal-header"},tk={class:"modal-title"},nk=kp(()=>S("button",{type:"button",class:"btn-close","data-bs-dismiss":"modal","aria-label":"Close"},null,-1)),rk={class:"modal-body"},sk={class:"form-group"},ik={for:"targetTimeLabel",class:"mb-3"},ok={class:"d-flex justify-content-between",style:{"max-width":"350px"}},ak=["value"],lk={key:0,class:"text-danger mb-0"},ck={class:"small mt-3 text-muted mb-0"},uk={class:"text-evcc"},fk=kp(()=>S("a",{href:"https://github.com/evcc-io/evcc/discussions/1433",target:"_blank"},"GitHub Discussions",-1)),dk=De(". "),hk={class:"modal-footer d-flex justify-content-between"},mk=["disabled"];function pk(e,t,n,r,s,i){const o=Ce("LabelAndValue");return V(),q("div",null,[se(o,{class:"flex-grow-1",label:e.$t("main.targetCharge.title"),"on-dark":""},{default:wt(()=>[S("button",{class:Pe(["btn btn-link p-0 value text-end",i.buttonIsEnabled?"text-white":"text-gray-light"]),"data-bs-toggle":"modal","data-bs-target":`#${i.modalId}`},[i.targetChargeEnabled?(V(),q("strong",G2,K(i.targetTimeLabel()),1)):(V(),q("span",X2,K(e.$t("main.targetCharge.setTargetTime")),1))],10,q2)]),_:1},8,["label"]),(V(),Je(Ro,{to:"body"},[S("div",{id:i.modalId,class:"modal fade text-dark","data-bs-backdrop":"true",tabindex:"-1",role:"dialog","aria-hidden":"true"},[S("div",Q2,[S("div",Z2,[S("div",ek,[S("h5",tk,K(e.$t("main.targetCharge.modalTitle")),1),nk]),S("form",{onSubmit:t[3]||(t[3]=Dm((...a)=>i.setTargetTime&&i.setTargetTime(...a),["prevent"]))},[S("div",rk,[S("div",sk,[S("label",ik,K(e.$t("main.targetCharge.description",{targetSoC:n.targetSoC})),1),S("div",ok,[Xi(S("select",{"onUpdate:modelValue":t[0]||(t[0]=a=>e.selectedDay=a),class:"form-select me-2",style:{"flex-basis":"60%"}},[(V(!0),q(xe,null,Zt(i.dayOptions(),a=>(V(),q("option",{key:a.value,value:a.value},K(a.name),9,ak))),128))],512),[[fc,e.selectedDay]]),Xi(S("input",{"onUpdate:modelValue":t[1]||(t[1]=a=>e.selectedTime=a),type:"time",class:"form-control ms-2",style:{"flex-basis":"40%"},step:60*5,required:""},null,512),[[Zs,e.selectedTime]])])]),i.selectedTargetTimeValid?Ne("",!0):(V(),q("p",lk,K(e.$t("main.targetCharge.targetIsInThePast")),1)),S("p",ck,[S("strong",uk,K(e.$t("main.targetCharge.experimentalLabel"))+": ",1),De(" "+K(e.$t("main.targetCharge.experimentalText"))+" ",1),fk,dk])]),S("div",hk,[S("button",{type:"button",class:"btn btn-outline-secondary","data-bs-dismiss":"modal",onClick:t[2]||(t[2]=(...a)=>i.removeTargetTime&&i.removeTargetTime(...a))},K(e.$t("main.targetCharge.remove")),1),S("button",{type:"submit",class:"btn btn-primary","data-bs-dismiss":"modal",disabled:!i.selectedTargetTimeValid},K(e.$t("main.targetCharge.activate")),9,mk)])],32)])])],8,J2)]))])}var td=Ie(Y2,[["render",pk],["__scopeId","data-v-26c7faef"]]);const gk={name:"Vehicle",components:{VehicleTitle:Jf,VehicleSoc:Qf,VehicleStatus:Zf,LabelAndValue:Tc,TargetCharge:td},mixins:[yr],props:{id:[String,Number],connected:Boolean,vehiclePresent:Boolean,vehicleSoC:Number,enabled:Boolean,charging:Boolean,minSoC:Number,vehicleRange:Number,vehicleTitle:String,targetTimeActive:Boolean,targetTime:String,targetTimeProjectedStart:String,targetSoC:Number,mode:String,phaseAction:String,phaseRemainingInterpolated:Number,pvAction:String,pvRemainingInterpolated:Number,parked:Boolean},emits:["target-time-removed","target-time-updated","target-soc-updated"],data(){return{displayTargetSoC:this.targetSoC}},computed:{vehicleSocProps:function(){return this.collectProps(Qf)},vehicleStatus:function(){return this.collectProps(Zf)},vehicleTitleProps:function(){return this.collectProps(Jf)},targetCharge:function(){return this.collectProps(td)},estimatedTargetRange:function(){return this.vehicleSoC>10&&this.vehicleRange&&this.displayTargetSoC?Math.round(this.displayTargetSoC*(this.vehicleRange/this.vehicleSoC))+" km":null},targetChargeDisabled:function(){return!this.connected||!["pv","minpv"].includes(this.mode)}},watch:{targetSoC:function(){this.displayTargetSoC=this.targetSoC}},methods:{targetSocDrag:function(e){this.displayTargetSoC=e},targetSocUpdated:function(e){this.displayTargetSoC=e,this.$emit("target-soc-updated",e)},setTargetTime:function(e){this.$emit("target-time-updated",e)},removeTargetTime:function(){this.$emit("target-time-removed")}}},_k=e=>(Ft("data-v-ec875aa2"),e=e(),Ht(),e),vk={class:"vehicle p-4 pb-3"},bk={key:1},yk={class:"details d-flex flex-wrap justify-content-between"},Ek={key:0,class:"d-flex justify-content-start"},wk=_k(()=>S("small",null,"vor 5 Stunden",-1)),Tk=[wk];function Sk(e,t,n,r,s,i){const o=Ce("VehicleTitle"),a=Ce("VehicleStatus"),l=Ce("VehicleSoc"),c=Ce("LabelAndValue"),u=Ce("TargetCharge");return V(),q("div",vk,[se(o,dt(rt(i.vehicleTitleProps)),null,16),n.parked?Ne("",!0):(V(),Je(a,Rt({key:0},i.vehicleStatus,{class:"mb-2"}),null,16)),se(l,Rt(i.vehicleSocProps,{class:"mt-2 mb-4",onTargetSocUpdated:i.targetSocUpdated,onTargetSocDrag:i.targetSocDrag}),null,16,["onTargetSocUpdated","onTargetSocDrag"]),n.vehiclePresent?(V(),q("div",bk,[S("div",yk,[se(c,{class:"flex-grow-1 text-start",label:e.$t("main.vehicle.vehicleSoC"),value:`${n.vehicleSoC||"--"} %`,extraValue:n.vehicleRange?`${n.vehicleRange} km`:null,"on-dark":""},null,8,["label","value","extraValue"]),se(c,{class:"flex-grow-1 text-center",label:e.$t("main.vehicle.targetSoC"),value:`${s.displayTargetSoC} %`,extraValue:i.estimatedTargetRange,"on-dark":""},null,8,["label","value","extraValue"]),se(u,Rt({class:"flex-grow-1 text-end target-charge"},i.targetCharge,{disabled:i.targetChargeDisabled,onTargetTimeUpdated:i.setTargetTime,onTargetTimeRemoved:i.removeTargetTime}),null,16,["disabled","onTargetTimeUpdated","onTargetTimeRemoved"])]),e.$hiddenFeatures?(V(),q("div",Ek,Tk)):Ne("",!0)])):Ne("",!0)])}var sl=Ie(gk,[["render",Sk],["__scopeId","data-v-ec875aa2"]]);const Ck={name:"Phases",props:{chargeCurrent:{type:Number},chargeCurrents:{type:Object},activePhases:{type:Number},minCurrent:{type:Number},maxCurrent:{type:Number},phaseAction:{type:String},phaseRemaining:{type:Number}},computed:{phaseTimerVisible(){return this.phaseTimerActive&&!this.pvTimerActive?!0:this.phaseTimerActive&&this.pvTimerActive?this.phaseRemainingInterpolatedthis.activePhases},targetWidth(){let e=Math.min(Math.max(this.minCurrent,this.chargeCurrent),this.maxCurrent);return 100/this.maxCurrent*e},realWidth(e){if(this.chargeCurrents){const t=this.chargeCurrents[e-1]||0;return 100/this.maxCurrent*t}return this.targetWidth()}}},Ak={class:"phases d-flex justify-content-between"};function kk(e,t,n,r,s,i){return V(),q("div",Ak,[(V(),q(xe,null,Zt([1,2,3],o=>S("div",{key:o,class:Pe(["phase me-1",{inactive:i.inactive(o)}])},[S("div",{class:"target",style:Ke({width:`${i.targetWidth()}%`})},null,4),S("div",{class:"real",style:Ke({width:`${i.realWidth(o)}%`})},null,4)],2)),64))])}var nd=Ie(Ck,[["render",kk],["__scopeId","data-v-2b56244b"]]);const Ok={name:"Loadpoint",components:{Mode:p2,Vehicle:sl,Phases:nd,LabelAndValue:Tc},mixins:[hn,yr],props:{id:Number,single:Boolean,title:String,mode:String,targetSoC:Number,remoteDisabled:Boolean,remoteDisabledSource:String,chargeDuration:Number,charging:Boolean,connected:Boolean,enabled:Boolean,vehicleTitle:String,vehicleSoC:Number,vehiclePresent:Boolean,vehicleRange:Number,minSoC:Number,targetTime:String,targetTimeActive:Boolean,targetTimeProjectedStart:String,vehicleProviderLoggedIn:Boolean,vehicleProviderLoginPath:String,vehicleProviderLogoutPath:String,chargePower:Number,chargedEnergy:Number,climater:String,chargeRemainingDuration:Number,phases:Number,minCurrent:Number,maxCurrent:Number,activePhases:Number,chargeCurrent:Number,vehicleCapacity:Number,connectedDuration:Number,chargeCurrents:Array,chargeConfigured:Boolean,chargeRemainingEnergy:Number,phaseAction:String,phaseRemaining:Number,pvRemaining:Number,pvAction:String},data(){return{tickerHandler:null,phaseRemainingInterpolated:this.phaseRemaining,pvRemainingInterpolated:this.pvRemaining,chargeDurationInterpolated:this.chargeDuration,chargeRemainingDurationInterpolated:this.chargeRemainingDuration}},computed:{phasesProps:function(){return this.collectProps(nd)},vehicle:function(){return this.collectProps(sl)}},watch:{phaseRemaining(){this.phaseRemainingInterpolated=this.phaseRemaining},pvRemaining(){this.pvRemainingInterpolated=this.pvRemaining},chargeDuration(){this.chargeDurationInterpolated=this.chargeDuration},chargeRemainingDuration(){this.chargeRemainingDurationInterpolated=this.chargeRemainingDuration}},mounted(){this.tickerHandler=setInterval(this.tick,1e3)},unmounted(){clearInterval(this.tickerHandler)},methods:{tick(){this.phaseRemainingInterpolated>0&&this.phaseRemainingInterpolated--,this.pvRemainingInterpolated>0&&this.pvRemainingInterpolated--,this.chargeDurationInterpolated>0&&this.charging&&this.chargeDurationInterpolated++,this.chargeRemainingDurationInterpolated>0&&this.charging&&this.chargeRemainingDurationInterpolated--},apiPath:function(e){return"loadpoints/"+this.id+"/"+e},setTargetMode:function(e){er.post(this.apiPath("mode")+"/"+e)},setTargetSoC:function(e){er.post(this.apiPath("targetsoc")+"/"+e)},setTargetTime:function(e){const t=`${this.fmtDayString(e)}T${this.fmtTimeString(e)}:00`;er.post(this.apiPath("targetcharge")+"/"+this.targetSoC+"/"+t)},removeTargetTime:function(){er.delete(this.apiPath("targetcharge"))}}},Lk=e=>(Ft("data-v-23cdc18f"),e=e(),Ht(),e),Nk={class:"loadpoint bg-white p-4"},$k={class:"d-flex justify-content-between align-items-center mb-3"},xk={class:"mb-3 me-2 text-truncate"},Pk={class:"mb-3 d-flex align-items-center"},Ik={key:0,class:"btn btn-link text-gray p-0 flex-shrink-0"},Rk=Lk(()=>S("shopicon-filled-options",{size:"s"},null,-1)),Mk=[Rk],Dk={class:"details d-flex align-items-start mb-3"},Fk={class:"d-flex align-items-center"};function Hk(e,t,n,r,s,i){const o=Ce("Mode"),a=Ce("LabelAndValue"),l=Ce("Phases"),c=Ce("Vehicle");return V(),q("div",Nk,[S("div",$k,[S("h3",xk,K(n.title||e.$t("main.loadpoint.fallbackName")),1),S("div",Pk,[se(o,{mode:n.mode,onUpdated:i.setTargetMode},null,8,["mode","onUpdated"]),e.$hiddenFeatures?(V(),q("button",Ik,Mk)):Ne("",!0)])]),n.remoteDisabled?(V(),q("div",{key:0,class:Pe(["alert alert-warning my-4 py-2",`${n.remoteDisabled==="hard"?"alert-danger":"alert-warning"}`]),role:"alert"},K(e.$t(n.remoteDisabled==="hard"?"main.loadpoint.remoteDisabledHard":"main.loadpoint.remoteDisabledSoft",{source:n.remoteDisabledSource})),3)):Ne("",!0),S("div",Dk,[S("div",Fk,[S("div",null,[se(a,{label:e.$t("main.loadpoint.power"),value:e.fmtKw(n.chargePower),class:"mb-2"},null,8,["label","value"]),se(l,Rt(i.phasesProps,{class:["opacity-transiton",`opacity-${n.charging?"100":"0"}`]}),null,16,["class"])]),S("shopicon-regular-lightning",{class:Pe(["text-evcc opacity-transiton",`opacity-${n.charging?"100":"0"}`]),size:"m"},null,2)]),se(a,{label:e.$t("main.loadpoint.charged"),value:e.fmtKWh(n.chargedEnergy)},null,8,["label","value"]),s.chargeRemainingDurationInterpolated?(V(),Je(a,{key:0,label:e.$t("main.loadpoint.remaining"),value:` + `,document.head.appendChild(e)}var US='';class WS extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=US}}window.customElements.define("shopicon-regular-arrowup",WS);var zS='';class KS extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=zS}}window.customElements.define("shopicon-regular-menu",KS);const{protocol:YS,hostname:qS,port:Gf,pathname:GS}=window.location,rl=dp.create({baseURL:YS+"//"+qS+(Gf?":"+Gf:"")+GS});rl.interceptors.response.use(e=>e,e=>{const t=e.config.baseURL+e.config.url,n=`${e.message}: API request failed ${t}`;window.app.error({message:n})});const XS={name:"TopNavigation",props:{vehicleLogins:{type:Object,default:()=>({})}},computed:{logoutCount(){return this.providerLogins.filter(e=>!e.loggedIn).length},providerLogins(){return Object.entries(this.vehicleLogins).map(([e,t])=>({title:e,loggedIn:t.authenticated,loginPath:t.uri+"/login",logoutPath:t.uri+"/logout"}))}},methods:{handleProviderAuthorization:async function(e){e.loggedIn?rl.post(e.logoutPath):rl.post(e.loginPath).then(function(t){window.location.href=t.data.loginUri})}}},JS={type:"button","data-bs-toggle":"dropdown","data-bs-target":"#navbarNavAltMarkup","aria-controls":"navbarNavAltMarkup","aria-expanded":"false","aria-label":"Toggle navigation",class:"btn btn-sm btn-outline-secondary position-relative"},QS={key:0,class:"position-absolute top-0 start-100 translate-middle p-2 bg-danger border border-light rounded-circle"},ZS=S("span",{class:"visually-hidden"},"login available",-1),eC=[ZS],tC=S("shopicon-regular-menu",null,null,-1),nC={class:"dropdown-menu dropdown-menu-end"},rC={class:"dropdown-item",href:"https://docs.evcc.io/blog/",target:"_blank"},sC={class:"dropdown-item",href:"https://docs.evcc.io/docs/Home/",target:"_blank"},iC={class:"dropdown-item",href:"https://github.com/evcc-io/evcc",target:"_blank"},oC={class:"dropdown-item",href:"https://evcc.io/",target:"_blank"},aC=S("li",null,[S("hr",{class:"dropdown-divider"})],-1),lC={class:"dropdown-header"},cC=["onClick"],uC={key:0,class:"d-inline-block p-1 rounded-circle bg-danger border border-light rounded-circle"};function fC(e,t,n,r,s,i){return V(),q("div",null,[S("button",JS,[i.logoutCount>0?(V(),q("span",QS,eC)):Ne("",!0),tC]),S("ul",nC,[S("li",null,[S("a",rC,K(e.$t("header.blog")),1)]),S("li",null,[S("a",sC,K(e.$t("header.docs")),1)]),S("li",null,[S("a",iC,K(e.$t("header.github")),1)]),S("li",null,[S("a",oC,K(e.$t("header.about")),1)]),i.providerLogins.length>0?(V(),q(xe,{key:0},[aC,S("li",null,[S("h6",lC,K(e.$t("header.login")),1)]),(V(!0),q(xe,null,Zt(i.providerLogins,o=>(V(),q("li",{key:o.title},[S("button",{type:"button",class:"dropdown-item",onClick:a=>i.handleProviderAuthorization(o)},[o.loggedIn?Ne("",!0):(V(),q("span",uC)),De(" "+K(o.title)+" "+K(e.$t(o.loggedIn?"main.provider.logout":"main.provider.login")),1)],8,cC)]))),128))],64)):Ne("",!0)])])}var dC=Ie(XS,[["render",fC]]),hC='';class mC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=hC}}window.customElements.define("shopicon-regular-exclamationtriangle",mC);var hn={data:function(){return{fmtLimit:100,fmtDigits:1}},methods:{round:function(e,t){var n=10**t;return(Math.round(e*n)/n).toFixed(t)},fmt:function(e){return e==null?0:(e=Math.abs(e),e>=this.fmtLimit?this.round(e/1e3,this.fmtDigits):this.round(e,0))},fmtKw:function(e=0,t=!0,n=!0){const r=t?1:0,s=t?e/1e3:e;let i="";return n&&(i=t?" kW":" W"),`${new Intl.NumberFormat(this.$i18n.locale,{style:"decimal",minimumFractionDigits:r,maximumFractionDigits:r}).format(s)}${i}`},fmtKWh:function(e){return this.fmtKw(e)+"h"},fmtUnit:function(e){return Math.abs(e)>=this.fmtLimit?"k":""},fmtDuration:function(e){if(e<=0||e==null)return"\u2014";var t="0"+e%60,n="0"+Math.floor(e/60)%60,r=""+Math.floor(e/3600);return r.length<2&&(r="0"+r),r+":"+n.substr(-2)+":"+t.substr(-2)},fmtShortDuration:function(e=0,t=!1){if(e<=0)return"\u2014";var n=e%60,r=Math.floor(e/60)%60,s=Math.floor(e/3600),i="";return s>=1?i=s+":"+`${r}`.padStart(2,"0"):r>=1?i=r+":"+`${n}`.padStart(2,"0"):i=`${n}`,t&&(i+=this.fmtShortDurationUnit(e)),i},fmtShortDurationUnit:function(e=0){if(e<=0)return"";var t=Math.floor(e/60)%60,n=Math.floor(e/3600);return n>=1?"h":t>=1?"m":"s"},fmtDayString:function(e){const t=`${e.getFullYear()}`,n=`${e.getMonth()+1}`.padStart(2,"0"),r=`${e.getDate()}`.padStart(2,"0");return`${t}-${n}-${r}`},fmtTimeString:function(e){const t=`${e.getHours()}`.padStart(2,"0"),n=`${e.getMinutes()}`.padStart(2,"0");return`${t}:${n}`},isToday:function(e){return new Date().toDateString()===e.toDateString()},isTomorrow:function(e){const t=new Date;return t.setDate(t.getDate()+1),t.toDateString()===e.toDateString()},weekdayPrefix:function(e){const t=new Intl.RelativeTimeFormat(this.$i18n.locale,{numeric:"auto"});return this.isToday(e)?t.formatToParts(0,"day")[0].value:this.isTomorrow(e)?t.formatToParts(1,"day")[0].value:new Intl.DateTimeFormat(this.$i18n.locale,{weekday:"short"}).format(e)},fmtAbsoluteDate:function(e){const t=this.weekdayPrefix(e),n=new Intl.DateTimeFormat(this.$i18n.locale,{hour:"numeric",minute:"numeric"}).format(e);return`${t} ${n}`},fmtMoney:function(e=0,t="EUR"){return new Intl.NumberFormat(this.$i18n.locale,{style:"currency",currency:t}).format(e)},fmtPricePerKWh:function(e=0,t="EUR"){let n=t,r=e,s=3;return["EUR","USD"].includes(t)&&(r*=100,n="ct",s=1),`${new Intl.NumberFormat(this.$i18n.locale,{style:"decimal",maximumFractionDigits:s}).format(r)} ${n}/kWh`},fmtTimeAgo:function(e){const t={day:864e5,hour:36e5,minute:6e4,second:1e3},n=new Intl.RelativeTimeFormat(this.$i18n.locale,{numeric:"auto"});for(var r in t)if(Math.abs(e)>t[r]||r=="second")return n.format(Math.round(e/t[r]),r)}}};const pC={name:"Notifications",mixins:[hn],props:{notifications:Array},computed:{iconVisible:function(){return this.notifications.length>0},iconClass:function(){return this.notifications.find(e=>e.type==="error")?"text-danger":"text-warning"}},created:function(){this.interval=setInterval(()=>{this.$forceUpdate()},10*1e3)},unmounted:function(){clearTimeout(this.interval)},methods:{clear:function(){window.app&&window.app.clear()}}},gC={href:"#","data-bs-toggle":"modal","data-bs-target":"#notificationModal",class:"btn btn-sm btn-link text-decoration-none link-light text-nowrap"},_C={id:"notificationModal",class:"modal fade text-dark",tabindex:"-1",role:"dialog","aria-hidden":"true","data-bs-backdrop":"true"},vC={class:"modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable",role:"document"},bC={class:"modal-content"},yC={class:"modal-header"},EC={class:"modal-title"},wC=S("button",{type:"button",class:"btn-close","data-bs-dismiss":"modal","aria-label":"Close"},null,-1),TC={class:"modal-body"},SC=["title"],CC={class:"d-flex align-items-baseline"},AC={class:"flex-grow-1 px-2 py-1 text-break"},kC={key:0,class:"badge rounded-pill bg-secondary"},OC={class:"modal-footer"};function LC(e,t,n,r,s,i){return V(),q("div",null,[Xi(S("button",gC,[S("shopicon-regular-exclamationtriangle",{class:Pe(i.iconClass)},null,2)],512),[[dc,i.iconVisible]]),S("div",_C,[S("div",vC,[S("div",bC,[S("div",yC,[S("h5",EC,K(e.$t("notifications.modalTitle")),1),wC]),S("div",TC,[(V(!0),q(xe,null,Zt(n.notifications,(o,a)=>(V(),q("div",{key:a},[S("small",{class:"d-flex justify-content-end mt-3",title:e.fmtAbsoluteDate(o.time)},K(e.fmtTimeAgo(o.time-new Date)),9,SC),S("p",CC,[S("shopicon-regular-exclamationtriangle",{class:Pe([{"text-danger":o.type==="error","text-warning":o.type==="warn"},"flex-grow-0 d-block"])},null,2),S("span",AC,K(o.message),1),o.count>1?(V(),q("span",kC,K(o.count),1)):Ne("",!0)])]))),128))]),S("div",OC,[S("button",{type:"button","data-bs-dismiss":"modal","aria-label":"Close",class:"btn btn-outline-secondary",onClick:t[0]||(t[0]=(...o)=>i.clear&&i.clear(...o))},K(e.$t("notifications.dismissAll")),1)])])])])])}var NC=Ie(pC,[["render",LC]]),$C='';class xC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=$C}}window.customElements.define("shopicon-filled-square",xC);var PC='';class IC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=PC}}window.customElements.define("shopicon-regular-arrowdown",IC);var RC='';class MC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=RC}}window.customElements.define("shopicon-regular-batteryfull",MC);var DC='';class FC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=DC}}window.customElements.define("shopicon-regular-batterythreequarters",FC);var HC='';class BC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=HC}}window.customElements.define("shopicon-regular-batteryhalf",BC);var jC='';class VC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=jC}}window.customElements.define("shopicon-regular-batteryquarter",VC);var UC='';class WC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=UC}}window.customElements.define("shopicon-regular-batteryempty",WC);const zC={name:"BatteryIcon",props:{soc:{type:Number,default:0}},computed:{icon:function(){return this.soc>80?"batteryfull":this.soc>60?"batterythreequarters":this.soc>40?"batteryhalf":this.soc>20?"batteryquarter":"batteryempty"}}};function KC(e,t,n,r,s,i){return V(),Je(sc(`shopicon-regular-${i.icon}`))}var Ap=Ie(zC,[["render",KC]]);const YC={name:"LabelBar",props:{value:{type:Number,default:0},hideIcon:{type:Boolean},top:{type:Boolean},bottom:{type:Boolean},first:{type:Boolean},last:{type:Boolean}}},qC={class:"label-bar-scale"},GC={class:"label-bar-icon"};function XC(e,t,n,r,s,i){return V(),q("div",{class:Pe(["label-bar",{"label-bar--hide-icon":n.hideIcon,"label-bar--hidden":!n.value,"label-bar--top":n.top,"label-bar--bottom":n.bottom,"label-bar--first":n.first,"label-bar--last":n.last}])},[S("div",qC,[S("div",GC,[ac(e.$slots,"default",{},void 0,!0)])])],2)}var JC=Ie(YC,[["render",XC],["__scopeId","data-v-ec52d0bc"]]),QC='';class ZC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=QC}}window.customElements.define("shopicon-regular-car3",ZC);var eA='';class tA extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=eA}}window.customElements.define("shopicon-regular-sun",tA);var nA='';class rA extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=nA}}window.customElements.define("shopicon-regular-home",rA);const sA={name:"Visualization",components:{BatteryIcon:Ap,LabelBar:JC},mixins:[hn],props:{gridImport:{type:Number,default:0},selfConsumption:{type:Number,default:0},pvExport:{type:Number,default:0},loadpoints:{type:Number,default:0},batteryCharge:{type:Number,default:0},batteryDischarge:{type:Number,default:0},pvProduction:{type:Number,default:0},homePower:{type:Number,default:0},batterySoC:{type:Number,default:0},valuesInKw:{type:Boolean,default:!1}},data:function(){return{width:0,visualizationReady:!1}},computed:{gridExport:function(){return this.applyThreshold(this.pvExport)},totalRaw:function(){return this.gridImport+this.selfConsumption+this.pvExport},gridImportAdjusted:function(){return this.applyThreshold(this.gridImport)},selfConsumptionAdjusted:function(){return this.applyThreshold(this.selfConsumption)},pvExportAdjusted:function(){return this.applyThreshold(this.pvExport)},totalAdjusted:function(){return this.gridImportAdjusted+this.selfConsumptionAdjusted+this.pvExportAdjusted}},watch:{totalAdjusted:function(){!this.visualizationReady&&this.totalAdjusted>0&&setTimeout(()=>{this.visualizationReady=!0},500)}},mounted:function(){this.$nextTick(function(){window.addEventListener("resize",this.updateElementWidth),this.updateElementWidth()})},beforeUnmount(){window.removeEventListener("resize",this.updateElementWidth)},methods:{widthTotal:function(e){return this.totalAdjusted===0?"0%":100/this.totalAdjusted*e+"%"},kw:function(e){return this.fmtKw(e,this.valuesInKw,!0)},kwNoUnit:function(e){return this.fmtKw(e,this.valuesInKw,!1)},powerLabelAvailableSpace(e){if(this.totalAdjusted===0)return 0;const t=100/this.totalAdjusted*e;return this.width/100*t},powerLabelEnoughSpace(e){return this.powerLabelAvailableSpace(e)>60},powerLabelSomeSpace(e){return this.powerLabelAvailableSpace(e)>35},hideLabelIcon(e,t=32){if(this.totalAdjusted===0)return!0;const n=100/this.totalAdjusted*e;return this.width/100*n(Ft("data-v-6d3ba8b7"),e=e(),Ht(),e),iA={class:"label-scale d-flex"},oA={class:"d-flex justify-content-start flex-grow-1"},aA=br(()=>S("shopicon-regular-sun",null,null,-1)),lA=br(()=>S("shopicon-regular-powersupply",null,null,-1)),cA=br(()=>S("div",{class:"label-scale-name"},"In",-1)),uA={ref:"site_progress",class:"site-progress"},fA={key:0,class:"power"},dA={key:1,class:"power"},hA={key:0,class:"power"},mA={key:1,class:"power"},pA={key:0,class:"power"},gA={key:1,class:"power"},_A={key:0,class:"site-progress-bar bg-light border no-wrap w-100"},vA={class:"label-scale d-flex"},bA={class:"d-flex justify-content-start flex-grow-1"},yA=br(()=>S("shopicon-regular-home",null,null,-1)),EA=br(()=>S("shopicon-regular-car3",null,null,-1)),wA=br(()=>S("shopicon-regular-powersupply",null,null,-1)),TA=br(()=>S("div",{class:"label-scale-name"},"Out",-1));function SA(e,t,n,r,s,i){const o=Ce("LabelBar"),a=Ce("BatteryIcon");return V(),q("div",{class:Pe(["visualization",{"visualization--ready":e.visualizationReady}])},[S("div",iA,[S("div",oA,[se(o,dt(rt(i.labelBarProps("top","pvProduction"))),{default:wt(()=>[aA]),_:1},16),se(o,dt(rt(i.labelBarProps("top","batteryDischarge"))),{default:wt(()=>[se(a,{soc:n.batterySoC},null,8,["soc"])]),_:1},16),se(o,dt(rt(i.labelBarProps("top","gridImport"))),{default:wt(()=>[lA]),_:1},16)]),cA]),S("div",uA,[S("div",{class:"site-progress-bar self-consumption",style:Ke({width:i.widthTotal(i.selfConsumptionAdjusted)})},[i.powerLabelEnoughSpace(n.selfConsumption)?(V(),q("span",fA,K(i.kw(n.selfConsumption)),1)):i.powerLabelSomeSpace(n.selfConsumption)?(V(),q("span",dA,K(i.kwNoUnit(n.selfConsumption)),1)):Ne("",!0)],4),S("div",{class:"site-progress-bar grid-import",style:Ke({width:i.widthTotal(i.gridImportAdjusted)})},[i.powerLabelEnoughSpace(n.gridImport)?(V(),q("span",hA,K(i.kw(n.gridImport)),1)):i.powerLabelSomeSpace(n.gridImport)?(V(),q("span",mA,K(i.kwNoUnit(n.gridImport)),1)):Ne("",!0)],4),S("div",{class:"site-progress-bar pv-export",style:Ke({width:i.widthTotal(i.pvExportAdjusted)})},[i.powerLabelEnoughSpace(n.pvExport)?(V(),q("span",pA,K(i.kw(n.pvExport)),1)):i.powerLabelSomeSpace(n.pvExport)?(V(),q("span",gA,K(i.kwNoUnit(n.pvExport)),1)):Ne("",!0)],4),i.totalAdjusted<=0?(V(),q("div",_A,[S("span",null,K(e.$t("main.energyflow.noEnergy")),1)])):Ne("",!0)],512),S("div",vA,[S("div",bA,[se(o,dt(rt(i.labelBarProps("bottom","homePower"))),{default:wt(()=>[yA]),_:1},16),se(o,dt(rt(i.labelBarProps("bottom","loadpoints"))),{default:wt(()=>[EA]),_:1},16),se(o,dt(rt(i.labelBarProps("bottom","batteryCharge"))),{default:wt(()=>[se(a,{soc:n.batterySoC},null,8,["soc"])]),_:1},16),se(o,dt(rt(i.labelBarProps("bottom","gridExport"))),{default:wt(()=>[wA]),_:1},16)]),TA])],2)}var CA=Ie(sA,[["render",SA],["__scopeId","data-v-6d3ba8b7"]]),AA='';class kA extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=AA}}window.customElements.define("shopicon-regular-powersupply",kA);const OA={name:"EnergyflowEntry",components:{BatteryIcon:Ap},mixins:[hn],props:{name:{type:String},icon:{type:String},power:{type:Number},soc:{type:Number},valuesInKw:{type:Boolean}},computed:{active:function(){return this.power>10},isBattery:function(){return this.icon==="battery"},hasSoC:function(){return this.isBattery&&!isNaN(this.soc)}},methods:{kw:function(e){return this.fmtKw(e,this.valuesInKw)}}},LA={class:"d-flex flex-nowrap"},NA={class:"text-nowrap flex-grow-1 ms-3"},$A={class:"text-end text-nowrap ps-1 fw-bold"},xA={key:0};function PA(e,t,n,r,s,i){const o=Ce("BatteryIcon");return V(),q("div",{class:Pe(["d-flex justify-content-between mb-2 entry",{"text-gray-medium":!i.active}])},[S("span",LA,[i.isBattery?(V(),Je(o,{key:0,soc:n.soc},null,8,["soc"])):(V(),Je(sc(`shopicon-regular-${n.icon}`),{key:1}))]),S("span",NA,K(n.name),1),S("span",$A,[i.hasSoC?(V(),q("span",xA,K(n.soc)+"% / ",1)):Ne("",!0),De(K(i.kw(n.power)),1)])],2)}var IA=Ie(OA,[["render",PA],["__scopeId","data-v-d9ddb656"]]);const RA={name:"Energyflow",components:{Visualization:CA,EnergyflowEntry:IA},mixins:[hn],props:{gridConfigured:Boolean,gridPower:{type:Number,default:0},homePower:{type:Number,default:0},pvConfigured:Boolean,pvPower:{type:Number,default:0},loadpointsPower:{type:Number,default:0},activeLoadpointsCount:{type:Number,default:0},batteryConfigured:Boolean,batteryPower:{type:Number,default:0},batterySoC:{type:Number,default:0}},data:()=>({detailsOpen:!1,detailsCompleteHeight:null}),computed:{gridImport:function(){return Math.max(0,this.gridPower)},pvProduction:function(){return this.pvConfigured?Math.abs(this.pvPower):this.pvExport},batteryPowerAdjusted:function(){return Math.abs(this.batteryPower)<50?0:this.batteryPower},batteryDischarge:function(){return Math.abs(Math.max(0,this.batteryPowerAdjusted))},batteryCharge:function(){return Math.abs(Math.min(0,this.batteryPowerAdjusted)*-1)},selfConsumption:function(){const e=this.batteryDischarge+this.pvProduction,t=this.homePower+this.batteryCharge+this.loadpointsPower;return Math.min(e,t)},pvExport:function(){return Math.max(0,this.gridPower*-1)},valuesInKw:function(){return this.gridImport+this.selfConsumption+this.pvExport>1e3},inPower:function(){return this.gridImport+this.pvProduction+this.batteryDischarge},outPower:function(){return this.homePower+this.loadpointsPower+this.pvExport+this.batteryCharge},detailsHeight:function(){return this.detailsOpen?this.detailsCompleteHeight+"px":0}},mounted(){window.addEventListener("resize",this.updateHeight)},unmounted(){window.removeEventListener("resize",this.updateHeight)},methods:{kw:function(e){return this.fmtKw(e,this.valuesInKw)},toggleDetails:function(){this.updateHeight(),this.detailsOpen=!this.detailsOpen},updateHeight:function(){this.detailsCompleteHeight=this.$refs.detailsInner.offsetHeight}}},hs=e=>(Ft("data-v-8704b160"),e=e(),Ht(),e),MA={class:"row"},DA=hs(()=>S("div",{class:"indicator position-absolute bottom-0 start-50"},[S("shopicon-regular-arrowdown")],-1)),FA={ref:"detailsInner",class:"details-inner row"},HA={class:"col-12 d-flex justify-content-between pt-2 mb-4"},BA={class:"d-flex flex-nowrap align-items-center"},jA=hs(()=>S("span",{class:"color-self me-2"},[S("shopicon-filled-square")],-1)),VA={key:0,class:"d-flex flex-nowrap align-items-center"},UA=hs(()=>S("span",{class:"color-grid ms-2"},[S("shopicon-filled-square")],-1)),WA={key:1,class:"d-flex flex-nowrap align-items-center"},zA=hs(()=>S("span",{class:"color-export ms-2"},[S("shopicon-filled-square")],-1)),KA={class:"col-12 col-md-6 pe-md-5 pb-4 d-flex flex-column justify-content-between"},YA={class:"d-flex justify-content-between align-items-end mb-4"},qA=hs(()=>S("h3",{class:"m-0"},"In",-1)),GA={class:"fw-bold text-gray-medium"},XA={class:"col-12 col-md-6 ps-md-5 pb-4 d-flex flex-column justify-content-between"},JA={class:"d-flex justify-content-between align-items-end mb-4"},QA=hs(()=>S("h3",{class:"m-0"},"Out",-1)),ZA={class:"fw-bold text-gray-medium"};function e2(e,t,n,r,s,i){const o=Ce("Visualization"),a=Ce("EnergyflowEntry");return V(),q("div",{class:Pe(["energyflow cursor-pointer position-relative",{"energyflow--open":e.detailsOpen}]),onClick:t[0]||(t[0]=(...l)=>i.toggleDetails&&i.toggleDetails(...l))},[S("div",MA,[se(o,{class:"col-12 mb-3 mb-md-4",gridImport:i.gridImport,selfConsumption:i.selfConsumption,loadpoints:n.loadpointsPower,pvExport:i.pvExport,batteryCharge:i.batteryCharge,batteryDischarge:i.batteryDischarge,pvProduction:i.pvProduction,homePower:n.homePower,batterySoC:n.batterySoC,valuesInKw:i.valuesInKw},null,8,["gridImport","selfConsumption","loadpoints","pvExport","batteryCharge","batteryDischarge","pvProduction","homePower","batterySoC","valuesInKw"])]),DA,S("div",{class:"details",style:Ke({height:i.detailsHeight})},[S("div",FA,[S("div",HA,[S("div",BA,[jA,S("span",null,K(e.$t("main.energyflow.selfConsumption")),1)]),i.gridImport>0?(V(),q("div",VA,[S("span",null,K(e.$t("main.energyflow.gridImport")),1),UA])):(V(),q("div",WA,[S("span",null,K(e.$t("main.energyflow.pvExport")),1),zA]))]),S("div",KA,[S("div",YA,[qA,S("span",GA,K(i.kw(i.inPower)),1)]),S("div",null,[se(a,{name:e.$t("main.energyflow.pvProduction"),icon:"sun",power:i.pvProduction,valuesInKw:i.valuesInKw},null,8,["name","power","valuesInKw"]),n.batteryConfigured?(V(),Je(a,{key:0,name:e.$t("main.energyflow.batteryDischarge"),icon:"battery",soc:n.batterySoC,power:i.batteryDischarge,valuesInKw:i.valuesInKw},null,8,["name","soc","power","valuesInKw"])):Ne("",!0),se(a,{name:e.$t("main.energyflow.gridImport"),icon:"powersupply",power:i.gridImport,valuesInKw:i.valuesInKw},null,8,["name","power","valuesInKw"])])]),S("div",XA,[S("div",JA,[QA,S("span",ZA,K(i.kw(i.outPower)),1)]),S("div",null,[se(a,{name:e.$t("main.energyflow.homePower"),icon:"home",power:n.homePower,valuesInKw:i.valuesInKw},null,8,["name","power","valuesInKw"]),se(a,{name:e.$tc("main.energyflow.loadpoints",n.activeLoadpointsCount,{count:n.activeLoadpointsCount}),icon:"car3",power:n.loadpointsPower,valuesInKw:i.valuesInKw},null,8,["name","power","valuesInKw"]),n.batteryConfigured?(V(),Je(a,{key:0,name:e.$t("main.energyflow.batteryCharge"),icon:"battery",soc:n.batterySoC,power:i.batteryCharge,valuesInKw:i.valuesInKw},null,8,["name","soc","power","valuesInKw"])):Ne("",!0),se(a,{name:e.$t("main.energyflow.pvExport"),icon:"powersupply",power:i.pvExport,valuesInKw:i.valuesInKw},null,8,["name","power","valuesInKw"])])])],512)],4)],2)}var Xf=Ie(RA,[["render",e2],["__scopeId","data-v-8704b160"]]),t2='';class n2 extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=t2}}window.customElements.define("shopicon-filled-circle",n2);var r2='';class s2 extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=r2}}window.customElements.define("shopicon-regular-lightning",s2);var i2='';class o2 extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=i2}}window.customElements.define("shopicon-filled-options",o2);const a2={name:"Mode",props:{mode:String},emits:["updated"],data(){return{modes:["off","now","minpv","pv"]}},methods:{isActive:function(e){return this.mode===this.mapToOldModes(e)},setTargetMode:function(e){this.$emit("updated",this.mapToOldModes(e))},mapToOldModes:function(e){return{fast:"now",cheap:"pv"}[e]||e}}},l2={key:0,class:"mode-group border d-inline-flex",role:"group"},c2=["onClick"],u2={key:1,class:"mode-group border d-inline-flex",role:"group"},f2=["onClick"],d2={class:"d-inline d-sm-none"},h2={class:"d-none d-sm-inline"};function m2(e,t,n,r,s,i){return e.$hiddenFeatures?(V(),q("div",l2,[(V(),q(xe,null,Zt(["fast","cheap"],o=>S("button",{key:o,type:"button",class:Pe(["btn",{active:i.isActive(o)}]),onClick:a=>i.setTargetMode(o)},K(e.$t(`main.mode.${o}`)),11,c2)),64))])):(V(),q("div",u2,[(V(!0),q(xe,null,Zt(s.modes,o=>(V(),q("button",{key:o,type:"button",class:Pe(["btn",{active:i.isActive(o)}]),onClick:a=>i.setTargetMode(o)},[S("span",d2,K(e.$t(`main.mode.${o}Short`)),1),S("span",h2,K(e.$t(`main.mode.${o}Long`)),1)],10,f2))),128))]))}var p2=Ie(a2,[["render",m2],["__scopeId","data-v-b76c4bcc"]]),yr={methods:{collectProps:function(e){let t={};for(var n in e.props)n in this&&(t[n]=this[n]);return t}}};const g2={name:"LabelAndValue",props:{label:String,value:String,extraValue:String,onDark:Boolean}},_2={class:"mb-2 label"},v2={class:"value m-0"},b2={key:0,class:"extraValue d-block d-sm-inline text-nowrap"};function y2(e,t,n,r,s,i){return V(),q("div",{class:Pe(["root",{"root--dark":n.onDark}])},[S("div",_2,K(n.label),1),ac(e.$slots,"default",{},()=>[S("h3",v2,[De(K(n.value)+" ",1),n.extraValue?(V(),q("span",b2,K(n.extraValue),1)):Ne("",!0)])],!0)],2)}var Tc=Ie(g2,[["render",y2],["__scopeId","data-v-61a0ab7e"]]),E2='';class w2 extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=E2}}window.customElements.define("shopicon-regular-cablecharge",w2);const T2={name:"VehicleTitle",mixins:[yr],props:{vehiclePresent:Boolean,vehicleTitle:String,parked:Boolean,connected:Boolean},computed:{carIcon(){return this.connected||this.parked},name(){return this.vehiclePresent||this.parked?this.vehicleTitle||this.$t("main.vehicle.fallbackName"):this.connected?this.$t("main.vehicle.unknown"):this.$t("main.vehicle.none")}}},S2={class:"d-flex justify-content-between mb-3 align-items-center"},C2={class:"d-flex align-items-center m-0 flex-grow-1 overflow-hidden"},A2={key:0,class:"me-2 flex-shrink-0 car-icon"},k2={key:1,class:"me-2 flex-shrink-0 car-icon"},O2={class:"flex-grow-1 text-truncate"},L2={key:0,class:"btn btn-link text-white p-0 flex-shrink-0"},N2=S("shopicon-filled-options",{size:"s"},null,-1),$2=[N2];function x2(e,t,n,r,s,i){return V(),q("div",S2,[S("h4",C2,[i.carIcon?(V(),q("shopicon-regular-car3",A2)):(V(),q("shopicon-regular-cablecharge",k2)),S("span",O2,K(i.name),1)]),e.$hiddenFeatures?(V(),q("button",L2,$2)):Ne("",!0)])}var Jf=Ie(T2,[["render",x2]]);const P2={name:"VehicleSoc",props:{connected:Boolean,vehiclePresent:Boolean,vehicleSoC:Number,enabled:Boolean,charging:Boolean,minSoC:Number,targetSoC:Number,parked:Boolean},emits:["target-soc-drag","target-soc-updated"],data:function(){return{selectedTargetSoC:null,interactionStartScreenY:null}},computed:{vehicleSoCDisplayWidth:function(){return this.vehiclePresent&&this.vehicleSoC>=0?this.vehicleSoC:100},progressColor:function(){return this.minSoCActive?"bg-danger":"bg-primary"},minSoCActive:function(){return this.minSoC>0&&this.vehicleSoCthis.vehicleSoC?this.visibleTargetSoC-this.vehicleSoC:null},visibleTargetSoC:function(){return Number(this.selectedTargetSoC||this.targetSoC)}},watch:{targetSoC:function(){this.selectedTargetSoC=this.targetSoC}},methods:{changeTargetSoCStart:function(e){const t=e.screenY||e.changedTouches[0].screenY;this.interactionStartScreenY=t},changeTargetSoCEnd:function(e){const t=e.screenY||e.changedTouches[0].screenY;if(Math.abs(t-this.interactionStartScreenY)>80)return e.preventDefault(),e.target.value=this.targetSoC,this.selectedTargetSoC=this.targetSoC,!1;e.target.value!==this.targetSoC&&this.$emit("target-soc-updated",e.target.value)},movedTargetSoC:function(e){return e.target.value<20?(e.target.value=20,this.selectedTargetSoC=e.target.value,e.preventDefault(),!1):(this.selectedTargetSoC=e.target.value,this.$emit("target-soc-drag",this.selectedTargetSoC),!0)}}},I2={class:"vehicle-soc"},R2={class:"progress"},M2={class:"target"},D2=["value"];function F2(e,t,n,r,s,i){return V(),q("div",I2,[S("div",R2,[n.connected||n.parked?(V(),q("div",{key:0,class:Pe(["progress-bar",{[i.progressColor]:!0,"progress-bar-striped":n.charging,"progress-bar-animated":n.charging}]),role:"progressbar",style:Ke({width:`${i.vehicleSoCDisplayWidth}%`})},null,6)):Ne("",!0),i.remainingSoCWidth>0&&n.enabled&&n.connected?(V(),q("div",{key:1,class:Pe(["progress-bar bg-muted",i.progressColor]),role:"progressbar",style:Ke({width:`${i.remainingSoCWidth}%`,transition:"none"})},null,6)):Ne("",!0)]),S("div",M2,[S("div",{class:"target-label d-flex align-items-center justify-content-center",style:Ke({left:`${i.visibleTargetSoC}%`})},null,4),n.vehiclePresent&&(n.connected||n.parked)?(V(),q("input",{key:0,type:"range",min:"0",max:"100",step:"5",value:i.visibleTargetSoC,class:"target-slider",onInput:t[0]||(t[0]=(...o)=>i.movedTargetSoC&&i.movedTargetSoC(...o)),onMousedown:t[1]||(t[1]=(...o)=>i.changeTargetSoCStart&&i.changeTargetSoCStart(...o)),onTouchstart:t[2]||(t[2]=(...o)=>i.changeTargetSoCStart&&i.changeTargetSoCStart(...o)),onMouseup:t[3]||(t[3]=(...o)=>i.changeTargetSoCEnd&&i.changeTargetSoCEnd(...o)),onTouchend:t[4]||(t[4]=(...o)=>i.changeTargetSoCEnd&&i.changeTargetSoCEnd(...o))},null,40,D2)):Ne("",!0)])])}var Qf=Ie(P2,[["render",F2],["__scopeId","data-v-cbe29806"]]);const H2={name:"VehicleStatus",mixins:[yr,hn],props:{vehicleSoC:Number,minSoC:Number,enabled:Boolean,connected:Boolean,charging:Boolean,targetTime:String,targetTimeProjectedStart:String,phaseAction:String,phaseRemainingInterpolated:Number,pvAction:String,pvRemainingInterpolated:Number},computed:{phaseTimerActive(){return this.charging&&this.phaseRemainingInterpolated>0&&["scale1p","scale3p"].includes(this.phaseAction)},pvTimerActive(){return this.pvRemainingInterpolated>0&&["enable","disable"].includes(this.pvAction)},message:function(){const e=(t,n)=>this.$t(`main.vehicleStatus.${t}`,n);if(!this.connected)return e("disconnected");if(this.minSoC>0&&this.vehicleSoC';class U2 extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=V2}}window.customElements.define("shopicon-filled-plus",U2);var W2='';class z2 extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=W2}}window.customElements.define("shopicon-filled-edit",z2);const K2="7:00",ed="last_target_time",Y2={name:"TargetCharge",components:{LabelAndValue:Tc},mixins:[hn],props:{id:[String,Number],targetTime:String,targetTimeActive:Boolean,targetSoC:Number,disabled:Boolean},emits:["target-time-updated","target-time-removed"],data:function(){return{selectedDay:null,selectedTime:null}},computed:{targetChargeEnabled:function(){return this.targetTime},buttonIsEnabled:function(){return this.targetChargeEnabled&&!this.disabled},selectedTargetTimeValid:function(){return new Datenew Date;this.targetChargeEnabled&&t&&(e=new Date(this.targetTime)),this.selectedDay=this.fmtDayString(e),this.selectedTime=this.fmtTimeString(e)},dayOptions:function(){const e=[],t=new Date,n=[this.$t("main.targetCharge.today"),this.$t("main.targetCharge.tomorrow")];for(let r=0;r<7;r++){const s=t.toLocaleDateString("default",{month:"short",day:"numeric"}),i=n[r]||t.toLocaleDateString("default",{weekday:"long"});e.push({value:t.toISOString().split("T")[0],name:`${s} (${i})`}),t.setDate(t.getDate()+1)}return e},minTime:function(){return new Date().toISOString().split("T")[1].slice(0,-8)},setTargetTime:function(){try{const e=this.selectedTargetTime.getHours(),t=this.selectedTargetTime.getMinutes();window.localStorage[ed]=`${e}:${t}`}catch(e){console.warn(e)}this.$emit("target-time-updated",this.selectedTargetTime)},removeTargetTime:function(){this.$emit("target-time-removed")}}},kp=e=>(Ft("data-v-26c7faef"),e=e(),Ht(),e),q2=["data-bs-target"],G2={key:0},X2={key:1},J2=["id"],Q2={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},Z2={class:"modal-content"},ek={class:"modal-header"},tk={class:"modal-title"},nk=kp(()=>S("button",{type:"button",class:"btn-close","data-bs-dismiss":"modal","aria-label":"Close"},null,-1)),rk={class:"modal-body"},sk={class:"form-group"},ik={for:"targetTimeLabel",class:"mb-3"},ok={class:"d-flex justify-content-between",style:{"max-width":"350px"}},ak=["value"],lk={key:0,class:"text-danger mb-0"},ck={class:"small mt-3 text-muted mb-0"},uk={class:"text-evcc"},fk=kp(()=>S("a",{href:"https://github.com/evcc-io/evcc/discussions/1433",target:"_blank"},"GitHub Discussions",-1)),dk=De(". "),hk={class:"modal-footer d-flex justify-content-between"},mk=["disabled"];function pk(e,t,n,r,s,i){const o=Ce("LabelAndValue");return V(),q("div",null,[se(o,{class:"flex-grow-1",label:e.$t("main.targetCharge.title"),"on-dark":""},{default:wt(()=>[S("button",{class:Pe(["btn btn-link p-0 value text-end",i.buttonIsEnabled?"text-white":"text-gray-light"]),"data-bs-toggle":"modal","data-bs-target":`#${i.modalId}`},[i.targetChargeEnabled?(V(),q("strong",G2,K(i.targetTimeLabel()),1)):(V(),q("span",X2,K(e.$t("main.targetCharge.setTargetTime")),1))],10,q2)]),_:1},8,["label"]),(V(),Je(Ro,{to:"body"},[S("div",{id:i.modalId,class:"modal fade text-dark","data-bs-backdrop":"true",tabindex:"-1",role:"dialog","aria-hidden":"true"},[S("div",Q2,[S("div",Z2,[S("div",ek,[S("h5",tk,K(e.$t("main.targetCharge.modalTitle")),1),nk]),S("form",{onSubmit:t[3]||(t[3]=Dm((...a)=>i.setTargetTime&&i.setTargetTime(...a),["prevent"]))},[S("div",rk,[S("div",sk,[S("label",ik,K(e.$t("main.targetCharge.description",{targetSoC:n.targetSoC})),1),S("div",ok,[Xi(S("select",{"onUpdate:modelValue":t[0]||(t[0]=a=>e.selectedDay=a),class:"form-select me-2",style:{"flex-basis":"60%"}},[(V(!0),q(xe,null,Zt(i.dayOptions(),a=>(V(),q("option",{key:a.value,value:a.value},K(a.name),9,ak))),128))],512),[[fc,e.selectedDay]]),Xi(S("input",{"onUpdate:modelValue":t[1]||(t[1]=a=>e.selectedTime=a),type:"time",class:"form-control ms-2",style:{"flex-basis":"40%"},step:60*5,required:""},null,512),[[Zs,e.selectedTime]])])]),i.selectedTargetTimeValid?Ne("",!0):(V(),q("p",lk,K(e.$t("main.targetCharge.targetIsInThePast")),1)),S("p",ck,[S("strong",uk,K(e.$t("main.targetCharge.experimentalLabel"))+": ",1),De(" "+K(e.$t("main.targetCharge.experimentalText"))+" ",1),fk,dk])]),S("div",hk,[S("button",{type:"button",class:"btn btn-outline-secondary","data-bs-dismiss":"modal",onClick:t[2]||(t[2]=(...a)=>i.removeTargetTime&&i.removeTargetTime(...a))},K(e.$t("main.targetCharge.remove")),1),S("button",{type:"submit",class:"btn btn-primary","data-bs-dismiss":"modal",disabled:!i.selectedTargetTimeValid},K(e.$t("main.targetCharge.activate")),9,mk)])],32)])])],8,J2)]))])}var td=Ie(Y2,[["render",pk],["__scopeId","data-v-26c7faef"]]);const gk={name:"Vehicle",components:{VehicleTitle:Jf,VehicleSoc:Qf,VehicleStatus:Zf,LabelAndValue:Tc,TargetCharge:td},mixins:[yr],props:{id:[String,Number],connected:Boolean,vehiclePresent:Boolean,vehicleSoC:Number,enabled:Boolean,charging:Boolean,minSoC:Number,vehicleRange:Number,vehicleTitle:String,targetTimeActive:Boolean,targetTime:String,targetTimeProjectedStart:String,targetSoC:Number,mode:String,phaseAction:String,phaseRemainingInterpolated:Number,pvAction:String,pvRemainingInterpolated:Number,parked:Boolean},emits:["target-time-removed","target-time-updated","target-soc-updated"],data(){return{displayTargetSoC:this.targetSoC}},computed:{vehicleSocProps:function(){return this.collectProps(Qf)},vehicleStatus:function(){return this.collectProps(Zf)},vehicleTitleProps:function(){return this.collectProps(Jf)},targetCharge:function(){return this.collectProps(td)},estimatedTargetRange:function(){return this.vehicleSoC>10&&this.vehicleRange&&this.displayTargetSoC?Math.round(this.displayTargetSoC*(this.vehicleRange/this.vehicleSoC))+" km":null},targetChargeDisabled:function(){return!this.connected||!["pv","minpv"].includes(this.mode)}},watch:{targetSoC:function(){this.displayTargetSoC=this.targetSoC}},methods:{targetSocDrag:function(e){this.displayTargetSoC=e},targetSocUpdated:function(e){this.displayTargetSoC=e,this.$emit("target-soc-updated",e)},setTargetTime:function(e){this.$emit("target-time-updated",e)},removeTargetTime:function(){this.$emit("target-time-removed")}}},_k=e=>(Ft("data-v-ec875aa2"),e=e(),Ht(),e),vk={class:"vehicle p-4 pb-3"},bk={key:1},yk={class:"details d-flex flex-wrap justify-content-between"},Ek={key:0,class:"d-flex justify-content-start"},wk=_k(()=>S("small",null,"vor 5 Stunden",-1)),Tk=[wk];function Sk(e,t,n,r,s,i){const o=Ce("VehicleTitle"),a=Ce("VehicleStatus"),l=Ce("VehicleSoc"),c=Ce("LabelAndValue"),u=Ce("TargetCharge");return V(),q("div",vk,[se(o,dt(rt(i.vehicleTitleProps)),null,16),n.parked?Ne("",!0):(V(),Je(a,Rt({key:0},i.vehicleStatus,{class:"mb-2"}),null,16)),se(l,Rt(i.vehicleSocProps,{class:"mt-2 mb-4",onTargetSocUpdated:i.targetSocUpdated,onTargetSocDrag:i.targetSocDrag}),null,16,["onTargetSocUpdated","onTargetSocDrag"]),n.vehiclePresent?(V(),q("div",bk,[S("div",yk,[se(c,{class:"flex-grow-1 text-start",label:e.$t("main.vehicle.vehicleSoC"),value:`${n.vehicleSoC||"--"} %`,extraValue:n.vehicleRange?`${n.vehicleRange} km`:null,"on-dark":""},null,8,["label","value","extraValue"]),se(c,{class:"flex-grow-1 text-center",label:e.$t("main.vehicle.targetSoC"),value:`${s.displayTargetSoC} %`,extraValue:i.estimatedTargetRange,"on-dark":""},null,8,["label","value","extraValue"]),se(u,Rt({class:"flex-grow-1 text-end target-charge"},i.targetCharge,{disabled:i.targetChargeDisabled,onTargetTimeUpdated:i.setTargetTime,onTargetTimeRemoved:i.removeTargetTime}),null,16,["disabled","onTargetTimeUpdated","onTargetTimeRemoved"])]),e.$hiddenFeatures?(V(),q("div",Ek,Tk)):Ne("",!0)])):Ne("",!0)])}var sl=Ie(gk,[["render",Sk],["__scopeId","data-v-ec875aa2"]]);const Ck={name:"Phases",props:{chargeCurrent:{type:Number},chargeCurrents:{type:Object},activePhases:{type:Number},minCurrent:{type:Number},maxCurrent:{type:Number},phaseAction:{type:String},phaseRemaining:{type:Number}},computed:{phaseTimerVisible(){return this.phaseTimerActive&&!this.pvTimerActive?!0:this.phaseTimerActive&&this.pvTimerActive?this.phaseRemainingInterpolatedthis.activePhases},targetWidth(){let e=Math.min(Math.max(this.minCurrent,this.chargeCurrent),this.maxCurrent);return 100/this.maxCurrent*e},realWidth(e){if(this.chargeCurrents){const t=this.chargeCurrents[e-1]||0;return 100/this.maxCurrent*t}return this.targetWidth()}}},Ak={class:"phases d-flex justify-content-between"};function kk(e,t,n,r,s,i){return V(),q("div",Ak,[(V(),q(xe,null,Zt([1,2,3],o=>S("div",{key:o,class:Pe(["phase me-1",{inactive:i.inactive(o)}])},[S("div",{class:"target",style:Ke({width:`${i.targetWidth()}%`})},null,4),S("div",{class:"real",style:Ke({width:`${i.realWidth(o)}%`})},null,4)],2)),64))])}var nd=Ie(Ck,[["render",kk],["__scopeId","data-v-2b56244b"]]);const Ok={name:"Loadpoint",components:{Mode:p2,Vehicle:sl,Phases:nd,LabelAndValue:Tc},mixins:[hn,yr],props:{id:Number,single:Boolean,title:String,mode:String,targetSoC:Number,remoteDisabled:Boolean,remoteDisabledSource:String,chargeDuration:Number,charging:Boolean,connected:Boolean,enabled:Boolean,vehicleTitle:String,vehicleSoC:Number,vehiclePresent:Boolean,vehicleRange:Number,minSoC:Number,targetTime:String,targetTimeActive:Boolean,targetTimeProjectedStart:String,vehicleProviderLoggedIn:Boolean,vehicleProviderLoginPath:String,vehicleProviderLogoutPath:String,chargePower:Number,chargedEnergy:Number,climater:String,chargeRemainingDuration:Number,phases:Number,minCurrent:Number,maxCurrent:Number,activePhases:Number,chargeCurrent:Number,vehicleCapacity:Number,connectedDuration:Number,chargeCurrents:Array,chargeConfigured:Boolean,chargeRemainingEnergy:Number,phaseAction:String,phaseRemaining:Number,pvRemaining:Number,pvAction:String},data(){return{tickerHandler:null,phaseRemainingInterpolated:this.phaseRemaining,pvRemainingInterpolated:this.pvRemaining,chargeDurationInterpolated:this.chargeDuration,chargeRemainingDurationInterpolated:this.chargeRemainingDuration}},computed:{phasesProps:function(){return this.collectProps(nd)},vehicle:function(){return this.collectProps(sl)}},watch:{phaseRemaining(){this.phaseRemainingInterpolated=this.phaseRemaining},pvRemaining(){this.pvRemainingInterpolated=this.pvRemaining},chargeDuration(){this.chargeDurationInterpolated=this.chargeDuration},chargeRemainingDuration(){this.chargeRemainingDurationInterpolated=this.chargeRemainingDuration}},mounted(){this.tickerHandler=setInterval(this.tick,1e3)},unmounted(){clearInterval(this.tickerHandler)},methods:{tick(){this.phaseRemainingInterpolated>0&&this.phaseRemainingInterpolated--,this.pvRemainingInterpolated>0&&this.pvRemainingInterpolated--,this.chargeDurationInterpolated>0&&this.charging&&this.chargeDurationInterpolated++,this.chargeRemainingDurationInterpolated>0&&this.charging&&this.chargeRemainingDurationInterpolated--},apiPath:function(e){return"loadpoints/"+this.id+"/"+e},setTargetMode:function(e){er.post(this.apiPath("mode")+"/"+e)},setTargetSoC:function(e){er.post(this.apiPath("targetsoc")+"/"+e)},setTargetTime:function(e){const t=`${this.fmtDayString(e)}T${this.fmtTimeString(e)}:00`;er.post(this.apiPath("targetcharge")+"/"+this.targetSoC+"/"+t)},removeTargetTime:function(){er.delete(this.apiPath("targetcharge"))}}},Lk=e=>(Ft("data-v-23cdc18f"),e=e(),Ht(),e),Nk={class:"loadpoint bg-white p-4"},$k={class:"d-flex justify-content-between align-items-center mb-3"},xk={class:"mb-3 me-2 text-truncate"},Pk={class:"mb-3 d-flex align-items-center"},Ik={key:0,class:"btn btn-link text-gray p-0 flex-shrink-0"},Rk=Lk(()=>S("shopicon-filled-options",{size:"s"},null,-1)),Mk=[Rk],Dk={class:"details d-flex align-items-start mb-3"},Fk={class:"d-flex align-items-center"};function Hk(e,t,n,r,s,i){const o=Ce("Mode"),a=Ce("LabelAndValue"),l=Ce("Phases"),c=Ce("Vehicle");return V(),q("div",Nk,[S("div",$k,[S("h3",xk,K(n.title||e.$t("main.loadpoint.fallbackName")),1),S("div",Pk,[se(o,{mode:n.mode,onUpdated:i.setTargetMode},null,8,["mode","onUpdated"]),e.$hiddenFeatures?(V(),q("button",Ik,Mk)):Ne("",!0)])]),n.remoteDisabled?(V(),q("div",{key:0,class:Pe(["alert alert-warning my-4 py-2",`${n.remoteDisabled==="hard"?"alert-danger":"alert-warning"}`]),role:"alert"},K(e.$t(n.remoteDisabled==="hard"?"main.loadpoint.remoteDisabledHard":"main.loadpoint.remoteDisabledSoft",{source:n.remoteDisabledSource})),3)):Ne("",!0),S("div",Dk,[S("div",Fk,[S("div",null,[se(a,{label:e.$t("main.loadpoint.power"),value:e.fmtKw(n.chargePower),class:"mb-2"},null,8,["label","value"]),se(l,Rt(i.phasesProps,{class:["opacity-transiton",`opacity-${n.charging?"100":"0"}`]}),null,16,["class"])]),S("shopicon-regular-lightning",{class:Pe(["text-evcc opacity-transiton",`opacity-${n.charging?"100":"0"}`]),size:"m"},null,2)]),se(a,{label:e.$t("main.loadpoint.charged"),value:e.fmtKWh(n.chargedEnergy)},null,8,["label","value"]),s.chargeRemainingDurationInterpolated?(V(),Je(a,{key:0,label:e.$t("main.loadpoint.remaining"),value:` ${e.fmtShortDuration(s.chargeRemainingDurationInterpolated)} ${e.fmtShortDurationUnit(s.chargeRemainingDurationInterpolated,!0)}`},null,8,["label","value"])):(V(),Je(a,{key:1,label:e.$t("main.loadpoint.duration"),value:` ${e.fmtShortDuration(s.chargeDurationInterpolated)} @@ -81,13 +81,13 @@ var tg=Object.defineProperty,ng=Object.defineProperties;var rg=Object.getOwnProp * vue-i18n v9.1.9 * (c) 2021 kazuya kawaguchi * Released under the MIT License. - */Object.defineProperty(mn,"__esModule",{value:!0});var Te=D$,Se=F$,D=H$;const Xp="9.1.9";function Xe(e,...t){return Te.createCompileError(e,null,void 0)}const ul=D.makeSymbol("__transrateVNode"),fl=D.makeSymbol("__datetimeParts"),dl=D.makeSymbol("__numberParts");D.makeSymbol("__enableEmitter");D.makeSymbol("__disableEmitter");const Jp=D.makeSymbol("__setPluralRules");D.makeSymbol("__intlifyMeta");const Qp=D.makeSymbol("__injectWithOption");let dd=0;function hd(e){return(t,n,r,s)=>e(n,r,Se.getCurrentInstance()||void 0,s)}function kc(e,t){const{messages:n,__i18n:r}=t,s=D.isPlainObject(n)?n:D.isArray(r)?{}:{[e]:{}};if(D.isArray(r)&&r.forEach(({locale:i,resource:o})=>{i?(s[i]=s[i]||{},io(o,s[i])):io(o,s)}),t.flatJson)for(const i in s)D.hasOwn(s,i)&&Te.handleFlatJson(s[i]);return s}const $i=e=>!D.isObject(e)||D.isArray(e);function io(e,t){if($i(e)||$i(t))throw Xe(20);for(const n in e)D.hasOwn(e,n)&&($i(e[n])||$i(t[n])?t[n]=e[n]:io(e[n],t[n]))}function Oc(e={}){const{__root:t}=e,n=t===void 0;let r=D.isBoolean(e.inheritLocale)?e.inheritLocale:!0;const s=Se.ref(t&&r?t.locale.value:D.isString(e.locale)?e.locale:"en-US"),i=Se.ref(t&&r?t.fallbackLocale.value:D.isString(e.fallbackLocale)||D.isArray(e.fallbackLocale)||D.isPlainObject(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:s.value),o=Se.ref(kc(s.value,e)),a=Se.ref(D.isPlainObject(e.datetimeFormats)?e.datetimeFormats:{[s.value]:{}}),l=Se.ref(D.isPlainObject(e.numberFormats)?e.numberFormats:{[s.value]:{}});let c=t?t.missingWarn:D.isBoolean(e.missingWarn)||D.isRegExp(e.missingWarn)?e.missingWarn:!0,u=t?t.fallbackWarn:D.isBoolean(e.fallbackWarn)||D.isRegExp(e.fallbackWarn)?e.fallbackWarn:!0,f=t?t.fallbackRoot:D.isBoolean(e.fallbackRoot)?e.fallbackRoot:!0,d=!!e.fallbackFormat,g=D.isFunction(e.missing)?e.missing:null,T=D.isFunction(e.missing)?hd(e.missing):null,A=D.isFunction(e.postTranslation)?e.postTranslation:null,_=D.isBoolean(e.warnHtmlMessage)?e.warnHtmlMessage:!0,p=!!e.escapeParameter;const v=t?t.modifiers:D.isPlainObject(e.modifiers)?e.modifiers:{};let E=e.pluralRules||t&&t.pluralRules,m;function k(){return Te.createCoreContext({version:Xp,locale:s.value,fallbackLocale:i.value,messages:o.value,datetimeFormats:a.value,numberFormats:l.value,modifiers:v,pluralRules:E,missing:T===null?void 0:T,missingWarn:c,fallbackWarn:u,fallbackFormat:d,unresolving:!0,postTranslation:A===null?void 0:A,warnHtmlMessage:_,escapeParameter:p,__datetimeFormatters:D.isPlainObject(m)?m.__datetimeFormatters:void 0,__numberFormatters:D.isPlainObject(m)?m.__numberFormatters:void 0,__v_emitter:D.isPlainObject(m)?m.__v_emitter:void 0,__meta:{framework:"vue"}})}m=k(),Te.updateFallbackLocale(m,s.value,i.value);function $(){return[s.value,i.value,o.value,a.value,l.value]}const L=Se.computed({get:()=>s.value,set:C=>{s.value=C,m.locale=s.value}}),H=Se.computed({get:()=>i.value,set:C=>{i.value=C,m.fallbackLocale=i.value,Te.updateFallbackLocale(m,s.value,C)}}),j=Se.computed(()=>o.value),Y=Se.computed(()=>a.value),J=Se.computed(()=>l.value);function F(){return D.isFunction(A)?A:null}function re(C){A=C,m.postTranslation=C}function x(){return g}function P(C){C!==null&&(T=hd(C)),g=C,m.missing=T}function Z(C,N,ne,G,ie,ce){$();let me;if(me=C(m),D.isNumber(me)&&me===Te.NOT_REOSLVED){const[ke,Le]=N();return t&&f?G(t):ie(ke)}else{if(ce(me))return me;throw Xe(14)}}function ee(...C){return Z(N=>Te.translate(N,...C),()=>Te.parseTranslateArgs(...C),"translate",N=>N.t(...C),N=>N,N=>D.isString(N))}function oe(...C){const[N,ne,G]=C;if(G&&!D.isObject(G))throw Xe(15);return ee(N,ne,D.assign({resolvedMessage:!0},G||{}))}function le(...C){return Z(N=>Te.datetime(N,...C),()=>Te.parseDateTimeArgs(...C),"datetime format",N=>N.d(...C),()=>Te.MISSING_RESOLVE_VALUE,N=>D.isString(N))}function ue(...C){return Z(N=>Te.number(N,...C),()=>Te.parseNumberArgs(...C),"number format",N=>N.n(...C),()=>Te.MISSING_RESOLVE_VALUE,N=>D.isString(N))}function pe(C){return C.map(N=>D.isString(N)?Se.createVNode(Se.Text,null,N,0):N)}const Oe={normalize:pe,interpolate:C=>C,type:"vnode"};function Ee(...C){return Z(N=>{let ne;const G=N;try{G.processor=Oe,ne=Te.translate(G,...C)}finally{G.processor=null}return ne},()=>Te.parseTranslateArgs(...C),"translate",N=>N[ul](...C),N=>[Se.createVNode(Se.Text,null,N,0)],N=>D.isArray(N))}function R(...C){return Z(N=>Te.number(N,...C),()=>Te.parseNumberArgs(...C),"number format",N=>N[dl](...C),()=>[],N=>D.isString(N)||D.isArray(N))}function X(...C){return Z(N=>Te.datetime(N,...C),()=>Te.parseDateTimeArgs(...C),"datetime format",N=>N[fl](...C),()=>[],N=>D.isString(N)||D.isArray(N))}function B(C){E=C,m.pluralRules=E}function te(C,N){const ne=D.isString(N)?N:s.value,G=y(ne);return Te.resolveValue(G,C)!==null}function ge(C){let N=null;const ne=Te.getLocaleChain(m,i.value,s.value);for(let G=0;G{r&&(s.value=C,m.locale=C,Te.updateFallbackLocale(m,s.value,i.value))}),Se.watch(t.fallbackLocale,C=>{r&&(i.value=C,m.fallbackLocale=C,Te.updateFallbackLocale(m,s.value,i.value))})),{id:dd,locale:L,fallbackLocale:H,get inheritLocale(){return r},set inheritLocale(C){r=C,C&&t&&(s.value=t.locale.value,i.value=t.fallbackLocale.value,Te.updateFallbackLocale(m,s.value,i.value))},get availableLocales(){return Object.keys(o.value).sort()},messages:j,datetimeFormats:Y,numberFormats:J,get modifiers(){return v},get pluralRules(){return E||{}},get isGlobal(){return n},get missingWarn(){return c},set missingWarn(C){c=C,m.missingWarn=c},get fallbackWarn(){return u},set fallbackWarn(C){u=C,m.fallbackWarn=u},get fallbackRoot(){return f},set fallbackRoot(C){f=C},get fallbackFormat(){return d},set fallbackFormat(C){d=C,m.fallbackFormat=d},get warnHtmlMessage(){return _},set warnHtmlMessage(C){_=C,m.warnHtmlMessage=C},get escapeParameter(){return p},set escapeParameter(C){p=C,m.escapeParameter=C},t:ee,rt:oe,d:le,n:ue,te,tm:be,getLocaleMessage:y,setLocaleMessage:w,mergeLocaleMessage:h,getDateTimeFormat:b,setDateTimeFormat:O,mergeDateTimeFormat:I,getNumberFormat:M,setNumberFormat:W,mergeNumberFormat:Q,getPostTranslationHandler:F,setPostTranslationHandler:re,getMissingHandler:x,setMissingHandler:P,[ul]:Ee,[dl]:R,[fl]:X,[Jp]:B,[Qp]:e.__injectWithOption}}function B$(e){const t=D.isString(e.locale)?e.locale:"en-US",n=D.isString(e.fallbackLocale)||D.isArray(e.fallbackLocale)||D.isPlainObject(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,r=D.isFunction(e.missing)?e.missing:void 0,s=D.isBoolean(e.silentTranslationWarn)||D.isRegExp(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,i=D.isBoolean(e.silentFallbackWarn)||D.isRegExp(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,o=D.isBoolean(e.fallbackRoot)?e.fallbackRoot:!0,a=!!e.formatFallbackMessages,l=D.isPlainObject(e.modifiers)?e.modifiers:{},c=e.pluralizationRules,u=D.isFunction(e.postTranslation)?e.postTranslation:void 0,f=D.isString(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,d=!!e.escapeParameterHtml,g=D.isBoolean(e.sync)?e.sync:!0;let T=e.messages;if(D.isPlainObject(e.sharedMessages)){const k=e.sharedMessages;T=Object.keys(k).reduce((L,H)=>{const j=L[H]||(L[H]={});return D.assign(j,k[H]),L},T||{})}const{__i18n:A,__root:_,__injectWithOption:p}=e,v=e.datetimeFormats,E=e.numberFormats,m=e.flatJson;return{locale:t,fallbackLocale:n,messages:T,flatJson:m,datetimeFormats:v,numberFormats:E,missing:r,missingWarn:s,fallbackWarn:i,fallbackRoot:o,fallbackFormat:a,modifiers:l,pluralRules:c,postTranslation:u,warnHtmlMessage:f,escapeParameter:d,inheritLocale:g,__i18n:A,__root:_,__injectWithOption:p}}function hl(e={}){const t=Oc(B$(e)),n={id:t.id,get locale(){return t.locale.value},set locale(r){t.locale.value=r},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(r){t.fallbackLocale.value=r},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get formatter(){return{interpolate(){return[]}}},set formatter(r){},get missing(){return t.getMissingHandler()},set missing(r){t.setMissingHandler(r)},get silentTranslationWarn(){return D.isBoolean(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(r){t.missingWarn=D.isBoolean(r)?!r:r},get silentFallbackWarn(){return D.isBoolean(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(r){t.fallbackWarn=D.isBoolean(r)?!r:r},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(r){t.fallbackFormat=r},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(r){t.setPostTranslationHandler(r)},get sync(){return t.inheritLocale},set sync(r){t.inheritLocale=r},get warnHtmlInMessage(){return t.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(r){t.warnHtmlMessage=r!=="off"},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(r){t.escapeParameter=r},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(r){},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...r){const[s,i,o]=r,a={};let l=null,c=null;if(!D.isString(s))throw Xe(15);const u=s;return D.isString(i)?a.locale=i:D.isArray(i)?l=i:D.isPlainObject(i)&&(c=i),D.isArray(o)?l=o:D.isPlainObject(o)&&(c=o),t.t(u,l||c||{},a)},rt(...r){return t.rt(...r)},tc(...r){const[s,i,o]=r,a={plural:1};let l=null,c=null;if(!D.isString(s))throw Xe(15);const u=s;return D.isString(i)?a.locale=i:D.isNumber(i)?a.plural=i:D.isArray(i)?l=i:D.isPlainObject(i)&&(c=i),D.isString(o)?a.locale=o:D.isArray(o)?l=o:D.isPlainObject(o)&&(c=o),t.t(u,l||c||{},a)},te(r,s){return t.te(r,s)},tm(r){return t.tm(r)},getLocaleMessage(r){return t.getLocaleMessage(r)},setLocaleMessage(r,s){t.setLocaleMessage(r,s)},mergeLocaleMessage(r,s){t.mergeLocaleMessage(r,s)},d(...r){return t.d(...r)},getDateTimeFormat(r){return t.getDateTimeFormat(r)},setDateTimeFormat(r,s){t.setDateTimeFormat(r,s)},mergeDateTimeFormat(r,s){t.mergeDateTimeFormat(r,s)},n(...r){return t.n(...r)},getNumberFormat(r){return t.getNumberFormat(r)},setNumberFormat(r,s){t.setNumberFormat(r,s)},mergeNumberFormat(r,s){t.mergeNumberFormat(r,s)},getChoiceIndex(r,s){return-1},__onComponentInstanceCreated(r){const{componentInstanceCreatedListener:s}=e;s&&s(r,n)}};return n}const Lc={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}},ml={name:"i18n-t",props:D.assign({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>D.isNumber(e)||!isNaN(e)}},Lc),setup(e,t){const{slots:n,attrs:r}=t,s=e.i18n||Jo({useScope:e.scope,__useComponent:!0}),i=Object.keys(n).filter(o=>o!=="_");return()=>{const o={};e.locale&&(o.locale=e.locale),e.plural!==void 0&&(o.plural=D.isString(e.plural)?+e.plural:e.plural);const a=j$(t,i),l=s[ul](e.keypath,a,o),c=D.assign({},r);return D.isString(e.tag)||D.isObject(e.tag)?Se.h(e.tag,c,l):Se.h(Se.Fragment,c,l)}}};function j$({slots:e},t){return t.length===1&&t[0]==="default"?e.default?e.default():[]:t.reduce((n,r)=>{const s=e[r];return s&&(n[r]=s()),n},{})}function Zp(e,t,n,r){const{slots:s,attrs:i}=t;return()=>{const o={part:!0};let a={};e.locale&&(o.locale=e.locale),D.isString(e.format)?o.key=e.format:D.isObject(e.format)&&(D.isString(e.format.key)&&(o.key=e.format.key),a=Object.keys(e.format).reduce((f,d)=>n.includes(d)?D.assign({},f,{[d]:e.format[d]}):f,{}));const l=r(e.value,o,a);let c=[o.key];D.isArray(l)?c=l.map((f,d)=>{const g=s[f.type];return g?g({[f.type]:f.value,index:d,parts:l}):[f.value]}):D.isString(l)&&(c=[l]);const u=D.assign({},i);return D.isString(e.tag)||D.isObject(e.tag)?Se.h(e.tag,u,c):Se.h(Se.Fragment,u,c)}}const V$=["localeMatcher","style","unit","unitDisplay","currency","currencyDisplay","useGrouping","numberingSystem","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits","notation","formatMatcher"],pl={name:"i18n-n",props:D.assign({value:{type:Number,required:!0},format:{type:[String,Object]}},Lc),setup(e,t){const n=e.i18n||Jo({useScope:"parent",__useComponent:!0});return Zp(e,t,V$,(...r)=>n[dl](...r))}},U$=["dateStyle","timeStyle","fractionalSecondDigits","calendar","dayPeriod","numberingSystem","localeMatcher","timeZone","hour12","hourCycle","formatMatcher","weekday","era","year","month","day","hour","minute","second","timeZoneName"],gl={name:"i18n-d",props:D.assign({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},Lc),setup(e,t){const n=e.i18n||Jo({useScope:"parent",__useComponent:!0});return Zp(e,t,U$,(...r)=>n[fl](...r))}};function W$(e,t){const n=e;if(e.mode==="composition")return n.__getInstance(t)||e.global;{const r=n.__getInstance(t);return r!=null?r.__composer:e.global.__composer}}function eg(e){const t=(n,{instance:r,value:s,modifiers:i})=>{if(!r||!r.$)throw Xe(22);const o=W$(e,r.$),a=z$(s);n.textContent=o.t(...K$(a))};return{beforeMount:t,beforeUpdate:t}}function z$(e){if(D.isString(e))return{path:e};if(D.isPlainObject(e)){if(!("path"in e))throw Xe(19,"path");return e}else throw Xe(20)}function K$(e){const{path:t,locale:n,args:r,choice:s,plural:i}=e,o={},a=r||{};return D.isString(n)&&(o.locale=n),D.isNumber(s)&&(o.plural=s),D.isNumber(i)&&(o.plural=i),[t,a,o]}function Y$(e,t,...n){const r=D.isPlainObject(n[0])?n[0]:{},s=!!r.useI18nComponentName;(D.isBoolean(r.globalInstall)?r.globalInstall:!0)&&(e.component(s?"i18n":ml.name,ml),e.component(pl.name,pl),e.component(gl.name,gl)),e.directive("t",eg(t))}function q$(e,t,n){return{beforeCreate(){const r=Se.getCurrentInstance();if(!r)throw Xe(22);const s=this.$options;if(s.i18n){const i=s.i18n;s.__i18n&&(i.__i18n=s.__i18n),i.__root=t,this===this.$root?this.$i18n=md(e,i):(i.__injectWithOption=!0,this.$i18n=hl(i))}else s.__i18n?this===this.$root?this.$i18n=md(e,s):this.$i18n=hl({__i18n:s.__i18n,__injectWithOption:!0,__root:t}):this.$i18n=e;e.__onComponentInstanceCreated(this.$i18n),n.__setInstance(r,this.$i18n),this.$t=(...i)=>this.$i18n.t(...i),this.$rt=(...i)=>this.$i18n.rt(...i),this.$tc=(...i)=>this.$i18n.tc(...i),this.$te=(i,o)=>this.$i18n.te(i,o),this.$d=(...i)=>this.$i18n.d(...i),this.$n=(...i)=>this.$i18n.n(...i),this.$tm=i=>this.$i18n.tm(i)},mounted(){},beforeUnmount(){const r=Se.getCurrentInstance();if(!r)throw Xe(22);delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,n.__deleteInstance(r),delete this.$i18n}}}function md(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[Jp](t.pluralizationRules||e.pluralizationRules);const n=kc(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach(r=>e.mergeLocaleMessage(r,n[r])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(r=>e.mergeDateTimeFormat(r,t.datetimeFormats[r])),t.numberFormats&&Object.keys(t.numberFormats).forEach(r=>e.mergeNumberFormat(r,t.numberFormats[r])),e}function G$(e={}){const t=D.isBoolean(e.legacy)?e.legacy:!0,n=!!e.globalInjection,r=new Map,s=t?hl(e):Oc(e),i=D.makeSymbol(""),o={get mode(){return t?"legacy":"composition"},async install(a,...l){a.__VUE_I18N_SYMBOL__=i,a.provide(a.__VUE_I18N_SYMBOL__,o),!t&&n&&ex(a,o.global),Y$(a,o,...l),t&&a.mixin(q$(s,s.__composer,o))},get global(){return s},__instances:r,__getInstance(a){return r.get(a)||null},__setInstance(a,l){r.set(a,l)},__deleteInstance(a){r.delete(a)}};return o}function Jo(e={}){const t=Se.getCurrentInstance();if(t==null)throw Xe(16);if(!t.appContext.app.__VUE_I18N_SYMBOL__)throw Xe(17);const n=Se.inject(t.appContext.app.__VUE_I18N_SYMBOL__);if(!n)throw Xe(22);const r=n.mode==="composition"?n.global:n.global.__composer,s=D.isEmptyObject(e)?"__i18n"in t.type?"local":"global":e.useScope?e.useScope:"local";if(s==="global"){let a=D.isObject(e.messages)?e.messages:{};"__i18nGlobal"in t.type&&(a=kc(r.locale.value,{messages:a,__i18n:t.type.__i18nGlobal}));const l=Object.keys(a);if(l.length&&l.forEach(c=>{r.mergeLocaleMessage(c,a[c])}),D.isObject(e.datetimeFormats)){const c=Object.keys(e.datetimeFormats);c.length&&c.forEach(u=>{r.mergeDateTimeFormat(u,e.datetimeFormats[u])})}if(D.isObject(e.numberFormats)){const c=Object.keys(e.numberFormats);c.length&&c.forEach(u=>{r.mergeNumberFormat(u,e.numberFormats[u])})}return r}if(s==="parent"){let a=X$(n,t,e.__useComponent);return a==null&&(a=r),a}if(n.mode==="legacy")throw Xe(18);const i=n;let o=i.__getInstance(t);if(o==null){const a=t.type,l=D.assign({},e);a.__i18n&&(l.__i18n=a.__i18n),r&&(l.__root=r),o=Oc(l),J$(i,t),i.__setInstance(t,o)}return o}function X$(e,t,n=!1){let r=null;const s=t.root;let i=t.parent;for(;i!=null;){const o=e;if(e.mode==="composition")r=o.__getInstance(i);else{const a=o.__getInstance(i);a!=null&&(r=a.__composer),n&&r&&!r[Qp]&&(r=null)}if(r!=null||s===i)break;i=i.parent}return r}function J$(e,t,n){Se.onMounted(()=>{},t),Se.onUnmounted(()=>{e.__deleteInstance(t)},t)}const Q$=["locale","fallbackLocale","availableLocales"],Z$=["t","rt","d","n","tm"];function ex(e,t){const n=Object.create(null);Q$.forEach(r=>{const s=Object.getOwnPropertyDescriptor(t,r);if(!s)throw Xe(22);const i=Se.isRef(s.value)?{get(){return s.value.value},set(o){s.value.value=o}}:{get(){return s.get&&s.get()}};Object.defineProperty(n,r,i)}),e.config.globalProperties.$i18n=n,Z$.forEach(r=>{const s=Object.getOwnPropertyDescriptor(t,r);if(!s||!s.value)throw Xe(22);Object.defineProperty(e.config.globalProperties,`$${r}`,s)})}Te.registerMessageCompiler(Te.compileToFunction);mn.DatetimeFormat=gl;mn.NumberFormat=pl;mn.Translation=ml;mn.VERSION=Xp;mn.createI18n=G$;mn.useI18n=Jo;mn.vTDirective=eg;Op.exports=mn;var tx={header:{docs:"Dokumentation",blog:"Blog",github:"GitHub",login:"Fahrzeug Logins",about:"\xDCber evcc"},footer:{version:{availableShort:"Update",availableLong:"Update verf\xFCgbar",modalTitle:"Update verf\xFCgbar",modalUpdateStarted:"Nach der Aktualisierung wird evcc neu gestartet.",modalInstalledVersion:"Aktuell installierte Version",modalNoReleaseNotes:"Keine Releasenotes verf\xFCgbar. Mehr Informationen zur neuen Version findest du hier:",modalCancel:"Abbrechen",modalUpdate:"Aktualisieren",modalUpdateNow:"Jetzt aktualisieren",modalDownload:"Download",modalUpdateStatusStart:"Aktualisierung gestartet: ",modalUpdateStatusFailed:"Aktualisierung nicht m\xF6glich: "},savings:{footerShort:"{percent}% Sonne",footerLong:"{percent}% Sonnenenergie",modalTitlePartOne:"{total} kWh geladen",modalTitlePartTwo:"{percent}% Sonne",modalChartGrid:"Netz {grid} kWh",modalChartSelf:"Sonne {self} kWh",modalSavingsPrice:"Effektiver Energiepreis",modalSavingsTotal:"Ersparnis gegen\xFCber Netzbezug",modalExplaination:"Berechnung",modalExplainationGrid:"Netz {gridPrice}",modalExplainationFeedIn:"Einspeisung {feedInPrice}",modalServerStart:"Seit Serverstart {since}.",modalNoData:"noch nicht geladen"},sponsor:{thanks:"Danke f\xFCr deine Unterst\xFCtzung, {sponsor}! Das hilft uns bei der Weiterentwicklung.",confetti:"Lust auf etwas Sponsor-Konfetti?",supportUs:"Wir m\xF6chten effizientes Zuhause-Laden zum Standard f\xFCr m\xF6glichst viele Menschen machen. Helfe uns indem du die Weiterentwicklung und Pflege des Projekts unterst\xFCtzt.",sticker:"...oder evcc Sticker?",confettiPromise:"Es gibt auch Sticker und digitales Konfetti ;)",becomeSponsor:"Werde jetzt GitHub Sponsor"}},notifications:{modalTitle:"Meldungen",dismissAll:"Meldungen entfernen"},main:{energyflow:{noEnergy:"Kein Energiefluss",homePower:"Verbrauch",pvProduction:"Erzeugung",loadpoints:"Ladepunkt | Ladepunkt | {count} Ladepunkte",battery:"Batterie",batteryCharge:"Batterie laden",batteryDischarge:"Batterie entladen",gridImport:"Netzbezug",selfConsumption:"Eigenverbrauch",pvExport:"Einspeisung"},mode:{offShort:"Aus",offLong:"Aus",nowShort:"Sofort",nowLong:"Sofort",minpvShort:"Min",minpvLong:"Min + PV",pvShort:"PV",pvLong:"PV",fast:"Schnell",cheap:"G\xFCnstig"},loadpoint:{fallbackName:"Ladepunkt",remoteDisabledSoft:"{source}: Adaptives PV-Laden deaktiviert",remoteDisabledHard:"{source}: Deaktiviert",power:"Leistung",charged:"Geladen",duration:"Dauer",remaining:"Restzeit"},vehicles:"Parkplatz",vehicle:{fallbackName:"Fahrzeug",vehicleSoC:"Ladestand",targetSoC:"Ladeziel",noVehicle:"Kein Fahrzeug"},vehicleSoC:{disconnected:"getrennt",charging:"l\xE4dt",ready:"bereit",connected:"verbunden"},vehicleStatus:{minCharge:"Mindestladung bis {soc}%.",waitForVehicle:"Ladebereit. Warte auf Fahrzeug.",charging:"Ladevorgang aktiv.",targetChargePlanned:"Zielladen geplant. Ladung startet {time} Uhr.",targetChargeWaitForVehicle:"Zielladen bereit. Warte auf Fahrzeug.",targetChargeActive:"Zielladen aktiv.",connected:"Verbunden.",pvDisable:"Zu wenig \xDCberschuss. Pausiere in {remaining}.",pvEnable:"\xDCberschuss verf\xFCgbar. Starte in {remaining}.",scale1p:"Reduziere auf einphasig in {remaining}.",scale3p:"Erh\xF6he auf dreiphasig in {remaining}.",disconnected:"Nicht verbunden.",unknown:""},provider:{login:"anmelden",logout:"abmelden"},targetCharge:{title:"Zielzeit",inactiveLabel:"Zielzeit",activeLabel:"{time}",modalTitle:"Zielzeit festlegen",setTargetTime:"keine",description:"Wann soll das Fahrzeug auf {targetSoC}% geladen sein?",today:"heute",tomorrow:"morgen",targetIsInThePast:"Zeitpunkt liegt in der Vergangenheit.",remove:"Entfernen",activate:"Aktivieren",experimentalLabel:"Experimentell",experimentalText:` + */Object.defineProperty(mn,"__esModule",{value:!0});var Te=D$,Se=F$,D=H$;const Xp="9.1.9";function Xe(e,...t){return Te.createCompileError(e,null,void 0)}const ul=D.makeSymbol("__transrateVNode"),fl=D.makeSymbol("__datetimeParts"),dl=D.makeSymbol("__numberParts");D.makeSymbol("__enableEmitter");D.makeSymbol("__disableEmitter");const Jp=D.makeSymbol("__setPluralRules");D.makeSymbol("__intlifyMeta");const Qp=D.makeSymbol("__injectWithOption");let dd=0;function hd(e){return(t,n,r,s)=>e(n,r,Se.getCurrentInstance()||void 0,s)}function kc(e,t){const{messages:n,__i18n:r}=t,s=D.isPlainObject(n)?n:D.isArray(r)?{}:{[e]:{}};if(D.isArray(r)&&r.forEach(({locale:i,resource:o})=>{i?(s[i]=s[i]||{},io(o,s[i])):io(o,s)}),t.flatJson)for(const i in s)D.hasOwn(s,i)&&Te.handleFlatJson(s[i]);return s}const $i=e=>!D.isObject(e)||D.isArray(e);function io(e,t){if($i(e)||$i(t))throw Xe(20);for(const n in e)D.hasOwn(e,n)&&($i(e[n])||$i(t[n])?t[n]=e[n]:io(e[n],t[n]))}function Oc(e={}){const{__root:t}=e,n=t===void 0;let r=D.isBoolean(e.inheritLocale)?e.inheritLocale:!0;const s=Se.ref(t&&r?t.locale.value:D.isString(e.locale)?e.locale:"en-US"),i=Se.ref(t&&r?t.fallbackLocale.value:D.isString(e.fallbackLocale)||D.isArray(e.fallbackLocale)||D.isPlainObject(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:s.value),o=Se.ref(kc(s.value,e)),a=Se.ref(D.isPlainObject(e.datetimeFormats)?e.datetimeFormats:{[s.value]:{}}),l=Se.ref(D.isPlainObject(e.numberFormats)?e.numberFormats:{[s.value]:{}});let c=t?t.missingWarn:D.isBoolean(e.missingWarn)||D.isRegExp(e.missingWarn)?e.missingWarn:!0,u=t?t.fallbackWarn:D.isBoolean(e.fallbackWarn)||D.isRegExp(e.fallbackWarn)?e.fallbackWarn:!0,f=t?t.fallbackRoot:D.isBoolean(e.fallbackRoot)?e.fallbackRoot:!0,d=!!e.fallbackFormat,g=D.isFunction(e.missing)?e.missing:null,T=D.isFunction(e.missing)?hd(e.missing):null,A=D.isFunction(e.postTranslation)?e.postTranslation:null,_=D.isBoolean(e.warnHtmlMessage)?e.warnHtmlMessage:!0,p=!!e.escapeParameter;const v=t?t.modifiers:D.isPlainObject(e.modifiers)?e.modifiers:{};let E=e.pluralRules||t&&t.pluralRules,m;function k(){return Te.createCoreContext({version:Xp,locale:s.value,fallbackLocale:i.value,messages:o.value,datetimeFormats:a.value,numberFormats:l.value,modifiers:v,pluralRules:E,missing:T===null?void 0:T,missingWarn:c,fallbackWarn:u,fallbackFormat:d,unresolving:!0,postTranslation:A===null?void 0:A,warnHtmlMessage:_,escapeParameter:p,__datetimeFormatters:D.isPlainObject(m)?m.__datetimeFormatters:void 0,__numberFormatters:D.isPlainObject(m)?m.__numberFormatters:void 0,__v_emitter:D.isPlainObject(m)?m.__v_emitter:void 0,__meta:{framework:"vue"}})}m=k(),Te.updateFallbackLocale(m,s.value,i.value);function $(){return[s.value,i.value,o.value,a.value,l.value]}const L=Se.computed({get:()=>s.value,set:C=>{s.value=C,m.locale=s.value}}),H=Se.computed({get:()=>i.value,set:C=>{i.value=C,m.fallbackLocale=i.value,Te.updateFallbackLocale(m,s.value,C)}}),j=Se.computed(()=>o.value),Y=Se.computed(()=>a.value),J=Se.computed(()=>l.value);function F(){return D.isFunction(A)?A:null}function re(C){A=C,m.postTranslation=C}function x(){return g}function P(C){C!==null&&(T=hd(C)),g=C,m.missing=T}function Z(C,N,ne,G,ie,ce){$();let me;if(me=C(m),D.isNumber(me)&&me===Te.NOT_REOSLVED){const[ke,Le]=N();return t&&f?G(t):ie(ke)}else{if(ce(me))return me;throw Xe(14)}}function ee(...C){return Z(N=>Te.translate(N,...C),()=>Te.parseTranslateArgs(...C),"translate",N=>N.t(...C),N=>N,N=>D.isString(N))}function oe(...C){const[N,ne,G]=C;if(G&&!D.isObject(G))throw Xe(15);return ee(N,ne,D.assign({resolvedMessage:!0},G||{}))}function le(...C){return Z(N=>Te.datetime(N,...C),()=>Te.parseDateTimeArgs(...C),"datetime format",N=>N.d(...C),()=>Te.MISSING_RESOLVE_VALUE,N=>D.isString(N))}function ue(...C){return Z(N=>Te.number(N,...C),()=>Te.parseNumberArgs(...C),"number format",N=>N.n(...C),()=>Te.MISSING_RESOLVE_VALUE,N=>D.isString(N))}function pe(C){return C.map(N=>D.isString(N)?Se.createVNode(Se.Text,null,N,0):N)}const Oe={normalize:pe,interpolate:C=>C,type:"vnode"};function Ee(...C){return Z(N=>{let ne;const G=N;try{G.processor=Oe,ne=Te.translate(G,...C)}finally{G.processor=null}return ne},()=>Te.parseTranslateArgs(...C),"translate",N=>N[ul](...C),N=>[Se.createVNode(Se.Text,null,N,0)],N=>D.isArray(N))}function R(...C){return Z(N=>Te.number(N,...C),()=>Te.parseNumberArgs(...C),"number format",N=>N[dl](...C),()=>[],N=>D.isString(N)||D.isArray(N))}function X(...C){return Z(N=>Te.datetime(N,...C),()=>Te.parseDateTimeArgs(...C),"datetime format",N=>N[fl](...C),()=>[],N=>D.isString(N)||D.isArray(N))}function B(C){E=C,m.pluralRules=E}function te(C,N){const ne=D.isString(N)?N:s.value,G=y(ne);return Te.resolveValue(G,C)!==null}function ge(C){let N=null;const ne=Te.getLocaleChain(m,i.value,s.value);for(let G=0;G{r&&(s.value=C,m.locale=C,Te.updateFallbackLocale(m,s.value,i.value))}),Se.watch(t.fallbackLocale,C=>{r&&(i.value=C,m.fallbackLocale=C,Te.updateFallbackLocale(m,s.value,i.value))})),{id:dd,locale:L,fallbackLocale:H,get inheritLocale(){return r},set inheritLocale(C){r=C,C&&t&&(s.value=t.locale.value,i.value=t.fallbackLocale.value,Te.updateFallbackLocale(m,s.value,i.value))},get availableLocales(){return Object.keys(o.value).sort()},messages:j,datetimeFormats:Y,numberFormats:J,get modifiers(){return v},get pluralRules(){return E||{}},get isGlobal(){return n},get missingWarn(){return c},set missingWarn(C){c=C,m.missingWarn=c},get fallbackWarn(){return u},set fallbackWarn(C){u=C,m.fallbackWarn=u},get fallbackRoot(){return f},set fallbackRoot(C){f=C},get fallbackFormat(){return d},set fallbackFormat(C){d=C,m.fallbackFormat=d},get warnHtmlMessage(){return _},set warnHtmlMessage(C){_=C,m.warnHtmlMessage=C},get escapeParameter(){return p},set escapeParameter(C){p=C,m.escapeParameter=C},t:ee,rt:oe,d:le,n:ue,te,tm:be,getLocaleMessage:y,setLocaleMessage:w,mergeLocaleMessage:h,getDateTimeFormat:b,setDateTimeFormat:O,mergeDateTimeFormat:I,getNumberFormat:M,setNumberFormat:W,mergeNumberFormat:Q,getPostTranslationHandler:F,setPostTranslationHandler:re,getMissingHandler:x,setMissingHandler:P,[ul]:Ee,[dl]:R,[fl]:X,[Jp]:B,[Qp]:e.__injectWithOption}}function B$(e){const t=D.isString(e.locale)?e.locale:"en-US",n=D.isString(e.fallbackLocale)||D.isArray(e.fallbackLocale)||D.isPlainObject(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,r=D.isFunction(e.missing)?e.missing:void 0,s=D.isBoolean(e.silentTranslationWarn)||D.isRegExp(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,i=D.isBoolean(e.silentFallbackWarn)||D.isRegExp(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,o=D.isBoolean(e.fallbackRoot)?e.fallbackRoot:!0,a=!!e.formatFallbackMessages,l=D.isPlainObject(e.modifiers)?e.modifiers:{},c=e.pluralizationRules,u=D.isFunction(e.postTranslation)?e.postTranslation:void 0,f=D.isString(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,d=!!e.escapeParameterHtml,g=D.isBoolean(e.sync)?e.sync:!0;let T=e.messages;if(D.isPlainObject(e.sharedMessages)){const k=e.sharedMessages;T=Object.keys(k).reduce((L,H)=>{const j=L[H]||(L[H]={});return D.assign(j,k[H]),L},T||{})}const{__i18n:A,__root:_,__injectWithOption:p}=e,v=e.datetimeFormats,E=e.numberFormats,m=e.flatJson;return{locale:t,fallbackLocale:n,messages:T,flatJson:m,datetimeFormats:v,numberFormats:E,missing:r,missingWarn:s,fallbackWarn:i,fallbackRoot:o,fallbackFormat:a,modifiers:l,pluralRules:c,postTranslation:u,warnHtmlMessage:f,escapeParameter:d,inheritLocale:g,__i18n:A,__root:_,__injectWithOption:p}}function hl(e={}){const t=Oc(B$(e)),n={id:t.id,get locale(){return t.locale.value},set locale(r){t.locale.value=r},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(r){t.fallbackLocale.value=r},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get formatter(){return{interpolate(){return[]}}},set formatter(r){},get missing(){return t.getMissingHandler()},set missing(r){t.setMissingHandler(r)},get silentTranslationWarn(){return D.isBoolean(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(r){t.missingWarn=D.isBoolean(r)?!r:r},get silentFallbackWarn(){return D.isBoolean(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(r){t.fallbackWarn=D.isBoolean(r)?!r:r},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(r){t.fallbackFormat=r},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(r){t.setPostTranslationHandler(r)},get sync(){return t.inheritLocale},set sync(r){t.inheritLocale=r},get warnHtmlInMessage(){return t.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(r){t.warnHtmlMessage=r!=="off"},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(r){t.escapeParameter=r},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(r){},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...r){const[s,i,o]=r,a={};let l=null,c=null;if(!D.isString(s))throw Xe(15);const u=s;return D.isString(i)?a.locale=i:D.isArray(i)?l=i:D.isPlainObject(i)&&(c=i),D.isArray(o)?l=o:D.isPlainObject(o)&&(c=o),t.t(u,l||c||{},a)},rt(...r){return t.rt(...r)},tc(...r){const[s,i,o]=r,a={plural:1};let l=null,c=null;if(!D.isString(s))throw Xe(15);const u=s;return D.isString(i)?a.locale=i:D.isNumber(i)?a.plural=i:D.isArray(i)?l=i:D.isPlainObject(i)&&(c=i),D.isString(o)?a.locale=o:D.isArray(o)?l=o:D.isPlainObject(o)&&(c=o),t.t(u,l||c||{},a)},te(r,s){return t.te(r,s)},tm(r){return t.tm(r)},getLocaleMessage(r){return t.getLocaleMessage(r)},setLocaleMessage(r,s){t.setLocaleMessage(r,s)},mergeLocaleMessage(r,s){t.mergeLocaleMessage(r,s)},d(...r){return t.d(...r)},getDateTimeFormat(r){return t.getDateTimeFormat(r)},setDateTimeFormat(r,s){t.setDateTimeFormat(r,s)},mergeDateTimeFormat(r,s){t.mergeDateTimeFormat(r,s)},n(...r){return t.n(...r)},getNumberFormat(r){return t.getNumberFormat(r)},setNumberFormat(r,s){t.setNumberFormat(r,s)},mergeNumberFormat(r,s){t.mergeNumberFormat(r,s)},getChoiceIndex(r,s){return-1},__onComponentInstanceCreated(r){const{componentInstanceCreatedListener:s}=e;s&&s(r,n)}};return n}const Lc={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}},ml={name:"i18n-t",props:D.assign({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>D.isNumber(e)||!isNaN(e)}},Lc),setup(e,t){const{slots:n,attrs:r}=t,s=e.i18n||Jo({useScope:e.scope,__useComponent:!0}),i=Object.keys(n).filter(o=>o!=="_");return()=>{const o={};e.locale&&(o.locale=e.locale),e.plural!==void 0&&(o.plural=D.isString(e.plural)?+e.plural:e.plural);const a=j$(t,i),l=s[ul](e.keypath,a,o),c=D.assign({},r);return D.isString(e.tag)||D.isObject(e.tag)?Se.h(e.tag,c,l):Se.h(Se.Fragment,c,l)}}};function j$({slots:e},t){return t.length===1&&t[0]==="default"?e.default?e.default():[]:t.reduce((n,r)=>{const s=e[r];return s&&(n[r]=s()),n},{})}function Zp(e,t,n,r){const{slots:s,attrs:i}=t;return()=>{const o={part:!0};let a={};e.locale&&(o.locale=e.locale),D.isString(e.format)?o.key=e.format:D.isObject(e.format)&&(D.isString(e.format.key)&&(o.key=e.format.key),a=Object.keys(e.format).reduce((f,d)=>n.includes(d)?D.assign({},f,{[d]:e.format[d]}):f,{}));const l=r(e.value,o,a);let c=[o.key];D.isArray(l)?c=l.map((f,d)=>{const g=s[f.type];return g?g({[f.type]:f.value,index:d,parts:l}):[f.value]}):D.isString(l)&&(c=[l]);const u=D.assign({},i);return D.isString(e.tag)||D.isObject(e.tag)?Se.h(e.tag,u,c):Se.h(Se.Fragment,u,c)}}const V$=["localeMatcher","style","unit","unitDisplay","currency","currencyDisplay","useGrouping","numberingSystem","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits","notation","formatMatcher"],pl={name:"i18n-n",props:D.assign({value:{type:Number,required:!0},format:{type:[String,Object]}},Lc),setup(e,t){const n=e.i18n||Jo({useScope:"parent",__useComponent:!0});return Zp(e,t,V$,(...r)=>n[dl](...r))}},U$=["dateStyle","timeStyle","fractionalSecondDigits","calendar","dayPeriod","numberingSystem","localeMatcher","timeZone","hour12","hourCycle","formatMatcher","weekday","era","year","month","day","hour","minute","second","timeZoneName"],gl={name:"i18n-d",props:D.assign({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},Lc),setup(e,t){const n=e.i18n||Jo({useScope:"parent",__useComponent:!0});return Zp(e,t,U$,(...r)=>n[fl](...r))}};function W$(e,t){const n=e;if(e.mode==="composition")return n.__getInstance(t)||e.global;{const r=n.__getInstance(t);return r!=null?r.__composer:e.global.__composer}}function eg(e){const t=(n,{instance:r,value:s,modifiers:i})=>{if(!r||!r.$)throw Xe(22);const o=W$(e,r.$),a=z$(s);n.textContent=o.t(...K$(a))};return{beforeMount:t,beforeUpdate:t}}function z$(e){if(D.isString(e))return{path:e};if(D.isPlainObject(e)){if(!("path"in e))throw Xe(19,"path");return e}else throw Xe(20)}function K$(e){const{path:t,locale:n,args:r,choice:s,plural:i}=e,o={},a=r||{};return D.isString(n)&&(o.locale=n),D.isNumber(s)&&(o.plural=s),D.isNumber(i)&&(o.plural=i),[t,a,o]}function Y$(e,t,...n){const r=D.isPlainObject(n[0])?n[0]:{},s=!!r.useI18nComponentName;(D.isBoolean(r.globalInstall)?r.globalInstall:!0)&&(e.component(s?"i18n":ml.name,ml),e.component(pl.name,pl),e.component(gl.name,gl)),e.directive("t",eg(t))}function q$(e,t,n){return{beforeCreate(){const r=Se.getCurrentInstance();if(!r)throw Xe(22);const s=this.$options;if(s.i18n){const i=s.i18n;s.__i18n&&(i.__i18n=s.__i18n),i.__root=t,this===this.$root?this.$i18n=md(e,i):(i.__injectWithOption=!0,this.$i18n=hl(i))}else s.__i18n?this===this.$root?this.$i18n=md(e,s):this.$i18n=hl({__i18n:s.__i18n,__injectWithOption:!0,__root:t}):this.$i18n=e;e.__onComponentInstanceCreated(this.$i18n),n.__setInstance(r,this.$i18n),this.$t=(...i)=>this.$i18n.t(...i),this.$rt=(...i)=>this.$i18n.rt(...i),this.$tc=(...i)=>this.$i18n.tc(...i),this.$te=(i,o)=>this.$i18n.te(i,o),this.$d=(...i)=>this.$i18n.d(...i),this.$n=(...i)=>this.$i18n.n(...i),this.$tm=i=>this.$i18n.tm(i)},mounted(){},beforeUnmount(){const r=Se.getCurrentInstance();if(!r)throw Xe(22);delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,n.__deleteInstance(r),delete this.$i18n}}}function md(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[Jp](t.pluralizationRules||e.pluralizationRules);const n=kc(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach(r=>e.mergeLocaleMessage(r,n[r])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(r=>e.mergeDateTimeFormat(r,t.datetimeFormats[r])),t.numberFormats&&Object.keys(t.numberFormats).forEach(r=>e.mergeNumberFormat(r,t.numberFormats[r])),e}function G$(e={}){const t=D.isBoolean(e.legacy)?e.legacy:!0,n=!!e.globalInjection,r=new Map,s=t?hl(e):Oc(e),i=D.makeSymbol(""),o={get mode(){return t?"legacy":"composition"},async install(a,...l){a.__VUE_I18N_SYMBOL__=i,a.provide(a.__VUE_I18N_SYMBOL__,o),!t&&n&&ex(a,o.global),Y$(a,o,...l),t&&a.mixin(q$(s,s.__composer,o))},get global(){return s},__instances:r,__getInstance(a){return r.get(a)||null},__setInstance(a,l){r.set(a,l)},__deleteInstance(a){r.delete(a)}};return o}function Jo(e={}){const t=Se.getCurrentInstance();if(t==null)throw Xe(16);if(!t.appContext.app.__VUE_I18N_SYMBOL__)throw Xe(17);const n=Se.inject(t.appContext.app.__VUE_I18N_SYMBOL__);if(!n)throw Xe(22);const r=n.mode==="composition"?n.global:n.global.__composer,s=D.isEmptyObject(e)?"__i18n"in t.type?"local":"global":e.useScope?e.useScope:"local";if(s==="global"){let a=D.isObject(e.messages)?e.messages:{};"__i18nGlobal"in t.type&&(a=kc(r.locale.value,{messages:a,__i18n:t.type.__i18nGlobal}));const l=Object.keys(a);if(l.length&&l.forEach(c=>{r.mergeLocaleMessage(c,a[c])}),D.isObject(e.datetimeFormats)){const c=Object.keys(e.datetimeFormats);c.length&&c.forEach(u=>{r.mergeDateTimeFormat(u,e.datetimeFormats[u])})}if(D.isObject(e.numberFormats)){const c=Object.keys(e.numberFormats);c.length&&c.forEach(u=>{r.mergeNumberFormat(u,e.numberFormats[u])})}return r}if(s==="parent"){let a=X$(n,t,e.__useComponent);return a==null&&(a=r),a}if(n.mode==="legacy")throw Xe(18);const i=n;let o=i.__getInstance(t);if(o==null){const a=t.type,l=D.assign({},e);a.__i18n&&(l.__i18n=a.__i18n),r&&(l.__root=r),o=Oc(l),J$(i,t),i.__setInstance(t,o)}return o}function X$(e,t,n=!1){let r=null;const s=t.root;let i=t.parent;for(;i!=null;){const o=e;if(e.mode==="composition")r=o.__getInstance(i);else{const a=o.__getInstance(i);a!=null&&(r=a.__composer),n&&r&&!r[Qp]&&(r=null)}if(r!=null||s===i)break;i=i.parent}return r}function J$(e,t,n){Se.onMounted(()=>{},t),Se.onUnmounted(()=>{e.__deleteInstance(t)},t)}const Q$=["locale","fallbackLocale","availableLocales"],Z$=["t","rt","d","n","tm"];function ex(e,t){const n=Object.create(null);Q$.forEach(r=>{const s=Object.getOwnPropertyDescriptor(t,r);if(!s)throw Xe(22);const i=Se.isRef(s.value)?{get(){return s.value.value},set(o){s.value.value=o}}:{get(){return s.get&&s.get()}};Object.defineProperty(n,r,i)}),e.config.globalProperties.$i18n=n,Z$.forEach(r=>{const s=Object.getOwnPropertyDescriptor(t,r);if(!s||!s.value)throw Xe(22);Object.defineProperty(e.config.globalProperties,`$${r}`,s)})}Te.registerMessageCompiler(Te.compileToFunction);mn.DatetimeFormat=gl;mn.NumberFormat=pl;mn.Translation=ml;mn.VERSION=Xp;mn.createI18n=G$;mn.useI18n=Jo;mn.vTDirective=eg;Op.exports=mn;var tx={header:{docs:"Dokumentation",blog:"Blog",github:"GitHub",login:"Fahrzeug Logins",about:"\xDCber evcc"},footer:{version:{availableShort:"Update",availableLong:"Update verf\xFCgbar",modalTitle:"Update verf\xFCgbar",modalUpdateStarted:"Nach der Aktualisierung wird evcc neu gestartet.",modalInstalledVersion:"Aktuell installierte Version",modalNoReleaseNotes:"Keine Releasenotes verf\xFCgbar. Mehr Informationen zur neuen Version findest du hier:",modalCancel:"Abbrechen",modalUpdate:"Aktualisieren",modalUpdateNow:"Jetzt aktualisieren",modalDownload:"Download",modalUpdateStatusStart:"Aktualisierung gestartet: ",modalUpdateStatusFailed:"Aktualisierung nicht m\xF6glich: "},savings:{footerShort:"{percent}% Sonne",footerLong:"{percent}% Sonnenenergie",modalTitlePartOne:"{total} kWh geladen",modalTitlePartTwo:"{percent}% Sonne",modalChartGrid:"Netz {grid} kWh",modalChartSelf:"Sonne {self} kWh",modalSavingsPrice:"Effektiver Energiepreis",modalSavingsTotal:"Ersparnis gegen\xFCber Netzbezug",modalExplaination:"Berechnung",modalExplainationGrid:"Netz {gridPrice}",modalExplainationFeedIn:"Einspeisung {feedInPrice}",modalServerStart:"Seit Serverstart {since}.",modalNoData:"noch nicht geladen"},sponsor:{thanks:"Danke f\xFCr deine Unterst\xFCtzung, {sponsor}! Das hilft uns bei der Weiterentwicklung.",confetti:"Lust auf etwas Sponsor-Konfetti?",supportUs:"Wir m\xF6chten effizientes Zuhause-Laden zum Standard f\xFCr m\xF6glichst viele Menschen machen. Helfe uns indem du die Weiterentwicklung und Pflege des Projekts unterst\xFCtzt.",sticker:"...oder evcc Sticker?",confettiPromise:"Es gibt auch Sticker und digitales Konfetti ;)",becomeSponsor:"Werde jetzt GitHub Sponsor"}},notifications:{modalTitle:"Meldungen",dismissAll:"Meldungen entfernen"},main:{energyflow:{noEnergy:"Kein Energiefluss",homePower:"Verbrauch",pvProduction:"Erzeugung",loadpoints:"Ladepunkt | Ladepunkt | {count} Ladepunkte",battery:"Batterie",batteryCharge:"Batterie laden",batteryDischarge:"Batterie entladen",gridImport:"Netzbezug",selfConsumption:"Eigenverbrauch",pvExport:"Einspeisung"},mode:{offShort:"Aus",offLong:"Aus",nowShort:"Sofort",nowLong:"Sofort",minpvShort:"Min",minpvLong:"Min + PV",pvShort:"PV",pvLong:"PV",fast:"Schnell",cheap:"G\xFCnstig"},loadpoint:{fallbackName:"Ladepunkt",remoteDisabledSoft:"{source}: Adaptives PV-Laden deaktiviert",remoteDisabledHard:"{source}: Deaktiviert",power:"Leistung",charged:"Geladen",duration:"Dauer",remaining:"Restzeit"},vehicles:"Parkplatz",vehicle:{fallbackName:"Fahrzeug",vehicleSoC:"Ladestand",targetSoC:"Ladeziel",none:"Kein Fahrzeug",unknown:"Gastfahrzeug"},vehicleSoC:{disconnected:"getrennt",charging:"l\xE4dt",ready:"bereit",connected:"verbunden"},vehicleStatus:{minCharge:"Mindestladung bis {soc}%.",waitForVehicle:"Ladebereit. Warte auf Fahrzeug.",charging:"Ladevorgang aktiv.",targetChargePlanned:"Zielladen geplant. Ladung startet {time} Uhr.",targetChargeWaitForVehicle:"Zielladen bereit. Warte auf Fahrzeug.",targetChargeActive:"Zielladen aktiv.",connected:"Verbunden.",pvDisable:"Zu wenig \xDCberschuss. Pausiere in {remaining}.",pvEnable:"\xDCberschuss verf\xFCgbar. Starte in {remaining}.",scale1p:"Reduziere auf einphasig in {remaining}.",scale3p:"Erh\xF6he auf dreiphasig in {remaining}.",disconnected:"Nicht verbunden.",unknown:""},provider:{login:"anmelden",logout:"abmelden"},targetCharge:{title:"Zielzeit",inactiveLabel:"Zielzeit",activeLabel:"{time}",modalTitle:"Zielzeit festlegen",setTargetTime:"keine",description:"Wann soll das Fahrzeug auf {targetSoC}% geladen sein?",today:"heute",tomorrow:"morgen",targetIsInThePast:"Zeitpunkt liegt in der Vergangenheit.",remove:"Entfernen",activate:"Aktivieren",experimentalLabel:"Experimentell",experimentalText:` Dieses Feature funktioniert, ist aber noch nicht perfekt. Bitte melde unerwartetes Verhalten in unseren - `}}},nx={header:{docs:"Documentation",blog:"Blog",github:"GitHub",login:"Vehicle Logins",about:"About evcc"},footer:{version:{availableShort:"update",availableLong:"update available",modalTitle:"Update available",modalUpdateStarted:"Evcc will restart after the update..",modalInstalledVersion:"Currently installed version",modalNoReleaseNotes:"No release notes available. More information about the new version can be found here:",modalCancel:"Cancel",modalUpdate:"Update",modalUpdateNow:"Update now",modalDownload:"Download",modalUpdateStatusStart:"Update started: ",modalUpdateStatusFailed:"Update failed: "},savings:{footerShort:"{percent}% solar",footerLong:"{percent}% solar energy",modalTitlePartOne:"{total} kWh charged",modalTitlePartTwo:"{percent}% solar",modalChartGrid:"Grid {grid} kWh",modalChartSelf:"Solar {self} kWh",modalSavingsPrice:"Effective energy price",modalSavingsTotal:"Savings compared to grid",modalExplaination:"Calculation",modalExplainationGrid:"grid tariff {gridPrice}",modalExplainationFeedIn:"feed-in rate {feedInPrice}",modalServerStart:"since server start {since}.",modalNoData:"nothing charged yet"},sponsor:{thanks:"Thanks for your support, {sponsor}! It helps us with the further development.",confetti:"Ready for some sponsor confetti?",supportUs:"We want to make efficient home charging the standard for as many people as possible. Help us by supporting the further development and maintenance of the project.",sticker:"...or evcc stickers?",confettiPromise:"There will be stickers and digital confetti ;)",becomeSponsor:"Become a GitHub Sponsor"}},notifications:{modalTitle:"Notifications",dismissAll:"Dismiss all"},main:{energyflow:{noEnergy:"No Energyflow",homePower:"Consumption",pvProduction:"Production",loadpoints:"Loadpoint | Loadpoint | {count} Loadpoints",battery:"Battery",batteryCharge:"Battery charge",batteryDischarge:"Battery discharge",gridImport:"Grid import",selfConsumption:"Self consumption",pvExport:"Grid export"},mode:{offShort:"Stop",offLong:"Stop",nowShort:"Now",nowLong:"Now",minpvShort:"Min",minpvLong:"Min + PV",pvShort:"PV",pvLong:"PV",fast:"Fast",cheap:"Cheap"},loadpoint:{fallbackName:"Loadpoint",remoteDisabledSoft:"{source}: adaptive PV charging disabled",remoteDisabledHard:"{source}: disabled",power:"Power",charged:"Charged",duration:"Duration",remaining:"Remaining"},vehicles:"Parking",vehicle:{fallbackName:"Vehicle",vehicleSoC:"SoC",targetSoC:"Limit",noVehicle:"No vehicle"},vehicleSoC:{disconnected:"disconnected",charging:"charging",ready:"ready",connected:"connected"},vehicleStatus:{minCharge:"minimum charging to {soc}%.",waitForVehicle:"Ready. Waiting for vehicle.",charging:"Charging.",targetChargePlanned:"Target charge planned. Starting {start}.",targetChargeWaitForVehicle:"Target charge ready. Wait for vehicle.",targetChargeActive:"Target charge active.",connected:"Connected.",pvDisable:"Not enough surplus. Pausing in {remaining}.",pvEnable:"Surplus available. Starting in {remaining}.",scale1p:"Reduce to single phase in {remaining}.",scale3p:"Increase to three phase in {remaining}.",disconnected:"Disconnected.",unknown:""},provider:{login:"login",logout:"logout"},targetCharge:{title:"Target Time",inactiveLabel:"Target time",activeLabel:"{time}",modalTitle:"Set Target Time",setTargetTime:"none",description:"When should the vehicle be charged to {targetSoC}%?",today:"today",tomorrow:"tomorrow",targetIsInThePast:"The chosen time is in the past.",remove:"Remove",activate:"Activate",experimentalLabel:"Experimental",experimentalText:` + `}}},nx={header:{docs:"Documentation",blog:"Blog",github:"GitHub",login:"Vehicle Logins",about:"About evcc"},footer:{version:{availableShort:"update",availableLong:"update available",modalTitle:"Update available",modalUpdateStarted:"Evcc will restart after the update..",modalInstalledVersion:"Currently installed version",modalNoReleaseNotes:"No release notes available. More information about the new version can be found here:",modalCancel:"Cancel",modalUpdate:"Update",modalUpdateNow:"Update now",modalDownload:"Download",modalUpdateStatusStart:"Update started: ",modalUpdateStatusFailed:"Update failed: "},savings:{footerShort:"{percent}% solar",footerLong:"{percent}% solar energy",modalTitlePartOne:"{total} kWh charged",modalTitlePartTwo:"{percent}% solar",modalChartGrid:"Grid {grid} kWh",modalChartSelf:"Solar {self} kWh",modalSavingsPrice:"Effective energy price",modalSavingsTotal:"Savings compared to grid",modalExplaination:"Calculation",modalExplainationGrid:"grid tariff {gridPrice}",modalExplainationFeedIn:"feed-in rate {feedInPrice}",modalServerStart:"since server start {since}.",modalNoData:"nothing charged yet"},sponsor:{thanks:"Thanks for your support, {sponsor}! It helps us with the further development.",confetti:"Ready for some sponsor confetti?",supportUs:"We want to make efficient home charging the standard for as many people as possible. Help us by supporting the further development and maintenance of the project.",sticker:"...or evcc stickers?",confettiPromise:"There will be stickers and digital confetti ;)",becomeSponsor:"Become a GitHub Sponsor"}},notifications:{modalTitle:"Notifications",dismissAll:"Dismiss all"},main:{energyflow:{noEnergy:"No Energyflow",homePower:"Consumption",pvProduction:"Production",loadpoints:"Loadpoint | Loadpoint | {count} Loadpoints",battery:"Battery",batteryCharge:"Battery charge",batteryDischarge:"Battery discharge",gridImport:"Grid import",selfConsumption:"Self consumption",pvExport:"Grid export"},mode:{offShort:"Stop",offLong:"Stop",nowShort:"Now",nowLong:"Now",minpvShort:"Min",minpvLong:"Min + PV",pvShort:"PV",pvLong:"PV",fast:"Fast",cheap:"Cheap"},loadpoint:{fallbackName:"Loadpoint",remoteDisabledSoft:"{source}: adaptive PV charging disabled",remoteDisabledHard:"{source}: disabled",power:"Power",charged:"Charged",duration:"Duration",remaining:"Remaining"},vehicles:"Parking",vehicle:{fallbackName:"Vehicle",vehicleSoC:"SoC",targetSoC:"Limit",none:"No vehicle",unknown:"Guest vehicle"},vehicleSoC:{disconnected:"disconnected",charging:"charging",ready:"ready",connected:"connected"},vehicleStatus:{minCharge:"minimum charging to {soc}%.",waitForVehicle:"Ready. Waiting for vehicle.",charging:"Charging.",targetChargePlanned:"Target charge planned. Starting {start}.",targetChargeWaitForVehicle:"Target charge ready. Wait for vehicle.",targetChargeActive:"Target charge active.",connected:"Connected.",pvDisable:"Not enough surplus. Pausing in {remaining}.",pvEnable:"Surplus available. Starting in {remaining}.",scale1p:"Reduce to single phase in {remaining}.",scale3p:"Increase to three phase in {remaining}.",disconnected:"Disconnected.",unknown:""},provider:{login:"login",logout:"logout"},targetCharge:{title:"Target Time",inactiveLabel:"Target time",activeLabel:"{time}",modalTitle:"Set Target Time",setTargetTime:"none",description:"When should the vehicle be charged to {targetSoC}%?",today:"today",tomorrow:"tomorrow",targetIsInThePast:"The chosen time is in the past.",remove:"Remove",activate:"Activate",experimentalLabel:"Experimental",experimentalText:` This feature works but isn't perfect yet. Please report unexpected behaviour in our - `}}},rx={header:{docs:"Documentazione",blog:"Blog",github:"GitHub",login:"Iscrizioni"},footer:{version:{version:"versione",availableShort:"aggiornamento",availableLong:"aggiornamento disponibile",modalTitle:"Aggiornamento disponibile",modalUpdateStarted:"Evcc ripartir\xE0 dopo l'aggiornamento..",modalInstalledVersion:"Versione correntemente installata",modalNoReleaseNotes:"Non ci sono note di rilascio disponibili. Altre informazioni circa la nuova versione si trovano qui:",modalCancel:"Cancella",modalUpdate:"Aggiorna",modalUpdateNow:"Aggiorna ora",modalDownload:"Download",modalUpdateStatusStart:"Aggiornamento iniziato: ",modalUpdateStatusFailed:"Aggiornamento fallito: "},sponsor:{sponsoredShort:"grazie",sponsoredLong:"grazie {sponsor}",supportProjectShort:"supporto",supportProjectLong:"supporta questo progetto"}},notifications:{modalTitle:"Notifiche",dismissAll:"Rimuovi tutte"},main:{energyflow:{noEnergy:"No Energyflow",homePower:"Consumption",pvProduction:"Produzione",battery:"Batteria",batteryCharge:"Battery charge",batteryDischarge:"Battery discharge",gridImport:"Grid import",selfConsumption:"Self consumption",pvExport:"Grid export"},mode:{title:"Modalit\xE0",stop:"Stop",now:"Ora",minpvShort:"Min",minpvLong:"Min + FV",pvShort:"FV",pvLong:"Solo FV"},loadpoint:{fallbackName:"Punto di carica",remoteDisabledSoft:"{source}: Ricarica FV adattiva disabilitata",remoteDisabledHard:"{source}: Disabilitato"},vehicle:{fallbackName:"Veicolo"},vehicleSoC:{disconnected:"disconesso",charging:"carica",ready:"pronto",connected:"collegato"},vehicleSubline:{mincharge:"carica minima fino a {soc}%"},provider:{login:"accedere",logout:"disconnettersi"},loadpointDetails:{power:"Potenza",vehicleRange:"Autonomia",charged:"Ricaricato",duration:"Duarata",remaining:"Rimanenti"}}},sx={header:{docs:"Dokumentacija (Vokie\u010Di\u0173 k.)",blog:"Tinklara\u0161tis",github:"GitHub",login:" Automobili\u0173 prisijungimai",about:"Apie EVCC"},footer:{version:{availableShort:"Naujinimas",availableLong:"Yra naujesn\u0117 versija",modalTitle:"Yra naujesn\u0117 versija",modalUpdateStarted:"Pasibaigus naujinimui EVCC startuos i\u0161 naujo..",modalInstalledVersion:"Dabartin\u0117 versija",modalNoReleaseNotes:"Naujinimo detali\u0173 n\u0117ra. Daugiau informacijos rasite \u010Dia:",modalCancel:"At\u0161aukti",modalUpdate:"Naujinti",modalUpdateNow:"Naujinti dabar",modalDownload:"Atsisi\u0173sti",modalUpdateStatusStart:"Naujinimas prasid\u0117jo: ",modalUpdateStatusFailed:"Naujinimas nepavyko: "},savings:{footerShort:"{percent}% saul\u0117s",footerLong:"{percent}% saul\u0117s energija",modalTitlePartOne:"{total} kWh \u012Fkrauta",modalTitlePartTwo:"{percent}% saul\u0117s",modalChartGrid:"Energija i\u0161 tinklo {grid} kWh",modalChartSelf:"Saul\u0117s energija {self} kWh",modalSavingsPrice:"Faktin\u0117 energijos kaina",modalSavingsTotal:"Sutaupyta, palyginus su tinklu",modalExplaination:"Skai\u010Diavimas",modalExplainationGrid:"kaina i\u0161 tinklo {gridPrice}",modalExplainationFeedIn:"Kompensavimas u\u017E patiekt\u0105 \u012F tinkl\u0105 energij\u0105 {feedInPrice}",modalServerStart:"nuo EVCC starto {since}.",modalNoData:"\u012Fkrovimo duomen\u0173 dar n\u0117ra"},sponsor:{thanks:"A\u010Di\u016B, kad mus remiate {sponsor}! Taip prisidedate prie projekto vystymo.",confetti:"Ar pasiruo\u0161\u0119 priimti r\u0117m\u0117jo konfeti?",supportUs:"Norime, kad efektyvesnis elektromobili\u0173 \u012Fkrovimas saul\u0117s energija tapt\u0173 pasiekiamas kuo daugiau \u017Emoni\u0173. Remdami prisidedate prie nuolatinio projekto vystymo ir techninio palaikymo.",sticker:"... ar EVCC lipduk\u0173?",confettiPromise:"Gausite lipduk\u0173 ir skaitmenini\u0173 konfeti ;)",becomeSponsor:"Prad\u0117kite GitHub r\u0117mim\u0105!"}},notifications:{modalTitle:"Prane\u0161imai",dismissAll:"I\u0161valyti visus"},main:{energyflow:{noEnergy:"Energija neteka",homePower:"Namo suvartojimas",pvProduction:"Gamyba",loadpoints:"\u012Ekroviklis | \u012Ekroviklis | {count} \u012Ekrovikliai",battery:"Baterija",batteryCharge:"Baterijos \u012Fkrovimas",batteryDischarge:"Baterijos i\u0161krovimas",gridImport:"Tinklo importas",selfConsumption:"Sunaudojama i\u0161kart",pvExport:"Tinklo eksportas"},mode:{offShort:"Stop",offLong:"Stop",nowShort:"Dabar",nowLong:"Dabar",minpvShort:"Min",minpvLong:"Min + PV",pvShort:"PV",pvLong:"PV",fast:"Greitai",cheap:"Pigiai"},loadpoint:{fallbackName:"\u012Ekroviklis",remoteDisabledSoft:"{source}: adaptyvus PV \u012Fkrovimas i\u0161jungtas",remoteDisabledHard:"{source}: i\u0161jungtas",power:"Galia",charged:"\u012Ekrauta",duration:"Trukm\u0117",remaining:"Liko"},vehicles:"Autoparkas",vehicle:{fallbackName:"Automobilis",vehicleSoC:"\u012Ekrova",targetSoC:"Limitas",noVehicle:"N\u0117ra automobilio"},vehicleSoC:{disconnected:"neprijungtas",charging:"vyksta \u012Fkrovimas",ready:"leid\u017Eiama \u012Fkrauti",connected:"automobilis prijungtas"},vehicleStatus:{minCharge:"minimalus \u012Fkrovimas iki {soc}%.",waitForVehicle:"\u012Ekrovimas leid\u017Eiamas. Laukiama automobilio signalo.",charging:"\u012Ekraunama.",targetChargePlanned:"Suplanuotas \u012Fkrovimas, prasid\u0117s {start}.",targetChargeWaitForVehicle:"Suplanuotas \u012Fkrovimas leid\u017Eiamas. Laukiama automobilio signalo.",targetChargeActive:"Suplanuotas \u012Fkrovimas aktyvuotas.",connected:"Prijungtas.",pvDisable:"Tr\u016Bksta saul\u0117s, \u012Fkrovimo pauz\u0117 u\u017E {remaining}.",pvEnable:"Saul\u0117s u\u017Etenka, \u012Fkrovimas prasid\u0117s u\u017E {remaining}.",scale1p:"Suma\u017Einti \u012F vienfaz\u012F \u012Fkrovim\u0105 u\u017E {remaining}.",scale3p:"Padidinti \u012F trifaz\u012F \u012Fkrovim\u0105 u\u017E {remaining}.",disconnected:"Neprijungtas.",unknown:""},provider:{login:"prisijungti",logout:"atsijungti"},targetCharge:{title:"\u012Ekrauti iki",inactiveLabel:"\u012Ekrauti iki",activeLabel:"{time}",modalTitle:"Nustatyti \u012Fkrovimo pabaigos laik\u0105",setTargetTime:"nenustatytas",description:"Kada automobilis tur\u0117t\u0173 b\u016Bti \u012Fkrautas iki {targetSoC}%?",today:"\u0161iandien",tomorrow:"rytoj",targetIsInThePast:"Pasirinktas laikas yra praeityje.",remove:"Panaikinti",activate:"Aktyvuoti",experimentalLabel:"Eksperimentinis",experimentalText:` + `}}},rx={header:{docs:"Documentazione",blog:"Blog",github:"GitHub",login:"Iscrizioni"},footer:{version:{version:"versione",availableShort:"aggiornamento",availableLong:"aggiornamento disponibile",modalTitle:"Aggiornamento disponibile",modalUpdateStarted:"Evcc ripartir\xE0 dopo l'aggiornamento..",modalInstalledVersion:"Versione correntemente installata",modalNoReleaseNotes:"Non ci sono note di rilascio disponibili. Altre informazioni circa la nuova versione si trovano qui:",modalCancel:"Cancella",modalUpdate:"Aggiorna",modalUpdateNow:"Aggiorna ora",modalDownload:"Download",modalUpdateStatusStart:"Aggiornamento iniziato: ",modalUpdateStatusFailed:"Aggiornamento fallito: "},sponsor:{sponsoredShort:"grazie",sponsoredLong:"grazie {sponsor}",supportProjectShort:"supporto",supportProjectLong:"supporta questo progetto"}},notifications:{modalTitle:"Notifiche",dismissAll:"Rimuovi tutte"},main:{energyflow:{noEnergy:"No Energyflow",homePower:"Consumption",pvProduction:"Produzione",battery:"Batteria",batteryCharge:"Battery charge",batteryDischarge:"Battery discharge",gridImport:"Grid import",selfConsumption:"Self consumption",pvExport:"Grid export"},mode:{title:"Modalit\xE0",stop:"Stop",now:"Ora",minpvShort:"Min",minpvLong:"Min + FV",pvShort:"FV",pvLong:"Solo FV"},loadpoint:{fallbackName:"Punto di carica",remoteDisabledSoft:"{source}: Ricarica FV adattiva disabilitata",remoteDisabledHard:"{source}: Disabilitato"},vehicle:{fallbackName:"Veicolo"},vehicleSoC:{disconnected:"disconesso",charging:"carica",ready:"pronto",connected:"collegato"},vehicleSubline:{mincharge:"carica minima fino a {soc}%"},provider:{login:"accedere",logout:"disconnettersi"},loadpointDetails:{power:"Potenza",vehicleRange:"Autonomia",charged:"Ricaricato",duration:"Duarata",remaining:"Rimanenti"}}},sx={header:{docs:"Dokumentacija (Vokie\u010Di\u0173 k.)",blog:"Tinklara\u0161tis",github:"GitHub",login:" Automobili\u0173 prisijungimai",about:"Apie EVCC"},footer:{version:{availableShort:"Naujinimas",availableLong:"Yra naujesn\u0117 versija",modalTitle:"Yra naujesn\u0117 versija",modalUpdateStarted:"Pasibaigus naujinimui EVCC startuos i\u0161 naujo..",modalInstalledVersion:"Dabartin\u0117 versija",modalNoReleaseNotes:"Naujinimo detali\u0173 n\u0117ra. Daugiau informacijos rasite \u010Dia:",modalCancel:"At\u0161aukti",modalUpdate:"Naujinti",modalUpdateNow:"Naujinti dabar",modalDownload:"Atsisi\u0173sti",modalUpdateStatusStart:"Naujinimas prasid\u0117jo: ",modalUpdateStatusFailed:"Naujinimas nepavyko: "},savings:{footerShort:"{percent}% saul\u0117s",footerLong:"{percent}% saul\u0117s energija",modalTitlePartOne:"{total} kWh \u012Fkrauta",modalTitlePartTwo:"{percent}% saul\u0117s",modalChartGrid:"Energija i\u0161 tinklo {grid} kWh",modalChartSelf:"Saul\u0117s energija {self} kWh",modalSavingsPrice:"Faktin\u0117 energijos kaina",modalSavingsTotal:"Sutaupyta, palyginus su tinklu",modalExplaination:"Skai\u010Diavimas",modalExplainationGrid:"kaina i\u0161 tinklo {gridPrice}",modalExplainationFeedIn:"Kompensavimas u\u017E patiekt\u0105 \u012F tinkl\u0105 energij\u0105 {feedInPrice}",modalServerStart:"nuo EVCC starto {since}.",modalNoData:"\u012Fkrovimo duomen\u0173 dar n\u0117ra"},sponsor:{thanks:"A\u010Di\u016B, kad mus remiate {sponsor}! Taip prisidedate prie projekto vystymo.",confetti:"Ar pasiruo\u0161\u0119 priimti r\u0117m\u0117jo konfeti?",supportUs:"Norime, kad efektyvesnis elektromobili\u0173 \u012Fkrovimas saul\u0117s energija tapt\u0173 pasiekiamas kuo daugiau \u017Emoni\u0173. Remdami prisidedate prie nuolatinio projekto vystymo ir techninio palaikymo.",sticker:"... ar EVCC lipduk\u0173?",confettiPromise:"Gausite lipduk\u0173 ir skaitmenini\u0173 konfeti ;)",becomeSponsor:"Prad\u0117kite GitHub r\u0117mim\u0105!"}},notifications:{modalTitle:"Prane\u0161imai",dismissAll:"I\u0161valyti visus"},main:{energyflow:{noEnergy:"Energija neteka",homePower:"Namo suvartojimas",pvProduction:"Gamyba",loadpoints:"\u012Ekroviklis | \u012Ekroviklis | {count} \u012Ekrovikliai",battery:"Baterija",batteryCharge:"Baterijos \u012Fkrovimas",batteryDischarge:"Baterijos i\u0161krovimas",gridImport:"Tinklo importas",selfConsumption:"Sunaudojama i\u0161kart",pvExport:"Tinklo eksportas"},mode:{offShort:"Stop",offLong:"Stop",nowShort:"Dabar",nowLong:"Dabar",minpvShort:"Min",minpvLong:"Min + PV",pvShort:"PV",pvLong:"PV",fast:"Greitai",cheap:"Pigiai"},loadpoint:{fallbackName:"\u012Ekroviklis",remoteDisabledSoft:"{source}: adaptyvus PV \u012Fkrovimas i\u0161jungtas",remoteDisabledHard:"{source}: i\u0161jungtas",power:"Galia",charged:"\u012Ekrauta",duration:"Trukm\u0117",remaining:"Liko"},vehicles:"Autoparkas",vehicle:{fallbackName:"Automobilis",vehicleSoC:"\u012Ekrova",targetSoC:"Limitas",none:"N\u0117ra automobilio",unknown:"Ne\u017Einomas automobilis"},vehicleSoC:{disconnected:"neprijungtas",charging:"vyksta \u012Fkrovimas",ready:"leid\u017Eiama \u012Fkrauti",connected:"automobilis prijungtas"},vehicleStatus:{minCharge:"minimalus \u012Fkrovimas iki {soc}%.",waitForVehicle:"\u012Ekrovimas leid\u017Eiamas. Laukiama automobilio signalo.",charging:"\u012Ekraunama.",targetChargePlanned:"Suplanuotas \u012Fkrovimas, prasid\u0117s {start}.",targetChargeWaitForVehicle:"Suplanuotas \u012Fkrovimas leid\u017Eiamas. Laukiama automobilio signalo.",targetChargeActive:"Suplanuotas \u012Fkrovimas aktyvuotas.",connected:"Prijungtas.",pvDisable:"Tr\u016Bksta saul\u0117s, \u012Fkrovimo pauz\u0117 u\u017E {remaining}.",pvEnable:"Saul\u0117s u\u017Etenka, \u012Fkrovimas prasid\u0117s u\u017E {remaining}.",scale1p:"Suma\u017Einti \u012F vienfaz\u012F \u012Fkrovim\u0105 u\u017E {remaining}.",scale3p:"Padidinti \u012F trifaz\u012F \u012Fkrovim\u0105 u\u017E {remaining}.",disconnected:"Neprijungtas.",unknown:""},provider:{login:"prisijungti",logout:"atsijungti"},targetCharge:{title:"\u012Ekrauti iki",inactiveLabel:"\u012Ekrauti iki",activeLabel:"{time}",modalTitle:"Nustatyti \u012Fkrovimo pabaigos laik\u0105",setTargetTime:"nenustatytas",description:"Kada automobilis tur\u0117t\u0173 b\u016Bti \u012Fkrautas iki {targetSoC}%?",today:"\u0161iandien",tomorrow:"rytoj",targetIsInThePast:"Pasirinktas laikas yra praeityje.",remove:"Panaikinti",activate:"Aktyvuoti",experimentalLabel:"Eksperimentinis",experimentalText:` \u0160i funkcija veikia, bet dar n\u0117ra tobula. Apie netik\u0117t\u0105 elges\u012F prane\u0161kite m\u016Bs\u0173 `}}};const ix="preferred_locale";function ox(){const e=navigator.languages!==void 0?navigator.languages[0]:navigator.language;if(!!e)return e.trim().split(/-|_/)[0]}var ax=Op.exports.createI18n({locale:window.localStorage[ix]||ox(),fallbackLocale:"en",messages:{de:tx,en:nx,it:rx,lt:sx}}),lx={install:e=>{e.config.globalProperties.$hiddenFeatures=window.localStorage.hidden_features==="true"}};Cy.polyfill();const ms=Vm({data(){return{notifications:[]}},methods:{raise:function(e){console[e.type](e);const t=new Date,n=this.notifications[0];n&&n.message===e.message?(n.count++,n.time=t):this.notifications=[gs(he({},e),{count:1,time:t}),...this.notifications]},clear:function(){this.notifications=[]},error:function(e){e.type="error",this.raise(e)},warn:function(e){e.type="warn",this.raise(e)}},render:function(){return Hn(FT,{notifications:this.notifications})}});ms.use(ax);ms.use(mN);ms.use(cw());ms.use(dw);ms.use(lx);window.app=ms.mount("#app");window.setInterval(function(){er.get("health").catch(function(){window.app.error({message:"Server unavailable"})})},5e3)});export default cx(); diff --git a/dist/index.html b/dist/index.html index 7c19f3439..ac6228c5c 100644 --- a/dist/index.html +++ b/dist/index.html @@ -20,7 +20,7 @@ evcc - +