diff --git a/assets/i18n/nl.toml b/assets/i18n/nl.toml
deleted file mode 100644
index c6adabc8f..000000000
--- a/assets/i18n/nl.toml
+++ /dev/null
@@ -1,220 +0,0 @@
-[header]
-sessions = "Laadsessies"
-docs = "Documentatie"
-blog = "Blog"
-github = "GitHub"
-login = "Voertuig logins"
-about = "Over evcc"
-
-[header.theme]
-auto = "Design: systeem"
-light = "Design: licht"
-dark = "Design: donker"
-
-[footer.version]
-availableShort = "update"
-availableLong = "update beschikbaar"
-modalTitle = "Update beschikbaar"
-modalUpdateStarted = "Evcc zal herstarten na de update."
-modalInstalledVersion = "Huidige versie"
-modalNoReleaseNotes = "Geen release notes beschikbaar. Meer informatie over de nieuwe versie vind je hier:"
-modalCancel = "Annuleer"
-modalUpdate = "Update"
-modalUpdateNow = "Nu updaten"
-modalDownload = "Download"
-modalUpdateStatusStart = "Update gestart:"
-modalUpdateStatusFailed = "Update mislukt:"
-
-[footer.savings]
-tabTitle = "Mijn data"
-footerShort = "{percent}% PV"
-footerLong = "{percent}% zonne-energie"
-modalTitle = "Energieoverzicht"
-since = "sinds {since}"
-percentTitle = "Zonne-energie"
-percentSelf = "{self} kWh PV"
-percentGrid = "{grid} kWh afgenomen"
-priceTitle = "Energieprijs"
-priceFeedIn = "{feedInPrice} injectie"
-priceGrid = "{gridPrice} afname"
-savingsTitle = "Besparing"
-savingsComparedToGrid = "i.v.m. netafname"
-savingsTotalEnergy = "{total} kWh geladen"
-
-[footer.community]
-tabTitle = "Live community"
-power = "Laadvermogen"
-powerSub1 = "{activeClients} van {totalClients} deelnemers"
-powerSub2 = "zijn nu aan het laden"
-greenShare = "Zonne-energie"
-greenShareSub1 = "van de energie"
-greenShareSub2 = "komt van PV & batterijopslag"
-greenEnergy = "Zonne-energie"
-greenEnergySub1 = "geladen met evcc"
-greenEnergySub2 = "sinds oktober 2022"
-
-[footer.telemetry]
-optIn = "Ik wil mijn data ook bijdragen."
-optInMoreDetails = "Meer info is {0} beschikbaar."
-optInMoreDetailsLink = "hier"
-optInSponsorship = "(Sponsoring nodig)"
-
-[footer.sponsor]
-titleSponsor = "Je bent een sponsor!"
-titleNoSponsor = "Sponsor ons"
-thanks = "Bedankt voor je hulp, {sponsor}! Je helpt ons bij de verdere ontwikkeling van evcc."
-confetti = "Klaar voor confetti?"
-supportUs = "Onze missie: Van laden op zonne-energie de standaard maken. Help ons en draag financieel bij aan evcc."
-sticker = "… of evcc stickers?"
-confettiPromise = "Er zullen stickers en digitale confetti zijn ;)"
-becomeSponsor = "Word sponsor"
-
-[notifications]
-modalTitle = "Notificaties"
-dismissAll = "Alles verwijderen"
-
-[main]
-vehicles = "Parking"
-
-[main.energyflow]
-noEnergy = "Geen meter data"
-homePower = "Consumptie"
-pvProduction = "Productie"
-loadpoints = "Laadpunt | Laadpunt | {count} Laadpunten"
-battery = "Batterij"
-batteryCharge = "Batterij laden"
-batteryDischarge = "Batterij ontladen"
-gridImport = "Netafname"
-selfConsumption = "Zelfverbruik"
-pvExport = "Netinjectie"
-
-[main.mode]
-off = "Uit"
-minpv = "Min+PV"
-pv = "PV"
-now = "Snel"
-
-[main.loadpoint]
-fallbackName = "Laadpunt"
-remoteDisabledSoft = "{source}: adaptief PV-laden uitgeschakeld"
-remoteDisabledHard = "{source}: uitgeschakeld"
-power = "Snelheid"
-charged = "Geladen"
-duration = "Duur"
-remaining = "Resterend"
-
-[main.loadpointSettings]
-title = 'Instellingen "{0}"'
-vehicle = "Voertuig"
-currents = "Opladen"
-default = "standaard"
-disclaimerHint = "Letop:"
-disclaimerText = "Instellingen worden niet bijgehouden. Ze worden gereset bij het herstarten van de server."
-
-[main.loadpointSettings.minSoC]
-label = "Min batterijniveau"
-description = 'Noodbereik. Voertuig wordt "snel" geladen tot {0}% in PV mode. Daarna wordt enkel de PV-overschot gebruikt.'
-
-[main.loadpointSettings.phasesConfigured]
-label = "Fasen"
-phases_0 = "automatisch wisselend"
-phases_1 = "1 fase"
-phases_1_hint = "({min} - {max})"
-phases_3 = "3 fasen"
-phases_3_hint = "({min} - {max})"
-
-[main.loadpointSettings.maxCurrent]
-label = "Max. vermogen"
-
-[main.loadpointSettings.minCurrent]
-label = "Min. vermogen"
-
-[main.vehicle]
-fallbackName = "Voertuig"
-vehicleSoC = "Batterijniveau"
-targetSoC = "Limiet"
-none = "Geen voertuig"
-unknown = "Gast"
-changeVehicle = "Wijzig voertuig"
-detectionActive = "Voertuig detecteren ..."
-
-[main.vehicleSoC]
-disconnected = "niet verbonden"
-charging = "laden"
-ready = "klaar"
-connected = "verbonden"
-vehicleTarget = "Voertuiglimiet: {soc}%"
-
-[main.vehicleStatus]
-minCharge = "laden naar {soc}% minimum."
-waitForVehicle = "Klaar. Wachten op voertuig."
-vehicleTargetReached = "Voertuiglimiet {soc}% bereikt."
-charging = "Laden."
-targetChargePlanned = "Doel gepland. Starten op {time}."
-targetChargeWaitForVehicle = "Doel gepland. Wachten op voertuig."
-targetChargeActive = "Doelladen actief."
-connected = "Verbonden."
-pvDisable = "Onvoldoende PV overschot beschikbaar. Pauzeren over {remaining}."
-pvEnable = "Voldoende PV overschot beschikbaar. Starten over {remaining}."
-scale1p = "Wisselen naar 1 fase over {remaining}."
-scale3p = "Wisselen naar 3 fasen over {remaining}."
-disconnected = "Niet verbonden."
-unknown = ""
-
-[main.provider]
-login = "aanmelden"
-logout = "afmelden"
-
-[main.targetCharge]
-title = "Doel"
-inactiveLabel = "Ingestelde tijd"
-activeLabel = "{time}"
-modalTitle = "Stel tijd in"
-setTargetTime = "geen"
-description = "Tegen wanneer moet het voertuig geladen zijn naar {targetSoC}%?"
-today = "Vandaag"
-tomorrow = "Morgen"
-targetIsInThePast = "De ingestelde tijd ligt in het verleden"
-remove = "Verwijder"
-activate = "Activeer"
-experimentalLabel = "Experimenteel"
-experimentalText = "Deze feature werkt nog niet perfect. Rapporteer ongewenst gedrag op"
-
-[main.targetEnergy]
-label = "Limiet"
-noLimit = "geen"
-
-[startupError]
-title = "Start Error"
-description = "Check je evcc configuratie. Helpt de foutboodschap je niet, bekijk dan de {0}."
-discussions = "GitHub Discussions"
-hint = "Je kan deze boodschap ook krijgen bij een kapot toestel (inverter, meter, ...). Check je network connectie."
-configuration = "Config"
-configFile = "Gebruikt configuratiebestand:"
-lineError = "Fout gedetecteerd op {0}."
-lineErrorLink = "lijn {0}"
-fixAndRestart = "Verhelp het probleem en herstart de server."
-restartButton = "Herstart"
-
-[sessions]
-title = "Laadsessies"
-downloadCsv = "Download CSV"
-loadpoint = "Laadpunt"
-vehicle = "Voertuig"
-energy = "Geladen"
-date = "Periode"
-
-[sessions.csv]
-loadpoint = "Laadpunt"
-vehicle = "Voertuig"
-odometer = "kilometerstand (km)"
-identifier = "ID"
-chargedenergy = "Energie (kWh)"
-meterstart = "Meter Start (kWh)"
-meterstop = "Meter Stop (kWh)"
-created = "Gestart"
-finished = "Beëindigd"
-
-[offline]
-message = "Geen verbinding met de server."
-reload = "Opnieuw laden?"
diff --git a/assets/js/components/Footer.story.vue b/assets/js/components/Footer.story.vue
index fb0d78831..a86f02cf2 100644
--- a/assets/js/components/Footer.story.vue
+++ b/assets/js/components/Footer.story.vue
@@ -6,7 +6,6 @@ const state = reactive({
version: {
installed: "0.401",
available: "0.401",
- commit: "5ce7be4",
},
savings: {
selfConsumptionPercent: 88,
@@ -19,5 +18,14 @@ const state = reactive({
{{ updateStatus }}{{ uploadMessage }}
+{{ updateStatus }} {{ uploadMessage }}
@@ -175,7 +175,7 @@ export default {
this.updateStatus = this.$t("footer.version.modalUpdateStatusStart");
this.updateStarted = true;
} catch (e) {
- this.updateStatus = this.$t("footer.version.modalUpdateStatusStart") + e;
+ this.updateStatus = `${this.$t("footer.version.modalUpdateStatusStart")} ${e}`;
}
},
releaseNotesUrl: function (version) {
diff --git a/dist/assets/index.d57198f2.js b/dist/assets/index.9ac28ff8.js
similarity index 89%
rename from dist/assets/index.d57198f2.js
rename to dist/assets/index.9ac28ff8.js
index 392e6f407..769c0fee7 100644
--- a/dist/assets/index.d57198f2.js
+++ b/dist/assets/index.9ac28ff8.js
@@ -1,8 +1,8 @@
-var E2=Object.defineProperty;var T2=(t,e,n)=>e in t?E2(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var C2=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var ss=(t,e,n)=>(T2(t,typeof e!="symbol"?e+"":e,n),n);var UR=C2((WR,Yo)=>{(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerpolicy&&(s.referrerPolicy=i.referrerpolicy),i.crossorigin==="use-credentials"?s.credentials="include":i.crossorigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();var Ht="top",fn="bottom",dn="right",Bt="left",rl="auto",Li=[Ht,fn,dn,Bt],Cs="start",li="end",cg="clippingParents",Uu="viewport",js="popper",ug="reference",Bc=Li.reduce(function(t,e){return t.concat([e+"-"+Cs,e+"-"+li])},[]),ju=[].concat(Li,[rl]).reduce(function(t,e){return t.concat([e,e+"-"+Cs,e+"-"+li])},[]),fg="beforeRead",dg="read",hg="afterRead",mg="beforeMain",pg="main",gg="afterMain",_g="beforeWrite",vg="write",bg="afterWrite",yg=[fg,dg,hg,mg,pg,gg,_g,vg,bg];function nr(t){return t?(t.nodeName||"").toLowerCase():null}function Nn(t){if(t==null)return window;if(t.toString()!=="[object Window]"){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Ss(t){var e=Nn(t).Element;return t instanceof e||t instanceof Element}function $n(t){var e=Nn(t).HTMLElement;return t instanceof e||t instanceof HTMLElement}function Wu(t){if(typeof ShadowRoot>"u")return!1;var e=Nn(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function S2(t){var e=t.state;Object.keys(e.elements).forEach(function(n){var r=e.styles[n]||{},i=e.attributes[n]||{},s=e.elements[n];!$n(s)||!nr(s)||(Object.assign(s.style,r),Object.keys(i).forEach(function(o){var a=i[o];a===!1?s.removeAttribute(o):s.setAttribute(o,a===!0?"":a)}))})}function A2(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach(function(r){var i=e.elements[r],s=e.attributes[r]||{},o=Object.keys(e.styles.hasOwnProperty(r)?e.styles[r]:n[r]),a=o.reduce(function(l,c){return l[c]="",l},{});!$n(i)||!nr(i)||(Object.assign(i.style,a),Object.keys(s).forEach(function(l){i.removeAttribute(l)}))})}}const zu={name:"applyStyles",enabled:!0,phase:"write",fn:S2,effect:A2,requires:["computeStyles"]};function Xn(t){return t.split("-")[0]}var vs=Math.max,Da=Math.min,ci=Math.round;function Uc(){var t=navigator.userAgentData;return t!=null&&t.brands?t.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function wg(){return!/^((?!chrome|android).)*safari/i.test(Uc())}function ui(t,e,n){e===void 0&&(e=!1),n===void 0&&(n=!1);var r=t.getBoundingClientRect(),i=1,s=1;e&&$n(t)&&(i=t.offsetWidth>0&&ci(r.width)/t.offsetWidth||1,s=t.offsetHeight>0&&ci(r.height)/t.offsetHeight||1);var o=Ss(t)?Nn(t):window,a=o.visualViewport,l=!wg()&&n,c=(r.left+(l&&a?a.offsetLeft:0))/i,f=(r.top+(l&&a?a.offsetTop:0))/s,m=r.width/i,h=r.height/s;return{width:m,height:h,top:f,right:c+m,bottom:f+h,left:c,x:c,y:f}}function Qu(t){var e=ui(t),n=t.offsetWidth,r=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-r)<=1&&(r=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:r}}function Eg(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&Wu(n)){var r=e;do{if(r&&t.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function _r(t){return Nn(t).getComputedStyle(t)}function x2(t){return["table","td","th"].indexOf(nr(t))>=0}function Gr(t){return((Ss(t)?t.ownerDocument:t.document)||window.document).documentElement}function sl(t){return nr(t)==="html"?t:t.assignedSlot||t.parentNode||(Wu(t)?t.host:null)||Gr(t)}function rh(t){return!$n(t)||_r(t).position==="fixed"?null:t.offsetParent}function $2(t){var e=/firefox/i.test(Uc()),n=/Trident/i.test(Uc());if(n&&$n(t)){var r=_r(t);if(r.position==="fixed")return null}var i=sl(t);for(Wu(i)&&(i=i.host);$n(i)&&["html","body"].indexOf(nr(i))<0;){var s=_r(i);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||e&&s.willChange==="filter"||e&&s.filter&&s.filter!=="none")return i;i=i.parentNode}return null}function Ro(t){for(var e=Nn(t),n=rh(t);n&&x2(n)&&_r(n).position==="static";)n=rh(n);return n&&(nr(n)==="html"||nr(n)==="body"&&_r(n).position==="static")?e:n||$2(t)||e}function Ku(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function to(t,e,n){return vs(t,Da(e,n))}function P2(t,e,n){var r=to(t,e,n);return r>n?n:r}function Tg(){return{top:0,right:0,bottom:0,left:0}}function Cg(t){return Object.assign({},Tg(),t)}function Sg(t,e){return e.reduce(function(n,r){return n[r]=t,n},{})}var L2=function(e,n){return e=typeof e=="function"?e(Object.assign({},n.rects,{placement:n.placement})):e,Cg(typeof e!="number"?e:Sg(e,Li))};function O2(t){var e,n=t.state,r=t.name,i=t.options,s=n.elements.arrow,o=n.modifiersData.popperOffsets,a=Xn(n.placement),l=Ku(a),c=[Bt,dn].indexOf(a)>=0,f=c?"height":"width";if(!(!s||!o)){var m=L2(i.padding,n),h=Qu(s),g=l==="y"?Ht:Bt,A=l==="y"?fn:dn,b=n.rects.reference[f]+n.rects.reference[l]-o[l]-n.rects.popper[f],x=o[l]-n.rects.reference[l],v=Ro(s),S=v?l==="y"?v.clientHeight||0:v.clientWidth||0:0,$=b/2-x/2,E=m[g],C=S-h[f]-m[A],N=S/2-h[f]/2+$,M=to(E,N,C),I=l;n.modifiersData[r]=(e={},e[I]=M,e.centerOffset=M-N,e)}}function k2(t){var e=t.state,n=t.options,r=n.element,i=r===void 0?"[data-popper-arrow]":r;i!=null&&(typeof i=="string"&&(i=e.elements.popper.querySelector(i),!i)||!Eg(e.elements.popper,i)||(e.elements.arrow=i))}const Ag={name:"arrow",enabled:!0,phase:"main",fn:O2,effect:k2,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function fi(t){return t.split("-")[1]}var N2={top:"auto",right:"auto",bottom:"auto",left:"auto"};function M2(t){var e=t.x,n=t.y,r=window,i=r.devicePixelRatio||1;return{x:ci(e*i)/i||0,y:ci(n*i)/i||0}}function sh(t){var e,n=t.popper,r=t.popperRect,i=t.placement,s=t.variation,o=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,f=t.roundOffsets,m=t.isFixed,h=o.x,g=h===void 0?0:h,A=o.y,b=A===void 0?0:A,x=typeof f=="function"?f({x:g,y:b}):{x:g,y:b};g=x.x,b=x.y;var v=o.hasOwnProperty("x"),S=o.hasOwnProperty("y"),$=Bt,E=Ht,C=window;if(c){var N=Ro(n),M="clientHeight",I="clientWidth";if(N===Nn(n)&&(N=Gr(n),_r(N).position!=="static"&&a==="absolute"&&(M="scrollHeight",I="scrollWidth")),N=N,i===Ht||(i===Bt||i===dn)&&s===li){E=fn;var R=m&&N===C&&C.visualViewport?C.visualViewport.height:N[M];b-=R-r.height,b*=l?1:-1}if(i===Bt||(i===Ht||i===fn)&&s===li){$=dn;var G=m&&N===C&&C.visualViewport?C.visualViewport.width:N[I];g-=G-r.width,g*=l?1:-1}}var oe=Object.assign({position:a},c&&N2),ue=f===!0?M2({x:g,y:b}):{x:g,y:b};if(g=ue.x,b=ue.y,l){var de;return Object.assign({},oe,(de={},de[E]=S?"0":"",de[$]=v?"0":"",de.transform=(C.devicePixelRatio||1)<=1?"translate("+g+"px, "+b+"px)":"translate3d("+g+"px, "+b+"px, 0)",de))}return Object.assign({},oe,(e={},e[E]=S?b+"px":"",e[$]=v?g+"px":"",e.transform="",e))}function I2(t){var e=t.state,n=t.options,r=n.gpuAcceleration,i=r===void 0?!0:r,s=n.adaptive,o=s===void 0?!0:s,a=n.roundOffsets,l=a===void 0?!0:a,c={placement:Xn(e.placement),variation:fi(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:i,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,sh(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:o,roundOffsets:l})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,sh(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}const Yu={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:I2,data:{}};var ra={passive:!0};function D2(t){var e=t.state,n=t.instance,r=t.options,i=r.scroll,s=i===void 0?!0:i,o=r.resize,a=o===void 0?!0:o,l=Nn(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return s&&c.forEach(function(f){f.addEventListener("scroll",n.update,ra)}),a&&l.addEventListener("resize",n.update,ra),function(){s&&c.forEach(function(f){f.removeEventListener("scroll",n.update,ra)}),a&&l.removeEventListener("resize",n.update,ra)}}const Gu={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:D2,data:{}};var R2={left:"right",right:"left",bottom:"top",top:"bottom"};function ya(t){return t.replace(/left|right|bottom|top/g,function(e){return R2[e]})}var F2={start:"end",end:"start"};function ih(t){return t.replace(/start|end/g,function(e){return F2[e]})}function Zu(t){var e=Nn(t),n=e.pageXOffset,r=e.pageYOffset;return{scrollLeft:n,scrollTop:r}}function Xu(t){return ui(Gr(t)).left+Zu(t).scrollLeft}function V2(t,e){var n=Nn(t),r=Gr(t),i=n.visualViewport,s=r.clientWidth,o=r.clientHeight,a=0,l=0;if(i){s=i.width,o=i.height;var c=wg();(c||!c&&e==="fixed")&&(a=i.offsetLeft,l=i.offsetTop)}return{width:s,height:o,x:a+Xu(t),y:l}}function q2(t){var e,n=Gr(t),r=Zu(t),i=(e=t.ownerDocument)==null?void 0:e.body,s=vs(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),o=vs(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),a=-r.scrollLeft+Xu(t),l=-r.scrollTop;return _r(i||n).direction==="rtl"&&(a+=vs(n.clientWidth,i?i.clientWidth:0)-s),{width:s,height:o,x:a,y:l}}function Ju(t){var e=_r(t),n=e.overflow,r=e.overflowX,i=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function xg(t){return["html","body","#document"].indexOf(nr(t))>=0?t.ownerDocument.body:$n(t)&&Ju(t)?t:xg(sl(t))}function no(t,e){var n;e===void 0&&(e=[]);var r=xg(t),i=r===((n=t.ownerDocument)==null?void 0:n.body),s=Nn(r),o=i?[s].concat(s.visualViewport||[],Ju(r)?r:[]):r,a=e.concat(o);return i?a:a.concat(no(sl(o)))}function jc(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function H2(t,e){var n=ui(t,!1,e==="fixed");return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}function oh(t,e,n){return e===Uu?jc(V2(t,n)):Ss(e)?H2(e,n):jc(q2(Gr(t)))}function B2(t){var e=no(sl(t)),n=["absolute","fixed"].indexOf(_r(t).position)>=0,r=n&&$n(t)?Ro(t):t;return Ss(r)?e.filter(function(i){return Ss(i)&&Eg(i,r)&&nr(i)!=="body"}):[]}function U2(t,e,n,r){var i=e==="clippingParents"?B2(t):[].concat(e),s=[].concat(i,[n]),o=s[0],a=s.reduce(function(l,c){var f=oh(t,c,r);return l.top=vs(f.top,l.top),l.right=Da(f.right,l.right),l.bottom=Da(f.bottom,l.bottom),l.left=vs(f.left,l.left),l},oh(t,o,r));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function $g(t){var e=t.reference,n=t.element,r=t.placement,i=r?Xn(r):null,s=r?fi(r):null,o=e.x+e.width/2-n.width/2,a=e.y+e.height/2-n.height/2,l;switch(i){case Ht:l={x:o,y:e.y-n.height};break;case fn:l={x:o,y:e.y+e.height};break;case dn:l={x:e.x+e.width,y:a};break;case Bt:l={x:e.x-n.width,y:a};break;default:l={x:e.x,y:e.y}}var c=i?Ku(i):null;if(c!=null){var f=c==="y"?"height":"width";switch(s){case Cs:l[c]=l[c]-(e[f]/2-n[f]/2);break;case li:l[c]=l[c]+(e[f]/2-n[f]/2);break}}return l}function di(t,e){e===void 0&&(e={});var n=e,r=n.placement,i=r===void 0?t.placement:r,s=n.strategy,o=s===void 0?t.strategy:s,a=n.boundary,l=a===void 0?cg:a,c=n.rootBoundary,f=c===void 0?Uu:c,m=n.elementContext,h=m===void 0?js:m,g=n.altBoundary,A=g===void 0?!1:g,b=n.padding,x=b===void 0?0:b,v=Cg(typeof x!="number"?x:Sg(x,Li)),S=h===js?ug:js,$=t.rects.popper,E=t.elements[A?S:h],C=U2(Ss(E)?E:E.contextElement||Gr(t.elements.popper),l,f,o),N=ui(t.elements.reference),M=$g({reference:N,element:$,strategy:"absolute",placement:i}),I=jc(Object.assign({},$,M)),R=h===js?I:N,G={top:C.top-R.top+v.top,bottom:R.bottom-C.bottom+v.bottom,left:C.left-R.left+v.left,right:R.right-C.right+v.right},oe=t.modifiersData.offset;if(h===js&&oe){var ue=oe[i];Object.keys(G).forEach(function(de){var H=[dn,fn].indexOf(de)>=0?1:-1,F=[Ht,fn].indexOf(de)>=0?"y":"x";G[de]+=ue[F]*H})}return G}function j2(t,e){e===void 0&&(e={});var n=e,r=n.placement,i=n.boundary,s=n.rootBoundary,o=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=l===void 0?ju:l,f=fi(r),m=f?a?Bc:Bc.filter(function(A){return fi(A)===f}):Li,h=m.filter(function(A){return c.indexOf(A)>=0});h.length===0&&(h=m);var g=h.reduce(function(A,b){return A[b]=di(t,{placement:b,boundary:i,rootBoundary:s,padding:o})[Xn(b)],A},{});return Object.keys(g).sort(function(A,b){return g[A]-g[b]})}function W2(t){if(Xn(t)===rl)return[];var e=ya(t);return[ih(t),e,ih(e)]}function z2(t){var e=t.state,n=t.options,r=t.name;if(!e.modifiersData[r]._skip){for(var i=n.mainAxis,s=i===void 0?!0:i,o=n.altAxis,a=o===void 0?!0:o,l=n.fallbackPlacements,c=n.padding,f=n.boundary,m=n.rootBoundary,h=n.altBoundary,g=n.flipVariations,A=g===void 0?!0:g,b=n.allowedAutoPlacements,x=e.options.placement,v=Xn(x),S=v===x,$=l||(S||!A?[ya(x)]:W2(x)),E=[x].concat($).reduce(function(Ae,W){return Ae.concat(Xn(W)===rl?j2(e,{placement:W,boundary:f,rootBoundary:m,padding:c,flipVariations:A,allowedAutoPlacements:b}):W)},[]),C=e.rects.reference,N=e.rects.popper,M=new Map,I=!0,R=E[0],G=0;Gme)for(;K<=U;)Te(L[K],V,z,!0),K++;else{const _e=K,Oe=K,Ve=new Map;for(K=Oe;K<=me;K++){const Ft=_[K]=re?Lr(_[K]):Kn(_[K]);Ft.key!=null&&Ve.set(Ft.key,K)}let Re,it=0;const Wt=me-Oe+1;let Tr=!1,Vi=0;const Cr=new Array(Wt);for(K=0;K
{const{el:z,type:Z,transition:te,children:re,shapeFlag:K}=L;if(K&6){we(L.component.subTree,_,w,O);return}if(K&128){L.suspense.move(_,w,O);return}if(K&64){Z.move(L,_,w,$e);return}if(Z===Be){r(z,_,w);for(let U=0;U
Si(c,a))?r.push(a):n.push(a));const l=t.matched[o];l&&(e.matched.find(c=>Si(c,l))||i.push(l))}return[n,r,i]}if(!document.querySelector("style[data-shopicon]")){const t=document.createElement("style");t.setAttribute("data-shopicon",!0),t.innerHTML=`
+ */const Ks=typeof window<"u";function D3(t){return t.__esModule||t[Symbol.toStringTag]==="Module"}const Xe=Object.assign;function Tc(t,e){const n={};for(const r in e){const i=e[r];n[r]=Bn(i)?i.map(t):t(i)}return n}const ho=()=>{},Bn=Array.isArray,R3=/\/$/,F3=t=>t.replace(R3,"");function Cc(t,e,n="/"){let r,i={},s="",o="";const a=e.indexOf("#");let l=e.indexOf("?");return aSi(c,a))?r.push(a):n.push(a));const l=t.matched[o];l&&(e.matched.find(c=>Si(c,l))||i.push(l))}return[n,r,i]}if(!document.querySelector("style[data-shopicon]")){const t=document.createElement("style");t.setAttribute("data-shopicon",!0),t.innerHTML=`
[data-shopicon] { display: block; width: 24px; aspect-ratio: 1; }
[data-shopicon][size=m] { width: 32px; }
[data-shopicon][size=l] { width: 48px; }
@@ -38,27 +38,27 @@ var E2=Object.defineProperty;var T2=(t,e,n)=>e in t?E2(t,e,{enumerable:!0,config
[data-shopicon] path:not([fill]),
[data-shopicon] polygon:not([fill]),
[data-shopicon] rect:not([fill]) { fill: currentColor; }
- `,document.head.appendChild(t)}var qC='';class HC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=qC}}window.customElements.define("shopicon-regular-arrowup",HC);var BC='';class UC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=BC}}window.customElements.define("shopicon-regular-menu",UC);var jC='';class WC extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=jC}}window.customElements.define("shopicon-regular-newtab",WC);var E0={exports:{}},Xf={exports:{}},T0=function(e,n){return function(){for(var i=new Array(arguments.length),s=0;s$1
").trim()}const WN={name:"TelemetrySettings",props:{sponsor:String},data(){return{enabled:!1,error:null}},async mounted(){await this.update()},methods:{async change(t){try{this.error=null;const e=await Pt.post(`settings/telemetry/${t.target.checked}`);this.enabled=e.data.result}catch(e){e.response&&(this.error=jN("**Error:** "+e.response.data.error),this.enabled=!1)}},async update(){try{const t=await Pt.get("settings/telemetry");this.enabled=t.data.result}catch(t){console.error(t)}}}},zN={class:"form-check form-switch my-3"},QN=["disabled"],KN={class:"form-check-label"},YN={for:"telemetryEnabled"},GN={href:"https://docs.evcc.io/docs/guides/setup/#telemetry--community-daten",target:"_blank"},ZN={key:1},XN=["innerHTML"];function JN(t,e,n,r,i,s){const o=Se("i18n-t");return D(),j("div",zN,[Cn(T("input",{id:"telemetryEnabled","onUpdate:modelValue":e[0]||(e[0]=a=>i.enabled=a),class:"form-check-input",type:"checkbox",role:"switch",disabled:!n.sponsor,onChange:e[1]||(e[1]=(...a)=>s.change&&s.change(...a))},null,40,QN),[[j4,i.enabled]]),T("div",KN,[T("label",YN,[We(Q(t.$t("footer.telemetry.optIn"))+" ",1),n.sponsor?(D(),Me(o,{key:0,tag:"span",keypath:"footer.telemetry.optInMoreDetails"},{default:bt(()=>[T("a",GN,Q(t.$t("footer.telemetry.optInMoreDetailsLink")),1)]),_:1})):(D(),j("span",ZN,Q(t.$t("footer.telemetry.optInSponsorship")),1))]),i.error?(D(),j("div",{key:0,class:"errorMessage my-1 text-danger",innerHTML:i.error},null,8,XN)):Ie("",!0)])])}const eM=Ee(WN,[["render",JN],["__scopeId","data-v-af252ca6"]]),tM={name:"Savings",components:{Sponsor:gN,SavingsTile:Q0,LiveCommunity:UN,TelemetrySettings:eM},mixins:[tn],props:{selfConsumptionPercent:Number,since:{type:Number,default:0},sponsor:String,amount:{type:Number,default:0},effectivePrice:{type:Number,default:0},totalCharged:{type:Number,default:0},gridCharged:{type:Number,default:0},selfConsumptionCharged:{type:Number,default:0},gridPrice:{type:Number},feedInPrice:{type:Number},currency:String},data(){return{communityView:!1,telemetryEnabled:!1}},computed:{percent(){return Math.round(this.selfConsumptionPercent)||0},effectivePriceFormatted(){const[t,e]=this.fmtPricePerKWh(this.effectivePrice,this.currency).split(" ");return{value:t,unit:e}},startDate(){return new Date(this.since*1e3)}},methods:{showCommunity(){this.communityView=!0},showMyData(){this.communityView=!1}}},nM={class:"btn btn-link pe-0 text-decoration-none evcc-default-text text-nowrap d-flex align-items-end","data-bs-toggle":"modal","data-bs-target":"#savingsModal"},rM={class:"d-inline d-sm-none"},sM={class:"d-none d-sm-inline"},iM=T("shopicon-regular-sun",{class:"ms-2 text-evcc"},null,-1),oM={id:"savingsModal",ref:"modal",class:"modal fade text-dark","data-bs-backdrop":"true",tabindex:"-1",role:"dialog","aria-hidden":"true"},aM={class:"modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable",role:"document"},lM={class:"modal-content"},cM={class:"modal-header"},uM={class:"modal-title"},fM=T("button",{type:"button",class:"btn-close","data-bs-dismiss":"modal","aria-label":"Close"},null,-1),dM={class:"modal-body"},hM={class:"nav nav-tabs"},mM={class:"nav-item"},pM={class:"nav-item"},gM={key:0,class:"my-4"},_M={class:"d-block d-lg-flex mb-2 justify-content-between"},vM={class:"my-3 lh-2"},bM={key:1,class:"my-4"};function yM(t,e,n,r,i,s){const o=Se("SavingsTile"),a=Se("LiveCommunity"),l=Se("TelemetrySettings"),c=Se("Sponsor");return D(),j("div",null,[T("button",nM,[T("span",rM,Q(t.$t("footer.savings.footerShort",{percent:s.percent})),1),T("span",sM,Q(t.$t("footer.savings.footerLong",{percent:s.percent})),1),iM]),(D(),Me(jo,{to:"body"},[T("div",oM,[T("div",aM,[T("div",lM,[T("div",cM,[T("h5",uM,Q(t.$t("footer.savings.modalTitle")),1),fM]),T("div",dM,[T("ul",hM,[T("li",mM,[T("a",{class:Ke(["nav-link",{active:!i.communityView}]),href:"#",onClick:e[0]||(e[0]=xo((...f)=>s.showMyData&&s.showMyData(...f),["prevent"]))},Q(t.$t("footer.savings.tabTitle")),3)]),T("li",pM,[T("a",{class:Ke(["nav-link",{active:i.communityView}]),href:"#",onClick:e[1]||(e[1]=xo((...f)=>s.showCommunity&&s.showCommunity(...f),["prevent"]))},Q(t.$t("footer.community.tabTitle")),3)])]),i.communityView?(D(),j("div",bM,[ge(a),ge(l,{sponsor:n.sponsor},null,8,["sponsor"])])):(D(),j("div",gM,[T("div",_M,[ge(o,{class:"text-accent1",icon:"sun",title:t.$t("footer.savings.percentTitle"),value:s.percent,unit:"%",sub1:t.$t("footer.savings.percentSelf",{self:t.fmtKw(n.selfConsumptionCharged*1e3,!0,!1)}),sub2:t.$t("footer.savings.percentGrid",{grid:t.fmtKw(n.gridCharged*1e3,!0,!1)})},null,8,["title","value","sub1","sub2"]),ge(o,{class:"text-accent2",icon:"receivepayment",title:t.$t("footer.savings.priceTitle"),value:s.effectivePriceFormatted.value,unit:s.effectivePriceFormatted.unit,sub1:t.$t("footer.savings.priceFeedIn",{feedInPrice:t.fmtPricePerKWh(n.feedInPrice,n.currency)}),sub2:t.$t("footer.savings.priceGrid",{gridPrice:t.fmtPricePerKWh(n.gridPrice,n.currency)})},null,8,["title","value","unit","sub1","sub2"]),ge(o,{class:"text-accent3",icon:"coinjar",title:t.$t("footer.savings.savingsTitle"),value:t.fmtMoney(n.amount,n.currency),unit:t.fmtCurrencySymbol(n.currency),sub1:t.$t("footer.savings.savingsComparedToGrid"),sub2:t.$t("footer.savings.savingsTotalEnergy",{total:t.fmtKw(n.totalCharged*1e3,!0,!1)})},null,8,["title","value","unit","sub1","sub2"])]),T("p",vM,[T("small",null,Q(t.$t("footer.savings.since",{since:t.fmtDayMonthYear(s.startDate)})),1)])])),ge(c,{sponsor:n.sponsor},null,8,["sponsor"])])])])],512)]))])}const wM=Ee(tM,[["render",yM]]),EM={name:"Footer",components:{Version:Kk,Savings:wM},props:{version:Object,sponsor:String,savings:Object},methods:{toggleHiddenFeatures(){const t=`\u{1F9EA} Experimentelle UI-Elemente ${this.$hiddenFeatures?"deaktivieren":"aktivieren"}`;window.confirm(t)&&(window.localStorage.hidden_features=!this.$hiddenFeatures,window.location.reload())}}},TM={class:"footer"},CM={class:"container py-2"},SM={class:"d-flex justify-content-between"};function AM(t,e,n,r,i,s){const o=Se("Version"),a=Se("Savings");return D(),j("footer",TM,[T("div",CM,[T("div",SM,[ge(o,Dn(Tn(n.version)),null,16),ge(a,ln(n.savings,{sponsor:n.sponsor}),null,16,["sponsor"])])])])}const xM=Ee(EM,[["render",AM]]),$M={name:"Site",components:{Loadpoints:YO,Energyflow:Cp,Footer:xM,Notifications:qS,TopNavigation:U0,Vehicles:sk},mixins:[tn,Nl],props:{loadpoints:Array,notifications:Array,offline:Boolean,gridConfigured:Boolean,gridPower:Number,homePower:Number,pvConfigured:Boolean,pvPower:Number,batteryConfigured:Boolean,batteryPower:Number,batterySoC:Number,gridCurrents:Array,prioritySoC:Number,siteTitle:String,vehicles:Array,auth:Object,currency:String,savingsAmount:Number,savingsEffectivePrice:Number,savingsGridCharged:Number,savingsSelfConsumptionCharged:Number,savingsSelfConsumptionPercent:Number,savingsSince:Number,savingsTotalCharged:Number,tariffFeedIn:Number,tariffGrid:Number,availableVersion:String,releaseNotes:String,hasUpdater:Boolean,uploadMessage:String,uploadProgress:Number,sponsor:String},computed:{energyflow:function(){return this.collectProps(Cp)},activeLoadpoints:function(){return this.loadpoints.filter(t=>t.chargePower>0)},activeLoadpointsCount:function(){return this.activeLoadpoints.length},vehicleIcons:function(){return this.activeLoadpointsCount?this.activeLoadpoints.map(t=>t.vehicleIcon||"car"):["car"]},loadpointsPower:function(){return this.loadpoints.reduce((t,e)=>(t+=e.chargePower||0,t),0)},topNavigation:function(){return{vehicleLogins:this.auth?this.auth.vehicles:{}}},showParkingLot:function(){return!1},footer:function(){return{version:{installed:window.evcc.version,commit:window.evcc.commit,available:this.availableVersion,releaseNotes:this.releaseNotes,hasUpdater:this.hasUpdater,uploadMessage:this.uploadMessage,uploadProgress:this.uploadProgress},sponsor:this.sponsor,savings:{since:this.savingsSince,totalCharged:this.savingsTotalCharged,gridCharged:this.savingsGridCharged,selfConsumptionCharged:this.savingsSelfConsumptionCharged,amount:this.savingsAmount,effectivePrice:this.savingsEffectivePrice,selfConsumptionPercent:this.savingsSelfConsumptionPercent,gridPrice:this.tariffGrid,feedInPrice:this.tariffFeedIn,currency:this.currency}}}}},PM={class:"d-flex flex-column site"},LM={class:"container px-4 top-area"},OM={class:"d-flex justify-content-between align-items-center my-3"},kM={class:"d-block my-0"},NM={class:"d-flex"},MM={class:"d-flex flex-column justify-content-between content-area"};function IM(t,e,n,r,i,s){const o=Se("Notifications"),a=Se("TopNavigation"),l=Se("Energyflow"),c=Se("Loadpoints"),f=Se("Vehicles"),m=Se("Footer");return D(),j("div",PM,[T("div",LM,[T("div",OM,[T("h1",kM,Q(n.siteTitle||"evcc"),1),T("div",NM,[ge(o,{notifications:n.notifications,class:"me-2"},null,8,["notifications"]),ge(a,Dn(Tn(s.topNavigation)),null,16)])]),ge(l,Dn(Tn(s.energyflow)),null,16)]),T("div",MM,[ge(c,{class:"mt-1 mt-sm-2 flex-grow-1",loadpoints:n.loadpoints,vehicles:n.vehicles},null,8,["loadpoints","vehicles"]),s.showParkingLot?(D(),Me(f,{key:0})):Ie("",!0),ge(m,Dn(Tn(s.footer)),null,16)])])}const DM=Ee($M,[["render",IM],["__scopeId","data-v-a79b3309"]]);var RM='';class FM extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=RM}}window.customElements.define("shopicon-regular-car1",FM);const VM={name:"StartupError",mixins:[Nl],props:{fatal:Array,config:String,file:String,line:Number,offline:Boolean},computed:{errors(){return this.fatal||[]}},methods:{shutdown(){Pt.post("shutdown")},scrollTo(t){const e=t.currentTarget.getAttribute("href").substring(1),n=document.getElementById(e);console.log({id:e,el:n}),n&&n.scrollIntoView({behavior:"smooth",block:"center"})}}},Y0=t=>(Ut("data-v-34002e97"),t=t(),jt(),t),qM={class:"container px-4"},HM={class:"d-flex justify-content-between align-items-center my-3"},BM={class:"d-block mt-0 d-flex"},UM=Y0(()=>T("shopicon-regular-car1",{size:"m",class:"ms-2 icon"},null,-1)),jM={class:"row mb-4"},WM={class:"fs-6 mb-3"},zM={href:"https://github.com/evcc-io/evcc/discussions"},QM={class:"row mb-4"},KM={class:"mb-3"},YM={class:"d-md-flex justify-content-between"},GM={class:"me-md-4"},ZM={class:"d-block"},XM=["href"],JM=["disabled"],eI={key:0},tI=Y0(()=>T("div",{class:"my-2"},null,-1)),nI={class:"py-2 text-muted config"},rI=["id"];function sI(t,e,n,r,i,s){const o=Se("i18n-t");return D(),j("div",qM,[T("div",HM,[T("h1",BM,[We(Q(t.$t("startupError.title"))+" ",1),UM])]),T("div",jM,[T("code",WM,[(D(!0),j(Be,null,_t(s.errors,(a,l)=>(D(),j("div",{key:l},Q(a),1))),128))]),ge(o,{tag:"p",keypath:"startupError.description"},{default:bt(()=>[T("a",zM,Q(t.$t("startupError.discussions")),1)]),_:1}),T("p",null,[T("em",null,Q(t.$t("startupError.hint")),1)])]),T("div",QM,[T("h5",KM,Q(t.$t("startupError.configuration")),1),T("div",YM,[T("p",GM,[T("span",ZM,[We(Q(t.$t("startupError.configFile"))+" ",1),T("code",null,Q(n.file),1)]),n.line?(D(),Me(o,{key:0,tag:"span",keypath:"startupError.lineError"},{default:bt(()=>[T("a",{href:`#line${n.line}`,onClick:e[0]||(e[0]=xo((...a)=>s.scrollTo&&s.scrollTo(...a),["prevent"]))},Q(t.$t("startupError.lineErrorLink",[n.line])),9,XM)]),_:1})):Ie("",!0),We(" "+Q(t.$t("startupError.fixAndRestart")),1)]),T("p",null,[T("button",{class:"btn btn-primary text-nowrap",type:"button",disabled:n.offline,onClick:e[1]||(e[1]=(...a)=>s.shutdown&&s.shutdown(...a))},Q(t.$t("startupError.restartButton")),9,JM)])]),n.config?(D(),j("code",eI,[tI,T("div",nI,[(D(!0),j(Be,null,_t(n.config.split(`
-`),(a,l)=>(D(),j("div",{id:`line${l+1}`,key:l,class:Ke(["m-0 px-2",{highlighted:n.line===l+1}])},Q(a)+"\xA0 ",11,rI))),128))])])):Ie("",!0)])])}const iI=Ee(VM,[["render",sI],["__scopeId","data-v-34002e97"]]);var oI='';class aI extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=oI}}window.customElements.define("shopicon-regular-cloud",aI);const lI={name:"OfflineIndicator",methods:{reload(){window.location.reload()}}},cI={class:"fixed-bottom alert alert-secondary d-flex justify-content-center align-items-center mb-0 rounded-0",role:"alert"},uI=T("shopicon-regular-cloud",{class:"me-2"},null,-1);function fI(t,e,n,r,i,s){return D(),j("div",cI,[uI,We(" "+Q(t.$t("offline.message"))+" ",1),T("button",{class:"btn btn-sm btn-link text-dark",onClick:e[0]||(e[0]=(...o)=>s.reload&&s.reload(...o))},Q(t.$t("offline.reload")),1)])}const dI=Ee(lI,[["render",fI]]),hI={name:"Main",components:{Site:DM,StartupError:iI,OfflineIndicator:dI},props:{notifications:Array,offline:Boolean},data:function(){return cu},computed:{startupErrors:function(){var t;return((t=this.state.fatal)==null?void 0:t.length)>0}}};function mI(t,e,n,r,i,s){const o=Se("OfflineIndicator"),a=Se("StartupError"),l=Se("Site");return D(),j("div",null,[n.offline?(D(),Me(o,{key:0})):Ie("",!0),s.startupErrors?(D(),Me(a,ln({key:1},t.state,{offline:n.offline}),null,16,["offline"])):(D(),Me(l,ln({key:2,notifications:n.notifications},t.state),null,16,["notifications"]))])}const pI=Ee(hI,[["render",mI]]);var gI='';class _I extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=gI}}window.customElements.define("shopicon-bold-arrowback",_I);const vI={name:"ChargingSessions",components:{TopNavigation:U0},mixins:[tn],props:{notifications:Array},data(){return{sessions:[]}},computed:{sessionsByMonthAndLoadpoint(){const t=this.sessions.map(n=>{const r=n.loadpoint||this.$t("main.loadpoint.fallbackName"),i=n.vehicle||this.$t("main.vehicle.unknown");return{...n,loadpoint:r,vehicle:i}}),e=this.groupByMonth(t);return Object.entries(e).map(([n,r])=>{const i=Object.entries(this.groupByLoadpoint(r)).map(([s,o])=>{const a=this.totalKWh(o);return{name:s,total:a,sessions:o}});return{month:n,loadpoints:i}})}},mounted(){this.loadSessions()},methods:{async loadSessions(){var e;const t=await Pt.get("sessions");this.sessions=(e=t.data)==null?void 0:e.result},groupByMonth(t){return t.reduce((e,n)=>{const r=new Date(n.finished),i=`${r.getFullYear()}.${r.getMonth()}`;return e[i]||(e[i]=[]),e[i].push(n),e},{})},groupByLoadpoint(t){return t.reduce((e,n)=>{const r=n.loadpoint;return e[r]||(e[r]=[]),e[r].push(n),e},{})},totalKWh(t){return t.reduce((e,n)=>e+n.chargedEnergy,0)*1e3},groupedKWh(t,e){const n=e.reduce((i,s)=>{const o=s[t];return i[o]||(i[o]=0),i[o]+=s.chargedEnergy*1e3,i},{}),r=Object.entries(n).map(([i,s])=>({name:i,energy:s}));return r.length>=2?r:[]},formatGroupHeadline(t){const e=new Date,[n,r]=t.split(".");return e.setMonth(r),e.setFullYear(n),this.fmtMonthYear(e)}}},fd=t=>(Ut("data-v-c2d84bb6"),t=t(),jt(),t),bI={class:"container px-4"},yI={class:"d-flex justify-content-between align-items-center py-3"},wI={class:"mb-1 pt-1 d-flex text-nowrap"},EI=fd(()=>T("shopicon-bold-arrowback",{size:"s",class:"back"},null,-1)),TI={class:"row"},CI={class:"col-12"},SI={class:"mb-4"},AI={class:"btn btn-outline-secondary text-nowrap my-2",href:"./api/sessions?format=csv",download:"sessions.csv"},xI={class:"mx-2"},$I={class:"d-flex align-items-baseline my-5"},PI={class:"me-4 mb-0"},LI={class:"d-flex align-items-baseline mb-3"},OI={class:"me-4 mb-0"},kI={class:"large"},NI={class:"breakdown text-gray d-sm-flex flex-sm-wrap ps-0 mb-2"},MI={class:"table-responsive my-3"},II={class:"table"},DI={scope:"col"},RI={scope:"col",class:"text-end ps-sm-4 pe-md-5"},FI={scope:"col",class:"ps-3 ps-md-4 ps-md-5"},VI={class:"text-nowrap text-end ps-sm-4 pe-md-5"},qI={class:"text-nowrap ps-3 ps-md-4 ps-md-5"},HI={class:"d-block d-sm-none"},BI=fd(()=>T("br",null,null,-1)),UI={class:"d-none d-sm-block"},jI=fd(()=>T("br",null,null,-1));function WI(t,e,n,r,i,s){const o=Se("router-link"),a=Se("TopNavigation");return D(),j("div",bI,[T("header",yI,[T("h1",wI,[ge(o,{class:"dropdown-item mx-2 me-2",to:"/"},{default:bt(()=>[EI]),_:1}),We(" "+Q(t.$t("sessions.title")),1)]),ge(a)]),T("div",TI,[T("main",CI,[T("div",SI,[T("a",AI,Q(t.$t("sessions.downloadCsv")),1)]),(D(!0),j(Be,null,_t(s.sessionsByMonthAndLoadpoint,l=>(D(),j("div",{key:l.month},[T("div",xI,[T("div",$I,[T("h2",PI,Q(s.formatGroupHeadline(l.month)),1)]),(D(!0),j(Be,null,_t(l.loadpoints,c=>(D(),j("div",{key:c.name},[T("div",LI,[T("h3",OI,Q(c.name),1),T("div",kI,Q(t.fmtKWh(c.total)),1)]),T("ul",NI,[(D(!0),j(Be,null,_t(s.groupedKWh("vehicle",c.sessions),(f,m)=>(D(),j("li",{key:m,class:"breakdown-item"},Q(f.name)+": "+Q(t.fmtKWh(f.energy)),1))),128))]),T("div",MI,[T("table",II,[T("thead",null,[T("tr",null,[T("th",DI,Q(t.$t("sessions.vehicle")),1),T("th",RI,Q(t.$t("sessions.energy")),1),T("th",FI,Q(t.$t("sessions.date")),1)])]),T("tbody",null,[(D(!0),j(Be,null,_t(c.sessions,(f,m)=>(D(),j("tr",{key:m},[T("td",null,Q(f.vehicle),1),T("td",VI,Q(t.fmtKWh(f.chargedEnergy*1e3)),1),T("td",qI,[T("span",HI,[We(Q(t.fmtFullDateTime(new Date(f.created),!0))+" ",1),BI,We(" "+Q(t.fmtFullDateTime(new Date(f.finished),!0)),1)]),T("span",UI,[We(Q(t.fmtFullDateTime(new Date(f.created),!1))+" ",1),jI,We(" "+Q(t.fmtFullDateTime(new Date(f.finished),!1)),1)])])]))),128))])])])]))),128))])]))),128))])])])}const zI=Ee(vI,[["render",WI],["__scopeId","data-v-c2d84bb6"]]);var QI=function(){function t(r,i){function s(){this.constructor=r}s.prototype=i.prototype,r.prototype=new s}function e(r,i,s,o,a,l){this.message=r,this.expected=i,this.found=s,this.offset=o,this.line=a,this.column=l,this.name="SyntaxError"}t(e,Error);function n(r){var i=arguments.length>1?arguments[1]:{},s={},o={start:Dd},a=Dd,l=function(){return th},c=s,f="#",m={type:"literal",value:"#",description:'"#"'},h=void 0,g={type:"any",description:"any character"},A="[",b={type:"literal",value:"[",description:'"["'},x="]",v={type:"literal",value:"]",description:'"]"'},S=function(u){jl($t("ObjectPath",u,At,xt))},$=function(u){jl($t("ArrayPath",u,At,xt))},E=function(u,p){return u.concat(p)},C=function(u){return[u]},N=function(u){return u},M=".",I={type:"literal",value:".",description:'"."'},R="=",G={type:"literal",value:"=",description:'"="'},oe=function(u,p){jl($t("Assign",p,At,xt,u))},ue=function(u){return u.join("")},de=function(u){return u.value},H='"""',F={type:"literal",value:'"""',description:'"\\"\\"\\""'},J=null,ee=function(u){return $t("String",u.join(""),At,xt)},ce='"',ve={type:"literal",value:'"',description:'"\\""'},be="'''",we={type:"literal",value:"'''",description:`"'''"`},Te="'",Ue={type:"literal",value:"'",description:`"'"`},Ae=function(u){return u},W=function(u){return u},ae="\\",X={type:"literal",value:"\\",description:'"\\\\"'},fe=function(){return""},$e="e",Ne={type:"literal",value:"e",description:'"e"'},xe="E",L={type:"literal",value:"E",description:'"E"'},_=function(u,p){return $t("Float",parseFloat(u+"e"+p),At,xt)},w=function(u){return $t("Float",parseFloat(u),At,xt)},O="+",V={type:"literal",value:"+",description:'"+"'},z=function(u){return u.join("")},Z="-",te={type:"literal",value:"-",description:'"-"'},re=function(u){return"-"+u.join("")},K=function(u){return $t("Integer",parseInt(u,10),At,xt)},q="true",U={type:"literal",value:"true",description:'"true"'},me=function(){return $t("Boolean",!0,At,xt)},_e="false",Oe={type:"literal",value:"false",description:'"false"'},Ve=function(){return $t("Boolean",!1,At,xt)},Re=function(){return $t("Array",[],At,xt)},it=function(u){return $t("Array",u?[u]:[],At,xt)},Wt=function(u){return $t("Array",u,At,xt)},Tr=function(u,p){return $t("Array",u.concat(p),At,xt)},Vi=function(u){return u},Cr=",",qi={type:"literal",value:",",description:'","'},Ft="{",gn={type:"literal",value:"{",description:'"{"'},Zo="}",_v={type:"literal",value:"}",description:'"}"'},vv=function(u){return $t("InlineTable",u,At,xt)},yd=function(u,p){return $t("InlineTableValue",p,At,xt,u)},bv=function(u){return"."+u},yv=function(u){return u.join("")},Hi=":",Bi={type:"literal",value:":",description:'":"'},wd=function(u){return u.join("")},Ed="T",Td={type:"literal",value:"T",description:'"T"'},wv="Z",Ev={type:"literal",value:"Z",description:'"Z"'},Tv=function(u,p){return $t("Date",new Date(u+"T"+p+"Z"),At,xt)},Cv=function(u,p){return $t("Date",new Date(u+"T"+p),At,xt)},Sv=/^[ \t]/,Av={type:"class",value:"[ \\t]",description:"[ \\t]"},Cd=`
+ ${t.fmtShortDurationUnit(i.chargeDurationInterpolated)}`,align:"end"},null,8,["label","value"]))]),RO,ge(m,ln(s.vehicle,{onTargetSocUpdated:s.setTargetSoC,onTargetEnergyUpdated:s.setTargetEnergy,onTargetTimeUpdated:s.setTargetTime,onTargetTimeRemoved:s.removeTargetTime,onChangeVehicle:s.changeVehicle,onRemoveVehicle:s.removeVehicle}),null,16,["onTargetSocUpdated","onTargetEnergyUpdated","onTargetTimeUpdated","onTargetTimeRemoved","onChangeVehicle","onRemoveVehicle"])])}const qO=Ee($O,[["render",FO],["__scopeId","data-v-f24c9e17"]]),VO={name:"Site",components:{Loadpoint:qO},props:{loadpoints:Array,vehicles:Array},data(){return{selectedIndex:0,snapTimeout:null}},mounted(){this.$refs.carousel.addEventListener("scroll",this.handleCarouselScroll,!1)},unmounted(){this.$refs.carousel&&this.$refs.carousel.removeEventListener("scroll",this.handleCarouselScroll)},methods:{handleCarouselScroll(){const{scrollLeft:t}=this.$refs.carousel,{offsetWidth:e}=this.$refs.carousel.children[0];this.selectedIndex=Math.round((t-7.5)/e)},selected(t){return this.selectedIndex===t},scrollTo(t){if(this.selectedIndex===t)return;this.selectedIndex=t;const e=this.$refs.carousel,n=e.children[0].offsetWidth;e.style.scrollSnapType="none",e.scrollTo({top:0,left:7.5+n*t,behavior:"smooth"}),clearTimeout(this.snapTimeout),this.snapTimeout=setTimeout(()=>{this.$refs.carousel.style.scrollSnapType="x mandatory"},1e3)}}},HO=t=>(Ut("data-v-024a6ae6"),t=t(),jt(),t),BO={class:"container container--loadpoint px-0 mb-md-2 d-flex flex-column justify-content-center"},UO={ref:"carousel",class:"carousel d-lg-flex flex-wrap"},jO={key:0,class:"d-flex d-lg-none justify-content-center"},WO=["onClick"],zO=HO(()=>T("shopicon-filled-circle",{class:"indicator-icon"},null,-1)),QO=[zO];function KO(t,e,n,r,i,s){const o=Se("Loadpoint");return D(),j("div",BO,[T("div",UO,[(D(!0),j(Be,null,_t(n.loadpoints,(a,l)=>(D(),j("div",{key:l,class:"flex-grow-1 mb-3 m-lg-0 p-lg-0"},[ge(o,ln(a,{id:l,vehicles:n.vehicles,class:["h-100",{"loadpoint-unselected":!s.selected(l)}],onClick:c=>s.scrollTo(l)}),null,16,["id","vehicles","class","onClick"])]))),128))],512),n.loadpoints.length>1?(D(),j("div",jO,[(D(!0),j(Be,null,_t(n.loadpoints,(a,l)=>(D(),j("button",{key:l,class:Ke(["btn btn-sm btn-link p-0 mx-1 indicator d-flex justify-content-center align-items-center evcc-default-text",{"indicator--selected":s.selected(l)}]),onClick:c=>s.scrollTo(l)},QO,10,WO))),128))])):Ie("",!0)])}const YO=Ee(VO,[["render",KO],["__scopeId","data-v-024a6ae6"]]),GO={name:"Vehicles",components:{Vehicle:ku},data(){return{refreshing:!1,vehicles:[{vehiclePresent:!0,vehicleTitle:"Ford Mustang Mach-E",vehicleSoC:46,vehicleRange:182,targetSoC:100},{vehiclePresent:!0,vehicleTitle:"Renault Twingo Electric",vehicleSoC:77,vehicleRange:98,targetSoC:90},{vehiclePresent:!0,vehicleTitle:"Blauer VW ID.4",vehicleSoC:16,vehicleRange:52,minSoC:35,targetSoC:60}]}},methods:{refresh(){this.refreshing=!0,window.setTimeout(()=>{this.refreshing=!1},5e3)}}},ZO=t=>(Ut("data-v-7430d6bb"),t=t(),jt(),t),XO={class:"container px-4 mb-3 mb-sm-4 d-flex justify-content-start align-items-center"},JO={class:"m-0"},ek=["disabled"],tk=ZO(()=>T("shopicon-regular-refresh",{class:"refresh-icon"},null,-1)),nk=[tk];function rk(t,e,n,r,i,s){const o=Se("Vehicle");return D(),j("div",null,[T("div",XO,[T("h2",JO,Q(t.$t("main.vehicles")),1),T("button",{class:Ke(["btn btn-link d-flex evcc-default-text p-2 ms-1 refresh",{"refresh--in-progress":i.refreshing}]),disabled:i.refreshing,onClick:e[0]||(e[0]=(...a)=>s.refresh&&s.refresh(...a))},nk,10,ek)]),T("div",{class:Ke(["container vehicles px-0 mb-5",`vehicles-${i.vehicles.length}`])},[(D(!0),j(Be,null,_t(i.vehicles,(a,l)=>(D(),Me(o,ln(a,{id:`vehicle_${l}`,key:l,class:"vehicle",parked:""}),null,16,["id"]))),128))],2)])}const sk=Ee(GO,[["render",rk],["__scopeId","data-v-7430d6bb"]]);var ik='';class ok extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=ik}}window.customElements.define("shopicon-filled-testtube",ok);const ak={name:"Logo"},cd=t=>(Ut("data-v-9d6237eb"),t=t(),jt(),t),lk={viewBox:"0 0 122 35",xmlns:"http://www.w3.org/2000/svg","fill-rule":"evenodd","clip-rule":"evenodd","stroke-linejoin":"round","stroke-miterlimit":"2"},ck=cd(()=>T("path",{d:"M13.082 29.071a12.384 12.384 0 01-9-3.42 12.192 12.192 0 01-3.54-9.12v-.64a15.394 15.394 0 011.47-6.83 10.825 10.825 0 014.17-4.64 11.64 11.64 0 016.15-1.63 10.45 10.45 0 018.21 3.26c2 2.194 3 5.297 3 9.31v2.76H7.382a6.348 6.348 0 002 4 5.997 5.997 0 004.16 1.49 7.305 7.305 0 006.1-2.84l3.31 3.73a10 10 0 01-4.13 3.39 13.309 13.309 0 01-5.74 1.18zm-.77-20.84a4.216 4.216 0 00-3.26 1.37 7.141 7.141 0 00-1.6 3.91h9.39v-.55a5.005 5.005 0 00-1.22-3.49 4.304 4.304 0 00-3.31-1.24zM36.452 20.331l4.7-17.09h7l-8.48 25.36h-6.44l-8.52-25.36h7l4.74 17.09zM85.542 23.611a4.444 4.444 0 003-1 3.638 3.638 0 001.22-2.75h6.32a8.668 8.668 0 01-1.4 4.73 9.145 9.145 0 01-3.79 3.3 11.736 11.736 0 01-5.29 1.19 10.912 10.912 0 01-8.54-3.46c-2.087-2.3-3.13-5.483-3.13-9.55v-.45c0-3.9 1.033-7.016 3.1-9.35a10.868 10.868 0 018.51-3.5c2.791-.134 5.524.84 7.6 2.71a9.626 9.626 0 012.9 7.21h-6.3a4.663 4.663 0 00-1.2-3.22 4.005 4.005 0 00-3.08-1.24 4.068 4.068 0 00-3.56 1.73c-.8 1.15-1.2 3-1.2 5.6v.7c0 2.61.39 4.49 1.19 5.63a4.092 4.092 0 003.65 1.72zM110.422 23.611a4.454 4.454 0 003-1 3.63 3.63 0 001.21-2.75h6.33a8.668 8.668 0 01-1.4 4.73 9.143 9.143 0 01-3.73 3.3 11.76 11.76 0 01-5.29 1.18 10.912 10.912 0 01-8.54-3.46c-2.087-2.3-3.13-5.483-3.13-9.55v-.45c0-3.9 1.033-7.016 3.1-9.35a10.85 10.85 0 018.57-3.49 10.575 10.575 0 017.6 2.71 9.598 9.598 0 012.91 7.21h-6.33a4.651 4.651 0 00-1.21-3.22 4.492 4.492 0 00-6.64.49c-.8 1.15-1.21 3-1.21 5.6v.7c0 2.607.4 4.484 1.2 5.63a4.09 4.09 0 003.56 1.72z",fill:"#fff",class:"letter","fill-rule":"nonzero"},null,-1)),uk=cd(()=>T("path",{d:"M58.462.751h9.22l-6.14 12.3h6.15l-11.53 21.51 2.3-15.36h-7.68l7.68-18.45z",fill:"#0fdd42","fill-rule":"nonzero"},null,-1)),fk=cd(()=>T("path",{fill:"none",d:"M-24.458-22.109h170v76h-170z"},null,-1)),dk=[ck,uk,fk];function hk(t,e,n,r,i,s){return D(),j("svg",lk,dk)}const mk=Ee(ak,[["render",hk],["__scopeId","data-v-9d6237eb"]]);var pk='';class gk extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=pk}}window.customElements.define("shopicon-regular-gift",gk);var _k='';class vk extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=_k}}window.customElements.define("shopicon-regular-moonstars",vk);const bk={name:"Version",components:{Logo:mk},props:{installed:String,available:String,releaseNotes:String,commit:String,hasUpdater:Boolean,uploadMessage:String,uploadProgress:Number},data:function(){return{updateStarted:!1,updateStatus:""}},computed:{githubHashUrl:function(){return`https://github.com/evcc-io/evcc/commit/${this.commit}`},newVersionAvailable:function(){return this.available&&this.installed!="[[.Version]]"&&this.installed!="0.0.1-alpha"&&this.available!=this.installed}},methods:{update:async function(){try{await Pt.post("update"),this.updateStatus=this.$t("footer.version.modalUpdateStatusStart"),this.updateStarted=!0}catch(t){this.updateStatus=`${this.$t("footer.version.modalUpdateStatusStart")} ${t}`}},releaseNotesUrl:function(t){return`https://github.com/evcc-io/evcc/releases/tag/${t}`}}},Ml=t=>(Ut("data-v-01984105"),t=t(),jt(),t),yk=["href"],wk=Ml(()=>T("shopicon-regular-moonstars",{class:"ms-2 text-gray-light"},null,-1)),Ek={key:1,href:"#","data-bs-toggle":"modal","data-bs-target":"#updateModal",class:"btn btn-link ps-0 text-decoration-none evcc-default-text text-nowrap d-flex align-items-end"},Tk=Ml(()=>T("shopicon-regular-gift",{class:"me-2"},null,-1)),Ck={class:"ms-2 d-none d-xs-block d-sm-none text-decoration-underline"},Sk={class:"ms-2 d-none d-sm-block text-gray-medium text-decoration-underline"},Ak=["href"],xk={id:"updateModal",class:"modal fade text-dark",tabindex:"-1",role:"dialog","aria-hidden":"true"},$k={class:"modal-dialog modal-dialog-centered modal-dialog-scrollable",role:"document"},Pk={class:"modal-content"},Lk={class:"modal-header"},Ok={class:"modal-title"},kk=Ml(()=>T("button",{type:"button",class:"btn-close","data-bs-dismiss":"modal","aria-label":"Close"},null,-1)),Nk={class:"modal-body"},Mk={key:0},Ik={class:"progress my-3"},Dk={key:1},Rk=["innerHTML"],Fk={key:1},qk=["href"],Vk={class:"modal-footer d-flex justify-content-between"},Hk=["disabled"],Bk=["disabled"],Uk={key:0},jk=Ml(()=>T("span",{class:"spinner-border spinner-border-sm",role:"status","aria-hidden":"true"},null,-1)),Wk={key:1},zk=["href"];function Qk(t,e,n,r,i,s){const o=Se("Logo");return D(),j("div",null,[n.commit?(D(),j("a",{key:0,href:s.githubHashUrl,target:"_blank",class:"btn btn-link ps-0 text-decoration-none evcc-default-text text-nowrap d-flex align-items-end"},[ge(o,{class:"logo me-2"}),We(" v"+Q(n.installed)+" ",1),wk],8,yk)):s.newVersionAvailable?(D(),j("button",Ek,[Tk,We(" v"+Q(n.installed)+" ",1),T("span",Ck,Q(t.$t("footer.version.availableShort")),1),T("span",Sk,Q(t.$t("footer.version.availableLong")),1)])):(D(),j("a",{key:2,href:s.releaseNotesUrl(n.installed),target:"_blank",class:"btn btn-link evcc-default-text ps-0 text-decoration-none text-nowrap d-flex align-items-end"},[ge(o,{class:"logo me-2"}),We(" v"+Q(n.installed),1)],8,Ak)),(D(),Me(jo,{to:"body"},[T("div",xk,[T("div",$k,[T("div",Pk,[T("div",Lk,[T("h5",Ok,Q(t.$t("footer.version.modalTitle")),1),kk]),T("div",Nk,[t.updateStarted?(D(),j("div",Mk,[T("p",null,Q(t.$t("footer.version.modalUpdateStarted")),1),T("div",Ik,[T("div",{class:"progress-bar progress-bar-striped progress-bar-animated",role:"progressbar",style:Yt({width:n.uploadProgress+"%"})},null,4)]),T("p",null,Q(t.updateStatus)+" "+Q(n.uploadMessage),1)])):(D(),j("div",Dk,[T("p",null,[T("small",null,Q(t.$t("footer.version.modalInstalledVersion"))+": "+Q(n.installed),1)]),n.releaseNotes?(D(),j("div",{key:0,innerHTML:n.releaseNotes},null,8,Rk)):(D(),j("p",Fk,[We(Q(t.$t("footer.version.modalNoReleaseNotes"))+" ",1),T("a",{href:s.releaseNotesUrl(n.available)},"GitHub",8,qk),We(". ")]))]))]),T("div",Vk,[T("button",{type:"button",class:"btn btn-outline-secondary",disabled:t.updateStarted,"data-bs-dismiss":"modal"},Q(t.$t("footer.version.modalCancel")),9,Hk),T("div",null,[n.hasUpdater?(D(),j("button",{key:0,type:"button",class:"btn btn-primary",disabled:t.updateStarted,onClick:e[0]||(e[0]=(...a)=>s.update&&s.update(...a))},[t.updateStarted?(D(),j("span",Uk,[jk,We(" "+Q(t.$t("footer.version.modalUpdate")),1)])):(D(),j("span",Wk,Q(t.$t("footer.version.modalUpdateNow")),1))],8,Bk)):(D(),j("a",{key:1,href:s.releaseNotesUrl(n.available),class:"btn btn-primary"},Q(t.$t("footer.version.modalDownload")),9,zk))])])])])])]))])}const Kk=Ee(bk,[["render",Qk],["__scopeId","data-v-01984105"]]);var Yo={};(function t(e,n,r,i){var s=!!(e.Worker&&e.Blob&&e.Promise&&e.OffscreenCanvas&&e.OffscreenCanvasRenderingContext2D&&e.HTMLCanvasElement&&e.HTMLCanvasElement.prototype.transferControlToOffscreen&&e.URL&&e.URL.createObjectURL);function o(){}function a(H){var F=n.exports.Promise,J=F!==void 0?F:e.Promise;return typeof J=="function"?new J(H):(H(o,o),null)}var l=function(){var H=Math.floor(16.666666666666668),F,J,ee={},ce=0;return typeof requestAnimationFrame=="function"&&typeof cancelAnimationFrame=="function"?(F=function(ve){var be=Math.random();return ee[be]=requestAnimationFrame(function we(Te){ce===Te||ce+H-1$1
").trim()}const WN={name:"TelemetrySettings",props:{sponsor:String},data(){return{enabled:!1,error:null}},async mounted(){await this.update()},methods:{async change(t){try{this.error=null;const e=await Pt.post(`settings/telemetry/${t.target.checked}`);this.enabled=e.data.result}catch(e){e.response&&(this.error=jN("**Error:** "+e.response.data.error),this.enabled=!1)}},async update(){try{const t=await Pt.get("settings/telemetry");this.enabled=t.data.result}catch(t){console.error(t)}}}},zN={class:"form-check form-switch my-3"},QN=["disabled"],KN={class:"form-check-label"},YN={for:"telemetryEnabled"},GN={href:"https://docs.evcc.io/docs/guides/setup/#telemetry--community-daten",target:"_blank"},ZN={key:1},XN=["innerHTML"];function JN(t,e,n,r,i,s){const o=Se("i18n-t");return D(),j("div",zN,[Cn(T("input",{id:"telemetryEnabled","onUpdate:modelValue":e[0]||(e[0]=a=>i.enabled=a),class:"form-check-input",type:"checkbox",role:"switch",disabled:!n.sponsor,onChange:e[1]||(e[1]=(...a)=>s.change&&s.change(...a))},null,40,QN),[[j4,i.enabled]]),T("div",KN,[T("label",YN,[We(Q(t.$t("footer.telemetry.optIn"))+" ",1),n.sponsor?(D(),Me(o,{key:0,tag:"span",keypath:"footer.telemetry.optInMoreDetails"},{default:bt(()=>[T("a",GN,Q(t.$t("footer.telemetry.optInMoreDetailsLink")),1)]),_:1})):(D(),j("span",ZN,Q(t.$t("footer.telemetry.optInSponsorship")),1))]),i.error?(D(),j("div",{key:0,class:"errorMessage my-1 text-danger",innerHTML:i.error},null,8,XN)):Ie("",!0)])])}const eM=Ee(WN,[["render",JN],["__scopeId","data-v-af252ca6"]]),tM={name:"Savings",components:{Sponsor:gN,SavingsTile:Q0,LiveCommunity:UN,TelemetrySettings:eM},mixins:[tn],props:{selfConsumptionPercent:Number,since:{type:Number,default:0},sponsor:String,amount:{type:Number,default:0},effectivePrice:{type:Number,default:0},totalCharged:{type:Number,default:0},gridCharged:{type:Number,default:0},selfConsumptionCharged:{type:Number,default:0},gridPrice:{type:Number},feedInPrice:{type:Number},currency:String},data(){return{communityView:!1,telemetryEnabled:!1}},computed:{percent(){return Math.round(this.selfConsumptionPercent)||0},effectivePriceFormatted(){const[t,e]=this.fmtPricePerKWh(this.effectivePrice,this.currency).split(" ");return{value:t,unit:e}},startDate(){return new Date(this.since*1e3)}},methods:{showCommunity(){this.communityView=!0},showMyData(){this.communityView=!1}}},nM={class:"btn btn-link pe-0 text-decoration-none evcc-default-text text-nowrap d-flex align-items-end","data-bs-toggle":"modal","data-bs-target":"#savingsModal"},rM={class:"d-inline d-sm-none"},sM={class:"d-none d-sm-inline"},iM=T("shopicon-regular-sun",{class:"ms-2 text-evcc"},null,-1),oM={id:"savingsModal",ref:"modal",class:"modal fade text-dark","data-bs-backdrop":"true",tabindex:"-1",role:"dialog","aria-hidden":"true"},aM={class:"modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable",role:"document"},lM={class:"modal-content"},cM={class:"modal-header"},uM={class:"modal-title"},fM=T("button",{type:"button",class:"btn-close","data-bs-dismiss":"modal","aria-label":"Close"},null,-1),dM={class:"modal-body"},hM={class:"nav nav-tabs"},mM={class:"nav-item"},pM={class:"nav-item"},gM={key:0,class:"my-4"},_M={class:"d-block d-lg-flex mb-2 justify-content-between"},vM={class:"my-3 lh-2"},bM={key:1,class:"my-4"};function yM(t,e,n,r,i,s){const o=Se("SavingsTile"),a=Se("LiveCommunity"),l=Se("TelemetrySettings"),c=Se("Sponsor");return D(),j("div",null,[T("button",nM,[T("span",rM,Q(t.$t("footer.savings.footerShort",{percent:s.percent})),1),T("span",sM,Q(t.$t("footer.savings.footerLong",{percent:s.percent})),1),iM]),(D(),Me(jo,{to:"body"},[T("div",oM,[T("div",aM,[T("div",lM,[T("div",cM,[T("h5",uM,Q(t.$t("footer.savings.modalTitle")),1),fM]),T("div",dM,[T("ul",hM,[T("li",mM,[T("a",{class:Ke(["nav-link",{active:!i.communityView}]),href:"#",onClick:e[0]||(e[0]=xo((...f)=>s.showMyData&&s.showMyData(...f),["prevent"]))},Q(t.$t("footer.savings.tabTitle")),3)]),T("li",pM,[T("a",{class:Ke(["nav-link",{active:i.communityView}]),href:"#",onClick:e[1]||(e[1]=xo((...f)=>s.showCommunity&&s.showCommunity(...f),["prevent"]))},Q(t.$t("footer.community.tabTitle")),3)])]),i.communityView?(D(),j("div",bM,[ge(a),ge(l,{sponsor:n.sponsor},null,8,["sponsor"])])):(D(),j("div",gM,[T("div",_M,[ge(o,{class:"text-accent1",icon:"sun",title:t.$t("footer.savings.percentTitle"),value:s.percent,unit:"%",sub1:t.$t("footer.savings.percentSelf",{self:t.fmtKw(n.selfConsumptionCharged*1e3,!0,!1)}),sub2:t.$t("footer.savings.percentGrid",{grid:t.fmtKw(n.gridCharged*1e3,!0,!1)})},null,8,["title","value","sub1","sub2"]),ge(o,{class:"text-accent2",icon:"receivepayment",title:t.$t("footer.savings.priceTitle"),value:s.effectivePriceFormatted.value,unit:s.effectivePriceFormatted.unit,sub1:t.$t("footer.savings.priceFeedIn",{feedInPrice:t.fmtPricePerKWh(n.feedInPrice,n.currency)}),sub2:t.$t("footer.savings.priceGrid",{gridPrice:t.fmtPricePerKWh(n.gridPrice,n.currency)})},null,8,["title","value","unit","sub1","sub2"]),ge(o,{class:"text-accent3",icon:"coinjar",title:t.$t("footer.savings.savingsTitle"),value:t.fmtMoney(n.amount,n.currency),unit:t.fmtCurrencySymbol(n.currency),sub1:t.$t("footer.savings.savingsComparedToGrid"),sub2:t.$t("footer.savings.savingsTotalEnergy",{total:t.fmtKw(n.totalCharged*1e3,!0,!1)})},null,8,["title","value","unit","sub1","sub2"])]),T("p",vM,[T("small",null,Q(t.$t("footer.savings.since",{since:t.fmtDayMonthYear(s.startDate)})),1)])])),ge(c,{sponsor:n.sponsor},null,8,["sponsor"])])])])],512)]))])}const wM=Ee(tM,[["render",yM]]),EM={name:"Footer",components:{Version:Kk,Savings:wM},props:{version:Object,sponsor:String,savings:Object}},TM={class:"footer"},CM={class:"container py-2"},SM={class:"d-flex justify-content-between"};function AM(t,e,n,r,i,s){const o=Se("Version"),a=Se("Savings");return D(),j("footer",TM,[T("div",CM,[T("div",SM,[ge(o,Dn(Tn(n.version)),null,16),ge(a,ln(n.savings,{sponsor:n.sponsor}),null,16,["sponsor"])])])])}const xM=Ee(EM,[["render",AM]]),$M={name:"Site",components:{Loadpoints:YO,Energyflow:Cp,Footer:xM,Notifications:VS,TopNavigation:U0,Vehicles:sk},mixins:[tn,Nl],props:{loadpoints:Array,notifications:Array,offline:Boolean,gridConfigured:Boolean,gridPower:Number,homePower:Number,pvConfigured:Boolean,pvPower:Number,batteryConfigured:Boolean,batteryPower:Number,batterySoC:Number,gridCurrents:Array,prioritySoC:Number,siteTitle:String,vehicles:Array,auth:Object,currency:String,savingsAmount:Number,savingsEffectivePrice:Number,savingsGridCharged:Number,savingsSelfConsumptionCharged:Number,savingsSelfConsumptionPercent:Number,savingsSince:Number,savingsTotalCharged:Number,tariffFeedIn:Number,tariffGrid:Number,availableVersion:String,releaseNotes:String,hasUpdater:Boolean,uploadMessage:String,uploadProgress:Number,sponsor:String},computed:{energyflow:function(){return this.collectProps(Cp)},activeLoadpoints:function(){return this.loadpoints.filter(t=>t.chargePower>0)},activeLoadpointsCount:function(){return this.activeLoadpoints.length},vehicleIcons:function(){return this.activeLoadpointsCount?this.activeLoadpoints.map(t=>t.vehicleIcon||"car"):["car"]},loadpointsPower:function(){return this.loadpoints.reduce((t,e)=>(t+=e.chargePower||0,t),0)},topNavigation:function(){return{vehicleLogins:this.auth?this.auth.vehicles:{}}},showParkingLot:function(){return!1},footer:function(){return{version:{installed:window.evcc.version,commit:window.evcc.commit,available:this.availableVersion,releaseNotes:this.releaseNotes,hasUpdater:this.hasUpdater,uploadMessage:this.uploadMessage,uploadProgress:this.uploadProgress},sponsor:this.sponsor,savings:{since:this.savingsSince,totalCharged:this.savingsTotalCharged,gridCharged:this.savingsGridCharged,selfConsumptionCharged:this.savingsSelfConsumptionCharged,amount:this.savingsAmount,effectivePrice:this.savingsEffectivePrice,selfConsumptionPercent:this.savingsSelfConsumptionPercent,gridPrice:this.tariffGrid,feedInPrice:this.tariffFeedIn,currency:this.currency}}}}},PM={class:"d-flex flex-column site"},LM={class:"container px-4 top-area"},OM={class:"d-flex justify-content-between align-items-center my-3"},kM={class:"d-block my-0"},NM={class:"d-flex"},MM={class:"d-flex flex-column justify-content-between content-area"};function IM(t,e,n,r,i,s){const o=Se("Notifications"),a=Se("TopNavigation"),l=Se("Energyflow"),c=Se("Loadpoints"),f=Se("Vehicles"),m=Se("Footer");return D(),j("div",PM,[T("div",LM,[T("div",OM,[T("h1",kM,Q(n.siteTitle||"evcc"),1),T("div",NM,[ge(o,{notifications:n.notifications,class:"me-2"},null,8,["notifications"]),ge(a,Dn(Tn(s.topNavigation)),null,16)])]),ge(l,Dn(Tn(s.energyflow)),null,16)]),T("div",MM,[ge(c,{class:"mt-1 mt-sm-2 flex-grow-1",loadpoints:n.loadpoints,vehicles:n.vehicles},null,8,["loadpoints","vehicles"]),s.showParkingLot?(D(),Me(f,{key:0})):Ie("",!0),ge(m,Dn(Tn(s.footer)),null,16)])])}const DM=Ee($M,[["render",IM],["__scopeId","data-v-a79b3309"]]);var RM='';class FM extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=RM}}window.customElements.define("shopicon-regular-car1",FM);const qM={name:"StartupError",mixins:[Nl],props:{fatal:Array,config:String,file:String,line:Number,offline:Boolean},computed:{errors(){return this.fatal||[]}},methods:{shutdown(){Pt.post("shutdown")},scrollTo(t){const e=t.currentTarget.getAttribute("href").substring(1),n=document.getElementById(e);console.log({id:e,el:n}),n&&n.scrollIntoView({behavior:"smooth",block:"center"})}}},Y0=t=>(Ut("data-v-34002e97"),t=t(),jt(),t),VM={class:"container px-4"},HM={class:"d-flex justify-content-between align-items-center my-3"},BM={class:"d-block mt-0 d-flex"},UM=Y0(()=>T("shopicon-regular-car1",{size:"m",class:"ms-2 icon"},null,-1)),jM={class:"row mb-4"},WM={class:"fs-6 mb-3"},zM={href:"https://github.com/evcc-io/evcc/discussions"},QM={class:"row mb-4"},KM={class:"mb-3"},YM={class:"d-md-flex justify-content-between"},GM={class:"me-md-4"},ZM={class:"d-block"},XM=["href"],JM=["disabled"],eI={key:0},tI=Y0(()=>T("div",{class:"my-2"},null,-1)),nI={class:"py-2 text-muted config"},rI=["id"];function sI(t,e,n,r,i,s){const o=Se("i18n-t");return D(),j("div",VM,[T("div",HM,[T("h1",BM,[We(Q(t.$t("startupError.title"))+" ",1),UM])]),T("div",jM,[T("code",WM,[(D(!0),j(Be,null,_t(s.errors,(a,l)=>(D(),j("div",{key:l},Q(a),1))),128))]),ge(o,{tag:"p",keypath:"startupError.description"},{default:bt(()=>[T("a",zM,Q(t.$t("startupError.discussions")),1)]),_:1}),T("p",null,[T("em",null,Q(t.$t("startupError.hint")),1)])]),T("div",QM,[T("h5",KM,Q(t.$t("startupError.configuration")),1),T("div",YM,[T("p",GM,[T("span",ZM,[We(Q(t.$t("startupError.configFile"))+" ",1),T("code",null,Q(n.file),1)]),n.line?(D(),Me(o,{key:0,tag:"span",keypath:"startupError.lineError"},{default:bt(()=>[T("a",{href:`#line${n.line}`,onClick:e[0]||(e[0]=xo((...a)=>s.scrollTo&&s.scrollTo(...a),["prevent"]))},Q(t.$t("startupError.lineErrorLink",[n.line])),9,XM)]),_:1})):Ie("",!0),We(" "+Q(t.$t("startupError.fixAndRestart")),1)]),T("p",null,[T("button",{class:"btn btn-primary text-nowrap",type:"button",disabled:n.offline,onClick:e[1]||(e[1]=(...a)=>s.shutdown&&s.shutdown(...a))},Q(t.$t("startupError.restartButton")),9,JM)])]),n.config?(D(),j("code",eI,[tI,T("div",nI,[(D(!0),j(Be,null,_t(n.config.split(`
+`),(a,l)=>(D(),j("div",{id:`line${l+1}`,key:l,class:Ke(["m-0 px-2",{highlighted:n.line===l+1}])},Q(a)+"\xA0 ",11,rI))),128))])])):Ie("",!0)])])}const iI=Ee(qM,[["render",sI],["__scopeId","data-v-34002e97"]]);var oI='';class aI extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=oI}}window.customElements.define("shopicon-regular-cloud",aI);const lI={name:"OfflineIndicator",methods:{reload(){window.location.reload()}}},cI={class:"fixed-bottom alert alert-secondary d-flex justify-content-center align-items-center mb-0 rounded-0",role:"alert"},uI=T("shopicon-regular-cloud",{class:"me-2"},null,-1);function fI(t,e,n,r,i,s){return D(),j("div",cI,[uI,We(" "+Q(t.$t("offline.message"))+" ",1),T("button",{class:"btn btn-sm btn-link text-dark",onClick:e[0]||(e[0]=(...o)=>s.reload&&s.reload(...o))},Q(t.$t("offline.reload")),1)])}const dI=Ee(lI,[["render",fI]]),hI={name:"Main",components:{Site:DM,StartupError:iI,OfflineIndicator:dI},props:{notifications:Array,offline:Boolean},data:function(){return cu},computed:{startupErrors:function(){var t;return((t=this.state.fatal)==null?void 0:t.length)>0}}};function mI(t,e,n,r,i,s){const o=Se("OfflineIndicator"),a=Se("StartupError"),l=Se("Site");return D(),j("div",null,[n.offline?(D(),Me(o,{key:0})):Ie("",!0),s.startupErrors?(D(),Me(a,ln({key:1},t.state,{offline:n.offline}),null,16,["offline"])):(D(),Me(l,ln({key:2,notifications:n.notifications},t.state),null,16,["notifications"]))])}const pI=Ee(hI,[["render",mI]]);var gI='';class _I extends HTMLElement{connectedCallback(){this.setAttribute("data-shopicon",!0),this.innerHTML=gI}}window.customElements.define("shopicon-bold-arrowback",_I);const vI={name:"ChargingSessions",components:{TopNavigation:U0},mixins:[tn],props:{notifications:Array},data(){return{sessions:[]}},computed:{sessionsByMonthAndLoadpoint(){const t=this.sessions.map(n=>{const r=n.loadpoint||this.$t("main.loadpoint.fallbackName"),i=n.vehicle||this.$t("main.vehicle.unknown");return{...n,loadpoint:r,vehicle:i}}),e=this.groupByMonth(t);return Object.entries(e).map(([n,r])=>{const i=Object.entries(this.groupByLoadpoint(r)).map(([s,o])=>{const a=this.totalKWh(o);return{name:s,total:a,sessions:o}});return{month:n,loadpoints:i}})}},mounted(){this.loadSessions()},methods:{async loadSessions(){var e;const t=await Pt.get("sessions");this.sessions=(e=t.data)==null?void 0:e.result},groupByMonth(t){return t.reduce((e,n)=>{const r=new Date(n.finished),i=`${r.getFullYear()}.${r.getMonth()}`;return e[i]||(e[i]=[]),e[i].push(n),e},{})},groupByLoadpoint(t){return t.reduce((e,n)=>{const r=n.loadpoint;return e[r]||(e[r]=[]),e[r].push(n),e},{})},totalKWh(t){return t.reduce((e,n)=>e+n.chargedEnergy,0)*1e3},groupedKWh(t,e){const n=e.reduce((i,s)=>{const o=s[t];return i[o]||(i[o]=0),i[o]+=s.chargedEnergy*1e3,i},{}),r=Object.entries(n).map(([i,s])=>({name:i,energy:s}));return r.length>=2?r:[]},formatGroupHeadline(t){const e=new Date,[n,r]=t.split(".");return e.setMonth(r),e.setFullYear(n),this.fmtMonthYear(e)}}},fd=t=>(Ut("data-v-c2d84bb6"),t=t(),jt(),t),bI={class:"container px-4"},yI={class:"d-flex justify-content-between align-items-center py-3"},wI={class:"mb-1 pt-1 d-flex text-nowrap"},EI=fd(()=>T("shopicon-bold-arrowback",{size:"s",class:"back"},null,-1)),TI={class:"row"},CI={class:"col-12"},SI={class:"mb-4"},AI={class:"btn btn-outline-secondary text-nowrap my-2",href:"./api/sessions?format=csv",download:"sessions.csv"},xI={class:"mx-2"},$I={class:"d-flex align-items-baseline my-5"},PI={class:"me-4 mb-0"},LI={class:"d-flex align-items-baseline mb-3"},OI={class:"me-4 mb-0"},kI={class:"large"},NI={class:"breakdown text-gray d-sm-flex flex-sm-wrap ps-0 mb-2"},MI={class:"table-responsive my-3"},II={class:"table"},DI={scope:"col"},RI={scope:"col",class:"text-end ps-sm-4 pe-md-5"},FI={scope:"col",class:"ps-3 ps-md-4 ps-md-5"},qI={class:"text-nowrap text-end ps-sm-4 pe-md-5"},VI={class:"text-nowrap ps-3 ps-md-4 ps-md-5"},HI={class:"d-block d-sm-none"},BI=fd(()=>T("br",null,null,-1)),UI={class:"d-none d-sm-block"},jI=fd(()=>T("br",null,null,-1));function WI(t,e,n,r,i,s){const o=Se("router-link"),a=Se("TopNavigation");return D(),j("div",bI,[T("header",yI,[T("h1",wI,[ge(o,{class:"dropdown-item mx-2 me-2",to:"/"},{default:bt(()=>[EI]),_:1}),We(" "+Q(t.$t("sessions.title")),1)]),ge(a)]),T("div",TI,[T("main",CI,[T("div",SI,[T("a",AI,Q(t.$t("sessions.downloadCsv")),1)]),(D(!0),j(Be,null,_t(s.sessionsByMonthAndLoadpoint,l=>(D(),j("div",{key:l.month},[T("div",xI,[T("div",$I,[T("h2",PI,Q(s.formatGroupHeadline(l.month)),1)]),(D(!0),j(Be,null,_t(l.loadpoints,c=>(D(),j("div",{key:c.name},[T("div",LI,[T("h3",OI,Q(c.name),1),T("div",kI,Q(t.fmtKWh(c.total)),1)]),T("ul",NI,[(D(!0),j(Be,null,_t(s.groupedKWh("vehicle",c.sessions),(f,m)=>(D(),j("li",{key:m,class:"breakdown-item"},Q(f.name)+": "+Q(t.fmtKWh(f.energy)),1))),128))]),T("div",MI,[T("table",II,[T("thead",null,[T("tr",null,[T("th",DI,Q(t.$t("sessions.vehicle")),1),T("th",RI,Q(t.$t("sessions.energy")),1),T("th",FI,Q(t.$t("sessions.date")),1)])]),T("tbody",null,[(D(!0),j(Be,null,_t(c.sessions,(f,m)=>(D(),j("tr",{key:m},[T("td",null,Q(f.vehicle),1),T("td",qI,Q(t.fmtKWh(f.chargedEnergy*1e3)),1),T("td",VI,[T("span",HI,[We(Q(t.fmtFullDateTime(new Date(f.created),!0))+" ",1),BI,We(" "+Q(t.fmtFullDateTime(new Date(f.finished),!0)),1)]),T("span",UI,[We(Q(t.fmtFullDateTime(new Date(f.created),!1))+" ",1),jI,We(" "+Q(t.fmtFullDateTime(new Date(f.finished),!1)),1)])])]))),128))])])])]))),128))])]))),128))])])])}const zI=Ee(vI,[["render",WI],["__scopeId","data-v-c2d84bb6"]]);var QI=function(){function t(r,i){function s(){this.constructor=r}s.prototype=i.prototype,r.prototype=new s}function e(r,i,s,o,a,l){this.message=r,this.expected=i,this.found=s,this.offset=o,this.line=a,this.column=l,this.name="SyntaxError"}t(e,Error);function n(r){var i=arguments.length>1?arguments[1]:{},s={},o={start:Dd},a=Dd,l=function(){return th},c=s,f="#",m={type:"literal",value:"#",description:'"#"'},h=void 0,g={type:"any",description:"any character"},A="[",b={type:"literal",value:"[",description:'"["'},x="]",v={type:"literal",value:"]",description:'"]"'},S=function(u){jl($t("ObjectPath",u,At,xt))},$=function(u){jl($t("ArrayPath",u,At,xt))},E=function(u,p){return u.concat(p)},C=function(u){return[u]},N=function(u){return u},M=".",I={type:"literal",value:".",description:'"."'},R="=",G={type:"literal",value:"=",description:'"="'},oe=function(u,p){jl($t("Assign",p,At,xt,u))},ue=function(u){return u.join("")},de=function(u){return u.value},H='"""',F={type:"literal",value:'"""',description:'"\\"\\"\\""'},J=null,ee=function(u){return $t("String",u.join(""),At,xt)},ce='"',ve={type:"literal",value:'"',description:'"\\""'},be="'''",we={type:"literal",value:"'''",description:`"'''"`},Te="'",Ue={type:"literal",value:"'",description:`"'"`},Ae=function(u){return u},W=function(u){return u},ae="\\",X={type:"literal",value:"\\",description:'"\\\\"'},fe=function(){return""},$e="e",Ne={type:"literal",value:"e",description:'"e"'},xe="E",L={type:"literal",value:"E",description:'"E"'},_=function(u,p){return $t("Float",parseFloat(u+"e"+p),At,xt)},w=function(u){return $t("Float",parseFloat(u),At,xt)},O="+",q={type:"literal",value:"+",description:'"+"'},z=function(u){return u.join("")},Z="-",te={type:"literal",value:"-",description:'"-"'},re=function(u){return"-"+u.join("")},K=function(u){return $t("Integer",parseInt(u,10),At,xt)},V="true",U={type:"literal",value:"true",description:'"true"'},me=function(){return $t("Boolean",!0,At,xt)},_e="false",Oe={type:"literal",value:"false",description:'"false"'},qe=function(){return $t("Boolean",!1,At,xt)},Re=function(){return $t("Array",[],At,xt)},it=function(u){return $t("Array",u?[u]:[],At,xt)},Wt=function(u){return $t("Array",u,At,xt)},Tr=function(u,p){return $t("Array",u.concat(p),At,xt)},qi=function(u){return u},Cr=",",Vi={type:"literal",value:",",description:'","'},Ft="{",gn={type:"literal",value:"{",description:'"{"'},Zo="}",_v={type:"literal",value:"}",description:'"}"'},vv=function(u){return $t("InlineTable",u,At,xt)},yd=function(u,p){return $t("InlineTableValue",p,At,xt,u)},bv=function(u){return"."+u},yv=function(u){return u.join("")},Hi=":",Bi={type:"literal",value:":",description:'":"'},wd=function(u){return u.join("")},Ed="T",Td={type:"literal",value:"T",description:'"T"'},wv="Z",Ev={type:"literal",value:"Z",description:'"Z"'},Tv=function(u,p){return $t("Date",new Date(u+"T"+p+"Z"),At,xt)},Cv=function(u,p){return $t("Date",new Date(u+"T"+p),At,xt)},Sv=/^[ \t]/,Av={type:"class",value:"[ \\t]",description:"[ \\t]"},Cd=`
`,Sd={type:"literal",value:`
-`,description:'"\\n"'},xv="\r",$v={type:"literal",value:"\r",description:'"\\r"'},Pv=/^[0-9a-f]/i,Lv={type:"class",value:"[0-9a-f]i",description:"[0-9a-f]i"},Ov=/^[0-9]/,kv={type:"class",value:"[0-9]",description:"[0-9]"},Nv="_",Mv={type:"literal",value:"_",description:'"_"'},Iv=function(){return""},Dv=/^[A-Za-z0-9_\-]/,Rv={type:"class",value:"[A-Za-z0-9_\\-]",description:"[A-Za-z0-9_\\-]"},Fv=function(u){return u.join("")},Ad='\\"',Vv={type:"literal",value:'\\"',description:'"\\\\\\""'},qv=function(){return'"'},xd="\\\\",Hv={type:"literal",value:"\\\\",description:'"\\\\\\\\"'},Bv=function(){return"\\"},$d="\\b",Uv={type:"literal",value:"\\b",description:'"\\\\b"'},jv=function(){return"\b"},Pd="\\t",Wv={type:"literal",value:"\\t",description:'"\\\\t"'},zv=function(){return" "},Ld="\\n",Qv={type:"literal",value:"\\n",description:'"\\\\n"'},Kv=function(){return`
-`},Od="\\f",Yv={type:"literal",value:"\\f",description:'"\\\\f"'},Gv=function(){return"\f"},kd="\\r",Zv={type:"literal",value:"\\r",description:'"\\\\r"'},Xv=function(){return"\r"},Nd="\\U",Jv={type:"literal",value:"\\U",description:'"\\\\U"'},Md=function(u){return y2(u.join(""))},Id="\\u",e2={type:"literal",value:"\\u",description:'"\\\\u"'},d=0,Ce=0,Ui=0,Vl={line:1,column:1,seenCR:!1},Xo=0,ql=[],ne=0,ie={},Jo;if("startRule"in i){if(!(i.startRule in o))throw new Error(`Can't start parsing from rule "`+i.startRule+'".');a=o[i.startRule]}function At(){return Hl(Ce).line}function xt(){return Hl(Ce).column}function Hl(u){function p(y,P,k){var B,Y;for(B=P;B