nmea-web-serial 1.1.1 → 1.1.2

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.
package/README.md CHANGED
@@ -6,9 +6,138 @@ The library uses [XState](https://xstate.js.org/) to manage serial port connecti
6
6
 
7
7
  The official NMEA 0183 standard can be found [here](http://www.nmea.org/content/nmea_standards/nmea_0183_v_410.asp) and is described in clear terms [here](https://gpsd.gitlab.io/gpsd/NMEA.html).
8
8
 
9
- ## Example
9
+ ## Installation
10
10
 
11
- Typically, you will get NMEA sentences via the Web Serial API from a GPS module or other NMEA device. The library provides a state machine that handles connection, reading, parsing, and data computation.
11
+ ```bash
12
+ npm install nmea-web-serial
13
+ ```
14
+
15
+ ## Quick Start
16
+
17
+ The simplest way to use the library is with the client API, which provides a clean abstraction over the state machine:
18
+
19
+ ```typescript
20
+ import { createNavigationNmeaClient } from 'nmea-web-serial'
21
+
22
+ // Create a client for navigation data
23
+ const client = createNavigationNmeaClient({
24
+ baudRate: 4800,
25
+ enableLogging: false,
26
+ onData: (navigationData) => {
27
+ if (navigationData.position) {
28
+ console.log('Position:', navigationData.position.latitude, navigationData.position.longitude)
29
+ }
30
+ if (navigationData.speed) {
31
+ console.log('Speed:', navigationData.speed.knots, 'knots')
32
+ }
33
+ if (navigationData.heading) {
34
+ console.log('Heading:', navigationData.heading.degreesTrue, '°')
35
+ }
36
+ },
37
+ onStateChange: (isConnected) => {
38
+ console.log('Connection state:', isConnected ? 'connected' : 'disconnected')
39
+ },
40
+ onError: (error) => {
41
+ console.error('Error:', error)
42
+ },
43
+ })
44
+
45
+ // Connect to a serial port
46
+ client.connect()
47
+
48
+ // Access current data
49
+ const currentData = client.data
50
+ const isConnected = client.isConnected
51
+
52
+ // Disconnect when done
53
+ client.disconnect()
54
+
55
+ // Clean up resources
56
+ client.dispose()
57
+ ```
58
+
59
+ ## Client API
60
+
61
+ The client API provides a simple, framework-agnostic interface for managing NMEA connections without needing to work directly with XState machines.
62
+
63
+ ### Navigation Client
64
+
65
+ For navigation-focused use cases, use `createNavigationNmeaClient`:
66
+
67
+ ```typescript
68
+ import { createNavigationNmeaClient } from 'nmea-web-serial'
69
+
70
+ const client = createNavigationNmeaClient({
71
+ // Optional: baud rate (default: 4800)
72
+ baudRate: 4800,
73
+
74
+ // Optional: enable logging of parsed packets
75
+ enableLogging: true,
76
+
77
+ // Optional: callback when navigation data updates
78
+ onData: (navigationData) => {
79
+ // navigationData contains position, time, speed, heading, depth
80
+ },
81
+
82
+ // Optional: callback when connection state changes
83
+ onStateChange: (isConnected) => {
84
+ // isConnected is true when connected, false otherwise
85
+ },
86
+
87
+ // Optional: callback when errors occur
88
+ onError: (error) => {
89
+ // error is a string message
90
+ },
91
+ })
92
+ ```
93
+
94
+ ### Generic Client
95
+
96
+ For custom data adapters, use the generic `NmeaClient`:
97
+
98
+ ```typescript
99
+ import { createNmeaMachine, NmeaClient } from 'nmea-web-serial'
100
+
101
+ // Create a custom machine with your adapter
102
+ const machine = createNmeaMachine({
103
+ adapter: myAdapter,
104
+ allowedSentenceIds: ['GGA', 'RMC'],
105
+ initialData: { customField: null },
106
+ initialPackets: {},
107
+ })
108
+
109
+ // Create a client from the machine
110
+ const client = new NmeaClient(machine, {
111
+ baudRate: 4800,
112
+ enableLogging: false,
113
+ onData: (data) => {
114
+ // Your custom data type
115
+ },
116
+ onStateChange: (isConnected) => {
117
+ // Connection state changes
118
+ },
119
+ onError: (error) => {
120
+ // Error handling
121
+ },
122
+ })
123
+ ```
124
+
125
+ ### Client Methods and Properties
126
+
127
+ - `client.connect()` - Connects to a serial port (triggers browser port selection dialog)
128
+ - `client.disconnect()` - Disconnects from the serial port
129
+ - `client.data` - Get the current data (read-only property)
130
+ - `client.isConnected` - Check if currently connected (read-only property)
131
+ - `client.isConnecting` - Check if connection is in progress (read-only property)
132
+ - `client.error` - Get the current error message, if any (read-only property)
133
+ - `client.setLogging(enabled)` - Enable or disable logging of parsed packets
134
+ - `client.setBaudRate(baudRate)` - Set the baud rate (requires reconnection to take effect)
135
+ - `client.machine` - Access the underlying XState actor (for advanced use)
136
+ - `client.dispose()` - Clean up resources and stop the machine
137
+
138
+ ## Machine API
139
+
140
+ For advanced use cases or when you need direct access to the XState machine, you can work with the machine API directly:
12
141
 
13
142
  ```typescript
14
143
  import { createNavigationNmeaMachine } from 'nmea-web-serial'
@@ -47,32 +176,24 @@ actor.send({ type: 'CONNECT' })
47
176
  actor.send({ type: 'DISCONNECT' })
48
177
  ```
49
178
 
50
- ## TypeScript
179
+ ## The Adapter Pattern
51
180
 
52
- This project is written in [TypeScript](http://www.typescriptlang.org/). The library can be used by plain JavaScript as shown above, and the typing information is included with the library so that anyone wishing to use TypeScript will gain the benefits of the type information.
181
+ The library uses an **adapter pattern** to transform raw NMEA packets into your application's data format. Here's how it works:
53
182
 
54
- ## Packet types supported
183
+ 1. **Raw Packets Storage**: As NMEA sentences are parsed, they're stored in a `packets` object keyed by sentence ID (e.g., `{ GGA: {...}, RMC: {...} }`).
55
184
 
56
- The library supports all packet types from [nmea-simple](https://www.npmjs.com/package/nmea-simple), plus the following custom depth sentences:
185
+ 2. **Adapter Function**: An adapter is a function that takes the current `packets` object and transforms it into your desired data structure. This function is called automatically whenever a new packet arrives.
57
186
 
58
- - `DPT` - Depth
59
- - `DBS` - Depth Below Surface
60
- - `DBK` - Depth Below Keel
187
+ 3. **Computed Data**: The result of the adapter function is stored as `data` in the machine context, which you can access via the client API or machine state.
61
188
 
62
- The navigation adapter uses the following sentence types to compute navigation data:
189
+ **Example Flow:**
190
+ ```
191
+ Raw NMEA Sentence → Parsed Packet → Stored in packets → Adapter Function → Computed Data
192
+ ```
63
193
 
64
- - `GGA` - GPS Fix Data
65
- - `RMC` - Recommended Minimum Specific GNSS Data
66
- - `GLL` - Geographic Position: Latitude/Longitude
67
- - `VTG` - Course Over Ground and Ground Speed
68
- - `HDT` - Heading, True
69
- - `HDG` - Heading, Deviation & Variation
70
- - `HDM` - Heading, Magnetic
71
- - `DPT` - Depth
72
- - `DBT` - Depth Below Transducer
73
- - `DBS` - Depth Below Surface
74
- - `DBK` - Depth Below Keel
75
- - `ZDA` - Time & Date
194
+ For example, the navigation adapter takes packets like `GGA`, `RMC`, `VTG`, etc., and computes a unified `NavigationData` object with `position`, `time`, `speed`, `heading`, and `depth` fields. It handles priority logic (e.g., prefer GGA over RMC for position) and data merging automatically.
195
+
196
+ You can create your own adapters to transform packets into any data structure that fits your application's needs.
76
197
 
77
198
  ## Navigation Data Adapter
78
199
 
@@ -81,7 +202,7 @@ The navigation adapter automatically computes navigation data from multiple NMEA
81
202
  - **Position**: GGA (with fix) → RMC (valid) → GLL (valid)
82
203
  - **Time**: ZDA → GGA → RMC → GLL (ZDA includes timezone for local time)
83
204
  - **Speed**: VTG → RMC
84
- - **Heading**: HDT → HDG → HDM (with external variation) → COG (from RMC/VTG)
205
+ - **Heading**: HDT → HDG → COG (from RMC/VTG)
85
206
  - **Depth**: DPT → DBT → DBS → DBK
86
207
 
87
208
  ## Custom Machines
@@ -114,6 +235,32 @@ const machine = createNmeaMachine({
114
235
  })
115
236
  ```
116
237
 
238
+ ## Packet Types Supported
239
+
240
+ The library supports all packet types from [nmea-simple](https://www.npmjs.com/package/nmea-simple), plus the following custom depth sentences:
241
+
242
+ - `DPT` - Depth
243
+ - `DBS` - Depth Below Surface
244
+ - `DBK` - Depth Below Keel
245
+
246
+ The navigation adapter uses the following sentence types to compute navigation data:
247
+
248
+ - `GGA` - GPS Fix Data
249
+ - `RMC` - Recommended Minimum Specific GNSS Data
250
+ - `GLL` - Geographic Position: Latitude/Longitude
251
+ - `VTG` - Course Over Ground and Ground Speed
252
+ - `HDT` - Heading, True
253
+ - `HDG` - Heading, Deviation & Variation
254
+ - `DPT` - Depth
255
+ - `DBT` - Depth Below Transducer
256
+ - `DBS` - Depth Below Surface
257
+ - `DBK` - Depth Below Keel
258
+ - `ZDA` - Time & Date
259
+
260
+ ## TypeScript
261
+
262
+ This project is written in [TypeScript](http://www.typescriptlang.org/). The library can be used by plain JavaScript as shown above, and the typing information is included with the library so that anyone wishing to use TypeScript will gain the benefits of the type information.
263
+
117
264
  ## Browser Support
118
265
 
119
266
  The Web Serial API is supported in:
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function Nn(){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 On(){const e=Nn();if(e.__xstate__)return e.__xstate__}const Cn=e=>{if(typeof window>"u")return;const t=On();t&&t.register(e)};class ht{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 Xt=".",Rn="",Qt="",jn="#",Gn="*",$t="xstate.init",Ln="xstate.error",ke="xstate.stop";function xn(e,t){return{type:`xstate.after.${e}.${t}`}}function ze(e,t){return{type:`xstate.done.state.${e}`,output:t}}function Un(e,t){return{type:`xstate.done.actor.${e}`,output:t,actorId:e}}function en(e,t){return{type:`xstate.error.actor.${e}`,error:t,actorId:e}}function tn(e){return{type:$t,input:e}}function G(e){setTimeout(()=>{throw e})}const qn=typeof Symbol=="function"&&Symbol.observable||"@@observable";function nn(e,t){const n=pt(e),r=pt(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?nn(n[i],r[i]):!1)}function $e(e){if(sn(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 pt(e){if(Sr(e))return e.value;if(typeof e!="string")return e;const t=$e(e);return Hn(t)}function Hn(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 mt(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 rn(e){return sn(e)?e:[e]}function U(e){return e===void 0?[]:rn(e)}function Je(e,t,n,r){return typeof e=="function"?e({context:t,event:n,self:r}):e}function sn(e){return Array.isArray(e)}function Wn(e){return e.type.startsWith("xstate.error.actor")}function Z(e){return rn(e).map(t=>typeof t>"u"||typeof t=="string"?{target:t}:t)}function on(e){if(!(e===void 0||e===Rn))return U(e)}function Ye(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 gt(e,t){return`${t}.${e}`}function et(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 vt(e,t){return`${e.sessionId}.${t}`}let Vn=0;function Bn(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,m,y,I=Math.random().toString(36).slice(2))=>{const C={source:d,target:p,event:m,delay:y,id:I,startedAt:Date.now()},R=vt(d,I);l._snapshot._scheduledEvents[R]=C;const K=a.setTimeout(()=>{delete s[R],delete l._snapshot._scheduledEvents[R],l._relay(d,p,m)},y);s[R]=K},cancel:(d,p)=>{const m=vt(d,p),y=s[m];delete s[m],delete l._snapshot._scheduledEvents[m],y!==void 0&&a.clearTimeout(y)},cancelAll:d=>{for(const p in l._snapshot._scheduledEvents){const m=l._snapshot._scheduledEvents[p];m.source===d&&u.cancel(d,m.id)}}},f=d=>{if(!o.size)return;const p={...d,rootId:e.sessionId};o.forEach(m=>m.next?.(p))},l={_snapshot:{_scheduledEvents:(t?.snapshot&&t.snapshot.scheduler)??{}},_bookId:()=>`x:${Vn++}`,_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 m=r.get(d);if(m&&m!==p)throw new Error(`Actor with system ID '${d}' already exists.`);r.set(d,p),i.set(p,d)},inspect:d=>{const p=Ye(d);return o.add(p),{unsubscribe(){o.delete(p)}}},_sendInspectionEvent:f,_relay:(d,p,m)=>{l._sendInspectionEvent({type:"@xstate.event",sourceRef:d,actorRef:p,event:m}),p._send(m)},scheduler:u,getSnapshot:()=>({_scheduledEvents:{...l._snapshot._scheduledEvents}}),start:()=>{const d=l._snapshot._scheduledEvents;l._snapshot._scheduledEvents={};for(const p in d){const{source:m,target:y,event:I,delay:C,id:R}=d[p];u.schedule(m,y,I,C,R)}},_clock:a,_logger:c};return l}let Ve=!1;const tt=1;let A=(function(e){return e[e.NotStarted=0]="NotStarted",e[e.Running=1]="Running",e[e.Stopped=2]="Stopped",e})({});const Kn={clock:{setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e)},logger:console.log.bind(console),devTools:!1};class zn{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 ht(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={...Kn,...n},{clock:i,logger:o,parent:s,syncSnapshot:a,id:c,systemId:u,inspect:f}=r;this.system=s?s.system:Bn(this,{clock:i,logger:o}),f&&!s&&this.system.inspect(Ye(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 m=[...d?d.values():[],...p?p.values():[]];for(const y of m)try{y(l)}catch(I){G(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=Ve;try{Ve=!0,l.exec(l.info,l.params)}finally{Ve=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){G(o)}break;case"done":for(const i of this.observers)try{i.next?.(t)}catch(o){G(o)}this._stopProcedure(),this._complete(),this._doneEvent=Un(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=Ye(t,n,r);if(this._processingStatus!==A.Stopped)this.observers.add(i);else switch(this._snapshot.status){case"done":try{i.complete?.()}catch(o){G(o)}break;case"error":{const o=this._snapshot.error;if(!i.error)G(o);else try{i.error(o)}catch(s){G(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=tn(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===ke&&(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:ke}),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){G(n)}this.observers.clear()}_reportError(t){if(!this.observers.size){this._parent||G(t);return}let n=!1;for(const r of this.observers){const i=r.error;n||=!i;try{i?.(t)}catch(o){G(o)}}this.observers.clear(),n&&G(t)}_error(t){this._stopProcedure(),this._reportError(t),this._parent&&this.system._relay(this,this._parent,en(this.id,t))}_stopProcedure(){return this._processingStatus!==A.Running?this:(this.system.scheduler.cancelAll(this),this.mailbox.clear(),this.mailbox=new ht(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:Cn)(this)}toJSON(){return{xstate$$type:tt,id:this.id}}getPersistedSnapshot(t){return this.logic.getPersistedSnapshot(this._snapshot,t)}[qn](){return this}getSnapshot(){return this._snapshot}}function Ae(e,...[t]){return new zn(e,t)}function Jn(e,t,n,r,{sendId:i}){const o=typeof i=="function"?i(n,r):i;return[t,{sendId:o},void 0]}function Yn(e,t){e.defer(()=>{e.system.scheduler.cancel(e.self,t.sendId)})}function nt(e){function t(n,r){}return t.type="xstate.cancel",t.sendId=e,t.resolve=Jn,t.execute=Yn,t}function Zn(e,t,n,r,{id:i,systemId:o,src:s,input:a,syncSnapshot:c}){const u=typeof s=="string"?et(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=Ae(u,{id:f,src:s,parent:e.self,syncSnapshot:c,systemId:o,input:d})),[B(t,{children:{...t.children,[f]:l}}),{id:i,systemId:o,actorRef:l,src:s,input:d},void 0]}function Xn(e,{actorRef:t}){t&&e.defer(()=>{t._processingStatus!==A.Stopped&&t.start()})}function rt(...[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=Zn,o.execute=Xn,o}function Qn(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]),[B(t,{children:a}),s,void 0]}function $n(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=Qn,t.execute=$n,t}function Re(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 Re(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 st=e=>e.type==="atomic"||e.type==="final";function Q(e){return Object.values(e.states).filter(t=>t.type!=="history")}function De(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 Ee(e){const t=new Set(e),n=cn(t);for(const r of t)if(r.type==="compound"&&(!n.get(r)||!n.get(r).length))yt(r).forEach(i=>t.add(i));else if(r.type==="parallel"){for(const i of Q(r))if(i.type!=="history"&&!t.has(i)){const o=yt(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 an(e,t){const n=t.get(e);if(!n)return{};if(e.type==="compound"){const i=n[0];if(i){if(st(i))return i.key}else return{}}const r={};for(const i of n)r[i.key]=an(i,t);return r}function cn(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 un(e,t){const n=Ee(t);return an(e,cn(n))}function it(e,t){return t.type==="compound"?Q(t).some(n=>n.type==="final"&&e.has(n)):t.type==="parallel"?Q(t).every(n=>it(e,n)):t.type==="final"}const je=e=>e[0]===jn;function er(e,t){return e.transitions.get(t)||[...e.transitions.keys()].filter(r=>{if(r===Gn)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 tr(e){const t=e.config.after;if(!t)return[];const n=i=>{const o=xn(i,e.id),s=o.type;return e.entry.push(ct(o,{id:s,delay:i})),e.exit.push(nt(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 U(s).map(u=>({...u,event:c,delay:a}))}).map(i=>{const{delay:o}=i;return{...W(e,i.event,i),delay:o}})}function W(e,t,n){const r=on(n.target),i=n.reenter??!1,o=sr(e,r),s={...n,actions:U(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 nr(e){const t=new Map;if(e.config.on)for(const n of Object.keys(e.config.on)){if(n===Qt)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=>W(e,n,i)))}if(e.config.onDone){const n=`xstate.done.state.${e.id}`;t.set(n,Z(e.config.onDone).map(r=>W(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=>W(e,r,i)))}if(n.onError){const r=`xstate.error.actor.${n.id}`;t.set(r,Z(n.onError).map(i=>W(e,r,i)))}if(n.onSnapshot){const r=`xstate.snapshot.${n.id}`;t.set(r,Z(n.onSnapshot).map(i=>W(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 rr(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"?[]:U(t.actions),eventType:null,reenter:!1,target:n?[n]:[],toJSON:()=>({...r,source:`#${e.id}`,target:n?[`#${n.id}`]:[]})};return r}function sr(e,t){if(t!==void 0)return t.map(n=>{if(typeof n!="string")return n;if(je(n))return e.machine.getStateNodeById(n);const r=n[0]===Xt;if(r&&!e.parent)return Fe(e,n.slice(1));const i=r?e.key+n:n;if(e.parent)try{return Fe(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 dn(e){const t=on(e.config.target);return t?{target:t.map(n=>typeof n=="string"?Fe(e.parent,n):n)}:e.parent.initial}function V(e){return e.type==="history"}function yt(e){const t=fn(e);for(const n of t)for(const r of De(n,e))t.add(r);return t}function fn(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 Q(r))n(i)}}return n(e),t}function $(e,t){if(je(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 Fe(e,t){if(typeof t=="string"&&je(t))try{return e.machine.getStateNodeById(t)}catch{}const n=$e(t).slice();let r=e;for(;n.length;){const i=n.shift();if(!i.length)break;r=$(r,i)}return r}function Ne(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=>$(e,i)).filter(Boolean);return[e.machine.root,e].concat(r,n.reduce((i,o)=>{const s=$(e,o);if(!s)return i;const a=Ne(s,t[o]);return i.concat(a)},[]))}function ir(e,t,n,r){const o=$(e,t).next(n,r);return!o||!o.length?e.next(n,r):o}function or(e,t,n,r){const i=Object.keys(t),o=$(e,i[0]),s=ot(o,t[i[0]],n,r);return!s||!s.length?e.next(n,r):s}function ar(e,t,n,r){const i=[];for(const o of Object.keys(t)){const s=t[o];if(!s)continue;const a=$(e,o),c=ot(a,s,n,r);c&&i.push(...c)}return i.length?i:e.next(n,r)}function ot(e,t,n,r){return typeof t=="string"?ir(e,t,n,r):Object.keys(t).length===1?or(e,t,n,r):ar(e,t,n,r)}function cr(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 ur(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 ln(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(ur(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 dr(e){const[t,...n]=e;for(const r of De(t,void 0))if(n.every(i=>q(i,r)))return r}function at(e,t){if(!e.target)return[];const n=new Set;for(const r of e.target)if(V(r))if(t[r.id])for(const i of t[r.id])n.add(i);else for(const i of at(dn(r),t))n.add(i);else n.add(r);return[...n]}function hn(e,t){const n=at(e,t);if(!n)return;if(!e.reenter&&n.every(i=>i===e.source||q(i,e.source)))return e.source;const r=dr(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=hn(i,n);i.reenter&&i.source===o&&r.add(o);for(const s of t)q(s,o)&&r.add(s)}return[...r]}function fr(e,t){if(e.length!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}function Xe(e,t,n,r,i,o){if(!e.length)return t;const s=new Set(t._nodes);let a=t.historyValue;const c=ln(e,s,a);let u=t;i||([u,a]=mr(u,r,n,c,s,a,o,n.actionExecutor)),u=ee(u,r,n,c.flatMap(l=>l.actions),o,void 0),u=hr(u,r,n,c,s,o,a,i);const f=[...s];u.status==="done"&&(u=ee(u,r,n,f.sort((l,d)=>d.order-l.order).flatMap(l=>l.exit),o,void 0));try{return a===t.historyValue&&fr(t._nodes,s)?u:B(u,{_nodes:f,historyValue:a})}catch(l){throw l}}function lr(e,t,n,r,i){if(r.output===void 0)return;const o=ze(i.id,i.output!==void 0&&i.parent?Je(i.output,e.context,t,n.self):void 0);return Je(r.output,e.context,o,n.self)}function hr(e,t,n,r,i,o,s,a){let c=e;const u=new Set,f=new Set;pr(r,s,f,u),a&&f.add(e.machine.root);const l=new Set;for(const d of[...u].sort((p,m)=>p.order-m.order)){i.add(d);const p=[];p.push(...d.entry);for(const m of d.invoke)p.push(rt(m.src,{...m,syncSnapshot:!!m.onSnapshot}));if(f.has(d)){const m=d.initial.actions;p.push(...m)}if(c=ee(c,t,n,p,o,d.invoke.map(m=>m.id)),d.type==="final"){const m=d.parent;let y=m?.type==="parallel"?m:m?.parent,I=y||d;for(m?.type==="compound"&&o.push(ze(m.id,d.output!==void 0?Je(d.output,c.context,t,n.self):void 0));y?.type==="parallel"&&!l.has(y)&&it(i,y);)l.add(y),o.push(ze(y.id)),I=y,y=y.parent;if(y)continue;c=B(c,{status:"done",output:lr(c,t,n,c.machine.root,I)})}}return c}function pr(e,t,n,r){for(const i of e){const o=hn(i,t);for(const a of i.target||[])!V(a)&&(i.source!==a||i.source!==o||i.reenter)&&(r.add(a),n.add(a)),X(a,t,n,r);const s=at(i,t);for(const a of s){const c=De(a,o);o?.type==="parallel"&&c.push(o),pn(r,t,n,c,!i.source.parent&&i.reenter?void 0:o)}}}function X(e,t,n,r){if(V(e))if(t[e.id]){const i=t[e.id];for(const o of i)r.add(o),X(o,t,n,r);for(const o of i)Be(o,e.parent,r,t,n)}else{const i=dn(e);for(const o of i.target)r.add(o),i===e.parent?.initial&&n.add(e.parent),X(o,t,n,r);for(const o of i.target)Be(o,e.parent,r,t,n)}else if(e.type==="compound"){const[i]=e.initial.target;V(i)||(r.add(i),n.add(i)),X(i,t,n,r),Be(i,e,r,t,n)}else if(e.type==="parallel")for(const i of Q(e).filter(o=>!V(o)))[...r].some(o=>q(o,i))||(V(i)||(r.add(i),n.add(i)),X(i,t,n,r))}function pn(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 Q(o).filter(a=>!V(a)))[...e].some(a=>q(a,s))||(e.add(s),X(s,t,n,e))}function Be(e,t,n,r,i){pn(n,r,i,De(e,t))}function mr(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 cr(l)){let p;d.history==="deep"?p=m=>st(m)&&q(m,l):p=m=>m.parent===l,f??={...o},f[d.id]=Array.from(i).filter(p)}for(const l of u)c=ee(c,t,n,[...l.exit,...l.invoke.map(d=>Ce(d.id))],s,void 0),i.delete(l);return[c,f||o]}function gr(e,t){return e.implementations.actions[t]}function mn(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:gr(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,[m,y,I]=p.resolve(n,a,l,d,f,i);a=m,"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=mn(a,t,n,I,i,o))}return a}function ee(e,t,n,r,i,o){const s=o?[]:void 0,a=mn(e,t,n,r,{internalQueue:i,deferredActorIds:o},s);return s?.forEach(([c,u])=>{c.retryResolve(n,a,u)}),a}function Ke(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===ke)return i=B(St(i,t,n),{status:"stopped"}),s(i,t,[]),{snapshot:i,microstates:o};let a=t;if(a.type!==$t){const u=a,f=Wn(u),l=_t(u,i);if(f&&!l.length)return i=B(e,{status:"error",error:u.error}),s(i,u,[]),{snapshot:i,microstates:o};i=Xe(l,e,n,a,!1,r),s(i,u,l)}let c=!0;for(;i.status==="active";){let u=c?vr(i,a):[];const f=u.length?i:void 0;if(!u.length){if(!r.length)break;a=r.shift(),u=_t(a,i)}i=Xe(u,i,n,a,!1,r),c=i!==f,s(i,a,u)}return i.status!=="active"&&St(i,a,n),{snapshot:i,microstates:o}}function St(e,t,n){return ee(e,t,n,Object.values(e.children).map(r=>Ce(r)),[],void 0)}function _t(e,t){return t.machine.getTransitionData(t,e)}function vr(e,t){const n=new Set,r=e._nodes.filter(st);for(const i of r)e:for(const o of[i].concat(De(i,void 0)))if(o.always){for(const s of o.always)if(s.guard===void 0||Re(s.guard,e.context,t,e)){n.add(s);break e}}return ln(Array.from(n),new Set(e._nodes),e.historyValue)}function yr(e,t){const n=Ee(Ne(e,t));return un(e,[...n])}function Sr(e){return!!e&&typeof e=="object"&&"machine"in e&&"value"in e}const _r=function(t){return nn(t,this.value)},br=function(t){return this.tags.has(t)},Tr=function(t){const n=this.machine.getTransitionData(this,t);return!!n?.length&&n.some(r=>r.target!==void 0||r.actions.length)},Ir=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)}},wr=function(){return this._nodes.reduce((t,n)=>(n.meta!==void 0&&(t[n.id]=n.meta),t),{})};function Me(e,t){return{status:e.status,output:e.output,error:e.error,machine:t,context:e.context,_nodes:e._nodes,value:un(t.root,e._nodes),tags:new Set(e._nodes.flatMap(n=>n.tags)),children:e.children,historyValue:e.historyValue||{},matches:_r,hasTag:br,can:Tr,getMeta:wr,toJSON:Ir}}function B(e,t={}){return Me({...e,...t},e.machine)}function kr(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 Dr(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:gn(s),children:p,historyValue:kr(d.historyValue)}}function gn(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:tt,id:r.id};else{const i=gn(r);i!==r&&(t??=Array.isArray(e)?e.slice():{...e},t[n]=i)}}return t??e}function Pr(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 Mr(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 ct(e,t){function n(r,i){}return n.type="xstate.raise",n.event=e,n.id=t?.id,n.delay=t?.delay,n.resolve=Pr,n.execute=Mr,n}const bt=new WeakMap;function Ar(e){return{config:e,start:(n,r)=>{const{self:i,system:o,emit:s}=r,a={receivers:void 0,dispose:void 0};bt.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=bt.get(i.self);return r.type===ke?(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 Tt="xstate.promise.resolve",It="xstate.promise.reject",Pe=new WeakMap;function vn(e){return{config:e,transition:(n,r,i)=>{if(n.status!=="active")return n;switch(r.type){case Tt:{const o=r.data;return{...n,status:"done",output:o,input:void 0}}case It:return{...n,status:"error",error:r.data,input:void 0};case ke:return Pe.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;Pe.set(r,s),Promise.resolve(e({input:n.input,system:i,self:r,signal:s.signal,emit:o})).then(c=>{r.getSnapshot().status==="active"&&(Pe.delete(r),i._relay(r,r,{type:Tt,data:c}))},c=>{r.getSnapshot().status==="active"&&(Pe.delete(r),i._relay(r,r,{type:It,data:c}))})},getInitialSnapshot:(n,r)=>({status:"active",output:void 0,error:void 0,input:r}),getPersistedSnapshot:n=>n,restoreSnapshot:n=>n}}function Er(e,{machine:t,context:n},r,i){const o=(s,a)=>{if(typeof s=="string"){const c=et(t,s);if(!c)throw new Error(`Actor logic '${s}' not implemented in machine '${t.id}'`);const u=Ae(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 Ae(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 Fr(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:Er(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[B(t,{context:c,children:Object.keys(o).length?{...t.children,...o}:t.children}),void 0,void 0]}function N(e){function t(n,r){}return t.type="xstate.assign",t.assignment=e,t.resolve=Fr,t}const wt=new WeakMap;function Y(e,t,n){let r=wt.get(e);return r?t in r||(r[t]=n()):(r={[t]:n()},wt.set(e,r)),r[t]}const Nr={},ne=e=>typeof e=="string"?{type:e}:typeof e=="function"?"resolve"in e?{type:e.type}:{type:e.name}:e;class Oe{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(Xt),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?mt(this.config.states,(r,i)=>new Oe(r,{_parent:this,_key:i,_machine:this.machine})):Nr,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=U(this.config.entry).slice(),this.exit=U(this.config.exit).slice(),this.meta=this.config.meta,this.output=this.type==="final"||!this.parent?this.config.output:void 0,this.tags=U(t.tags).slice()}_initialize(){this.transitions=nr(this),this.config.always&&(this.always=Z(this.config.always).map(t=>W(this,Qt,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(ne),eventType:null,reenter:!1,toJSON:()=>({target:this.initial.target.map(t=>`#${t.id}`),source:`#${this.id}`,actions:this.initial.actions.map(ne),eventType:null})}:void 0,history:this.history,states:mt(this.states,t=>t.definition),on:this.on,transitions:[...this.transitions.values()].flat().map(t=>({...t,actions:t.actions.map(ne)})),entry:this.entry.map(ne),exit:this.exit.map(ne),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 Y(this,"invoke",()=>U(this.config.invoke).map((t,n)=>{const{src:r,systemId:i}=t,o=t.id??gt(this.id,n),s=typeof r=="string"?r:`xstate.invoke.${gt(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 Y(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 Y(this,"delayedTransitions",()=>tr(this))}get initial(){return Y(this,"initial",()=>rr(this,this.config.initial))}next(t,n){const r=n.type,i=[];let o;const s=Y(this,`candidates-${r}`,()=>er(this,r));for(const a of s){const{guard:c}=a,u=t.context;let f=!1;try{f=!c||Re(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 Y(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 Or="#";class ut{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 Oe(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 ut(this.config,{actions:{...n,...t.actions},guards:{...r,...t.guards},actors:{...i,...t.actors},delays:{...o,...t.delays}})}resolveState(t){const n=yr(this.root,t.value),r=Ee(Ne(this.root,n));return Me({_nodes:[...r],context:t.context||{},children:{},status:it(r,this.root)?"done":t.status||"active",output:t.output,error:t.error,historyValue:t.historyValue},this)}transition(t,n,r){return Ke(t,n,r,[]).snapshot}microstep(t,n,r){return Ke(t,n,r,[]).microstates}getTransitionData(t,n){return ot(this.root,t.value,t,n)||[]}getPreInitialState(t,n,r){const{context:i}=this.config,o=Me({context:typeof i!="function"&&i?i:{},_nodes:[this.root],children:{},status:"active"},this);return typeof i=="function"?ee(o,n,t,[N(({spawn:a,event:c,self:u})=>i({spawn:a,input:c.input,self:u}))],r,void 0):o}getInitialSnapshot(t,n){const r=tn(n),i=[],o=this.getPreInitialState(t,r,i),s=Xe([{target:[...fn(this.root)],source:this.root,reenter:!0,actions:[],eventType:null,toJSON:null}],o,t,r,!0,i),{snapshot:a}=Ke(s,r,t,i);return a}start(t){Object.values(t.children).forEach(n=>{n.getSnapshot().status==="active"&&n.start()})}getStateNodeById(t){const n=$e(t),r=n.slice(1),i=je(n[0])?n[0].slice(Or.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 Fe(o,r)}get definition(){return this.root.definition}toJSON(){return this.definition}getPersistedSnapshot(t,n){return Dr(t,n)}restoreSnapshot(t,n){const r={},i=t.children;Object.keys(i).forEach(l=>{const d=i[l],p=d.snapshot,m=d.src,y=typeof m=="string"?et(this,m):m;if(!y)return;const I=Ae(y,{id:l,parent:n.self,syncSnapshot:d.syncSnapshot,snapshot:p,src:m,systemId:d.systemId});r[l]=I});function o(l,d){if(d instanceof Oe)return d;try{return l.machine.getStateNodeById(d.id)}catch{}}function s(l,d){if(!d||typeof d!="object")return{};const p={};for(const m in d){const y=d[m];for(const I of y){const C=o(l,I);C&&(p[m]??=[],p[m].push(C))}}return p}const a=s(this.root,t.historyValue),c=Me({...t,children:r,_nodes:Array.from(Ee(Ne(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 m=l[p];if(m&&typeof m=="object"){if("xstate$$type"in m&&m.xstate$$type===tt){l[p]=d[m.id];continue}f(m,d)}}}}return f(c.context,r),c}}function Cr(e,t,n,r,{event:i}){const o=typeof i=="function"?i(n,r):i;return[t,{event:o},void 0]}function Rr(e,{event:t}){e.defer(()=>e.emit(t))}function yn(e){function t(n,r){}return t.type="xstate.emit",t.event=e,t.resolve=Cr,t.execute=Rr,t}let Qe=(function(e){return e.Parent="#_parent",e.Internal="#_internal",e})({});function jr(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 m=u&&u[a];l=typeof m=="function"?m(n,r):m}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===Qe.Parent?p=e.self._parent:d===Qe.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 Gr(e,t,n){typeof n.to=="string"&&(n.to=t.children[n.to])}function Lr(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===Ln?en(e.self.id,r.data):r)})}function Ge(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=jr,r.retryResolve=Gr,r.execute=Lr,r}function xr(e,t){return Ge(Qe.Parent,e,t)}function Ur(e,t,n,r,{collect:i}){const o=[],s=function(c){o.push(c)};return s.assign=(...a)=>{o.push(N(...a))},s.cancel=(...a)=>{o.push(nt(...a))},s.raise=(...a)=>{o.push(ct(...a))},s.sendTo=(...a)=>{o.push(Ge(...a))},s.sendParent=(...a)=>{o.push(xr(...a))},s.spawnChild=(...a)=>{o.push(rt(...a))},s.stopChild=(...a)=>{o.push(Ce(...a))},s.emit=(...a)=>{o.push(yn(...a))},i({context:n.context,event:n.event,enqueue:s,check:a=>Re(a,t.context,n.event,t),self:e.self,system:e.system},r),[t,void 0,o]}function qr(e){function t(n,r){}return t.type="xstate.enqueueActions",t.collect=e,t.resolve=Ur,t}function Hr(e,t,n,r,{value:i,label:o}){return[t,{value:typeof i=="function"?i(n,r):i,label:o},void 0]}function Wr({logger:e},{value:t,label:n}){n?e(n,t):e(t)}function Vr(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=Hr,n.execute=Wr,n}function Br(e,t){return new ut(e,t)}function Sn({schemas:e,actors:t,actions:n,guards:r,delays:i}){return{assign:N,sendTo:Ge,raise:ct,log:Vr,cancel:nt,stopChild:Ce,enqueueActions:qr,emit:yn,spawnChild:rt,createStateConfig:o=>o,createAction:o=>o,createMachine:o=>Br({...o,schemas:e},{actors:t,actions:n,guards:r,delays:i}),extend:o=>Sn({schemas:e,actors:t,actions:{...n,...o.actions},guards:{...r,...o.guards},delays:{...i,...o.delays}})}}var F={},re={},T={},kt;function k(){if(kt)return T;kt=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 g=h>>4&15,v=h>>0&15;return e[g]+e[v]}T.toHexString=t;function n(h,g,v){for(var S=typeof h=="string"?h:h.toFixed(0);S.length<g;)S=v+S;return S}T.padLeft=n;function r(h){var g=h.split("*"),v=g[0],S=g[1],P=i(v),E=parseInt(S,16);return P===E}T.validNmeaChecksum=r;function i(h){for(var g=h.charCodeAt(1),v=2;v<h.length;v+=1)g=g^h.charCodeAt(v);return g=g&255,g}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,g){return h===void 0?"":h.toFixed(g)}T.encodeFixed=a;function c(h){if(h===void 0)return",";var g;h<0?(g="S",h=-h):g="N";var v=Math.floor(h),S=n(v,2,"0"),P=h-v,E=P*60,j=n(E.toFixed(6),9,"0");return S=S+j+","+g,S}T.encodeLatitude=c;function u(h){if(h===void 0)return",";var g;h<0?(g="W",h=-h):g="E";var v=Math.floor(h),S=n(v,3,"0"),P=h-v,E=P*60,j=n(E.toFixed(6),9,"0");return S=S+j+","+g,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 m(h){return h===void 0?"":n(h.toFixed(2),6,"0")}T.encodeDegrees=m;function y(h){if(h===void 0)return"";var g=h.getUTCFullYear(),v=h.getUTCMonth()+1,S=h.getUTCDate();return n(S,2,"0")+n(v,2,"0")+g.toFixed(0).substr(2)}T.encodeDate=y;function I(h){if(h===void 0)return"";var g=h.getUTCHours(),v=h.getUTCMinutes(),S=h.getUTCSeconds();return n(g,2,"0")+n(v,2,"0")+n(S,2,"0")}T.encodeTime=I;function C(h){return h===void 0?"":h.toString()}T.encodeValue=C;function R(h){return h===""?0:parseFloat(h)}T.parseFloatSafe=R;function K(h){return h===""?0:parseInt(h,10)}T.parseIntSafe=K;function xe(h){if(h===void 0)return"";var g=parseFloat(h);return g===NaN?h:g}T.parseNumberOrString=xe;function te(h){var g=h.indexOf(".");if(g<0)return 0;var v,S;return g>=3?(v=h.substring(0,g-2),S=h.substring(g-2)):(v="0",S=h),parseFloat(v)+parseFloat(S)/60}T.parseDmCoordinate=te;function Ue(h,g){var v=g==="N"?1:-1;return te(h)*v}T.parseLatitude=Ue;function qe(h,g){var v=g==="E"?1:-1;return te(h)*v}T.parseLongitude=qe;function He(h,g){if(h==="")return new Date(0);var v=new Date;if(g){var S=g.slice(4),P=parseInt(g.slice(2,4),10)-1,E=g.slice(0,2);S.length===4?v.setUTCFullYear(Number(S),Number(P),Number(E)):v.setUTCFullYear(+("20"+S),Number(P),Number(E))}v.setUTCHours(Number(h.slice(0,2))),v.setUTCMinutes(Number(h.slice(2,4))),v.setUTCSeconds(Number(h.slice(4,6)));var j=h.slice(7),z=j.length,H=0;return z!==0&&(H=parseFloat(j)*Math.pow(10,3-z)),v.setUTCMilliseconds(Number(H)),v}T.parseTime=He;function We(h,g){var v=parseInt(h.slice(0,2),10),S=parseInt(h.slice(2,4),10),P=parseInt(h.slice(4,6),10);P<73?P=P+2e3:P=P+1900;var E=parseInt(g.slice(0,2),10),j=parseInt(g.slice(2,4),10),z=parseInt(g.slice(4,6),10),H=0;return g.length===9&&(H=parseInt(g.slice(7,9),10)*10),new Date(Date.UTC(P,S-1,v,E,j,z,H))}return T.parseDatetime=We,T}var se={},Dt;function w(){if(Dt)return se;Dt=1,Object.defineProperty(se,"__esModule",{value:!0});function e(n,r,i){return{sentenceId:r,talkerId:n.talkerId,chxOk:n.chxOk,sentenceName:i}}se.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 se.parseStub=t,se}var Pt;function Kr(){return Pt||(Pt=1,(function(e){var t=re&&re.__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=k(),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})(re)),re}var ie={},Mt;function zr(){return Mt||(Mt=1,(function(e){var t=ie&&ie.__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=k(),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})(ie)),ie}var oe={},At;function Jr(){return At||(At=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=k(),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})(oe)),oe}var ae={},Et;function Yr(){return Et||(Et=1,(function(e){var t=ae&&ae.__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=k(),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":""}})(ae)),ae}var ce={},Ft;function Zr(){return Ft||(Ft=1,(function(e){var t=ce&&ce.__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=k(),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})(ce)),ce}var ue={},Nt;function Xr(){return Nt||(Nt=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=k(),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})(ue)),ue}var de={},Ot;function Qr(){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=k(),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})(de)),de}var fe={},Ct;function $r(){return Ct||(Ct=1,(function(e){var t=fe&&fe.__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=k(),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})(fe)),fe}var le={},Rt;function es(){return Rt||(Rt=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=k(),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})(le)),le}var he={},jt;function ts(){return jt||(jt=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=k(),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})(he)),he}var pe={},Gt;function ns(){return Gt||(Gt=1,(function(e){var t=pe&&pe.__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=k(),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})(pe)),pe}var me={},Lt;function rs(){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=k(),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})(me)),me}var ge={},xt;function ss(){return xt||(xt=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=k(),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={},Ut;function is(){return Ut||(Ut=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=k(),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 ye={},qt;function os(){return qt||(qt=1,(function(e){var t=ye&&ye.__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=k(),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})(ye)),ye}var Se={},Ht;function as(){return Ht||(Ht=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=k(),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})(Se)),Se}var _e={},Wt;function cs(){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=k(),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})(_e)),_e}var be={},Vt;function us(){return Vt||(Vt=1,(function(e){var t=be&&be.__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=k(),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})(be)),be}var Te={},Bt;function ds(){return Bt||(Bt=1,(function(e){var t=Te&&Te.__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=k(),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})(Te)),Te}var Ie={},Kt;function fs(){return Kt||(Kt=1,(function(e){var t=Ie&&Ie.__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=k(),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})(Ie)),Ie}var we={},zt;function _n(){return zt||(zt=1,(function(e){var t=we&&we.__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})(we)),we}var Jt;function ls(){if(Jt)return F;Jt=1;var e=F&&F.__extends||(function(){var _=function(b,D){return _=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(M,x){M.__proto__=x}||function(M,x){for(var J in x)x.hasOwnProperty(J)&&(M[J]=x[J])},_(b,D)};return function(b,D){_(b,D);function M(){this.constructor=b}b.prototype=D===null?Object.create(D):(M.prototype=D.prototype,new M)}})();Object.defineProperty(F,"__esModule",{value:!0});var t=Kr(),n=zr(),r=Jr(),i=Yr(),o=Zr(),s=Xr(),a=Qr(),c=$r(),u=es(),f=ts(),l=ns(),d=rs(),p=ss(),m=is(),y=os(),I=as(),C=cs(),R=us(),K=ds(),xe=fs(),te=w(),Ue=_n(),qe=k(),He={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:m.decodeSentence,MWV:y.decodeSentence,RDID:I.decodeSentence,RMC:C.decodeSentence,VHW:R.decodeSentence,VTG:K.decodeSentence,ZDA:xe.decodeSentence},We={DBT:r.encodePacket,GGA:o.encodePacket,GLL:s.encodePacket,GNS:a.encodePacket,HDM:d.encodePacket,HDT:p.encodePacket,MTK:m.encodePacket,MWV:y.encodePacket,VTG:K.encodePacket},h=(function(){function _(b){b===void 0&&(b=!1),this.ableToParseBadChecksum=b}return _.getParser=function(b){return b.sentenceId.substr(0,3)==="MTK"?m.decodeSentence:He[b.sentenceId]},_.prototype.assemble=function(b,D){var M=_.getParser(b);return M?M(b,D):this.assembleCustomPacket(b,D)},_.prototype.assembleCustomPacket=function(b,D){return null},_})();F.DefaultPacketFactory=h;var g=new h;function v(_,b){var D=!0;if(!qe.validNmeaChecksum(_)){if(!b.ableToParseBadChecksum)throw Error('Invalid sentence: "'+_+'".');D=!1}var M=_.split("*")[0].split(","),x=te.parseStub(M[0],D),J=b.assemble(x,M);if(!J)throw Error('No known parser for sentence ID "'+x.sentenceId+'".');return J}F.parseGenericPacket=v;function S(_){return v(_,g)}F.parseNmeaSentence=S;function P(_,b){if(b===void 0&&(b="P"),_===void 0)throw new Error("Packet must be given.");var D=We[_.sentenceId];if(D)return D(_,b);throw Error('No known encoder for sentence ID "'+_.sentenceId+'"')}F.encodeNmeaPacket=P;var E=(function(_){e(b,_);function b(){return _.call(this,!0)||this}return b.prototype.assembleCustomPacket=function(D,M){return Ue.decodeSentence(D,M)},b})(h);F.UnsafePacketFactory=E;var j=new E;function z(_){return v(_,j)}F.parseUnsafeNmeaSentence=z;function H(_){return _.sentenceId==="?"?_.originalPacketId:_.sentenceId}return F.getUnsafePacketId=H,F}var Le=ls(),hs=_n(),dt=w();const Yt=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];function bn(e){const t=e>>4&15,n=e>>0&15;return Yt[t]+Yt[n]}function O(e,t,n){let r=typeof e=="string"?e:e.toFixed(0);for(;r.length<t;)r=n+r;return r}function ps(e){const[t,n]=e.split("*"),r=ft(t),i=Number.parseInt(n,16);return r===i}function ft(e){let t=e.charCodeAt(1);for(let n=2;n<e.length;n+=1)t=t^e.charCodeAt(n);return t=t&255,t}function Tn(e){return`*${bn(ft(e))}`}function ms(e){return e+Tn(e)}function gs(e,t){return e===void 0?"":e.toFixed(t)}function vs(e){if(e===void 0)return",";let t;e<0?(t="S",e=-e):t="N";const n=Math.floor(e);let r=O(n,2,"0");const o=(e-n)*60,s=O(o.toFixed(6),9,"0");return r=`${r+s},${t}`,r}function ys(e){if(e===void 0)return",";let t;e<0?(t="W",e=-e):t="E";const n=Math.floor(e);let r=O(n,3,"0");const o=(e-n)*60,s=O(o.toFixed(6),9,"0");return r=`${r+s},${t}`,r}function Ss(e){return e===void 0?",":`${e.toFixed(1)},M`}function _s(e){return e===void 0?"":e.toFixed(1)}function bs(e){return e===void 0?",":`${e.toFixed(1)},M`}function Ts(e){return e===void 0?"":e.toFixed(1)}function Is(e){return e===void 0?"":O(e.toFixed(2),6,"0")}function ws(e){if(e===void 0)return"";const t=e.getUTCFullYear(),n=e.getUTCMonth()+1,r=e.getUTCDate();return O(r,2,"0")+O(n,2,"0")+t.toFixed(0).substr(2)}function ks(e){if(e===void 0)return"";const t=e.getUTCHours(),n=e.getUTCMinutes(),r=e.getUTCSeconds();return O(t,2,"0")+O(n,2,"0")+O(r,2,"0")}function Ds(e){return e===void 0?"":String(e)}function L(e){return e===""?0:Number.parseFloat(e)}function Ps(e){return e===""?0:Number.parseInt(e,10)}function Ms(e){if(e===void 0)return"";const t=Number.parseFloat(e);return Number.isNaN(t)?e:t}function lt(e){const t=e.indexOf(".");if(t<0)return 0;let n,r;return t>=3?(n=e.substring(0,t-2),r=e.substring(t-2)):(n="0",r=e),Number.parseFloat(n)+Number.parseFloat(r)/60}function As(e,t){const n=t==="N"?1:-1;return lt(e)*n}function Es(e,t){const n=t==="E"?1:-1;return lt(e)*n}function Fs(e,t){if(e.length===4)return Number(e);if(e.length===2)if(t){let n=Number(e);return n<73?n=2e3+n:n=1900+n,n}else return+`20${e}`;else throw new Error(`Unexpected year string: ${e}`)}function Ns(e,t,n=!1){if(e==="")return new Date(0);const r=new Date;if(t){const a=t.slice(4),c=Number.parseInt(t.slice(2,4),10)-1,u=t.slice(0,2);r.setUTCFullYear(Fs(a,n),Number(c),Number(u))}r.setUTCHours(Number(e.slice(0,2))),r.setUTCMinutes(Number(e.slice(2,4))),r.setUTCSeconds(Number(e.slice(4,6)));const i=e.slice(7),o=i.length;let s=0;return o!==0&&(s=Number.parseFloat(i)*10**(3-o)),r.setUTCMilliseconds(Number(s)),r}const Os="DBK",Cs="Depth Below Keel";function Rs(e,t){return{...dt.initStubFields(e,Os,Cs),depthFeet:L(t[1]),depthMeters:L(t[3]),depthFathoms:L(t[5])}}const js="DBS",Gs="Depth Below Surface";function Ls(e,t){return{...dt.initStubFields(e,js,Gs),depthFeet:L(t[1]),depthMeters:L(t[3]),depthFathoms:L(t[5])}}const xs="DPT",Us="Depth of Water";function qs(e,t){return{...dt.initStubFields(e,xs,Us),depthMeters:L(t[1]),offsetMeters:L(t[2]),maximumRangeScale:L(t[3])}}function In(e,t){switch(e.talkerId){case"DBS":return Ls(e,t);case"DBK":return Rs(e,t);case"DPT":return qs(e,t);default:return null}}class Hs extends Le.DefaultPacketFactory{assembleCustomPacket(t,n){return In(t,n)}}const Ws=new Hs;function Vs(e){return Le.parseGenericPacket(e,Ws)}class Bs extends Le.DefaultPacketFactory{constructor(){super(!0)}assembleCustomPacket(t,n){const r=In(t,n);return r||hs.decodeSentence(t,n)}}const Ks=new Bs;function wn(e){return Le.parseGenericPacket(e,Ks)}function Zt(e,t){return!t||t.length===0?!0:e!==void 0&&t.includes(e)}class zs{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 Js=vn(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}),Ys=vn(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)}}),Zs=Ar(({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 zs,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=wn(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 kn(e){const{adapter:t,allowedSentenceIds:n,initialData:r,initialPackets:i}=e;return Sn({actors:{connectToSerial:Js,readNmeaStream:Zs,closePort:Ys},actions:{setPort:N((o,s)=>({port:s.port,error:null})),setError:N((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;Zt(c,n)&&console.log(`${c} Packet:`,s.packet)},storePacket:N(({context:o},s)=>{const c=s.packet.sentenceId;if(c&&Zt(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:N((o,s)=>({error:s.error})),setFatalError:N((o,s)=>({error:s.error})),disconnect:N({port:null,error:null,packets:i,data:r}),setLogging:N((o,s)=>({enableLogging:s.enabled})),setBaudRate:N((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:Ge("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 Xs(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 Qs(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 $s(e,t){return e?{knots:e.speedKnots,source:"VTG"}:t&&t.status==="valid"?{knots:t.speedKnots,source:"RMC"}:null}function ei(e){return e.variationDirection==="W"?-e.variation:(e.variationDirection==="E",e.variation)}function ti(e,t,n,r,i,o){if(e&&e.heading!==void 0)return{degreesTrue:e.heading,source:"HDT",isDerived:!1};if(t&&t.heading!==void 0){const a=ei(t);return{degreesTrue:t.heading+a,source:"HDG",isDerived:!1}}if(n&&n.heading!==void 0&&o!==void 0)return{degreesTrue:n.heading+o,source:"HDM",isDerived:!1};const s=r?.trackTrue??i?.trackTrue;return s!==void 0?{degreesTrue:s,source:"COG",isDerived:!0}:null}function ni(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 Dn(e,t){const n=Qs(e.ZDA,e.GGA,e.RMC,e.GLL),r=Xs(e.GGA,e.RMC,e.GLL),i=$s(e.VTG,e.RMC),o=ti(e.HDT,e.HDG,e.HDM,e.RMC,e.VTG,t),s=ni(e.DPT,e.DBT,e.DBS,e.DBK);return{time:n,position:r,speed:i,heading:o,depth:s}}const Pn=["GGA","RMC","GLL","VTG","HDT","HDG","HDM","DPT","DBT","DBS","DBK","ZDA"];function Mn(e){return t=>Dn(t,e)}const An={time:null,position:null,speed:null,heading:null,depth:null},En={};function Fn(e){return{adapter:Mn(e?.externalVariation),allowedSentenceIds:e?.allowedSentenceIds??Pn,initialData:An,initialPackets:En}}function ri(e){return kn(Fn(e))}exports.NAVIGATION_SENTENCE_IDS=Pn;exports.appendChecksumFooter=ms;exports.computeNavigationData=Dn;exports.computeNmeaChecksum=ft;exports.createNavigationAdapter=Mn;exports.createNavigationNmeaConfig=Fn;exports.createNavigationNmeaMachine=ri;exports.createNmeaChecksumFooter=Tn;exports.createNmeaMachine=kn;exports.encodeAltitude=Ss;exports.encodeAltitudeNoUnits=_s;exports.encodeDate=ws;exports.encodeDegrees=Is;exports.encodeFixed=gs;exports.encodeGeoidalSeperation=bs;exports.encodeGeoidalSeperationNoUnits=Ts;exports.encodeLatitude=vs;exports.encodeLongitude=ys;exports.encodeTime=ks;exports.encodeValue=Ds;exports.initialNavigationData=An;exports.initialNavigationPackets=En;exports.padLeft=O;exports.parseDmCoordinate=lt;exports.parseFloatSafe=L;exports.parseIntSafe=Ps;exports.parseLatitude=As;exports.parseLongitude=Es;exports.parseNmeaSentence=Vs;exports.parseNumberOrString=Ms;exports.parseTime=Ns;exports.parseUnsafeNmeaSentence=wn;exports.toHexString=bn;exports.validNmeaChecksum=ps;
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;