1import{p as fo,a as ho,r as po}from"../chunks/Be0yz_6Y.js";import{E as nn,V as Xn,o as li,W as Or,e as bo,g as Sa,c as Ta,S as yo,X as wo,p as an,l as Vr,k as qn,a as jr,n as ci,w as _o,z as Jn,y as xo,Q as ko,i as Co,M as Mo}from"../chunks/BgtS7yHa.js";import{v as Et,w as So,x as Qn,y as sr,G as di,z as $n,A as Ir,B as To,I as xn,C as ui,V as Ur,p as Ro,E as Eo,F as Do,N as kn,j as ea,H as Po}from"../chunks/VNEA7BO3.js";import{g as kr}from"../chunks/CJs61MB3.js";import{b as Ra,a as Lo,p as Ao,i as No}from"../chunks/ClttB-im.js";import{a as Oo}from"../chunks/IjpujC2b.js";import{b as Ea,f as Io,r as Fo,h as Fr,g as Cr}from"../chunks/D9ZWH3BP.js";import{D as Gr,R as Mr,m as mi,a as Wo,s as Da,F as Kr}from"../chunks/BqCgUPqD.js";import{p as Vo,i as Uo}from"../chunks/Bril0aFB.js";import"../chunks/DsnmJJEf.js";import{a as Sr,o as Tr}from"../chunks/Czj6Wchg.js";import{J as Ho,Q as zo,a8 as Zo,V as Bo,p as ct,b as ht,d as Re,n as bt,a as p,e as dt,l as N,h as e,m as ge,aJ as Yr,aL as jo,u as c,c as g,s as h,r as m,t as U,f as M,W as kt,i as Ut,j as jt,a$ as ta,k as ft,w as ra,$ as Go,af as Ko,bx as Yo,o as lr,bP as Xo,aZ as qo}from"../chunks/CrZWGQw6.js";import{d as _t,a as _e,s as j,e as Mt}from"../chunks/Cf9b1Pg_.js";import{s as mr,r as on,p as Ve,i as H}from"../chunks/Dm50tvsH.js";import{k as gi}from"../chunks/wN1Keh03.js";import{s as Ht}from"../chunks/DxT3OYjk.js";import{t as Dn}from"../chunks/7z66R2s9.js";import{h as Jo}from"../chunks/CtZPmqi9.js";import{s as F,a as Ct,i as yr,f as wr,b as vi,r as Pn,d as Qo,h as Pa}from"../chunks/DnKQ9cPv.js";import{s as He,c as Gt}from"../chunks/Dz3h3GFh.js";import{b as Ot}from"../chunks/C6XItoiV.js";import{d as $o,c as es}from"../chunks/B1vmx_uJ.js";import{r as La}from"../chunks/7iij31Vp.js";import{p as Aa}from"../chunks/BOaKQnFg.js";import{a as ts,f as Na}from"../chunks/DQdCbt27.js";import{M as Rr}from"../chunks/Bl3PKCix.js";import{M as rs}from"../chunks/C6J9WEQ1.js";import{P as ns}from"../chunks/226Hf6RT.js";import{a as as,b as is}from"../chunks/D-LcRH8F.js";import{F as os}from"../chunks/Dwg7Wjb6.js";import{F as ss}from"../chunks/lRWLs3qQ.js";import{F as ls,a as cs}from"../chunks/BmyuqAmk.js";import{F as ds}from"../chunks/DUsJAg1M.js";import{f as us}from"../chunks/CIwIcka0.js";import{T as Ln,C as na,S as aa,b as An,k as ms,l as gs,w as vs}from"../chunks/sCrROROJ.js";import"../chunks/CUdGVStK.js";import"../chunks/fvGWXswz.js";import{C as fs}from"../chunks/4zIuwugW.js";import"../chunks/BB0OkHMs.js";import{t as Oa,B as hs}from"../chunks/DZ38pfm9.js";import{a as fi,e as Ia,d as Xr}from"../chunks/X60pCNnK.js";import{_ as ps}from"../chunks/PPVm8Dsz.js";import{a as hi}from"../chunks/CNOJyinb.js";import{b as xr}from"../chunks/B6lfLGkN.js";import{g as ia,f as bs}from"../chunks/C-sV3ZCx.js";import{c as pi}from"../chunks/CRF6s2XQ.js";import{c as ys}from"../chunks/DyozxAKL.js";import{I as bi}from"../chunks/BzoNmeXd.js";import{P as ws}from"../chunks/BxVj67iA.js";import{P as _s}from"../chunks/CehCZesk.js";import{D as qr}from"../chunks/CRma1Vqn.js";import{R as Nn}from"../chunks/DzQTKKC6.js";import{e as Ge,i as On}from"../chunks/DvQYBH6E.js";import{e as xs,g as Cn}from"../chunks/BZgZkgzk.js";import{f as ks}from"../chunks/DpT7U2b2.js";import{M as Cs,B as Ms}from"../chunks/CuYJLgUt.js";import{S as Fa}from"../chunks/DrbsyAvx.js";import{C as Ss}from"../chunks/Dj5ASKCM.js";import{B as Ts}from"../chunks/B7yIcEVE.js";import{B as Rs}from"../chunks/Cu-ihsLb.js";import{S as Es}from"../chunks/B0jbnLQ-.js";import{X as yi}from"../chunks/C5KeTjzm.js";import{M as Ds}from"../chunks/D5kbE91B.js";import{m as Ps}from"../chunks/DV_YKk_K.js";import{a as gr,c as wi}from"../chunks/5wtiTFHY.js";import{L as Ls}from"../chunks/By0xJIR9.js";import{T as As}from"../chunks/BEvl4EX7.js";import{S as _i}from"../chunks/DqUVYo7n.js";import{a as Ns}from"../chunks/CQqAv5X3.js";import{C as Os}from"../chunks/BgyY4Nbn.js";import{C as Is}from"../chunks/DThU0_wh.js";import{c as xi}from"../chunks/Ciqn2WuZ.js";import{s as Fs}from"../chunks/BvaVSrWj.js";import{f as In}from"../chunks/b1-d2NKg.js";import{C as Ws}from"../chunks/DeC6Z0qD.js";import{a as Vs,b as Wa}from"../chunks/CElzeSkq.js";import{c as Us}from"../chunks/DKITUnbL.js";import{r as Hs}from"../chunks/THlD9PDS.js";function zs(r,t){Ho&&zo(Zo(r)),Bo(()=>{var a=t();for(var n in a){var i=a[n];i?r.style.setProperty(n,i):r.style.removeProperty(n)}})}var Zs=new Set(["$$slots","$$events","$$legacy"]);function Bs(r,t){ct(t,!0);let a=on(t,Zs);const n=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M9 3v18"}],["path",{d:"m16 15-3-3 3-3"}]];bi(r,mr({name:"panel-left-close"},()=>a,{get iconNode(){return n},children:(i,o)=>{var l=ht(),s=Re(l);Ht(s,()=>t.children??bt),p(i,l)},$$slots:{default:!0}}
1)),dt()}var js=new Set(["$$slots","$$events","$$legacy"]);function Gs(r,t){ct(t,!0);let a=on(t,js);const n=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M15 3v18"}],["path",{d:"m8 9 3 3-3 3"}]];bi(r,mr({name:"panel-right-close"},()=>a,{get iconNode(){return n},children:(i,o)=>{var l=ht(),s=Re(l);Ht(s,()=>t.children??bt),p(i,l)},$$slots:{default:!0}})),dt()}function Ks(r){let t=ge(!1),a=()=>{};const n=r.inverted?-1:1,i=o=>Math.min(r.max(),Math.max(r.min(),o));return Sr(()=>a()),{get dragging(){return e(t)},start(o){if(o.button!==0)return;o.preventDefault(),a(),N(t,!0);const l=r.axis==="x"?o.clientX:o.clientY,s=r.get(),u=r.scale?.()??1;function d(b){if(b.pointerId!==o.pointerId)return;const S=r.axis==="x"?b.clientX:b.clientY;r.set(i(s+(S-l)*u*n))}function f(b){b.pointerId===o.pointerId&&(a(),r.commit?.())}a=()=>{N(t,!1),window.removeEventListener("pointermove",d),window.removeEventListener("pointerup",f),window.removeEventListener("pointercancel",f)},window.addEventListener("pointermove",d),window.addEventListener("pointerup",f),window.addEventListener("pointercancel",f)},keydown(o){const l=r.axis==="x"?"ArrowLeft":"ArrowUp",s=r.axis==="x"?"ArrowRight":"ArrowDown";if(![l,s,"Home","End"].includes(o.key))return;o.preventDefault();const u=(r.step??10)*(o.shiftKey?5:1),d=o.key==="Home"?r.min():o.key==="End"?r.max():r.get()+(o.key===l?-u:u)*n;r.set(i(d)),r.commit?.()}}}function Jr(r){const t=r.axis??"x";let a=ge(Yr(r.initial)),n=c(()=>Math.min(r.max(),Math.max(r.min(),e(a)))),i=ge(void 0),o=ge(void 0);function l(d){if(r.storageKey)try{localStorage.setItem(r.storageKey,String(d))}catch{}}Tr(()=>{if(r.storageKey)try{const d=Number(localStorage.getItem(r.storageKey));Number.isFinite(d)&&d>0&&N(a,d,!0)}catch{}});const s=Ks({axis:t,get:()=>e(n),set:d=>{N(a,d,!0)},min:r.min,max:r.max,scale:r.scale,inverted:r.inverted,step:r.step,commit:()=>l(e(a))});async function u(d){r.setOpen?.(d),await jo(),(d?r.focusOnOpen?.()??e(o):e(i))?.focus()}return{get size(){return e(n)},get dragging(){return s.dragging},get start(){return s.start},get keydown(){return s.keydown},get opener(){return e(i)},set opener(d){N(i,d,!0)},get closer(){return e(o)},set closer(d){N(o,d,!0)},open:()=>u(!0),close:()=>u(!1)}}function ki({containerWidth:r,minPx:t,reservedPx:a,maxPct:n,wide:i,narrowMaxPct:o}){const l=Math.min(80,r?t/r*100:30),s=i&&r?Math.max(l,Math.min(n,(r-a)/r*100)):o;return{min:l,max:s}}const oa=[{key:"energy",label:"Energy"},{key:"power",label:"Av power"},{key:"contribution",label:"Contribution"},{key:"price",label:"Av price"},{key:"emissions",label:"Emissions"},{key:"intensity",label:"Intensity"}],vr=oa.map(r=>r.key);function Ys(r){return Array.isArray(r)?vr.filter(t=>r.includes(t)):[...vr]}const Xs=["demand","renewables","curtailment-solar","curtailment-wind"],Ci="#C74523",Mi=kr("renewables"),Er=[{id:"curtailment_wind",overlay:"curtailment-wind",label:"Curtailment (Wind)",colour:kr("wind")},{id:"curtailment_solar",overlay:"curtailment-solar",label:"Curtailment (Solar)",colour:kr("solar_utility")}],qs=Object.fromEntries(Er.map(r=>[r.id,r.colour]));function Js(r){return Er.find(t=>t.id===r)?.overlay??null}const Va=["renewables","solar_wind","solar","wind","gas","coal"],ar={renewables:"Renewables",solar_wind:"Solar + Wind",solar:"Solar",wind:"Wind",gas:"Gas",coal:"Coal",hydro:"Hydro"},Qr=[{id:"intensity",label:"Carbon intensity",shortLabel:"Intensity",group:"Emissions",kind:"intensity"},...Va.map(r=>({id:r==="renewables"?"generation":`${r}_generation`,fuel:r,label:`${ar[r]} generation`,shortLabel:ar[r],group:"Generation",kind:"energy"})),{id:"net_imports_share",label:"Net imports proportion",shortLabel:"Net imports",group:"Proportion",kind:"share"},...Va.map(r=>({id:r==="renewables"?"share":`${r}_share`,fuel:r,label:`${ar[r]} proportion`,shortLabel:ar[r],group:"Proportion",kind:"share"})),...["solar","wind","hydro","gas","coal"].map(r=>({id:`${r}_value`,fuel:r,label:`${ar[r]} value`,shortLabel:`${ar[r]} value`,group:"Prices",kind:"price"})),{id:"price",label:"Volume-weighted price",shortLabel:"VW price",group:"Prices",kind:"price"},{id:"price_real",label:"Volume-weighted price (inflation adjusted)",shortLabel:"Real VW price",group:"Prices",kind:"price"}];Qr.map(r=>r.id);const sa=["intensity","share"];function or(r){if(r==="price")return"price_real";const t=zt(r);return t.kind==="energy"?t.fuel==="renewables"?"share":`${t.fuel}_share`:r}const la=Qr.filter(r=>r.kind!=="energy"&&r.id!=="price").map(r=>({...r,label:r.id==="price_real"?"Volume-weighted price":r.kind==="share"&&r.fuel?ar[r.fuel]:r.label,group:r.kind==="share"?"Generation / Proportion":r.group})),Ua=[...new Set(la.map(r=>r.group))];function Qs(r,t=[]){return r.map(a=>t.find(n=>or(n)===a)??a)}const zt=r=>Qr.find(t=>
1t.id===r)??Qr[0];function ca(r,t,a=!1){const n=zt(r);return n.kind==="energy"?a?"MWh":"GWh":n.kind==="intensity"?"kgCOâe/MWh":n.kind==="price"?"$/MWh":`% ${r==="net_imports_share"||t==="demand"?"demand":"generation"}`}const sn=["solar","wind","hydro","gas","coal"];function da(r,t){return Number.isFinite(r)?(zt(t).kind==="energy"?Number(r)/1e3:Number(r)).toLocaleString("en-AU",{maximumFractionDigits:1}):"â"}function ua(r){return Date.parse(String(r).slice(0,19)+"Z")}function $s(r,t){return r===t||r.startsWith(`${t}_`)}function Si(r,t){const a=(r?.data??[]).filter(o=>o.metric===t).flatMap(o=>o.results??[]).filter(o=>(o.columns?.fueltech??o.name)!=="battery");if(!a.length)return[];const n=a.map(o=>{const l=new Map((o.data??[]).map(([s,u])=>[ua(s),u]));return{tech:o.columns?.fueltech??o.name??"",values:l,first:Math.min(...l.keys()),last:Math.max(...l.keys())}});return[...new Set(n.flatMap(o=>[...o.values.keys()]))].filter(Number.isFinite).sort((o,l)=>o-l).map(o=>{const l=s=>{if(!s.length)return 0;const u=s.filter(d=>o>=d.first&&o<=d.last).map(d=>d.values.get(o));return u.every(Number.isFinite)?u.map(Number).reduce((d,f)=>d+f,0):null};return{time:o,date:new Date(o),...Object.fromEntries(sn.map(s=>[`${s}_${t}`,l(n.filter(u=>$s(u.tech,s)))])),...t==="market_value"?{market_value:l(n)}:{}}})}function el(r){const t=Si(r,"market_value");return t.length?{data:t,seriesNames:[...sn.map(a=>`${a}_market_value`),"market_value"],seriesLabels:{},seriesColours:{}}:null}function tl(r){const t=(r?.data??[]).flatMap(n=>(n.results??[]).map(i=>({metric:n.metric,values:new Map((i.data??[]).map(([o,l])=>[ua(o),l]))})));return{data:[...new Set(t.flatMap(n=>[...n.values.keys()]))].sort((n,i)=>n-i).map(n=>{const i=t.filter(l=>l.metric==="flow_imports_energy").map(l=>l.values.get(n)),o=t.filter(l=>l.metric==="flow_exports_energy").map(l=>l.values.get(n));return{time:n,date:new Date(n),net_imports:i.length&&o.length&&[...i,...o].every(Number.isFinite)?i.map(Number).reduce((l,s)=>l+Math.abs(Number(s)),0)-o.map(Number).reduce((l,s)=>l+Math.abs(Number(s)),0):null}}),seriesNames:["net_imports"],seriesLabels:{},seriesColours:{}}}function Jt(r,t,a){const n=(d,f,b=1)=>Number.isFinite(d)&&Number.isFinite(f)&&f>0?d/f*b:null,i=(d,f)=>Number.isFinite(d)&&Number.isFinite(f)?d+f:null,o=zt(t),l=o.fuel,s=l==="renewables"?r?.renewables:l==="solar_wind"?i(r?.solar_energy,r?.wind_energy):r?.[`${l}_energy`];if(t==="intensity")return n(r?.emissions,r?.energy_mwh,1e3);if(t==="price"||t==="price_real")return n(r?.[t==="price"?"market_value":"market_value_real"],r?.energy_mwh);if(t==="net_imports_share")return n(r?.net_imports,r?.demand_gross,100);const u=o.kind;return u==="energy"?Number.isFinite(s)?s:null:u==="price"?n(r?.[`${l}_market_value`],s):n(s,a==="generation"?r?.generation_mwh:r?.demand_gross,100)}function Dr(r,t,a){return r.filter(n=>!t.includes(n)&&(a==="demand"||n!=="imports"))}function Ti(r,t,a=0){return typeof r=="number"&&Number.isFinite(r)&&typeof t=="number"&&Number.isFinite(t)&&t>a?r/t*100:null}function rl({generationRows:r,demandRows:t,seriesNames:a,loadSeriesIds:n,mode:i,ready:o=!0}){const l=Dr(a,n,"generation"),s=Dr(a,n,i),u=new Map;if(o)if(i==="demand")for(const d of t)u.set(d.time,d[Gr]);else for(const d of r){const f=l.map(b=>d[b]).filter(b=>b!=null);u.set(d.time,f.length?f.reduce((b,S)=>b+S,0):null)}return{label:i==="generation"?"% of generation":"% of gross demand",excludedSeriesNames:a.filter(d=>!s.includes(d)),transform(d,f){return{...d,...Object.fromEntries(f.map(b=>[b,Ti(d[b],u.get(d.time))]))}}}}const Dt=[...Ea.filter(r=>r.value!=="_all").map(r=>({...r,shortLabel:r.value==="wem"?"WA (WEM)":r.shortLabel})),Ea[0],{...Io,label:"All Regions (NEM + WEM)",shortLabel:"All Regions"}],Pr=366*864e5,Qt=365*864e5,nl=3*365*864e5,Ri=Dt.slice(0,6).map(r=>r.value),Fn=[{value:"1d",label:"Daily"},{value:"12mr",label:"12-month rolling"},{value:"1M",label:"Monthly"},{value:"1y",label:"Calendar year"},{value:"fy",label:"Financial year"}];function ln(r=void 0){const t=Array.isArray(r?.regions)?Dt.filter(o=>r.regions?.includes(o.value)).map(o=>o.value):[...Ri],a=Number(r?.start),n=Number(r?.end),i=Number.isFinite(a)&&Number.isFinite(n)&&a>=nn&&n>a;return{interval:Fn.some(o=>o.value===r?.interval)?String(r?.interval):"12mr",regions:t,charts:Array.isArray(r?.charts)?la.flatMap(({id:o})=>{const l=r.charts?.find(s=>
1or(s)===o);return l?[l]:[]}):[...sa],display:r?.display==="stripes"?"stripes":"charts",mode:r?.mode==="generation"?"generation":"share",basis:r?.basis==="generation"?"generation":"demand",start:i?a:null,end:i?n:null,table:typeof r?.table=="boolean"?r.table:null}}function al(r){return ln({charts:r.has("compare-charts")?(r.get("compare-charts")??"").split(","):void 0,display:r.get("compare-display")??void 0,interval:r.get("compare-interval")??void 0,regions:r.has("compare-regions")?(r.get("compare-regions")??"").split(","):void 0,mode:r.get("compare-renewables")==="generation"?"generation":"share",basis:r.get("compare-basis")==="generation"?"generation":"demand",start:Number(r.get("compare-start")),end:Number(r.get("compare-end")),table:r.has("compare-table")?r.get("compare-table")!=="0":null})}function il(r,t){const a=ln(t),n={"compare-charts":a.charts.join(",")===sa.join(",")?null:a.charts.join(","),"compare-display":a.display==="charts"?"":a.display,"compare-interval":a.interval==="12mr"?"":a.interval,"compare-regions":a.regions.join(",")===Ri.join(",")?null:a.regions.join(","),"compare-renewables":a.mode==="share"?"":a.mode,"compare-basis":a.basis==="demand"?"":a.basis,"compare-start":a.start==null?"":String(a.start),"compare-end":a.end==null?"":String(a.end),"compare-table":a.table==null?"":a.table?"1":"0"};for(const[i,o]of Object.entries(n))o||["compare-regions","compare-charts"].includes(i)&&o===""?r.set(i,o):r.delete(i)}const Wn=["emissions","energy_mwh","generation_mwh","renewables","demand_gross","net_imports","market_value","market_value_real",...sn.flatMap(r=>[`${r}_energy`,`${r}_market_value`])];function $t(r,t=0){const a=new Date(r);return Date.UTC(a.getUTCFullYear(),a.getUTCMonth()+t,1)}function Ei(r,t=0){const a=new Date(r);return Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate()+t)}function Lr(r,t){return t==="1d"?Ei(r,1):$t(r,t==="fy"||t==="1y"?12:1)}function ol(r){const t=r+288e5;return{start:nn,end:$t(t),dayEnd:Ei(t)}}function Di(r,t){return{start:r.start,end:t==="1d"?r.dayEnd:r.end}}function sl(r,t){return r==="1d"?{start:Math.max(t.start,t.end-Qt),end:t.end}:r==="1M"||r==="12mr"?{start:Math.max(t.start,$t(t.end,-60)),end:t.end}:{start:t.start,end:t.end}}function ll(r){return r==="1d"?"Latest year":r==="1M"||r==="12mr"?"Last 5 years":"All history"}function $r(r,t,a,n="12mr"){const i=Math.min(n==="1d"?Qt:Math.max(t-r,Pr),a.end-a.start),o=Math.max(a.start+i,Math.min(t,a.end));return{start:o-i,end:o}}function cl(r){const t=Et("detailed"),a=So(r,{intervalHours:1,networkTimezone:"+00:00",groupMap:t.fuelTechs}),n=Qn(r,{groupMap:t.fuelTechs,groupOrder:t.order,groupLabels:t.labels,loadsToInvert:sr(t),getColour:()=>"#333333",metricFilter:"energy",networkTimezone:"+00:00"});if(!a||!n)return null;const i=Dr(n.seriesNames,sr(t),"generation"),o=new Map(n.data.map(u=>[u.time,u])),l=new Map;for(const u of r.data??[])for(const d of u.results??[]){const f=d.columns?.fueltech??d.name;if(!(f==="battery"||!t.fuelTechs[f]))for(const[b,S]of d.data??[]){if(Number.isFinite(S))continue;const C=ua(b),T=l.get(C)??new Set;T.add(u.metric==="emissions"?"emissions":"energy_mwh"),u.metric==="energy"&&i.includes(f)&&T.add("generation_mwh"),l.set(C,T)}}const s=new Map(Si(r,"energy").map(u=>[u.time,u]));return{...a,seriesNames:["emissions","energy_mwh","generation_mwh",...sn.map(u=>`${u}_energy`)],data:a.data.map(u=>{const d=o.get(u.time),f=i.map(S=>d?.[S]).filter(S=>S!=null),b={...u,...s.get(u.time),generation_mwh:f.length?f.reduce((S,C)=>S+C,0):null};for(const S of l.get(u.time)??[])b[S]=null;return b})}}function Mn(r,t){const a=new Map;for(const n of[...r,...t])a.set(n.time,{...a.get(n.time),...n});return[...a.values()].sort((n,i)=>n.time-i.time)}function dl(r,t){const a=new Map(t.map(n=>[n.time,n]));return r.map(n=>({date:n.date,time:n.time,...Object.fromEntries(Wn.map(i=>[i,Number.isFinite(n[i])&&Number.isFinite(a.get(n.time)?.[i])?n[i]+a.get(n.time)[i]:null]))}))}function ul(r,t,a){const n=r.filter(o=>o.time<a);if(t==="1M"||t==="1d")return n;if(t==="12mr")return Vo(n,Wn);const i=new Map;for(const o of n){const l=new Date(o.time),s=l.getUTCFullYear()-(t==="fy"&&l.getUTCMonth()<6?1:0),u=Date.UTC(s,t==="fy"?6:0,1),d=i.get(u)??new Map;d.set(o.time,o),i.set(u,d)}return[...i.entries()].filter(([o])=>$t(o,12)<=a).map(([o,l])=>{const s=Array.from({length:12},(u,d)=>l.get($t(o,d)));return{date:new Date(o),time:o,...Object.fromEntries(Wn.map(u=>[u,s.every(d=>Number.isFinite(d?.[u]))?s.reduce((d,f)=>d+f[u],0):null]))}})}function Pi(r,t,a,n,i){const o=t.flatMap(f=>(r[f]??[]).map(b=>b.time));if(!o.length)return[];const l=Math.min(...o),s=Math.max(...o),u=Object.fromEntries(t.map(f=>[f,new Map((r[f]??[]).map(b=>[b.time,Jt(b,a,n)]))])),d=[];for(let f=l;f<=s;f=Lr(f,i))d.push({date:new Date(f),time:f,...Object.fromEntries(t.map(b=>[b,u[b].get(f)??null]))});return d}const Ha=new Map;function Ar(r){const t=JSON.stringify(r);let a=Ha.get(t);return a||(a=new Intl.DateTimeFormat("en-AU",{...r,timeZone:"UTC"}),Ha.set(t,a)),a}const ml={day:"numeric",month:"short",year:"numeric"},Vn={month:"short",year:"numeric"},gl={month:"short"},vl={year:"numeric"};function cn(r,t){const a=new Date(r),n=a.getUTCFullYear();
1if(t==="fy")return`${n}â${String(n+1).slice(-2)} financial year`;if(t==="1y")return String(n);if(t==="1d")return Ar(ml).format(a);const i=Ar(Vn).format(a);return t==="12mr"?`12 months to ${i}`:i}const en=["_all","wem"],za=3;function Za(r,t){return{start:Math.max(t.start,$t(r.start,-za)),end:Math.min(t.end,$t(r.end-1,za+1))}}function fl(r,t){return r.includes(t)||r.includes("au")&&en.includes(t)}function hl(r){return{...r,au:{pending:!!(r._all?.pending||r.wem?.pending),error:r._all?.error||r.wem?.error||null}}}function pl(r){const t={};for(const[a,n]of Object.entries(r)){const i=Mn(n.energy,n.market);t[a]=Mn(Mn(i,n.financial),n.flows).map(o=>en.includes(a)?{...o,net_imports:0}:o)}return t.au=dl(t._all??[],t.wem??[]),t}function Li(r,t){return r.filter(a=>a.time>=t.start&&a.time<t.end)}const bl=[1,2,3,6,12,24,60,120,240],yl=[1,2,5,10,20],wl=6;function Ai(r,t="12mr"){const a=r.map(o=>new Date(o.time));if(t==="1d")return a.filter(o=>o.getUTCDate()===1);const n=t==="1y"||t==="fy",i=n?o=>o.getUTCFullYear():o=>o.getUTCFullYear()*12+o.getUTCMonth();for(const o of n?yl:bl){const l=a.filter(s=>i(s)%o===0);if(l.length<=wl)return l}return[]}function Ni(r,t,a){const n=new Date(r);if(t==="1d"){const o=n.getUTCMonth()===0&&n.getUTCDate()===1;return Ar(o?Vn:gl).format(n)}const i=a.end-a.start<nl;return Ar(i?Vn:vl).format(n)}function _l(r,t,a,n,i){if(!t.length||!i.length)return null;const o=t.map(s=>new Set((r[s]??[]).filter(u=>u.time>=n.start&&u.time<n.end&&i.every(d=>Number.isFinite(Jt(u,d,a)))).map(u=>u.time))),l=[...o[0]].filter(s=>o.every(u=>u.has(s)));return l.length?Math.max(...l):null}function xl(r,t,a,n="straight"){let i=0,o=0;const l=d=>{Number.isFinite(d)&&(i=Math.min(i,d),o=Math.max(o,d))},s=Ra(r,a.start),u=Lo(r,a.end);for(let d=s;d<u;d++)for(const f of t)l(r[d][f]);for(const d of[a.start,a.end]){const f=Ra(r,d),b=r[f-1],S=r[f];if(!b||!S||S.time===d)continue;const C=(d-b.time)/(S.time-b.time);for(const T of t)Number.isFinite(b[T])&&Number.isFinite(S[T])&&(n==="step"?l(b[T]):n==="smooth"?(l(b[T]),l(S[T])):l(b[T]+(S[T]-b[T])*C))}return Oo([{_min:i,_max:o}])}const Zt=864e5,kl=30*6e4,Oi="1999-01-01";function Cl(r){return r==="average"||r==="daily"?r:"timeline"}function ma(r){return Number(r)===14?14:Number(r)===28?28:7}function Ii(r){if(typeof r!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(r))return"";const t=Date.parse(`${r}T00:00:00Z`);return Number.isFinite(t)&&new Date(t).toISOString().slice(0,10)===r&&r>=Oi?r:""}function Ml(r,t,a,n=""){const i=li(t),o=Math.floor((r+i)/Zt)*Zt,l=Ii(n),s=l?Math.min(Date.parse(`${l}T00:00:00Z`)+Zt,o):o,u=ma(a),d=s-i;return{start:d-u*Zt,end:d,offset:i,lastDate:new Date(s-Zt).toISOString().slice(0,10),maxDate:new Date(o-Zt).toISOString().slice(0,10),dates:Array.from({length:u},(f,b)=>new Date(s-(u-b)*Zt).toISOString().slice(0,10))}}function Fi(r,t,a){const n=a.dates.map(()=>Array.from({length:48},()=>({sum:0,count:0}))),i=new Map(r.map(o=>[o.time,o]));for(const[o,l]of i){if(!Number.isFinite(o)||o<a.start||o>=a.end)continue;const s=l[t];if(typeof s!="number"||!Number.isFinite(s))continue;const u=Math.floor((o-a.start)/Zt),d=Math.floor((o-a.start)%Zt/kl);n[u][d].sum+=s,n[u][d].count++}return Array.from({length:48},(o,l)=>{const s=n.map(d=>d[l].count?d[l].sum/d[l].count:null),u=s.filter(d=>d!==null);return{minute:l*30,label:`${String(Math.floor(l/2)).padStart(2,"0")}:${l%2?"30":"00"}`,values:s,samples:n.map(d=>d[l].count),days:u.length,average:u.length?u.reduce((d,f)=>d+f,0)/u.length:null}})}function Sl(r,t,a){const n=t.map(o=>Fi(r,o,a)),i=t.map(o=>({name:o,points:[]}));for(let o=0;o<48;o++){let l=0;const s=n.every(u=>u[o].average!==null);for(let u=0;u<t.length;u++){const{minute:d,label:f,average:b,days:S}=n[u][o];let C=null,T=null;s&&b!==null&&(C=l,T=C+b,l=T),i[u].points.push({minute:d,label:f,value:b,days:S,y0:C,y1:T})}}return i}function Tl(r,t,a){const{label:n,unit:i,region:o,timeZone:l}=a;return{key:"profile",title:"Time of day",columns:[{key:"region",header:"Region",type:"string"},{key:"timeZone",header:"Network time",type:"string"},{key:"series",header:"Series",type:"string"},{key:"label",header:"Time of day",type:"string"},{key:"average",header:`Average (${i})`,type:"number"},{key:"days",header:"Days available",type:"number"},...t.dates.flatMap((s,u)=>[{key:`value${u}`,header:`${s} (${i})`,type:"number"},{key:`samples${u}`,header:`${s} samples`,type:"number"}])],rows:r.map(s=>({region:o,timeZone:Xn(l),series:n,label:s.label,average:s.average,days:s.days,...Object.fromEntries(s.values.flatMap((u,d)=>[[`value${d}`,u],[`samples${d}`,s.samples[d]]]))}))}}const Un=Fo,Rl=Un.map(r=>
1r.value),Ba=["nsw1","qld1","sa1","tas1","vic1"],El=Un.filter(r=>!Ba.includes(r.value)).map(r=>r.value==="au"?{...r,divider:!0}:r.value==="_all"?{...r,children:Un.filter(t=>Ba.includes(t.value))}:r);function ja(r){if(typeof r!="number"&&typeof r!="string"||typeof r=="string"&&!/^\d+$/.test(r))return null;const t=Number(r);return Number.isSafeInteger(t)&&t>=nn&&t<=864e13?t:null}function Dl(r){return!r||typeof r!="object"?null:{a:ja("a"in r?r.a:null),b:ja("b"in r?r.b:null)}}function ga(r){return(r?.data??[]).filter(t=>Or(t)&&Number.isFinite(t.time)&&t.time<=(r?.end??0))}function Pl(r,t){const a=typeof r=="number"&&Number.isFinite(r)?r:null,n=typeof t=="number"&&Number.isFinite(t)?t:null,i=a===null||n===null?null:n-a;return{a,b:n,delta:i,percent:i===null||a===null||a===0?null:i/Math.abs(a)*100}}function Ll(r,t,a=[],n=[]){const i=ga(r),o=i.find(s=>s.time===t.a),l=i.find(s=>s.time===t.b);return[...r?.seriesNames??[]].reverse().filter(s=>!a.includes(s)).map(s=>{const u=Pl(o?.[s],l?.[s]);return{id:s,label:r?.seriesLabels[s]??s,colour:r?.seriesColours[s]??"#777777",isLoad:n.includes(s)||(u.a??u.b??0)<0,...u}})}function Al(r,t){const{region:a,zone:n,interval:i,a:o,b:l,unit:s}=t;return{key:"comparison",title:"Two-date comparison",columns:[{key:"region",header:"Region",type:"string"},{key:"timeZone",header:"Network time",type:"string"},{key:"interval",header:"Interval",type:"string"},{key:"label",header:"Technology",type:"string"},{key:"dateA",header:"A",type:"string"},{key:"dateB",header:"B",type:"string"},{key:"a",header:`A (${s})`,type:"number"},{key:"b",header:`B (${s})`,type:"number"},{key:"delta",header:`Change B â A (${s})`,type:"number"},{key:"percent",header:"Change / |A| (%)",type:"number"}],rows:r.map(u=>({region:a,timeZone:Xn(n),interval:i,label:u.label,dateA:o,dateB:l,a:u.a,b:u.b,delta:u.delta,percent:u.percent}))}}const Nl=864e5,tn=3,dn="_all",Wr="simple",va=[{value:"demand",label:"% demand"},{value:"generation",label:"% generation"}];function un(r){return va.find(t=>t.value===r)?.label??`% ${r}`}function Wi(r,t){return Math.max(1,Math.ceil((t-r)/Nl))}function Ol(r){return r.kind==="preset"?r.days===-1:Wi(r.startMs,r.endMs)>yo}function Il(r){return r==="volume"?"volume":"intensity"}function Fl(r,t){return Fr(r)?t:"market_value"}function Ga(r){return typeof r=="object"&&r!==null}function Hn(r){if(Ga(r)&&r.kind==="custom"){const a=Number(r.startMs),n=Number(r.endMs);if(Number.isFinite(a)&&Number.isFinite(n)&&n>a)return{kind:"custom",startMs:a,endMs:n,intervalId:String(r.intervalId||bo(Wi(a,n)).default)}}if(Ga(r)&&r.kind==="preset"){const a=Sa(Number(r.days));if(a)return{kind:"preset",days:a.days,intervalId:String(r.intervalId||Ta(a.id))}}const t=Sa(tn);return{kind:"preset",days:t.days,intervalId:Ta(t.id)}}function Wl(r){return{start:new Date(r.startMs).toISOString(),end:new Date(r.endMs).toISOString()}}const Vl=di.map(r=>r.value);function Ul(r,t){if(!Array.isArray(r))return[];const a=new Set(r.filter(n=>typeof n=="string").map(n=>n.trim()));return Et(t).order.filter(n=>a.has(n))}function Hl(r){return r==="generation"?"generation":"demand"}function Ka(r){return r==="proportion"||r==="changeSince"?r:"absolute"}function zl(r){if(!Array.isArray(r))return[];const t=new Set(r.filter(a=>typeof a=="string"));return Xs.filter(a=>t.has(a))}function Zl(r,t){return!r||!Ol(t)?null:wo(an(t.intervalId),r)?r:null}function ir(r){const t=typeof r.region=="string"&&Rl.includes(r.region)?r.region:dn,a=typeof r.group=="string"&&Vl.includes(r.group)?r.group:Wr,n=Hn(r.range),i=typeof r.profileSeries=="string"?r.profileSeries:"";return{region:t,group:a,compareRegions:!!r.compareRegions,regionComparison:ln(r.regionComparison??void 0),profileView:Cl(r.profileView),profileDays:ma(r.profileDays),profileMetric:r.profileMetric==="price"&&Fr(t)?"price":"power",profileSeries:Et(a).order.includes(i)?i:"",profileEnd:Ii(r.profileEnd),comparison:Dl(r.comparison),hiddenSeries:Ul(r.hiddenSeries,a),contributionMode:Hl(r.contributionMode),generationTransform:Ka(r.generationTransform),marketValueTransform:Ka(r.marketValueTransform),range:n,bucketFilter:Zl(typeof r.bucketFilter=="string"?r.bucketFilter:null,n),priceMode:r.priceMode==="market_value"?"market_value":"price",emissionsMode:Il(r.emissionsMode),overlays:zl(r.overlays),tablePanelOpen:r.tablePanelOpen!==!1,tableColumns:Ys(r.tableColumns),fullscreen:r.fullscreen!==!1}}function fa(r,t){const a=r.get("view")==="regions";return ir({region:r.get("region")||dn,group:r.get("group")||Wr,compareRegions:a,regionComparison:al(r),profileView:a?r.get("profile-view"):r.get("view"),profileDays:r.get("profile-days"),profileMetric:r.get("profile-metric"),profileSeries:r.get("profile-series")??"",profileEnd:r.get("profile-end"),comparison:r.get("compare")==="1"?{a:r.get("compare-a"),b:r.get("compare-b")}:null,hiddenSeries:(r.get("hidden")??"").split(","),contributionMode:r.get("contribution"),generationTransform:r.get("transform"),marketValueTransform:r.get("market-transform"),range:fo(r,{nowMs:t.nowMs,includeRolling:!0}),bucketFilter:r.get("filter"),priceMode:r.get("price")==="mv"?"market_value":"price",emissionsMode:r.get("emissions"),overlays:(r.get("overlay")??"").split(","),tablePanelOpen:r.get("table")!=="0",tableColumns:r.has("columns")?r.get("columns")?.split(","):void 0,fullscreen:r.get("fullscreen")!=="false"})}
1function Vi(r,t){const a=r.searchParams,n=ir(t);il(a,n.regionComparison);const i=(o,l)=>l?a.set(o,l):a.delete(o);i("compare",n.comparison?"1":null);for(const o of["a","b"]){const l=n.comparison?.[o];i(`compare-${o}`,l==null?null:String(l))}return i("view",n.compareRegions?"regions":n.profileView==="timeline"?null:n.profileView),i("profile-view",n.compareRegions&&n.profileView!=="timeline"?n.profileView:null),i("profile-days",n.profileDays===7?null:String(n.profileDays)),i("profile-metric",n.profileMetric==="price"?"price":null),i("profile-series",n.profileSeries||null),i("profile-end",n.profileEnd||null),i("region",n.region===dn?null:n.region),i("group",n.group===Wr?null:n.group),i("hidden",n.hiddenSeries.length?n.hiddenSeries.join(","):null),i("contribution",n.contributionMode==="generation"?"generation":null),i("transform",n.generationTransform==="absolute"?null:n.generationTransform),i("market-transform",n.marketValueTransform==="absolute"?null:n.marketValueTransform),i("filter",n.bucketFilter),ho(a,{selectedRange:n.range.kind==="preset"?n.range.days:null,displayInterval:n.range.intervalId,viewStart:n.range.kind==="custom"?n.range.startMs:0,viewEnd:n.range.kind==="custom"?n.range.endMs:0,defaultRangeDays:tn}),i("price",n.priceMode==="market_value"&&Fr(n.region)?"mv":null),i("emissions",n.emissionsMode==="volume"?"volume":null),i("overlay",n.overlays.length?n.overlays.join(","):null),i("table",n.tablePanelOpen?null:"0"),n.tableColumns.length===vr.length?a.delete("columns"):a.set("columns",n.tableColumns.join(",")),r}function Bl(r,t){return Vi(new URL(r.href),t)}function jl({url:r,data:t}){const a=Date.now();return{...t,...fa(r.searchParams,{nowMs:a}),nowMs:a}}const N1=Object.freeze(Object.defineProperty({__proto__:null,load:jl},Symbol.toStringTag,{value:"Module"})),Gl=25569,Kl=864e5;function Yl(r,t){return Gl+(r+li(t))/Kl}async function Ya(r,t){const{default:a}=await ps(async()=>{const{default:i}=await import("../chunks/C0q3FMiX.js");return{default:i}},[],import.meta.url),n=await a(r).toBlob();fi(n,t)}var Xl=M('<span aria-hidden="true"></span>'),ql=M('<button type="button" class="relative flex size-[40px] shrink-0 cursor-pointer items-center justify-center rounded-md text-mid-grey transition-colors hover:bg-warm-grey active:bg-mid-warm-grey focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-dark-grey motion-reduce:transition-none"><!> <!></button>');function zn(r,t){ct(t,!0);let a=Ve(t,"el",15),n=c(()=>t.side==="left"?t.open?Bs:ws:t.open?Gs:_s);var i=ql(),o=g(i);ys(o,()=>e(n),(u,d)=>{d(u,{class:"size-[20px]",strokeWidth:1.5,"aria-hidden":"true"})});var l=h(o,2);{var s=u=>{var d=Xl();U(()=>He(d,1,`absolute inset-y-[8px] w-px bg-warm-grey ${t.side==="left"?"left-0 -translate-x-1/2":"right-0 translate-x-1/2"}`)),p(u,d)};H(l,u=>{t.open&&u(s)})}m(i),Ot(i,u=>a(u),()=>a()),U(()=>{F(i,"aria-label",t.label),F(i,"aria-expanded",t.open),F(i,"aria-controls",t.controls),F(i,"title",t.label)}),_e("click",i,function(...u){t.onclick?.apply(this,u)}),p(r,i),dt()}_t(["click"]);var Jl=M("<div><!> <!></div>");function Zn(r,t){ct(t,!0);let a=Ve(t,"opener",15);var n=Jl(),i=g(n);zn(i,{get side(){return t.side},open:!1,get label(){return t.label},get controls(){return t.controls},get onclick(){return t.onopen},get el(){return a()},set el(l){a(l)}});var o=h(i,2);Ht(o,()=>t.children??bt),m(n),U(()=>He(n,1,`z-20 flex w-[48px] shrink-0 flex-col items-center bg-white pt-[4px] ${t.side==="left"?"border-r border-warm-grey":"border-l border-warm-grey"}`)),p(r,n),dt()}var Ql=M('<div class="loading-overlay pointer-events-none absolute inset-0 z-30 overflow-hidden svelte-1lku1li" data-testid="tracker-loading-overlay" aria-hidden="true"></div>');function Ui(r,t){var a=Ql();U(()=>F(a,"data-active",t.active)),p(r,a)}var $l=M('<span class="rounded bg-light-warm-grey px-2 py-1 font-mono text-xxs text-mid-grey"> </span>'),ec=M('<div class="h-4" aria-hidden="true"></div>'),tc=M('<div><section><header class="flex min-h-[52px] flex-wrap items-center justify-between gap-x-4 gap-y-1 border-b border-mid-warm-grey/40 px-4 py-2"><h3 class="m-0 text-sm font-semibold text-dark-grey"> </h3> <div class="flex shrink-0 items-center gap-3"><!> <!></div> <!></header> <div class="relative pb-3"><!> <!></div></section> <!></div>');function Hr(r,t){ct(t,!0);let a=Ve(t,"badge",3,""),n=Ve(t,"engaged",3,!1),i=Ve(t,"loading",3,!1),o=Ve(t,"heightStorageKey",3,""),l=Ve(t,"defaultHeightPx",3,260),s=Ve(t,"minHeightPx",3,120),u=Ve(t,"maxHeightPx",3,800);const d=Jr({axis:"y",initial:kt(()=>l()),min:()=>s(),max:()=>u(),storageKey:kt(()=>o())||void 0});let f=c(()=>d.size);var b=tc(),S=g(b),C=g(S),T=g(C),k=g(T,!0);m(T);var y=h(T,2),v=g(y);{var D=ne=>{var ve=$l(),Se=g(ve,!0);m(ve),U(()=>j(Se,a())),p(ne,ve)};H(v,ne=>{a()&&ne(D)})}var P=h(v,2);{var w=ne=>{var ve=ht(),Se=Re(ve);Ht(Se,()=>t.actions),p(ne,ve)};H(P,ne=>{t.actions&&ne(w)})}m(y);var A=h(y,2);{var J=ne=>{var ve=ht(),Se=Re(ve);Ht(Se,()=>t.status),p(ne,ve)};H(A,ne=>{t.status&&ne(J)})}m(C);var B=h(C,2),Q=g(B);Ht(Q,()=>t.children,()=>e(f));var ce=h(Q,2);Ui(ce,{get active(){return i()}}),m(B),m(S);var G=h(S,2);{var se=ne=>{{let ve=c(()=>Math.round(e(f)));qr(ne,{axis:"y",get onstart(){return d.start},get onkeydown(){return d.keydown},tabindex:0,get"aria-valuemin"(){return s()},get"aria-valuemax"(){return u()},get"aria-valuenow"(){return e(ve)},get active(){return d.dragging},alwaysShowGrip:!0,class:"h-4 rounded-md",role:"separator","aria-orientation":"horizontal","aria-label":"Resize chart height"})}},te=ne=>{var ve=ec();p(ne,ve)};H(G,ne=>{o()?ne(se):ne(te,-1)})}m(b),U(ne=>{F(S,"data-tracker-png",ne),He(S,1,`overflow-hidden rounded-lg border bg-white transition-colors ${n()?"border-dark-grey":"border-mid-warm-grey/40"}`),j(k,t.title),F(B,"aria-busy",i())},[()=>t.png?JSON.stringify(t.png):void 0]),p(r,b),dt()}function rc({tick:r,document:t}){let a;
1function n(){clearInterval(a),!t.hidden&&(r(),a=setInterval(()=>{t.hidden||r()},6e4))}return t.addEventListener("visibilitychange",n),n(),()=>{clearInterval(a),t.removeEventListener("visibilitychange",n)}}function nc(r){let t=null;if(!r)return t;for(const a of r.nativeData)!Or(a)||!Number.isFinite(a.time)||a.time<r.start||a.time>r.end||r.seriesNames.some(n=>typeof a[n]=="number"&&Number.isFinite(a[n]))&&(t===null||a.time>t)&&(t=a.time);return t}function ac({latest:r,now:t,interval:a,following:n,pending:i,error:o,filtered:l,timeZone:s="Australia/Brisbane"}){if(o)return"Update unavailable";if(i)return"Updatingâ¦";if(r===null)return"No readings";if(!n||l)return"Latest in view";const u=$n(a,r,s)*36e5;return t-r>u*3?"Data delayed":["1M","3M","1y"].includes(a)?"Latest bucket":"Latest interval"}var ic=M("· <time> </time>",1),oc=M('<p data-testid="reading-freshness" class="m-0 mt-1 w-full text-xxs font-normal text-mid-grey"> <!></p>');function sc(r,t){ct(t,!0);let a=c(()=>nc(t.snapshot)),n=c(()=>ac({latest:e(a),now:t.now,interval:t.interval,following:t.following,pending:t.pending,error:t.error,filtered:t.filtered,timeZone:t.timeZone})),i=c(()=>e(a)===null?"":new Intl.DateTimeFormat("en-AU",{timeZone:t.timeZone,day:"numeric",month:"short",year:"numeric",hour:"numeric",minute:"2-digit",timeZoneName:"short"}).format(e(a)));var o=ht(),l=Re(o);{var s=d=>{var f=oc(),b=g(f,!0),S=h(b);{var C=T=>{var k=ic(),y=h(Re(k)),v=g(y,!0);m(y),U(D=>{F(y,"datetime",D),j(v,e(i))},[()=>new Date(e(a)).toISOString()]),p(T,k)};H(S,T=>{e(i)&&!t.pending&&!t.error&&T(C)})}m(f),U(()=>{F(f,"data-status",e(n)),F(f,"title",t.error??`${e(i)?`Latest available native interval in this view: ${e(i)}. `:""}This is a data timestamp, not the time of the last request. It does not guarantee every technology has reported.`),j(b,e(n))}),p(d,f)},u=c(()=>["Data delayed","Update unavailable","No readings"].includes(e(n)));H(l,d=>{e(u)&&d(s)})}p(r,o),dt()}var lc=M("<div><!> <h3> </h3> <!> <!></div>");function ha(r,t){ct(t,!0);let a=Ve(t,"closeButton",15),n=Ve(t,"id",3,void 0),i=Ve(t,"class",3,"");var o=lc(),l=g(o);{var s=C=>{zn(C,{get side(){return t.side},open:!0,get label(){return t.label},get controls(){return t.controls},get onclick(){return t.onclose},get el(){return a()},set el(T){a(T)}})};H(l,C=>{t.side==="right"&&C(s)})}var u=h(l,2),d=g(u,!0);m(u);var f=h(u,2);Ht(f,()=>t.children??bt);var b=h(f,2);{var S=C=>{zn(C,{get side(){return t.side},open:!0,get label(){return t.label},get controls(){return t.controls},get onclick(){return t.onclose},get el(){return a()},set el(T){a(T)}})};H(b,C=>{t.side==="left"&&C(S)})}m(o),U(()=>{F(o,"id",n()),He(o,1,`flex h-[48px] shrink-0 items-center gap-[10px] border-b border-warm-grey bg-white px-[4px] ${i()??""}`),He(u,1,`m-0 min-w-0 flex-1 truncate text-sm font-semibold ${t.side==="left"?"text-right":""}`),j(d,t.title)}),p(r,o),dt()}const Vt="â";function zr(r,t){return Ir(r,"M",t)}function Zr(r,t){return Ir(r,"M",t)}function cc(r){return r>=1e7?"T":r>=1e4?"G":"M"}function Hi(r){return r==null||!Number.isFinite(r)?Vt:us(r,{minimumFractionDigits:1,maximumFractionDigits:1})}function Br(r){const t=Hi(r);return t===Vt?t:`${t}%`}function dc(r){return r==null||!Number.isFinite(r)?Vt:xs(r)}function uc(r){return Ir(r,"","")}function mc(r){return Ir(r,"","")}function pa(r){const t=r.indexOf(" (");return t===-1?{main:r,sub:""}:{main:r.slice(0,t),sub:r.slice(t+1)}}const fr="border-b border-warm-grey py-3 align-top font-medium",zi="group cursor-pointer text-sm hover:bg-light-warm-grey",mn="size-5 shrink-0 rounded-sm border",gc=`${mn} border-mid-warm-grey group-hover:border-mid-grey bg-transparent`;function ba(r){return`sticky left-0 z-[1] border-r border-warm-grey after:pointer-events-none after:absolute after:inset-y-0 after:left-full after:w-6 after:bg-linear-to-r after:from-black/5 after:to-transparent after:transition-opacity after:duration-200 ${r>0?"after:opacity-100":"after:opacity-0"}`}function ya(r,t,a="py-1.5"){return`${t?"pr-3 pl-2":"px-2"} ${a} whitespace-nowrap text-right font-mono tabular-nums transition-opacity duration-300 ${r===Vt?"text-mid-grey":"text-dark-grey"}`}const nr=(r,t=bt)=>{var a=_c(),n=g(a,!0);m(a),U(()=>j(n,t())),p(r,a)};var vc=M('<span class="h-1 w-5 shrink-0 rounded-full transition-colors"></span>'),Xa=M("<span></span>"),fc=M('<!> <span class="min-w-0 truncate text-dark-grey"> <span class="text-mid-grey"> </span></span>',1),hc=M('<div class="ml-2 flex items-center gap-2.5"><!></div>'),pc=M("<td> </td>"),bc=M('<tr role="button" tabindex="0"><td><!></td><!></tr>'),yc=M('<th class="border-b border-warm-grey"></th>'),wc=M('<thead><tr><th>
1<span class="ml-2"> </span></th><!></tr></thead> <tbody></tbody>',1),_c=M('<span class="font-mono text-xxs font-light text-mid-grey"> </span>'),xc=M('<th><div class="flex flex-col items-end"><span class="text-xs"> </span> <!></div></th>'),kc=M('<tbody class="[&>tr:first-child>td]:border-t-2 [&>tr:first-child>td]:border-t-dark-grey"></tbody>'),Cc=M(`<li id="rooftop-interpolation-note">Rooftop solar: 5-minute charts use linearly interpolated half-hour readings. Tables, 2 metrics, comparisons and exports retain reported values.</li>`),Mc=M(`<div class="[--tech-w:160px]"><div class="overflow-x-auto overscroll-x-contain snap-x snap-mandatory scroll-pl-(--tech-w) scroll-smooth motion-reduce:scroll-auto"><table aria-label="Fuel technology values" class="w-full table-fixed border-separate border-spacing-0 select-none"><thead class="bg-light-warm-grey"><tr><th><div class="ml-2 flex flex-col items-start"><span class="text-xs text-dark-grey">Technology</span> <!></div></th><!></tr></thead><!><!><!><!></table></div> <footer class="m-4 rounded-md border border-dashed border-mid-warm-grey bg-light-warm-grey px-4 py-3 text-[11px] leading-relaxed text-mid-grey"><ul class="m-0 list-disc space-y-2 pl-4"><!> <li><!></li> <li>Emissions intensity: each technology's emissions divided by its generation.</li></ul></footer></div>`);function Sc(r,t){ct(t,!0);const a=(R,z,me=bt)=>{let $=()=>z?.().kind,we=()=>z?.().colour;var De=ht(),E=Re(De);{var Z=le=>{var V=vc();let Te;U(()=>Te=Ct(V,"",Te,{"background-color":me()?we():"#d5d4d1"})),p(le,V)},ee=le=>{var V=Xa();U(Te=>{He(V,1,Gt(mn)),Ct(V,Te)},[()=>$()==="hatch"?ye(we()):`background-color: ${we()}; border-color: ${we()};`]),p(le,V)},I=le=>{var V=Xa();U(()=>He(V,1,`size-5 shrink-0 rounded-sm border border-mid-warm-grey group-hover:border-mid-grey ${$()==="hatch"?"bg-white":"bg-transparent"}`)),p(le,V)};H(E,le=>{$()==="line"?le(Z):me()?le(ee,1):le(I,-1)})}p(R,De)},n=(R,z=bt)=>{const me=c(()=>{const{main:I,sub:le}=pa(z().label);return{main:I,sub:le}});var $=fc(),we=Re($);a(we,()=>z().swatch,()=>z().active);var De=h(we,2),E=g(De),Z=h(E),ee=g(Z,!0);m(Z),m(De),U(()=>{j(E,`${e(me).main??""} `),j(ee,e(me).sub)}),p(R,$)},i=(R,z=bt)=>{const me=c(()=>z().summary?"py-2":"py-1.5");var $=bc(),we=g($),De=g(we);{var E=I=>{Ln(I,{get lines(){return z().breakdown},side:"left",class:"ml-2 flex items-center gap-2.5",children:(le,V)=>{n(le,z)},$$slots:{default:!0}})},Z=I=>{var le=hc(),V=g(le);n(V,z),m(le),p(I,le)};H(De,I=>{z().breakdown?.length?I(E):I(Z,-1)})}m(we);var ee=h(we);Ge(ee,19,()=>e(v),I=>I.key,(I,le,V)=>{const Te=c(()=>z().cells[e(le).index]);var _=pc(),x=g(_,!0);m(_),U(q=>{He(_,1,q),j(x,e(Te))},[()=>Gt(ya(e(Te),e(V)===e(v).length-1,e(me)))]),p(I,_)}),m($),U(()=>{F($,"data-testid",z().testId),F($,"aria-pressed",z().active),F($,"aria-describedby",z().interpolated?"rooftop-interpolation-note":void 0),He($,1,`${zi} ${z().summary?"font-semibold":""} ${z().dimmed?"opacity-50":""}`),He(we,1,`${e(Ce)??""} px-2 ${e(me)??""}`)}),_e("click",$,I=>z().activate(O(I))),_e("keydown",$,I=>Y(I,z())),p(R,$)},o=(R,z=bt,me=bt)=>{var $=ht(),we=Re($);{var De=E=>{var Z=wc(),ee=Re(Z),I=g(ee),le=g(I),V=g(le),Te=g(V,!0);m(V),m(le);var _=h(le);{var x=re=>{var ae=yc();U(()=>F(ae,"colspan",e(v).length)),p(re,ae)};H(_,re=>{e(v).length&&re(x)})}m(I),m(ee);var q=h(ee,2);Ge(q,21,me,re=>re.key,(re,ae)=>{i(re,()=>e(ae))}),m(q),U(()=>{He(le,1,`${e(ke)??""} border-b border-warm-grey bg-white px-2 pb-1 pt-4 text-left text-sm font-medium`),j(Te,z())}),p(E,Z)};H(we,E=>{me().length&&E(De)})}p(R,$)};let l=Ve(t,"basis",3,"power"),s=Ve(t,"rooftopInterpolation",3,!1),u=Ve(t,"displayPrefix",3,"M"),d=Ve(t,"group",3,Wr),f=Ve(t,"contributionMode",3,"demand"),b=Ve(t,"tableColumns",3,vr),S=Ve(t,"curtailmentRows",19,()=>[]),C=Ve(t,"shownCurtailment",19,()=>[]),T=Ve(t,"overlaySummary",3,null),k=Ve(t,"showDemandLine",3,!1),y=Ve(t,"showRenewablesLine",3,!1),v=c(()=>oa.map((R,z)=>({...R,index:z})).filter(R=>b().includes(R.key))),D=ge(0),P=c(()=>l()==="power"?u():"M"),w=c(()=>cc(Math.max(0,...t.rows.map(R=>R.energyMWh??0)))),A=c(()=>`${e(P)}W`),J=c(()=>`${e(w)}Wh`),B=c(()=>Et(d()).label),Q=c(()=>un(f())),ce=c(()=>s()&&t.rows.some(R=>R.fuelTechs.includes("solar_rooftop")));function G(R){if(d()==="detailed")return[];const z=R.fuelTechs;return z.length===0||z.length===1&&z[0]===R.id?[]:z.map(me=>ks[me]??me)}function se(R){return{key:R.id,label:R.label,active:!R.hidden,activate:z=>t.ontoggle?.(R.id,z),swatch:{kind:"solid",colour:R.colour},cells:[Zr(R.energyMWh,e(w)),zr(R.avPowerMW,e(P)),Br(R.contributionPct),dc(R.vwPrice),uc(R.emissionsT),mc(R.intensityKgPerMWh)],breakdown:G(R),interpolated:s()&&R.fuelTechs.includes("solar_rooftop"),dimmed:R.hidden,testId:"fuel-tech-row"}}function te(R){return{key:R.id,label:R.label,active:C().includes(R.id),activate:z=>t.oncurtailmenttoggle?.(R.id,z),swatch:{kind:"hatch",colour:qs[R.id]??"#888"},cells:[Zr(R.energyMWh,e(w)),zr(R.avPowerMW,e(P)),Br(R.contributionPct),Vt,Vt,Vt]}}function ne(R,z,me,$,we,De,E){return{key:R,label:R,active:z,activate:Z=>$?.(Z),swatch:{kind:"line",colour:me},cells:[Zr(we,e(w)),zr(De,e(P)),Br(E),Vt,Vt,Vt],summary:!0}}let ve=c(()=>t.rows.filter(R=>!R.isLoad).map(se)),Se=c(()=>t.rows.filter(R=>R.isLoad).map(se)),de=c(()=>S().map(te)),L=c(()=>T()?[ne("Demand",k(),Ci,t.ondemandlinetoggle,T().demandEnergyMWh,T().demandAvMW,null),ne("Renewables",y(),Mi,t.onrenewableslinetoggle,T().renewablesEnergyMWh,T().renewablesAvMW,T().renewablesSharePct)]:[]);function O(R){return R.metaKey||R.ctrlKey}function Y(R,z){R.key!=="Enter"&&R.key!==" "||(R.preventDefault(),z.activate(O(R)))}function ye(R){return`background: repeating-linear-gradient(-45deg, ${R}, ${R} 3px, rgba(255,255,255,0.6) 3px, rgba(255,255,255,0.6) 5px); border-color: ${R};`}let ke=c(()=>ba(e(D))),Ce=c(()=>`${e(ke)} bg-white group-hover:bg-light-warm-grey`);var Ie=Mc(),Ne=g(Ie),Pe=g(Ne);let qe;var X=g(Pe),ie=g(X),fe=g(ie),Le=g(fe),ze=h(g(Le),2);nr(ze,()=>e(B)),m(Le),m(fe);var gt=h(fe);Ge(gt,19,()=>e(v),R=>R.key,(R,z,me)=>{var $=xc(),we=g($),De=g(we),E=g(De,!0);m(De);
2var Z=h(De,2);{var ee=x=>{nr(x,()=>e(Q))},I=x=>{nr(x,()=>e(J))},le=x=>{nr(x,()=>e(A))},V=x=>{nr(x,()=>"$/MWh")},Te=x=>{nr(x,()=>"tCOâe")},_=x=>{nr(x,()=>"kgCOâe/MWh")};H(Z,x=>{e(z).key==="contribution"?x(ee):e(z).key==="energy"?x(I,1):e(z).key==="power"?x(le,2):e(z).key==="price"?x(V,3):e(z).key==="emissions"?x(Te,4):x(_,-1)})}m(we),m($),U(()=>{He($,1,`w-[100px] snap-start text-right ${e(me)===e(v).length-1?"pr-3 pl-2":"px-2"} ${fr}`),j(E,e(z).label)}),p(R,$)}),m(ie),m(X);var xe=h(X);o(xe,()=>"Sources",()=>e(ve));var Ke=h(xe);o(Ke,()=>"Loads",()=>e(Se));var et=h(Ke);o(et,()=>"Curtailment",()=>e(de));var Ee=h(et);{var ue=R=>{var z=kc();Ge(z,21,()=>e(L),me=>me.key,(me,$)=>{i(me,()=>e($))}),m(z),p(R,z)};H(Ee,R=>{e(L).length&&R(ue)})}m(Pe),m(Ne);var Fe=h(Ne,2),Ue=g(Fe),K=g(Ue);{var oe=R=>{var z=Cc();p(R,z)};H(K,R=>{e(ce)&&R(oe)})}var pe=h(K,2),Ye=g(pe);{var Xe=R=>{var z=jt("Gross-demand shares may not total 100% due to losses and imports.");p(R,z)},Je=R=>{var z=jt("Generation shares exclude loads and imports.");p(R,z)};H(Ye,R=>{f()==="demand"?R(Xe):R(Je,-1)})}m(pe),Ut(2),m(Ue),m(Fe),m(Ie),U(()=>{qe=Ct(Pe,"",qe,{"min-width":`${160+e(v).length*100}px`}),He(fe,1,`${e(ke)??""} bg-light-warm-grey px-2 text-left text-sm ${fr}`)}),Mt("scroll",Ne,R=>N(D,R.currentTarget.scrollLeft,!0)),p(r,Ie),dt()}_t(["click","keydown"]);var Tc=new Set(["$$slots","$$events","$$legacy","rows","valuesPending","loading","error","onretry","curtailmentRows","overlaySummary","hiddenCount","onshowall","onclose","closeButton","options"]),Rc=M('<button type="button" class="min-h-[32px] shrink-0 rounded-md border border-mid-warm-grey px-2.5 py-1 text-xs text-dark-grey transition-colors hover:bg-warm-grey">Show all</button>'),Ec=M("<!> <!>",1),Dc=M('<div class="flex items-center justify-between gap-2 border-b border-warm-grey px-4 py-2 text-xs" role="status"><span>Could not load table data.</span> <button type="button" class="rounded border border-warm-grey px-2 py-1">Retry</button></div>'),Pc=M('<div id="tracker-table-panel" class="flex h-full min-h-0 flex-col"><!> <!> <div class="relative min-h-0 flex-1"><div><!></div> <!></div></div>');function Lc(r,t){ct(t,!0);let a=Ve(t,"rows",3,null),n=Ve(t,"valuesPending",3,!1),i=Ve(t,"loading",3,!1),o=Ve(t,"error",3,null),l=Ve(t,"curtailmentRows",19,()=>[]),s=Ve(t,"overlaySummary",3,null),u=Ve(t,"hiddenCount",3,0),d=Ve(t,"closeButton",15),f=on(t,Tc);var b=Pc(),S=g(b);ha(S,{side:"right",title:"Fuel technologies",label:"Hide fuel tech table",controls:"tracker-table-panel",onclose:()=>t.onclose?.(),get closeButton(){return d()},set closeButton(w){d(w)},children:(w,A)=>{var J=Ec(),B=Re(J);{var Q=G=>{var se=Rc();_e("click",se,()=>t.onshowall?.()),p(G,se)};H(B,G=>{u()>0&&G(Q)})}var ce=h(B,2);Ht(ce,()=>t.options??bt),p(w,J)},$$slots:{default:!0}});var C=h(S,2);{var T=w=>{var A=Dc(),J=h(g(A),2);m(A),_e("click",J,function(...B){t.onretry?.apply(this,B)}),p(w,A)};H(C,w=>{o()&&w(T)})}var k=h(C,2),y=g(k),v=g(y);{var D=w=>{Sc(w,mr(()=>f,{get rows(){return a()},get curtailmentRows(){return l()},get overlaySummary(){return s()}}))};H(v,w=>{a()&&w(D)})}m(y);var P=h(y,2);Ui(P,{get active(){return i()}}),m(k),m(b),U(()=>{He(y,1,`h-full overflow-auto ${o()?"opacity-40":""}`),F(y,"aria-busy",!o()&&(!a()||n()))}),p(r,b),dt()}_t(["click"]);var Ac=M('<!> <span class="sr-only">Close fuel technology options</span>',1),Nc=M('<div class="flex justify-end"><!></div>'),Oc=M('<fieldset><legend class="mb-1 text-sm font-semibold">Table columns</legend> <p class="mb-3 text-xs text-mid-grey">Technology is always shown.</p> <div class="grid grid-cols-2 gap-3 text-sm"></div> <!></fieldset>'),Ic=M('<div class="space-y-6 pb-6"><!> <!> <!></div>'),Fc=M('<button type="button" aria-label="Fuel technology options" aria-haspopup="dialog" class="flex size-[40px] shrink-0 cursor-pointer items-center justify-center rounded-lg text-mid-grey transition-colors hover:bg-light-warm-grey focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-dark-grey motion-reduce:transition-none"><!></button> <!>',1);function Zi(r,t){const a=ta();ct(t,!0);let n=Ve(t,"tableColumns",3,vr),i=ge(!1),o=c(()=>`${Et(t.group).label}${t.contributionMode?` · ${un(t.contributionMode)}`:""}`);var l=Fc(),s=Re(l),u=g(s);
2Es(u,{class:"size-[16px]",strokeWidth:1.5,"aria-hidden":"true"}),m(s);var d=h(s,2);Cs(d,{title:"Fuel technology options",maxWidthClass:"max-w-[560px]",get open(){return e(i)},set open(S){N(i,S,!0)},header:S=>{Ms(S,{onclick:()=>N(i,!1),children:(C,T)=>{var k=Ac(),y=Re(k);yi(y,{class:"size-4","aria-hidden":"true"}),Ut(2),p(C,k)},$$slots:{default:!0}})},buttons:S=>{var C=Nc(),T=g(C);Ts(T,{clickHandler:()=>N(i,!1),children:(k,y)=>{Ut();var v=jt("Done");p(k,v)},$$slots:{default:!0}}),m(C),p(S,C)},children:(S,C)=>{var T=Ic(),k=g(T);Fa(k,{formLabel:"Fuel tech grouping",get options(){return di},get selected(){return t.group},staticDisplay:!0,paddingX:"",onchange:w=>t.ongroupchange(String(w.value))});var y=h(k,2);{var v=w=>{Fa(w,{formLabel:"Contribution %",get options(){return va},get selected(){return t.contributionMode},staticDisplay:!0,paddingX:"",onchange:A=>t.oncontributionchange?.(A.value)})};H(y,w=>{t.contributionMode&&t.oncontributionchange&&w(v)})}var D=h(y,2);{var P=w=>{var A=Oc(),J=h(g(A),4);Ge(J,21,()=>oa,Q=>Q.key,(Q,ce)=>{{let G=c(()=>`${a}-column-${e(ce).key}`),se=c(()=>n().includes(e(ce).key));Ss(Q,{get name(){return e(G)},get label(){return e(ce).label},get checked(){return e(se)},onchange:()=>t.oncolumnschange?.(n().includes(e(ce).key)?n().filter(te=>te!==e(ce).key):[...n(),e(ce).key])})}}),m(J);var B=h(J,2);Rs(B,{class:"mt-4 text-sm",onclick:()=>t.oncolumnschange?.([...vr]),children:(Q,ce)=>{Ut();var G=jt("Show all columns");p(Q,G)},$$slots:{default:!0}}),m(A),p(w,A)};H(D,w=>{t.oncolumnschange&&w(P)})}m(T),p(S,T)},$$slots:{header:!0,buttons:!0,default:!0}}),U(()=>F(s,"title",`Fuel technology options · ${e(o)}`)),_e("click",s,()=>N(i,!0)),p(r,l),dt()}_t(["click"]);const Wc={key:"time",header:"date",type:"time"},Vc="market_value",Uc="emissions",Bi="energy_mwh",Hc=31,zc=/[[\]:*?/\\]/g,Zc="yyyy-mm-dd hh:mm";function ji({tablePanelOpen:r}){return[{key:"generation",label:"Generation"},{key:"market",label:"Market"},{key:"emissions",label:"Emissions"},...r?[{key:"table",label:"Fuel tech table"}]:[]]}function Bc(r,t){return/\([^()]*\)\s*$/.test(r)?r:`${r} (${t})`}function jc(r){return r==="energy"?"MWh":"MW"}function Gc(r){return r==="market_value"?"Market value ($)":r==="price_vw"?"Volume-weighted price ($/MWh)":"Spot price ($/MWh)"}function Kc(r){return r==="emissions_intensity"?"Intensity (kgCO2e/MWh)":"Volume (tCO2e)"}function wa(r,t){return r.seriesNames.map(a=>({key:a,header:Bc(r.seriesLabels?.[a]??a,t),type:"number"}))}function Nr(r,t,a,n){const i=n.filter(Or);return!i.length||!a.length?null:{key:r,title:t,columns:[Wc,...a],rows:i}}function Yc(r){return r.generation?Nr("generation","Generation",wa(r.generation,jc(r.basis)),r.generation.data):null}function Xc(r){if(!r.price)return null;if(r.priceMetric==="price_vw"){const a=ui(r.price.data),n=r.price.data.map((i,o)=>({...i,[Ur]:a[o][Ur]}));return Nr("market","Market",[{key:Ur,header:"Volume-weighted price ($/MWh)",type:"number"},{key:Vc,header:"Market value ($)",type:"number"},{key:Bi,header:"Energy (MWh)",type:"number"}],n)}const t=r.priceMetric==="market_value"?"$":"$/MWh";return Nr("market","Market",wa(r.price,t),r.price.data)}function qc(r){if(!r.emissions)return null;if(r.emissionsMetric==="emissions_intensity"){const t=To(r.emissions.data),a=r.emissions.data.map((n,i)=>({...n,[xn]:t[i][xn]}));return Nr("emissions","Emissions",[{key:xn,header:"Emissions intensity (kgCO2e/MWh)",type:"number"},{key:Uc,header:"Emissions (tCO2e)",type:"number"},{key:Bi,header:"Energy (MWh)",type:"number"}],a)}return Nr("emissions","Emissions",wa(r.emissions,"tCO2e"),r.emissions.data)}function Jc(r){if(!r.tablePanelOpen||!r.tableRows?.length)return null;const t=`Contribution (${un(r.contributionMode)})`,a=[{key:"label",header:"Technology",type:"string"},{key:"type",header:"Type",type:"string"},{key:"energyMWh",header:"Energy (MWh)",type:"number"},{key:"avPowerMW",header:"Av power (MW)",type:"number"},{key:"contributionPct",header:t,type:"number"},{key:"vwPrice",header:"Av price ($/MWh)",type:"number"},{key:"emissionsT",header:"Emissions (tCO2e)",type:"number"},{key:"intensityKgPerMWh",header:"Intensity (kgCO2e/MWh)",type:"number"},{key:"hidden",header:"Hidden",type:"boolean"},{key:"fuelTechs",header:"Fuel techs",type:"string"}],n=r.tableRows.map(o=>({label:o.label,type:o.isLoad?"load":"source",energyMWh:o.energyMWh,avPowerMW:o.avPowerMW,contributionPct:o.contributionPct,vwPr
2ice:o.vwPrice,emissionsT:o.emissionsT,intensityKgPerMWh:o.intensityKgPerMWh,hidden:o.hidden,fuelTechs:o.fuelTechs.join(" ")})),i=[...n.filter(o=>o.type==="source"),...n.filter(o=>o.type==="load"),...r.curtailmentRows.map(o=>({label:o.label,type:"curtailment",energyMWh:o.energyMWh,avPowerMW:o.avPowerMW,contributionPct:o.contributionPct}))];return r.overlaySummary&&i.push({label:"Demand",type:"summary",energyMWh:r.overlaySummary.demandEnergyMWh,avPowerMW:r.overlaySummary.demandAvMW},{label:"Renewables",type:"summary",energyMWh:r.overlaySummary.renewablesEnergyMWh,avPowerMW:r.overlaySummary.renewablesAvMW,contributionPct:r.overlaySummary.renewablesSharePct}),{key:"table",title:"Fuel tech table",columns:a,rows:i}}function Gi(r,t){switch(r){case"generation":return Yc(t);case"market":return Xc(t);case"emissions":return qc(t);case"table":return Jc(t);default:return null}}function Qc(r){return ji({tablePanelOpen:r.tablePanelOpen}).map(t=>Gi(t.key,r)).filter(t=>t!==null)}function $c(r){const t=[["Region",r.regionLabel],["Range",r.rangeLabel],["Interval",r.intervalLabel],["Window start",Vr(r.window.start,r.timeZone)],["Window end",Vr(r.window.end,r.timeZone)],["Timezone",`${Xn(r.timeZone)} â all timestamps are network-local`],["Fuel tech grouping",r.groupLabel],["Contribution basis",un(r.contributionMode)],["Generation",r.basis==="energy"?"Energy (MWh)":"Power (MW)"],["Market",Gc(r.priceMetric)],["Emissions",Kc(r.emissionsMetric)]];if(r.hiddenSeries.length){const a=r.hiddenSeries.map(n=>r.generation?.seriesLabels?.[n]??n);t.push(["Hidden groups",`${a.join(", ")} â exported in every dataset, but excluded from the intensity line`])}for(const[a,n]of[["Generation",r.generation],["Market",r.price],["Emissions",r.emissions]])n&&n.data.length===0&&t.push([`${a} data`,"No data in the selected range"]);return t.push(["Generated",Vr(r.generatedAtMs,r.timeZone)],["Source",r.sourceUrl]),t}function Ki(r){const t=r.time??r.date?.getTime?.();return Number.isFinite(t)?t:null}function gn(r,t){const a=[r.columns.map(n=>Ia(n.header)).join(",")];for(const n of r.rows){const i=r.columns.map(o=>{const l=n[o.key];switch(o.type){case"time":{const s=Ki(n);return s===null?"":Vr(s,t)}case"number":return Number.isFinite(l)?String(l):"";case"boolean":return l==null?"":String(!!l);default:return Ia(l)}});a.push(i.join(","))}return a.join(` 3`)}function ed(r){return r.replace(zc,"").trim().slice(0,Hc)||"Sheet"}function Yi(r,t){const a=[r.columns.map(n=>({value:n.header,type:String,fontWeight:"bold"}))];for(const n of r.rows)a.push(r.columns.map(i=>{const o=n[i.key];switch(i.type){case"time":{const l=Ki(n);return l===null?null:{value:Yl(l,t),type:Number,format:Zc}}case"number":return Number.isFinite(o)?{value:o,type:Number}:null;case"boolean":return o==null?null:{value:!!o,type:Boolean};default:return o==null||o===""?null:{value:String(o),type:String}}}));return{sheet:ed(r.title),data:a,columns:r.columns.map((n,i)=>({width:i===0?20:16})),stickyRowsCount:1}}function Xi(r){return{sheet:"Summary",data:r.map(([t,a])=>[{value:t,type:String,fontWeight:"bold"},{value:a,type:String}]),columns:[{width:20},{width:80}]}}function td(r){return[Xi($c(r)),...Qc(r).map(t=>Yi(t,r.timeZone))]}function Sn(r){return r.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"")}function vn({scope:r,dataset:t="",range:a,extension:n}){return`${["tracker",r==="_all"?"nem":Sn(r),Sn(t),Sn(a)||"range"].filter(Boolean).join("-")}.${n}`}function qa(r,t){return vn({scope:r.region,dataset:t==="xlsx"?"":t,range:r.rangeSlug,extension:t==="xlsx"?"xlsx":"csv"})}var Ja=M("<option> </option>"),rd=M('<label class="flex min-w-0 flex-col gap-1"> <select class="max-w-full rounded border border-warm-grey bg-white p-2"><option>Select an interval</option><!><!></select></label>'),nd=M('<p role="status" class="my-4 text-sm"> </p>'),ad=M('<div class="my-4 h-5" aria-hidden="true"></div>'),id=M(`<p role="status" class="my-4 text-sm">Select two available intervals. Dates outside this range or filter are unavailable; change the 4 timeline range to include them.</p>`),od=M('<p role="status" class="my-4 text-sm">All fuel technologies are hidden. Show technologies in the table to compare them.</p>'),sd=M(`<p role="status" class="my-4 text-sm">No comparable readings for these intervals. Missing readings are shown below, not replaced 5 with zero.</p>`),ld=M('<th scope="col"><div class="flex flex-col items-end"><span class="text-xs"> </span><span class="font-mono text-xxs font-light text-mid-grey"> </span></div></th>'),cd=M("<td> </td>"),dd=M('<tr class="group text-sm hover:bg-light-warm-grey"><th scope="row"><button class="ml-2 flex w-full items-center gap-2.5 text-left"><span></span> <span class="min-w-0 truncate text-dark-grey"> <span class="text-mid-grey"> </span></span></button></th><!></tr>'),ud=M('<tbody><tr><th scope="rowgroup" class="sticky left-0 z-[1] border-b border-r border-warm-grey bg-white px-2 pb-1 pt-4 text-left text-sm font-medium"><span class="ml-2"> </span></th><td colspan="4" class="border-b border-warm-grey"></td></tr><!></tbody>'),md=M(`<!> <div class="comparison-chart mt-4 overflow-x-auto svelte-1vyc8b7"><div><!></div></div> <div class="mt-3 overflow-x-auto"><table class="w-full min-w-[560px] table-fixed border-separate border-spacing-0"><caption class="py-2 text-left text-xs text-mid-grey"> </caption><thead class="bg-light-warm-grey"><tr><th scope="col"><div class="ml-2 flex flex-col items-start"><span class="text-xs text-dark-grey">Technology</span><span class="font-mono text-xxs font-light text-mid-grey"> </span></div></th><!></tr></thead><!></table></div> <p class="mt-3 text-xs text-mid-grey">Change = B â A; percentage = (B â A) ÷ |A| à 100. Negative loads stay signed. Missing readings 6 and zero percentage baselines show â. Each date uses its displayed interval, which may be 7 partial or rolling; this is not a whole-window total.</p>`,1),gd=M('<section aria-label="Two-date comparison" class="mb-4 rounded-lg border border-mid-warm-grey/40 bg-white p-4"><div class="flex flex-wrap items-center justify-between gap-3"><h3 class="m-0 text-sm font-semibold">Compare dates</h3> <button class="text-xs underline">Close comparison</button></div> <p class="my-3 text-xs text-mid-grey"> </p> <div class="flex flex-wrap items-end gap-3 text-xs"><!> <button class="rounded border border-warm-grey px-3 py-2">Swap A and B</button> <button class="rounded border border-warm-grey px-3 py-2 disabled:opacity-40">Download comparison CSV</button></div> <!></section>');function vd(r,t){ct(t,!0);let a=Ve(t,"group",3,Wr);const n=["a","b"];let i=c(()=>ga(t.snapshot)),o=c(()=>Ll(t.snapshot,t.selection,t.hidden,sr(Et(a())))),l=c(()=>[{label:"Sources",rows:e(o).filter(L=>!L.isLoad)},{label:"Loads",rows:e(o).filter(L=>L.isLoad)}]),s=c(()=>ia(t.interval,qn(t.zone)).formatTooltip),u=c(()=>e(i).some(L=>L.time===t.selection.a)),d=c(()=>e(i).some(L=>L.time===t.selection.b)),f=c(()=>!t.pending&&!t.error&&e(u)&&e(d)),b=c(()=>e(f)&&e(o).some(L=>L.delta!==null)),S=ge(0),C=c(()=>ba(e(S))),T=c(()=>{const L=new na({key:Symbol("date-comparison"),title:"Change (B â A)",prefix:"M",displayPrefix:t.prefix,baseUnit:t.energy?"Wh":"W",chartType:"bar-stacked",hideDataOptions:!0,hideChartTypeOptions:!0});return L.isCategoryChart=!0,L.xKey="category",L.useDivergingStack=!0,L.chartStyles.chartHe
7ightPx=280,L.chartTooltips.showTotal=!1,L});ft(()=>{e(T).seriesNames=e(o).map(L=>L.id),e(T).seriesLabels=Object.fromEntries(e(o).map(L=>[L.id,L.label])),e(T).seriesColours=Object.fromEntries(e(o).map(L=>[L.id,L.colour])),e(T).seriesData=e(o).map(L=>({category:L.label,[L.id]:L.delta}))});function k(L,O){t.onchange({...t.selection,[L]:O?Number(O):null})}function y(L){return t.energy?Zr(L,t.prefix):zr(L,t.prefix)}function v(){if(!e(b))return;const L=t.selection.a,O=t.selection.b;Xr(gn(Al(e(o),{region:t.region,zone:t.zone,interval:t.interval,a:e(s)(L),b:e(s)(O),unit:t.energy?"MWh":"MW"}),t.zone),vn({scope:t.region,dataset:"comparison",range:`${jr(L,t.zone)}-to-${jr(O,t.zone)}`,extension:"csv"}))}var D=gd(),P=g(D),w=h(g(P),2);m(P);var A=h(P,2),J=g(A);m(A);var B=h(A,2),Q=g(B);Ge(Q,16,()=>n,L=>L,(L,O)=>{const Y=c(()=>t.selection[O]);var ye=rd(),ke=g(ye),Ce=h(ke),Ie=g(Ce);Ie.value=Ie.__value="";var Ne=h(Ie);{var Pe=fe=>{var Le=Ja(),ze=g(Le);m(Le);var gt={};U(xe=>{j(ze,`Unavailable: ${xe??""}`),gt!==(gt=e(Y))&&(Le.value=(Le.__value=e(Y))??"")},[()=>e(s)(e(Y))]),p(fe,Le)},qe=c(()=>e(Y)!==null&&!e(i).some(fe=>fe.time===e(Y)));H(Ne,fe=>{e(qe)&&fe(Pe)})}var X=h(Ne);Ge(X,17,()=>e(i),fe=>fe.time,(fe,Le)=>{var ze=Ja(),gt=g(ze,!0);m(ze);var xe={};U(Ke=>{j(gt,Ke),xe!==(xe=e(Le).time)&&(ze.value=(ze.__value=e(Le).time)??"")},[()=>e(s)(e(Le).time)]),p(fe,ze)}),m(Ce);var ie;yr(Ce),m(ye),U(fe=>{j(ke,`Date ${fe??""} `),Ce.disabled=t.pending||!!t.error,ie!==(ie=t.selection[O]??"")&&(Ce.value=(Ce.__value=t.selection[O]??"")??"",wr(Ce,t.selection[O]??""))},[()=>O.toUpperCase()]),_e("change",Ce,fe=>k(O,fe.currentTarget.value)),p(L,ye)});var ce=h(Q,2),G=h(ce,2);m(B);var se=h(B,2);{var te=L=>{var O=nd(),Y=g(O);m(O),U(()=>j(Y,`Comparison unavailable: ${t.error??""}. Retry the generation chart to reload its data.`)),p(L,O)},ne=L=>{var O=ad();p(L,O)},ve=L=>{var O=id();p(L,O)},Se=L=>{var O=od();p(L,O)},de=L=>{var O=md(),Y=Re(O);{var ye=ue=>{var Fe=sd();p(ue,Fe)};H(Y,ue=>{e(b)||ue(ye)})}var ke=h(Y,2),Ce=g(ke);let Ie;var Ne=g(Ce);aa(Ne,{get chart(){return e(T)},showOptions:!1,defaultTooltipText:"Hover a bar or focus a technology below to inspect its change"}),m(Ce),m(ke);var Pe=h(ke,2),qe=g(Pe),X=g(qe),ie=g(X);m(X);var fe=h(X),Le=g(fe),ze=g(Le),gt=g(ze),xe=h(g(gt)),Ke=g(xe,!0);m(xe),m(gt),m(ze);var et=h(ze);Ge(et,18,()=>["A","B","Change (B â A)","Change (%)"],ue=>ue,(ue,Fe,Ue)=>{var K=ld(),oe=g(K),pe=g(oe),Ye=g(pe,!0);m(pe);var Xe=h(pe),Je=g(Xe,!0);m(Xe),m(oe),m(K),U(()=>{He(K,1,`px-2 text-right last:pr-3 ${fr}`,"svelte-1vyc8b7"),j(Ye,Fe),j(Je,e(Ue)===3?"%":e(T).chartOptions.displayUnit)}),p(ue,K)}),m(Le),m(fe);var Ee=h(fe);Ge(Ee,17,()=>e(l),ue=>ue.label,(ue,Fe)=>{var Ue=ht(),K=Re(Ue);{var oe=pe=>{var Ye=ud(),Xe=g(Ye),Je=g(Xe),R=g(Je),z=g(R,!0);m(R),m(Je),Ut(),m(Xe);var me=h(Xe);Ge(me,17,()=>e(Fe).rows,$=>$.id,($,we)=>{const De=c(()=>pa(e(we).label));var E=dd(),Z=g(E),ee=g(Z),I=g(ee);let le;var V=h(I,2),Te=g(V,!0),_=h(Te),x=g(_,!0);m(_),m(V),m(ee),m(Z);var q=h(Z);Ge(q,17,()=>[y(e(we).a),y(e(we).b),y(e(we).delta),Br(e(we).percent)],On,(re,ae,Me)=>{var Ae=cd(),Ze=g(Ae,!0);m(Ae),U(be=>{He(Ae,1,be,"svelte-1vyc8b7"),j(Ze,e(ae))},[()=>Gt(ya(e(ae),Me===3))]),p(re,Ae)}),m(E),U(()=>{He(Z,1,`${e(C)??""} bg-white px-2 py-1.5 text-left font-normal group-hover:bg-light-warm-grey`,"svelte-1vyc8b7"),He(I,1,Gt(mn),"svelte-1vyc8b7"),le=Ct(I,"",le,{"background-color":e(we).colour,"border-color":e(we).colour}),j(Te,e(De).main),j(x,e(De).sub?` ${e(De).sub}`:"")}),Mt("focus",ee,()=>e(T).setHoverCategory(e(we).label,e(we).id)),Mt("blur",ee,()=>e(T).clearHover()),_e("click",ee,()=>e(T).setHoverCategory(e(we).label,e(we).id)),p($,E)}),m(Ye),U(()=>{F(Ye,"aria-label",e(Fe).label),j(z,e(Fe).label)}),p(pe,Ye)};H(K,pe=>{e(Fe).rows.length&&pe(oe)})}p(ue,Ue)}),m(qe),m(Pe),Ut(2),U((ue,Fe,Ue,K)=>{Ie=Ct(Ce,"",Ie,ue),j(ie,`A: ${Fe??""} · B: ${Ue??""}`),He(ze,1,`${e(C)??""} w-[160px] bg-light-warm-grey px-2 text-left ${fr}`,"svelte-1vyc8b7"),j(Ke,K)},[()=>({"min-width":`${Math.max(300,e(o).length*70)}px`}),()=>e(s)(t.selection.a),()=>e(s)(t.selection.b),()=>Et(a()).label]),Mt("scroll",Pe,ue=>N(S,ue.currentTarget.scrollLeft,!0)),p(L,O)};H(se,L=>{t.error?L(te):t.pending?L(ne,1):e(f)?e(o).length?L(de,-1):L(Se,3):L(ve,2)})}m(D),U(L=>
7{F(D,"data-tracker-png",L),F(D,"aria-busy",t.pending),j(J,`Select two displayed intervals from the current timeline. Values are absolute ${t.energy?"energy":"power"}; timeline transforms do not apply. UTC${t.zone??""}.`),G.disabled=!e(b)},[()=>JSON.stringify({id:"comparison",label:"Two-date comparison",ready:e(b),caption:e(b)?`A: ${e(s)(t.selection.a)} · B: ${e(s)(t.selection.b)} · Change (B â A)`:""})]),_e("click",w,()=>t.onchange(null)),_e("click",ce,()=>t.onchange({a:t.selection.b,b:t.selection.a})),_e("click",G,v),p(r,D),dt()}_t(["click","change"]);function hr(r,t,a=r?.data??[]){let n=null,i=null,o=0,l=0;for(const s of a){if(!r||!Or(s)||!Number.isFinite(s.time)||s.time<r.start||s.time>r.end||(l++,!t.length||t.some(d=>typeof s[d]!="number"||!Number.isFinite(s[d]))))continue;const u=t.reduce((d,f)=>d+s[f],0);Number.isFinite(u)&&(o++,!n||u<n.value?n={value:u,time:s.time,ties:1}:u===n.value&&(n={value:u,time:Math.min(n.time,s.time),ties:n.ties+1}),!i||u>i.value?i={value:u,time:s.time,ties:1}:u===i.value&&(i={value:u,time:Math.min(i.time,s.time),ties:i.ties+1}))}return{min:n,max:i,available:o,intervals:l}}function fd({generation:r,demand:t,renewables:a,market:n,emissions:i,hidden:o,basis:l,priceMetric:s,emissionsMetric:u}){const d=S=>S?.seriesNames.filter(C=>!o.includes(C))??[],f=s==="price_vw",b=(S,C)=>C(S?.data??[]).map((T,k)=>({...T,_bandClose:S?.data[k]._bandClose}));return[{id:"generation",label:l==="energy"?"Net energy":"Net power",unit:l==="energy"?"MWh":"MW",description:"Selected technologies, including imports and subtracting loads.",...hr(r,d(r))},{id:"market",label:s==="market_value"?"Market value":f?"Volume-weighted price":"Spot price",unit:s==="market_value"?"$":"$/MWh",description:s==="market_value"?"Net market value of selected technologies.":"Regional price, independent of technology selection.",...hr(n,f?[Ur]:s==="market_value"?d(n):n?.seriesNames??[],f?b(n,ui):n?.data)},{id:"demand",label:"Demand",unit:l==="energy"?"MWh":"MW",description:"Regional operational demand, independent of technology selection.",...hr(t,["demand"])},{id:"renewables",label:"Renewables",unit:"%",description:"Renewable share of regional gross demand, independent of technology selection.",...hr(a,["renewable_share"])},...u==="emissions"?[{id:"emissions",label:"Emissions volume",unit:"tCOâe",description:"Emissions from selected technologies.",...hr(i,d(i))}]:[]]}var hd=M('<button><!> <span aria-hidden="true"> </span></button>'),pd=M('<button class="col-span-2 px-4 py-2 text-left text-xs underline"> </button>'),bd=M('<p class="col-span-2 px-4 py-2 text-xxs text-mid-grey"> </p>'),yd=M('<div class="grid min-w-0 grid-cols-2 border-b border-mid-warm-grey/40"><div class="col-span-2 flex items-center border-b border-mid-warm-grey/40 bg-light-warm-grey/50 px-4 py-2 text-sm font-semibold text-dark-grey"><!></div> <!> <!> <!></div>'),wd=M(`<section aria-label="Window metrics" class="min-w-0 bg-white"><!> <div class="-mb-px grid grid-cols-1"></div> <footer class="m-4 rounded-md border border-dashed border-mid-warm-grey bg-light-warm-grey px-4 py-3 text-xxs leading-relaxed text-mid-grey">Complete intervals only. Values ignore chart transforms. Hover or focus a value to highlight its 8 interval. Tap to keep it selected; tap again to clear.</footer></section>`);function _d(r,t){ct(t,!0);let a=ge(null),n=c(()=>{const y=e(a);if(!y)return null;const v=e(o).find(D=>D.id===y.id)?.[y.kind];return v?.time===y.time&&v?.value===y.value?y:null});function i(){return e(n)?.time}let o=c(()=>fd(t.input)),l=c(()=>ia(t.interval,qn(t.zone)).formatTooltip);const s=["min","max"],u=Cn(0),d=Cn(2),f=Cn(1);function b(y,v){return v==="generation"||v==="demand"?Ir(y,"M",t.generationPrefix):v==="renewables"?f.format(y):v==="market"&&t.input.priceMetric!=="market_value"?d.format(y):u.format(y)}var S={getSelectedTime:i},C=wd(),T=g(C);ha(T,{side:"left",title:"Metrics",label:"Hide metrics",controls:"tracker-metrics-panel",get onclose(){return t.onclose},class:"sticky top-0 z-10"});var k=h(T,2);return Ge(k,21,()=>e(o),y=>y.id,(y,v)=>{var D=yd(),P=g(D),w=g(P);Ln(w,{get text(){return e(v).description},class:"cursor-help",children:(G,se)=>{Ut();var te=jt();U(()=>j(te,e(v).label)),p(G,te)},$$slots:{default:!0}}),m(P);var A=h(P,2);Ge(A,16,()=>s,G=>G,(G,se)=>{const te=c(()=>e(v)[se]),ne=c(()=>e(n)?.id===e(v).id&&e(n).kind===se),ve=c(()=>`${se==="min"?"Minimum":"Maximum"} ${e(v).label.toLowerCase()}`),Se=c(()=>t.status[e(v).id].error?e(v).id==="demand"||e(v).id==="renewables"?`Unavailable â retry ${e(v).label.toLowerCase()}`:"Unavailable â retry the chart":t.status[e(v).id].pending?"":e(te)?`${e(l)(e(te).time)}${e(te).ties>1?" · first occurrence":""}`:"No complete intervals");Ln(G,{get text(){return e(ve)},trigger:(L,O)=>{let Y=()=>O?.().props;var ye=hd();vi(ye,Ne=>({...Ne,class:`grid min-w-0 grid-cols-[minmax(0,1fr)_30px] items-start gap-x-2 break-words border-mid-warm-grey/40 px-5 py-5 text-left transition-colors enabled:hover:bg-warm-grey ${se==="max"?"border-l":""} ${e(ne)?"bg-warm-grey ring-2 ring-inset ring-dark-grey":""} focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-dark-grey`,disabled:!e(te)||t.status[e(v).id].pending||!!t.status[e(v).id].error,"data-testid":`metric-${e(v).id}-${se}`,"aria-label":e(ve),"aria-pressed":e(ne)}),[()=>Ps(Y(),{onmouseenter:()=>t.onhighlight(e(te)?.time),onmouseleave:()=>t.onhighlight(void 0),onfocus:()=>t.onhighlight(e(te)?.time),onblur:()=>t.onhighlight(void 0),onclick:()=>{N(a,e(ne)||!e(te)?null:{id:e(v).id,kind:se,time:e(te).time,value:e(te).value},!0),t.onhighlight(void 0)}})]);var ke=g(ye);{let Ne=c(()=>e(te)?b(e(te).value,e(v).id):"--"),Pe=c(()=>e(v).id==="generation"||e(v).id==="demand"?`${t.generationPrefix}${t.input.basis==="energy"?"Wh":"W"}`:e(v).unit);Ds(ke,{size:"sm",label:"",get value(){return e(Ne)},get unit(){return e(Pe)},get subtitle(){return e(Se)}})}var Ce=h(ke,2),Ie=g(Ce,!0);m(Ce),m(ye),U(()=>{He(Ce,1,`inline-flex self-start items-center justify-center rounded border py-[2px] text-[10px] font-semibold leading-[14px] transition-colors ${e(ne)?"border-primary bg-primary text-primary-foreground":"border-mid-warm-grey bg-light-warm-grey text-mid-grey"}`),j(Ie,se==="min"?"Min":"Max")}),p(L,ye)},$$slots:{trigger:!0}})});var J=h(A,2);{var B=G=>{var se=pd(),te=g(se);m(se),U(ne=>j(te,`Retry ${ne??""}`),[()=>
8e(v).label.toLowerCase()]),_e("click",se,()=>t.onretry(e(v).id)),p(G,se)};H(J,G=>{(e(v).id==="demand"||e(v).id==="renewables")&&t.status[e(v).id].error&&G(B)})}var Q=h(J,2);{var ce=G=>{var se=bd(),te=g(se);m(se),U(()=>j(te,`${e(v).label??""}: ${e(v).available??""} of ${e(v).intervals??""} intervals complete.`)),p(G,se)};H(Q,G=>{e(v).available<e(v).intervals&&!t.status[e(v).id].pending&&!t.status[e(v).id].error&&G(ce)})}m(D),U(()=>{F(D,"data-testid",`metrics-${e(v).id}`),F(D,"aria-busy",t.status[e(v).id].pending)}),p(y,D)}),m(k),Ut(2),m(C),p(r,C),dt(S)}_t(["click"]);const xd=864e5;function kd(){return{widenMultiplier:3,maxWidenMs:7*xd,grains:[]}}function Cd(r,t=200){let a=ge(!1);return ft(()=>{if(!r()){N(a,!1);return}const n=setTimeout(()=>N(a,!0),t);return()=>clearTimeout(n)}),{get active(){return r()&&e(a)}}}function Qa(r){const{metric:t}=r;return gr({region:r.region,interval:r.interval,timeZone:r.timeZone,enabled:r.enabled,spec:()=>{const a=r.group(),n=Et(a),i=r.timeZone();return{cacheScope:`${t}-table`,metric:t,seriesKey:a,processResponse:o=>Qn(o,{groupMap:n.fuelTechs,groupOrder:n.order,groupLabels:n.labels,loadsToInvert:t==="emissions"?[]:sr(n),getColour:kr,metricFilter:t,networkTimezone:i})}}})}function Tn(r){return gr({region:r.region,interval:r.interval,timeZone:r.timeZone,enabled:r.enabled,spec:()=>{const t=r.metricKey(),a=Eo(t);if(!a)return null;const n=r.timeZone();return{cacheScope:`${t}-provider`,metric:t,seriesKey:t,processResponse:i=>Ro(i,{seriesDefs:a.seriesDefs,networkTimezone:n})}}})}const Md=580*864e5;function Sd(r,{startMs:t,endMs:a,displayInterval:n,ianaTimeZone:i,bucketFilter:o}){const l=Uo({apiInterval:"1M",displayInterval:n,method:"sum",ianaTimeZone:i});if(!l)return[];const s=l(r,[Mr,Gr]),u=ci(an(n),o,i),d=[];for(const f of s){if(f.time<t||f.time>a)continue;const b=f[Mr],S=f[Gr];d.push({date:f.date,time:f.time,renewable_share:typeof b=="number"&&typeof S=="number"&&S>0?b/S*100:null})}return _o(d,u,i)}function Td(r){const t=r.range;let a=c(()=>r.selection().region),n=c(()=>r.selection().group),i=c(()=>r.selection().tablePanelOpen),o=c(()=>r.selection().overlays.includes("demand")),l=c(()=>r.selection().overlays.includes("renewables")),s=c(()=>r.selection().overlays.filter(v=>v.startsWith("curtailment-"))),u=c(()=>Jn(t.displayInterval)),d=c(()=>r.timeZone());const f=wi({region:()=>e(a),basis:()=>t.activeMetric,interval:()=>t.activeInterval,timeZone:()=>e(d),enabled:()=>e(i)||e(l)&&r.selection().generationTransform!=="proportion"||(e(l)||!!r.needsWindowMetrics?.())&&e(u)||!!r.needsContributionDemand?.()}),b=Qa({region:()=>e(a),group:()=>e(n),metric:"market_value",interval:()=>t.activeInterval,timeZone:()=>e(d),enabled:()=>e(i)}),S=Qa({region:()=>e(a),group:()=>e(n),metric:"emissions",interval:()=>t.activeInterval,timeZone:()=>e(d),enabled:()=>e(i)}),C=Tn({region:()=>e(a),metricKey:()=>t.activeMetric==="energy"?"demand_energy":"demand",interval:()=>t.activeInterval,timeZone:()=>e(d),enabled:()=>e(i)||e(o)||!!r.needsWindowMetrics?.()}),T=Tn({region:()=>e(a),metricKey:()=>t.activeMetric==="energy"?"curtailment_energy":"curtailment",interval:()=>t.activeInterval,timeZone:()=>e(d),enabled:()=>e(i)||e(s).length>0}),k=Tn({region:()=>e(a),metricKey:()=>"renewable_share",interval:()=>t.activeInterval,timeZone:()=>e(d),enabled:()=>e(i)||(e(l)||!!r.needsWindowMetrics?.())&&!e(u)}),y=[f,b,S,C,T,k];return{marketData:f,mvData:b,emissionsData:S,demandData:C,curtailmentData:T,shareData:k,all:y,get pending(){return y.some(v=>v.isPending)},get error(){return y.find(v=>v.error)?.error??null},retry(){for(const v of y)v.reconcileFetches()},get renewablesSource(){return e(u)?f:k},renewableShareRows(v,D,P){return e(u)?Sd(f.getVisibleRows(v-Md,D),{startMs:v,endMs:D,displayInterval:P.displayInterval,ianaTimeZone:P.ianaTimeZone,bucketFilter:P.bucketFilter??null}):k.getDisplayRows(v,D,P)}}}const fn=1e-6;function Kt(r,t,a,n){return n===void 0||a==="energy"?Da(r,t,a):Da(r,t,"energy")*n}function rn(r,t,a,n){if(n===void 0||a==="power")return Wo(r,t,a);const i=mi(r,t);return i===null||n<=0?null:i/n}function hn(r,t){return r.some(a=>typeof a[t]=="number"&&!isNaN(a[t]))}function Bn(r,t,a,n){return hn(r,t)?Kt(r,[t],a,n):null}function Rd(r,t,a,n){return Object.fromEntries(t.map(i=>[i,rn(r,i,a,n)]))}function Ed(r,t,a,n){return Object.fromEntries(t.map(i=>[i,Bn(r,i,a,n)]))}function Dd({mvRows:r,generationRows:t,seriesNames:a,basis:n,hours:i}){return Object.fromEntries(a.map(o=>{if(!hn(r,o))return[o,null];const l=Kt(t,[o],n,i);return Math.abs(l)<fn?[o,null]:[o,Kt(r,[o],"energy")/l]}))}function Pd({emissionsRows:r,generationRows:t,seriesNames:a,basis:n,hours:i,loadSeriesIds:o}){const l={},s={};for(const u of a){if(o.includes(u)||!hn(r,u)){l[u]=null,s[u]=null;continue}const d=Kt(r,[u],"energy"),f=Kt(t,[u],n,i);l[u]=d,s[u]=f>fn?d/f*1e3:null}return{volumeT:l,intensityKgPerMWh:s}}function jn({generationRows:r,seriesNames:t,basis:a,hours:n,mode:i,demandRows:o,demandBasis:l,loadSeriesIds:s}){if(i==="demand")return Kt(o,[Gr],l,n);const u=Dr(t,s,"generation");return Kt(r,u,a,n)}function Ld({generationRows:r,seriesNames:t,basis:a,hours:n,mode:i,demandRows:o,demandBasis:l,loadSeriesIds:s}){const u=Dr(t,s,i),d=jn({generationRows:r,seriesNames:t,basis:a,hours:n,mode:i,demandRows:o,demandBasis:l,loadSeriesIds:s});return Object.fromEntries(t.map(f=>!u.includes(f)||!hn(r,f)?[f,null]:[f,Ti(Kt(r,[f],a,n),d,fn)]))}function $a({generationData:r,mvRows:t,emissionsRows:a,demandRows:n,basis:i,hours:o,demandBasis:l,mode:s,hiddenSeries:u,loadSeriesIds:d}){const{data:f,seriesNames:b,seriesLabels:S,seriesColours:C,groupFuelTechs:T}
8=r,k=Rd(f,b,i,o),y=Ed(f,b,i,o),v=Dd({mvRows:t,generationRows:f,seriesNames:b,basis:i,hours:o}),D=Pd({emissionsRows:a,generationRows:f,seriesNames:b,basis:i,hours:o,loadSeriesIds:d}),P=Ld({generationRows:f,seriesNames:b,basis:i,hours:o,mode:s,demandRows:n,demandBasis:l,loadSeriesIds:d});return[...b].reverse().map(w=>{const A=k[w],J=y[w];return{id:w,label:S?.[w]??w,colour:C?.[w]??"#6a6a6a",isLoad:d.includes(w)||(A??0)<0,hidden:u.includes(w),energyMWh:J===null?null:Math.abs(J),avPowerMW:A===null?null:Math.abs(A),contributionPct:P[w],vwPrice:v[w],emissionsT:D.volumeT[w],intensityKgPerMWh:D.intensityKgPerMWh[w],fuelTechs:T?.[w]??[]}})}function ei({rows:r,series:t,basis:a,denominatorMWh:n,hours:i}){const o=[];for(const{id:l,label:s}of t){const u=rn(r,l,a,i);if(u===null)continue;const d=Kt(r,[l],a,i);o.push({id:l,label:s,energyMWh:Math.abs(d),avPowerMW:Math.abs(u),contributionPct:n>fn?d/n*100:null})}return o}function ti({demandRows:r,marketRows:t,shareRows:a,basis:n,hours:i}){return{demandEnergyMWh:Bn(r,"demand",n,i),demandAvMW:rn(r,"demand",n,i),renewablesEnergyMWh:Bn(t,Mr,n,i),renewablesAvMW:rn(t,Mr,n,i),renewablesSharePct:mi(a,"renewable_share")}}function Ad(r){const t=r.session.range,{mvData:a,emissionsData:n,marketData:i,demandData:o,curtailmentData:l,shareData:s}=r.providers;let u=c(()=>r.generation()),d=c(()=>r.session.window),f=c(()=>r.session.selection.bucketFilter),b=c(()=>r.session.selection.tablePanelOpen),S=c(()=>r.session.selection.group),C=c(()=>r.contribution()),T=c(()=>r.hidden()),k=c(()=>sr(Et(r.session.selection.group))),y=c(()=>Jn(t.displayInterval)),v=c(()=>r.ianaTimeZone()),D=c(()=>!e(f)||e(y)?null:ci(an(t.displayInterval),e(f),e(v))),P=c(()=>({displayInterval:t.displayInterval,ianaTimeZone:e(v),method:t.activeMetric==="energy"?"sum":"mean",bucketFilter:e(f)})),w=c(()=>({...e(P),method:"mean"})),A=c(()=>e(y)||!!e(f));function J(O,Y,ye){return xo(O.getVisibleRows(Y,ye),e(D))}function B(O,Y,ye,ke){return e(A)?J(O,Y,ye):O.getDisplayRows(Y,ye,ke)}let Q=c(()=>({start:e(u)?.start??e(d).start,end:e(u)?.end??e(d).end})),ce=c(()=>e(A)&&e(u)?.nativeData?{...e(u),data:e(u).nativeData}:e(u)),G=c(()=>
8{if(!e(ce))return null;const{start:O,end:Y}=e(Q);return Ao("canvas:table-rows",()=>$a({generationData:e(ce),mvRows:J(a,O,Y),emissionsRows:J(n,O,Y),demandRows:J(i,O,Y),basis:t.activeMetric,demandBasis:t.activeMetric,mode:e(C),hiddenSeries:e(T),loadSeriesIds:e(k)}))}),se=c(()=>{if(!e(ce))return[];const{start:O,end:Y}=e(Q);return ei({rows:B(l,O,Y,e(P)),series:[...Er].reverse(),basis:t.activeMetric,denominatorMWh:jn({generationRows:e(ce).data,seriesNames:e(ce).seriesNames,basis:t.activeMetric,mode:e(C),demandRows:J(i,O,Y),demandBasis:t.activeMetric,loadSeriesIds:e(k)})})}),te=c(()=>ti({demandRows:B(o,e(d).start,e(d).end,e(P)),marketRows:J(i,e(d).start,e(d).end),shareRows:B(s,e(d).start,e(d).end,e(w)),basis:t.activeMetric})),ne=c(()=>JSON.stringify([r.queryKey(),e(C)])),ve=ge(null);ft(()=>{!e(b)||!r.ready()||r.providers.pending||r.providers.error||!e(G)||N(ve,{key:e(ne),group:e(S),basis:t.activeMetric,contributionMode:e(C),rows:e(G),curtailmentRows:e(se),overlaySummary:e(te)})});let Se=c(()=>!r.ready()||r.providers.pending||!!r.providers.error||e(ve)?.key!==e(ne)),de=c(()=>e(ve)?.rows.map(O=>({...O,hidden:e(T).includes(O.id)}))??null),L=c(()=>{const O=r.inspectTime?.();if(O===void 0||!e(b)||e(Se)||r.session.gestureActive||!e(u)||O<e(d).start||O>e(d).end)return null;const Y=X=>{const ie=X[No(X,O)];return ie&&Or(ie)?[ie]:[]},ye=Y(e(u).data),ke=(X,ie)=>Y(X.getDisplayRows(e(Q).start,e(Q).end,ie)),Ce={...e(P),method:"sum"},Ie=ke(i,e(P)),Ne=t.activeMetric,Pe=$n(t.displayInterval,O,e(v)),qe={generationRows:ye,seriesNames:e(u).seriesNames,basis:Ne,hours:Pe,mode:e(C),demandRows:Ie,demandBasis:Ne,loadSeriesIds:e(k)};return{time:O,rows:$a({generationData:{...e(u),data:ye},mvRows:ke(a,Ce),emissionsRows:ke(n,Ce),...qe,hiddenSeries:e(T)}),curtailmentRows:ei({rows:ke(l,e(P)),series:[...Er].reverse(),basis:Ne,hours:Pe,denominatorMWh:jn(qe)}),overlaySummary:ti({demandRows:ke(o,e(P)),marketRows:Ie,shareRows:ke(s,e(w)),basis:Ne,hours:Pe})}});return{get inspection(){return e(L)},get rows(){return e(G)},get rowIds(){return(e(G)??[]).map(O=>O.id)},get curtailmentRows(){return e(se)},get overlaySummary(){return e(te)},get displayRowOpts(){return e(P)},get shareRowOpts(){return e(w)},get accepted(){return e(ve)},get valuesPending(){return e(Se)},get displayedRows(){return e(de)}}}function Nd(r){let t=ge({});const a=["generation","market","emissions"];function n(l){const{region:s,group:u,bucketFilter:d}=r.session.selection;return Do({region:s,group:u,bucketFilter:d,...r.session.window,metric:l==="generation"?r.session.range.activeMetric:l==="market"?r.priceMetric():r.emissionsMetric(),interval:r.session.range.activeInterval,displayInterval:r.session.range.displayInterval,excludedGroups:l==="emissions"&&r.emissionsMetric()==="emissions_intensity"?r.hidden():[]})}function i(l){const s=r.charts()[a.indexOf(l)]?.getQueryState();return!s||s.key!==n(l)?{pending:!0,error:null}:s}function o(l){const s=e(t)[l];return s?.queryKey===n(l)?s:null}return{queryKey:n,state:i,current:o,publish(l,s){s.queryKey===n(l)&&N(t,{...e(t),[l]:s})},ready(l){const s=i(l);return!s.pending&&!s.error&&o(l)!==null},get settled(){return a.every(l=>!i(l).pending)},get failed(){return a.some(l=>i(l).error)}}}function Od(r){const{session:t,data:a,providers:n,table:i}=r,o=["generation","market","emissions"],l=["demand","renewables"],s=C=>C==="demand"?n.demandData:n.renewablesSource;let u=c(()=>r.holdFrame()||t.gestureActive),d=c(()=>Object.fromEntries([...o.map(C=>{const{error:T}=a.state(C);return[C,{error:T,pending:!T&&(e(u)||!a.ready(C))}]}),...l.map(C=>{const{error:T,isPending:k}=s(C);return[C,{error:T,pending:!T&&(e(u)||k)}]})]));const f=C=>!e(d)[C].pending&&!e(d)[C].error;let b=c(()=>t.window),S=c(()=>({generation:f("generation")?a.current("generation"):null,market:f("market")?a.current("market"):null,emissions:f("emissions")?a.current("emissions"):null,demand:f("demand")?{data:n.demandData.getDisplayRows(e(b).start,e(b).end,i.displayRowOpts),start:e(b).start,end:e(b).end,seriesNames:["demand"]}:null,renewables:f("renewables")?{data:n.renewableShareRows(e(b).start,e(b).end,i.shareRowOpts),start:e(b).start,end:e(b).end,seriesNames:["renewable_share"]}:null,hidden:r.hidden(),basis:t.range.activeMetric,priceMetric:r.priceMetric(),emissionsMetric:r.emissionsMetric()}));return{get status(){return e(d)},get input(){return e(S)},retry(C){(C==="demand"||C==="renewables")&&s(C).reconcileFetches()}}}function Id(r,t,a=!1){const{hiddenSeries:n,overlays:i,rowIds:o}=r;if(a)return{hiddenSeries:o.filter(s=>s!==t),overlays:[]};const l=o.filter(s=>!n.includes(s)).length;return!n.includes(t)&&l===1?{hiddenSeries:[],overlays:[]}:{hiddenSeries:n.includes(t)?n.filter(s=>s!==t):[...n,t],overlays:i}}function Fd(r,t,a=!1){const{hiddenSeries:n,overlays:i,rowIds:o}=r;return a?{hiddenSeries:[...o],overlays:[t]}
8:{hiddenSeries:n,overlays:i.includes(t)?i.filter(l=>l!==t):[...i,t]}}var ri=M('<span class="hidden"></span>'),Wd=M('<div id="tracker-metrics-panel" data-testid="metrics-pane"><!> <!></div>'),Vd=M('<button class="text-xs underline">Compare dates</button>'),Ud=M('Gross-demand percentages unavailable. <button class="underline">Retry percentage data</button>',1),Hd=M('<p class="px-3 py-1 text-xs text-mid-grey" role="status"><!></p>'),ni=M("<!> <!>",1),zd=M('<span class="text-xs text-mid-grey">No national spot price â showing market value</span>'),Zd=M('<div class="relative flex min-h-0 flex-1 flex-row"><!> <!> <div><!> <!> <!> <!></div> <!></div>');function Bd(r,t){ct(t,!0);const a=W=>{Zi(W,{get group(){return e(b)},get contributionMode(){return e(S)},get tableColumns(){return s().selection.tableColumns},oncolumnschange:he=>s().select("tableColumns",he),ongroupchange:he=>s().select("group",he),oncontributionchange:he=>s().select("contributionMode",he)})},n=(W,he)=>{let We=Ko(()=>Yo(he?.(),()=>"generation",!0));{let nt=c(()=>K.current(e(We))),at=c(()=>K.state(e(We)).pending||!K.current(e(We))),it=c(()=>K.state(e(We)).error),pt=c(()=>!!e(D));sc(W,{get snapshot(){return e(nt)},get now(){return s().clockMs},get interval(){return d.activeInterval},get following(){return s().following},get pending(){return e(at)},get error(){return e(it)},get timeZone(){return e(A)},get filtered(){return e(pt)}})}},i=W=>{n(W,()=>"generation")},o=W=>{n(W,()=>"market")},l=W=>{n(W,()=>"emissions")};let s=Ve(t,"session",7),u=ge(!0);Tr(()=>{N(u,!document.hidden)});const d=kt(()=>s().range);let f=c(()=>s().selection.region),b=c(()=>s().selection.group),S=c(()=>s().selection.contributionMode),C=c(()=>s().selection.priceMode),T=c(()=>s().selection.emissionsMode),k=c(()=>s().selection.overlays),y=c(()=>s().selection.tablePanelOpen),v=c(()=>s().selection.comparison),D=c(()=>s().selection.bucketFilter),P=c(()=>ko(an(d.displayInterval))?.find(W=>W.id===e(D))?.label),w=c(()=>s().timeZone),A=c(()=>s().ianaTimeZone),J=c(()=>jr(s().anchorStart,e(w))),B=c(()=>jr(s().anchorEnd,e(w))),Q=c(()=>s().window),ce=c(()=>s().rangeLabel),G=ge(void 0),se=ge(void 0),te=ge(void 0),ne=c(()=>e(G)?.getDisplayPrefix()??"M"),ve=c(()=>s().selection.generationTransform==="proportion"),Se=c(()=>e(S)==="demand"),de=ge(void 0),L=ge(void 0),O=ge(!1),Y=c(()=>s().selection.hiddenSeries),ye=c(()=>Fr(e(f))),ke=c(()=>Fl(e(f),e(C))==="market_value"),Ce=c(()=>e(T)==="intensity"),Ie=c(()=>d.activeMetric==="energy"),Ne=c(()=>Jn(d.displayInterval)),Pe=c(()=>Co(d.displayInterval)?.label??d.displayInterval),qe=c(()=>e(ke)?"market_value":e(Ne)?"price_vw":"price"),X=c(()=>e(Ce)?"emissions_intensity":"emissions"),ie=c(()=>e(k).includes("demand")),fe=c(()=>e(k).includes("renewables")),Le=c(()=>Er.filter(W=>e(k).includes(W.overlay))),ze=c(()=>e(Le).map(W=>W.id));const gt=W=>s().select("priceMode",W),xe=W=>s().select("emissionsMode",W),Ke=W=>s().select("overlays",W,"replace"),et=W=>s().select("tablePanelOpen",W),Ee=Td({selection:()=>s().selection,range:d,timeZone:()=>e(w),needsContributionDemand:()=>e(Se),needsWindowMetrics:()=>e(tt)}),{marketData:ue,demandData:Fe,curtailmentData:Ue}=Ee,K=Nd({session:kt(()=>s()),priceMetric:()=>e(qe),emissionsMetric:()=>e(X),hidden:()=>e(Y),charts:()=>[e(G),e(se),e(te)]}),oe=Ad({session:kt(()=>s()),providers:Ee,generation:()=>K.current("generation"),queryKey:()=>K.queryKey("generation"),ready:()=>K.ready("generation"),hidden:()=>e(Y),contribution:()=>e(S),ianaTimeZone:()=>e(A),inspectTime:()=>e(lt)}),pe=Od({session:kt(()=>s()),data:K,providers:Ee,table:oe,hidden:()=>e(Y),priceMetric:()=>e(qe),emissionsMetric:()=>e(X),holdFrame:()=>e(ee)});function Ye(){const W=ga(K.ready("generation")?K.current("generation"):null);s().select("comparison",{a:W[0]?.time??null,b:W.at(-1)?.time??null})}let Xe=c(()=>oe.displayRowOpts),Je=c(()=>oe.rowIds),R=c(()=>oe.accepted),z=c(()=>oe.valuesPending),me=c(()=>oe.displayedRows),$=c(()=>oe.inspection);const we=[],De=kd();let E=ge(""),Z=c(()=>`${e(f)}|${e(b)}|${d.activeMetric}|${d.activeInterval}`),ee=c(()=>e(E)!==e(Z)||d.rangeSwitchPending),I=c(()=>!s().gestureActive&&(e(ee)||!K.current("generation")&&!K.state("generation").error||!K.current("market")&&!K.state("market").error||!K.current("emissions")&&!K.state("emissions").error||Ee.pending));const le=Cd(()=>e(I));let V=c(()=>le.active);function Te(){return e(V)}let _=c(()=>!ue.isPending&&!ue.error),x=c(()=>[...e(Se)||e(k).includes("renewables")&&e(Ne)?[ue]:[],...e(k).includes("demand")?[Ee.demandData]:[],...e(k).includes("renewables")&&!e(Ne)?[Ee.shareData]:[],...e(k).some(W=>W.startsWith("curtailment-"))?[Ee.curtailmentData]:[]].every(W=>!W.isPending&&!W.error)),q=c(()=>e(Se)&&e(_)?ue.getDisplayRows(e(Q).start,e(Q).end,e(Xe)):[]);function re(W,he){return rl({generationRows:W,demandRows:e(q),seriesNames:he,loadSeriesIds:sr(Et(e(b))),mode:e(S),ready:!e(ee)&&(e(S)==="generation"||e(_))})}ft(()=>{K.settled&&(N(E,e(Z),!0),d.settle())});const ae=W=>K.publish("generation",W);function Me(){return K.settled&&!Ee.pending&&!s().gestureActive}const Ae=W=>K.publish("market",W),Ze=W=>K.publish("emissions",W);let be=ge(0);const Be=320,rt=376,Qe=48,$e=new Rr("(min-width: 1024px)",!0);let yt=ge(null),tt=c(()=>e(yt)??$e.current),lt=c(()=>e(de)??(e(tt)?e(L)?.getSelectedTime():void 0)),Oe=c(()=>e(lt)!==void 0&&!s().gestureActive&&e(lt)>=e(Q).start&&e(lt)<=e(Q).end?ia(d.displayInterval,e(A)).formatTooltip(e(lt)):void 0);function je(){return e(Oe)}const ut=224;let xt=c(()=>
8Math.max(ut,Math.min(400,e(be)-($e.current?(e(y)?Be:Qe)+rt:56)))),Pt=ge(void 0);const st=Jr({initial:256,min:()=>ut,max:()=>e(xt),storageKey:"tracker-metrics-width",setOpen:W=>{W||At(void 0),N(yt,W,!0)},focusOnOpen:()=>e(Pt)?.querySelector("button")});let It=c(()=>e(tt)&&$e.current?st.size:Qe),vt=c(()=>ki({containerWidth:e(be),minPx:Be,reservedPx:e(It)+rt,maxPct:80,wide:$e.current,narrowMaxPct:80}));const mt=Jr({initial:30,min:()=>e(vt).min,max:()=>e(vt).max,scale:()=>e(be)?100/e(be):0,inverted:!0,step:2,setOpen:et});Tr(()=>s().connect(()=>[e(G),e(se),e(te),...Ee.all]));let er=c(()=>{if(!e(ie)&&!e(fe))return we;const{start:W,end:he}=e(Q),We=[];return e(ie)&&We.push({id:"demand",label:"Demand",data:Fe.getDisplayRows(W,he,e(Xe)),valueKey:"demand",colour:Ci,scale:"y"}),e(fe)&&We.push({id:"renewable-share",label:e(ve)?"Renewables (% of gross demand)":"Renewables",data:Ee.renewableShareRows(W,he,oe.shareRowOpts),valueKey:"renewable_share",colour:Mi,scale:"percent",tooltipUnit:"%",formatTooltipValue:Hi,absoluteTooltipValue:{data:ue.getDisplayRows(W,he,e(Xe)),valueKey:Mr}}),We}),cr=c(()=>e(Le).length?[{id:"curtailment",data:Ue.getDisplayRows(e(Q).start,e(Q).end,e(Xe)),series:e(Le).map(({id:W,colour:he,label:We})=>({id:W,colour:he,label:We}))}]:we),Lt=c(()=>({hiddenSeries:e(Y),overlays:e(k),rowIds:e(Je)}));function St(W,he=!1){const We=Fd(e(Lt),W,he);he?s().selectVisibility(We.hiddenSeries,We.overlays):Ke?.(We.overlays)}function Ft(W,he=!1){const We=Js(W);We&&St(We,he)}function tr(W,he=!1){const We=Id(e(Lt),W,he);s().selectVisibility(We.hiddenSeries,We.overlays)}function Tt(){s().selectVisibility([])}function At(W){N(de,W,!0)}let Yt=c(()=>({region:e(f),bucketFilter:e(D),interval:d.activeInterval,displayInterval:d.displayInterval,group:e(b),timeZone:e(w),dateStart:e(J),dateEnd:e(B),showContainer:!1,tooltipMode:"strip",onhoverchange:At,onviewportsettle:s().settleViewport,panZoomMode:"tap-to-engage",gestureActive:s().gestureActive,ongesturechange:W=>s().gestureActive=W,showLoadingIndicator:!1,holdFrame:e(ee),prefetchPlan:e(u)?De:null}));function dr(W="xlsx"){const he=["generation","market","emissions"],We=W==="xlsx"?he:he.filter(it=>it===W),nt=W==="table"||W==="xlsx"&&e(y),at=We.some(it=>!K.ready(it))||nt&&e(z);return{region:e(f),regionLabel:Cr(e(f)),group:e(b),groupLabel:Et(e(b)).label,contributionMode:e(S),basis:d.activeMetric,displayInterval:d.displayInterval,intervalLabel:e(Pe),rangeLabel:e(ce),rangeSlug:po(d),timeZone:e(w),window:e(Q),priceMetric:e(qe),emissionsMetric:e(X),generation:K.current("generation"),price:K.current("market"),emissions:K.current("emissions"),tableRows:e(z)?null:e(me),curtailmentRows:e(R)?.curtailmentRows??[],overlaySummary:e(R)?.overlaySummary??null,tablePanelOpen:e(y),hiddenSeries:e(Y),pending:at,error:We.some(it=>!!K.state(it).error)||nt&&!!Ee.error}}var bn={isLoading:Te,isLiveReady:Me,getInspectLabel:je,getExportContext:dr},rr=Zd();Mt("keydown",ra,W=>{W.key==="Escape"&&e(tt)&&!$e.current&&st.close()}),Mt("visibilitychange",Go,()=>{N(u,!document.hidden)});var _a=g(rr);{var oo=W=>{var he=Wd();let We;var nt=g(he);Nn(nt,{open:!0,direction:"right",get onclose(){return st.close},defaultSize:100,showDragHandle:!1,get externalResizing(){return st.dragging},class:"flex min-w-0 flex-1 bg-white",header:pt=>{var Nt=ri();p(pt,Nt)},children:(pt,Nt)=>{Ot(_d(pt,{get input(){return pe.input},get status(){return pe.status},get onretry(){return pe.retry},get interval(){return d.displayInterval},get zone(){return e(w)},get generationPrefix(){return e(ne)},onhighlight:At,get onclose(){return st.close}}),wt=>N(L,wt),()=>e(L))},$$slots:{header:!0,default:!0}});var at=h(nt,2);{let it=c(()=>Math.round(st.size));qr(at,{axis:"x",get onstart(){return st.start},get onkeydown(){return st.keydown},tabindex:0,"aria-valuemin":ut,get"aria-valuemax"(){return e(xt)},get"aria-valuenow"(){return e(it)},get active(){return st.dragging},alwaysShowGrip:!0,class:"w-4 rounded-md focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-dark-grey",role:"separator","aria-orientation":"vertical","aria-label":"Resize metrics panel",title:"Drag to resize metrics, or use the arrow keys"})}m(he),Ot(he,it=>N(Pt,it),()=>e(Pt)),U(()=>{He(he,1,`z-30 flex shrink-0 ${$e.current?"relative":"absolute inset-y-0 left-0 shadow-xl"}`),We=Ct(he,"",We,{width:`${st.size}px`})}),p(W,he)};H(_a,W=>{e(tt)&&W(oo)})}var xa=h(_a,2);{var so=W=>{Zn(W,{side:"left",label:"Show metrics",controls:"tracker-metrics-panel",get onopen(){return st.open},get opener(){return st.opener},set opener(he){st.opener=he}})};H(xa,W=>{(!e(tt)||!$e.current)&&W(so)})}var ur=h(xa,2),ka=g(ur);{const W=nt=>{var at=Vd();U(()=>F(at,"aria-expanded",!!e(v))),_e("click",at,()=>e(v)?s().select("comparison",null):Ye()),p(nt,at)},he=(nt,at=bt)=>{var it=ni(),pt=Re(it);{var Nt=ot=>{var Rt=Hd(),yn=g(Rt);{var wn=Xt=>{var Wt=Ud(),vo=h(Re(Wt));_e("click",vo,()=>ue.reconcileFetches()),p(Xt,Wt)},_n=Xt=>{var Wt=jt(`Shares per interval; the table summarises the selected window. Change the basis in 9 Fuel technology options â Contribution.`);p(Xt,Wt)};H(yn,Xt=>{e(Se)&&ue.error?Xt(wn):Xt(_n,-1)})}m(Rt),p(ot,Rt)};H(pt,ot=>{(e(ve)||e(Se)&&ue.error)&&ot(Nt)})}var wt=h(pt,2);{let ot=c(()=>e(Ie)?"Energy":"Power");Ot(kn(wt,mr(()=>e(Yt),{get hoverTime(){return e(lt)},get metric(){return d.activeMetric},chartKind:"stacked",nightShading:!0,get title(){return e(ot)}
9,get chartHeightPx(){return at()},generationUnitOptions:!0,interpolateRooftop:!0,get dataTransform(){return s().selection.generationTransform},ondatatransformchange:Rt=>s().select("generationTransform",Rt),createProportionContext:re,get overlayLines(){return e(er)},get overlayAreas(){return e(cr)},get hiddenSeriesNames(){return e(Y)},onviewportchange:Rt=>s().moveViewport(Rt,e(G)),onvisibledata:ae,get panZoomEngaged(){return e(O)},set panZoomEngaged(Rt){N(O,Rt,!0)}})),Rt=>N(G,Rt),()=>e(G))}p(nt,it)};let We=c(()=>({id:"generation",label:"Generation",caption:d.displayInterval==="5m"&&Object.values(K.current("generation")?.groupFuelTechs??{}).some(nt=>nt.includes("solar_rooftop"))?"Rooftop solar: 5-minute chart values interpolated between reported half-hour values":"",ready:K.ready("generation")&&!e(ee)&&!s().gestureActive&&e(x)}));Hr(ka,{title:"Generation",get loading(){return e(V)},get status(){return i},get png(){return e(We)},get engaged(){return e(O)},heightStorageKey:"tracker-chart-height-generation",defaultHeightPx:320,actions:W,children:he,$$slots:{actions:!0,default:!0}})}var Ca=h(ka,2);{var lo=W=>{{let he=c(()=>K.ready("generation")?K.current("generation"):null),We=c(()=>!K.state("generation").error&&!K.ready("generation")),nt=c(()=>K.state("generation").error);vd(W,{get group(){return e(b)},get snapshot(){return e(he)},get selection(){return e(v)},get hidden(){return e(Y)},get pending(){return e(We)},get error(){return e(nt)},get region(){return e(f)},get zone(){return e(w)},get interval(){return d.displayInterval},get energy(){return e(Ie)},get prefix(){return e(ne)},onchange:at=>s().select("comparison",at)})}};H(Ca,W=>{e(v)&&W(lo)})}var Ma=h(Ca,2);{const W=nt=>{var at=ht(),it=Re(at);{var pt=wt=>{An(wt,{buttons:[{label:"Price",value:"price"},{label:"Market value",value:"market_value"}],get selected(){return e(C)},onChange:ot=>gt?.(ot)})},Nt=wt=>{var ot=zd();p(wt,ot)};H(it,wt=>{e(ye)?wt(pt):wt(Nt,-1)})}p(nt,at)},he=(nt,at=bt)=>{{let it=c(()=>e(ke)?"stacked":"line"),pt=c(()=>e(ke)?"Market value":e(Ne)?"Volume-weighted price":"Spot price"),Nt=c(()=>e(ke)?e(Y):[]),wt=c(()=>e(ke)?s().selection.marketValueTransform:"absolute");Ot(kn(nt,mr(()=>e(Yt),{get hoverTime(){return e(lt)},get metric(){return e(qe)},get chartKind(){return e(it)},get title(){return e(pt)},get chartHeightPx(){return at()},get hiddenSeriesNames(){return e(Nt)},get dataTransform(){return e(wt)},ondatatransformchange:ot=>s().select("marketValueTransform",ot),onviewportchange:ot=>s().moveViewport(ot,e(se)),onvisibledata:Ae,get panZoomEngaged(){return e(O)},set panZoomEngaged(ot){N(O,ot,!0)}})),ot=>N(se,ot),()=>e(se))}};let We=c(()=>({id:"market",label:"Market",ready:K.ready("market")&&!e(ee)&&!s().gestureActive}));Hr(Ma,{title:"Market",get loading(){return e(V)},get status(){return o},get png(){return e(We)},get engaged(){return e(O)},heightStorageKey:"tracker-chart-height-price",actions:W,children:he,$$slots:{actions:!0,default:!0}})}var co=h(Ma,2);{const W=nt=>{An(nt,{buttons:[{label:"Intensity",value:"intensity"},{label:"Volume",value:"volume"}],get selected(){return e(T)},onChange:at=>xe?.(at)})},he=(nt,at=bt)=>{{let it=c(()=>e(Ce)?"line":"stacked"),pt=c(()=>e(Ce)?"Intensity":"Volume"),Nt=c(()=>e(Ce)?[]:e(Y)),wt=c(()=>e(Ce)?e(Y):[]);Ot(kn(nt,mr(()=>e(Yt),{get hoverTime(){return e(lt)},get metric(){return e(X)},get chartKind(){return e(it)},get title(){return e(pt)},get chartHeightPx(){return at()},get hiddenSeriesNames(){return e(Nt)},get excludedFuelTechGroups(){return e(wt)},onviewportchange:ot=>s().moveViewport(ot,e(te)),onvisibledata:Ze,get panZoomEngaged(){return e(O)},set panZoomEngaged(ot){N(O,ot,!0)}})),ot=>N(te,ot),()=>e(te))}};let We=c(()=>({id:"emissions",label:"Emissions",ready:K.ready("emissions")&&!e(ee)&&!s().gestureActive}));Hr(co,{title:"Emissions",get loading(){return e(V)},get status(){return l},get png(){return e(We)},get engaged(){return e(O)},heightStorageKey:"tracker-chart-height-emissions",actions:W,children:he,$$slots:{actions:!0,default:!0}})}m(ur),hi(ur,(W,he)=>pi?.(W,he),()=>({event:"pointerdown",options:!0}));var uo=h(ur,2);{var mo=W=>{var he=ni(),We=Re(he);{let at=c(()=>Math.round(mt.size));qr(We,{axis:"x",get onstart(){return mt.start},get onkeydown(){return mt.keydown},tabindex:0,get"aria-valuemin"(){return e(vt).min},get"aria-valuemax"(){return e(vt).max},get"aria-valuenow"(){return e(at)},get active(){return mt.dragging}
9,alwaysShowGrip:!0,class:"w-4 rounded-md focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-dark-grey",role:"separator","aria-orientation":"vertical","aria-label":"Resize table panel",title:"Drag to resize the table, or use the arrow keys"})}var nt=h(We,2);Nn(nt,{open:!0,direction:"left",get defaultSize(){return mt.size},minSize:Be,get containerSize(){return e(be)},showDragHandle:!1,get externalResizing(){return mt.dragging},get onclose(){return mt.close},class:"z-20 flex bg-white",header:it=>{var pt=ri();p(it,pt)},children:(it,pt)=>{{let Nt=c(()=>e($)?.rows??e(me)),wt=c(()=>K.state("generation").error??Ee.error),ot=c(()=>e(R)?.basis??d.activeMetric),Rt=c(()=>d.displayInterval==="5m"),yn=c(()=>e(R)?.group??e(b)),wn=c(()=>e(R)?.contributionMode??e(S)),_n=c(()=>e($)?.curtailmentRows??e(R)?.curtailmentRows??[]),Xt=c(()=>e($)?.overlaySummary??e(R)?.overlaySummary??null);Lc(it,{get loading(){return e(V)},get options(){return a},get rows(){return e(Nt)},get tableColumns(){return s().selection.tableColumns},get valuesPending(){return e(z)},get error(){return e(wt)},onretry:()=>{e(G)?.reconcileFetches(),Ee.retry()},get basis(){return e(ot)},get rooftopInterpolation(){return e(Rt)},get displayPrefix(){return e(ne)},get group(){return e(yn)},get contributionMode(){return e(wn)},get hiddenCount(){return e(Y).length},get curtailmentRows(){return e(_n)},get shownCurtailment(){return e(ze)},get overlaySummary(){return e(Xt)},get showDemandLine(){return e(ie)},get showRenewablesLine(){return e(fe)},ontoggle:tr,oncurtailmenttoggle:Ft,ondemandlinetoggle:Wt=>St("demand",Wt),onrenewableslinetoggle:Wt=>St("renewables",Wt),onshowall:Tt,get onclose(){return mt.close},get closeButton(){return mt.closer},set closeButton(Wt){mt.closer=Wt}})}},$$slots:{header:!0,default:!0}}),p(W,he)},go=W=>{Zn(W,{side:"right",label:"Show fuel tech table",controls:"tracker-table-panel",get onopen(){return mt.open},get opener(){return mt.opener},set opener(he){mt.opener=he},children:(he,We)=>{a(he)},$$slots:{default:!0}})};H(uo,W=>{e(y)?W(mo):W(go,-1)})}return m(rr),U(W=>{F(rr,"data-png-context",W),He(ur,1,`min-w-0 flex-1 overflow-y-auto py-4 md:py-6 ${e(tt)&&$e.current?"":"pl-4 md:pl-6"} ${e(y)?"":"pr-4 md:pr-6"}`)},[()=>`${Cr(e(f))} · ${e(ce)} · ${e(Pe)} · UTC${e(w)} · ${Et(e(b)).label}${e(P)?` · ${e(P)}`:""}`]),Mt("clickoutside",ur,()=>N(O,!1)),xr(rr,"clientWidth",W=>N(be,W)),p(r,rr),dt(bn)}_t(["click"]);var jd=M('<div class="range-status relative h-[36px] w-0 shrink-0 overflow-hidden lg:w-auto lg:min-w-[36px] svelte-my28ur" data-testid="tracker-range-status"><span class="range-label hidden h-full items-center whitespace-nowrap text-sm font-bold text-dark-grey lg:flex svelte-my28ur" data-testid="tracker-range-label"> </span> <div class="range-loader pointer-events-none absolute inset-0 flex items-center justify-end svelte-my28ur"><!></div></div>');function Gd(r,t){let a=Ve(t,"inspectLabel",3,void 0);var n=jd(),i=g(n),o=g(i,!0);m(i);var l=h(i,2),s=g(l);Ls(s,{class:"[&_svg]:size-[28px]"}),m(l),m(n),U(()=>{F(n,"data-loading",t.loading),F(n,"data-inspecting",a()!==void 0),F(i,"aria-hidden",t.loading),j(o,a()??t.label),F(l,"role",t.loading?"status":void 0),F(l,"aria-label",t.loading?"Updating tracker":void 0),F(l,"aria-hidden",!t.loading),F(l,"data-testid",t.loading?"tracker-loading":void 0)}),p(r,n)}const Bt=Date.UTC(2e3,0,1),_r=30*6e4,Gn=Bt+864e5;function pr(r){const t=Math.max(0,Math.min(1440,Math.floor((Number(r)-Bt)/6e4)));return`${String(Math.floor(t/60)).padStart(2,"0")}:${String(t%60).padStart(2,"0")}`}function qi(r,t){const a=Bt+r*6e4;return{...t,time:a,date:new Date(a)}}function Kd(r,t,a){return r.map(n=>qi(n.minute,{...a?Object.fromEntries(t.map((i,o)=>[i,n.values[o]])):{},average:n.average}))}function Yd(r){return(r[0]?.points??[]).map((t,a)=>qi(t.minute,Object.fromEntries(r.map(n=>[n.name,n.points[a].y0===null?null:n.points[a].value]))))}function Xd(r,t){const a=Math.min(864e5,Math.max(36e5,t-r)),n=Math.max(Bt,Math.min(r,Gn-a));return{start:n,end:n+a}}function qd(r,t){const a=t-r,n=a<=4*36e5?_r:a<=12*36e5?2*36e5:4*36e5,i=Bt+Math.ceil((r-Bt)/n)*n;return Array.from({length:Math.max(0,Math.floor((t-i)/n)+1)},(o,l)=>new Date(i+l*n))}var Jd=M('<button class="flex items-center gap-2 rounded border border-warm-grey px-2 py-1.5 aria-pressed:font-semibold"><span class="size-3 rounded-sm"></span> </button>'),Qd=M(`<div role="group" class="mt-3"><!></div> <div class="mt-2 flex flex-wrap items-center gap-2 text-xs"><!> <button class="ml-auto rounded border border-warm-grey px-2 py-1.5">Inspect values</button> <button class="rounded border border-warm-grey px-2 py-1.5">Reset day view</button></div> <p class="mt-2 text-xs text-mid-grey">Hover to inspect; click to pin. Focus âInspect valuesâ and use arrow keys to inspect, Enter to 10 pin, Escape to clear. Click legend items to show/hide;
10 Ctrl/â-click to solo.</p>`,1);function Ji(r,t){ct(t,!0);let a=Ve(t,"stacked",3,!1),n=Ve(t,"price",3,!1),i=ge({start:Bt,end:Gn}),o=ge(!1),l=c(()=>{const v=new na({key:Symbol("time-of-day"),title:kt(()=>t.title),prefix:n()?"":"M",displayPrefix:n()?"":"M",allowedPrefixes:n()?[]:["M","G"],baseUnit:n()?"$/MWh":"W",timeZone:"UTC",chartType:a()?"stacked-area":"line",hideDataOptions:!0,hideChartTypeOptions:!0});return v.useDivergingStack=!1,v.chartOptions.selectedCurveType=n()?"step":"smooth",v.chartStyles.chartHeightPx=300,v.chartStyles.snapTicks=!0,v.chartStyles.chartPadding={top:12,bottom:28,left:0,right:0},v.chartTooltips.showTotal=!1,v.maximumFractionDigits=1,v.formatTickX=pr,v});ft(()=>{e(l).title=t.title,e(l).seriesData=t.rows,e(l).seriesNames=t.names,e(l).seriesLabels=t.labels,e(l).seriesColours=t.colours,e(l).formatTooltipX=v=>`${pr(v)}â${pr(Number(v)+_r)} · UTC${t.zone}`}),ft(()=>{e(l).setXDomain(e(i).start,e(i).end-(e(l).stepIntervalMs||0));const v=qd(e(i).start,e(i).end);e(l).xTicks=v,e(l).xGridlineTicks=v,e(l).xMobileHiddenTicks=v.filter((D,P)=>P%2===1)});const s=ea({viewport:()=>e(i),apply:(v,D)=>{N(i,Xd(v,D))},minDateMs:()=>Bt,minDurationMs:()=>36e5,maxDurationMs:()=>864e5,onGestureStart:()=>e(l).clearHover()});Sr(s.dispose);function u(){N(o,!1),N(i,{start:Bt,end:Gn}),e(l).clearFocus(),e(l).clearHover()}function d(v){if(v.target!==v.currentTarget)return;const D=e(l).hoverTime??e(l).focusTime??e(i).start;if(v.key==="ArrowLeft"||v.key==="ArrowRight"){v.preventDefault();const P=Math.max(e(i).start,Math.min(e(i).end-_r,D+(v.key==="ArrowRight"?_r:-_r)));e(l).setHover(P)}else v.key==="Enter"||v.key===" "?(v.preventDefault(),e(l).toggleFocus(D)):v.key==="Escape"&&(e(l).clearFocus(),e(l).clearHover())}var f=Qd(),b=Re(f),S=g(b);{let v=c(()=>[e(i).start,e(i).end]),D=c(()=>e(i).end-e(i).start<=36e5),P=c(()=>e(i).end-e(i).start>=864e5);aa(S,{get chart(){return e(l)},tooltipMode:"floating",enablePan:!0,panZoomMode:"tap-to-engage",get viewDomain(){return e(v)},zoomMode:"static",resizable:!0,get onpanstart(){return s.handlePanStart},get onpan(){return s.handlePan},get onpanend(){return s.handlePanEnd},get onzoom(){return s.handleZoom},get onzoomin(){return s.zoomIn},get onzoomout(){return s.zoomOut},get isAtMinZoom(){return e(D)},get isAtMaxZoom(){return e(P)},get engaged(){return e(o)},set engaged(w){N(o,w,!0)}})}m(b);var C=h(b,2),T=g(C);Ge(T,16,()=>t.names,v=>v,(v,D)=>{var P=Jd(),w=g(P);let A;var J=h(w,1,!0);m(P),U(B=>{F(P,"aria-pressed",B),A=Ct(w,"",A,{background:t.colours[D]}),j(J,t.labels[D]??D)},[()=>!e(l).hiddenSeriesNames.includes(D)]),_e("click",P,B=>e(l).toggleSeriesVisibility(D,B.metaKey||B.ctrlKey)),p(v,P)});var k=h(T,2),y=h(k,2);m(C),Ut(2),U(v=>{F(b,"aria-label",`${t.title} interactive chart`),F(b,"data-tracker-png",v),F(C,"aria-label",`${t.title} legend`)},[()=>JSON.stringify({id:a()?"profile-stack":"profile",label:t.title,ready:!0,caption:`${pr(e(i).start)}â${pr(e(i).end)}`})]),_e("keydown",k,d),_e("click",k,()=>e(l).setHover(e(i).start)),_e("click",y,u),p(r,f),dt()}_t(["click","keydown"]);function ai(r){let t=c(r);const a=gr({region:()=>e(t).region,interval:()=>"5m",timeZone:()=>e(t).zone,enabled:()=>e(t).enabled!==!1,exactWindow:!0,spec:()=>{const{metric:l,zone:s,group:u}=e(t);return{cacheScope:`time-of-day-${l}`,metric:l,seriesKey:u.value,processResponse:d=>l==="price"?Po(d,{networkTimezone:s,label:"Spot price"}):Qn(d,{groupMap:u.fuelTechs,groupOrder:u.order,groupLabels:u.labels,loadsToInvert:sr(u),getColour:kr,networkTimezone:s})}}});let n=ge({start:0,end:0});ft(()=>{const{start:l,end:s}=e(t).window;kt(()=>a.setViewport(l,s)),N(n,{start:l,end:s})});let i=c(()=>a.error),o=c(()=>!e(i)&&(a.isPending||e(n).start!==e(t).window.start||e(n).end!==e(t).window.end));return{get rows(){return a.getVisibleRows(e(t).window.start,e(t).window.end)},get meta(){return a.seriesMeta},get pending(){return e(o)},get error(){return e(i)},retry(){a.reconcileFetches()}}}var $d=M('<p class="my-4 text-sm"> </p> <button class="rounded border border-warm-grey px-3 py-2 text-xs">Retry average-day overview</button>',1),eu=M('<p class="py-10 text-center text-sm">Loading average-day overviewâ¦</p>'),tu=M('<p class="py-10 text-center text-sm">No complete average-day stack available for this window.</p>'),ru=M('<th scope="col" class="svelte-19v4rp"> </th>'),nu=M('<td class="svelte-19v4rp"> </td>'),au=M('<tr><th scope="row" class="svelte-19v4rp"> </th><!></tr>'),iu=M('<details class="mt-3"><summary class="cursor-pointer text-sm">All-technology averages and coverage</summary> <div class="overflow-x-auto"><table class="w-full whitespace-nowrap text-right font-space text-xs"><caption class="py-2 text-left"> </caption><thead><tr><th scope="col" class="svelte-19v4rp">Time</th><!></tr></thead><tbody></tbody></table></div></details>'),ou=M(`<!> <p class="mt-3 text-xs text-mid-grey">Each technology averages its available days independently. A missing technology leaves a gap 11 in the whole stack; a gap is not zero. Timeline visibility does not hide technologies here.</p> <!>`,1),su=M('<section class="my-6 border-y border-warm-grey py-5" aria-label="Average day fuel technology stack"><p class="text-xs text-mid-grey"> </p> <!></section>');function lu(r,t){ct(t,!0);let a=c(()=>t.source.error),n=c(()=>t.source.pending),i=c(()=>t.source.meta),o=c(()=>Sl(t.source.rows,e(i)?.seriesNames??[],t.window)),l=c(()=>e(o).some(y=>y.points.some(v=>v.y1!==null))),s=c(()=>Yd(e(o)));const u=y=>
11y===null?"â":y.toLocaleString("en-AU",{maximumFractionDigits:1});var d=su(),f=g(d),b=g(f);m(f);var S=h(f,2);{var C=y=>{var v=$d(),D=Re(v),P=g(D);m(D);var w=h(D,2);U(()=>j(P,`Average-day overview unavailable: ${e(a)??""}`)),_e("click",w,()=>t.source.retry()),p(y,v)},T=y=>{var v=eu();p(y,v)},k=y=>{var v=ou(),D=Re(v);{var P=B=>{{let Q=c(()=>e(i)?.seriesNames??[]),ce=c(()=>e(i)?.seriesLabels??{}),G=c(()=>e(i)?.seriesColours??{});Ji(B,{get rows(){return e(s)},get names(){return e(Q)},get labels(){return e(ce)},get colours(){return e(G)},title:"Average day · All fuel technologies",get zone(){return t.zone},stacked:!0})}},w=B=>{var Q=tu();p(B,Q)};H(D,B=>{e(l)?B(P):B(w,-1)})}var A=h(D,4);{var J=B=>{var Q=iu(),ce=h(g(Q),2),G=g(ce),se=g(G),te=g(se);m(se);var ne=h(se),ve=g(ne),Se=h(g(ve));Ge(Se,17,()=>e(o),L=>L.name,(L,O)=>{var Y=ru(),ye=g(Y,!0);m(Y),U(()=>j(ye,e(i)?.seriesLabels[e(O).name]??e(O).name)),p(L,Y)}),m(ve),m(ne);var de=h(ne);Ge(de,23,()=>e(o)[0].points,L=>L.minute,(L,O,Y)=>{var ye=au(),ke=g(ye),Ce=g(ke,!0);m(ke);var Ie=h(ke);Ge(Ie,17,()=>e(o),Ne=>Ne.name,(Ne,Pe)=>{var qe=nu(),X=g(qe);m(qe),U(ie=>j(X,`${ie??""} (${e(Pe).points[e(Y)].days??""})`),[()=>u(e(Pe).points[e(Y)].value)]),p(Ne,qe)}),m(ye),U(()=>j(Ce,e(O).label)),p(L,ye)}),m(de),m(G),m(ce),m(Q),U(()=>j(te,`Average power (MW), UTC${t.zone??""}, ${t.window.dates[0]??""}â${t.window.lastDate??""}. Brackets: days 12 available out of ${t.window.dates.length??""}.`)),p(B,Q)};H(A,B=>{e(o).length&&B(J)})}p(y,v)};H(S,y=>{e(a)?y(C):e(n)?y(T,1):y(k,-1)})}m(d),U(()=>{F(d,"aria-busy",e(n)),j(b,`${t.groupLabel??""} · MW · UTC${t.zone??""} · ${t.window.dates.length??""} days. Smooth average power; negative generation, 13 charging and pumping pull the stack down.`)}),p(r,d),dt()}_t(["click"]);var Rn=M('<option class="svelte-1nf16eg"> </option>'),cu=M('<button class="control svelte-1nf16eg">Latest complete days</button>'),du=M('<label class="svelte-1nf16eg"><span class="sr-only svelte-1nf16eg">Fuel technology</span> <select class="svelte-1nf16eg"><!><!></select></label>'),uu=M('<!> <label class="svelte-1nf16eg"><span class="sr-only svelte-1nf16eg">View</span> <select class="svelte-1nf16eg"><option class="svelte-1nf16eg">Average day</option><option class="svelte-1nf16eg">Daily overlay</option></select></label> <label class="svelte-1nf16eg"><span class="sr-only svelte-1nf16eg">Window</span> <select class="svelte-1nf16eg"></select></label> <label class="svelte-1nf16eg"><span class="sr-only svelte-1nf16eg">Last day</span> <input type="date" class="svelte-1nf16eg"/></label> <!> <label class="svelte-1nf16eg"><span class="sr-only svelte-1nf16eg">Metric</span> <select class="svelte-1nf16eg"><option class="svelte-1nf16eg">Power</option><option class="svelte-1nf16eg">Spot price</option></select></label> <!>',1),mu=M('<div role="alert" class="py-12 text-center svelte-1nf16eg"><p class="svelte-1nf16eg"> </p> <button class="control mt-3 svelte-1nf16eg">Retry profile</button></div>'),gu=M('<p role="status" class="py-20 text-center svelte-1nf16eg">Loading time-of-day dataâ¦</p>'),vu=M('<p role="status" class="py-20 text-center svelte-1nf16eg">No time-of-day data available for this selection.</p>'),fu=M('<th scope="col" class="svelte-1nf16eg"> </th>'),hu=M('<td class="svelte-1nf16eg"> </td>'),pu=M('<tr class="svelte-1nf16eg"><th scope="row" class="svelte-1nf16eg"> </th><td class="svelte-1nf16eg"> </td><td class="svelte-1nf16eg"> </td><!></tr>'),bu=M(`<!> <details class="mt-5 border-t border-warm-grey pt-3 svelte-1nf16eg"><summary class="cursor-pointer text-sm svelte-1nf16eg">Profile data and coverage</summary> <p class="my-2 text-xs text-mid-grey svelte-1nf16eg">Days available can vary by half-hour. Brackets show native readings per day (normally 6); 14 CSV includes these counts. Missing values are shown as â.</p> <div class="overflow-x-auto svelte-1nf16eg"><table class="w-full whitespace-nowrap text-right font-space text-xs svelte-1nf16eg"><caption class="py-2 text-left svelte-1nf16eg"> </caption><thead class="svelte-1nf16eg"><tr class="svelte-1nf16eg"><th scope="col" class="svelte-1nf16eg">Time</th><th scope="col" class="svelte-1nf16eg">Average</th><th scope="col" class="svelte-1nf16eg">Days available</th><!></tr></thead><tbody class="svelte-1nf16eg"></tbody></table></div></details>`,1),yu=M('<section class="overflow-auto p-3 sm:p-5 svelte-1nf16eg" aria-label="Time-of-day analysis"><div class="mx-auto max-w-[1400px] rounded-lg border border-warm-grey bg-white p-4 sm:p-6 svelte-1nf16eg"><div class="flex flex-wrap items-end gap-4 svelte-1nf16eg"><div class="mr-auto svelte-1nf16eg"><h1 class="mb-0 text-xl font-bold leading-tight svelte-1nf16eg">Time of day</h1> <p class="mt-1 text-sm text-mid-grey svelte-1nf16eg"> </p></div> <button class="control svelte-1nf16eg">Download profile CSV</button></div> <p class="mt-4 text-xs leading-relaxed text-mid-grey svelte-1nf16eg"> </p> <!> <!></div></section>');function wu(r,t){ct(t,!0);const a=xe=>{var Ke=uu(),et=Re(Ke);Zi(et,{get group(){return e(o)},ongroupchange:I=>t.session.select("group",I)});var Ee=h(et,2),ue=h(g(Ee),2),Fe=g(ue);Fe.value=Fe.__value="average";var Ue=h(Fe);Ue.value=Ue.__value="daily",m(ue);var K;yr(ue),m(Ee);var oe=h(Ee,2),pe=h(g(oe),2);Ge(pe,20,()=>[7,14,28],I=>I,(I,le,V,Te)=>{var _=Rn(),x=g(_);m(_);var q={};U(()=>{j(x,`${le??""} days`),q!==(q=le)&&(_.value=(_.__value=le)??"")}),p(I,_)}),m(pe);var Ye;yr(pe),m(oe);var Xe=h(oe,2),Je=h(g(Xe),2);Pn(Je),m(Xe);var R=h(Xe,2);{var z=I=>{var le=cu();_e("click",le,()=>t.session.select("profileEnd","")),p(I,le)};H(R,I=>{e(n).profileEnd&&I(z)})}var me=h(R,2),$=h(g(me),2),we=g($);we.value=we.__value="power";var De=h(we);De.value=De.__value="price",m($);var E;yr($),m(me);
14var Z=h(me,2);{var ee=I=>{var le=du(),V=h(g(le),2),Te=g(V);{var _=ae=>{var Me=Rn(),Ae=g(Me);m(Me);var Ze={};U(()=>{j(Ae,`${e(f).labels[e(n).profileSeries]??""} (unavailable)`),Ze!==(Ze=e(n).profileSeries)&&(Me.value=(Me.__value=e(n).profileSeries)??"")}),p(ae,Me)},x=c(()=>e(n).profileSeries&&!e(P)?.seriesNames.includes(e(n).profileSeries));H(Te,ae=>{e(x)&&ae(_)})}var q=h(Te);Ge(q,16,()=>e(P)?.seriesNames??[],ae=>ae,(ae,Me)=>{var Ae=Rn(),Ze=g(Ae,!0);m(Ae);var be={};U(()=>{j(Ze,e(P)?.seriesLabels[Me]??Me),be!==(be=Me)&&(Ae.value=(Ae.__value=Me)??"")}),p(ae,Ae)}),m(V);var re;yr(V),m(le),U(()=>{V.disabled=e(D)||!e(P),re!==(re=e(w))&&(V.value=(V.__value=e(w))??"",wr(V,e(w)))}),_e("change",V,ae=>t.session.select("profileSeries",ae.currentTarget.value)),p(I,le)};H(Z,I=>{e(S)||I(ee)})}U(I=>{K!==(K=e(n).profileView)&&(ue.value=(ue.__value=e(n).profileView)??"",wr(ue,e(n).profileView)),Ye!==(Ye=e(n).profileDays)&&(pe.value=(pe.__value=e(n).profileDays)??"",wr(pe,e(n).profileDays)),F(Je,"min",Oi),F(Je,"max",e(d).maxDate),Qo(Je,e(d).lastDate),De.disabled=I,E!==(E=e(n).profileMetric)&&($.value=($.__value=e(n).profileMetric)??"",wr($,e(n).profileMetric))},[()=>!Fr(e(n).region)]),_e("change",ue,I=>t.session.select("profileView",I.currentTarget.value==="daily"?"daily":"average")),_e("change",pe,I=>t.session.select("profileDays",ma(I.currentTarget.value))),_e("change",Je,I=>{I.currentTarget.validity.valid&&t.session.select("profileEnd",I.currentTarget.value)}),_e("change",$,I=>t.session.select("profileMetric",I.currentTarget.value==="price"?"price":"power")),p(xe,Ke)};let n=c(()=>t.session.selection),i=c(()=>e(n).region),o=c(()=>e(n).group),l=c(()=>e(n).profileDays),s=c(()=>e(n).profileEnd),u=c(()=>t.session.timeZone),d=c(()=>
14Ml(t.session.anchorEnd,e(u),e(l),e(s))),f=c(()=>Et(e(o))),b=c(()=>e(n).profileView==="daily"),S=c(()=>e(n).profileMetric==="price"),C=c(()=>e(S)?"$/MWh":"MW");const T=ai(()=>({region:e(i),metric:"power",zone:e(u),group:e(f),window:e(d)})),k=ai(()=>({region:e(i),metric:"price",zone:e(u),group:e(f),window:e(d),enabled:e(S)}));let y=c(()=>e(S)?k:T),v=c(()=>e(y).error),D=c(()=>e(y).pending),P=c(()=>e(y).meta),w=c(()=>!e(S)&&e(n).profileSeries?e(n).profileSeries:e(P)?.seriesNames[0]??""),A=c(()=>e(P)?.seriesLabels[e(w)]??e(f).labels[e(w)]??(e(S)?"Spot price":"Generation")),J=c(()=>Cr(e(i))),B=c(()=>Fi(e(y).rows,e(w),e(d))),Q=c(()=>e(B).some(xe=>xe.average!==null)),ce=c(()=>Kd(e(B),e(d).dates,e(b))),G=c(()=>e(b)?[...e(d).dates,"average"]:["average"]),se=c(()=>Object.fromEntries(e(G).map(xe=>[xe,xe==="average"?"Average":xe]))),te=c(()=>Object.fromEntries(e(G).map(xe=>[xe,xe==="average"?"#222222":e(P)?.seriesColours[e(w)]??"#777777"])));const ne=xe=>xe===null?"â":xe.toLocaleString("en-AU",{maximumFractionDigits:2});function ve(){e(y).retry()}function Se(){e(D)||e(v)||!e(Q)||Xr(gn(Tl(e(B),e(d),{label:e(A),unit:e(C),region:e(J),timeZone:e(u)}),e(u)),vn({scope:e(i),dataset:`time-of-day-${e(n).profileMetric}`,range:e(d).lastDate,extension:"csv"}))}function de(){return a}var L={getControls:de},O=yu(),Y=g(O),ye=g(Y),ke=g(ye),Ce=h(g(ke),2),Ie=g(Ce);m(Ce),m(ke);var Ne=h(ke,2);m(ye);var Pe=h(ye,2),qe=g(Pe);m(Pe);var X=h(Pe,2);lu(X,{get source(){return T},get window(){return e(d)},get zone(){return e(u)},get groupLabel(){return e(f).label}});var ie=h(X,2);{var fe=xe=>{var Ke=mu(),et=g(Ke),Ee=g(et,!0);m(et);var ue=h(et,2);m(Ke),U(()=>j(Ee,e(v))),_e("click",ue,ve),p(xe,Ke)},Le=xe=>{var Ke=gu();p(xe,Ke)},ze=xe=>{var Ke=vu();p(xe,Ke)},gt=xe=>{var Ke=bu(),et=Re(Ke);Ji(et,{get rows(){return e(ce)},get names(){return e(G)},get labels(){return e(se)},get colours(){return e(te)},get title(){return e(A)},get zone(){return e(u)},get price(){return e(S)}});var Ee=h(et,2),ue=h(g(Ee),4),Fe=g(ue),Ue=g(Fe),K=g(Ue);m(Ue);var oe=h(Ue),pe=g(oe),Ye=h(g(pe),3);{var Xe=R=>{var z=ht(),me=Re(z);Ge(me,16,()=>e(d).dates,$=>$,($,we)=>{var De=fu(),E=g(De,!0);m(De),U(()=>j(E,we)),p($,De)}),p(R,z)};H(Ye,R=>{e(b)&&R(Xe)})}m(pe),m(oe);var Je=h(oe);Ge(Je,21,()=>e(B),R=>R.minute,(R,z)=>{var me=pu(),$=g(me),we=g($,!0);m($);var De=h($),E=g(De,!0);m(De);var Z=h(De),ee=g(Z);m(Z);var I=h(Z);{var le=V=>{var Te=ht(),_=Re(Te);Ge(_,18,()=>e(d).dates,x=>x,(x,q,re)=>{var ae=hu(),Me=g(ae);m(ae),U(Ae=>j(Me,`${Ae??""} (${e(z).samples[e(re)]??""})`),[()=>ne(e(z).values[e(re)])]),p(x,ae)}),p(V,Te)};H(I,V=>{e(b)&&V(le)})}m(me),U(V=>{j(we,e(z).label),j(E,V),j(ee,`${e(z).days??""}/${e(d).dates.length??""}`)},[()=>ne(e(z).average)]),p(R,me)}),m(Je),m(Fe),m(ue),m(Ee),U(()=>j(K,`${e(A)??""} (${e(C)??""}), UTC${e(u)??""}, ${e(d).dates[0]??""}â${e(d).lastDate??""}`)),p(xe,Ke)};H(ie,xe=>{e(v)?xe(fe):e(D)?xe(Le,1):e(Q)?xe(gt,-1):xe(ze,2)})}return m(Y),m(O),U(()=>{F(O,"aria-busy",e(D)),F(O,"data-png-context",`${e(J)} · ${e(d).dates[0]} to ${e(d).lastDate} · UTC${e(u)} · ${e(f).label}`),j(Ie,`${e(J)??""} · ${e(d).dates[0]??""} to ${e(d).lastDate??""} · UTC${e(u)??""}`),Ne.disabled=e(D)||!!e(v)||!e(Q),j(qe,`Complete days only, in network time (no daylight saving). Each half-hour averages available 15 5-minute readings; the average profile weights each available day equally. Gaps are not zero. ${e(S)?"Spot price is time-weighted, not volume-weighted.":"Absolute power; charging and pumping are negative. Timeline visibility and transforms do not apply."}`)}),_e("click",Ne,Se),p(r,O),dt(L)}_t(["change","click"]);var _u=new Set(["$$slots","$$events","$$legacy"]),xu=lr('<svg><rect x="3" y="4" width="3" height="16" rx="0.5" opacity="0.3"></rect><rect x="6.75" y="4" width="3" height="16" rx="0.5" opacity="0.5"></rect><rect x="10.5" y="4" width="3" height="16" rx="0.5" opacity="0.7"></rect><rect x="14.25" y="4" width="3" height="16" rx="0.5" opacity="0.85"></rect><rect x="18" y="4" width="3" height="16" rx="0.5"></rect></svg>');function ku(r,t){let a=on(t,_u);var n=xu();vi(n,()=>
15({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",class:"size-6","aria-hidden":"true",...a})),p(r,n)}function Cu(r,t){ct(t,!0);const a=Ua.map(n=>({value:n,label:n,children:la.filter(i=>i.group===n).map(i=>({value:i.id,label:i.label}))}));{let n=c(()=>t.selected.map(or));Ns(r,{label:"Charts",get selected(){return e(n)},get options(){return a},get defaults(){return sa},get defaultExpanded(){return Ua},clearLabel:"Reset",compact:!0,onapply:i=>t.onchange(Qs(i,t.selected))})}dt()}const Mu=864e5;function Qi(r,t){return $r(r-Qt,r,t,"1d")}function pn(r,t){return $r(r,r+Qt,t,"1d")}function Su(r,t,a){return pn(Date.UTC(r,t-1,1),a)}function Kn(r,t,{months:a=0,days:n=0}){const i=new Date(r.start);return pn(Date.UTC(i.getUTCFullYear(),i.getUTCMonth()+a,i.getUTCDate()+n),t)}function Tu(r,t,a){const n=new Date(r.start),i=n.getUTCMonth()===0&&n.getUTCDate()===1,o=n.getUTCFullYear()+(a<0?i?-1:0:1);return pn(Date.UTC(o,0,1),t)}function Ru(r,t,a){if(r.key==="Home")return Qi(a.end,a);if(r.key==="End")return pn(a.start,a);if(r.key!=="ArrowLeft"&&r.key!=="ArrowRight")return null;const n=r.key==="ArrowLeft"?-1:1;return r.metaKey||r.ctrlKey?Tu(t,a,n):Kn(t,a,{months:n*(r.shiftKey?6:1)})}function $i(r){const t=Ar({day:"numeric",month:"short",year:"numeric"});return`${t.format(r.start)} â ${t.format(r.end-Mu)}`}const Eu="â â one month · Shift six months · Cmd/Ctrl year boundary · Home latest · End earliest";var Du=M('<button type="button" class="rounded-lg border border-mid-warm-grey px-4 py-2 text-xs font-medium hover:bg-warm-grey">Latest</button>'),Pu=M('<div role="group" aria-label="Year window" class="flex shrink-0 items-center gap-2"><button type="button" aria-label="Previous year" aria-keyshortcuts="ArrowLeft Shift+ArrowLeft Meta+ArrowLeft Home End"><!></button> <span class="whitespace-nowrap font-mono text-xs tabular-nums text-dark-grey" data-testid="comparison-window" aria-live="polite"> </span> <button type="button" aria-label="Next year" aria-keyshortcuts="ArrowRight Shift+ArrowRight Meta+ArrowRight Home End"><!></button> <!></div>');function Lu(r,t){ct(t,!0);let a=c(()=>t.viewport.end>=t.bounds.end),n=c(()=>t.viewport.start<=t.bounds.start);function i(k){const y=Ru(k,t.viewport,t.bounds);y&&(k.preventDefault(),t.onmove(y))}const o="flex size-[34px] shrink-0 cursor-pointer items-center justify-center rounded-lg border border-mid-warm-grey bg-white text-mid-grey transition-colors hover:border-dark-grey hover:text-dark-grey disabled:cursor-not-allowed disabled:text-mid-warm-grey disabled:hover:border-mid-warm-grey";var l=Pu(),s=g(l);He(s,1,Gt(o));var u=g(s);Os(u,{class:"size-[18px]",strokeWidth:1.5,"aria-hidden":"true"}),m(s);var d=h(s,2),f=g(d,!0);m(d);var b=h(d,2);He(b,1,Gt(o));var S=g(b);Is(S,{class:"size-[18px]",strokeWidth:1.5,"aria-hidden":"true"}),m(b);var C=h(b,2);{var T=k=>{var y=Du();_e("click",y,()=>t.onmove(Qi(t.bounds.end,t.bounds))),p(k,y)};H(C,k=>{e(a)||k(T)})}m(l),U(k=>{F(l,"title",Eu),s.disabled=e(n),j(f,k),b.disabled=e(a)},[()=>$i(t.viewport)]),_e("keydown",s,i),_e("click",s,()=>t.onmove(Kn(t.viewport,t.bounds,{months:-12}))),_e("keydown",b,i),_e("click",b,()=>t.onmove(Kn(t.viewport,t.bounds,{months:12}))),p(r,l),dt()}_t(["keydown","click"]);function eo(r,t,a,n){if(!t.length)return null;const i=a??n??t[t.length-1].time,o=Math.max(0,t.findIndex(l=>l.time===i));if(r==="ArrowLeft"||r==="ArrowRight"){const l=r==="ArrowLeft"?-1:1;return{hover:t[Math.max(0,Math.min(t.length-1,o+l))].time}}return r==="Enter"||r===" "?{focus:n===i?null:i}:r==="Escape"?{hover:null,focus:null}:null}const to="#F1F0ED",Au="#CCCCCC",Yn="#FFFFFF",Nu=[-1e3,0,50,100,300,1e3,5e3,15e3],Ou=["-$1k","$0","$50","$100","$300","$1k","$5k","$15k"],Iu=["#613C9E","#28609A","#76ACCE","#F0BA9F","#DF8E73","#C5594C","#99292F","#621020"],Fu=[0,100,300,550,1e3],Wu=["#2E69A3",Yn,"#AC3837"];function En(r){return r&&In[r]||In.renewables}const qt=(r,t)=>da(r,t);function Vu(r,t,a){const n=zt(r);if(r==="intensity")return{kind:"ramp",domain:Fu,colours:Fs.intensity,labels:[qt(0,r),qt(1e3,r)]};if(r==="net_imports_share")return{kind:"diverging",domain:[-25,0,25],colours:Wu,labels:["Export","Import"]};if(n.kind==="price")return{kind:"swatch",domain:Nu,colours:Iu,labels:Ou};
15if(n.kind==="energy")return{kind:"ramp",domain:[0,a||1],colours:[Yn,En(n.fuel)],labels:[qt(0,r),qt(a,r)]};if(n.fuel==="gas"||n.fuel==="coal"){const o=n.fuel==="gas"?50:90;return{kind:"ramp",domain:[0,.1,o],colours:[In.renewables,Au,En(n.fuel)],labels:[qt(0,r),qt(o,r)]}}const i=En(n.fuel);return{kind:"ramp",domain:[0,50,100],colours:[Yn,i,xi(i).darken(1.5).hex()],labels:[qt(0,r),qt(100,r)]}}function Uu(r){let t=0;for(const a of r)Number.isFinite(a)&&Number(a)>t&&(t=Number(a));return t}const br=new Map,Hu=64;function zu(r,t,a=0){const n=`${r}|${t}|${a}`,i=br.get(n);if(i)return i;const o=Vu(r,t,a),l=xi.scale(o.colours).domain(o.domain),s=new Map,u={...o,unit:ca(r,t),colour:d=>{if(!Number.isFinite(d))return to;const f=Math.round(Number(d)*10)/10;let b=s.get(f);return b||(b=l(f).hex(),s.set(f,b)),b}};return br.size>=Hu&&br.delete(br.keys().next().value),br.set(n,u),u}function Zu(r){const t=r.domain[0],a=r.domain[r.domain.length-1]-t||1;return`linear-gradient(to right, ${r.colours.map((i,o)=>`${i} ${(r.domain[o]-t)/a*100}%`).join(", ")})`}function Bu(r){return[...(r.kind==="swatch"?r.colours.map((a,n)=>({colour:a,label:r.labels[n]})):[{colour:r.colours[0],label:r.labels[0]},{colour:r.colours[r.colours.length-1],label:r.labels[1]}]).map(a=>({...a,label:`${a.label} ${r.unit}`.trim()})),{colour:to,label:"No data"}]}function ju(r,t,a,n){return r.map(i=>({time:i.time,x:(i.time-a)*n,width:(Lr(i.time,t)-i.time)*n}))}function Gu(r,t,a){let n=0,i=r.length-1,o=-1;for(;n<=i;){const s=n+i>>1;r[s].time<=a?(o=s,n=s+1):i=s-1}if(o<0)return null;const l=r[o];return a<Lr(l.time,t)?l.time:null}var Ku=lr('<circle cx="10" r="4"></circle><text x="20" dominant-baseline="central" class="fill-dark-grey text-xs" fill="currentColor"> </text>',1),Yu=lr('<line data-png-exclude="" class="stroke-dark-grey/60" stroke="currentColor" stroke-dasharray="2 3"></line>'),Xu=lr('<rect data-png-exclude="" fill="none" stroke="#353535" stroke-width="1" pointer-events="none"></rect>'),qu=lr('<text y="16" fill="currentColor"> </text>'),Ju=lr('<g role="button" tabindex="-1" class="cursor-pointer [&:hover>rect]:fill-warm-grey"><title> </title><rect data-png-exclude="" y="0" fill="transparent"></rect><line y1="0" stroke="currentColor"></line><!></g>'),Qu=lr('<line y1="0" y2="6" class="stroke-mid-warm-grey" stroke="currentColor"></line><text y="16" class="fill-mid-grey text-xxs font-light" fill="currentColor"> </text>',1),$u=M('<div><span class="flex min-w-0 items-center gap-1.5"><span class="size-2 shrink-0 rounded-full"></span> <span> </span></span> <span> </span></div>'),em=M('<div class="pointer-events-none absolute z-20 flex min-w-[160px] flex-col rounded-md border border-warm-grey bg-white/70 px-3 py-2 text-xs whitespace-nowrap shadow-sm backdrop-blur-md backdrop-saturate-150" data-testid="chart-floating-tooltip"><div class="mb-1.5 flex items-baseline justify-between gap-3 border-b border-warm-grey/60 pb-1.5 font-light text-mid-grey"><span> </span> <span class="text-right font-mono"> </span></div> <div class="flex flex-col gap-1"></div></div>'),tm=M('<div class="flex items-center justify-end gap-0.5 px-2" data-png-exclude=""><!></div>'),rm=M('<div role="group" class="relative"><div data-chart-area="" class="relative"><canvas data-png-layer="" class="absolute" aria-hidden="true"></canvas> <svg data-png-layer="" class="relative block select-none" style="touch-action: pan-y;" role="img"><defs><clipPath><rect y="0"></rect></clipPath></defs><!><g><!><!></g><g></g><rect data-png-exclude="" fill="transparent" class="cursor-crosshair"></rect></svg> <!></div> <!> <button type="button" class="sr-only focus:not-sr-only focus:absolute focus:bottom-2 focus:left-2 focus:z-30 rounded border border-mid-warm-grey bg-white px-3 py-2 text-xs focus:outline focus:outline-dark-grey">Inspect values</button> <span class="sr-only">Use left and right arrows to inspect a period, Enter to pin it, and Escape to clear it.</span></div>');function nm(r,t){const a=ta();ct(t,!0);const n=8,i=2,o=24,l=3,s={wem:"WA",au:"All"},u=`${a}-plot`,d=new Rr("(min-width: 640px)");let f=c(()=>d.current?36:28),b=c(()=>d.current?96:64);const S=_=>{const x=Dt.find(q=>q.value===_);return!d.current&&s[_]||x?.shortLabel||_};let C=ge(0),T=c(()=>Math.max(0,e(C)-e(b))),k=c(()=>zt(t.metric)),y=c(()=>Pi(t.data,t.regions,t.metric,t.basis,t.interval)),v=c(()=>new Map(e(y).map(_=>[_.time,_]))),D=c(()=>Li(e(y),t.viewport)),P=c(()=>t.viewport.end-t.viewport.start),w=c(()=>e(P)>0?e(T)/e(P):0),A=c(()=>Math.max(0,t.regions.length*(e(f)+i)-i)),J=c(()=>n+e(A)+o),B=c(()=>t.interval==="1d");const Q=_=>e(b)+(_-t.viewport.start)*e(w),ce=_=>n+_*(e(f)+i);let G=c(()=>Ai(e(D),t.interval).map(_=>_.getTime())),se=c(()=>{const _=$t(t.viewport.start),x=e(B)?[_,...e(G).filter(q=>q>_)]:e(G);return x.map((q,re)=>{const ae=e(B)?x[re+1]??t.viewport.end:q,Me=new Date(q);return{time:q,x:Q(q),width:(ae-q)*e(w),label:Ni(q,t.interval,t.viewport),year:Me.getUTCFullYear(),month:Me.getUTCMonth()+1,january:Me.getUTCMonth()===0&&Me.getUTCDate()===1}})}),te=c(()=>t.hover??t.focus),ne=c(()=>e(te)==null?null:{x:Q(e(te)),width:(Lr(e(te),t.interval)-e(te))*e(w)}),ve=ge(null),Se=c(()=>e(ve)?t.regions[Math.floor((e(ve).y-n)/(e(f)+i))]??null:null),de=c(()=>e(te)==null?[]:t.regions.map(_=>{const x=Dt.find(q=>q.value===_);return{id:_,label:x?.shortLabel??_,colour:x?.colour??"#333333",value:da(e(v).get(e(te))?.[_],t.metric),hovered:_===e(Se)}})),L=ge(0),O=ge(0),Y=c(()=>
15{if(!e(ne))return"";const _=e(ve)?.x??e(ne).x+e(ne).width/2,x=e(ve)?.y??n;let q=_+12;q+e(L)>e(C)&&(q=Math.max(0,_-12-e(L)));let re=x+12;return re+e(O)>e(J)&&(re=Math.max(0,x-12-e(O))),`left: ${q}px; top: ${re}px;`}),ye=c(()=>JSON.stringify({hasData:e(D).length>0,title:e(k).shortLabel,unit:t.scale.unit,transform:"",legend:Bu(t.scale)}));function ke(_){const x=window.devicePixelRatio||1,q=Math.round(e(T)*x),re=Math.round(e(A)*x);_.width!==q&&(_.width=q),_.height!==re&&(_.height=re);const ae=_.getContext("2d");if(!ae||!e(T)||!e(A))return;ae.setTransform(x,0,0,x,0,0),ae.clearRect(0,0,e(T),e(A));const Me=e(y).filter(be=>be.time<t.viewport.end&&Lr(be.time,t.interval)>t.viewport.start),Ae=ju(Me,t.interval,t.viewport.start,e(w));let Ze="";t.regions.forEach((be,Be)=>{const rt=Be*(e(f)+i);Ae.forEach((Qe,$e)=>{const yt=t.scale.colour(Me[$e][be]);yt!==Ze&&(Ze=yt,ae.fillStyle=yt);const tt=Math.round(Qe.x),lt=Math.round(Qe.x+Qe.width);ae.fillRect(tt,rt,Math.max(1,lt-tt),e(f))})})}function Ce(_){ft(()=>{ke(_)})}const Ie=ea({viewport:()=>t.viewport,apply:(_,x)=>t.onviewport(_,x,!1),minDateMs:()=>t.bounds.start,minDurationMs:()=>e(B)?Qt:Pr,maxDurationMs:()=>e(B)?Qt:t.bounds.end-t.bounds.start,onGestureStart:()=>{N(ve,null),t.onhover(null)},onSettle:(_,x)=>t.onviewport(_,x,!0)});Sr(Ie.dispose);let Ne=0,Pe=null;function qe(){Pe=null;const _=Ne;Ne=0,_&&Ie.handlePan(_)}function X(_){Ne+=_,Pe??=requestAnimationFrame(qe)}Sr(()=>{Pe!==null&&cancelAnimationFrame(Pe)});let ie=null;function fe(_){const x=_.currentTarget.ownerSVGElement?.getBoundingClientRect();return{x:_.clientX-(x?.left??0),y:_.clientY-(x?.top??0)}}function Le(_){if(!e(w))return null;const x=Gu(e(y),t.interval,t.viewport.start+(_-e(b))/e(w));return x!=null&&x>=t.viewport.start&&x<t.viewport.end?x:null}function ze(_){if(_.pointerType!=="mouse"||_.button!==0)return;const x=fe(_);ie={startX:x.x,lastX:x.x,moved:!1},_.currentTarget.setPointerCapture(_.pointerId)}function gt(_){const x=fe(_);if(ie&&_.buttons&1){const q=x.x-ie.lastX;ie.lastX=x.x,!ie.moved&&Math.abs(x.x-ie.startX)>l&&(ie.moved=!0,Ie.handlePanStart()),ie.moved&&e(w)&&X(q/e(w));return}N(ve,x,!0),t.onhover(Le(x.x))}function xe(_){const x=ie;if(ie=null,x?.moved){Pe!==null&&(cancelAnimationFrame(Pe),qe()),Ie.handlePanEnd();return}if(_.button!==0)return;const q=Le(fe(_).x);q!=null&&t.onfocus(t.focus===q?null:q)}function Ke(){ie?.moved||(N(ve,null),t.onhover(null))}function et(_){const x=q=>{const{deltaX:re,deltaY:ae}=q;gs(re,ae)==="pan"&&(q.preventDefault(),e(ve)&&(N(ve,null),t.onhover(null)),X(vs(re,e(T),e(P))))};return _.addEventListener("wheel",x,{passive:!1}),()=>_.removeEventListener("wheel",x)}function Ee(_,x){const q=Su(_,x,t.bounds);t.onviewport(q.start,q.end,!0)}function ue(_){if(_.target!==_.currentTarget)return;const x=eo(_.key,e(D),t.hover,t.focus);x&&(_.key!=="Escape"&&_.preventDefault(),N(ve,null),"hover"in x&&t.onhover(x.hover??null),"focus"in x&&t.onfocus(x.focus??null))}var Fe=rm(),Ue=g(Fe),K=g(Ue);Pa(K,()=>Ce);var oe=h(K,2),pe=g(oe),Ye=g(pe),Xe=g(Ye);m(Ye),m(pe);var Je=h(pe);Ge(Je,18,()=>t.regions,_=>_,(_,x,q)=>{const re=c(()=>Dt.find(be=>be.value===x));var ae=Ku(),Me=Re(ae),Ae=h(Me),Ze=g(Ae,!0);m(Ae),U((be,Be,rt)=>{F(Me,"cy",be),F(Me,"fill",e(re)?.colour??"#333333"),F(Ae,"y",Be),j(Ze,rt)},[()=>ce(e(q))+e(f)/2,()=>ce(e(q))+e(f)/2,()=>S(x)]),p(_,ae)});var R=h(Je),z=g(R);{var me=_=>{var x=ht(),q=Re(x);Ge(q,17,()=>e(se),re=>re.time,(re,ae)=>{var Me=ht(),Ae=Re(Me);{var Ze=be=>{var Be=Yu();F(Be,"y1",n),U(()=>{F(Be,"x1",e(ae).x),F(Be,"x2",e(ae).x),F(Be,"y2",n+e(A))}),p(be,Be)};H(Ae,be=>{e(ae).january&&be(Ze)})}p(re,Me)}),p(_,x)};H(z,_=>{e(B)&&_(me)})}var $=h(z);{var we=_=>{var x=Xu();F(x,"y",n),U(q=>{F(x,"x",e(ne).x),F(x,"width",q),F(x,"height",e(A))},[()=>Math.max(1,e(ne).width)]),p(_,x)};H($,_=>{e(ne)&&_(we)})}m(R);var De=h(R);Ge(De,21,()=>e(se),_=>_.time,(_,x)=>{var q=ht(),re=Re(q);{var ae=Ae=>{var Ze=Ju(),be=g(Ze),Be=g(be);m(be);var rt=h(be);F(rt,"height",o);var Qe=h(rt),$e=h(Qe);{var yt=tt=>{var lt=qu(),Oe=g(lt,!0);m(lt),U(je=>{F(lt,"x",e(x).x+4),He(lt,0,`text-xxs font-light ${e(x).january?"fill-dark-grey":"fill-mid-grey"}`),j(Oe,je)},[()=>e(x).width>52?e(x).label:e(x).label.split(" ")[0]]),p(tt,lt)};H($e,tt=>{e(x).width>20&&tt(yt)})}m(Ze),U(tt=>{j(Be,`Show the year from ${e(x).label??""}`),F(rt,"x",e(x).x),F(rt,"width",tt),F(Qe,"x1",e(x).x),F(Qe,"x2",e(x).x),F(Qe,"y2",e(x).january?14:6),He(Qe,0,Gt(e(x).january?"stroke-dark-grey":"stroke-mid-warm-grey"))},[()=>Math.max(0,e(x).width)]),_e("click",Ze,()=>Ee(e(x).year,e(x).month)),_e("keydown",Ze,tt=>{(tt.key==="Enter"||tt.key===" ")&&Ee(e(x).year,e(x).month)}),p(Ae,Ze)},Me=Ae=>{var Ze=Qu(),be=Re(Ze),Be=h(be),rt=g(Be,!0);m(Be),U(()=>{F(be,"x1",e(x).x),F(be,"x2",e(x).x),F(Be,"x",e(x).x+4),j(rt,e(x).label)}),p(Ae,Ze)};H(re,Ae=>{e(B)?Ae(ae):Ae(Me,-1)})}p(_,q)}),m(De);var E=h(De);F(E,"y",n),Pa(E,()=>et),m(oe);
15var Z=h(oe,2);{var ee=_=>{var x=em(),q=g(x),re=g(q),ae=g(re,!0);m(re);var Me=h(re,2),Ae=g(Me,!0);m(Me),m(q);var Ze=h(q,2);Ge(Ze,21,()=>e(de),be=>be.id,(be,Be)=>{var rt=$u(),Qe=g(rt),$e=g(Qe);let yt;var tt=h($e,2),lt=g(tt,!0);m(tt),m(Qe);var Oe=h(Qe,2),je=g(Oe,!0);m(Oe),m(rt),U(()=>{He(rt,1,`flex items-center justify-between gap-3 rounded-sm ${e(Be).hovered?"bg-warm-grey/60":""}`),yt=Ct($e,"",yt,{"background-color":e(Be).colour}),He(tt,1,`truncate ${e(Be).hovered?"font-semibold text-black":"text-dark-grey"}`),j(lt,e(Be).label),He(Oe,1,`text-right font-mono tabular-nums ${e(Be).hovered?"font-semibold text-black":"font-medium text-dark-grey"}`),j(je,e(Be).value)}),p(be,rt)}),m(Ze),m(x),U(be=>{Ct(x,e(Y)),j(ae,be),j(Ae,t.scale.unit)},[()=>cn(e(te)??0,t.interval)]),xr(x,"clientWidth",be=>N(L,be)),xr(x,"clientHeight",be=>N(O,be)),p(_,x)};H(Z,_=>{e(ne)&&e(de).length&&_(ee)})}m(Ue);var I=h(Ue,2);{var le=_=>{var x=tm(),q=g(x);{let re=c(()=>e(P)<=Pr),ae=c(()=>t.viewport.start<=t.bounds.start&&t.viewport.end>=t.bounds.end);ms(q,{get onzoomin(){return Ie.zoomIn},get onzoomout(){return Ie.zoomOut},get isAtMinZoom(){return e(re)},get isAtMaxZoom(){return e(ae)}})}m(x),p(_,x)};H(I,_=>{e(B)||_(le)})}var V=h(I,2),Te=h(V,2);m(Fe),U(_=>{F(Fe,"aria-label",`${e(k).label} stripes`),F(Fe,"data-chart-image",e(ye)),Ct(K,`left: ${e(b)}px; top: ${n}px; width: ${e(T)}px; height: ${e(A)}px;`),F(oe,"width",e(C)),F(oe,"height",e(J)),F(oe,"aria-label",`${e(k).label} by region, one cell per period`),F(Ye,"id",u),F(Xe,"x",e(b)),F(Xe,"width",e(T)),F(Xe,"height",e(J)),F(R,"clip-path",`url(#${u})`),F(De,"transform",`translate(0 ${n+e(A)})`),F(De,"clip-path",`url(#${u})`),F(E,"x",e(b)),F(E,"width",e(T)),F(E,"height",e(A)),F(V,"aria-label",_),F(V,"aria-describedby",a),F(Te,"id",a)},[()=>`Inspect ${e(k).label.toLowerCase()} values`]),_e("pointerdown",E,ze),_e("pointermove",E,gt),_e("pointerup",E,xe),Mt("pointerleave",E,Ke),Mt("pointercancel",E,Ke),xr(Ue,"clientWidth",_=>N(C,_)),_e("keydown",V,ue),_e("click",V,()=>t.onhover(e(D).at(-1)?.time??null)),p(r,Fe),dt()}_t(["click","keydown","pointerdown","pointermove","pointerup"]);var am=M('<div role="group" class="relative"><!> <button type="button" class="sr-only focus:not-sr-only focus:absolute focus:bottom-2 focus:left-2 focus:z-30 rounded border border-mid-warm-grey bg-white px-3 py-2 text-xs focus:outline focus:outline-dark-grey">Inspect values</button> <span class="sr-only">Use left and right arrows to inspect a period, Enter to pin it, and Escape to clear it.</span></div>');function im(r,t){const a=ta();ct(t,!0);const n=Object.fromEntries(Dt.map(v=>[v.value,v.label])),i=Object.fromEntries(Dt.map(v=>[v.value,v.colour]));let o=Ve(t,"engaged",15,!1);const l=new na({key:Symbol("region-comparison"),title:kt(()=>t.metric),chartType:"line",timeZone:"UTC",hideDataOptions:!0,hideChartTypeOptions:!0});l.seriesLabels=n,l.seriesColours=i,l.chartTooltips.showTotal=!1,l.maximumFractionDigits=1,l.chartStyles.chartPadding={top:0,bottom:20,left:0,right:0},l.chartStyles.snapTicks=!0;let s=c(()=>zt(t.metric)),u=c(()=>Pi(t.data,t.regions,t.metric,t.basis,t.interval)),d=c(()=>Li(e(u),t.viewport));ft(()=>{l.chartOptions.baseUnit=e(s).kind==="energy"?"Wh":e(s).kind==="intensity"?"kgCOâe/MWh":e(s).kind==="price"?"$/MWh":"%",l.chartOptions.prefix=e(s).kind==="energy"?"M":"",l.chartOptions.setAutomaticDisplayPrefix(e(s).kind==="energy"?"G":""),l.chartOptions.allowedPrefixes=e(s).kind==="energy"?["M","G","T"]:[]}),ft(()=>{l.seriesData=e(u),l.seriesNames=t.regions,l.title=e(s).shortLabel,l.formatTooltipX=v=>cn(Number(v),t.interval)}),ft(()=>
15{l.chartStyles.chartHeightPx=t.height});let f=c(()=>t.interval==="1d");ft(()=>{l.formatTickX=D=>Ni(Number(D),t.interval,t.viewport),l.setXDomain(t.viewport.start,t.viewport.end);const v=Ai(e(d),t.interval);l.xTicks=v,l.xGridlineTicks=v}),ft(()=>{const v=l.renderXDomain;l.setYDomain(xl(l.seriesScaledData,t.regions,v?{start:v[0],end:v[1]}:t.viewport,l.chartOptions.selectedCurveType))}),ft(()=>{t.hover==null?l.clearHover():l.setHover(t.hover),t.focus==null?l.clearFocus():l.setFocus(t.focus)});const b=ea({viewport:()=>t.viewport,apply:(v,D)=>t.onviewport(v,D,!1),minDateMs:()=>t.bounds.start,minDurationMs:()=>e(f)?Qt:Pr,maxDurationMs:()=>e(f)?Qt:t.bounds.end-t.bounds.start,onGestureStart:()=>t.onhover(null),onSettle:(v,D)=>t.onviewport(v,D,!0)});Sr(b.dispose);function S(v){if(v.target!==v.currentTarget)return;const D=eo(v.key,e(d),t.hover,t.focus);D&&(v.key!=="Escape"&&v.preventDefault(),"hover"in D&&t.onhover(D.hover??null),"focus"in D&&t.onfocus(D.focus??null))}var C=am(),T=g(C);{let v=c(()=>e(f)||t.viewport.end-t.viewport.start<=Pr),D=c(()=>e(f)||t.viewport.start<=t.bounds.start&&t.viewport.end>=t.bounds.end);aa(T,{get chart(){return l},tooltipMode:"floating",enablePan:!0,panZoomMode:"tap-to-engage",zoomMode:"static",get onpanstart(){return b.handlePanStart},get onpan(){return b.handlePan},get onpanend(){return b.handlePanEnd},get onzoom(){return b.handleZoom},get onzoomin(){return b.zoomIn},get onzoomout(){return b.zoomOut},get isAtMinZoom(){return e(v)},get isAtMaxZoom(){return e(D)},onhover:P=>t.onhover(P),onhoverend:()=>t.onhover(null),onfocus:P=>t.onfocus(t.focus===P?null:P),get engaged(){return o()},set engaged(P){o(P)}})}var k=h(T,2),y=h(k,2);m(C),U(v=>{F(C,"aria-label",`${e(s).label} comparison chart`),F(k,"aria-label",v),F(k,"aria-describedby",a),F(y,"id",a)},[()=>`Inspect ${e(s).label.toLowerCase()} values`]),_e("keydown",k,S),_e("click",k,()=>t.onhover(e(d).at(-1)?.time??null)),p(r,C),dt()}_t(["keydown","click"]);function om(r,t){const a=new Map(t.values.map(i=>[i.time,i.value])),n=t.values.at(-1)?.value;return r.map(i=>{const o=new Date(i.time),l=a.get(Date.UTC(o.getUTCFullYear(),Math.floor(o.getUTCMonth()/3)*3,1));return{...i,market_value_real:Number.isFinite(i.market_value)&&n&&l?i.market_value*n/l:null}})}function sm(r,t,a,n){const i=ol(t),o=Di(i,"1d");let l=c(()=>r().interval),s=c(()=>e(l)==="1d");const u=()=>e(s);let d=c(()=>Za(n(),o).start),f=c(()=>Za(n(),o).end);function b(k,y,v){const D={region:()=>k,interval:()=>y,timeZone:()=>"+00:00",exactWindow:y==="1d"};return{energy:gr({...D,enabled:v,spec:()=>({cacheScope:"region-comparison",metric:"emissions_intensity",seriesKey:"components",processResponse:cl})}),market:wi({...D,basis:()=>"energy",enabled:v}),financial:gr({...D,enabled:v,spec:()=>({cacheScope:"region-comparison-financial",metric:"price_vw",seriesKey:"components",processResponse:el})}),flows:gr({...D,enabled:()=>v()&&!en.includes(k),spec:()=>({cacheScope:"region-comparison-flows",metric:"flows_energy",seriesKey:"components",processResponse:tl})})}}const S=Dt.filter(k=>k.value!=="au").map(k=>{const y=k.value;let v=c(()=>fl(r().regions,y));const D=b(y,"1M",()=>e(v)),P=b(y,"1d",()=>e(v)&&u()),w=Object.values(D),A=Object.values(P);return ft(()=>{e(v)&&kt(()=>{for(const J of w)J.setViewport(i.start,i.end-1),J.reconcileFetches()})}),ft(()=>{if(!e(v)||!u())return;const J=e(d),B=e(f);kt(()=>{for(const Q of A)Q.setViewport(J,B-1)})}),{id:y,enabled:()=>e(v),daily:P,providers:()=>u()?P:D,all:()=>u()?A:w}});let C=c(()=>hl(Object.fromEntries(S.map(k=>{const y=k.all();return[k.id,{pending:k.enabled()&&y.some(v=>v.isPending),error:y.find(v=>v.error)?.error??null}]})))),T=c(()=>{const k=u(),y=k?{start:e(d),end:e(f)}:i,v=(P,w)=>!P.enabled()||w.error||!k&&w.isPending?[]:w.getVisibleRows(y.start,y.end-1),D=pl(Object.fromEntries(S.map(P=>{const w=P.providers();return[P.id,{energy:v(P,w.energy),market:v(P,w.market),financial:v(P,w.financial),flows:v(P,w.flows)}]})));return Object.fromEntries(Object.entries(D).map(([P,w])=>[P,ul(om(w,a()),e(l),k?o.end:i.end)]))});return{bounds:i,get data(){return e(T)},get status(){return e(C)},get pending(){return r().regions.some(k=>e(C)[k].pending)},settle(){if(u()){for(const k of S)if(k.enabled())for(const y of Object.values(k.daily))y.reconcileFetches()}},retry(k){for(const y of S)if(y.id===k||k==="au"&&en.includes(y.id))for(const v of y.all())v.reconcileFetches()}}}const ro="+00:00";function lm(r,t,a,n=null){const i=t.charts.map(zt),o=t.regions.flatMap(l=>(r[l]??[]).filter(s=>s.time>=a.start&&s.time<a.end).map(s=>({period:cn(s.time,t.interval),region:Cr(l,Dt),...Object.fromEntries(i.map(u=>[u.id,Jt(s,u.id,t.basis)]))})));return{key:"regions",title:"Region comparison",columns:[{key:"period",header:"Period",type:"string"},{key:"region",header:"Region",type:"string"},...i.map(l=>({key:l.id,header:l.id==="share"?`Renewables / ${t.basis==="demand"?"gross demand":"source generation"} (%)`:`${l.label} (${ca(l.id,t.basis,!0).replace("COâ","CO2")}${l.id==="price_real"&&n?`; ${n} dollars`:""})`,type:"number"}))],rows:o,cpiReference:n}}const cm=r=>gn(r,ro);function ii(r,t,a){const n=r.interval==="1d"?10:7,i=o=>new Date(o).toISOString().slice(0,n);return vn({scope:"regions",dataset:r.interval,range:`${i(t.start)}-to-${i(t.end-1)}`,extension:a})}
15function dm(r,t,a){return[Xi([["View","Compare regions"],["Charts",a.charts.map(zt).map(n=>n.label).join(", ")],["CPI reference",r.cpiReference??"Unavailable"],["Source URL",t],["Periods","Complete local calendar periods; NEM and WEM aligned by calendar label"],["Percentage basis",a.basis==="demand"?"Gross demand":"Source generation"],["Regions",a.regions.map(n=>Cr(n,Dt)).join(", ")],["Method","Ratios of component sums; All Regions = NEM + WEM; missing values are blank"]]),Yi(r,ro)]}var um=M('<button type="button" class="rounded-lg border border-mid-warm-grey px-4 py-2 text-xs font-medium hover:bg-warm-grey"> </button>'),mm=M("<!> <!> <!> <div><!></div> <!>",1),gm=M('<p role="status" class="mb-4 rounded-lg bg-white p-4 text-sm">Select a region in the Regions panel to compare.</p>'),vm=M('<p role="status" class="mb-4 rounded-lg bg-white p-4 text-sm">No completed regional data available for this selection.</p>'),fm=M('<div role="alert" class="mb-3 flex items-center justify-between gap-3 rounded-lg border border-warm-grey bg-white p-4 text-xs"><span> </span> <button class="rounded border border-mid-warm-grey px-3 py-2"> </button></div>'),hm=M('<p role="status" class="mb-4 rounded-lg bg-white p-4 text-sm">No charts selected. Use Charts to show comparisons.</p>'),pm=M('<span class="block h-2 w-3"></span>'),bm=M('<span class="flex h-2 overflow-hidden rounded-sm"></span>'),ym=M('<span class="block h-2 w-24 rounded-sm"></span>'),wm=M('<div class="flex items-center gap-2 font-mono text-xxs text-mid-grey" role="img" data-testid="stripes-legend"><span> </span> <!> <span> </span> <span class="text-mid-warm-grey"> </span></div>'),_m=M('<span class="text-xs text-mid-grey"> </span>'),xm=M("<!> <!> <!> <!>",1),km=M("<div></div>"),Cm=M('<p class="px-2 pt-2 text-xs text-mid-grey" role="status">Inflation adjusted using <a target="_blank" rel="noreferrer" class="underline">ABS All Groups CPI</a> </p>'),Mm=M('<button class="ml-2 underline">Clear pinned period</button>'),Sm=M('<th scope="col"><div class="flex flex-col items-end"><span class="text-xs"> </span> <span class="font-mono text-xxs font-light text-mid-grey"> </span></div></th>'),Tm=M("<td> </td>"),Rm=M('<tr><th scope="row"><button type="button" class="flex w-full items-center gap-2.5 py-1.5 pl-4 pr-2 text-left"><span></span> <span class="min-w-0 truncate text-dark-grey"> <span class="text-mid-grey"> </span></span></button></th><!></tr>'),Em=M('<div class="border-b border-warm-grey px-4 py-3 text-xs text-mid-grey" role="status"> <!></div> <div class="[--region-w:240px]"><div class="overflow-x-auto overscroll-x-contain snap-x snap-mandatory scroll-pl-(--region-w) scroll-smooth motion-reduce:scroll-auto"><table class="w-full table-fixed border-separate border-spacing-0 select-none" aria-label="Region comparison values"><thead class="bg-light-warm-grey"><tr><th scope="col"><div class="ml-2 flex flex-col items-start"><span class="text-xs text-dark-grey">Region</span></div></th><!></tr></thead><tbody></tbody></table></div></div>',1),Dm=M("<!> <!>",1),Pm=M(`<section aria-label="Region comparison" class="flex min-h-0 flex-1 flex-col"><span class="sr-only" role="status"> </span> <div class="relative flex min-h-0 flex-1 overflow-hidden"><div><!> <!> <!> <!> <!> <p class="px-2 text-xs leading-relaxed text-mid-grey">Ratios use period totals. Renewable generation excludes storage discharge. Net imports are 16 imports minus exports, as a share of gross demand. Market values are weighted by generation. 17 Demand shares can exceed 100% in exporting regions. WA covers the WEM. Hover or use the 18 arrow keys to inspect a period; press Enter to pin it. <!> <!></p> <!></div> <!></div></section>`);function Lm(r,t){ct(t,!0);const a=E=>{var Z=mm(),ee=Re(Z);{let re=c(()=>[{value:"charts",icon:Ws,size:"size-4",ariaLabel:"Line charts",title:"Line charts"},{value:"stripes",icon:ku,size:"size-4",ariaLabel:"Stripes",title:"Stripes"}]);_i(ee,{compact:!0,rounded:"rounded-lg",darkSelected:!0,trackClass:"border-mid-warm-grey bg-white","aria-label":"Comparison display",get selected(){return e(n).display},get buttons(){return e(re)},onchange:({value:ae})=>te({display:ae==="stripes"?"stripes":"charts"})})}var I=h(ee,2);{var le=re=>{Lu(re,{get viewport(){return e(y)},get bounds(){return e(C)},onmove:ae=>te(ae)})},V=re=>{var ae=um(),Me=g(ae,!0);m(ae),U(Ae=>j(Me,Ae),[()=>
18ll(e(d))]),_e("click",ae,()=>te({start:null,end:null})),p(re,ae)};H(I,re=>{e(S)?re(le):re(V,-1)})}var Te=h(I,2);Kr(Te,{get selected(){return e(d)},get options(){return Fn},listLabel:"Comparison interval",defaultValue:"12mr",compact:!0,onchange:re=>te({interval:re})});var _=h(Te,2),x=g(_);Cu(x,{get selected(){return e(n).charts},onchange:re=>te({charts:re})}),m(_);var q=h(_,2);Kr(q,{get selected(){return e(u)},get options(){return va},listLabel:"Percentage basis",defaultValue:"demand",compact:!0,onchange:re=>te({basis:re==="generation"?"generation":"demand"})}),p(E,Z)};let n=c(()=>ln(t.session.selection.regionComparison)),i=c(()=>e(n).charts.join(",")),o=c(()=>e(n).regions.join(",")),l=c(()=>e(i)?e(i).split(",").map(zt):[]),s=c(()=>e(o)?e(o).split(","):[]),u=c(()=>e(n).basis),d=c(()=>e(n).interval);const f=sm(()=>e(n),kt(()=>t.session.clockMs),()=>t.cpi,()=>e(y));let b=c(()=>e(n).display==="stripes"),S=c(()=>e(d)==="1d"),C=c(()=>Di(f.bounds,e(d))),T=c(()=>{if(e(S))return e(C);const E=e(s).flatMap(Z=>(f.data[Z]??[]).filter(ee=>e(l).some(I=>Number.isFinite(Jt(ee,I.id,e(u))))).map(ee=>ee.time));return{start:E.length?Math.min(...E):e(C).start,end:e(C).end}}),k=c(()=>sl(e(d),e(T))),y=c(()=>$r(e(n).start??e(k).start,e(n).end??e(k).end,e(T),e(d)));const v=new Rr("(prefers-reduced-motion: reduce)");function D(E){return E.kind!=="energy"?0:Uu(e(s).flatMap(Z=>(f.data[Z]??[]).filter(ee=>ee.time>=e(y).start&&ee.time<e(y).end).map(ee=>Jt(ee,E.id,e(u)))))}let P=ge(null),w=ge(null),A=c(()=>e(P)??e(w)??_l(f.data,e(s),e(u),e(y),e(l).map(E=>E.id))),J=ge(0),B=ge(!1),Q=c(()=>ba(e(J))),ce=ge(0);const G=new Rr("(min-width: 1024px)");let se=c(()=>e(n).table??G.current);function te(E,Z="push"){N(P,N(w,null),!0),t.session.select("regionComparison",{...e(n),...E},Z)}const ne=360;let ve=c(()=>ki({containerWidth:e(ce),minPx:ne,reservedPx:ne,maxPct:65,wide:G.current,narrowMaxPct:94}));const Se=Jr({initial:38,min:()=>e(ve).min,max:()=>e(ve).max,storageKey:"tracker-comparison-panel-width",scale:()=>e(ce)?100/e(ce):0,inverted:!0,step:2,setOpen:E=>te({table:E})});let de=c(()=>G.current?Se.size:94);function L(E,Z,ee){te($r(E,Z,e(T),e(d)),ee?"replace":null),ee&&f.settle()}function O(E,Z=!1){te({regions:Z?[E]:e(s).includes(E)?e(s).filter(ee=>ee!==E):[...e(s),E]})}let Y=c(()=>[Fn.find(E=>E.value===e(d))?.label,e(S)?$i(e(y)):null,`% of ${e(u)==="demand"?"gross demand":"generation"}`].filter(Boolean).join(" · ")),ye=c(()=>e(l).length>0&&!f.pending&&e(s).some(E=>f.data[E]?.some(Z=>e(l).some(ee=>Number.isFinite(Jt(Z,ee.id,e(u)))))));function ke(){return e(ye)?lm(f.data,e(n),e(y),t.cpi.reference):null}function Ce(){return e(n)}function Ie(){return e(y)}function Ne(){return f.pending}function Pe(){return a}var qe={exportDataset:ke,getSelection:Ce,getViewport:Ie,isLoading:Ne,getControls:Pe},X=Pm();Mt("keydown",ra,E=>{E.key==="Escape"&&!G.current&&e(se)&&Se.close()});var ie=g(X),fe=g(ie,!0);m(ie);var Le=h(ie,2),ze=g(Le),gt=g(ze);{var xe=E=>{var Z=gm();p(E,Z)};H(gt,E=>{e(s).length||E(xe)})}var Ke=h(gt,2);{var et=E=>{var Z=vm();p(E,Z)},Ee=c(()=>e(s).length&&!f.pending&&!e(s).some(E=>f.data[E]?.length||f.status[E].error));H(Ke,E=>{e(Ee)&&E(et)})}var ue=h(Ke,2);Ge(ue,16,()=>e(s).filter(E=>f.status[E].error),E=>E,(E,Z)=>{var ee=fm(),I=g(ee),le=g(I);m(I);var V=h(I,2),Te=g(V);m(V),m(ee),U((_,x)=>{j(le,`${_??""}: ${f.status[Z].error??""}`),j(Te,`Retry ${x??""}`)},[()=>Dt.find(_=>_.value===Z)?.label,()=>Dt.find(_=>_.value===Z)?.label]),_e("click",V,()=>f.retry(Z)),p(E,ee)});var Fe=h(ue,2);{var Ue=E=>{var Z=hm();p(E,Z)};H(Fe,E=>{e(l).length||E(Ue)})}var K=h(Fe,2);gi(K,()=>e(n).display,E=>{var Z=km();Ge(Z,21,()=>e(l),ee=>or(ee.id),(ee,I)=>{const le=c(()=>!f.pending&&e(s).some(Te=>f.data[Te]?.some(_=>Number.isFinite(Jt(_,e(I).id,e(u)))))),V=c(()=>e(b)?zu(e(I).id,e(u),D(e(I))):null);{const Te=Me=>{var Ae=xm(),Ze=Re(Ae);{var be=Oe=>{var je=wm(),ut=g(je),xt=g(ut,!0);m(ut);var Pt=h(ut,2);{var st=Lt=>{var St=bm();Ge(St,22,()=>e(V).colours,Ft=>Ft,(Ft,tr,Tt)=>{var At=pm();let Yt;U(()=>{F(At,"title",e(V).labels[e(Tt)]),Yt=Ct(At,"",Yt,{"background-color":tr})}),p(Ft,At)}),m(St),p(Lt,St)},It=Lt=>{var St=ym();let Ft;U(tr=>Ft=Ct(St,"",Ft,tr),[()=>({background:Zu(e(V))})]),p(Lt,St)};H(Pt,Lt=>{e(V).kind==="swatch"?Lt(st):Lt(It,-1)})}var vt=h(Pt,2),mt=g(vt,!0);m(vt);var er=h(vt,2),cr=g(er,!0);m(er),m(je),U(()=>{F(je,"aria-label",`Colour scale from ${e(V).labels[0]} to ${e(V).labels[e(V).labels.length-1]} ${e(V).unit}; grey means no data`),j(xt,e(V).labels[0]),j(mt,e(V).labels[e(V).labels.length-1]),j(cr,e(V).unit)}),p(Oe,je)};H(Ze,Oe=>{e(V)&&Oe(be)})}var Be=h(Ze,2);{var rt=Oe=>{{let je=c(()=>[{label:"Proportion",value:or(e(I).id)},{label:"Generation",value:e(I).fuel==="renewables"?"generation":`${e(I).fuel}_generation`}]);An(Oe,{get buttons(){return e(je)},get selected(){return e(I).id},onChange:ut=>te({charts:e(n).charts.map(xt=>xt===e(I).id?ut:xt)})})}};H(Be,Oe=>{e(I).fuel&&(e(I).kind==="energy"||e(I).kind==="share")&&Oe(rt)})}var Qe=h(Be,2);{var $e=Oe=>{{let je=c(()=>e(I).id==="price_real");As(Oe,{label:"Inflation adjusted",get checked(){return e(je)},onclick:()=>te({charts:e(n).charts.map(ut=>ut===e(I).id?e(I).id==="price_real"?"price":"price_real":ut)})})}},yt=c(()=>or(e(I).id)==="price_real");H(Qe,Oe=>{e(yt)&&Oe($e)})}var tt=h(Qe,2);{var lt=Oe=>{var je=_m(),ut=g(je);m(je),U(()=>j(ut,`${t.cpi.reference??""} dollars`)),p(Oe,je)};H(tt,Oe=>{e(I).id==="price_real"&&Oe(lt)})}p(Me,Ae)},_=(Me,Ae=bt)=>{var Ze=ht(),be=Re(Ze);{var Be=Qe=>{nm(Qe,{get data(){return f.data},get regions(){return e(s)},get metric(){return e(I).id},get basis(){return e(u)},get interval(){return e(d)},get viewport(){return e(y)},get bounds(){return e(T)},get scale(){return e(V)},get hover(){return e(P)}
18,get focus(){return e(w)},onhover:$e=>{N(P,$e,!0)},onfocus:$e=>{N(w,$e,!0)},onviewport:L})},rt=Qe=>{im(Qe,{get data(){return f.data},get regions(){return e(s)},get metric(){return e(I).id},get basis(){return e(u)},get interval(){return e(d)},get viewport(){return e(y)},get bounds(){return e(T)},get height(){return Ae()},get hover(){return e(P)},get focus(){return e(w)},onhover:$e=>{N(P,$e,!0)},onfocus:$e=>{N(w,$e,!0)},onviewport:L,get engaged(){return e(B)},set engaged($e){N(B,$e,!0)}})};H(be,Qe=>{e(V)?Qe(Be):Qe(rt,-1)})}p(Me,Ze)};let x=c(()=>e(V)?"":`tracker-comparison-${or(e(I).id)}-height`),q=c(()=>f.pending&&!e(s).some(Me=>f.data[Me]?.length)),re=c(()=>e(V)?!1:e(B)),ae=c(()=>({id:`regions-${e(I).id}`,label:e(I).label,ready:e(le),caption:e(I).id==="price_real"?`${e(Y)} · ${t.cpi.reference} dollars · ABS CPI`:e(Y)}));Hr(ee,{get title(){return e(I).label},defaultHeightPx:320,get heightStorageKey(){return e(x)},get loading(){return e(q)},get engaged(){return e(re)},get png(){return e(ae)},actions:Te,children:_,$$slots:{actions:!0,default:!0}})}}),m(Z),Dn(1,Z,()=>ts,()=>({duration:v.current?0:160})),p(E,Z)});var oe=h(K,2),pe=h(g(oe));{var Ye=E=>{var Z=jt(`Stripes use fixed colour scales so a shade means the same in every region and year; 19 generation scales to the visible maximum and grey marks periods without data.`);p(E,Z)};H(pe,E=>{e(b)&&E(Ye)})}var Xe=h(pe,2);{var Je=E=>{var Z=jt(`The daily view shows one year at a time: drag or scroll the stripes, click a month, or use 20 the year controls to move through history.`);p(E,Z)};H(Xe,E=>{e(S)&&E(Je)})}m(oe);var R=h(oe,2);{var z=E=>{var Z=Cm(),ee=h(g(Z)),I=h(ee);m(Z),U(()=>{F(ee,"href",t.cpi.source),j(I,`, in ${t.cpi.reference??""} dollars. Each month uses its quarterâs CPI; later periods remain blank 21 until CPI is published.`)}),p(E,Z)},me=c(()=>e(n).charts.includes("price_real"));H(R,E=>{e(me)&&E(z)})}m(ze),hi(ze,(E,Z)=>pi?.(E,Z),()=>({event:"pointerdown",options:!0}));var $=h(ze,2);{var we=E=>{var Z=Dm(),ee=Re(Z);{var I=V=>{{let Te=c(()=>Math.round(e(de)));qr(V,{axis:"x",get onstart(){return Se.start},get onkeydown(){return Se.keydown},tabindex:0,role:"separator","aria-orientation":"vertical","aria-label":"Resize regions panel",get"aria-valuemin"(){return e(ve).min},get"aria-valuemax"(){return e(ve).max},get"aria-valuenow"(){return e(Te)},get active(){return Se.dragging},alwaysShowGrip:!0,class:"w-4"})}};H(ee,V=>{G.current&&V(I)})}var le=h(ee,2);{const V=_=>{ha(_,{id:"tracker-regions-panel",side:"right",title:"Regions",label:"Hide regions table",controls:"tracker-regions-panel",get onclose(){return Se.close},get closeButton(){return Se.closer},set closeButton(x){Se.closer=x}})};let Te=c(()=>`z-20 flex shrink-0 border-l border-warm-grey bg-white ${G.current?"relative":"absolute inset-y-0 right-0 shadow-xl"}`);Nn(le,{open:!0,direction:"left",get defaultSize(){return e(de)},get containerSize(){return e(ce)},showDragHandle:!1,get externalResizing(){return Se.dragging},get onclose(){return Se.close},get class(){return e(Te)},header:V,children:(_,x)=>{var q=Em(),re=Re(q),ae=g(re),Me=h(ae);{var Ae=Oe=>{var je=Mm();_e("click",je,()=>{N(w,N(P,null),!0)}),p(Oe,je)};H(Me,Oe=>{e(w)!=null&&Oe(Ae)})}m(re);var Ze=h(re,2),be=g(Ze),Be=g(be);let rt;var Qe=g(Be),$e=g(Qe),yt=g($e),tt=h(yt);Ge(tt,17,()=>e(l).map(Oe=>({label:Oe.shortLabel,unit:ca(Oe.id,e(u))})),On,(Oe,je,ut)=>{var xt=Sm(),Pt=g(xt),st=g(Pt),It=g(st,!0);m(st);var vt=h(st,2),mt=g(vt,!0);m(vt),m(Pt),m(xt),U(()=>{He(xt,1,`w-[100px] snap-start text-right ${ut===e(l).length-1?"pr-3 pl-2":"px-2"} ${fr}`),j(It,e(je).label),j(mt,e(je).unit)}),p(Oe,xt)}),m($e),m(Qe);var lt=h(Qe);Ge(lt,21,()=>Dt,Oe=>Oe.value,(Oe,je)=>{const ut=c(()=>e(s).includes(e(je).value)),xt=c(()=>pa(e(je).label)),Pt=c(()=>f.data[e(je).value]?.find(Tt=>Tt.time===e(A)));var st=Rm(),It=g(st),vt=g(It),mt=g(vt);let er;var cr=h(mt,2),Lt=g(cr),St=h(Lt),Ft=g(St,!0);m(St),m(cr),m(vt),m(It);var tr=h(It);Ge(tr,17,()=>e(l).map(Tt=>{const At=Jt(e(Pt),Tt.id,e(u));return f.status[e(je).value]?.pending&&!e(Pt)?"â¦":da(At,Tt.id)}),On,(Tt,At,Yt)=>{var dr=Tm(),bn=g(dr,!0);m(dr),U(rr=>{He(dr,1,rr),j(bn,e(At))},[()=>Gt(ya(e(At),Yt===e(l).length-1))]),p(Tt,dr)}),m(st),U(()=>{He(st,1,`${zi} ${e(ut)?"":"opacity-50"}`),He(It,1,`${e(Q)??""} bg-white text-left font-normal group-hover:bg-light-warm-grey`),F(vt,"aria-pressed",e(ut)),F(vt,"aria-label",`Compare ${e(je).label}`),F(vt,"title",e(je).label),He(mt,1,Gt(e(ut)?mn:gc)),er=Ct(mt,"",er,{"background-color":e(ut)?e(je).colour:void 0,"border-color":e(ut)?e(je).colour:void 0}),j(Lt,`${e(xt).main??""} `),j(Ft,e(xt).sub)}),_e("click",vt,Tt=>O(e(je).value,Tt.metaKey||Tt.ctrlKey)),p(Oe,st)}),m(lt),m(Be),m(be),m(Ze),U(Oe=>{j(ae,`${Oe??""} `),rt=Ct(Be,"",rt,{"min-width":`${240+e(l).length*100}px`}),He(yt,1,`${e(Q)??""} w-(--region-w) bg-light-warm-grey px-2 text-left text-sm ${fr}`)},[()=>e(A)==null?"No common completed period":cn(e(A),e(d))]),Mt("scroll",be,Oe=>N(J,Oe.currentTarget.scrollLeft,!0)),p(_,q)},$$slots:{header:!0,default:!0}})}p(E,Z)},De=E=>{Zn(E,{side:"right",label:"Show regions table",controls:"tracker-regions-panel",get onopen(){return Se.open},get opener(){return Se.opener},set opener(Z){Se.opener=Z}})};H($,E=>{e(se)?E(we):E(De,-1)})}return m(Le),m(X),U(()=>{F(X,"data-png-context",`Compare regions · ${e(Y)}`),j(fe,f.pending?"Loading regional dataâ¦":`Complete periods · ${e(S)?"daily":"monthly"} source data`),He(ze,1,`min-w-0 flex-1 overflow-y-auto py-3 pl-3 sm:py-5 sm:pl-5 ${e(se)&&G.current?"":"pr-3 sm:pr-5"}`)}),Mt("clickoutside",ze,()=>N(B,!1)),xr(Le,"clientWidth",E=>N(ce,E)),p(r,X),dt(qe)}_t(["click"]);const Am=`<svg width="236" height="28" viewBox="0 0 236 28" fill="none" 22 xmlns="http://www.w3.org/2000/svg"> 23 <path d="M55.5015 21.4094V7.10859H59.0767V8.98269H59.5957C59.8263 8.48293 60.2588 8.012 60.8931 7.5699C61.5274 7.10859 62.4885 6.87793 63.7763 6.87793C64.8912 6.87793 65.8619 7.13742 66.6884 7.6564C67.5341 8.15616 68.1877 8.85775 68.649 9.76116C69.1103 10.6454 69.341 11.6833 69.341 12.8751V21.4094H65.7081V13.1634C65.7081 12.087 65.439 11.2797 64.9008 10.7415C64.3818 10.2033 63.6322 9.93415 62.6519 9.93415C61.537 9.93415 60.6721 10.309 60.057 11.0586C59.4419 11.789 59.1343 12.8174 59.1343 14.1437V21.4094H55.5015Z" fill="#353535"/> 24 <path d="M45.3795 21.8142C43.9571 21.8142 42.6981 21.5163 41.6024 20.9204C40.526 20.3053 39.6803 19.4499 39.0652 18.3543C38.4693 17.2395 38.1714 15.9324 38.1714 14.4331V14.0871C38.1714 12.5878 38.4693 11.2904 39.0652 10.1948C39.6611 9.07992 40.4972 8.22456 41.5736 7.62869C42.65 7.0136 43.8994 6.70605 45.3218 6.70605C46.725 6.70605 47.9455 7.02321 48.9835 7.65752C50.0215 8.27261 50.8288 9.13758 51.4054 10.2524C51.9821 11.3481 52.2704 12.6263 52.2704 14.0871V15.3269H41.8619C41.9004 16.3072 42.2656 17.1049 42.9575 17.72C43.6495 18.3351 44.4953 18.6426 45.4948 18.6426C46.5135 18.6426 47.2632 18.4216 47.7437 17.9795C48.2242 17.5374 48.5895 17.0472 48.8393 16.509L51.8091 18.066C51.54 18.5657 51.1459 19.1136 50.6269 19.7094C50.1272 20.2861 49.4544 20.7858 48.6087 21.2087C47.7629 21.6124 46.6865 21.8142 45.3795 21.8142ZM41.8908 12.6167H48.5798C48.503 11.7902 48.1666 11.127 47.5707 10.6272C46.9941 10.1275 46.2348 9.87761 45.293 9.87761C44.3127 9.87761 43.5342 10.1275 42.9575 10.6272C42.3809 11.127 42.0253 11.7902 41.8908 12.6167Z" fill="#353535"/> 25 <path d="M20.4761 27.177V7.10971H24.0513V8.83965H24.5703C24.897 8.28222 25.4064 7.79207 26.0984 7.3692C26.7903 6.9271 27.7803 6.70605 29.0681 6.70605C30.2214 6.70605 31.2882 6.99438 32.2685 7.57102C33.2488 8.12845 34.0369 8.95498 34.6327 10.0506C35.2286 11.1462 35.5265 12.4725 35.5265 14.0295V14.4908C35.5265 16.0477 35.2286 17.374 34.6327 18.4696C34.0369 19.5653 33.2488 20.4014 32.2685 20.978C31.2882 21.5355 30.2214 21.8142 29.0681 21.8142C28.2031 21.8142 27.4727 21.7085 26.8768 21.497C26.3002 21.3048 25.8293 21.0549 25.4641 20.7474C25.1181 20.4206 24.8394 20.0939 24.6279 19.7671H24.1089V27.177H20.4761ZM27.9725 18.6426C29.1065 18.6426 30.0388 18.287 30.7692 17.5758C31.5188 16.8454 31.8937 15.7882 31.8937 14.4043V14.116C31.8937 12.732 31.5188 11.6844 30.7692 10.9732C30.0196 10.2428 29.0873 9.87761 27.9725 9.87761C26.8576 9.87761 25.9254 10.2428 25.1757 10.9732C24.4261 11.6844 24.0513 12.732 24.0513 14.116V14.4043C24.0513 15.7882 24.4261 16.8454 25.1757 17.5758C25.9254 18.287 26.8576 18.6426 27.9725 18.6426Z" fill="#353535"/> 26 <path d="M8.71875 21.8132C6.1815 21.8132 4.16324 21.1212 2.66396 19.7372C1.16468 18.3341 0.415039 16.335 0.415039 13.7401V8.89629C0.415039 6.30138 1.16468 4.31195 2.66396 2.928C4.16324 1.52483 6.1815 0.823242 8.71875 0.823242C11.256 0.823242 13.2743 1.52483 14.7735 2.928C16.2728 4.31195 17.0225 6.30138 17.0225 8.89629V13.7401C17.0225 16.335 16.2728 18.3341 14.7735 19.7372C13.2743 21.1212 11.256 21.8132 8.71875 21.8132ZM8.71875 18.411C10.1411 18.411 11.2464 17.9977 12.0345 17.1712C12.8225 16.3446 13.2166 15.2394 13.2166 13.8554V8.78096C13.2166 7.39701 12.8225 6.29177 12.0345 5.46524C11.2464 4.63872 10.1411 4.22546 8.71875 4.22546C7.31557 4.22546 6.21033 4.63872 5.40303 5.46524C4.61495 6.29177 4.2209 7.39701 4.2209 8.78096V13.8554C4.2209 15.2394 4.61495 16.3446 5.40303 17.1712C6.21033 17.9977 7.31557 18.411 8.71875 18.411Z" fill="#353535"/> 27 <path fill-rule="evenodd" clip-rule="evenodd" d="M79.6652 8.96582L84.7408 14.0414L88.5681 10.2142L91.0647 12.7108L84.7408 19.0348L79.6652 13.9592L75.838 17.7864L73.3413 15.2897L79.6652 8.96582Z" fill="#A29D66" stroke="black" stroke-width="0.2"/> 28 <path d="M223.357 27.1767V24.0051H231.142C231.68 24.0051 231.949 23.7168 231.949 23.1401V19.5361H231.43C231.277 19.8629 23
281.036 20.1896 230.71 20.5164C230.383 20.8432 229.941 21.1123 229.383 21.3237C228.826 21.5351 228.115 21.6409 227.25 21.6409C226.135 21.6409 225.155 21.391 224.309 20.8912C223.482 20.3722 222.838 19.661 222.377 18.7576C221.916 17.8542 221.685 16.8163 221.685 15.6437V7.10938H225.318V15.3554C225.318 16.4318 225.577 17.2391 226.096 17.7773C226.635 18.3155 227.394 18.5846 228.374 18.5846C229.489 18.5846 230.354 18.2194 230.969 17.489C231.584 16.7394 231.892 15.7014 231.892 14.3751V7.10938H235.525V23.9474C235.525 24.9277 235.236 25.7062 234.66 26.2829C234.083 26.8787 233.314 27.1767 232.353 27.1767H223.357Z" fill="#353535"/> 29 <path d="M214.129 21.409C213.187 21.409 212.418 21.1206 211.823 20.544C211.246 19.9481 210.958 19.16 210.958 18.1798V10.1067H207.382V7.10814H210.958V2.66797H214.59V7.10814H218.512V10.1067H214.59V17.5454C214.59 18.1221 214.86 18.4104 215.398 18.4104H218.166V21.409H214.129Z" fill="#353535"/> 30 <path d="M200.992 21.4095V7.10869H204.625V21.4095H200.992ZM202.808 5.43641C202.155 5.43641 201.597 5.22497 201.136 4.8021C200.694 4.37923 200.473 3.8218 200.473 3.12983C200.473 2.43785 200.694 1.88043 201.136 1.45755C201.597 1.03468 202.155 0.823242 202.808 0.823242C203.481 0.823242 204.038 1.03468 204.48 1.45755C204.922 1.88043 205.143 2.43785 205.143 3.12983C205.143 3.8218 204.922 4.37923 204.48 4.8021C204.038 5.22497 203.481 5.43641 202.808 5.43641Z" fill="#353535"/> 31 <path d="M190.818 21.8142C189.434 21.8142 188.175 21.5259 187.041 20.9492C185.926 20.3726 185.042 19.5364 184.388 18.4408C183.734 17.3452 183.408 16.0189 183.408 14.4619V14.0583C183.408 12.5013 183.734 11.1751 184.388 10.0794C185.042 8.98381 185.926 8.14767 187.041 7.57102C188.175 6.99438 189.434 6.70605 190.818 6.70605C192.182 6.70605 193.355 6.94632 194.335 7.42686C195.315 7.9074 196.104 8.57054 196.699 9.41629C197.314 10.2428 197.718 11.1847 197.91 12.2419L194.393 12.9915C194.316 12.4149 194.143 11.8959 193.874 11.4346C193.605 10.9732 193.22 10.608 192.721 10.3389C192.24 10.0698 191.635 9.93527 190.904 9.93527C190.174 9.93527 189.511 10.0987 188.915 10.4254C188.338 10.733 187.877 11.2039 187.531 11.8382C187.204 12.4533 187.041 13.2125 187.041 14.116V14.4043C187.041 15.3077 187.204 16.0766 187.531 16.7109C187.877 17.326 188.338 17.7969 188.915 18.1236C189.511 18.4312 190.174 18.585 190.904 18.585C192 18.585 192.826 18.3063 193.384 17.7488C193.96 17.1722 194.326 16.4225 194.479 15.4999L197.997 16.336C197.747 17.3548 197.314 18.287 196.699 19.1328C196.104 19.9593 195.315 20.6128 194.335 21.0934C193.355 21.5739 192.182 21.8142 190.818 21.8142Z" fill="#353535"/> 32 <path d="M176.441 21.4095V7.10869H180.074V21.4095H176.441ZM178.257 5.43641C177.604 5.43641 177.046 5.22497 176.585 4.8021C176.143 4.37923 175.922 3.8218 175.922 3.12983C175.922 2.43785 176.143 1.88043 176.585 1.45755C177.046 1.03468 177.604 0.823242 178.257 0.823242C178.93 0.823242 179.487 1.03468 179.93 1.45755C180.372 1.88043 180.593 2.43785 180.593 3.12983C180.593 3.8218 180.372 4.37923 179.93 4.8021C179.487 5.22497 178.93 5.43641 178.257 5.43641Z" fill="#353535"/> 33 <path d="M165.009 21.4093V7.10845H168.584V8.72306H169.103C169.314 8.14641 169.66 7.72354 170.141 7.45443C170.641 7.18533 171.217 7.05078 171.871 7.05078H173.601V10.28H171.813C170.891 10.28 170.131 10.5299 169.535 11.0296C168.94 11.5102 168.642 12.2598 168.642 13.2786V21.4093H165.009Z" fill="#353535"/> 34 <path d="M157.336 21.409C156.394 21.409 155.625 21.1206 155.029 20.544C154.452 19.9481 154.164 19.16 154.164 18.1798V10.1067H150.589V7.10814H154.164V2.66797H157.797V7.10814H161.718V10.1067H157.797V17.5454C157.797 18.1221 158.066 18.4104 158.604 18.4104H161.372V21.409H157.336Z" fill="#353535"/> 35 <path d="M142.162 21.8142C140.778 21.8142 139.519 21.5259 138.385 20.9492C137.27 20.3726 136.386 19.5364 135.732 18.4408C135.079 17.3452 134.752 16.0189 134.752 14.4619V14.0583C134.752 12.5013 135.079 11.1751 135.732 10.0794C136.386 8.98381 137.27 8.14767 138.385 7.57102C139.519 6.99438 140.778 6.70605 142.162 6.70605C143.527 6.70605 144.699 6.94632 145.679 7.42686C146.66 7.9074 147.448 8.57054 148.044 9.41629C148.659 10.2428 149.062 11.1847 149.255 12.2419L145.737 12.9915C145.66 12.4149 145.487 11.8959 145.218 11.4346C144.949 10.9732 144.565 10.608 144.065 10.3389C143.584 10.0698 142.979 9.93527 142.248 9.93527C141.518 9.93527 140.855 10.0987 140.259 10.4254C139.682 10.733 139.221 11.2039 138.875 11.8382C138.548 12.4533 138.385 13.2125 138.385 14.116V14.4043C138.385 15.3077 138.548 16.0766 138.875 16.7109C139.221 17.326 139.682 17.7969 140.259 18.1236C140.855 18.4312 141.518 18.585 142.248 18.585C143.344 18.585 144.171 18.3063 144.728 17.7488C145.305 17.1722 145.67 16.4225 145.824 15.4999L149.341 16.336C149.091 17.3548 148.659 18.287 148.044 19.1328C147.448 19.9593 146.66 20.6128 145.679 21.0934C144.699 21.5739 143.527 21.8142 142.162 21.8142Z" fill="#353535"/> 36 <path d="M125.319 21.8142C123.897 21.8142 122.638 21.5163 121.542 20.9204C120.466 20.3053 119.62 19.4499 119.005 18.3543C118.409 17.2395 118.111 15.9324 118.111 14.4331V14.0871C118.111 12.5878 118.409 11.2904 119.005 10.
361948C119.601 9.07992 120.437 8.22456 121.514 7.62869C122.59 7.0136 123.839 6.70605 125.262 6.70605C126.665 6.70605 127.885 7.02321 128.923 7.65752C129.961 8.27261 130.769 9.13758 131.345 10.2524C131.922 11.3481 132.21 12.6263 132.21 14.0871V15.3269H121.802C121.84 16.3072 122.206 17.1049 122.897 17.72C123.589 18.3351 124.435 18.6426 125.435 18.6426C126.453 18.6426 127.203 18.4216 127.684 17.9795C128.164 17.5374 128.529 17.0472 128.779 16.509L131.749 18.066C131.48 18.5657 131.086 19.1136 130.567 19.7094C130.067 20.2861 129.394 20.7858 128.549 21.2087C127.703 21.6124 126.626 21.8142 125.319 21.8142ZM121.831 12.6167H128.52C128.443 11.7902 128.107 11.127 127.511 10.6272C126.934 10.1275 126.175 9.87761 125.233 9.87761C124.253 9.87761 123.474 10.1275 122.897 10.6272C122.321 11.127 121.965 11.7902 121.831 12.6167Z" fill="#353535"/> 37 <path d="M111.143 21.4092V1.22656H114.776V21.4092H111.143Z" fill="#353535"/> 38 <path d="M95.0645 21.4092V1.22656H108.039V4.68644H98.8703V9.50144H107.232V12.9613H98.8703V17.9493H108.212V21.4092H95.0645Z" fill="#353535"/> 39</svg> 40`,no="http://www.w3.org/2000/svg";async function Nm(r){const t=r.getAnimations({subtree:!0}).filter(n=>n.playState==="running"&&Number.isFinite(n.effect?.getComputedTiming().endTime));if(!t.length)return;let a;try{await Promise.race([Promise.all(t.map(n=>n.finished.catch(()=>{}))),new Promise(n=>{a=setTimeout(n,1e3)})])}finally{clearTimeout(a)}}const Om=["fill","fill-opacity","fill-rule","stroke","stroke-width","stroke-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","opacity","font-size","font-weight","font-style","letter-spacing","text-anchor","dominant-baseline","alignment-baseline","paint-order","visibility","display","clip-path","mask","vector-effect","shape-rendering","overflow"];function ao(r){const t=r.cloneNode(!1),a=getComputedStyle(r);t.removeAttribute("style");for(const n of Om){const i=a.getPropertyValue(n).replace(/url\(["']?[^)"']*#([^)'" ]+)["']?\)/g,"url(#$1)");i&&t.style.setProperty(n,i)}t.style.fontFamily="Arial, sans-serif",r.matches(".path-area, .path-line, .stacked-bar rect, .grouped-bar rect")&&(t.style.opacity="1");for(const n of Array.from(r.childNodes))n instanceof Element?n.matches("[data-png-exclude], script, foreignObject, image, use")||t.append(ao(n)):n.nodeType===Node.TEXT_NODE&&t.append(n.cloneNode());return t}const io="svg.layercake-layout-svg, svg[data-png-layer], canvas[data-png-layer]";function Im(r){try{const t=document.createElementNS(no,"image");return t.setAttribute("href",r.toDataURL("image/png")),t.setAttribute("preserveAspectRatio","none"),t}catch{return null}}function Fm(r){const t=r.querySelector(".stratum-chart-area, [data-chart-area]");if(!t)throw new Error("The chart has not rendered yet. Close the export and try again.");const a=t.getBoundingClientRect();if(a.width<1||a.height<1)throw new Error("The chart has no visible size.");const n=document.createElementNS(no,"svg");n.setAttribute("width",String(a.width)),n.setAttribute("height",String(a.height)),n.setAttribute("viewBox",`0 0 ${a.width} ${a.height}`);const i=t.querySelectorAll(io);if(!i.length)throw new Error("The chart has not rendered yet.");for(const o of Array.from(i)){const l=o.getBoundingClientRect(),s=o instanceof HTMLCanvasElement?Im(o):ao(o);s&&(s.setAttribute("x",String(l.left-a.left)),s.setAttribute("y",String(l.top-a.top)),s.setAttribute("width",String(l.width)),s.setAttribute("height",String(l.height)),n.append(s))}return{svg:new XMLSerializer().serializeToString(n),width:a.width,height:a.height}}function Wm(r){return{charts:Array.from(r.querySelectorAll("[data-tracker-png]"),a=>{const n=JSON.parse(a.getAttribute("data-tracker-png")||"{}"),i=a.querySelector("[data-chart-image]"),o=JSON.parse(i?.getAttribute("data-chart-image")||"{}"),l=a.closest("[data-png-context]")?.getAttribute("data-png-context"),s=!!n.ready&&!!o.hasData&&!!i?.querySelector(io);return{...o,...n,ready:s,caption:[l,n.caption,o.transform].filter(Boolean).join(" · "),...s&&i?Fm(i):{svg:"",width:0,height:0}}}),generatedAt:new Date().toISOString()}}function oi(r,t,a){const n=[];for(const i of r.split(` 41`)){let o="";
41for(const l of i.split(/\s+/).filter(Boolean)){const s=o?`${o} ${l}`:l;if(a(s)<=t){o=s;continue}o&&(n.push(o),o="");for(const u of l)o&&a(o+u)>t&&(n.push(o),o=""),o+=u}n.push(o)}return n}function Vm(r,t){if(!Number.isFinite(r)||!Number.isFinite(t)||r<=0||t<=0)throw new Error("Invalid image dimensions.");const a=Math.min(2,8192/r,8192/t,Math.sqrt(24e6/(r*t)));return{width:Math.ceil(r*a),height:Math.ceil(t*a),scale:a}}function si(r){return new Promise((t,a)=>{const n=URL.createObjectURL(new Blob([r],{type:"image/svg+xml"})),i=new Image;i.onload=()=>{URL.revokeObjectURL(n),t(i)},i.onerror=()=>{URL.revokeObjectURL(n),a(new Error("Unable to render the chart image. Please try again."))},i.src=n})}async function Um(r,{selected:t,title:a,description:n}){const i=r.charts.filter(y=>y.ready&&t.includes(y.id));if(!i.length)throw new Error("Select at least one ready chart.");const o=Math.max(640,Math.min(1280,Math.max(...i.map(y=>y.width))+64)),l=o-64,s=document.createElement("canvas"),u=s.getContext("2d");if(!u)throw new Error("PNG export is not supported by this browser.");const d=u,[f,...b]=await Promise.all([si(Am),...i.map(y=>si(y.svg))]),S=[];let C=32;S.push(()=>d.drawImage(f,32,32,236,28)),C+=56;function T(y,v,D,P=!1){if(!y.trim())return;const w=`${P?"600":"400"} ${v}px Arial, sans-serif`;d.font=w;for(const A of oi(y,l,J=>d.measureText(J).width)){const J=C;S.push(()=>{d.font=w,d.fillStyle=D,d.fillText(A,32,J)}),C+=Math.ceil(v*1.45)}C+=8}T(a.slice(0,140)||"Electricity tracker",28,"#252525",!0),T(n.slice(0,600),15,"#555"),i.forEach((y,v)=>{C+=20,T(`${y.title||y.label}${y.unit?` (${y.unit})`:""}`,19,"#252525",!0),T(y.caption,12,"#555");const D=y.height*l/y.width,P=C;S.push(()=>d.drawImage(b[v],32,P,l,D)),C+=D+16,d.font="400 12px Arial, sans-serif";let w=32;for(const A of y.legend){const J=oi(A.label,l-24,G=>d.measureText(G).width),B=Math.max(...J.map(G=>d.measureText(G).width))+36;w>32&&w+B>o-32&&(w=32,C+=24);const Q=w,ce=C;S.push(()=>{d.fillStyle=A.colour,d.fillRect(Q,ce+2,10,10),d.fillStyle="#454545",d.font="400 12px Arial, sans-serif",J.forEach((G,se)=>d.fillText(G,Q+17,ce+se*18))}),w+=B,J.length>1&&(w=32,C+=J.length*18+6)}C+=32}),C+=12,T("Source: Open Electricity · openelectricity.org.au/tracker",12,"#555"),T(`Generated ${r.generatedAt.replace("T"," ").replace(/\.\d+Z$/," UTC")}`,11,"#666");const k=Vm(o,C+24);s.width=k.width,s.height=k.height,d.scale(k.scale,k.scale),d.fillStyle="#fff",d.fillRect(0,0,o,C+24),d.textBaseline="top";for(const y of S)y();return new Promise((y,v)=>s.toBlob(D=>D?y(D):v(new Error("Unable to create the PNG file.")),"image/png"))}var Hm=M('<span class="block text-xs text-mid-grey">Unavailable â wait for data, then reopen.</span>'),zm=M('<label class="flex items-start gap-2"><input type="checkbox" class="mt-1"/> <span> <!></span></label>'),Zm=M('<button class="underline">Retry preview</button>'),Bm=M('<p role="alert"> </p> <!>',1),jm=M("<p>No charts are ready. Close the export and wait for the view to finish loading.</p>"),Gm=M('<p role="status" class="p-4 text-sm">Preparing previewâ¦</p>'),Km=M('<img class="h-auto w-full"/>'),Ym=M(`<dialog aria-labelledby="png-export-title" class="m-auto max-h-[90dvh] w-[min(1100px,calc(100%-2rem))] overflow-auto rounded-xl border border-warm-grey bg-white p-5 text-dark-grey shadow-xl backdrop:bg-black/40"><header class="mb-4 flex items-center justify-between gap-4"><h2 id="png-export-title" class="m-0 font-space text-xl">Export PNG</h2> <button class="rounded border px-3 py-1 text-sm">Close</button></header> <div class="grid gap-6 md:grid-cols-[260px_minmax(0,1fr)]"><div class="space-y-4 text-sm"><p>A frozen image of the current view, including legends and attribution. Close and reopen to 42 capture updated data.</p> <fieldset class="space-y-2"><legend class="mb-2 font-semibold">Charts</legend> <!></fieldset> <label class="block">Title<input class="mt-1 w-full rounded border border-warm-grey p-2" maxlength="140"/></label> <label class="block">Description<textarea class="mt-1 w-full rounded border border-warm-grey p-2" maxlength="600" rows="4"></textarea></label> <button class="w-full rounded bg-dark-grey px-4 py-2 text-white disabled:opacity-40">Download PNG</button> <!> <!></div> <div class="min-w-0 rounded border border-warm-grey bg-light-warm-grey p-2"><!></div></div></dialog>`);function Xm(r,t){ct(t,!0);const a=[];let n=ge(Yr(kt(()=>t.snapshot.charts.filter(de=>de.ready).map(de=>de.id)))),i=ge("Electricity tracker"),o=ge(""),l=ge(""),s=ge(null),u=ge(""),d=ge(!0),f=ge(0),b;Tr(()=>b.showModal()),ft(()=>{const de={selected:[...e(n)],title:e(i),description:e(o)};e(f);let L=!0,O="";N(d,!0),N(s,null),N(l,""),N(u,"");const Y=setTimeout(()=>{Um(t.snapshot,de).then(ye=>{L&&(O=URL.createObjectURL(ye),N(s,ye),N(l,O,!0))}).catch(ye=>{L&&N(u,ye instanceof Error?ye.message:"Unable to create the PNG.",!0)}).finally(()=>{L&&N(d,!1)})},150);return()=>{L=!1,clearTimeout(Y),O&&URL.revokeObjectURL(O)}});var S=Ym(),C=g(S),T=h(g(C),2);m(C);var k=h(C,2),y=g(k),v=h(g(y),2),D=h(g(v),2);Ge(D,17,()=>t.snapshot.charts,de=>de.id,(de,L)=>{var O=zm(),Y=g(O);Pn(Y);var ye,ke=h(Y,2),Ce=g(ke,!0),Ie=h(Ce);{var Ne=Pe=>{var qe=Hm();p(Pe,qe)};H(Ie,Pe=>{e(L).ready||Pe(Ne)})}m(ke),m(O),U(()=>{Y.disabled=!e(L).ready,ye!==(ye=e(L).id)&&(Y.value=(Y.__value=e(L).id)??""),j(Ce,e(L).label)}),Vs(a,[],Y,()=>(e(L).id,e(n)),Pe=>N(n,Pe)),p(de,O)}),m(v);var P=h(v,2),w=h(g(P));Pn(w),m(P);var A=h(P,2),J=h(g(A));Xo(J),m(A);var B=h(A,2),Q=h(B,2);{var ce=de=>{var L=Bm(),O=Re(L),Y=g(O,!0);m(O);var ye=h(O,2);{var ke=Ce=>{var Ie=Zm();_e("click",Ie,()=>qo(f)),p(Ce,Ie)};H(ye,Ce=>{e(n).length&&Ce(ke)})}U(()=>j(Y,e(u))),p(de,L)};H(Q,de=>{e(u)&&de(ce)})}var G=h(Q,2);{var se=de=>{var L=jm();p(de,L)};H(G,de=>{t.snapshot.charts.length||de(se)})}m(y);var te=h(y,2),ne=g(te);{var ve=de=>{var L=Gm();p(de,L)},Se=de=>{var L=Km();U(()=>{F(L,"src",e(l)),F(L,"alt",`PNG preview: ${e(i)||"Electricity tracker"}`)}),p(de,L)};H(ne,de=>{e(d)?de(ve):e(l)&&de(Se,1)})}m(te),m(k),m(S),Ot(S,de=>b=de,()=>b),U(()=>{B.disabled=e(d)||!e(s),F(te,"aria-busy",e(d))}),Mt("close",S,function(...de){t.onclose?.apply(this,de)}),_e("click",T,()=>
42b.close()),Wa(w,()=>e(i),de=>N(i,de)),Wa(J,()=>e(o),de=>N(o,de)),_e("click",B,()=>{e(s)&&fi(e(s),`openelectricity-tracker-${t.snapshot.generatedAt.slice(0,10)}.png`)}),p(r,S),dt()}_t(["click"]);function qm(r){return r.compareRegions?"regions":r.profileView==="timeline"?"timeline":"average"}function Jm(r,t){let a=ge(ir(r)),n=ge({start:0,end:0}),i=ge({start:0,end:0}),o=ge(!1),l=ge(!1),s=ge(Yr(r.nowMs)),u=ge(Yr(r.nowMs)),d=c(()=>e(u)-tn*864e5),f=c(()=>qm(e(a))),b=c(()=>Hs(e(a).region).timeZone),S=c(()=>qn(e(b))),C=c(()=>e(f)==="timeline"&&e(a).range.kind==="preset"),T=()=>[];const k=Us({viewport:()=>e(n),defaultViewport:()=>({start:e(d),end:e(u)}),setViewport:(w,A)=>{N(n,{start:Math.max(w,nn),end:A})},charts:()=>T(),timeZone:()=>e(b),initialRangeDays:tn,includeRolling:!0});function y(){return Hn(k.selectedRange==null?{kind:"custom",startMs:e(i).start,endMs:e(i).end,intervalId:k.displayInterval}:{kind:"preset",days:k.selectedRange,intervalId:k.displayInterval})}function v(){N(i,e(n)),N(a,ir({...e(a),range:y()}))}function D(w){N(l,!1);const A=Hn(w);A.kind==="preset"?k.handleRangeSelect(A.days):k.handleDateRangeChange(Wl(A)),A.intervalId!==k.displayInterval&&k.handleIntervalChange(A.intervalId),v()}D(r.range);function P(w){N(l,!1),w(),v(),t("push")}return{range:k,get anchorStart(){return e(d)},get anchorEnd(){return e(u)},get clockMs(){return e(s)},get view(){return e(f)},get timeZone(){return e(b)},get ianaTimeZone(){return e(S)},get following(){return e(C)},tick(w,A=!0){if(N(s,w,!0),!e(o)||!A||e(l)||!e(C)||w<=e(u))return;const J=Math.max(e(i).start,e(i).end-2*$n(k.activeInterval,e(i).end,e(S))*36e5);for(const B of T())B?.invalidateTail?.(J);k.advanceLiveEdge(w,{preserveStart:e(a).range.kind==="preset"&&e(a).range.days===-1}),N(u,w,!0),v()},get selection(){return e(a)},get window(){return e(i)},get connected(){return e(o)},get gestureActive(){return e(l)},set gestureActive(w){N(l,w,!0)},get rangeLabel(){return bs(e(i).start,e(i).end,k.displayInterval,e(S))},connect(w){return T=w,N(o,!0),D(e(a).range),()=>{T=()=>[],N(o,!1)}},restore(w){const A=e(a).region!==w.region||JSON.stringify(e(a).range)!==JSON.stringify(w.range);N(a,ir({...e(a),...w})),A&&D(w.range)},select(w,A,J="push"){N(a,ir({...e(a),...w==="group"&&A!==e(a).group?{hiddenSeries:[]}:{},[w]:A})),J&&t(J)},selectView(w){if(w===e(f))return;N(u,N(s,Date.now(),!0),!0);const A=new URLSearchParams;w!=="timeline"&&A.set("view",w==="regions"?"regions":"average"),N(a,fa(A,{nowMs:e(s)})),D(e(a).range),t("push",!0)},selectVisibility(w,A=e(a).overlays){N(a,ir({...e(a),hiddenSeries:w,overlays:A})),t("push")},selectRange(w){N(u,N(s,Date.now(),!0),!0),P(()=>k.handleRangeSelect(w))},selectDates(w){P(()=>k.handleDateRangeChange(w))},selectInterval(w){P(()=>k.handleIntervalChange(w))},moveViewport(w,A){k.handleDerivedViewportChange(w,A)},settleViewport(w){N(l,!1),k.handleDerivedViewportChange(w),k.handleViewportSettle(w),v(),t("replace")}}}function Qm(r){let t=r.read().search;return{write(a,n,i=!1){const o=r.read(),l=new URL(o);i&&(l.search="");const s=Vi(l,a);t=s.search,s.href!==o.href&&r.write(s,n)},read(a,n){return a.search===t?null:(t=a.search,fa(a.searchParams,{nowMs:n}))}}}var $m=M('<meta name="robots" content="noindex,nofollow"/>'),eg=M('<!> <a class="rounded-lg px-2 py-1 text-sm font-semibold text-dark-grey no-underline hover:bg-warm-grey hover:no-underline lg:text-base">Tracker</a>',1),tg=M('<div class="h-8 shrink-0 border-l border-warm-grey"></div>'),rg=M('<svelte-css-wrapper style="display: contents"><!></svelte-css-wrapper>',1),ng=M('<div class="col-start-1 row-start-1 flex min-w-0 items-center gap-4 overflow-x-auto py-0.5"><!> <!> <!></div>'),ag=M('<!> <div class="flex min-w-0 flex-1 items-center gap-4" data-testid="tracker-top-nav"><div class="hidden shrink-0 sm:block"><!></div> <div class="shrink-0 sm:hidden"><!></div> <div class="h-8 shrink-0 border-l border-warm-grey" role="separator" aria-orientation="vertical"></div> <div class="grid min-w-0 flex-1 overflow-hidden" data-testid="tracker-view-filters"><!></div></div> <!>',1),ig=M("<!> <!>",1),og=M("<div><!></div>"),sg=M('<div class="relative z-30 flex shrink-0 items-center justify-center gap-3 border-b border-warm-grey bg-white px-4 py-2 font-space text-xs text-dark-grey" role="status"><span> </span><button type="button" class="rounded p-1 text-mid-grey hover:bg-warm-grey hover:text-dark-grey" aria-label="Dismiss"><!></button></div>'),lg=M('<div class="flex min-h-0 flex-1 flex-col bg-light-warm-grey"><!> <main class="flex min-h-0 flex-1 flex-col overflow-hidden"><!></main></div>'),cg=M("<!> <!> <!>",1);function O1(r,t){ct(t,!0);const a=kt(()=>structuredClone(t.data)),n=Qm({read:()=>new URL(typeof window>"u"?Aa.url:window.location.href),write:(X,ie)=>{const fe=`${La("/(main)/tracker")}${X.search}`;ie==="push"?$o(fe,{}):es(fe,{})}}),i=Jm(a,(X,ie)=>n.write(i.selection,X,ie));let o=c(()=>i.selection.region),l=c(()=>i.selection.tablePanelOpen),s=c(()=>i.selection.bucketFilter),u=c(()=>i.view),d=c(()=>e(u)==="regions"),f=c(()=>e(u)==="average"),b=c(()=>e(u)==="timeline");const S=[{value:"timeline",label:"Timeline"},{value:"average",label:"Time of day"},{value:"regions",label:"Compare regions"}],C=new Rr("(prefers-reduced-motion: reduce)");let T=ge(void 0),k=ge(void 0),y=ge(""),v,D=ge(!1),P=ge(null);async function w(){try{await document.fonts.ready,await Nm(v),N(P,Wm(v))}catch(X){N(y,X instanceof Error?X.message:"Unable to capture the charts.",!0)}}let A=ge(void 0),J=c(()=>e(b)&&(!e(A)||e(A).isLoading()));const B=i.range;let Q=c(()=>i.selection.fullscreen),ce=c(()=>({selectedRange:B.selectedRange,customDays:B.customDays,displayInterval:B.displayInterval,startDate:B.pickerStartDate,endD
42ate:B.pickerEndDate,maxDate:B.maxDate}));const G=()=>Bl(new URL(window.location.href),i.selection);let se=c(()=>e(d)?[{key:"regions",label:"Region comparison",disabled:!e(k)?.exportDataset()?.rows.length}]:ji({tablePanelOpen:e(l)}).map(X=>({...X,disabled:e(f)||!e(A)||e(A).getExportContext(X.key).pending}))),te=c(()=>e(d)?!e(k)?.exportDataset()?.rows.length:e(f)||!e(A)||e(A).getExportContext("xlsx").pending);const ne=X=>i.select("region",X),ve=X=>i.select("bucketFilter",X);ft(()=>{Aa.url,kt(Se)});function Se(){const X=n.read(new URL(window.location.href),Date.now());X&&i.restore(X)}async function de(){const X=G();try{await navigator.clipboard.writeText(X.href),N(y,"Link copied.")}catch{window.prompt("Copy this link",X.href)}}const L="Charts are still loading â try again in a moment.",O="Nothing to export yet.";function Y(X="xlsx"){const ie=e(A)?.getExportContext(X);return!ie||ie.pending||ie.error?(N(y,ie?.error?"Some data could not load. Retry it before downloading.":L,!0),null):{...ie,sourceUrl:G().href,generatedAtMs:Date.now()}}function ye(X){if(e(d)){const Le=e(k),ze=Le?.exportDataset();Le&&ze?.rows.length&&Xr(cm(ze),ii(Le.getSelection(),Le.getViewport(),"csv"));return}const ie=Y(X);if(!ie)return;const fe=Gi(X,ie);if(!fe){N(y,O);return}Xr(gn(fe,ie.timeZone),qa(ie,X))}async function ke(){if(e(d)){const fe=e(k),Le=fe?.exportDataset();if(fe&&Le?.rows.length)try{await Ya(dm(Le,G().href,fe.getSelection()),ii(fe.getSelection(),fe.getViewport(),"xlsx"))}catch{N(y,"Could not build the workbook.")}return}const X=Y();if(!X)return;const ie=td(X);if(ie.length<2){N(y,O);return}try{await Ya(ie,qa(X,"xlsx"))}catch(fe){console.error("Tracker workbook export failed",fe),N(y,"Could not build the workbook.")}}Tr(()=>(N(D,!0),!new URL(window.location.href).searchParams.has("table")&&window.matchMedia(hs).matches&&i.select("tablePanelOpen",!1,null),rc({document,tick:()=>i.tick(Date.now(),e(A)?.isLiveReady()??!1)})));var Ce=cg();Mt("popstate",ra,Se),Jo("13nfjsc",X=>{var ie=$m();p(X,ie)});var Ie=Re(Ce);rs(Ie,{title:"Tracker",description:"Track Australia's electricity generation, price and emissions across regions, ranges and fuel technologies.",canonical:!1});var Ne=h(Ie,2);os(Ne,{get isFullscreen(){return e(Q)},gridline:!1,class:"bg-light-warm-grey",filterBar:fe=>{var Le=og(),ze=g(Le);ls(ze,{get isFullscreen(){return e(Q)},routeKey:"tracker",stableName:"filter-bar-stable-tracker",optionsSpacingClass:"tablet:pl-4",paddingX:"px-8",bgClass:"bg-light-warm-grey/75",stable:et=>{var Ee=ht(),ue=Re(Ee);{var Fe=Ue=>{var K=eg(),oe=Re(K);ds(oe,{});var pe=h(oe,2);U(Ye=>F(pe,"href",Ye),[()=>La("/(main)/tracker")]),p(Ue,K)};H(ue,Ue=>{e(Q)&&Ue(Fe)})}p(et,Ee)},rest:et=>{var Ee=ag(),ue=Re(Ee);{var Fe=me=>{var $=tg();p(me,$)};H(ue,me=>{e(Q)&&me(Fe)})}var Ue=h(ue,2),K=g(Ue),oe=g(K);_i(oe,{get buttons(){return S},get selected(){return e(u)},compact:!0,onchange:me=>i.selectView(me.value),"aria-label":"Analysis view"}),m(K);var pe=h(K,2),Ye=g(pe);Kr(Ye,{get selected(){return e(u)},get options(){return S},listLabel:"Analysis view",defaultValue:"timeline",compact:!0,onchange:me=>i.selectView(me)}),m(pe);var Xe=h(pe,4),Je=g(Xe);gi(Je,()=>e(u),me=>{var $=ng(),we=g($);{var De=V=>{Kr(V,{get selected(){return e(o)},get options(){return El},listLabel:"Region",get defaultValue(){return dn},compact:!0,onchange:ne})};H(we,V=>{e(d)||V(De)})}var E=h(we,2);{var Z=V=>{var Te=rg(),_=Re(Te);zs(_,()=>({"--chart-range-gap":"1rem"})),fs(_.lastChild,{get selectedRange(){return e(ce).selectedRange},get customDays(){return e(ce).customDays},get displayInterval(){return e(ce).displayInterval},get startDate(){return e(ce).startDate},get endDate(){return e(ce).endDate},get minDate(){return Mo},get maxDate(){return e(ce).maxDate},showIntervalDropdown:!0,includeRollingInterval:!0,showBucketFilter:!0,get bucketFilter(){return e(s)},onbucketfilterchange:ve,variant:"expanded",get onrangeselect(){return i.selectRange},get ondaterangechange(){return i.selectDates},get onintervalchange(){return i.selectInterval}}),m(_),p(V,Te)};H(E,V=>{e(b)&&V(Z)})}var ee=h(E,2);{var I=V=>{const Te=c(()=>e(k)?.getControls());var _=ht(),x=Re(_);Ht(x,()=>e(Te)??bt),p(V,_)},le=V=>{const Te=c(()=>e(T)?.getControls());var _=ht(),x=Re(_);Ht(x,()=>e(Te)??bt),p(V,_)};H(ee,V=>{e(d)?V(I):e(f)&&V(le,1)})}m($),U(()=>F($,"data-view",e(u))),Dn(1,$,()=>Na,()=>({x:-24,duration:C.current?0:180,delay:C.current?0:140})),Dn(2,$,()=>Na,()=>({x:-24,duration:C.current?0:140})),p(me,$)}),m(Xe),m(Ue);var R=h(Ue,2);{var z=me=>{{let $=c(()=>e(A)?.getInspectLabel());Gd(me,{get label(){return i.rangeLabel},get inspectLabel(){return e($)},get loading(){return e(J)}})}};H(R,me=>{e(b)&&me(z)})}p(et,Ee)},options:et=>{ns(et,{get isFullscreen(){return e(Q)},onfullscreenchange:()=>Oa(e(Q)),oncopylink:de,showCopyLink:!0,get downloadItems(){return e(se)},get downloadXlsxDisabled(){return e(te)},ondownloaditem:ue=>ye(ue),ondownloadxlsx:ke,extraSections:(ue,Fe)=>{let Ue=()=>Fe?.().close;var K=ig(),oe=Re(K);as(oe,{onclick:()=>{Ue()(),w()},children:(Ye,Xe)=>{Ut();var Je=jt("Export PNG");p(Ye,Je)},$$slots:{default:!0}});var pe=h(oe,2);is(pe),p(ue,K)},$$slots:{extraSections:!0}})},$$slots:{stable:!0,rest:!0,options:!0}}),m(Le),U(()=>He(Le,1,`relative z-40 shrink-0 border-b border-warm-grey ${e(Q)?"":"px-4"}`)),p(fe,Le)},content:fe=>{ss(fe,{get isFullscreen(){return e(Q)}
42,class:"[view-transition-name:page-body]",footer:ze=>{cs(ze,{get isFullscreen(){return e(Q)},onenterfullscreen:()=>Oa(e(Q))})},children:(ze,gt)=>{var xe=lg(),Ke=g(xe);{var et=oe=>{var pe=sg(),Ye=g(pe),Xe=g(Ye,!0);m(Ye);var Je=h(Ye),R=g(Je);yi(R,{class:"size-3.5"}),m(Je),m(pe),U(()=>j(Xe,e(y))),_e("click",Je,()=>N(y,"")),p(oe,pe)};H(Ke,oe=>{e(y)&&oe(et)})}var Ee=h(Ke,2),ue=g(Ee);{var Fe=oe=>{Ot(Lm(oe,{get session(){return i},get cpi(){return t.data.comparisonCpi}}),pe=>N(k,pe),()=>e(k))},Ue=oe=>{Ot(wu(oe,{get session(){return i}}),pe=>N(T,pe),()=>e(T))},K=oe=>{Ot(Bd(oe,{get session(){return i}}),pe=>N(A,pe),()=>e(A))};H(ue,oe=>{e(d)?oe(Fe):e(f)?oe(Ue,1):oe(K,-1)})}m(Ee),Ot(Ee,oe=>v=oe,()=>v),m(xe),U(()=>F(Ee,"data-hydrated",e(D)||void 0)),p(ze,xe)},$$slots:{footer:!0,default:!0}})},$$slots:{filterBar:!0,content:!0}});var Pe=h(Ne,2);{var qe=X=>{Xm(X,{get snapshot(){return e(P)},onclose:()=>N(P,null)})};H(Pe,X=>{e(P)&&X(qe)})}p(r,Ce),dt()}_t(["click"]);export{O1 as component,N1 as universal};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.