12 lines
57 KiB
JavaScript
12 lines
57 KiB
JavaScript
var Fl=Object.defineProperty;var Al=(e,n,s)=>n in e?Fl(e,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[n]=s;var Rt=(e,n,s)=>Al(e,typeof n!="symbol"?n+"":n,s);(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))o(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const f of i.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&o(f)}).observe(document,{childList:!0,subtree:!0});function s(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function o(r){if(r.ep)return;r.ep=!0;const i=s(r);fetch(r.href,i)}})();function Se(){}function Sl(e){return e()}function ll(){return Object.create(null)}function tt(e){e.forEach(Sl)}function Cl(e){return typeof e=="function"}function rt(e,n){return e!=e?n==n:e!==n||e&&typeof e=="object"||typeof e=="function"}function Il(e){return Object.keys(e).length===0}function l(e,n){e.appendChild(n)}function ne(e,n,s){e.insertBefore(n,s||null)}function te(e){e.parentNode&&e.parentNode.removeChild(e)}function It(e,n){for(let s=0;s<e.length;s+=1)e[s]&&e[s].d(n)}function a(e){return document.createElement(e)}function I(e){return document.createElementNS("http://www.w3.org/2000/svg",e)}function y(e){return document.createTextNode(e)}function v(){return y(" ")}function nl(){return y("")}function Te(e,n,s,o){return e.addEventListener(n,s,o),()=>e.removeEventListener(n,s,o)}function t(e,n,s){s==null?e.removeAttribute(n):e.getAttribute(n)!==s&&e.setAttribute(n,s)}function Nl(e){return Array.from(e.childNodes)}function D(e,n){n=""+n,e.data!==n&&(e.data=n)}function Pt(e,n){e.value=n??""}function K(e,n,s,o){s==null?e.style.removeProperty(n):e.style.setProperty(n,s,"")}function Ft(e,n,s){for(let o=0;o<e.options.length;o+=1){const r=e.options[o];if(r.__value===n){r.selected=!0;return}}(!s||n!==void 0)&&(e.selectedIndex=-1)}function El(e){const n=e.querySelector(":checked");return n&&n.__value}function E(e,n,s){e.classList.toggle(n,!!s)}let jt;function Ct(e){jt=e}function jl(){if(!jt)throw new Error("Function called outside component initialization");return jt}function Dl(e){jl().$$.on_mount.push(e)}function Rl(e){jl().$$.on_destroy.push(e)}const kt=[],sl=[];let yt=[];const ol=[],Ll=Promise.resolve();let qt=!1;function ql(){qt||(qt=!0,Ll.then(Pl))}function At(e){yt.push(e)}const Lt=new Set;let bt=0;function Pl(){if(bt!==0)return;const e=jt;do{try{for(;bt<kt.length;){const n=kt[bt];bt++,Ct(n),Bl(n.$$)}}catch(n){throw kt.length=0,bt=0,n}for(Ct(null),kt.length=0,bt=0;sl.length;)sl.pop()();for(let n=0;n<yt.length;n+=1){const s=yt[n];Lt.has(s)||(Lt.add(s),s())}yt.length=0}while(kt.length);for(;ol.length;)ol.pop()();qt=!1,Lt.clear(),Ct(e)}function Bl(e){if(e.fragment!==null){e.update(),tt(e.before_update);const n=e.dirty;e.dirty=[-1],e.fragment&&e.fragment.p(e.ctx,n),e.after_update.forEach(At)}}function Gl(e){const n=[],s=[];yt.forEach(o=>e.indexOf(o)===-1?n.push(o):s.push(o)),s.forEach(o=>o()),yt=n}const Ot=new Set;let zl;function ft(e,n){e&&e.i&&(Ot.delete(e),e.i(n))}function gt(e,n,s,o){if(e&&e.o){if(Ot.has(e))return;Ot.add(e),zl.c.push(()=>{Ot.delete(e)}),e.o(n)}}function it(e){return(e==null?void 0:e.length)!==void 0?e:Array.from(e)}function wt(e){e&&e.c()}function ut(e,n,s){const{fragment:o,after_update:r}=e.$$;o&&o.m(n,s),At(()=>{const i=e.$$.on_mount.map(Sl).filter(Cl);e.$$.on_destroy?e.$$.on_destroy.push(...i):tt(i),e.$$.on_mount=[]}),r.forEach(At)}function vt(e,n){const s=e.$$;s.fragment!==null&&(Gl(s.after_update),tt(s.on_destroy),s.fragment&&s.fragment.d(n),s.on_destroy=s.fragment=null,s.ctx=[])}function Hl(e,n){e.$$.dirty[0]===-1&&(kt.push(e),ql(),e.$$.dirty.fill(0)),e.$$.dirty[n/31|0]|=1<<n%31}function ht(e,n,s,o,r,i,f=null,c=[-1]){const m=jt;Ct(e);const d=e.$$={fragment:null,ctx:[],props:i,update:Se,not_equal:r,bound:ll(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(n.context||(m?m.$$.context:[])),callbacks:ll(),dirty:c,skip_bound:!1,root:n.target||m.$$.root};f&&f(d.root);let w=!1;if(d.ctx=s?s(e,n.props||{},(u,_,...k)=>{const M=k.length?k[0]:_;return d.ctx&&r(d.ctx[u],d.ctx[u]=M)&&(!d.skip_bound&&d.bound[u]&&d.bound[u](M),w&&Hl(e,u)),_}):[],d.update(),w=!0,tt(d.before_update),d.fragment=o?o(d.ctx):!1,n.target){if(n.hydrate){const u=Nl(n.target);d.fragment&&d.fragment.l(u),u.forEach(te)}else d.fragment&&d.fragment.c();n.intro&&ft(e.$$.fragment),ut(e,n.target,n.anchor),Pl()}Ct(m)}class pt{constructor(){Rt(this,"$$");Rt(this,"$$set")}$destroy(){vt(this,1),this.$destroy=Se}$on(n,s){if(!Cl(s))return Se;const o=this.$$.callbacks[n]||(this.$$.callbacks[n]=[]);return o.push(s),()=>{const r=o.indexOf(s);r!==-1&&o.splice(r,1)}}$set(n){this.$$set&&!Il(n)&&(this.$$.skip_bound=!0,this.$$set(n),this.$$.skip_bound=!1)}}const Wl="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Wl);const _t=[];function Gt(e,n=Se){let s;const o=new Set;function r(c){if(rt(e,c)&&(e=c,s)){const m=!_t.length;for(const d of o)d[1](),_t.push(d,e);if(m){for(let d=0;d<_t.length;d+=2)_t[d][0](_t[d+1]);_t.length=0}}}function i(c){r(c(e))}function f(c,m=Se){const d=[c,m];return o.add(d),o.size===1&&(s=n(r,i)||Se),c(e),()=>{o.delete(d),o.size===0&&s&&(s(),s=null)}}return{set:r,update:i,subscribe:f}}const Bt=Gt(!1),Ol=Gt(null),Xl=Gt(null);class xl{constructor(){this.ws=null,this.reconnectTimeout=null,this.reconnectDelay=3e3}connect(){const s=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws`;try{this.ws=new WebSocket(s),this.ws.onopen=()=>{console.log("WebSocket connected"),Bt.set(!0)},this.ws.onmessage=o=>{try{const r=JSON.parse(o.data);r.type==="update"&&(console.log("System status updated:",r.data),Ol.set(r.data),Xl.set(new Date(r.timestamp)))}catch(r){console.error("Error parsing message:",r)}},this.ws.onerror=o=>{console.error("WebSocket error:",o)},this.ws.onclose=()=>{console.log("WebSocket disconnected"),Bt.set(!1),this.scheduleReconnect()}}catch(o){console.error("Error creating WebSocket:",o),this.scheduleReconnect()}}scheduleReconnect(){this.reconnectTimeout&&clearTimeout(this.reconnectTimeout),this.reconnectTimeout=setTimeout(()=>{console.log("Attempting to reconnect..."),this.connect()},this.reconnectDelay)}send(n){this.ws&&this.ws.readyState===WebSocket.OPEN&&this.ws.send(JSON.stringify(n))}disconnect(){this.reconnectTimeout&&clearTimeout(this.reconnectTimeout),this.ws&&this.ws.close()}}const al=new xl,Ul="/api";async function ke(e,n={}){try{const s=await fetch(`${Ul}${e}`,{...n,headers:{"Content-Type":"application/json",...n.headers}});if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);return await s.json()}catch(s){throw console.error("API request failed:",s),s}}const Fe={getStatus:()=>ke("/status"),getConfig:()=>ke("/config"),webswitch:{relayOn:e=>ke(`/webswitch/relay/on?relay=${e}`,{method:"POST"}),relayOff:e=>ke(`/webswitch/relay/off?relay=${e}`,{method:"POST"}),allOn:()=>ke("/webswitch/all/on",{method:"POST"}),allOff:()=>ke("/webswitch/all/off",{method:"POST"})},rotator:{move:(e,n)=>ke("/rotator/move",{method:"POST",body:JSON.stringify({rotator:e,azimuth:n})}),cw:e=>ke(`/rotator/cw?rotator=${e}`,{method:"POST"}),ccw:e=>ke(`/rotator/ccw?rotator=${e}`,{method:"POST"}),stop:()=>ke("/rotator/stop",{method:"POST"})},tuner:{setOperate:e=>ke("/tuner/operate",{method:"POST",body:JSON.stringify({value:e})}),setBypass:e=>ke("/tuner/bypass",{method:"POST",body:JSON.stringify({value:e})}),autoTune:()=>ke("/tuner/autotune",{method:"POST"})},antenna:{selectAntenna:(e,n)=>ke("/antenna/select",{method:"POST",body:JSON.stringify({port:e,antenna:n})}),deselectAntenna:(e,n)=>ke("/antenna/deselect",{method:"POST",body:JSON.stringify({port:e,antenna:n})}),reboot:()=>ke("/antenna/reboot",{method:"POST"})},power:{setFanMode:e=>ke("/power/fanmode",{method:"POST",body:JSON.stringify({mode:e})}),setOperate:e=>ke("/power/operate",{method:"POST",body:JSON.stringify({value:e})})},rotator:{setHeading:e=>ke("/rotator/heading",{method:"POST",body:JSON.stringify({heading:e})}),rotateCW:()=>ke("/rotator/cw",{method:"POST"}),rotateCCW:()=>ke("/rotator/ccw",{method:"POST"}),stop:()=>ke("/rotator/stop",{method:"POST"})},ultrabeam:{setFrequency:(e,n)=>ke("/ultrabeam/frequency",{method:"POST",body:JSON.stringify({frequency:e,direction:n})}),retract:()=>ke("/ultrabeam/retract",{method:"POST"}),setAutoTrack:(e,n)=>ke("/ultrabeam/autotrack",{method:"POST",body:JSON.stringify({enabled:e,threshold:n})}),setDirection:e=>ke("/ultrabeam/direction",{method:"POST",body:JSON.stringify({direction:e})})}};function il(e,n,s){var f;const o=e.slice();o[10]=n[s];const r=o[1].find(function(...m){return e[9](o[10],...m)});o[11]=r;const i=((f=o[11])==null?void 0:f.state)||!1;return o[12]=i,o}function rl(e){let n,s,o,r,i,f,c=e[12]?"ON":"OFF",m,d,w,u,_,k,M,g;function h(){return e[8](e[10])}return{c(){n=a("div"),s=a("div"),o=a("div"),r=a("div"),r.textContent=`${e[3][e[10]]}`,i=v(),f=a("div"),m=y(c),d=v(),w=a("button"),u=a("div"),u.innerHTML='<div class="toggle-thumb svelte-z2csmj"></div>',k=v(),t(r,"class","relay-name svelte-z2csmj"),t(f,"class","relay-status svelte-z2csmj"),t(o,"class","relay-details svelte-z2csmj"),t(s,"class","relay-info svelte-z2csmj"),t(u,"class","toggle-track svelte-z2csmj"),t(w,"class","relay-toggle svelte-z2csmj"),w.disabled=_=e[0][e[10]],E(w,"active",e[12]),E(w,"loading",e[0][e[10]]),t(n,"class","relay-card svelte-z2csmj"),E(n,"relay-on",e[12])},m(p,T){ne(p,n,T),l(n,s),l(s,o),l(o,r),l(o,i),l(o,f),l(f,m),l(n,d),l(n,w),l(w,u),l(n,k),M||(g=Te(w,"click",h),M=!0)},p(p,T){e=p,T&2&&c!==(c=e[12]?"ON":"OFF")&&D(m,c),T&1&&_!==(_=e[0][e[10]])&&(w.disabled=_),T&2&&E(w,"active",e[12]),T&1&&E(w,"loading",e[0][e[10]]),T&2&&E(n,"relay-on",e[12])},d(p){p&&te(n),M=!1,g()}}}function Jl(e){let n,s,o,r,i,f,c,m,d,w,u,_,k,M,g,h=it([1,2,3,4,5]),p=[];for(let T=0;T<5;T+=1)p[T]=rl(il(e,h,T));return{c(){n=a("div"),s=a("div"),o=a("h2"),o.textContent="WebSwitch",r=v(),i=a("span"),f=v(),c=a("div"),m=a("div");for(let T=0;T<5;T+=1)p[T].c();d=v(),w=a("div"),u=a("button"),u.innerHTML=`<span class="btn-icon svelte-z2csmj">⚡</span>
|
|
ALL ON`,_=v(),k=a("button"),k.innerHTML=`<span class="btn-icon svelte-z2csmj">⏻</span>
|
|
ALL OFF`,t(o,"class","svelte-z2csmj"),t(i,"class","status-dot svelte-z2csmj"),E(i,"disconnected",!e[2]),t(s,"class","card-header svelte-z2csmj"),t(m,"class","relays svelte-z2csmj"),t(u,"class","control-btn all-on svelte-z2csmj"),t(k,"class","control-btn all-off svelte-z2csmj"),t(w,"class","controls svelte-z2csmj"),t(c,"class","metrics svelte-z2csmj"),t(n,"class","card svelte-z2csmj")},m(T,b){ne(T,n,b),l(n,s),l(s,o),l(s,r),l(s,i),l(n,f),l(n,c),l(c,m);for(let A=0;A<5;A+=1)p[A]&&p[A].m(m,null);l(c,d),l(c,w),l(w,u),l(w,_),l(w,k),M||(g=[Te(u,"click",e[5]),Te(k,"click",e[6])],M=!0)},p(T,[b]){if(b&4&&E(i,"disconnected",!T[2]),b&27){h=it([1,2,3,4,5]);let A;for(A=0;A<5;A+=1){const X=il(T,h,A);p[A]?p[A].p(X,b):(p[A]=rl(X),p[A].c(),p[A].m(m,null))}for(;A<5;A+=1)p[A].d(1)}},i:Se,o:Se,d(T){T&&te(n),It(p,T),M=!1,tt(g)}}}function Yl(e,n,s){let o,r,{status:i}=n;const f={1:"Power Supply",2:"PGXL",3:"TGXL",4:"Flex Radio Start",5:"Reserve"};let c={};async function m(k){const M=o.find(h=>h.number===k),g=(M==null?void 0:M.state)||!1;s(0,c[k]=!0,c);try{g?await Fe.webswitch.relayOff(k):await Fe.webswitch.relayOn(k)}catch(h){console.error("Failed to toggle relay:",h),alert("Failed to control relay")}finally{s(0,c[k]=!1,c)}}async function d(){try{await Fe.webswitch.allOn()}catch(k){console.error("Failed to turn all on:",k)}}async function w(){try{await Fe.webswitch.allOff()}catch(k){console.error("Failed to turn all off:",k)}}const u=k=>m(k),_=(k,M)=>M.number===k;return e.$$set=k=>{"status"in k&&s(7,i=k.status)},e.$$.update=()=>{e.$$.dirty&128&&s(1,o=(i==null?void 0:i.relays)||[]),e.$$.dirty&128&&s(2,r=(i==null?void 0:i.connected)||!1)},[c,o,r,f,m,d,w,i,u,_]}class Vl extends pt{constructor(n){super(),ht(this,n,Yl,Jl,rt,{status:7})}}function Kl(e){let n,s,o,r,i,f,c,m,d,w,u,_,k,M,g,h,p,T=e[1].toFixed(0)+"",b,A,X,R,N,P,se,me,Z,Q,oe=e[2].toFixed(2)+"",$,ie,j,V,O,F,H,L=e[3].toFixed(1)+"",ve,Pe,be,fe,ye,Me,ue,Oe,ae,G,Ce=e[12].toFixed(1)+"",ge,Re,je,De,Ae,W,U,re,J,q,le,ee,x,C=e[15].toFixed(0)+"",S,z,Y,Ie,lt,qe,Ye=e[14].toFixed(1)+"",ze,He,Ne,We,Ze,Le,Qe=e[13].toFixed(1)+"",Be,Ve,Xe,ce,he,nt,xe,Ke,Mt,Ge,ct,$e,dt,Je,et,st,Ue,Tt,Ee,we,ot,at,mt,St;return{c(){n=a("div"),s=a("div"),o=a("h2"),o.textContent="Power Genius XL",r=v(),i=a("div"),f=a("button"),c=y(e[7]),m=v(),d=a("span"),w=v(),u=a("div"),_=a("div"),k=a("div"),M=a("div"),g=a("span"),g.textContent="Power",h=v(),p=a("span"),b=y(T),A=y(" W"),X=v(),R=a("div"),N=a("div"),P=a("div"),se=a("div"),me=v(),Z=a("div"),Q=a("div"),$=y(oe),ie=v(),j=a("div"),j.textContent="SWR",V=v(),O=a("div"),F=a("div"),H=a("div"),ve=y(L),Pe=y("°"),be=v(),fe=a("div"),fe.textContent="PA Temp",ye=v(),Me=a("div"),ue=a("div"),Oe=v(),ae=a("div"),G=a("div"),ge=y(Ce),Re=y("°"),je=v(),De=a("div"),De.textContent="HL Temp",Ae=v(),W=a("div"),U=a("div"),re=v(),J=a("div"),q=a("div"),le=a("div"),le.textContent="VAC",ee=v(),x=a("div"),S=y(C),z=v(),Y=a("div"),Ie=a("div"),Ie.textContent="VDD",lt=v(),qe=a("div"),ze=y(Ye),He=v(),Ne=a("div"),We=a("div"),We.textContent="ID Peak",Ze=v(),Le=a("div"),Be=y(Qe),Ve=v(),Xe=a("div"),ce=a("div"),he=a("span"),he.textContent="Band A",nt=v(),xe=a("span"),Ke=y(e[10]),Mt=v(),Ge=a("div"),ct=a("span"),ct.textContent="Band B",$e=v(),dt=a("span"),Je=y(e[9]),et=v(),st=a("div"),Ue=a("label"),Ue.textContent="Fan Mode",Tt=v(),Ee=a("select"),we=a("option"),we.textContent="Standard",ot=a("option"),ot.textContent="Contest",at=a("option"),at.textContent="Broadcast",t(o,"class","svelte-1h3han9"),t(f,"class","state-badge svelte-1h3han9"),E(f,"idle",e[0]==="IDLE"),E(f,"transmit",e[0].includes("TRANSMIT")),t(d,"class","status-dot svelte-1h3han9"),E(d,"disconnected",!e[8]),t(i,"class","header-right svelte-1h3han9"),t(s,"class","card-header svelte-1h3han9"),t(g,"class","power-label-inline svelte-1h3han9"),t(p,"class","power-value-inline svelte-1h3han9"),t(M,"class","power-header svelte-1h3han9"),t(se,"class","power-bar-glow svelte-1h3han9"),t(P,"class","power-bar-fill svelte-1h3han9"),K(P,"width",e[4]+"%"),t(N,"class","power-bar-bg svelte-1h3han9"),t(R,"class","power-bar-container svelte-1h3han9"),t(k,"class","power-section svelte-1h3han9"),t(Q,"class","swr-value-compact svelte-1h3han9"),t(j,"class","swr-label-compact svelte-1h3han9"),t(Z,"class","swr-circle-compact svelte-1h3han9"),K(Z,"--swr-color",e[5]),t(_,"class","power-swr-row svelte-1h3han9"),t(H,"class","temp-value svelte-1h3han9"),K(H,"color",e[6]),t(fe,"class","temp-label svelte-1h3han9"),t(ue,"class","temp-mini-fill svelte-1h3han9"),K(ue,"width",e[3]/80*100+"%"),K(ue,"background",e[6]),t(Me,"class","temp-mini-bar svelte-1h3han9"),t(F,"class","temp-item svelte-1h3han9"),t(G,"class","temp-value svelte-1h3han9"),K(G,"color",e[6]),t(De,"class","temp-label svelte-1h3han9"),t(U,"class","temp-mini-fill svelte-1h3han9"),K(U,"width",e[12]/80*100+"%"),K(U,"background",e[6]),t(W,"class","temp-mini-bar svelte-1h3han9"),t(ae,"class","temp-item svelte-1h3han9"),t(O,"class","temp-group svelte-1h3han9"),t(le,"class","param-label svelte-1h3han9"),t(x,"class","param-value svelte-1h3han9"),t(q,"class","param-box svelte-1h3han9"),t(Ie,"class","param-label svelte-1h3han9"),t(qe,"class","param-value svelte-1h3han9"),t(Y,"class","param-box svelte-1h3han9"),t(We,"class","param-label svelte-1h3han9"),t(Le,"class","param-value svelte-1h3han9"),t(Ne,"class","param-box svelte-1h3han9"),t(J,"class","params-grid svelte-1h3han9"),t(he,"class","band-label svelte-1h3han9"),t(xe,"class","band-value svelte-1h3han9"),t(ce,"class","band-item svelte-1h3han9"),t(ct,"class","band-label svelte-1h3han9"),t(dt,"class","band-value svelte-1h3han9"),t(Ge,"class","band-item svelte-1h3han9"),t(Xe,"class","band-display svelte-1h3han9"),t(Ue,"for","fan-mode-select"),t(Ue,"class","control-label svelte-1h3han9"),we.__value="STANDARD",Pt(we,we.__value),ot.__value="CONTEST",Pt(ot,ot.__value),at.__value="BROADCAST",Pt(at,at.__value),t(Ee,"id","fan-mode-select"),t(Ee,"class","svelte-1h3han9"),t(st,"class","fan-control svelte-1h3han9"),t(u,"class","metrics svelte-1h3han9"),t(n,"class","card svelte-1h3han9")},m(de,pe){ne(de,n,pe),l(n,s),l(s,o),l(s,r),l(s,i),l(i,f),l(f,c),l(i,m),l(i,d),l(n,w),l(n,u),l(u,_),l(_,k),l(k,M),l(M,g),l(M,h),l(M,p),l(p,b),l(p,A),l(k,X),l(k,R),l(R,N),l(N,P),l(P,se),l(_,me),l(_,Z),l(Z,Q),l(Q,$),l(Z,ie),l(Z,j),l(u,V),l(u,O),l(O,F),l(F,H),l(H,ve),l(H,Pe),l(F,be),l(F,fe),l(F,ye),l(F,Me),l(Me,ue),l(O,Oe),l(O,ae),l(ae,G),l(G,ge),l(G,Re),l(ae,je),l(ae,De),l(ae,Ae),l(ae,W),l(W,U),l(u,re),l(u,J),l(J,q),l(q,le),l(q,ee),l(q,x),l(x,S),l(J,z),l(J,Y),l(Y,Ie),l(Y,lt),l(Y,qe),l(qe,ze),l(J,He),l(J,Ne),l(Ne,We),l(Ne,Ze),l(Ne,Le),l(Le,Be),l(u,Ve),l(u,Xe),l(Xe,ce),l(ce,he),l(ce,nt),l(ce,xe),l(xe,Ke),l(Xe,Mt),l(Xe,Ge),l(Ge,ct),l(Ge,$e),l(Ge,dt),l(dt,Je),l(u,et),l(u,st),l(st,Ue),l(st,Tt),l(st,Ee),l(Ee,we),l(Ee,ot),l(Ee,at),Ft(Ee,e[11]),mt||(St=[Te(f,"click",e[17]),Te(Ee,"change",e[19])],mt=!0)},p(de,[pe]){pe&128&&D(c,de[7]),pe&1&&E(f,"idle",de[0]==="IDLE"),pe&1&&E(f,"transmit",de[0].includes("TRANSMIT")),pe&256&&E(d,"disconnected",!de[8]),pe&2&&T!==(T=de[1].toFixed(0)+"")&&D(b,T),pe&16&&K(P,"width",de[4]+"%"),pe&4&&oe!==(oe=de[2].toFixed(2)+"")&&D($,oe),pe&32&&K(Z,"--swr-color",de[5]),pe&8&&L!==(L=de[3].toFixed(1)+"")&&D(ve,L),pe&64&&K(H,"color",de[6]),pe&8&&K(ue,"width",de[3]/80*100+"%"),pe&64&&K(ue,"background",de[6]),pe&4096&&Ce!==(Ce=de[12].toFixed(1)+"")&&D(ge,Ce),pe&64&&K(G,"color",de[6]),pe&4096&&K(U,"width",de[12]/80*100+"%"),pe&64&&K(U,"background",de[6]),pe&32768&&C!==(C=de[15].toFixed(0)+"")&&D(S,C),pe&16384&&Ye!==(Ye=de[14].toFixed(1)+"")&&D(ze,Ye),pe&8192&&Qe!==(Qe=de[13].toFixed(1)+"")&&D(Be,Qe),pe&1024&&D(Ke,de[10]),pe&512&&D(Je,de[9]),pe&2048&&Ft(Ee,de[11])},i:Se,o:Se,d(de){de&&te(n),mt=!1,tt(St)}}}function Zl(e,n,s){let o,r,i,f,c,m,d,w,u,_,k,M,g,h,p,T,{status:b}=n;async function A(N){try{await Fe.power.setFanMode(N)}catch(P){console.error("Failed to set fan mode:",P)}}async function X(){try{const N=u==="IDLE"?0:1;await Fe.power.setOperate(N)}catch(N){console.error("Failed to toggle operate:",N)}}const R=N=>A(N.target.value);return e.$$set=N=>{"status"in N&&s(18,b=N.status)},e.$$.update=()=>{e.$$.dirty&262144&&s(1,o=(b==null?void 0:b.power_forward)||0),e.$$.dirty&262144&&b!=null&&b.power_reflected,e.$$.dirty&262144&&s(2,r=(b==null?void 0:b.swr)||1),e.$$.dirty&262144&&s(15,i=(b==null?void 0:b.voltage)||0),e.$$.dirty&262144&&s(14,f=(b==null?void 0:b.vdd)||0),e.$$.dirty&262144&&b!=null&&b.current,e.$$.dirty&262144&&s(13,c=(b==null?void 0:b.peak_current)||0),e.$$.dirty&262144&&s(3,m=(b==null?void 0:b.temperature)||0),e.$$.dirty&262144&&s(12,d=(b==null?void 0:b.harmonic_load_temp)||0),e.$$.dirty&262144&&s(11,w=(b==null?void 0:b.fan_mode)||"CONTEST"),e.$$.dirty&262144&&s(0,u=(b==null?void 0:b.state)||"IDLE"),e.$$.dirty&262144&&s(10,_=(b==null?void 0:b.band_a)||"0"),e.$$.dirty&262144&&s(9,k=(b==null?void 0:b.band_b)||"0"),e.$$.dirty&262144&&s(8,M=(b==null?void 0:b.connected)||!1),e.$$.dirty&1&&s(7,g=u.replace("TRANSMIT_A","TRANSMIT").replace("TRANSMIT_B","TRANSMIT")),e.$$.dirty&8&&s(6,h=m<40?"#4caf50":m<60?"#ffc107":m<75?"#ff9800":"#f44336"),e.$$.dirty&4&&s(5,p=r<1.5?"#4caf50":r<2?"#ffc107":r<3?"#ff9800":"#f44336"),e.$$.dirty&2&&s(4,T=Math.min(o/2e3*100,100))},[u,o,r,m,T,p,h,g,M,k,_,w,d,c,f,i,A,X,b,R]}class Ql extends pt{constructor(n){super(),ht(this,n,Zl,Kl,rt,{status:18})}}function $l(e){let n,s,o,r,i,f,c,m,d,w,u,_,k,M,g,h,p,T=e[0].toFixed(0)+"",b,A,X,R,N,P,se,me,Z,Q,oe=e[1].toFixed(2)+"",$,ie,j,V,O,F,H,L,ve,Pe,be,fe,ye,Me,ue,Oe,ae,G,Ce,ge,Re,je,De,Ae,W,U,re,J,q=(e[11]/1e3).toFixed(3)+"",le,ee,x,C,S,z,Y,Ie=(e[10]/1e3).toFixed(3)+"",lt,qe,Ye,ze,He,Ne=e[8]===1?"OPERATE":"STANDBY",We,Ze,Le,Qe,Be,Ve,Xe;return{c(){n=a("div"),s=a("div"),o=a("h2"),o.textContent="Tuner Genius XL",r=v(),i=a("div"),f=a("span"),c=y(e[12]),m=v(),d=a("span"),w=v(),u=a("div"),_=a("div"),k=a("div"),M=a("div"),g=a("span"),g.textContent="Power",h=v(),p=a("span"),b=y(T),A=y(" W"),X=v(),R=a("div"),N=a("div"),P=a("div"),se=a("div"),me=v(),Z=a("div"),Q=a("div"),$=y(oe),ie=v(),j=a("div"),j.textContent="SWR",V=v(),O=a("div"),F=a("div"),H=a("div"),L=y(e[7]),ve=v(),Pe=a("div"),Pe.textContent="C1",be=v(),fe=a("div"),ye=a("div"),Me=y(e[6]),ue=v(),Oe=a("div"),Oe.textContent="L",ae=v(),G=a("div"),Ce=a("div"),ge=y(e[5]),Re=v(),je=a("div"),je.textContent="C2",De=v(),Ae=a("div"),W=a("div"),U=a("div"),U.textContent="Freq A",re=v(),J=a("div"),le=y(q),ee=a("span"),ee.textContent="MHz",x=v(),C=a("div"),S=a("div"),S.textContent="Freq B",z=v(),Y=a("div"),lt=y(Ie),qe=a("span"),qe.textContent="MHz",Ye=v(),ze=a("div"),He=a("button"),We=y(Ne),Ze=v(),Le=a("button"),Le.textContent="BYPASS",Qe=v(),Be=a("button"),Be.innerHTML=`<span class="tune-icon svelte-j68xon">⚡</span>
|
|
AUTO TUNE`,t(o,"class","svelte-j68xon"),t(f,"class","tuning-badge svelte-j68xon"),E(f,"tuning",e[12]==="TUNING"),t(d,"class","status-dot svelte-j68xon"),E(d,"disconnected",!e[4]),t(i,"class","header-right svelte-j68xon"),t(s,"class","card-header svelte-j68xon"),t(g,"class","power-label-inline svelte-j68xon"),t(p,"class","power-value-inline svelte-j68xon"),t(M,"class","power-header svelte-j68xon"),t(se,"class","power-bar-glow svelte-j68xon"),t(P,"class","power-bar-fill svelte-j68xon"),K(P,"width",e[2]+"%"),t(N,"class","power-bar-bg svelte-j68xon"),t(R,"class","power-bar-container svelte-j68xon"),t(k,"class","power-section svelte-j68xon"),t(Q,"class","swr-value-compact svelte-j68xon"),t(j,"class","swr-label-compact svelte-j68xon"),t(Z,"class","swr-circle-compact svelte-j68xon"),K(Z,"--swr-color",e[3]),t(_,"class","power-swr-row svelte-j68xon"),t(H,"class","cap-value svelte-j68xon"),t(Pe,"class","cap-label svelte-j68xon"),t(F,"class","cap-item svelte-j68xon"),t(ye,"class","cap-value svelte-j68xon"),t(Oe,"class","cap-label svelte-j68xon"),t(fe,"class","cap-item svelte-j68xon"),t(Ce,"class","cap-value svelte-j68xon"),t(je,"class","cap-label svelte-j68xon"),t(G,"class","cap-item svelte-j68xon"),t(O,"class","capacitors svelte-j68xon"),t(U,"class","freq-label svelte-j68xon"),t(ee,"class","freq-unit svelte-j68xon"),t(J,"class","freq-value svelte-j68xon"),t(W,"class","freq-item svelte-j68xon"),t(S,"class","freq-label svelte-j68xon"),t(qe,"class","freq-unit svelte-j68xon"),t(Y,"class","freq-value svelte-j68xon"),t(C,"class","freq-item svelte-j68xon"),t(Ae,"class","freq-display svelte-j68xon"),t(He,"class","control-btn operate svelte-j68xon"),E(He,"active",e[8]===1),t(Le,"class","control-btn bypass svelte-j68xon"),E(Le,"active",e[9]),t(ze,"class","controls svelte-j68xon"),t(Be,"class","tune-btn svelte-j68xon"),t(u,"class","metrics svelte-j68xon"),t(n,"class","card svelte-j68xon")},m(ce,he){ne(ce,n,he),l(n,s),l(s,o),l(s,r),l(s,i),l(i,f),l(f,c),l(i,m),l(i,d),l(n,w),l(n,u),l(u,_),l(_,k),l(k,M),l(M,g),l(M,h),l(M,p),l(p,b),l(p,A),l(k,X),l(k,R),l(R,N),l(N,P),l(P,se),l(_,me),l(_,Z),l(Z,Q),l(Q,$),l(Z,ie),l(Z,j),l(u,V),l(u,O),l(O,F),l(F,H),l(H,L),l(F,ve),l(F,Pe),l(O,be),l(O,fe),l(fe,ye),l(ye,Me),l(fe,ue),l(fe,Oe),l(O,ae),l(O,G),l(G,Ce),l(Ce,ge),l(G,Re),l(G,je),l(u,De),l(u,Ae),l(Ae,W),l(W,U),l(W,re),l(W,J),l(J,le),l(J,ee),l(Ae,x),l(Ae,C),l(C,S),l(C,z),l(C,Y),l(Y,lt),l(Y,qe),l(u,Ye),l(u,ze),l(ze,He),l(He,We),l(ze,Ze),l(ze,Le),l(u,Qe),l(u,Be),Ve||(Xe=[Te(He,"click",e[17]),Te(Le,"click",e[18]),Te(Be,"click",e[13])],Ve=!0)},p(ce,[he]){he&4096&&D(c,ce[12]),he&4096&&E(f,"tuning",ce[12]==="TUNING"),he&16&&E(d,"disconnected",!ce[4]),he&1&&T!==(T=ce[0].toFixed(0)+"")&&D(b,T),he&4&&K(P,"width",ce[2]+"%"),he&2&&oe!==(oe=ce[1].toFixed(2)+"")&&D($,oe),he&8&&K(Z,"--swr-color",ce[3]),he&128&&D(L,ce[7]),he&64&&D(Me,ce[6]),he&32&&D(ge,ce[5]),he&2048&&q!==(q=(ce[11]/1e3).toFixed(3)+"")&&D(le,q),he&1024&&Ie!==(Ie=(ce[10]/1e3).toFixed(3)+"")&&D(lt,Ie),he&256&&Ne!==(Ne=ce[8]===1?"OPERATE":"STANDBY")&&D(We,Ne),he&256&&E(He,"active",ce[8]===1),he&512&&E(Le,"active",ce[9])},i:Se,o:Se,d(ce){ce&&te(n),Ve=!1,tt(Xe)}}}function en(e,n,s){let o,r,i,f,c,m,d,w,u,_,k,M,g,{status:h}=n;async function p(){try{await Fe.tuner.autoTune()}catch(R){console.error("Failed to tune:",R)}}async function T(R){try{await Fe.tuner.setBypass(R)}catch(N){console.error("Failed to set bypass:",N)}}async function b(R){try{await Fe.tuner.setOperate(R)}catch(N){console.error("Failed to set operate:",N)}}const A=()=>b(d===1?0:1),X=()=>T(m?0:1);return e.$$set=R=>{"status"in R&&s(16,h=R.status)},e.$$.update=()=>{e.$$.dirty&65536&&s(0,o=(h==null?void 0:h.power_forward)||0),e.$$.dirty&65536&&s(1,r=(h==null?void 0:h.swr)||1),e.$$.dirty&65536&&s(12,i=(h==null?void 0:h.tuning_status)||"READY"),e.$$.dirty&65536&&s(11,f=(h==null?void 0:h.frequency_a)||0),e.$$.dirty&65536&&s(10,c=(h==null?void 0:h.frequency_b)||0),e.$$.dirty&65536&&s(9,m=(h==null?void 0:h.bypass)||!1),e.$$.dirty&65536&&s(8,d=(h==null?void 0:h.state)||0),e.$$.dirty&65536&&s(7,w=(h==null?void 0:h.c1)||0),e.$$.dirty&65536&&s(6,u=(h==null?void 0:h.l)||0),e.$$.dirty&65536&&s(5,_=(h==null?void 0:h.c2)||0),e.$$.dirty&65536&&s(4,k=(h==null?void 0:h.connected)||!1),e.$$.dirty&2&&s(3,M=r<1.5?"#4caf50":r<2?"#ffc107":r<3?"#ff9800":"#f44336"),e.$$.dirty&1&&s(2,g=Math.min(o/2e3*100,100))},[o,r,g,M,k,_,u,w,d,m,c,f,i,p,T,b,h,A,X]}class tn extends pt{constructor(n){super(),ht(this,n,en,$l,rt,{status:16})}}function cl(e,n,s){const o=e.slice();o[14]=n[s];const r=o[1].tx&&o[1].tx_ant===o[14].number;o[15]=r;const i=o[0].tx&&o[0].tx_ant===o[14].number;o[16]=i;const f=!o[1].tx&&o[1].rx_ant===o[14].number;o[17]=f;const c=!o[0].tx&&o[0].rx_ant===o[14].number;o[18]=c;const m=o[15]||o[16];o[19]=m;const d=o[17]||o[15];o[20]=d;const w=o[18]||o[16];return o[21]=w,o}function dl(e){let n,s,o=e[14].name+"",r,i,f,c,m,d,w,u,_;function k(){return e[11](e[14])}function M(){return e[12](e[14])}return{c(){n=a("div"),s=a("div"),r=y(o),i=v(),f=a("div"),c=a("button"),c.textContent="A",m=v(),d=a("button"),d.textContent="B",w=v(),t(s,"class","antenna-name svelte-vlabwb"),t(c,"class","port-btn svelte-vlabwb"),E(c,"active",e[20]),t(d,"class","port-btn svelte-vlabwb"),E(d,"active",e[21]),t(f,"class","antenna-ports svelte-vlabwb"),t(n,"class","antenna-card svelte-vlabwb"),E(n,"tx",e[19]),E(n,"active-a",e[20]),E(n,"active-b",e[21])},m(g,h){ne(g,n,h),l(n,s),l(s,r),l(n,i),l(n,f),l(f,c),l(f,m),l(f,d),l(n,w),u||(_=[Te(c,"click",k),Te(d,"click",M)],u=!0)},p(g,h){e=g,h&16&&o!==(o=e[14].name+"")&&D(r,o),h&18&&E(c,"active",e[20]),h&17&&E(d,"active",e[21]),h&19&&E(n,"tx",e[19]),h&18&&E(n,"active-a",e[20]),h&17&&E(n,"active-b",e[21])},d(g){g&&te(n),u=!1,tt(_)}}}function ln(e){let n,s,o,r,i,f,c,m,d,w,u=(e[1].source||"FLEX")+"",_,k,M,g,h=(e[0].source||"FLEX")+"",p,T,b,A,X,R,N,P,se,me,Z,Q,oe,$,ie,j,V=it(e[4]),O=[];for(let F=0;F<V.length;F+=1)O[F]=dl(cl(e,V,F));return{c(){n=a("div"),s=a("div"),o=a("h2"),o.textContent="Antenna Genius",r=v(),i=a("span"),f=v(),c=a("div"),m=a("div"),d=a("div"),w=a("div"),_=y(u),k=v(),M=a("div"),g=a("div"),p=y(h),T=v(),b=a("div"),A=a("div"),X=a("div"),R=y(e[3]),N=v(),P=a("div"),se=a("div"),me=y(e[2]),Z=v(),Q=a("div");for(let F=0;F<O.length;F+=1)O[F].c();oe=v(),$=a("button"),$.innerHTML=`<span class="reboot-icon svelte-vlabwb">🔄</span>
|
|
REBOOT`,t(o,"class","svelte-vlabwb"),t(i,"class","status-dot svelte-vlabwb"),E(i,"disconnected",!e[5]),t(s,"class","card-header svelte-vlabwb"),t(w,"class","source-label svelte-vlabwb"),t(d,"class","source-item svelte-vlabwb"),t(g,"class","source-label svelte-vlabwb"),t(M,"class","source-item svelte-vlabwb"),t(m,"class","sources svelte-vlabwb"),t(X,"class","band-value svelte-vlabwb"),t(A,"class","band-item svelte-vlabwb"),t(se,"class","band-value svelte-vlabwb"),t(P,"class","band-item svelte-vlabwb"),t(b,"class","bands svelte-vlabwb"),t(Q,"class","antennas svelte-vlabwb"),t($,"class","reboot-btn svelte-vlabwb"),t(c,"class","metrics svelte-vlabwb"),t(n,"class","card svelte-vlabwb")},m(F,H){ne(F,n,H),l(n,s),l(s,o),l(s,r),l(s,i),l(n,f),l(n,c),l(c,m),l(m,d),l(d,w),l(w,_),l(m,k),l(m,M),l(M,g),l(g,p),l(c,T),l(c,b),l(b,A),l(A,X),l(X,R),l(b,N),l(b,P),l(P,se),l(se,me),l(c,Z),l(c,Q);for(let L=0;L<O.length;L+=1)O[L]&&O[L].m(Q,null);l(c,oe),l(c,$),ie||(j=Te($,"click",e[7]),ie=!0)},p(F,[H]){if(H&32&&E(i,"disconnected",!F[5]),H&2&&u!==(u=(F[1].source||"FLEX")+"")&&D(_,u),H&1&&h!==(h=(F[0].source||"FLEX")+"")&&D(p,h),H&8&&D(R,F[3]),H&4&&D(me,F[2]),H&83){V=it(F[4]);let L;for(L=0;L<V.length;L+=1){const ve=cl(F,V,L);O[L]?O[L].p(ve,H):(O[L]=dl(ve),O[L].c(),O[L].m(Q,null))}for(;L<O.length;L+=1)O[L].d(1);O.length=V.length}},i:Se,o:Se,d(F){F&&te(n),It(O,F),ie=!1,j()}}}function nn(e,n,s){let o,r,i,f,c,m,{status:d}=n;const w={0:"160M",1:"80M",2:"60M",3:"40M",4:"30M",5:"20M",6:"17M",7:"15M",8:"12M",9:"10M",10:"6M",11:"4M",12:"2M",13:"1.25M",14:"70CM",15:"GEN"};async function u(p,T){try{p===1&&r.rx_ant===T||p===2&&i.rx_ant===T?(console.log(`Deselecting antenna ${T} from port ${p}`),await Fe.antenna.deselectAntenna(p,T)):(console.log(`Selecting antenna ${T} on port ${p}`),await Fe.antenna.selectAntenna(p,T))}catch(b){console.error("Failed to select/deselect antenna:",b)}}let _=!1,k=!1;async function M(){if(confirm("Are you sure you want to reboot the Antenna Genius?"))try{await Fe.antenna.reboot(),console.log("Antenna Genius reboot command sent")}catch(p){console.error("Failed to reboot:",p)}}const g=p=>u(1,p.number),h=p=>u(2,p.number);return e.$$set=p=>{"status"in p&&s(8,d=p.status)},e.$$.update=()=>{e.$$.dirty&256&&s(5,o=(d==null?void 0:d.connected)||!1),e.$$.dirty&256&&s(1,r=(d==null?void 0:d.port_a)||{}),e.$$.dirty&256&&s(0,i=(d==null?void 0:d.port_b)||{}),e.$$.dirty&256&&s(4,f=(d==null?void 0:d.antennas)||[]),e.$$.dirty&2&&s(3,c=w[r.band]||"None"),e.$$.dirty&1&&s(2,m=w[i.band]||"None"),e.$$.dirty&1795&&d&&(r.tx!==_||i.tx!==k)&&(console.log("AntennaGenius TX state changed:",{portA_tx:r.tx,portB_tx:i.tx,portA_tx_ant:r.tx_ant,portB_tx_ant:i.tx_ant}),s(9,_=r.tx),s(10,k=i.tx))},[i,r,m,c,f,o,u,M,d,_,k,g,h]}class sn extends pt{constructor(n){super(),ht(this,n,nn,ln,rt,{status:8})}}function fl(e,n,s){const o=e.slice();o[14]=n[s];const r=150+125*Math.sin(o[14]*Math.PI/180);o[15]=r;const i=150-125*Math.cos(o[14]*Math.PI/180);return o[16]=i,o}function ul(e){let n,s,o,r;return{c(){n=a("span"),s=y("→ "),o=y(e[0]),r=y("°"),t(n,"class","target-indicator svelte-t9qx7t")},m(i,f){ne(i,n,f),l(n,s),l(n,o),l(n,r)},p(i,f){f&1&&D(o,i[0])},d(i){i&&te(n)}}}function vl(e){let n,s,o,r,i;return{c(){n=I("g"),s=I("line"),o=I("g"),r=I("polygon"),t(s,"x1","0"),t(s,"y1","0"),t(s,"x2","0"),t(s,"y2","-125"),t(s,"stroke","rgba(255, 255, 255, 0.3)"),t(s,"stroke-width","2"),t(s,"stroke-dasharray","5,5"),t(s,"opacity","0.6"),t(r,"points","0,-8 -5,5 5,5"),t(r,"fill","rgba(255, 255, 255, 0.4)"),t(r,"stroke","rgba(255, 255, 255, 0.5)"),t(r,"stroke-width","1"),t(o,"transform","translate(0, -125)"),t(n,"transform",i="rotate("+e[3]+")")},m(f,c){ne(f,n,c),l(n,s),l(n,o),l(o,r)},p(f,c){c&8&&i!==(i="rotate("+f[3]+")")&&t(n,"transform",i)},d(f){f&&te(n)}}}function hl(e){let n,s,o,r,i;return{c(){n=I("path"),s=I("line"),o=I("line"),r=I("g"),i=I("polygon"),t(n,"d","M 0,0 L "+-Math.sin(15*Math.PI/180)*130+","+-Math.cos(15*Math.PI/180)*130+` \r
|
|
A 130,130 0 0,1 `+Math.sin(15*Math.PI/180)*130+","+-Math.cos(15*Math.PI/180)*130+" Z"),t(n,"fill","url(#beamGradient)"),t(n,"opacity","0.85"),t(s,"x1","0"),t(s,"y1","0"),t(s,"x2",-Math.sin(15*Math.PI/180)*130),t(s,"y2",-Math.cos(15*Math.PI/180)*130),t(s,"stroke","#4fc3f7"),t(s,"stroke-width","2"),t(s,"opacity","0.9"),t(o,"x1","0"),t(o,"y1","0"),t(o,"x2",Math.sin(15*Math.PI/180)*130),t(o,"y2",-Math.cos(15*Math.PI/180)*130),t(o,"stroke","#4fc3f7"),t(o,"stroke-width","2"),t(o,"opacity","0.9"),t(i,"points","0,-20 -8,5 0,0 8,5"),t(i,"fill","#4fc3f7"),t(i,"stroke","#0288d1"),t(i,"stroke-width","2"),K(i,"filter","drop-shadow(0 0 10px rgba(79, 195, 247, 1))"),t(r,"transform","translate(0, -110)")},m(f,c){ne(f,n,c),ne(f,s,c),ne(f,o,c),ne(f,r,c),l(r,i)},p:Se,d(f){f&&(te(n),te(s),te(o),te(r))}}}function pl(e){let n,s,o,r,i;return{c(){n=I("path"),s=I("line"),o=I("line"),r=I("g"),i=I("polygon"),t(n,"d","M 0,0 L "+-Math.sin(15*Math.PI/180)*130+","+Math.cos(15*Math.PI/180)*130+` \r
|
|
A 130,130 0 0,0 `+Math.sin(15*Math.PI/180)*130+","+Math.cos(15*Math.PI/180)*130+" Z"),t(n,"fill","url(#beamGradient)"),t(n,"opacity","0.85"),t(s,"x1","0"),t(s,"y1","0"),t(s,"x2",-Math.sin(15*Math.PI/180)*130),t(s,"y2",Math.cos(15*Math.PI/180)*130),t(s,"stroke","#4fc3f7"),t(s,"stroke-width","2"),t(s,"opacity","0.9"),t(o,"x1","0"),t(o,"y1","0"),t(o,"x2",Math.sin(15*Math.PI/180)*130),t(o,"y2",Math.cos(15*Math.PI/180)*130),t(o,"stroke","#4fc3f7"),t(o,"stroke-width","2"),t(o,"opacity","0.9"),t(i,"points","0,20 -8,-5 0,0 8,-5"),t(i,"fill","#4fc3f7"),t(i,"stroke","#0288d1"),t(i,"stroke-width","2"),K(i,"filter","drop-shadow(0 0 10px rgba(79, 195, 247, 1))"),t(r,"transform","translate(0, 110)")},m(f,c){ne(f,n,c),ne(f,s,c),ne(f,o,c),ne(f,r,c),l(r,i)},p:Se,d(f){f&&(te(n),te(s),te(o),te(r))}}}function ml(e){let n,s,o,r,i,f,c,m,d,w;return{c(){n=I("path"),s=I("path"),o=I("line"),r=I("line"),i=I("line"),f=I("line"),c=I("g"),m=I("polygon"),d=I("g"),w=I("polygon"),t(n,"d","M 0,0 L "+-Math.sin(15*Math.PI/180)*130+","+-Math.cos(15*Math.PI/180)*130+` \r
|
|
A 130,130 0 0,1 `+Math.sin(15*Math.PI/180)*130+","+-Math.cos(15*Math.PI/180)*130+" Z"),t(n,"fill","url(#beamGradient)"),t(n,"opacity","0.7"),t(s,"d","M 0,0 L "+-Math.sin(15*Math.PI/180)*130+","+Math.cos(15*Math.PI/180)*130+` \r
|
|
A 130,130 0 0,0 `+Math.sin(15*Math.PI/180)*130+","+Math.cos(15*Math.PI/180)*130+" Z"),t(s,"fill","url(#beamGradient)"),t(s,"opacity","0.7"),t(o,"x1","0"),t(o,"y1","0"),t(o,"x2",-Math.sin(15*Math.PI/180)*130),t(o,"y2",-Math.cos(15*Math.PI/180)*130),t(o,"stroke","#4fc3f7"),t(o,"stroke-width","2"),t(o,"opacity","0.8"),t(r,"x1","0"),t(r,"y1","0"),t(r,"x2",Math.sin(15*Math.PI/180)*130),t(r,"y2",-Math.cos(15*Math.PI/180)*130),t(r,"stroke","#4fc3f7"),t(r,"stroke-width","2"),t(r,"opacity","0.8"),t(i,"x1","0"),t(i,"y1","0"),t(i,"x2",-Math.sin(15*Math.PI/180)*130),t(i,"y2",Math.cos(15*Math.PI/180)*130),t(i,"stroke","#4fc3f7"),t(i,"stroke-width","2"),t(i,"opacity","0.8"),t(f,"x1","0"),t(f,"y1","0"),t(f,"x2",Math.sin(15*Math.PI/180)*130),t(f,"y2",Math.cos(15*Math.PI/180)*130),t(f,"stroke","#4fc3f7"),t(f,"stroke-width","2"),t(f,"opacity","0.8"),t(m,"points","0,-20 -8,5 0,0 8,5"),t(m,"fill","#4fc3f7"),t(m,"stroke","#0288d1"),t(m,"stroke-width","2"),K(m,"filter","drop-shadow(0 0 10px rgba(79, 195, 247, 1))"),t(c,"transform","translate(0, -110)"),t(w,"points","0,20 -8,-5 0,0 8,-5"),t(w,"fill","#4fc3f7"),t(w,"stroke","#0288d1"),t(w,"stroke-width","2"),K(w,"filter","drop-shadow(0 0 10px rgba(79, 195, 247, 1))"),t(d,"transform","translate(0, 110)")},m(u,_){ne(u,n,_),ne(u,s,_),ne(u,o,_),ne(u,r,_),ne(u,i,_),ne(u,f,_),ne(u,c,_),l(c,m),ne(u,d,_),l(d,w)},p:Se,d(u){u&&(te(n),te(s),te(o),te(r),te(i),te(f),te(c),te(d))}}}function bl(e){let n,s,o,r,i,f;return{c(){n=I("g"),s=I("line"),o=I("g"),r=I("polygon"),i=I("animate"),t(s,"x1","0"),t(s,"y1","0"),t(s,"x2","0"),t(s,"y2","-120"),t(s,"stroke","#ffc107"),t(s,"stroke-width","3"),t(s,"stroke-dasharray","8,4"),t(s,"opacity","0.9"),t(i,"attributeName","opacity"),t(i,"values","0.8;1;0.8"),t(i,"dur","1s"),t(i,"repeatCount","indefinite"),t(r,"points","0,-15 -10,10 0,5 10,10"),t(r,"fill","#ffc107"),t(r,"stroke","#ff9800"),t(r,"stroke-width","2"),K(r,"filter","drop-shadow(0 0 10px rgba(255, 193, 7, 0.8))"),t(o,"transform","translate(0, -120)"),t(n,"transform",f="rotate("+e[0]+")")},m(c,m){ne(c,n,m),l(n,s),l(n,o),l(o,r),l(r,i)},p(c,m){m&1&&f!==(f="rotate("+c[0]+")")&&t(n,"transform",f)},d(c){c&&te(n)}}}function gl(e){let n,s,o;return{c(){n=I("text"),s=y(e[14]),o=y("°"),t(n,"x",e[15]),t(n,"y",e[16]),t(n,"text-anchor","middle"),t(n,"dominant-baseline","middle"),t(n,"class","degree-label svelte-t9qx7t")},m(r,i){ne(r,n,i),l(n,s),l(n,o)},p:Se,d(r){r&&te(n)}}}function wl(e){let n;return{c(){n=a("div"),n.innerHTML='<div class="legend-item svelte-t9qx7t"><svg width="30" height="20" viewBox="0 0 30 20"><line x1="5" y1="10" x2="25" y2="10" stroke="rgba(255,255,255,0.3)" stroke-width="2" stroke-dasharray="3,3"></line></svg> <span>Physical antenna</span></div> <div class="legend-item svelte-t9qx7t"><svg width="30" height="20" viewBox="0 0 30 20"><line x1="5" y1="10" x2="25" y2="10" stroke="#4fc3f7" stroke-width="2"></line></svg> <span>Radiation pattern</span></div>',t(n,"class","map-legend svelte-t9qx7t")},m(s,o){ne(s,n,o)},d(s){s&&te(n)}}}function on(e){let n,s,o,r,i,f,c,m,d,w,u,_,k,M,g,h,p,T,b,A,X,R,N,P,se,me,Z,Q,oe,$,ie,j,V,O,F,H,L,ve,Pe,be,fe,ye,Me,ue,Oe,ae,G,Ce,ge,Re,je,De,Ae,W=e[1]&&ul(e),U=(e[4]===1||e[4]===2)&&vl(e),re=e[4]===0&&hl(),J=e[4]===1&&pl(),q=e[4]===2&&ml(),le=e[1]&&bl(e),ee=it([45,135,225,315]),x=[];for(let S=0;S<4;S+=1)x[S]=gl(fl(e,ee,S));let C=(e[4]===1||e[4]===2)&&wl();return{c(){n=a("div"),s=a("div"),o=a("h2"),o.textContent="Rotator Genius",r=v(),i=a("span"),f=v(),c=a("div"),m=a("div"),d=a("div"),w=a("div"),w.textContent="CURRENT HEADING",u=v(),_=a("div"),k=y(e[3]),M=y(`°\r
|
|
`),W&&W.c(),g=v(),h=a("div"),p=a("button"),p.textContent="↺",T=v(),b=a("button"),b.textContent="■",A=v(),X=a("button"),X.textContent="↻",R=v(),N=a("div"),P=I("svg"),se=I("defs"),me=I("radialGradient"),Z=I("stop"),Q=I("stop"),oe=I("circle"),$=I("circle"),ie=I("circle"),j=I("circle"),V=I("g"),U&&U.c(),O=I("g"),re&&re.c(),F=nl(),J&&J.c(),H=nl(),q&&q.c(),le&&le.c(),ve=I("circle"),Pe=I("animate"),be=I("circle"),fe=I("animate"),ye=I("animate"),Me=I("text"),ue=y("N"),Oe=I("text"),ae=y("E"),G=I("text"),Ce=y("S"),ge=I("text"),Re=y("W");for(let S=0;S<4;S+=1)x[S].c();je=v(),C&&C.c(),t(o,"class","svelte-t9qx7t"),t(i,"class","status-dot svelte-t9qx7t"),E(i,"disconnected",!e[2]),t(s,"class","card-header svelte-t9qx7t"),t(w,"class","heading-label svelte-t9qx7t"),t(_,"class","heading-value svelte-t9qx7t"),t(d,"class","heading-display-compact svelte-t9qx7t"),t(p,"class","btn-mini ccw svelte-t9qx7t"),t(p,"title","Rotate Counter-Clockwise"),t(b,"class","btn-mini stop svelte-t9qx7t"),t(b,"title","Stop Rotation"),t(X,"class","btn-mini cw svelte-t9qx7t"),t(X,"title","Rotate Clockwise"),t(h,"class","controls-compact svelte-t9qx7t"),t(m,"class","heading-controls-row svelte-t9qx7t"),t(Z,"offset","0%"),K(Z,"stop-color","rgba(79, 195, 247, 0.7)"),K(Z,"stop-opacity","1"),t(Q,"offset","100%"),K(Q,"stop-color","rgba(79, 195, 247, 0)"),K(Q,"stop-opacity","0"),t(me,"id","beamGradient"),t(oe,"cx","150"),t(oe,"cy","150"),t(oe,"r","140"),t(oe,"fill","rgba(30, 64, 175, 0.15)"),t(oe,"stroke","rgba(79, 195, 247, 0.4)"),t(oe,"stroke-width","2"),t($,"cx","150"),t($,"cy","150"),t($,"r","105"),t($,"fill","none"),t($,"stroke","rgba(79,195,247,0.2)"),t($,"stroke-width","1"),t($,"stroke-dasharray","3,3"),t(ie,"cx","150"),t(ie,"cy","150"),t(ie,"r","70"),t(ie,"fill","none"),t(ie,"stroke","rgba(79,195,247,0.2)"),t(ie,"stroke-width","1"),t(ie,"stroke-dasharray","3,3"),t(j,"cx","150"),t(j,"cy","150"),t(j,"r","35"),t(j,"fill","none"),t(j,"stroke","rgba(79,195,247,0.2)"),t(j,"stroke-width","1"),t(j,"stroke-dasharray","3,3"),t(O,"transform",L="rotate("+e[3]+")"),t(Pe,"attributeName","r"),t(Pe,"values","5;7;5"),t(Pe,"dur","2s"),t(Pe,"repeatCount","indefinite"),t(ve,"cx","0"),t(ve,"cy","0"),t(ve,"r","5"),t(ve,"fill","#f44336"),t(ve,"stroke","#fff"),t(ve,"stroke-width","2"),t(fe,"attributeName","r"),t(fe,"values","10;16;10"),t(fe,"dur","2s"),t(fe,"repeatCount","indefinite"),t(ye,"attributeName","opacity"),t(ye,"values","0.5;0;0.5"),t(ye,"dur","2s"),t(ye,"repeatCount","indefinite"),t(be,"cx","0"),t(be,"cy","0"),t(be,"r","10"),t(be,"fill","none"),t(be,"stroke","#f44336"),t(be,"stroke-width","1.5"),t(be,"opacity","0.5"),t(V,"transform","translate(150, 150)"),t(Me,"x","150"),t(Me,"y","20"),t(Me,"text-anchor","middle"),t(Me,"class","cardinal svelte-t9qx7t"),t(Oe,"x","280"),t(Oe,"y","155"),t(Oe,"text-anchor","middle"),t(Oe,"class","cardinal svelte-t9qx7t"),t(G,"x","150"),t(G,"y","285"),t(G,"text-anchor","middle"),t(G,"class","cardinal svelte-t9qx7t"),t(ge,"x","20"),t(ge,"y","155"),t(ge,"text-anchor","middle"),t(ge,"class","cardinal svelte-t9qx7t"),t(P,"viewBox","0 0 300 300"),t(P,"class","map-svg clickable-compass svelte-t9qx7t"),t(P,"role","button"),t(P,"tabindex","0"),t(P,"aria-label","Click to rotate antenna to direction"),t(N,"class","map-container svelte-t9qx7t"),t(c,"class","metrics svelte-t9qx7t"),t(n,"class","card svelte-t9qx7t")},m(S,z){ne(S,n,z),l(n,s),l(s,o),l(s,r),l(s,i),l(n,f),l(n,c),l(c,m),l(m,d),l(d,w),l(d,u),l(d,_),l(_,k),l(_,M),W&&W.m(_,null),l(m,g),l(m,h),l(h,p),l(h,T),l(h,b),l(h,A),l(h,X),l(c,R),l(c,N),l(N,P),l(P,se),l(se,me),l(me,Z),l(me,Q),l(P,oe),l(P,$),l(P,ie),l(P,j),l(P,V),U&&U.m(V,null),l(V,O),re&&re.m(O,null),l(O,F),J&&J.m(O,null),l(O,H),q&&q.m(O,null),le&&le.m(V,null),l(V,ve),l(ve,Pe),l(V,be),l(be,fe),l(be,ye),l(P,Me),l(Me,ue),l(P,Oe),l(Oe,ae),l(P,G),l(G,Ce),l(P,ge),l(ge,Re);for(let Y=0;Y<4;Y+=1)x[Y]&&x[Y].m(P,null);l(c,je),C&&C.m(c,null),De||(Ae=[Te(p,"click",e[6]),Te(b,"click",e[7]),Te(X,"click",e[5]),Te(P,"click",e[8]),Te(P,"keydown",e[12])],De=!0)},p(S,[z]){if(z&4&&E(i,"disconnected",!S[2]),z&8&&D(k,S[3]),S[1]?W?W.p(S,z):(W=ul(S),W.c(),W.m(_,null)):W&&(W.d(1),W=null),S[4]===1||S[4]===2?U?U.p(S,z):(U=vl(S),U.c(),U.m(V,O)):U&&(U.d(1),U=null),S[4]===0?re?re.p(S,z):(re=hl(),re.c(),re.m(O,F)):re&&(re.d(1),re=null),S[4]===1?J?J.p(S,z):(J=pl(),J.c(),J.m(O,H)):J&&(J.d(1),J=null),S[4]===2?q?q.p(S,z):(q=ml(),q.c(),q.m(O,null)):q&&(q.d(1),q=null),z&8&&L!==(L="rotate("+S[3]+")")&&t(O,"transform",L),S[1]?le?le.p(S,z):(le=bl(S),le.c(),le.m(V,ve)):le&&(le.d(1),le=null),z&0){ee=it([45,135,225,315]);let Y;for(Y=0;Y<4;Y+=1){const Ie=fl(S,ee,Y);x[Y]?x[Y].p(Ie,z):(x[Y]=gl(Ie),x[Y].c(),x[Y].m(P,null))}for(;Y<4;Y+=1)x[Y].d(1)}S[4]===1||S[4]===2?C||(C=wl(),C.c(),C.m(c,null)):C&&(C.d(1),C=null)},i:Se,o:Se,d(S){S&&te(n),W&&W.d(),U&&U.d(),re&&re.d(),J&&J.d(),q&&q.d(),le&&le.d(),It(x,S),C&&C.d(),De=!1,tt(Ae)}}}function an(e,n,s){let o,r,{status:i}=n,{ultrabeam:f=null}=n,c=null,m=!1,d=0,w=!1;async function u(){if(!(d<0||d>359))try{s(1,w=!0);const p=(d-10+360)%360;await Fe.rotator.setHeading(p)}catch(p){console.error("Failed to set heading:",p),s(1,w=!1)}}async function _(){try{await Fe.rotator.rotateCW()}catch(p){console.error("Failed to rotate CW:",p)}}async function k(){try{await Fe.rotator.rotateCCW()}catch(p){console.error("Failed to rotate CCW:",p)}}async function M(){try{await Fe.rotator.stop()}catch(p){console.error("Failed to stop:",p)}}function g(p){const b=p.currentTarget.getBoundingClientRect(),A=b.width/2,X=b.height/2,R=p.clientX-b.left-A,N=p.clientY-b.top-X;let P=Math.atan2(R,-N)*(180/Math.PI);P<0&&(P+=360);const se=Math.round(P/5)*5;s(0,d=se),u()}const h=p=>p.key==="Enter"&&g(p);return e.$$set=p=>{"status"in p&&s(9,i=p.status),"ultrabeam"in p&&s(10,f=p.ultrabeam)},e.$$.update=()=>{if(e.$$.dirty&1024&&s(4,o=(f==null?void 0:f.direction)??0),e.$$.dirty&2560&&(i==null?void 0:i.heading)!==void 0&&(i==null?void 0:i.heading)!==null){const p=i.heading;console.log(`RotatorGenius heading update: ${c} -> ${p}`),c===null?(s(11,c=p),console.log(` ✓ First load, set to ${c}°`)):p===0&&c>10&&c<350?console.log(` ✗ IGNORED glitch jump from ${c}° to 0°`):(s(11,c=p),console.log(` ✓ Updated to ${c}°`))}if(e.$$.dirty&2048&&s(3,r=c!==null?c:0),e.$$.dirty&512&&s(2,m=(i==null?void 0:i.connected)||!1),e.$$.dirty&2051&&w&&c!==null){const p=Math.abs(c-d);Math.min(p,360-p)<5&&s(1,w=!1)}},[d,w,m,r,o,_,k,M,g,i,f,c,h]}class rn extends pt{constructor(n){super(),ht(this,n,an,on,rt,{status:9,ultrabeam:10})}}function _l(e,n,s){const o=e.slice();return o[35]=n[s],o}function kl(e){let n,s=e[3]==="READY"?"🔓 TX OK":e[3]==="NOT_READY"?"🔒 TX Block":e[3]==="PTT_REQUESTED"?"⏳ PTT":e[3]==="TRANSMITTING"?"📡 TX":"❓",o;return{c(){n=a("div"),o=y(s),t(n,"class","interlock-badge svelte-1rkc0uw"),K(n,"border-color",e[9]),K(n,"color",e[9])},m(r,i){ne(r,n,i),l(n,o)},p(r,i){i[0]&8&&s!==(s=r[3]==="READY"?"🔓 TX OK":r[3]==="NOT_READY"?"🔒 TX Block":r[3]==="PTT_REQUESTED"?"⏳ PTT":r[3]==="TRANSMITTING"?"📡 TX":"❓")&&D(o,s),i[0]&512&&K(n,"border-color",r[9]),i[0]&512&&K(n,"color",r[9])},d(r){r&&te(n)}}}function yl(e){let n,s=e[35].label+"",o;return{c(){n=a("option"),o=y(s),n.__value=e[35].value,Pt(n,n.__value)},m(r,i){ne(r,n,i),l(n,o)},p:Se,d(r){r&&te(n)}}}function Ml(e){let n,s,o,r,i,f,c,m,d,w=e[7].toFixed(0)+"",u,_;return{c(){n=a("div"),s=a("h3"),s.textContent="Motors Moving...",o=v(),r=a("div"),i=a("div"),f=v(),c=a("div"),m=y(e[0]),d=y(" / 60 ("),u=y(w),_=y("%)"),t(s,"class","svelte-1rkc0uw"),t(i,"class","progress-fill svelte-1rkc0uw"),K(i,"width",e[7]+"%"),t(r,"class","progress-bar svelte-1rkc0uw"),t(c,"class","progress-text svelte-1rkc0uw"),t(n,"class","progress-section svelte-1rkc0uw")},m(k,M){ne(k,n,M),l(n,s),l(n,o),l(n,r),l(r,i),l(n,f),l(n,c),l(c,m),l(c,d),l(c,u),l(c,_)},p(k,M){M[0]&128&&K(i,"width",k[7]+"%"),M[0]&1&&D(m,k[0]),M[0]&128&&w!==(w=k[7].toFixed(0)+"")&&D(u,w)},d(k){k&&te(n)}}}function cn(e){let n,s,o,r,i,f,c,m,d,w,u,_,k,M,g=(e[1]/1e3).toFixed(3)+"",h,p,T,b,A,X,R,N,P,se,me,Z,Q,oe=e[13][e[2]]+"",$,ie,j,V,O,F,H,L,ve,Pe,be,fe,ye,Me,ue,Oe,ae,G,Ce,ge,Re,je,De,Ae,W,U,re,J,q=e[10]&&e[3]&&kl(e),le=it(e[14]),ee=[];for(let C=0;C<le.length;C+=1)ee[C]=yl(_l(e,le,C));let x=e[11]>0&&Ml(e);return{c(){n=a("div"),s=a("div"),o=a("h2"),o.textContent="Ultrabeam VL2.3",r=v(),i=a("div"),q&&q.c(),f=v(),c=a("span"),m=v(),d=a("div"),w=a("div"),u=a("div"),_=a("div"),_.textContent="Frequency",k=v(),M=a("div"),h=y(g),p=y(" MHz"),T=v(),b=a("div"),A=a("div"),A.textContent="Band",X=v(),R=a("div"),N=y(e[8]),P=v(),se=a("div"),me=a("div"),me.textContent="Direction",Z=v(),Q=a("div"),$=y(oe),ie=v(),j=a("div"),V=a("h3"),V.textContent="Auto Tracking",O=v(),F=a("div"),H=a("label"),L=a("input"),ve=v(),Pe=a("span"),Pe.textContent="Enable Auto-Track from Tuner",be=v(),fe=a("div"),ye=a("label"),ye.textContent="Threshold:",Me=v(),ue=a("select");for(let C=0;C<ee.length;C+=1)ee[C].c();Oe=v(),ae=a("div"),G=a("button"),G.textContent="Normal",Ce=v(),ge=a("button"),ge.textContent="180°",Re=v(),je=a("button"),je.textContent="Bi-Dir",De=v(),x&&x.c(),Ae=v(),W=a("div"),U=a("button"),U.innerHTML=`<span class="icon">↓</span>
|
|
Retract Elements`,t(o,"class","svelte-1rkc0uw"),t(c,"class","status-dot svelte-1rkc0uw"),E(c,"disconnected",!e[12]),t(i,"class","header-right svelte-1rkc0uw"),t(s,"class","card-header svelte-1rkc0uw"),t(_,"class","status-label svelte-1rkc0uw"),t(M,"class","status-value freq svelte-1rkc0uw"),t(u,"class","status-item svelte-1rkc0uw"),t(A,"class","status-label svelte-1rkc0uw"),t(R,"class","status-value band svelte-1rkc0uw"),t(b,"class","status-item svelte-1rkc0uw"),t(me,"class","status-label svelte-1rkc0uw"),t(Q,"class","status-value direction svelte-1rkc0uw"),t(se,"class","status-item svelte-1rkc0uw"),t(w,"class","status-grid svelte-1rkc0uw"),t(V,"class","svelte-1rkc0uw"),t(L,"type","checkbox"),t(L,"class","svelte-1rkc0uw"),t(H,"class","toggle-label svelte-1rkc0uw"),t(ye,"for","threshold-select"),t(ye,"class","svelte-1rkc0uw"),t(ue,"id","threshold-select"),e[5]===void 0&&At(()=>e[23].call(ue)),t(fe,"class","threshold-group svelte-1rkc0uw"),t(F,"class","auto-track-controls svelte-1rkc0uw"),t(G,"class","dir-btn svelte-1rkc0uw"),E(G,"active",e[6]===0),t(ge,"class","dir-btn svelte-1rkc0uw"),E(ge,"active",e[6]===1),t(je,"class","dir-btn svelte-1rkc0uw"),E(je,"active",e[6]===2),t(ae,"class","direction-buttons svelte-1rkc0uw"),t(j,"class","control-section compact svelte-1rkc0uw"),t(U,"class","btn-danger"),t(W,"class","actions svelte-1rkc0uw"),t(d,"class","metrics svelte-1rkc0uw"),t(n,"class","card svelte-1rkc0uw")},m(C,S){ne(C,n,S),l(n,s),l(s,o),l(s,r),l(s,i),q&&q.m(i,null),l(i,f),l(i,c),l(n,m),l(n,d),l(d,w),l(w,u),l(u,_),l(u,k),l(u,M),l(M,h),l(M,p),l(w,T),l(w,b),l(b,A),l(b,X),l(b,R),l(R,N),l(w,P),l(w,se),l(se,me),l(se,Z),l(se,Q),l(Q,$),l(d,ie),l(d,j),l(j,V),l(j,O),l(j,F),l(F,H),l(H,L),L.checked=e[4],l(H,ve),l(H,Pe),l(F,be),l(F,fe),l(fe,ye),l(fe,Me),l(fe,ue);for(let z=0;z<ee.length;z+=1)ee[z]&&ee[z].m(ue,null);Ft(ue,e[5],!0),l(j,Oe),l(j,ae),l(ae,G),l(ae,Ce),l(ae,ge),l(ae,Re),l(ae,je),l(d,De),x&&x.m(d,null),l(d,Ae),l(d,W),l(W,U),re||(J=[Te(L,"change",e[22]),Te(L,"change",e[16]),Te(ue,"change",e[23]),Te(ue,"change",e[16]),Te(G,"click",e[24]),Te(ge,"click",e[25]),Te(je,"click",e[26]),Te(U,"click",e[17])],re=!0)},p(C,S){if(C[10]&&C[3]?q?q.p(C,S):(q=kl(C),q.c(),q.m(i,f)):q&&(q.d(1),q=null),S[0]&4096&&E(c,"disconnected",!C[12]),S[0]&2&&g!==(g=(C[1]/1e3).toFixed(3)+"")&&D(h,g),S[0]&256&&D(N,C[8]),S[0]&4&&oe!==(oe=C[13][C[2]]+"")&&D($,oe),S[0]&16&&(L.checked=C[4]),S[0]&16384){le=it(C[14]);let z;for(z=0;z<le.length;z+=1){const Y=_l(C,le,z);ee[z]?ee[z].p(Y,S):(ee[z]=yl(Y),ee[z].c(),ee[z].m(ue,null))}for(;z<ee.length;z+=1)ee[z].d(1);ee.length=le.length}S[0]&16416&&Ft(ue,C[5]),S[0]&64&&E(G,"active",C[6]===0),S[0]&64&&E(ge,"active",C[6]===1),S[0]&64&&E(je,"active",C[6]===2),C[11]>0?x?x.p(C,S):(x=Ml(C),x.c(),x.m(d,Ae)):x&&(x.d(1),x=null)},i:Se,o:Se,d(C){C&&te(n),q&&q.d(),It(ee,C),x&&x.d(),re=!1,tt(J)}}}function dn(e){switch(e){case"READY":return"#4caf50";case"NOT_READY":return"#f44336";case"PTT_REQUESTED":return"#ffc107";case"TRANSMITTING":return"#ff9800";default:return"rgba(255, 255, 255, 0.3)"}}function fn(e,n,s){let o,r,i,f,c,m,d,w,u,_,k,M,{status:g}=n,{flexradio:h=null}=n;const p=["6M","10M","12M","15M","17M","20M","30M","40M"];function T(j,V){return V>=0&&V<=7?p[V]:j>=7e3&&j<=7300?"40M":j>=10100&&j<=10150?"30M":j>=14e3&&j<=14350?"20M":j>=18068&&j<=18168?"17M":j>=21e3&&j<=21450?"15M":j>=24890&&j<=24990?"12M":j>=28e3&&j<=29700?"10M":j>=5e4&&j<=54e3?"6M":"Unknown"}const b=["Normal","180°","Bi-Dir"],A=[{value:25,label:"25 kHz"},{value:50,label:"50 kHz"},{value:100,label:"100 kHz"}];let X=!0,R=25,N=0;async function P(){if(r!==0)try{await Fe.ultrabeam.setFrequency(r,N),await Fe.ultrabeam.setDirection(N)}catch(j){console.log("Direction change sent (may show code 30 if busy):",j)}}async function se(){try{await Fe.ultrabeam.setAutoTrack(X,R)}catch(j){console.error("Failed to update auto-track:",j)}}async function me(){if(confirm("Retract all antenna elements?"))try{await Fe.ultrabeam.retract()}catch(j){console.error("Failed to retract:",j)}}function Z(){X=this.checked,s(4,X)}function Q(){R=El(this),s(5,R),s(14,A)}const oe=()=>{s(6,N=0),P()},$=()=>{s(6,N=1),P()},ie=()=>{s(6,N=2),P()};return e.$$set=j=>{"status"in j&&s(18,g=j.status),"flexradio"in j&&s(19,h=j.flexradio)},e.$$.update=()=>{e.$$.dirty[0]&262144&&s(12,o=(g==null?void 0:g.connected)||!1),e.$$.dirty[0]&262144&&s(1,r=(g==null?void 0:g.frequency)||0),e.$$.dirty[0]&262144&&s(21,i=(g==null?void 0:g.band)||0),e.$$.dirty[0]&262144&&s(2,f=(g==null?void 0:g.direction)||0),e.$$.dirty[0]&262144&&s(11,c=(g==null?void 0:g.motors_moving)||0),e.$$.dirty[0]&262144&&s(20,m=(g==null?void 0:g.progress_total)||0),e.$$.dirty[0]&262144&&s(0,d=(g==null?void 0:g.progress_current)||0),e.$$.dirty[0]&262144&&g!=null&&g.element_lengths,e.$$.dirty[0]&262144&&g&&`${g.firmware_major}${g.firmware_minor}`,e.$$.dirty[0]&524288&&s(10,w=(h==null?void 0:h.connected)||!1),e.$$.dirty[0]&524288&&s(3,u=(h==null?void 0:h.interlock_state)||null),e.$$.dirty[0]&8&&s(9,_=dn(u)),e.$$.dirty[0]&2097154&&s(8,k=T(r,i)),e.$$.dirty[0]&4&&s(6,N=f),e.$$.dirty[0]&2097152,e.$$.dirty[0]&1048577&&s(7,M=m>0?d/60*100:0)},[d,r,f,u,X,R,N,M,k,_,w,c,o,b,A,P,se,me,g,h,m,i,Z,Q,oe,$,ie]}class un extends pt{constructor(n){super(),ht(this,n,fn,cn,rt,{status:18,flexradio:19},null,[-1,-1])}}function vn(e){var ot,at,mt,St,de,pe,zt,Ht,Wt;let n,s,o,r,i,f,c,m,d,w,u=e[1]?"Connected":"Disconnected",_,k,M,g,h,p,T,b=e[5].sfi+"",A,X,R,N,P,se=e[5].sunspots+"",me,Z,Q,oe,$,ie=e[5].a_index+"",j,V,O,F,H,L=e[5].k_index+"",ve,Pe,be,fe,ye,Me=e[5].geomag+"",ue,Oe,ae,G,Ce,ge,Re=e[4].wind_speed.toFixed(1)+"",je,De,Ae,W,U,re=e[4].wind_gust.toFixed(1)+"",J,q,le,ee,x,C=e[4].temp.toFixed(1)+"",S,z,Y,Ie,lt,qe=e[4].feels_like.toFixed(1)+"",Ye,ze,He,Ne,We,Ze=Tl(e[2])+"",Le,Qe,Be,Ve=e[2].toLocaleDateString()+"",Xe,ce,he,nt,xe,Ke,Mt,Ge,ct,$e,dt,Je,et,st,Ue,Tt,Ee,we;return Ke=new Vl({props:{status:(ot=e[0])==null?void 0:ot.webswitch}}),Ge=new Ql({props:{status:(at=e[0])==null?void 0:at.power_genius}}),$e=new tn({props:{status:(mt=e[0])==null?void 0:mt.tuner_genius,flexradio:(St=e[0])==null?void 0:St.flexradio}}),et=new sn({props:{status:(de=e[0])==null?void 0:de.antenna_genius}}),Ue=new un({props:{status:(pe=e[0])==null?void 0:pe.ultrabeam,flexradio:(zt=e[0])==null?void 0:zt.flexradio}}),Ee=new rn({props:{status:(Ht=e[0])==null?void 0:Ht.rotator_genius,ultrabeam:(Wt=e[0])==null?void 0:Wt.ultrabeam}}),{c(){n=a("div"),s=a("header"),o=a("div"),r=a("h1"),i=y(e[3]),f=y(" Shack"),c=v(),m=a("div"),d=a("span"),w=v(),_=y(u),k=v(),M=a("div"),g=a("div"),h=a("span"),p=y("SFI "),T=a("span"),A=y(b),X=v(),R=a("span"),N=y("Spots "),P=a("span"),me=y(se),Z=v(),Q=a("span"),oe=y("A "),$=a("span"),j=y(ie),V=v(),O=a("span"),F=y("K "),H=a("span"),ve=y(L),Pe=v(),be=a("span"),fe=y("G "),ye=a("span"),ue=y(Me),Oe=v(),ae=a("div"),G=a("div"),Ce=a("span"),ge=y("🌬️ "),je=y(Re),De=y("m/s"),Ae=v(),W=a("span"),U=y("💨 "),J=y(re),q=y("m/s"),le=v(),ee=a("span"),x=y("🌡️ "),S=y(C),z=y("°C"),Y=v(),Ie=a("span"),lt=y("→ "),Ye=y(qe),ze=y("°C"),He=v(),Ne=a("div"),We=a("span"),Le=y(Ze),Qe=v(),Be=a("span"),Xe=y(Ve),ce=v(),he=a("main"),nt=a("div"),xe=a("div"),wt(Ke.$$.fragment),Mt=v(),wt(Ge.$$.fragment),ct=v(),wt($e.$$.fragment),dt=v(),Je=a("div"),wt(et.$$.fragment),st=v(),wt(Ue.$$.fragment),Tt=v(),wt(Ee.$$.fragment),t(r,"class","svelte-18f70jl"),t(d,"class","status-indicator"),E(d,"status-online",e[1]),E(d,"status-offline",!e[1]),t(m,"class","connection-status svelte-18f70jl"),t(o,"class","header-left svelte-18f70jl"),t(T,"class","value svelte-18f70jl"),t(h,"class","solar-item svelte-18f70jl"),t(P,"class","value svelte-18f70jl"),t(R,"class","solar-item svelte-18f70jl"),t($,"class","value svelte-18f70jl"),t(Q,"class","solar-item svelte-18f70jl"),t(H,"class","value svelte-18f70jl"),t(O,"class","solar-item svelte-18f70jl"),t(ye,"class","value svelte-18f70jl"),t(be,"class","solar-item svelte-18f70jl"),t(g,"class","solar-info svelte-18f70jl"),t(M,"class","header-center svelte-18f70jl"),t(Ce,"title","Wind"),t(W,"title","Gust"),t(ee,"title","Temperature"),t(Ie,"title","Feels like"),t(G,"class","weather-info svelte-18f70jl"),t(We,"class","time svelte-18f70jl"),t(Be,"class","date svelte-18f70jl"),t(Ne,"class","clock svelte-18f70jl"),t(ae,"class","header-right svelte-18f70jl"),t(s,"class","svelte-18f70jl"),t(xe,"class","row svelte-18f70jl"),t(Je,"class","row svelte-18f70jl"),t(nt,"class","dashboard-grid svelte-18f70jl"),t(he,"class","svelte-18f70jl"),t(n,"class","app svelte-18f70jl")},m(B,_e){ne(B,n,_e),l(n,s),l(s,o),l(o,r),l(r,i),l(r,f),l(o,c),l(o,m),l(m,d),l(m,w),l(m,_),l(s,k),l(s,M),l(M,g),l(g,h),l(h,p),l(h,T),l(T,A),l(g,X),l(g,R),l(R,N),l(R,P),l(P,me),l(g,Z),l(g,Q),l(Q,oe),l(Q,$),l($,j),l(g,V),l(g,O),l(O,F),l(O,H),l(H,ve),l(g,Pe),l(g,be),l(be,fe),l(be,ye),l(ye,ue),l(s,Oe),l(s,ae),l(ae,G),l(G,Ce),l(Ce,ge),l(Ce,je),l(Ce,De),l(G,Ae),l(G,W),l(W,U),l(W,J),l(W,q),l(G,le),l(G,ee),l(ee,x),l(ee,S),l(ee,z),l(G,Y),l(G,Ie),l(Ie,lt),l(Ie,Ye),l(Ie,ze),l(ae,He),l(ae,Ne),l(Ne,We),l(We,Le),l(Ne,Qe),l(Ne,Be),l(Be,Xe),l(n,ce),l(n,he),l(he,nt),l(nt,xe),ut(Ke,xe,null),l(xe,Mt),ut(Ge,xe,null),l(xe,ct),ut($e,xe,null),l(nt,dt),l(nt,Je),ut(et,Je,null),l(Je,st),ut(Ue,Je,null),l(Je,Tt),ut(Ee,Je,null),we=!0},p(B,[_e]){var Jt,Yt,Vt,Kt,Zt,Qt,$t,el,tl;(!we||_e&8)&&D(i,B[3]),(!we||_e&2)&&E(d,"status-online",B[1]),(!we||_e&2)&&E(d,"status-offline",!B[1]),(!we||_e&2)&&u!==(u=B[1]?"Connected":"Disconnected")&&D(_,u),(!we||_e&32)&&b!==(b=B[5].sfi+"")&&D(A,b),(!we||_e&32)&&se!==(se=B[5].sunspots+"")&&D(me,se),(!we||_e&32)&&ie!==(ie=B[5].a_index+"")&&D(j,ie),(!we||_e&32)&&L!==(L=B[5].k_index+"")&&D(ve,L),(!we||_e&32)&&Me!==(Me=B[5].geomag+"")&&D(ue,Me),(!we||_e&16)&&Re!==(Re=B[4].wind_speed.toFixed(1)+"")&&D(je,Re),(!we||_e&16)&&re!==(re=B[4].wind_gust.toFixed(1)+"")&&D(J,re),(!we||_e&16)&&C!==(C=B[4].temp.toFixed(1)+"")&&D(S,C),(!we||_e&16)&&qe!==(qe=B[4].feels_like.toFixed(1)+"")&&D(Ye,qe),(!we||_e&4)&&Ze!==(Ze=Tl(B[2])+"")&&D(Le,Ze),(!we||_e&4)&&Ve!==(Ve=B[2].toLocaleDateString()+"")&&D(Xe,Ve);const Xt={};_e&1&&(Xt.status=(Jt=B[0])==null?void 0:Jt.webswitch),Ke.$set(Xt);const xt={};_e&1&&(xt.status=(Yt=B[0])==null?void 0:Yt.power_genius),Ge.$set(xt);const Nt={};_e&1&&(Nt.status=(Vt=B[0])==null?void 0:Vt.tuner_genius),_e&1&&(Nt.flexradio=(Kt=B[0])==null?void 0:Kt.flexradio),$e.$set(Nt);const Ut={};_e&1&&(Ut.status=(Zt=B[0])==null?void 0:Zt.antenna_genius),et.$set(Ut);const Et={};_e&1&&(Et.status=(Qt=B[0])==null?void 0:Qt.ultrabeam),_e&1&&(Et.flexradio=($t=B[0])==null?void 0:$t.flexradio),Ue.$set(Et);const Dt={};_e&1&&(Dt.status=(el=B[0])==null?void 0:el.rotator_genius),_e&1&&(Dt.ultrabeam=(tl=B[0])==null?void 0:tl.ultrabeam),Ee.$set(Dt)},i(B){we||(ft(Ke.$$.fragment,B),ft(Ge.$$.fragment,B),ft($e.$$.fragment,B),ft(et.$$.fragment,B),ft(Ue.$$.fragment,B),ft(Ee.$$.fragment,B),we=!0)},o(B){gt(Ke.$$.fragment,B),gt(Ge.$$.fragment,B),gt($e.$$.fragment,B),gt(et.$$.fragment,B),gt(Ue.$$.fragment,B),gt(Ee.$$.fragment,B),we=!1},d(B){B&&te(n),vt(Ke),vt(Ge),vt($e),vt(et),vt(Ue),vt(Ee)}}}function Tl(e){return e.toTimeString().slice(0,8)}function hn(e,n,s){let o,r,i=null,f=!1,c=new Date,m="F4BPO";const d=Ol.subscribe(u=>{s(0,i=u)}),w=Bt.subscribe(u=>{s(1,f=u)});return Dl(async()=>{al.connect();try{const _=await Fe.getConfig();_.callsign&&s(3,m=_.callsign)}catch(_){console.error("Failed to fetch config:",_)}const u=setInterval(()=>{s(2,c=new Date)},1e3);return()=>{clearInterval(u)}}),Rl(()=>{al.disconnect(),d(),w()}),e.$$.update=()=>{e.$$.dirty&1&&s(5,o=(i==null?void 0:i.solar)||{sfi:0,sunspots:0,a_index:0,k_index:0,geomag:"Unknown"}),e.$$.dirty&1&&s(4,r=(i==null?void 0:i.weather)||{wind_speed:0,wind_gust:0,temp:0,feels_like:0})},[i,f,c,m,r,o]}class pn extends pt{constructor(n){super(),ht(this,n,hn,vn,rt,{})}}new pn({target:document.getElementById("app")});
|