nmea-web-serial 1.1.2 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function Tn(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global}function In(){const e=Tn();if(e.__xstate__)return e.__xstate__}const wn=e=>{if(typeof window>"u")return;const t=In();t&&t.register(e)};class dt{constructor(t){this._process=t,this._active=!1,this._current=null,this._last=null}start(){this._active=!0,this.flush()}clear(){this._current&&(this._current.next=null,this._last=this._current)}enqueue(t){const n={value:t,next:null};if(this._current){this._last.next=n,this._last=n;return}this._current=n,this._last=n,this._active&&this.flush()}flush(){for(;this._current;){const t=this._current;this._process(t.value),this._current=t.next}this._last=null}}const zt=".",Pn="",Jt="",kn="#",Dn="*",Zt="xstate.init",En="xstate.error",we="xstate.stop";function An(e,t){return{type:`xstate.after.${e}.${t}`}}function Ke(e,t){return{type:`xstate.done.state.${e}`,output:t}}function Mn(e,t){return{type:`xstate.done.actor.${e}`,output:t,actorId:e}}function Yt(e,t){return{type:`xstate.error.actor.${e}`,error:t,actorId:e}}function Xt(e){return{type:Zt,input:e}}function j(e){setTimeout(()=>{throw e})}const On=typeof Symbol=="function"&&Symbol.observable||"@@observable";function Qt(e,t){const n=ft(e),r=ft(t);return typeof r=="string"?typeof n=="string"?r===n:!1:typeof n=="string"?n in r:Object.keys(n).every(i=>i in r?Qt(n[i],r[i]):!1)}function Qe(e){if(en(e))return e;const t=[];let n="";for(let r=0;r<e.length;r++){switch(e.charCodeAt(r)){case 92:n+=e[r+1],r++;continue;case 46:t.push(n),n="";continue}n+=e[r]}return t.push(n),t}function ft(e){if(ur(e))return e.value;if(typeof e!="string")return e;const t=Qe(e);return Fn(t)}function Fn(e){if(e.length===1)return e[0];const t={};let n=t;for(let r=0;r<e.length-1;r++)if(r===e.length-2)n[e[r]]=e[r+1];else{const i=n;n={},i[e[r]]=n}return t}function lt(e,t){const n={},r=Object.keys(e);for(let i=0;i<r.length;i++){const o=r[i];n[o]=t(e[o],o,e,i)}return n}function $t(e){return en(e)?e:[e]}function x(e){return e===void 0?[]:$t(e)}function ze(e,t,n,r){return typeof e=="function"?e({context:t,event:n,self:r}):e}function en(e){return Array.isArray(e)}function Cn(e){return e.type.startsWith("xstate.error.actor")}function Z(e){return $t(e).map(t=>typeof t>"u"||typeof t=="string"?{target:t}:t)}function tn(e){if(!(e===void 0||e===Pn))return x(e)}function Je(e,t,n){const r=typeof e=="object",i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}function ht(e,t){return`${t}.${e}`}function $e(e,t){const n=t.match(/^xstate\.invoke\.(\d+)\.(.*)/);if(!n)return e.implementations.actors[t];const[,r,i]=n,s=e.getStateNodeById(i).config.invoke;return(Array.isArray(s)?s[r]:s).src}function pt(e,t){return`${e.sessionId}.${t}`}let Nn=0;function Rn(e,t){const n=new Map,r=new Map,i=new WeakMap,o=new Set,s={},{clock:a,logger:c}=t,u={schedule:(d,p,g,y,I=Math.random().toString(36).slice(2))=>{const C={source:d,target:p,event:g,delay:y,id:I,startedAt:Date.now()},N=pt(d,I);l._snapshot._scheduledEvents[N]=C;const V=a.setTimeout(()=>{delete s[N],delete l._snapshot._scheduledEvents[N],l._relay(d,p,g)},y);s[N]=V},cancel:(d,p)=>{const g=pt(d,p),y=s[g];delete s[g],delete l._snapshot._scheduledEvents[g],y!==void 0&&a.clearTimeout(y)},cancelAll:d=>{for(const p in l._snapshot._scheduledEvents){const g=l._snapshot._scheduledEvents[p];g.source===d&&u.cancel(d,g.id)}}},f=d=>{if(!o.size)return;const p={...d,rootId:e.sessionId};o.forEach(g=>g.next?.(p))},l={_snapshot:{_scheduledEvents:(t?.snapshot&&t.snapshot.scheduler)??{}},_bookId:()=>`x:${Nn++}`,_register:(d,p)=>(n.set(d,p),d),_unregister:d=>{n.delete(d.sessionId);const p=i.get(d);p!==void 0&&(r.delete(p),i.delete(d))},get:d=>r.get(d),getAll:()=>Object.fromEntries(r.entries()),_set:(d,p)=>{const g=r.get(d);if(g&&g!==p)throw new Error(`Actor with system ID '${d}' already exists.`);r.set(d,p),i.set(p,d)},inspect:d=>{const p=Je(d);return o.add(p),{unsubscribe(){o.delete(p)}}},_sendInspectionEvent:f,_relay:(d,p,g)=>{l._sendInspectionEvent({type:"@xstate.event",sourceRef:d,actorRef:p,event:g}),p._send(g)},scheduler:u,getSnapshot:()=>({_scheduledEvents:{...l._snapshot._scheduledEvents}}),start:()=>{const d=l._snapshot._scheduledEvents;l._snapshot._scheduledEvents={};for(const p in d){const{source:g,target:y,event:I,delay:C,id:N}=d[p];u.schedule(g,y,I,C,N)}},_clock:a,_logger:c};return l}let He=!1;const et=1;let A=(function(e){return e[e.NotStarted=0]="NotStarted",e[e.Running=1]="Running",e[e.Stopped=2]="Stopped",e})({});const jn={clock:{setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e)},logger:console.log.bind(console),devTools:!1};class Gn{constructor(t,n){this.logic=t,this._snapshot=void 0,this.clock=void 0,this.options=void 0,this.id=void 0,this.mailbox=new dt(this._process.bind(this)),this.observers=new Set,this.eventListeners=new Map,this.logger=void 0,this._processingStatus=A.NotStarted,this._parent=void 0,this._syncSnapshot=void 0,this.ref=void 0,this._actorScope=void 0,this.systemId=void 0,this.sessionId=void 0,this.system=void 0,this._doneEvent=void 0,this.src=void 0,this._deferred=[];const r={...jn,...n},{clock:i,logger:o,parent:s,syncSnapshot:a,id:c,systemId:u,inspect:f}=r;this.system=s?s.system:Rn(this,{clock:i,logger:o}),f&&!s&&this.system.inspect(Je(f)),this.sessionId=this.system._bookId(),this.id=c??this.sessionId,this.logger=n?.logger??this.system._logger,this.clock=n?.clock??this.system._clock,this._parent=s,this._syncSnapshot=a,this.options=r,this.src=r.src??t,this.ref=this,this._actorScope={self:this,id:this.id,sessionId:this.sessionId,logger:this.logger,defer:l=>{this._deferred.push(l)},system:this.system,stopChild:l=>{if(l._parent!==this)throw new Error(`Cannot stop child actor ${l.id} of ${this.id} because it is not a child`);l._stop()},emit:l=>{const d=this.eventListeners.get(l.type),p=this.eventListeners.get("*");if(!d&&!p)return;const g=[...d?d.values():[],...p?p.values():[]];for(const y of g)try{y(l)}catch(I){j(I)}},actionExecutor:l=>{const d=()=>{if(this._actorScope.system._sendInspectionEvent({type:"@xstate.action",actorRef:this,action:{type:l.type,params:l.params}}),!l.exec)return;const p=He;try{He=!0,l.exec(l.info,l.params)}finally{He=p}};this._processingStatus===A.Running?d():this._deferred.push(d)}},this.send=this.send.bind(this),this.system._sendInspectionEvent({type:"@xstate.actor",actorRef:this}),u&&(this.systemId=u,this.system._set(u,this)),this._initState(n?.snapshot??n?.state),u&&this._snapshot.status!=="active"&&this.system._unregister(this)}_initState(t){try{this._snapshot=t?this.logic.restoreSnapshot?this.logic.restoreSnapshot(t,this._actorScope):t:this.logic.getInitialSnapshot(this._actorScope,this.options?.input)}catch(n){this._snapshot={status:"error",output:void 0,error:n}}}update(t,n){this._snapshot=t;let r;for(;r=this._deferred.shift();)try{r()}catch(i){this._deferred.length=0,this._snapshot={...t,status:"error",error:i}}switch(this._snapshot.status){case"active":for(const i of this.observers)try{i.next?.(t)}catch(o){j(o)}break;case"done":for(const i of this.observers)try{i.next?.(t)}catch(o){j(o)}this._stopProcedure(),this._complete(),this._doneEvent=Mn(this.id,this._snapshot.output),this._parent&&this.system._relay(this,this._parent,this._doneEvent);break;case"error":this._error(this._snapshot.error);break}this.system._sendInspectionEvent({type:"@xstate.snapshot",actorRef:this,event:n,snapshot:t})}subscribe(t,n,r){const i=Je(t,n,r);if(this._processingStatus!==A.Stopped)this.observers.add(i);else switch(this._snapshot.status){case"done":try{i.complete?.()}catch(o){j(o)}break;case"error":{const o=this._snapshot.error;if(!i.error)j(o);else try{i.error(o)}catch(s){j(s)}break}}return{unsubscribe:()=>{this.observers.delete(i)}}}on(t,n){let r=this.eventListeners.get(t);r||(r=new Set,this.eventListeners.set(t,r));const i=n.bind(void 0);return r.add(i),{unsubscribe:()=>{r.delete(i)}}}start(){if(this._processingStatus===A.Running)return this;this._syncSnapshot&&this.subscribe({next:r=>{r.status==="active"&&this.system._relay(this,this._parent,{type:`xstate.snapshot.${this.id}`,snapshot:r})},error:()=>{}}),this.system._register(this.sessionId,this),this.systemId&&this.system._set(this.systemId,this),this._processingStatus=A.Running;const t=Xt(this.options.input);switch(this.system._sendInspectionEvent({type:"@xstate.event",sourceRef:this._parent,actorRef:this,event:t}),this._snapshot.status){case"done":return this.update(this._snapshot,t),this;case"error":return this._error(this._snapshot.error),this}if(this._parent||this.system.start(),this.logic.start)try{this.logic.start(this._snapshot,this._actorScope)}catch(r){return this._snapshot={...this._snapshot,status:"error",error:r},this._error(r),this}return this.update(this._snapshot,t),this.options.devTools&&this.attachDevTools(),this.mailbox.start(),this}_process(t){let n,r;try{n=this.logic.transition(this._snapshot,t,this._actorScope)}catch(i){r={err:i}}if(r){const{err:i}=r;this._snapshot={...this._snapshot,status:"error",error:i},this._error(i);return}this.update(n,t),t.type===we&&(this._stopProcedure(),this._complete())}_stop(){return this._processingStatus===A.Stopped?this:(this.mailbox.clear(),this._processingStatus===A.NotStarted?(this._processingStatus=A.Stopped,this):(this.mailbox.enqueue({type:we}),this))}stop(){if(this._parent)throw new Error("A non-root actor cannot be stopped directly.");return this._stop()}_complete(){for(const t of this.observers)try{t.complete?.()}catch(n){j(n)}this.observers.clear()}_reportError(t){if(!this.observers.size){this._parent||j(t);return}let n=!1;for(const r of this.observers){const i=r.error;n||=!i;try{i?.(t)}catch(o){j(o)}}this.observers.clear(),n&&j(t)}_error(t){this._stopProcedure(),this._reportError(t),this._parent&&this.system._relay(this,this._parent,Yt(this.id,t))}_stopProcedure(){return this._processingStatus!==A.Running?this:(this.system.scheduler.cancelAll(this),this.mailbox.clear(),this.mailbox=new dt(this._process.bind(this)),this._processingStatus=A.Stopped,this.system._unregister(this),this)}_send(t){this._processingStatus!==A.Stopped&&this.mailbox.enqueue(t)}send(t){this.system._relay(void 0,this,t)}attachDevTools(){const{devTools:t}=this.options;t&&(typeof t=="function"?t:wn)(this)}toJSON(){return{xstate$$type:et,id:this.id}}getPersistedSnapshot(t){return this.logic.getPersistedSnapshot(this._snapshot,t)}[On](){return this}getSnapshot(){return this._snapshot}}function Pe(e,...[t]){return new Gn(e,t)}function Ln(e,t,n,r,{sendId:i}){const o=typeof i=="function"?i(n,r):i;return[t,{sendId:o},void 0]}function xn(e,t){e.defer(()=>{e.system.scheduler.cancel(e.self,t.sendId)})}function tt(e){function t(n,r){}return t.type="xstate.cancel",t.sendId=e,t.resolve=Ln,t.execute=xn,t}function qn(e,t,n,r,{id:i,systemId:o,src:s,input:a,syncSnapshot:c}){const u=typeof s=="string"?$e(t.machine,s):s,f=typeof i=="function"?i(n):i;let l,d;return u&&(d=typeof a=="function"?a({context:t.context,event:n.event,self:e.self}):a,l=Pe(u,{id:f,src:s,parent:e.self,syncSnapshot:c,systemId:o,input:d})),[U(t,{children:{...t.children,[f]:l}}),{id:i,systemId:o,actorRef:l,src:s,input:d},void 0]}function Wn(e,{actorRef:t}){t&&e.defer(()=>{t._processingStatus!==A.Stopped&&t.start()})}function nt(...[e,{id:t,systemId:n,input:r,syncSnapshot:i=!1}={}]){function o(s,a){}return o.type="xstate.spawnChild",o.id=t,o.systemId=n,o.src=e,o.input=r,o.syncSnapshot=i,o.resolve=qn,o.execute=Wn,o}function Bn(e,t,n,r,{actorRef:i}){const o=typeof i=="function"?i(n,r):i,s=typeof o=="string"?t.children[o]:o;let a=t.children;return s&&(a={...a},delete a[s.id]),[U(t,{children:a}),s,void 0]}function Hn(e,t){if(t){if(e.system._unregister(t),t._processingStatus!==A.Running){e.stopChild(t);return}e.defer(()=>{e.stopChild(t)})}}function Ce(e){function t(n,r){}return t.type="xstate.stopChild",t.actorRef=e,t.resolve=Bn,t.execute=Hn,t}function Ne(e,t,n,r){const{machine:i}=r,o=typeof e=="function",s=o?e:i.implementations.guards[typeof e=="string"?e:e.type];if(!o&&!s)throw new Error(`Guard '${typeof e=="string"?e:e.type}' is not implemented.'.`);if(typeof s!="function")return Ne(s,t,n,r);const a={context:t,event:n},c=o||typeof e=="string"?void 0:"params"in e?typeof e.params=="function"?e.params({context:t,event:n}):e.params:void 0;return"check"in s?s.check(r,a,s):s(a,c)}const rt=e=>e.type==="atomic"||e.type==="final";function X(e){return Object.values(e.states).filter(t=>t.type!=="history")}function ke(e,t){const n=[];if(t===e)return n;let r=e.parent;for(;r&&r!==t;)n.push(r),r=r.parent;return n}function Ae(e){const t=new Set(e),n=rn(t);for(const r of t)if(r.type==="compound"&&(!n.get(r)||!n.get(r).length))gt(r).forEach(i=>t.add(i));else if(r.type==="parallel"){for(const i of X(r))if(i.type!=="history"&&!t.has(i)){const o=gt(i);for(const s of o)t.add(s)}}for(const r of t){let i=r.parent;for(;i;)t.add(i),i=i.parent}return t}function nn(e,t){const n=t.get(e);if(!n)return{};if(e.type==="compound"){const i=n[0];if(i){if(rt(i))return i.key}else return{}}const r={};for(const i of n)r[i.key]=nn(i,t);return r}function rn(e){const t=new Map;for(const n of e)t.has(n)||t.set(n,[]),n.parent&&(t.has(n.parent)||t.set(n.parent,[]),t.get(n.parent).push(n));return t}function sn(e,t){const n=Ae(t);return nn(e,rn(n))}function st(e,t){return t.type==="compound"?X(t).some(n=>n.type==="final"&&e.has(n)):t.type==="parallel"?X(t).every(n=>st(e,n)):t.type==="final"}const Re=e=>e[0]===kn;function Un(e,t){return e.transitions.get(t)||[...e.transitions.keys()].filter(r=>{if(r===Dn)return!0;if(!r.endsWith(".*"))return!1;const i=r.split("."),o=t.split(".");for(let s=0;s<i.length;s++){const a=i[s],c=o[s];if(a==="*")return s===i.length-1;if(a!==c)return!1}return!0}).sort((r,i)=>i.length-r.length).flatMap(r=>e.transitions.get(r))}function Vn(e){const t=e.config.after;if(!t)return[];const n=i=>{const o=An(i,e.id),s=o.type;return e.entry.push(at(o,{id:s,delay:i})),e.exit.push(tt(s)),s};return Object.keys(t).flatMap(i=>{const o=t[i],s=typeof o=="string"?{target:o}:o,a=Number.isNaN(+i)?i:+i,c=n(a);return x(s).map(u=>({...u,event:c,delay:a}))}).map(i=>{const{delay:o}=i;return{...B(e,i.event,i),delay:o}})}function B(e,t,n){const r=tn(n.target),i=n.reenter??!1,o=Jn(e,r),s={...n,actions:x(n.actions),guard:n.guard,target:o,source:e,reenter:i,eventType:t,toJSON:()=>({...s,source:`#${e.id}`,target:o?o.map(a=>`#${a.id}`):void 0})};return s}function Kn(e){const t=new Map;if(e.config.on)for(const n of Object.keys(e.config.on)){if(n===Jt)throw new Error('Null events ("") cannot be specified as a transition key. Use `always: { ... }` instead.');const r=e.config.on[n];t.set(n,Z(r).map(i=>B(e,n,i)))}if(e.config.onDone){const n=`xstate.done.state.${e.id}`;t.set(n,Z(e.config.onDone).map(r=>B(e,n,r)))}for(const n of e.invoke){if(n.onDone){const r=`xstate.done.actor.${n.id}`;t.set(r,Z(n.onDone).map(i=>B(e,r,i)))}if(n.onError){const r=`xstate.error.actor.${n.id}`;t.set(r,Z(n.onError).map(i=>B(e,r,i)))}if(n.onSnapshot){const r=`xstate.snapshot.${n.id}`;t.set(r,Z(n.onSnapshot).map(i=>B(e,r,i)))}}for(const n of e.after){let r=t.get(n.eventType);r||(r=[],t.set(n.eventType,r)),r.push(n)}return t}function zn(e,t){const n=typeof t=="string"?e.states[t]:t?e.states[t.target]:void 0;if(!n&&t)throw new Error(`Initial state node "${t}" not found on parent state node #${e.id}`);const r={source:e,actions:!t||typeof t=="string"?[]:x(t.actions),eventType:null,reenter:!1,target:n?[n]:[],toJSON:()=>({...r,source:`#${e.id}`,target:n?[`#${n.id}`]:[]})};return r}function Jn(e,t){if(t!==void 0)return t.map(n=>{if(typeof n!="string")return n;if(Re(n))return e.machine.getStateNodeById(n);const r=n[0]===zt;if(r&&!e.parent)return Me(e,n.slice(1));const i=r?e.key+n:n;if(e.parent)try{return Me(e.parent,i)}catch(o){throw new Error(`Invalid transition definition for state node '${e.id}':
2
- ${o.message}`)}else throw new Error(`Invalid target: "${n}" is not a valid target from the root node. Did you mean ".${n}"?`)})}function on(e){const t=tn(e.config.target);return t?{target:t.map(n=>typeof n=="string"?Me(e.parent,n):n)}:e.parent.initial}function H(e){return e.type==="history"}function gt(e){const t=an(e);for(const n of t)for(const r of ke(n,e))t.add(r);return t}function an(e){const t=new Set;function n(r){if(!t.has(r)){if(t.add(r),r.type==="compound")n(r.initial.target[0]);else if(r.type==="parallel")for(const i of X(r))n(i)}}return n(e),t}function Q(e,t){if(Re(t))return e.machine.getStateNodeById(t);if(!e.states)throw new Error(`Unable to retrieve child state '${t}' from '${e.id}'; no child states exist.`);const n=e.states[t];if(!n)throw new Error(`Child state '${t}' does not exist on '${e.id}'`);return n}function Me(e,t){if(typeof t=="string"&&Re(t))try{return e.machine.getStateNodeById(t)}catch{}const n=Qe(t).slice();let r=e;for(;n.length;){const i=n.shift();if(!i.length)break;r=Q(r,i)}return r}function Oe(e,t){if(typeof t=="string"){const i=e.states[t];if(!i)throw new Error(`State '${t}' does not exist on '${e.id}'`);return[e,i]}const n=Object.keys(t),r=n.map(i=>Q(e,i)).filter(Boolean);return[e.machine.root,e].concat(r,n.reduce((i,o)=>{const s=Q(e,o);if(!s)return i;const a=Oe(s,t[o]);return i.concat(a)},[]))}function Zn(e,t,n,r){const o=Q(e,t).next(n,r);return!o||!o.length?e.next(n,r):o}function Yn(e,t,n,r){const i=Object.keys(t),o=Q(e,i[0]),s=it(o,t[i[0]],n,r);return!s||!s.length?e.next(n,r):s}function Xn(e,t,n,r){const i=[];for(const o of Object.keys(t)){const s=t[o];if(!s)continue;const a=Q(e,o),c=it(a,s,n,r);c&&i.push(...c)}return i.length?i:e.next(n,r)}function it(e,t,n,r){return typeof t=="string"?Zn(e,t,n,r):Object.keys(t).length===1?Yn(e,t,n,r):Xn(e,t,n,r)}function Qn(e){return Object.keys(e.states).map(t=>e.states[t]).filter(t=>t.type==="history")}function q(e,t){let n=e;for(;n.parent&&n.parent!==t;)n=n.parent;return n.parent===t}function $n(e,t){const n=new Set(e),r=new Set(t);for(const i of n)if(r.has(i))return!0;for(const i of r)if(n.has(i))return!0;return!1}function cn(e,t,n){const r=new Set;for(const i of e){let o=!1;const s=new Set;for(const a of r)if($n(Ze([i],t,n),Ze([a],t,n)))if(q(i.source,a.source))s.add(a);else{o=!0;break}if(!o){for(const a of s)r.delete(a);r.add(i)}}return Array.from(r)}function er(e){const[t,...n]=e;for(const r of ke(t,void 0))if(n.every(i=>q(i,r)))return r}function ot(e,t){if(!e.target)return[];const n=new Set;for(const r of e.target)if(H(r))if(t[r.id])for(const i of t[r.id])n.add(i);else for(const i of ot(on(r),t))n.add(i);else n.add(r);return[...n]}function un(e,t){const n=ot(e,t);if(!n)return;if(!e.reenter&&n.every(i=>i===e.source||q(i,e.source)))return e.source;const r=er(n.concat(e.source));if(r)return r;if(!e.reenter)return e.source.machine.root}function Ze(e,t,n){const r=new Set;for(const i of e)if(i.target?.length){const o=un(i,n);i.reenter&&i.source===o&&r.add(o);for(const s of t)q(s,o)&&r.add(s)}return[...r]}function tr(e,t){if(e.length!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}function Ye(e,t,n,r,i,o){if(!e.length)return t;const s=new Set(t._nodes);let a=t.historyValue;const c=cn(e,s,a);let u=t;i||([u,a]=ir(u,r,n,c,s,a,o,n.actionExecutor)),u=$(u,r,n,c.flatMap(l=>l.actions),o,void 0),u=rr(u,r,n,c,s,o,a,i);const f=[...s];u.status==="done"&&(u=$(u,r,n,f.sort((l,d)=>d.order-l.order).flatMap(l=>l.exit),o,void 0));try{return a===t.historyValue&&tr(t._nodes,s)?u:U(u,{_nodes:f,historyValue:a})}catch(l){throw l}}function nr(e,t,n,r,i){if(r.output===void 0)return;const o=Ke(i.id,i.output!==void 0&&i.parent?ze(i.output,e.context,t,n.self):void 0);return ze(r.output,e.context,o,n.self)}function rr(e,t,n,r,i,o,s,a){let c=e;const u=new Set,f=new Set;sr(r,s,f,u),a&&f.add(e.machine.root);const l=new Set;for(const d of[...u].sort((p,g)=>p.order-g.order)){i.add(d);const p=[];p.push(...d.entry);for(const g of d.invoke)p.push(nt(g.src,{...g,syncSnapshot:!!g.onSnapshot}));if(f.has(d)){const g=d.initial.actions;p.push(...g)}if(c=$(c,t,n,p,o,d.invoke.map(g=>g.id)),d.type==="final"){const g=d.parent;let y=g?.type==="parallel"?g:g?.parent,I=y||d;for(g?.type==="compound"&&o.push(Ke(g.id,d.output!==void 0?ze(d.output,c.context,t,n.self):void 0));y?.type==="parallel"&&!l.has(y)&&st(i,y);)l.add(y),o.push(Ke(y.id)),I=y,y=y.parent;if(y)continue;c=U(c,{status:"done",output:nr(c,t,n,c.machine.root,I)})}}return c}function sr(e,t,n,r){for(const i of e){const o=un(i,t);for(const a of i.target||[])!H(a)&&(i.source!==a||i.source!==o||i.reenter)&&(r.add(a),n.add(a)),Y(a,t,n,r);const s=ot(i,t);for(const a of s){const c=ke(a,o);o?.type==="parallel"&&c.push(o),dn(r,t,n,c,!i.source.parent&&i.reenter?void 0:o)}}}function Y(e,t,n,r){if(H(e))if(t[e.id]){const i=t[e.id];for(const o of i)r.add(o),Y(o,t,n,r);for(const o of i)Ue(o,e.parent,r,t,n)}else{const i=on(e);for(const o of i.target)r.add(o),i===e.parent?.initial&&n.add(e.parent),Y(o,t,n,r);for(const o of i.target)Ue(o,e.parent,r,t,n)}else if(e.type==="compound"){const[i]=e.initial.target;H(i)||(r.add(i),n.add(i)),Y(i,t,n,r),Ue(i,e,r,t,n)}else if(e.type==="parallel")for(const i of X(e).filter(o=>!H(o)))[...r].some(o=>q(o,i))||(H(i)||(r.add(i),n.add(i)),Y(i,t,n,r))}function dn(e,t,n,r,i){for(const o of r)if((!i||q(o,i))&&e.add(o),o.type==="parallel")for(const s of X(o).filter(a=>!H(a)))[...e].some(a=>q(a,s))||(e.add(s),Y(s,t,n,e))}function Ue(e,t,n,r,i){dn(n,r,i,ke(e,t))}function ir(e,t,n,r,i,o,s,a){let c=e;const u=Ze(r,i,o);u.sort((l,d)=>d.order-l.order);let f;for(const l of u)for(const d of Qn(l)){let p;d.history==="deep"?p=g=>rt(g)&&q(g,l):p=g=>g.parent===l,f??={...o},f[d.id]=Array.from(i).filter(p)}for(const l of u)c=$(c,t,n,[...l.exit,...l.invoke.map(d=>Ce(d.id))],s,void 0),i.delete(l);return[c,f||o]}function or(e,t){return e.implementations.actions[t]}function fn(e,t,n,r,i,o){const{machine:s}=e;let a=e;for(const c of r){const u=typeof c=="function",f=u?c:or(s,typeof c=="string"?c:c.type),l={context:a.context,event:t,self:n.self,system:n.system},d=u||typeof c=="string"?void 0:"params"in c?typeof c.params=="function"?c.params({context:a.context,event:t}):c.params:void 0;if(!f||!("resolve"in f)){n.actionExecutor({type:typeof c=="string"?c:typeof c=="object"?c.type:c.name||"(anonymous)",info:l,params:d,exec:f});continue}const p=f,[g,y,I]=p.resolve(n,a,l,d,f,i);a=g,"retryResolve"in p&&o?.push([p,y]),"execute"in p&&n.actionExecutor({type:p.type,info:l,params:y,exec:p.execute.bind(null,n,y)}),I&&(a=fn(a,t,n,I,i,o))}return a}function $(e,t,n,r,i,o){const s=o?[]:void 0,a=fn(e,t,n,r,{internalQueue:i,deferredActorIds:o},s);return s?.forEach(([c,u])=>{c.retryResolve(n,a,u)}),a}function Ve(e,t,n,r){let i=e;const o=[];function s(u,f,l){n.system._sendInspectionEvent({type:"@xstate.microstep",actorRef:n.self,event:f,snapshot:u,_transitions:l}),o.push(u)}if(t.type===we)return i=U(vt(i,t,n),{status:"stopped"}),s(i,t,[]),{snapshot:i,microstates:o};let a=t;if(a.type!==Zt){const u=a,f=Cn(u),l=mt(u,i);if(f&&!l.length)return i=U(e,{status:"error",error:u.error}),s(i,u,[]),{snapshot:i,microstates:o};i=Ye(l,e,n,a,!1,r),s(i,u,l)}let c=!0;for(;i.status==="active";){let u=c?ar(i,a):[];const f=u.length?i:void 0;if(!u.length){if(!r.length)break;a=r.shift(),u=mt(a,i)}i=Ye(u,i,n,a,!1,r),c=i!==f,s(i,a,u)}return i.status!=="active"&&vt(i,a,n),{snapshot:i,microstates:o}}function vt(e,t,n){return $(e,t,n,Object.values(e.children).map(r=>Ce(r)),[],void 0)}function mt(e,t){return t.machine.getTransitionData(t,e)}function ar(e,t){const n=new Set,r=e._nodes.filter(rt);for(const i of r)e:for(const o of[i].concat(ke(i,void 0)))if(o.always){for(const s of o.always)if(s.guard===void 0||Ne(s.guard,e.context,t,e)){n.add(s);break e}}return cn(Array.from(n),new Set(e._nodes),e.historyValue)}function cr(e,t){const n=Ae(Oe(e,t));return sn(e,[...n])}function ur(e){return!!e&&typeof e=="object"&&"machine"in e&&"value"in e}const dr=function(t){return Qt(t,this.value)},fr=function(t){return this.tags.has(t)},lr=function(t){const n=this.machine.getTransitionData(this,t);return!!n?.length&&n.some(r=>r.target!==void 0||r.actions.length)},hr=function(){const{_nodes:t,tags:n,machine:r,getMeta:i,toJSON:o,can:s,hasTag:a,matches:c,...u}=this;return{...u,tags:Array.from(n)}},pr=function(){return this._nodes.reduce((t,n)=>(n.meta!==void 0&&(t[n.id]=n.meta),t),{})};function Ee(e,t){return{status:e.status,output:e.output,error:e.error,machine:t,context:e.context,_nodes:e._nodes,value:sn(t.root,e._nodes),tags:new Set(e._nodes.flatMap(n=>n.tags)),children:e.children,historyValue:e.historyValue||{},matches:dr,hasTag:fr,can:lr,getMeta:pr,toJSON:hr}}function U(e,t={}){return Ee({...e,...t},e.machine)}function gr(e){if(typeof e!="object"||e===null)return{};const t={};for(const n in e){const r=e[n];Array.isArray(r)&&(t[n]=r.map(i=>({id:i.id})))}return t}function vr(e,t){const{_nodes:n,tags:r,machine:i,children:o,context:s,can:a,hasTag:c,matches:u,getMeta:f,toJSON:l,...d}=e,p={};for(const y in o){const I=o[y];p[y]={snapshot:I.getPersistedSnapshot(t),src:I.src,systemId:I.systemId,syncSnapshot:I._syncSnapshot}}return{...d,context:ln(s),children:p,historyValue:gr(d.historyValue)}}function ln(e){let t;for(const n in e){const r=e[n];if(r&&typeof r=="object")if("sessionId"in r&&"send"in r&&"ref"in r)t??=Array.isArray(e)?e.slice():{...e},t[n]={xstate$$type:et,id:r.id};else{const i=ln(r);i!==r&&(t??=Array.isArray(e)?e.slice():{...e},t[n]=i)}}return t??e}function mr(e,t,n,r,{event:i,id:o,delay:s},{internalQueue:a}){const c=t.machine.implementations.delays;if(typeof i=="string")throw new Error(`Only event objects may be used with raise; use raise({ type: "${i}" }) instead`);const u=typeof i=="function"?i(n,r):i;let f;if(typeof s=="string"){const l=c&&c[s];f=typeof l=="function"?l(n,r):l}else f=typeof s=="function"?s(n,r):s;return typeof f!="number"&&a.push(u),[t,{event:u,id:o,delay:f},void 0]}function yr(e,t){const{event:n,delay:r,id:i}=t;if(typeof r=="number"){e.defer(()=>{const o=e.self;e.system.scheduler.schedule(o,o,n,r,i)});return}}function at(e,t){function n(r,i){}return n.type="xstate.raise",n.event=e,n.id=t?.id,n.delay=t?.delay,n.resolve=mr,n.execute=yr,n}const yt=new WeakMap;function Sr(e){return{config:e,start:(n,r)=>{const{self:i,system:o,emit:s}=r,a={receivers:void 0,dispose:void 0};yt.set(i,a),a.dispose=e({input:n.input,system:o,self:i,sendBack:c=>{i.getSnapshot().status!=="stopped"&&i._parent&&o._relay(i,i._parent,c)},receive:c=>{a.receivers??=new Set,a.receivers.add(c)},emit:s})},transition:(n,r,i)=>{const o=yt.get(i.self);return r.type===we?(n={...n,status:"stopped",error:void 0},o.dispose?.(),n):(o.receivers?.forEach(s=>s(r)),n)},getInitialSnapshot:(n,r)=>({status:"active",output:void 0,error:void 0,input:r}),getPersistedSnapshot:n=>n,restoreSnapshot:n=>n}}const St="xstate.promise.resolve",_t="xstate.promise.reject",De=new WeakMap;function hn(e){return{config:e,transition:(n,r,i)=>{if(n.status!=="active")return n;switch(r.type){case St:{const o=r.data;return{...n,status:"done",output:o,input:void 0}}case _t:return{...n,status:"error",error:r.data,input:void 0};case we:return De.get(i.self)?.abort(),{...n,status:"stopped",input:void 0};default:return n}},start:(n,{self:r,system:i,emit:o})=>{if(n.status!=="active")return;const s=new AbortController;De.set(r,s),Promise.resolve(e({input:n.input,system:i,self:r,signal:s.signal,emit:o})).then(c=>{r.getSnapshot().status==="active"&&(De.delete(r),i._relay(r,r,{type:St,data:c}))},c=>{r.getSnapshot().status==="active"&&(De.delete(r),i._relay(r,r,{type:_t,data:c}))})},getInitialSnapshot:(n,r)=>({status:"active",output:void 0,error:void 0,input:r}),getPersistedSnapshot:n=>n,restoreSnapshot:n=>n}}function _r(e,{machine:t,context:n},r,i){const o=(s,a)=>{if(typeof s=="string"){const c=$e(t,s);if(!c)throw new Error(`Actor logic '${s}' not implemented in machine '${t.id}'`);const u=Pe(c,{id:a?.id,parent:e.self,syncSnapshot:a?.syncSnapshot,input:typeof a?.input=="function"?a.input({context:n,event:r,self:e.self}):a?.input,src:s,systemId:a?.systemId});return i[u.id]=u,u}else return Pe(s,{id:a?.id,parent:e.self,syncSnapshot:a?.syncSnapshot,input:a?.input,src:s,systemId:a?.systemId})};return(s,a)=>{const c=o(s,a);return i[c.id]=c,e.defer(()=>{c._processingStatus!==A.Stopped&&c.start()}),c}}function br(e,t,n,r,{assignment:i}){if(!t.context)throw new Error("Cannot assign to undefined `context`. Ensure that `context` is defined in the machine config.");const o={},s={context:t.context,event:n.event,spawn:_r(e,t,n.event,o),self:e.self,system:e.system};let a={};if(typeof i=="function")a=i(s,r);else for(const u of Object.keys(i)){const f=i[u];a[u]=typeof f=="function"?f(s,r):f}const c=Object.assign({},t.context,a);return[U(t,{context:c,children:Object.keys(o).length?{...t.children,...o}:t.children}),void 0,void 0]}function F(e){function t(n,r){}return t.type="xstate.assign",t.assignment=e,t.resolve=br,t}const bt=new WeakMap;function J(e,t,n){let r=bt.get(e);return r?t in r||(r[t]=n()):(r={[t]:n()},bt.set(e,r)),r[t]}const Tr={},te=e=>typeof e=="string"?{type:e}:typeof e=="function"?"resolve"in e?{type:e.type}:{type:e.name}:e;class Fe{constructor(t,n){if(this.config=t,this.key=void 0,this.id=void 0,this.type=void 0,this.path=void 0,this.states=void 0,this.history=void 0,this.entry=void 0,this.exit=void 0,this.parent=void 0,this.machine=void 0,this.meta=void 0,this.output=void 0,this.order=-1,this.description=void 0,this.tags=[],this.transitions=void 0,this.always=void 0,this.parent=n._parent,this.key=n._key,this.machine=n._machine,this.path=this.parent?this.parent.path.concat(this.key):[],this.id=this.config.id||[this.machine.id,...this.path].join(zt),this.type=this.config.type||(this.config.states&&Object.keys(this.config.states).length?"compound":this.config.history?"history":"atomic"),this.description=this.config.description,this.order=this.machine.idMap.size,this.machine.idMap.set(this.id,this),this.states=this.config.states?lt(this.config.states,(r,i)=>new Fe(r,{_parent:this,_key:i,_machine:this.machine})):Tr,this.type==="compound"&&!this.config.initial)throw new Error(`No initial state specified for compound state node "#${this.id}". Try adding { initial: "${Object.keys(this.states)[0]}" } to the state config.`);this.history=this.config.history===!0?"shallow":this.config.history||!1,this.entry=x(this.config.entry).slice(),this.exit=x(this.config.exit).slice(),this.meta=this.config.meta,this.output=this.type==="final"||!this.parent?this.config.output:void 0,this.tags=x(t.tags).slice()}_initialize(){this.transitions=Kn(this),this.config.always&&(this.always=Z(this.config.always).map(t=>B(this,Jt,t))),Object.keys(this.states).forEach(t=>{this.states[t]._initialize()})}get definition(){return{id:this.id,key:this.key,version:this.machine.version,type:this.type,initial:this.initial?{target:this.initial.target,source:this,actions:this.initial.actions.map(te),eventType:null,reenter:!1,toJSON:()=>({target:this.initial.target.map(t=>`#${t.id}`),source:`#${this.id}`,actions:this.initial.actions.map(te),eventType:null})}:void 0,history:this.history,states:lt(this.states,t=>t.definition),on:this.on,transitions:[...this.transitions.values()].flat().map(t=>({...t,actions:t.actions.map(te)})),entry:this.entry.map(te),exit:this.exit.map(te),meta:this.meta,order:this.order||-1,output:this.output,invoke:this.invoke,description:this.description,tags:this.tags}}toJSON(){return this.definition}get invoke(){return J(this,"invoke",()=>x(this.config.invoke).map((t,n)=>{const{src:r,systemId:i}=t,o=t.id??ht(this.id,n),s=typeof r=="string"?r:`xstate.invoke.${ht(this.id,n)}`;return{...t,src:s,id:o,systemId:i,toJSON(){const{onDone:a,onError:c,...u}=t;return{...u,type:"xstate.invoke",src:s,id:o}}}}))}get on(){return J(this,"on",()=>[...this.transitions].flatMap(([n,r])=>r.map(i=>[n,i])).reduce((n,[r,i])=>(n[r]=n[r]||[],n[r].push(i),n),{}))}get after(){return J(this,"delayedTransitions",()=>Vn(this))}get initial(){return J(this,"initial",()=>zn(this,this.config.initial))}next(t,n){const r=n.type,i=[];let o;const s=J(this,`candidates-${r}`,()=>Un(this,r));for(const a of s){const{guard:c}=a,u=t.context;let f=!1;try{f=!c||Ne(c,u,n,t)}catch(l){const d=typeof c=="string"?c:typeof c=="object"?c.type:void 0;throw new Error(`Unable to evaluate guard ${d?`'${d}' `:""}in transition for event '${r}' in state node '${this.id}':
3
- ${l.message}`)}if(f){i.push(...a.actions),o=a;break}}return o?[o]:void 0}get events(){return J(this,"events",()=>{const{states:t}=this,n=new Set(this.ownEvents);if(t)for(const r of Object.keys(t)){const i=t[r];if(i.states)for(const o of i.events)n.add(`${o}`)}return Array.from(n)})}get ownEvents(){const t=new Set([...this.transitions.keys()].filter(n=>this.transitions.get(n).some(r=>!(!r.target&&!r.actions.length&&!r.reenter))));return Array.from(t)}}const Ir="#";class ct{constructor(t,n){this.config=t,this.version=void 0,this.schemas=void 0,this.implementations=void 0,this.__xstatenode=!0,this.idMap=new Map,this.root=void 0,this.id=void 0,this.states=void 0,this.events=void 0,this.id=t.id||"(machine)",this.implementations={actors:n?.actors??{},actions:n?.actions??{},delays:n?.delays??{},guards:n?.guards??{}},this.version=this.config.version,this.schemas=this.config.schemas,this.transition=this.transition.bind(this),this.getInitialSnapshot=this.getInitialSnapshot.bind(this),this.getPersistedSnapshot=this.getPersistedSnapshot.bind(this),this.restoreSnapshot=this.restoreSnapshot.bind(this),this.start=this.start.bind(this),this.root=new Fe(t,{_key:this.id,_machine:this}),this.root._initialize(),this.states=this.root.states,this.events=this.root.events}provide(t){const{actions:n,guards:r,actors:i,delays:o}=this.implementations;return new ct(this.config,{actions:{...n,...t.actions},guards:{...r,...t.guards},actors:{...i,...t.actors},delays:{...o,...t.delays}})}resolveState(t){const n=cr(this.root,t.value),r=Ae(Oe(this.root,n));return Ee({_nodes:[...r],context:t.context||{},children:{},status:st(r,this.root)?"done":t.status||"active",output:t.output,error:t.error,historyValue:t.historyValue},this)}transition(t,n,r){return Ve(t,n,r,[]).snapshot}microstep(t,n,r){return Ve(t,n,r,[]).microstates}getTransitionData(t,n){return it(this.root,t.value,t,n)||[]}getPreInitialState(t,n,r){const{context:i}=this.config,o=Ee({context:typeof i!="function"&&i?i:{},_nodes:[this.root],children:{},status:"active"},this);return typeof i=="function"?$(o,n,t,[F(({spawn:a,event:c,self:u})=>i({spawn:a,input:c.input,self:u}))],r,void 0):o}getInitialSnapshot(t,n){const r=Xt(n),i=[],o=this.getPreInitialState(t,r,i),s=Ye([{target:[...an(this.root)],source:this.root,reenter:!0,actions:[],eventType:null,toJSON:null}],o,t,r,!0,i),{snapshot:a}=Ve(s,r,t,i);return a}start(t){Object.values(t.children).forEach(n=>{n.getSnapshot().status==="active"&&n.start()})}getStateNodeById(t){const n=Qe(t),r=n.slice(1),i=Re(n[0])?n[0].slice(Ir.length):n[0],o=this.idMap.get(i);if(!o)throw new Error(`Child state node '#${i}' does not exist on machine '${this.id}'`);return Me(o,r)}get definition(){return this.root.definition}toJSON(){return this.definition}getPersistedSnapshot(t,n){return vr(t,n)}restoreSnapshot(t,n){const r={},i=t.children;Object.keys(i).forEach(l=>{const d=i[l],p=d.snapshot,g=d.src,y=typeof g=="string"?$e(this,g):g;if(!y)return;const I=Pe(y,{id:l,parent:n.self,syncSnapshot:d.syncSnapshot,snapshot:p,src:g,systemId:d.systemId});r[l]=I});function o(l,d){if(d instanceof Fe)return d;try{return l.machine.getStateNodeById(d.id)}catch{}}function s(l,d){if(!d||typeof d!="object")return{};const p={};for(const g in d){const y=d[g];for(const I of y){const C=o(l,I);C&&(p[g]??=[],p[g].push(C))}}return p}const a=s(this.root,t.historyValue),c=Ee({...t,children:r,_nodes:Array.from(Ae(Oe(this.root,t.value))),historyValue:a},this),u=new Set;function f(l,d){if(!u.has(l)){u.add(l);for(const p in l){const g=l[p];if(g&&typeof g=="object"){if("xstate$$type"in g&&g.xstate$$type===et){l[p]=d[g.id];continue}f(g,d)}}}}return f(c.context,r),c}}function wr(e,t,n,r,{event:i}){const o=typeof i=="function"?i(n,r):i;return[t,{event:o},void 0]}function Pr(e,{event:t}){e.defer(()=>e.emit(t))}function pn(e){function t(n,r){}return t.type="xstate.emit",t.event=e,t.resolve=wr,t.execute=Pr,t}let Xe=(function(e){return e.Parent="#_parent",e.Internal="#_internal",e})({});function kr(e,t,n,r,{to:i,event:o,id:s,delay:a},c){const u=t.machine.implementations.delays;if(typeof o=="string")throw new Error(`Only event objects may be used with sendTo; use sendTo({ type: "${o}" }) instead`);const f=typeof o=="function"?o(n,r):o;let l;if(typeof a=="string"){const g=u&&u[a];l=typeof g=="function"?g(n,r):g}else l=typeof a=="function"?a(n,r):a;const d=typeof i=="function"?i(n,r):i;let p;if(typeof d=="string"){if(d===Xe.Parent?p=e.self._parent:d===Xe.Internal?p=e.self:d.startsWith("#_")?p=t.children[d.slice(2)]:p=c.deferredActorIds?.includes(d)?d:t.children[d],!p)throw new Error(`Unable to send event to actor '${d}' from machine '${t.machine.id}'.`)}else p=d||e.self;return[t,{to:p,targetId:typeof d=="string"?d:void 0,event:f,id:s,delay:l},void 0]}function Dr(e,t,n){typeof n.to=="string"&&(n.to=t.children[n.to])}function Er(e,t){e.defer(()=>{const{to:n,event:r,delay:i,id:o}=t;if(typeof i=="number"){e.system.scheduler.schedule(e.self,n,r,i,o);return}e.system._relay(e.self,n,r.type===En?Yt(e.self.id,r.data):r)})}function je(e,t,n){function r(i,o){}return r.type="xstate.sendTo",r.to=e,r.event=t,r.id=n?.id,r.delay=n?.delay,r.resolve=kr,r.retryResolve=Dr,r.execute=Er,r}function Ar(e,t){return je(Xe.Parent,e,t)}function Mr(e,t,n,r,{collect:i}){const o=[],s=function(c){o.push(c)};return s.assign=(...a)=>{o.push(F(...a))},s.cancel=(...a)=>{o.push(tt(...a))},s.raise=(...a)=>{o.push(at(...a))},s.sendTo=(...a)=>{o.push(je(...a))},s.sendParent=(...a)=>{o.push(Ar(...a))},s.spawnChild=(...a)=>{o.push(nt(...a))},s.stopChild=(...a)=>{o.push(Ce(...a))},s.emit=(...a)=>{o.push(pn(...a))},i({context:n.context,event:n.event,enqueue:s,check:a=>Ne(a,t.context,n.event,t),self:e.self,system:e.system},r),[t,void 0,o]}function Or(e){function t(n,r){}return t.type="xstate.enqueueActions",t.collect=e,t.resolve=Mr,t}function Fr(e,t,n,r,{value:i,label:o}){return[t,{value:typeof i=="function"?i(n,r):i,label:o},void 0]}function Cr({logger:e},{value:t,label:n}){n?e(n,t):e(t)}function Nr(e=({context:n,event:r})=>({context:n,event:r}),t){function n(r,i){}return n.type="xstate.log",n.value=e,n.label=t,n.resolve=Fr,n.execute=Cr,n}function Rr(e,t){return new ct(e,t)}function gn({schemas:e,actors:t,actions:n,guards:r,delays:i}){return{assign:F,sendTo:je,raise:at,log:Nr,cancel:tt,stopChild:Ce,enqueueActions:Or,emit:pn,spawnChild:nt,createStateConfig:o=>o,createAction:o=>o,createMachine:o=>Rr({...o,schemas:e},{actors:t,actions:n,guards:r,delays:i}),extend:o=>gn({schemas:e,actors:t,actions:{...n,...o.actions},guards:{...r,...o.guards},delays:{...i,...o.delays}})}}class vn{actor;subscription=null;options;constructor(t,n){this.options=n,this.actor=Pe(t),this.setupSubscriptions(),n?.enableLogging!==void 0&&this.setLogging(n.enableLogging),n?.baudRate!==void 0&&this.setBaudRate(n.baudRate),this.actor.start()}setupSubscriptions(){this.subscription=this.actor.subscribe(t=>{if(this.options?.onData&&t.context.data!==void 0&&this.options.onData(t.context.data),this.options?.onStateChange){const n=t.value==="connected";this.options.onStateChange(n)}this.options?.onError&&t.context.error&&this.options.onError(t.context.error)})}get data(){return this.actor.getSnapshot().context.data}get isConnected(){return this.actor.getSnapshot().value==="connected"}get isConnecting(){return this.actor.getSnapshot().value==="connecting"}get error(){return this.actor.getSnapshot().context.error}connect(){this.actor.send({type:"CONNECT"})}disconnect(){this.actor.send({type:"DISCONNECT"})}setLogging(t){this.actor.send({type:"SET_LOGGING",enabled:t})}setBaudRate(t){this.actor.send({type:"SET_BAUD_RATE",baudRate:t})}get machine(){return this.actor}dispose(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=null),this.actor.stop()}}var O={},ne={},T={},Tt;function P(){if(Tt)return T;Tt=1,Object.defineProperty(T,"__esModule",{value:!0});var e=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];function t(h){var v=h>>4&15,m=h>>0&15;return e[v]+e[m]}T.toHexString=t;function n(h,v,m){for(var S=typeof h=="string"?h:h.toFixed(0);S.length<v;)S=m+S;return S}T.padLeft=n;function r(h){var v=h.split("*"),m=v[0],S=v[1],D=i(m),M=parseInt(S,16);return D===M}T.validNmeaChecksum=r;function i(h){for(var v=h.charCodeAt(1),m=2;m<h.length;m+=1)v=v^h.charCodeAt(m);return v=v&255,v}T.computeNmeaChecksum=i;function o(h){return"*"+t(i(h))}T.createNmeaChecksumFooter=o;function s(h){return h+o(h)}T.appendChecksumFooter=s;function a(h,v){return h===void 0?"":h.toFixed(v)}T.encodeFixed=a;function c(h){if(h===void 0)return",";var v;h<0?(v="S",h=-h):v="N";var m=Math.floor(h),S=n(m,2,"0"),D=h-m,M=D*60,R=n(M.toFixed(6),9,"0");return S=S+R+","+v,S}T.encodeLatitude=c;function u(h){if(h===void 0)return",";var v;h<0?(v="W",h=-h):v="E";var m=Math.floor(h),S=n(m,3,"0"),D=h-m,M=D*60,R=n(M.toFixed(6),9,"0");return S=S+R+","+v,S}T.encodeLongitude=u;function f(h){return h===void 0?",":h.toFixed(1)+",M"}T.encodeAltitude=f;function l(h){return h===void 0?"":h.toFixed(1)}T.encodeAltitudeNoUnits=l;function d(h){return h===void 0?",":h.toFixed(1)+",M"}T.encodeGeoidalSeperation=d;function p(h){return h===void 0?"":h.toFixed(1)}T.encodeGeoidalSeperationNoUnits=p;function g(h){return h===void 0?"":n(h.toFixed(2),6,"0")}T.encodeDegrees=g;function y(h){if(h===void 0)return"";var v=h.getUTCFullYear(),m=h.getUTCMonth()+1,S=h.getUTCDate();return n(S,2,"0")+n(m,2,"0")+v.toFixed(0).substr(2)}T.encodeDate=y;function I(h){if(h===void 0)return"";var v=h.getUTCHours(),m=h.getUTCMinutes(),S=h.getUTCSeconds();return n(v,2,"0")+n(m,2,"0")+n(S,2,"0")}T.encodeTime=I;function C(h){return h===void 0?"":h.toString()}T.encodeValue=C;function N(h){return h===""?0:parseFloat(h)}T.parseFloatSafe=N;function V(h){return h===""?0:parseInt(h,10)}T.parseIntSafe=V;function Le(h){if(h===void 0)return"";var v=parseFloat(h);return v===NaN?h:v}T.parseNumberOrString=Le;function ee(h){var v=h.indexOf(".");if(v<0)return 0;var m,S;return v>=3?(m=h.substring(0,v-2),S=h.substring(v-2)):(m="0",S=h),parseFloat(m)+parseFloat(S)/60}T.parseDmCoordinate=ee;function xe(h,v){var m=v==="N"?1:-1;return ee(h)*m}T.parseLatitude=xe;function qe(h,v){var m=v==="E"?1:-1;return ee(h)*m}T.parseLongitude=qe;function We(h,v){if(h==="")return new Date(0);var m=new Date;if(v){var S=v.slice(4),D=parseInt(v.slice(2,4),10)-1,M=v.slice(0,2);S.length===4?m.setUTCFullYear(Number(S),Number(D),Number(M)):m.setUTCFullYear(+("20"+S),Number(D),Number(M))}m.setUTCHours(Number(h.slice(0,2))),m.setUTCMinutes(Number(h.slice(2,4))),m.setUTCSeconds(Number(h.slice(4,6)));var R=h.slice(7),K=R.length,W=0;return K!==0&&(W=parseFloat(R)*Math.pow(10,3-K)),m.setUTCMilliseconds(Number(W)),m}T.parseTime=We;function Be(h,v){var m=parseInt(h.slice(0,2),10),S=parseInt(h.slice(2,4),10),D=parseInt(h.slice(4,6),10);D<73?D=D+2e3:D=D+1900;var M=parseInt(v.slice(0,2),10),R=parseInt(v.slice(2,4),10),K=parseInt(v.slice(4,6),10),W=0;return v.length===9&&(W=parseInt(v.slice(7,9),10)*10),new Date(Date.UTC(D,S-1,m,M,R,K,W))}return T.parseDatetime=Be,T}var re={},It;function w(){if(It)return re;It=1,Object.defineProperty(re,"__esModule",{value:!0});function e(n,r,i){return{sentenceId:r,talkerId:n.talkerId,chxOk:n.chxOk,sentenceName:i}}re.initStubFields=e;function t(n,r){var i,o;return n.charAt(1)==="P"?(i="P",o=n.substr(2)):(i=n.substr(1,2),o=n.substr(3)),{talkerId:i,sentenceId:o,chxOk:r||void 0}}return re.parseStub=t,re}var wt;function jr(){return wt||(wt=1,(function(e){var t=ne&&ne.__assign||function(){return t=Object.assign||function(o){for(var s,a=1,c=arguments.length;a<c;a++){s=arguments[a];for(var u in s)Object.prototype.hasOwnProperty.call(s,u)&&(o[u]=s[u])}return o},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="APB",e.sentenceName='Autopilot sentence "B"';function i(o,s){return t(t({},r.initStubFields(o,e.sentenceId,e.sentenceName)),{status1:s[1],status2:s[2],xteMagn:n.parseFloatSafe(s[3]),steerDir:s[4],xteUnit:s[5],arrivalCircleStatus:s[6],arrivalPerpendicularStatus:s[7],bearingOrig2Dest:n.parseFloatSafe(s[8]),bearingOrig2DestType:s[9],waypoint:s[10],bearing2Dest:n.parseFloatSafe(s[11]),bearingDestType:s[12],heading2steer:n.parseFloatSafe(s[13]),headingDestType:s[14]})}e.decodeSentence=i})(ne)),ne}var se={},Pt;function Gr(){return Pt||(Pt=1,(function(e){var t=se&&se.__assign||function(){return t=Object.assign||function(o){for(var s,a=1,c=arguments.length;a<c;a++){s=arguments[a];for(var u in s)Object.prototype.hasOwnProperty.call(s,u)&&(o[u]=s[u])}return o},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="BWC",e.sentenceName="Bearing and distance to waypoint - great circle";function i(o,s){return t(t({},r.initStubFields(o,e.sentenceId,e.sentenceName)),{time:n.parseTime(s[1]),bearingLatitude:n.parseLatitude(s[2],s[3]),bearingLongitude:n.parseLongitude(s[4],s[5]),bearingTrue:n.parseFloatSafe(s[6]),bearingMagnetic:n.parseFloatSafe(s[8]),distanceNm:n.parseFloatSafe(s[10]),waypointId:s[12],faaMode:s[13]})}e.decodeSentence=i})(se)),se}var ie={},kt;function Lr(){return kt||(kt=1,(function(e){var t=ie&&ie.__assign||function(){return t=Object.assign||function(s){for(var a,c=1,u=arguments.length;c<u;c++){a=arguments[c];for(var f in a)Object.prototype.hasOwnProperty.call(a,f)&&(s[f]=a[f])}return s},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="DBT",e.sentenceName="Depth below transducer";function i(s,a){return t(t({},r.initStubFields(s,e.sentenceId,e.sentenceName)),{depthFeet:n.parseFloatSafe(a[1]),depthMeters:n.parseFloatSafe(a[3]),depthFathoms:n.parseFloatSafe(a[5])})}e.decodeSentence=i;function o(s,a){var c=["$"+a+e.sentenceId];c.push(n.encodeFixed(s.depthFeet,2)),c.push("f"),c.push(n.encodeFixed(s.depthMeters,2)),c.push("M"),c.push(n.encodeFixed(s.depthFathoms,2)),c.push("F");var u=c.join(",");return u+n.createNmeaChecksumFooter(u)}e.encodePacket=o})(ie)),ie}var oe={},Dt;function xr(){return Dt||(Dt=1,(function(e){var t=oe&&oe.__assign||function(){return t=Object.assign||function(s){for(var a,c=1,u=arguments.length;c<u;c++){a=arguments[c];for(var f in a)Object.prototype.hasOwnProperty.call(a,f)&&(s[f]=a[f])}return s},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="DTM",e.sentenceName="Datum reference";function i(s,a){return t(t({},r.initStubFields(s,e.sentenceId,e.sentenceName)),{datumCode:o(a[1]),datumSubcode:a[2]||void 0,offsetLatitude:n.parseLatitude(a[3],a[4]),offsetLongitude:n.parseLongitude(a[5],a[6]),offsetAltitudeMeters:n.parseFloatSafe(a[7]),datumName:o(a[8])})}e.decodeSentence=i;function o(s){return s==="W84"?"W84":s==="W72"?"W72":s==="S85"?"S85":s==="P90"?"P90":s==="999"?"999":""}})(oe)),oe}var ae={},Et;function qr(){return Et||(Et=1,(function(e){var t=ae&&ae.__assign||function(){return t=Object.assign||function(a){for(var c,u=1,f=arguments.length;u<f;u++){c=arguments[u];for(var l in c)Object.prototype.hasOwnProperty.call(c,l)&&(a[l]=c[l])}return a},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="GGA",e.sentenceName="Global positioning system fix data";var i=["none","fix","delta","pps","rtk","frtk","estimated","manual","simulation"];function o(a,c){return t(t({},r.initStubFields(a,e.sentenceId,e.sentenceName)),{time:n.parseTime(c[1]),latitude:n.parseLatitude(c[2],c[3]),longitude:n.parseLongitude(c[4],c[5]),fixType:i[n.parseIntSafe(c[6])],satellitesInView:n.parseIntSafe(c[7]),horizontalDilution:n.parseFloatSafe(c[8]),altitudeMeters:n.parseFloatSafe(c[9]),geoidalSeperation:n.parseFloatSafe(c[11]),differentialAge:n.parseFloatSafe(c[13]),differentialRefStn:c[14]})}e.decodeSentence=o;function s(a,c){var u=["$"+c+e.sentenceId];u.push(n.encodeTime(a.time)),u.push(n.encodeLatitude(a.latitude)),u.push(n.encodeLongitude(a.longitude)),u.push(n.encodeValue(i.indexOf(a.fixType))),u.push(n.encodeValue(a.satellitesInView)),u.push(n.encodeFixed(a.horizontalDilution,1)),u.push(n.encodeAltitude(a.altitudeMeters)),u.push(n.encodeGeoidalSeperation(a.geoidalSeperation)),u.push(n.encodeFixed(a.differentialAge,2)),u.push(n.encodeValue(a.differentialRefStn));var f=u.join(",");return f+n.createNmeaChecksumFooter(f)}e.encodePacket=s})(ae)),ae}var ce={},At;function Wr(){return At||(At=1,(function(e){var t=ce&&ce.__assign||function(){return t=Object.assign||function(s){for(var a,c=1,u=arguments.length;c<u;c++){a=arguments[c];for(var f in a)Object.prototype.hasOwnProperty.call(a,f)&&(s[f]=a[f])}return s},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="GLL",e.sentenceName="Geographic position - latitude and longitude";function i(s,a){return t(t({},r.initStubFields(s,e.sentenceId,e.sentenceName)),{latitude:n.parseLatitude(a[1],a[2]),longitude:n.parseLongitude(a[3],a[4]),time:n.parseTime(a[5]),status:a[6]==="A"?"valid":"invalid",faaMode:a[7]})}e.decodeSentence=i;function o(s,a){var c=["$"+a+e.sentenceId];c.push(n.encodeLatitude(s.latitude)),c.push(n.encodeLongitude(s.longitude)),c.push(n.encodeTime(s.time)),c.push(s.status==="valid"?"A":"V"),s.faaMode&&c.push(s.faaMode);var u=c.join(",");return u+n.createNmeaChecksumFooter(u)}e.encodePacket=o})(ce)),ce}var ue={},Mt;function Br(){return Mt||(Mt=1,(function(e){var t=ue&&ue.__assign||function(){return t=Object.assign||function(s){for(var a,c=1,u=arguments.length;c<u;c++){a=arguments[c];for(var f in a)Object.prototype.hasOwnProperty.call(a,f)&&(s[f]=a[f])}return s},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="GNS",e.sentenceName="GNSS fix data";function i(s,a){return t(t({},r.initStubFields(s,e.sentenceId,e.sentenceName)),{time:n.parseTime(a[1]),latitude:n.parseLatitude(a[2],a[3]),longitude:n.parseLongitude(a[4],a[5]),modeIndicator:a[6],satellitesInView:n.parseIntSafe(a[7]),horizontalDilution:n.parseFloatSafe(a[8]),altitudeMeters:n.parseFloatSafe(a[9]),geoidalSeperation:n.parseFloatSafe(a[10]),differentialAge:n.parseFloatSafe(a[11]),differentialRefStn:a[12]})}e.decodeSentence=i;function o(s,a){var c=["$"+a+e.sentenceId];c.push(n.encodeTime(s.time)),c.push(n.encodeLatitude(s.latitude)),c.push(n.encodeLongitude(s.longitude)),c.push(s.modeIndicator),c.push(n.encodeValue(s.satellitesInView)),c.push(n.encodeFixed(s.horizontalDilution,1)),c.push(n.encodeAltitudeNoUnits(s.altitudeMeters)),c.push(n.encodeGeoidalSeperationNoUnits(s.geoidalSeperation)),c.push(n.encodeFixed(s.differentialAge,2)),c.push(n.encodeValue(s.differentialRefStn));var u=c.join(",");return u+n.createNmeaChecksumFooter(u)}e.encodePacket=o})(ue)),ue}var de={},Ot;function Hr(){return Ot||(Ot=1,(function(e){var t=de&&de.__assign||function(){return t=Object.assign||function(s){for(var a,c=1,u=arguments.length;c<u;c++){a=arguments[c];for(var f in a)Object.prototype.hasOwnProperty.call(a,f)&&(s[f]=a[f])}return s},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="GSA",e.sentenceName="Active satellites and dilution of precision";var i=["unknown","none","2D","3D"];function o(s,a){for(var c=[],u=3;u<15;u++)a[u]&&c.push(+a[u]);return t(t({},r.initStubFields(s,e.sentenceId,e.sentenceName)),{selectionMode:a[1]==="A"?"automatic":"manual",fixMode:i[n.parseIntSafe(a[2])],satellites:c,PDOP:n.parseFloatSafe(a[15]),HDOP:n.parseFloatSafe(a[16]),VDOP:n.parseFloatSafe(a[17])})}e.decodeSentence=o})(de)),de}var fe={},Ft;function Ur(){return Ft||(Ft=1,(function(e){var t=fe&&fe.__assign||function(){return t=Object.assign||function(o){for(var s,a=1,c=arguments.length;a<c;a++){s=arguments[a];for(var u in s)Object.prototype.hasOwnProperty.call(s,u)&&(o[u]=s[u])}return o},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="GST",e.sentenceName="GPS pseudorange noise statistics";function i(o,s){return t(t({},r.initStubFields(o,e.sentenceId,e.sentenceName)),{time:n.parseTime(s[1]),totalRms:n.parseFloatSafe(s[2]),semiMajorError:n.parseFloatSafe(s[3]),semiMinorError:n.parseFloatSafe(s[4]),orientationOfSemiMajorError:n.parseFloatSafe(s[5]),latitudeError:n.parseFloatSafe(s[6]),longitudeError:n.parseFloatSafe(s[7]),altitudeError:n.parseFloatSafe(s[8])})}e.decodeSentence=i})(fe)),fe}var le={},Ct;function Vr(){return Ct||(Ct=1,(function(e){var t=le&&le.__assign||function(){return t=Object.assign||function(o){for(var s,a=1,c=arguments.length;a<c;a++){s=arguments[a];for(var u in s)Object.prototype.hasOwnProperty.call(s,u)&&(o[u]=s[u])}return o},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="GSV",e.sentenceName="Satellites in view";function i(o,s){for(var a=(s.length-4)/4,c=[],u=0;u<a;u++){var f=u*4+4;c.push({prnNumber:n.parseIntSafe(s[f]),elevationDegrees:n.parseIntSafe(s[f+1]),azimuthTrue:n.parseIntSafe(s[f+2]),SNRdB:n.parseIntSafe(s[f+3])})}return t(t({},r.initStubFields(o,e.sentenceId,e.sentenceName)),{numberOfMessages:n.parseIntSafe(s[1]),messageNumber:n.parseIntSafe(s[2]),satellitesInView:n.parseIntSafe(s[3]),satellites:c})}e.decodeSentence=i})(le)),le}var he={},Nt;function Kr(){return Nt||(Nt=1,(function(e){var t=he&&he.__assign||function(){return t=Object.assign||function(o){for(var s,a=1,c=arguments.length;a<c;a++){s=arguments[a];for(var u in s)Object.prototype.hasOwnProperty.call(s,u)&&(o[u]=s[u])}return o},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="HDG",e.sentenceName="Heading - deviation and variation";function i(o,s){return t(t({},r.initStubFields(o,e.sentenceId,e.sentenceName)),{heading:n.parseFloatSafe(s[1]),deviation:n.parseFloatSafe(s[2]),deviationDirection:s[3]==="E"?"E":s[3]==="W"?"W":"",variation:n.parseFloatSafe(s[4]),variationDirection:s[5]==="E"?"E":s[5]==="W"?"W":""})}e.decodeSentence=i})(he)),he}var pe={},Rt;function zr(){return Rt||(Rt=1,(function(e){var t=pe&&pe.__assign||function(){return t=Object.assign||function(s){for(var a,c=1,u=arguments.length;c<u;c++){a=arguments[c];for(var f in a)Object.prototype.hasOwnProperty.call(a,f)&&(s[f]=a[f])}return s},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="HDM",e.sentenceName="Heading - magnetic";function i(s,a){return t(t({},r.initStubFields(s,e.sentenceId,e.sentenceName)),{heading:n.parseFloatSafe(a[1])})}e.decodeSentence=i;function o(s,a){var c=["$"+a+e.sentenceId];c.push(n.encodeFixed(s.heading,1)),c.push("M");var u=c.join(",");return u+n.createNmeaChecksumFooter(u)}e.encodePacket=o})(pe)),pe}var ge={},jt;function Jr(){return jt||(jt=1,(function(e){var t=ge&&ge.__assign||function(){return t=Object.assign||function(s){for(var a,c=1,u=arguments.length;c<u;c++){a=arguments[c];for(var f in a)Object.prototype.hasOwnProperty.call(a,f)&&(s[f]=a[f])}return s},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="HDT",e.sentenceName="Heading - true";function i(s,a){return t(t({},r.initStubFields(s,e.sentenceId,e.sentenceName)),{heading:n.parseFloatSafe(a[1])})}e.decodeSentence=i;function o(s,a){var c=["$"+a+e.sentenceId];c.push(n.encodeFixed(s.heading,1)),c.push("T");var u=c.join(",");return u+n.createNmeaChecksumFooter(u)}e.encodePacket=o})(ge)),ge}var ve={},Gt;function Zr(){return Gt||(Gt=1,(function(e){var t=ve&&ve.__assign||function(){return t=Object.assign||function(s){for(var a,c=1,u=arguments.length;c<u;c++){a=arguments[c];for(var f in a)Object.prototype.hasOwnProperty.call(a,f)&&(s[f]=a[f])}return s},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="MTK",e.sentenceName="Configuration packet";function i(s,a){return t(t({},r.initStubFields(s,e.sentenceId,e.sentenceName)),{packetType:n.parseIntSafe(s.sentenceId.substr(3)),data:a.slice(1).map(n.parseNumberOrString)})}e.decodeSentence=i;function o(s,a){var c=["$"+a+e.sentenceId+n.padLeft(s.packetType,3,"0")];c=c.concat(s.data.toString());var u=c.join(",");return u+n.createNmeaChecksumFooter(u)}e.encodePacket=o})(ve)),ve}var me={},Lt;function Yr(){return Lt||(Lt=1,(function(e){var t=me&&me.__assign||function(){return t=Object.assign||function(s){for(var a,c=1,u=arguments.length;c<u;c++){a=arguments[c];for(var f in a)Object.prototype.hasOwnProperty.call(a,f)&&(s[f]=a[f])}return s},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="MWV",e.sentenceName="Wind speed and angle";function i(s,a){return t(t({},r.initStubFields(s,e.sentenceId,e.sentenceName)),{windAngle:n.parseFloatSafe(a[1]),reference:a[2]==="R"?"relative":"true",speed:n.parseFloatSafe(a[3]),units:a[4]==="K"?"K":a[4]==="M"?"M":"N",status:a[5]==="A"?"valid":"invalid"})}e.decodeSentence=i;function o(s,a){var c=["$"+a+e.sentenceId];c.push(n.encodeDegrees(s.windAngle)),c.push(s.reference==="relative"?"R":"T"),c.push(n.encodeFixed(s.speed,2)),c.push(s.units==="K"?"K":s.units==="M"?"M":"N"),c.push(s.status==="valid"?"A":"V");var u=c.join(",");return u+n.createNmeaChecksumFooter(u)}e.encodePacket=o})(me)),me}var ye={},xt;function Xr(){return xt||(xt=1,(function(e){var t=ye&&ye.__assign||function(){return t=Object.assign||function(o){for(var s,a=1,c=arguments.length;a<c;a++){s=arguments[a];for(var u in s)Object.prototype.hasOwnProperty.call(s,u)&&(o[u]=s[u])}return o},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="RDID",e.sentenceName="RDI proprietary heading, pitch, and roll";function i(o,s){return t(t({},r.initStubFields(o,e.sentenceId,e.sentenceName)),{roll:n.parseFloatSafe(s[1]),pitch:n.parseFloatSafe(s[2]),heading:n.parseFloatSafe(s[3])})}e.decodeSentence=i})(ye)),ye}var Se={},qt;function Qr(){return qt||(qt=1,(function(e){var t=Se&&Se.__assign||function(){return t=Object.assign||function(o){for(var s,a=1,c=arguments.length;a<c;a++){s=arguments[a];for(var u in s)Object.prototype.hasOwnProperty.call(s,u)&&(o[u]=s[u])}return o},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="RMC",e.sentenceName="Recommended minimum navigation information";function i(o,s){return t(t({},r.initStubFields(o,e.sentenceId,e.sentenceName)),{datetime:n.parseDatetime(s[9],s[1]),status:s[2]==="A"?"valid":"warning",latitude:n.parseLatitude(s[3],s[4]),longitude:n.parseLongitude(s[5],s[6]),speedKnots:n.parseFloatSafe(s[7]),trackTrue:n.parseFloatSafe(s[8]),variation:n.parseFloatSafe(s[10]),variationPole:s[11]==="E"?"E":s[11]==="W"?"W":"",faaMode:s[12]})}e.decodeSentence=i})(Se)),Se}var _e={},Wt;function $r(){return Wt||(Wt=1,(function(e){var t=_e&&_e.__assign||function(){return t=Object.assign||function(o){for(var s,a=1,c=arguments.length;a<c;a++){s=arguments[a];for(var u in s)Object.prototype.hasOwnProperty.call(s,u)&&(o[u]=s[u])}return o},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="VHW",e.sentenceName="Water speed and heading";function i(o,s){return t(t({},r.initStubFields(o,e.sentenceId,e.sentenceName)),{degreesTrue:n.parseFloatSafe(s[1]),degreesMagnetic:n.parseFloatSafe(s[3]),speedKnots:n.parseFloatSafe(s[5]),speedKmph:n.parseFloatSafe(s[7])})}e.decodeSentence=i})(_e)),_e}var be={},Bt;function es(){return Bt||(Bt=1,(function(e){var t=be&&be.__assign||function(){return t=Object.assign||function(s){for(var a,c=1,u=arguments.length;c<u;c++){a=arguments[c];for(var f in a)Object.prototype.hasOwnProperty.call(a,f)&&(s[f]=a[f])}return s},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="VTG",e.sentenceName="Track made good and ground speed";function i(s,a){return t(t({},r.initStubFields(s,e.sentenceId,e.sentenceName)),{trackTrue:n.parseFloatSafe(a[1]),trackMagnetic:n.parseFloatSafe(a[3]),speedKnots:n.parseFloatSafe(a[5]),speedKmph:n.parseFloatSafe(a[7]),faaMode:a[9]})}e.decodeSentence=i;function o(s,a){var c=["$"+a+e.sentenceId];c.push(n.encodeDegrees(s.trackTrue)),c.push("T"),c.push(n.encodeDegrees(s.trackMagnetic)),c.push("M"),c.push(n.encodeFixed(s.speedKnots,2)),c.push("N"),s.speedKmph?(c.push(n.encodeFixed(s.speedKmph,2)),c.push("K")):(c.push(""),c.push("")),s.faaMode&&c.push(s.faaMode);var u=c.join(",");return u+n.createNmeaChecksumFooter(u)}e.encodePacket=o})(be)),be}var Te={},Ht;function ts(){return Ht||(Ht=1,(function(e){var t=Te&&Te.__assign||function(){return t=Object.assign||function(o){for(var s,a=1,c=arguments.length;a<c;a++){s=arguments[a];for(var u in s)Object.prototype.hasOwnProperty.call(s,u)&&(o[u]=s[u])}return o},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=P(),r=w();e.sentenceId="ZDA",e.sentenceName="UTC, day, month, year, and local time zone";function i(o,s){return t(t({},r.initStubFields(o,e.sentenceId,e.sentenceName)),{datetime:n.parseTime(s[1],s.slice(2,5).join("")),localZoneHours:n.parseIntSafe(s[5]),localZoneMinutes:n.parseIntSafe(s[6])})}e.decodeSentence=i})(Te)),Te}var Ie={},Ut;function mn(){return Ut||(Ut=1,(function(e){var t=Ie&&Ie.__assign||function(){return t=Object.assign||function(i){for(var o,s=1,a=arguments.length;s<a;s++){o=arguments[s];for(var c in o)Object.prototype.hasOwnProperty.call(o,c)&&(i[c]=o[c])}return i},t.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=w();e.sentenceId="?";function r(i,o){return t(t({},n.initStubFields(i,e.sentenceId)),{originalPacketId:i.sentenceId,dataFields:o.slice(1)})}e.decodeSentence=r})(Ie)),Ie}var Vt;function ns(){if(Vt)return O;Vt=1;var e=O&&O.__extends||(function(){var _=function(b,k){return _=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(E,L){E.__proto__=L}||function(E,L){for(var z in L)L.hasOwnProperty(z)&&(E[z]=L[z])},_(b,k)};return function(b,k){_(b,k);function E(){this.constructor=b}b.prototype=k===null?Object.create(k):(E.prototype=k.prototype,new E)}})();Object.defineProperty(O,"__esModule",{value:!0});var t=jr(),n=Gr(),r=Lr(),i=xr(),o=qr(),s=Wr(),a=Br(),c=Hr(),u=Ur(),f=Vr(),l=Kr(),d=zr(),p=Jr(),g=Zr(),y=Yr(),I=Xr(),C=Qr(),N=$r(),V=es(),Le=ts(),ee=w(),xe=mn(),qe=P(),We={APB:t.decodeSentence,BWC:n.decodeSentence,DBT:r.decodeSentence,DTM:i.decodeSentence,GGA:o.decodeSentence,GLL:s.decodeSentence,GNS:a.decodeSentence,GSA:c.decodeSentence,GST:u.decodeSentence,GSV:f.decodeSentence,HDG:l.decodeSentence,HDM:d.decodeSentence,HDT:p.decodeSentence,MTK:g.decodeSentence,MWV:y.decodeSentence,RDID:I.decodeSentence,RMC:C.decodeSentence,VHW:N.decodeSentence,VTG:V.decodeSentence,ZDA:Le.decodeSentence},Be={DBT:r.encodePacket,GGA:o.encodePacket,GLL:s.encodePacket,GNS:a.encodePacket,HDM:d.encodePacket,HDT:p.encodePacket,MTK:g.encodePacket,MWV:y.encodePacket,VTG:V.encodePacket},h=(function(){function _(b){b===void 0&&(b=!1),this.ableToParseBadChecksum=b}return _.getParser=function(b){return b.sentenceId.substr(0,3)==="MTK"?g.decodeSentence:We[b.sentenceId]},_.prototype.assemble=function(b,k){var E=_.getParser(b);return E?E(b,k):this.assembleCustomPacket(b,k)},_.prototype.assembleCustomPacket=function(b,k){return null},_})();O.DefaultPacketFactory=h;var v=new h;function m(_,b){var k=!0;if(!qe.validNmeaChecksum(_)){if(!b.ableToParseBadChecksum)throw Error('Invalid sentence: "'+_+'".');k=!1}var E=_.split("*")[0].split(","),L=ee.parseStub(E[0],k),z=b.assemble(L,E);if(!z)throw Error('No known parser for sentence ID "'+L.sentenceId+'".');return z}O.parseGenericPacket=m;function S(_){return m(_,v)}O.parseNmeaSentence=S;function D(_,b){if(b===void 0&&(b="P"),_===void 0)throw new Error("Packet must be given.");var k=Be[_.sentenceId];if(k)return k(_,b);throw Error('No known encoder for sentence ID "'+_.sentenceId+'"')}O.encodeNmeaPacket=D;var M=(function(_){e(b,_);function b(){return _.call(this,!0)||this}return b.prototype.assembleCustomPacket=function(k,E){return xe.decodeSentence(k,E)},b})(h);O.UnsafePacketFactory=M;var R=new M;function K(_){return m(_,R)}O.parseUnsafeNmeaSentence=K;function W(_){return _.sentenceId==="?"?_.originalPacketId:_.sentenceId}return O.getUnsafePacketId=W,O}var Ge=ns(),rs=mn(),ut=w();function G(e){return e===""?0:Number.parseFloat(e)}const ss="DBK",is="Depth Below Keel";function os(e,t){return{...ut.initStubFields(e,ss,is),depthFeet:G(t[1]),depthMeters:G(t[3]),depthFathoms:G(t[5])}}const as="DBS",cs="Depth Below Surface";function us(e,t){return{...ut.initStubFields(e,as,cs),depthFeet:G(t[1]),depthMeters:G(t[3]),depthFathoms:G(t[5])}}const ds="DPT",fs="Depth of Water";function ls(e,t){return{...ut.initStubFields(e,ds,fs),depthMeters:G(t[1]),offsetMeters:G(t[2]),maximumRangeScale:G(t[3])}}function yn(e,t){switch(e.talkerId){case"DBS":return us(e,t);case"DBK":return os(e,t);case"DPT":return ls(e,t);default:return null}}class hs extends Ge.DefaultPacketFactory{assembleCustomPacket(t,n){return yn(t,n)}}const ps=new hs;function gs(e){return Ge.parseGenericPacket(e,ps)}class vs extends Ge.DefaultPacketFactory{constructor(){super(!0)}assembleCustomPacket(t,n){const r=yn(t,n);return r||rs.decodeSentence(t,n)}}const ms=new vs;function Sn(e){return Ge.parseGenericPacket(e,ms)}function Kt(e,t){return!t||t.length===0?!0:e!==void 0&&t.includes(e)}class ys{container;constructor(){this.container=""}transform(t,n){this.container+=t;const r=this.container.split(`\r
4
- `),i=r.pop();this.container=i??"",r.forEach(o=>{o.length>0&&n.enqueue(o)})}flush(t){this.container=""}}const Ss=hn(async({input:e})=>{if(!navigator.serial)throw new Error("Web Serial API is not supported in this browser.");console.log("Requesting serial port...");const t=await navigator.serial.requestPort();if(console.log(`Opening port at ${e.baudRate} baud...`),t.readable||t.writable){console.log("Port is already open, closing first...");try{await t.close()}catch(n){console.warn("Error closing already-open port:",n)}}return await t.open({baudRate:e.baudRate}),console.log("Port open."),t}),_s=hn(async({input:e})=>{if(e.port)try{(e.port.readable||e.port.writable)&&(await e.port.close(),console.log("Port closed successfully."))}catch(t){console.warn("Error closing port:",t)}}),bs=Sr(({input:e,sendBack:t,receive:n})=>{const{port:r}=e;if(!r||!r.readable){t({type:"SERIAL.ERROR",error:"Invalid port context."});return}const i=new ys,s=r.readable.pipeThrough(new TextDecoderStream).pipeThrough(new TransformStream({transform:i.transform.bind(i),flush:i.flush.bind(i)})).getReader();let a=!0;async function c(){try{for(;a;){const{value:u,done:f}=await s.read();if(f)break;if(u&&u.length>0)try{const l=Sn(u);if(l.sentenceId==="?")continue;t({type:"SERIAL.DATA",data:l})}catch(l){const d=l instanceof Error?l.message:String(l);console.warn("Failed to parse NMEA sentence:",u,d),t({type:"SERIAL.ERROR",error:`Parser Error: ${d}`})}}}catch(u){if(console.error("Read loop error:",u),a){const f=u instanceof Error?u.message:String(u);t({type:"FATAL_ERROR",error:f})}}finally{console.log("Read loop finished."),t({type:"SERIAL.DISCONNECTED"})}}return c(),n(u=>{u.type==="STOP"&&(console.log("Received STOP, cancelling reader..."),a=!1,s.cancel().catch(()=>{}))}),()=>{console.log("Cleaning up stream reader actor..."),a=!1,s&&s.cancel().catch(()=>{})}});function _n(e){const{adapter:t,allowedSentenceIds:n,initialData:r,initialPackets:i}=e;return gn({actors:{connectToSerial:Ss,readNmeaStream:bs,closePort:_s},actions:{setPort:F((o,s)=>({port:s.port,error:null})),setError:F((o,s)=>{const a=s.error;let c;return typeof a=="string"?c=a:a instanceof Error?c=a.message||"Failed to connect.":c=String(a)||"Failed to connect.",{error:c}}),logParsedData:({context:o},s)=>{if(!o.enableLogging)return;const c=s.packet.sentenceId;Kt(c,n)&&console.log(`${c} Packet:`,s.packet)},storePacket:F(({context:o},s)=>{const c=s.packet.sentenceId;if(c&&Kt(c,n)){const u={...o.packets,[c]:s.packet};return{packets:u,data:t(u),error:null}}return{packets:o.packets,data:t(o.packets),error:null}}),clearError:F((o,s)=>({error:s.error})),setFatalError:F((o,s)=>({error:s.error})),disconnect:F({port:null,error:null,packets:i,data:r}),setLogging:F((o,s)=>({enableLogging:s.enabled})),setBaudRate:F((o,s)=>({baudRate:s.baudRate}))}}).createMachine({id:"nmea",initial:"disconnected",context:{port:null,error:null,packets:i,data:r,enableLogging:!1,baudRate:4800},on:{SET_LOGGING:{actions:{type:"setLogging",params:({event:o})=>({enabled:o.enabled})}}},states:{disconnected:{on:{CONNECT:"connecting",SET_BAUD_RATE:{actions:{type:"setBaudRate",params:({event:o})=>({baudRate:o.baudRate})}}}},connecting:{invoke:{id:"connectToSerial",src:"connectToSerial",input:({context:o})=>({baudRate:o.baudRate}),onDone:{target:"connected",actions:{type:"setPort",params:({event:o})=>({port:o.output})}},onError:{target:"error",actions:{type:"setError",params:({event:o})=>({error:o.error})}}}},connected:{on:{"SERIAL.DATA":{actions:[{type:"logParsedData",params:({event:o})=>({packet:o.data})},{type:"storePacket",params:({event:o})=>({packet:o.data})}]},"SERIAL.ERROR":{actions:{type:"clearError",params:({event:o})=>({error:o.error})}},FATAL_ERROR:{target:"error",actions:{type:"setFatalError",params:({event:o})=>({error:o.error})}},"SERIAL.DISCONNECTED":{target:"disconnecting"},DISCONNECT:{actions:je("streamReader",{type:"STOP"})}},invoke:{id:"streamReader",src:"readNmeaStream",input:({context:o})=>({port:o.port})}},disconnecting:{invoke:{id:"closePort",src:"closePort",input:({context:o})=>({port:o.port}),onDone:{target:"disconnected",actions:"disconnect"},onError:{target:"disconnected",actions:"disconnect"}}},error:{on:{CONNECT:"connecting"}}}})}function Ts(e,t,n){return e&&e.fixType!=="none"?{latitude:e.latitude,longitude:e.longitude,source:"GGA",fixType:e.fixType,altitudeMeters:e.altitudeMeters,satellitesInView:e.satellitesInView,horizontalDilution:e.horizontalDilution}:t&&t.status==="valid"?{latitude:t.latitude,longitude:t.longitude,source:"RMC",status:t.status}:n&&n.status==="valid"?{latitude:n.latitude,longitude:n.longitude,source:"GLL",status:"valid"}:null}function Is(e,t,n,r){if(e){const i=new Date(e.datetime),o=e.localZoneHours*60+e.localZoneMinutes;return i.setMinutes(i.getMinutes()+o),{utc:e.datetime,local:i,source:"ZDA"}}return t&&t.fixType!=="none"?{utc:t.time,local:null,source:"GGA"}:n&&n.status==="valid"?{utc:n.datetime,local:null,source:"RMC"}:r&&r.status==="valid"?{utc:r.time,local:null,source:"GLL"}:null}function ws(e,t){return e?{knots:e.speedKnots,source:"VTG"}:t&&t.status==="valid"?{knots:t.speedKnots,source:"RMC"}:null}function Ps(e){return e.variationDirection==="W"?-e.variation:(e.variationDirection==="E",e.variation)}function ks(e,t,n,r){if(e&&e.heading!==void 0)return{degreesTrue:e.heading,source:"HDT",isDerived:!1};if(t&&t.heading!==void 0){const o=Ps(t);return{degreesTrue:t.heading+o,source:"HDG",isDerived:!1}}const i=n?.trackTrue??r?.trackTrue;return i!==void 0?{degreesTrue:i,source:"COG",isDerived:!0}:null}function Ds(e,t,n,r){return e&&e.depthMeters!==void 0?{meters:e.depthMeters,source:"DPT"}:t?{meters:t.depthMeters,source:"DBT"}:n&&n.depthMeters!==void 0?{meters:n.depthMeters,source:"DBS"}:r&&r.depthMeters!==void 0?{meters:r.depthMeters,source:"DBK"}:null}function Es(e){const t=Is(e.ZDA,e.GGA,e.RMC,e.GLL),n=Ts(e.GGA,e.RMC,e.GLL),r=ws(e.VTG,e.RMC),i=ks(e.HDT,e.HDG,e.RMC,e.VTG),o=Ds(e.DPT,e.DBT,e.DBS,e.DBK);return{time:t,position:n,speed:r,heading:i,depth:o}}const As=["GGA","RMC","GLL","VTG","HDT","HDG","DPT","DBT","DBS","DBK","ZDA"];function Ms(){return e=>Es(e)}const Os={time:null,position:null,speed:null,heading:null,depth:null},Fs={};function Cs(){return{adapter:Ms(),allowedSentenceIds:As,initialData:Os,initialPackets:Fs}}function bn(){return _n(Cs())}function Ns(e){const t=bn();return new vn(t,{enableLogging:e?.enableLogging,baudRate:e?.baudRate,onData:e?.onData,onStateChange:e?.onStateChange,onError:e?.onError})}exports.NmeaClient=vn;exports.createNavigationNmeaClient=Ns;exports.createNavigationNmeaMachine=bn;exports.createNmeaMachine=_n;exports.parseNmeaSentence=gs;exports.parseUnsafeNmeaSentence=Sn;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("xstate"),h=require("nmea-simple");class E{actor;subscription=null;options;constructor(e,r){this.options=r,this.actor=l.createActor(e),this.setupSubscriptions(),r?.enableLogging!==void 0&&this.setLogging(r.enableLogging),r?.baudRate!==void 0&&this.setBaudRate(r.baudRate),this.actor.start()}setupSubscriptions(){this.subscription=this.actor.subscribe(e=>{if(this.options?.onData&&e.context.data!==void 0&&this.options.onData(e.context.data),this.options?.onStateChange){const r=e.value==="connected";this.options.onStateChange(r)}this.options?.onError&&e.context.error&&this.options.onError(e.context.error)})}get data(){return this.actor.getSnapshot().context.data}get isConnected(){return this.actor.getSnapshot().value==="connected"}get isConnecting(){return this.actor.getSnapshot().value==="connecting"}get error(){return this.actor.getSnapshot().context.error}connect(){this.actor.send({type:"CONNECT"})}disconnect(){this.actor.send({type:"DISCONNECT"})}setLogging(e){this.actor.send({type:"SET_LOGGING",enabled:e})}setBaudRate(e){this.actor.send({type:"SET_BAUD_RATE",baudRate:e})}get machine(){return this.actor}dispose(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=null),this.actor.stop()}}var g={},f={},b;function P(){if(b)return f;b=1,Object.defineProperty(f,"__esModule",{value:!0});function t(r,o,a){return{sentenceId:o,talkerId:r.talkerId,chxOk:r.chxOk,sentenceName:a}}f.initStubFields=t;function e(r,o){var a,n;return r.charAt(1)==="P"?(a="P",n=r.substr(2)):(a=r.substr(1,2),n=r.substr(3)),{talkerId:a,sentenceId:n,chxOk:o||void 0}}return f.parseStub=e,f}var R;function C(){return R||(R=1,(function(t){var e=g&&g.__assign||function(){return e=Object.assign||function(a){for(var n,s=1,c=arguments.length;s<c;s++){n=arguments[s];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(a[i]=n[i])}return a},e.apply(this,arguments)};Object.defineProperty(t,"__esModule",{value:!0});var r=P();t.sentenceId="?";function o(a,n){return e(e({},r.initStubFields(a,t.sentenceId)),{originalPacketId:a.sentenceId,dataFields:n.slice(1)})}t.decodeSentence=o})(g)),g}var A=C(),m=P();function d(t){return t===""?0:Number.parseFloat(t)}const I="DBK",M="Depth Below Keel";function L(t,e){return{...m.initStubFields(t,I,M),depthFeet:d(e[1]),depthMeters:d(e[3]),depthFathoms:d(e[5])}}const w="DBS",G="Depth Below Surface";function _(t,e){return{...m.initStubFields(t,w,G),depthFeet:d(e[1]),depthMeters:d(e[3]),depthFathoms:d(e[5])}}const O="DPT",F="Depth of Water";function x(t,e){return{...m.initStubFields(t,O,F),depthMeters:d(e[1]),offsetMeters:d(e[2]),maximumRangeScale:d(e[3])}}function v(t,e){switch(t.talkerId){case"DBS":return _(t,e);case"DBK":return L(t,e);case"DPT":return x(t,e);default:return null}}class B extends h.DefaultPacketFactory{assembleCustomPacket(e,r){return v(e,r)}}const K=new B;function U(t){return h.parseGenericPacket(t,K)}class V extends h.DefaultPacketFactory{constructor(){super(!0)}assembleCustomPacket(e,r){const o=v(e,r);return o||A.decodeSentence(e,r)}}const q=new V;function N(t){return h.parseGenericPacket(t,q)}function T(t,e){return!e||e.length===0?!0:t!==void 0&&e.includes(t)}class H{container;constructor(){this.container=""}transform(e,r){this.container+=e;const o=this.container.split(`\r
2
+ `),a=o.pop();this.container=a??"",o.forEach(n=>{n.length>0&&r.enqueue(n)})}flush(e){this.container=""}}const $=l.fromPromise(async({input:t})=>{if(!navigator.serial)throw new Error("Web Serial API is not supported in this browser.");console.log("Requesting serial port...");const e=await navigator.serial.requestPort();if(console.log(`Opening port at ${t.baudRate} baud...`),e.readable||e.writable){console.log("Port is already open, closing first...");try{await e.close()}catch(r){console.warn("Error closing already-open port:",r)}}return await e.open({baudRate:t.baudRate}),console.log("Port open."),e}),j=l.fromPromise(async({input:t})=>{if(t.port)try{(t.port.readable||t.port.writable)&&(await t.port.close(),console.log("Port closed successfully."))}catch(e){console.warn("Error closing port:",e)}}),Z=l.fromCallback(({input:t,sendBack:e,receive:r})=>{const{port:o}=t;if(!o||!o.readable){e({type:"SERIAL.ERROR",error:"Invalid port context."});return}const a=new H,s=o.readable.pipeThrough(new TextDecoderStream).pipeThrough(new TransformStream({transform:a.transform.bind(a),flush:a.flush.bind(a)})).getReader();let c=!0;async function i(){try{for(;c;){const{value:u,done:S}=await s.read();if(S)break;if(u&&u.length>0)try{const p=N(u);if(p.sentenceId==="?")continue;e({type:"SERIAL.DATA",data:p})}catch(p){const D=p instanceof Error?p.message:String(p);console.warn("Failed to parse NMEA sentence:",u,D),e({type:"SERIAL.ERROR",error:`Parser Error: ${D}`})}}}catch(u){if(console.error("Read loop error:",u),c){const S=u instanceof Error?u.message:String(u);e({type:"FATAL_ERROR",error:S})}}finally{console.log("Read loop finished."),e({type:"SERIAL.DISCONNECTED"})}}return i(),r(u=>{u.type==="STOP"&&(console.log("Received STOP, cancelling reader..."),c=!1,s.cancel().catch(()=>{}))}),()=>{console.log("Cleaning up stream reader actor..."),c=!1,s&&s.cancel().catch(()=>{})}});function y(t){const{adapter:e,allowedSentenceIds:r,initialData:o,initialPackets:a}=t;return l.setup({types:{},actors:{connectToSerial:$,readNmeaStream:Z,closePort:j},actions:{setPort:l.assign((n,s)=>({port:s.port,error:null})),setError:l.assign((n,s)=>{const c=s.error;let i;return typeof c=="string"?i=c:c instanceof Error?i=c.message||"Failed to connect.":i=String(c)||"Failed to connect.",{error:i}}),logParsedData:({context:n},s)=>{if(!n.enableLogging)return;const i=s.packet.sentenceId;T(i,r)&&console.log(`${i} Packet:`,s.packet)},storePacket:l.assign(({context:n},s)=>{const i=s.packet.sentenceId;if(i&&T(i,r)){const u={...n.packets,[i]:s.packet};return{packets:u,data:e(u),error:null}}return{packets:n.packets,data:e(n.packets),error:null}}),clearError:l.assign((n,s)=>({error:s.error})),setFatalError:l.assign((n,s)=>({error:s.error})),disconnect:l.assign({port:null,error:null,packets:a,data:o}),setLogging:l.assign((n,s)=>({enableLogging:s.enabled})),setBaudRate:l.assign((n,s)=>({baudRate:s.baudRate}))}}).createMachine({id:"nmea",initial:"disconnected",context:{port:null,error:null,packets:a,data:o,enableLogging:!1,baudRate:4800},on:{SET_LOGGING:{actions:{type:"setLogging",params:({event:n})=>({enabled:n.enabled})}}},states:{disconnected:{on:{CONNECT:"connecting",SET_BAUD_RATE:{actions:{type:"setBaudRate",params:({event:n})=>({baudRate:n.baudRate})}}}},connecting:{invoke:{id:"connectToSerial",src:"connectToSerial",input:({context:n})=>({baudRate:n.baudRate}),onDone:{target:"connected",actions:{type:"setPort",params:({event:n})=>({port:n.output})}},onError:{target:"error",actions:{type:"setError",params:({event:n})=>({error:n.error})}}}},connected:{on:{"SERIAL.DATA":{actions:[{type:"logParsedData",params:({event:n})=>({packet:n.data})},{type:"storePacket",params:({event:n})=>({packet:n.data})}]},"SERIAL.ERROR":{actions:{type:"clearError",params:({event:n})=>({error:n.error})}},FATAL_ERROR:{target:"error",actions:{type:"setFatalError",params:({event:n})=>({error:n.error})}},"SERIAL.DISCONNECTED":{target:"disconnecting"},DISCONNECT:{actions:l.sendTo("streamReader",{type:"STOP"})}},invoke:{id:"streamReader",src:"readNmeaStream",input:({context:n})=>({port:n.port})}},disconnecting:{invoke:{id:"closePort",src:"closePort",input:({context:n})=>({port:n.port}),onDone:{target:"disconnected",actions:"disconnect"},onError:{target:"disconnected",actions:"disconnect"}}},error:{on:{CONNECT:"connecting"}}}})}function W(t,e,r){return t&&t.fixType!=="none"?{latitude:t.latitude,longitude:t.longitude,source:"GGA",fixType:t.fixType,altitudeMeters:t.altitudeMeters,satellitesInView:t.satellitesInView,horizontalDilution:t.horizontalDilution}:e&&e.status==="valid"?{latitude:e.latitude,longitude:e.longitude,source:"RMC",status:e.status}:r&&r.status==="valid"?{latitude:r.latitude,longitude:r.longitude,source:"GLL",status:"valid"}:null}function Y(t,e,r,o){if(t){const a=new Date(t.datetime),n=t.localZoneHours*60+t.localZoneMinutes;return a.setMinutes(a.getMinutes()+n),{utc:t.datetime,local:a,source:"ZDA"}}return e&&e.fixType!=="none"?{utc:e.time,local:null,source:"GGA"}:r&&r.status==="valid"?{utc:r.datetime,local:null,source:"RMC"}:o&&o.status==="valid"?{utc:o.time,local:null,source:"GLL"}:null}function J(t,e){return t?{knots:t.speedKnots,source:"VTG"}:e&&e.status==="valid"?{knots:e.speedKnots,source:"RMC"}:null}function Q(t){return t.variationDirection==="W"?-t.variation:(t.variationDirection==="E",t.variation)}function X(t,e,r,o){if(t&&t.heading!==void 0)return{degreesTrue:t.heading,source:"HDT",isDerived:!1};if(e&&e.heading!==void 0){const n=Q(e);return{degreesTrue:e.heading+n,source:"HDG",isDerived:!1}}const a=r?.trackTrue??o?.trackTrue;return a!==void 0?{degreesTrue:a,source:"COG",isDerived:!0}:null}function z(t,e,r,o){return t&&t.depthMeters!==void 0?{meters:t.depthMeters,source:"DPT"}:e?{meters:e.depthMeters,source:"DBT"}:r&&r.depthMeters!==void 0?{meters:r.depthMeters,source:"DBS"}:o&&o.depthMeters!==void 0?{meters:o.depthMeters,source:"DBK"}:null}function ee(t){const e=Y(t.ZDA,t.GGA,t.RMC,t.GLL),r=W(t.GGA,t.RMC,t.GLL),o=J(t.VTG,t.RMC),a=X(t.HDT,t.HDG,t.RMC,t.VTG),n=z(t.DPT,t.DBT,t.DBS,t.DBK);return{time:e,position:r,speed:o,heading:a,depth:n}}const te=["GGA","RMC","GLL","VTG","HDT","HDG","DPT","DBT","DBS","DBK","ZDA"];function ne(){return t=>ee(t)}const re={time:null,position:null,speed:null,heading:null,depth:null},oe={};function ae(){return{adapter:ne(),allowedSentenceIds:te,initialData:re,initialPackets:oe}}function k(){return y(ae())}class se extends E{constructor(e){const r=k();super(r,{enableLogging:e?.enableLogging,baudRate:e?.baudRate,onData:e?.onData,onStateChange:e?.onStateChange,onError:e?.onError})}}exports.NavigationNmeaClient=se;exports.NmeaClient=E;exports.createNavigationNmeaMachine=k;exports.createNmeaMachine=y;exports.parseNmeaSentence=U;exports.parseUnsafeNmeaSentence=N;