@signalk/freeboard-sk 2.14.0 → 2.14.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/CHANGELOG.md +15 -0
- package/package.json +19 -19
- package/plugin/weather/openweather.js +4 -4
- package/public/3rdpartylicenses.txt +153 -7
- package/public/78.d4c5c5157ba92d44.js +1 -0
- package/public/assets/help/index.html +92 -20
- package/public/assets/img/{ais_active.svg → vessels/ais_active.svg} +5 -5
- package/public/assets/img/{ais_buddy.svg → vessels/ais_buddy.svg} +5 -5
- package/public/assets/img/{ais_cargo.svg → vessels/ais_cargo.svg} +5 -5
- package/public/assets/img/{ais_highspeed.svg → vessels/ais_highspeed.svg} +5 -5
- package/public/assets/img/{ais_inactive.svg → vessels/ais_inactive.svg} +5 -5
- package/public/assets/img/{ais_other.svg → vessels/ais_other.svg} +5 -5
- package/public/assets/img/{ais_passenger.svg → vessels/ais_passenger.svg} +5 -5
- package/public/assets/img/{ais_special.svg → vessels/ais_special.svg} +5 -5
- package/public/assets/img/{ais_tanker.svg → vessels/ais_tanker.svg} +5 -5
- package/public/index.html +3 -3
- package/public/main.51f0a336e1edbb3e.js +1 -0
- package/public/polyfills.45968bfada535c74.js +1 -0
- package/public/{runtime.6aa83b1321328ad0.js → runtime.6237108b22a63408.js} +1 -1
- package/public/styles.ca697d30ce6fe074.css +1 -0
- package/plugin/autopilot/pypilot.js +0 -319
- package/public/852.f44ac7e36ef8ff50.js +0 -1
- package/public/main.9037b6c388247b8e.js +0 -1
- package/public/polyfills.bf508ef8069fb5c5.js +0 -1
- package/public/styles.d4b33102dd9d01a6.css +0 -1
- /package/public/assets/img/{ais_flag.svg → vessels/ais_flag.svg} +0 -0
- /package/public/assets/img/{ais_self.png → vessels/ais_self.png} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# CHANGELOG: Freeboard
|
|
2
2
|
|
|
3
|
+
### v2.14.2
|
|
4
|
+
|
|
5
|
+
- **Update**: Hide More / Less buttoon when Alert does not have addittional properties (#272)
|
|
6
|
+
- **Fixed**: Refresh of charts list after the addition of a new chart source. (#266)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### v2.14.1
|
|
10
|
+
|
|
11
|
+
- **Fixed**: Unhandled error when Track resource has an undefined name property. (#262)
|
|
12
|
+
- **Fixed**: Self Vessel trail is not reset when focus is given to another vessel. (#268)
|
|
13
|
+
- **Update**: Display distance from self vessel in AIS vessel information. (#269)
|
|
14
|
+
- **Update**: GPX Import error reporting.
|
|
15
|
+
- **Update**: Angular v19.
|
|
16
|
+
|
|
17
|
+
|
|
3
18
|
### v2.14.0
|
|
4
19
|
|
|
5
20
|
#### Deprecated: Local PyPilot support.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@signalk/freeboard-sk",
|
|
3
|
-
"version": "2.14.
|
|
3
|
+
"version": "2.14.2",
|
|
4
4
|
"description": "Openlayers chart plotter implementation for Signal K",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"signalk-webapp",
|
|
@@ -45,19 +45,19 @@
|
|
|
45
45
|
"uuid": "^11.1.0"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@angular-devkit/build-angular": "^
|
|
49
|
-
"@angular/animations": "^
|
|
50
|
-
"@angular/cdk": "^
|
|
51
|
-
"@angular/cli": "^
|
|
52
|
-
"@angular/common": "^
|
|
53
|
-
"@angular/compiler": "^
|
|
54
|
-
"@angular/compiler-cli": "^
|
|
55
|
-
"@angular/core": "^
|
|
56
|
-
"@angular/forms": "^
|
|
57
|
-
"@angular/language-service": "^
|
|
58
|
-
"@angular/material": "^
|
|
59
|
-
"@angular/platform-browser": "^
|
|
60
|
-
"@angular/platform-browser-dynamic": "^
|
|
48
|
+
"@angular-devkit/build-angular": "^19.2.4",
|
|
49
|
+
"@angular/animations": "^19.2.3",
|
|
50
|
+
"@angular/cdk": "^19.2.6",
|
|
51
|
+
"@angular/cli": "^19.2.4",
|
|
52
|
+
"@angular/common": "^19.2.3",
|
|
53
|
+
"@angular/compiler": "^19.2.3",
|
|
54
|
+
"@angular/compiler-cli": "^19.2.3",
|
|
55
|
+
"@angular/core": "^19.2.3",
|
|
56
|
+
"@angular/forms": "^19.2.3",
|
|
57
|
+
"@angular/language-service": "^19.2.3",
|
|
58
|
+
"@angular/material": "^19.2.6",
|
|
59
|
+
"@angular/platform-browser": "^19.2.3",
|
|
60
|
+
"@angular/platform-browser-dynamic": "^19.2.3",
|
|
61
61
|
"@kolkov/angular-editor": "^2.1.0",
|
|
62
62
|
"@types/arcgis-rest-api": "^10.4.5",
|
|
63
63
|
"@types/express": "^4.17.17",
|
|
@@ -67,8 +67,8 @@
|
|
|
67
67
|
"@types/node": "^20.4.5",
|
|
68
68
|
"@types/topojson-specification": "^1.0.2",
|
|
69
69
|
"@types/xml2js": "^0.4.14",
|
|
70
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
71
|
-
"@typescript-eslint/parser": "^8.
|
|
70
|
+
"@typescript-eslint/eslint-plugin": "^8.27.0",
|
|
71
|
+
"@typescript-eslint/parser": "^8.27.0",
|
|
72
72
|
"codelyzer": "^6.0.0",
|
|
73
73
|
"eslint": "^9.17.0",
|
|
74
74
|
"geolib": "^3.3.3",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"karma-coverage-istanbul-reporter": "~3.0.2",
|
|
80
80
|
"karma-jasmine": "~4.0.0",
|
|
81
81
|
"karma-jasmine-html-reporter": "^1.5.0",
|
|
82
|
-
"ng-packagr": "^
|
|
82
|
+
"ng-packagr": "^19.2.0",
|
|
83
83
|
"ngeohash": "^0.6.3",
|
|
84
84
|
"ol": "^10.2.1",
|
|
85
85
|
"ol-mapbox-style": "^12.3.5",
|
|
@@ -96,8 +96,8 @@
|
|
|
96
96
|
"stream": "^0.0.2",
|
|
97
97
|
"timers": "^0.1.1",
|
|
98
98
|
"ts-node": "~7.0.0",
|
|
99
|
-
"typescript": "~5.
|
|
99
|
+
"typescript": "~5.8.2",
|
|
100
100
|
"xml2js": "^0.6.2",
|
|
101
|
-
"zone.js": "~0.
|
|
101
|
+
"zone.js": "~0.15.0"
|
|
102
102
|
}
|
|
103
103
|
}
|
|
@@ -62,13 +62,13 @@ class OpenWeather {
|
|
|
62
62
|
},
|
|
63
63
|
outside: {
|
|
64
64
|
uvIndex: current.uvi ?? null,
|
|
65
|
-
cloudCover: current.clouds / 100
|
|
65
|
+
cloudCover: current.clouds ? current.clouds / 100 : null,
|
|
66
66
|
horizontalVisibility: current.visibility ?? null,
|
|
67
67
|
temperature: current.temp ?? null,
|
|
68
68
|
feelsLikeTemperature: current.feels_like ?? null,
|
|
69
69
|
dewPointTemperature: current.dew_point ?? null,
|
|
70
70
|
pressure: current.pressure ? current.pressure * 100 : null,
|
|
71
|
-
absoluteHumidity: current.humidity / 100
|
|
71
|
+
absoluteHumidity: current.humidity ? current.humidity / 100 : null,
|
|
72
72
|
precipitationType: current.rain && typeof current.rain['1h'] !== 'undefined'
|
|
73
73
|
? 'rain'
|
|
74
74
|
: current.snow && typeof current.snow['1h'] !== 'undefined'
|
|
@@ -124,10 +124,10 @@ class OpenWeather {
|
|
|
124
124
|
}
|
|
125
125
|
forecast.outside.dewPointTemperature = f.dew_point ?? null;
|
|
126
126
|
forecast.outside.uvIndex = f.uvi ?? null;
|
|
127
|
-
forecast.outside.cloudCover = f.clouds / 100
|
|
127
|
+
forecast.outside.cloudCover = f.clouds ? f.clouds / 100 : null;
|
|
128
128
|
forecast.outside.pressure =
|
|
129
129
|
typeof f.pressure !== 'undefined' ? f.pressure * 100 : null;
|
|
130
|
-
forecast.outside.absoluteHumidity = f.humidity / 100
|
|
130
|
+
forecast.outside.absoluteHumidity = f.humidity ? (f.humidity / 100) : null;
|
|
131
131
|
forecast.wind.speedTrue = f.wind_speed ?? null;
|
|
132
132
|
forecast.wind.directionTrue =
|
|
133
133
|
typeof f.wind_deg !== 'undefined'
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
MIT
|
|
3
3
|
The MIT License
|
|
4
4
|
|
|
5
|
-
Copyright (c) 2010-
|
|
5
|
+
Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
|
|
6
6
|
|
|
7
7
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
8
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -27,7 +27,7 @@ THE SOFTWARE.
|
|
|
27
27
|
MIT
|
|
28
28
|
The MIT License
|
|
29
29
|
|
|
30
|
-
Copyright (c)
|
|
30
|
+
Copyright (c) 2025 Google LLC.
|
|
31
31
|
|
|
32
32
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
33
33
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -52,7 +52,7 @@ THE SOFTWARE.
|
|
|
52
52
|
MIT
|
|
53
53
|
The MIT License
|
|
54
54
|
|
|
55
|
-
Copyright (c) 2010-
|
|
55
|
+
Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
|
|
56
56
|
|
|
57
57
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
58
58
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -77,7 +77,7 @@ THE SOFTWARE.
|
|
|
77
77
|
MIT
|
|
78
78
|
The MIT License
|
|
79
79
|
|
|
80
|
-
Copyright (c) 2010-
|
|
80
|
+
Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
|
|
81
81
|
|
|
82
82
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
83
83
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -102,7 +102,7 @@ THE SOFTWARE.
|
|
|
102
102
|
MIT
|
|
103
103
|
The MIT License
|
|
104
104
|
|
|
105
|
-
Copyright (c) 2010-
|
|
105
|
+
Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
|
|
106
106
|
|
|
107
107
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
108
108
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -127,7 +127,7 @@ THE SOFTWARE.
|
|
|
127
127
|
MIT
|
|
128
128
|
The MIT License
|
|
129
129
|
|
|
130
|
-
Copyright (c)
|
|
130
|
+
Copyright (c) 2025 Google LLC.
|
|
131
131
|
|
|
132
132
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
133
133
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -152,7 +152,7 @@ THE SOFTWARE.
|
|
|
152
152
|
MIT
|
|
153
153
|
The MIT License
|
|
154
154
|
|
|
155
|
-
Copyright (c) 2010-
|
|
155
|
+
Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
|
|
156
156
|
|
|
157
157
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
158
158
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -198,6 +198,126 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
198
198
|
SOFTWARE.
|
|
199
199
|
|
|
200
200
|
|
|
201
|
+
@maplibre/maplibre-gl-style-spec
|
|
202
|
+
ISC
|
|
203
|
+
Copyright (c) 2020, MapLibre contributors
|
|
204
|
+
|
|
205
|
+
All rights reserved.
|
|
206
|
+
|
|
207
|
+
Redistribution and use in source and binary forms, with or without modification,
|
|
208
|
+
are permitted provided that the following conditions are met:
|
|
209
|
+
|
|
210
|
+
* Redistributions of source code must retain the above copyright notice,
|
|
211
|
+
this list of conditions and the following disclaimer.
|
|
212
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
213
|
+
this list of conditions and the following disclaimer in the documentation
|
|
214
|
+
and/or other materials provided with the distribution.
|
|
215
|
+
* Neither the name of MapLibre GL JS nor the names of its contributors
|
|
216
|
+
may be used to endorse or promote products derived from this software
|
|
217
|
+
without specific prior written permission.
|
|
218
|
+
|
|
219
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
220
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
221
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
222
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
223
|
+
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
224
|
+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
225
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
226
|
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
227
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
228
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
229
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
-------------------------------------------------------------------------------
|
|
233
|
+
|
|
234
|
+
Contains code from mapbox-gl-js v1.13 and earlier
|
|
235
|
+
|
|
236
|
+
Version v1.13 of mapbox-gl-js and earlier are licensed under a BSD-3-Clause license
|
|
237
|
+
|
|
238
|
+
Copyright (c) 2020, Mapbox
|
|
239
|
+
Redistribution and use in source and binary forms, with or without modification,
|
|
240
|
+
are permitted provided that the following conditions are met:
|
|
241
|
+
|
|
242
|
+
* Redistributions of source code must retain the above copyright notice,
|
|
243
|
+
this list of conditions and the following disclaimer.
|
|
244
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
245
|
+
this list of conditions and the following disclaimer in the documentation
|
|
246
|
+
and/or other materials provided with the distribution.
|
|
247
|
+
* Neither the name of Mapbox GL JS nor the names of its contributors
|
|
248
|
+
may be used to endorse or promote products derived from this software
|
|
249
|
+
without specific prior written permission.
|
|
250
|
+
|
|
251
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
252
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
253
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
254
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
255
|
+
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
256
|
+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
257
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
258
|
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
259
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
260
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
261
|
+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
-------------------------------------------------------------------------------
|
|
265
|
+
|
|
266
|
+
Contains code from glfx.js
|
|
267
|
+
|
|
268
|
+
Copyright (C) 2011 by Evan Wallace
|
|
269
|
+
|
|
270
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
271
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
272
|
+
in the Software without restriction, including without limitation the rights
|
|
273
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
274
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
275
|
+
furnished to do so, subject to the following conditions:
|
|
276
|
+
|
|
277
|
+
The above copyright notice and this permission notice shall be included in
|
|
278
|
+
all copies or substantial portions of the Software.
|
|
279
|
+
|
|
280
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
281
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
282
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
283
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
284
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
285
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
286
|
+
THE SOFTWARE.
|
|
287
|
+
|
|
288
|
+
--------------------------------------------------------------------------------
|
|
289
|
+
|
|
290
|
+
Contains a portion of d3-color https://github.com/d3/d3-color
|
|
291
|
+
|
|
292
|
+
Copyright 2010-2016 Mike Bostock
|
|
293
|
+
All rights reserved.
|
|
294
|
+
|
|
295
|
+
Redistribution and use in source and binary forms, with or without modification,
|
|
296
|
+
are permitted provided that the following conditions are met:
|
|
297
|
+
|
|
298
|
+
* Redistributions of source code must retain the above copyright notice, this
|
|
299
|
+
list of conditions and the following disclaimer.
|
|
300
|
+
|
|
301
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
302
|
+
this list of conditions and the following disclaimer in the documentation
|
|
303
|
+
and/or other materials provided with the distribution.
|
|
304
|
+
|
|
305
|
+
* Neither the name of the author nor the names of contributors may be used to
|
|
306
|
+
endorse or promote products derived from this software without specific prior
|
|
307
|
+
written permission.
|
|
308
|
+
|
|
309
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
310
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
311
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
312
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
313
|
+
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
314
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
315
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
316
|
+
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
317
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
318
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
319
|
+
|
|
320
|
+
|
|
201
321
|
@signalk/server-api
|
|
202
322
|
Apache-2.0
|
|
203
323
|
|
|
@@ -409,6 +529,32 @@ Redistribution and use in source and binary forms, with or without modification,
|
|
|
409
529
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
410
530
|
|
|
411
531
|
|
|
532
|
+
mapbox-to-css-font
|
|
533
|
+
BSD-2-Clause
|
|
534
|
+
Copyright 2016-present mapbox-to-css-font contributors
|
|
535
|
+
|
|
536
|
+
Redistribution and use in source and binary forms, with or without
|
|
537
|
+
modification, are permitted provided that the following conditions are met:
|
|
538
|
+
|
|
539
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
540
|
+
list of conditions and the following disclaimer.
|
|
541
|
+
|
|
542
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
543
|
+
this list of conditions and the following disclaimer in the documentation
|
|
544
|
+
and/or other materials provided with the distribution.
|
|
545
|
+
|
|
546
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
547
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
548
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
549
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
550
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
551
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
552
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
553
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
554
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
555
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
556
|
+
|
|
557
|
+
|
|
412
558
|
mgrs
|
|
413
559
|
MIT
|
|
414
560
|
Copyright (c) 2012, Mike Adair, Richard Greenwood, Didier Richard, Stephen Irons, Olivier Terral, Calvin Metcalf
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(()=>{"use strict";var nb={179:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){var u=r.areaConversion[arguments.length>1&&void 0!==arguments[1]?arguments[1]:"m"];if(u)return a*u;throw new Error("Invalid unit used for area conversion.")}},190:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(7029)),o=l(n(3100)),i=l(n(5705)),s=l(n(942)),a=n(7636);function l(d){return d&&d.__esModule?d:{default:d}}t.default=function(f,p){var oe,Ee,h=(0,r.default)(f),g=(0,o.default)(f),m=(0,i.default)(h),y=(0,i.default)(g),v=p/a.earthRadius,M=m-v,S=m+v,P=(0,i.default)(a.MAXLAT),fe=(0,i.default)(a.MINLAT),ee=(0,i.default)(a.MAXLON),he=(0,i.default)(a.MINLON);if(M>fe&&S<P){var $n=Math.asin(Math.sin(v)/Math.cos(m));(oe=y-$n)<he&&(oe+=2*Math.PI),(Ee=y+$n)>ee&&(Ee-=2*Math.PI)}else M=Math.max(M,fe),S=Math.min(S,P),oe=he,Ee=ee;return[{latitude:(0,s.default)(M),longitude:(0,s.default)(oe)},{latitude:(0,s.default)(S),longitude:(0,s.default)(Ee)}]}},202:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(8674));t.default=function(l,u,c){return(0,r.default)(l,u,.01)<c}},266:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(3026)),o=a(n(4902)),i=a(n(1532)),s=n(7636);function a(c){return c&&c.__esModule?c:{default:c}}t.default=function c(d){return(0,r.default)(d)?!(parseFloat(d)>s.MAXLON||d<s.MINLON):!!(0,o.default)(d)&&c((0,i.default)(d))}},354:(e,t)=>{function i(c,d){(null==d||d>c.length)&&(d=c.length);for(var f=0,p=new Array(d);f<d;f++)p[f]=c[f];return p}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(d){if(!d.startsWith("POLYGON"))throw new Error("Invalid wkt.");return d.slice(d.indexOf("(")+2,d.indexOf(")")).split(", ").map(function(h){var m=function n(c,d){return function a(c){if(Array.isArray(c))return c}(c)||function s(c,d){if(!(typeof Symbol>"u")&&Symbol.iterator in Object(c)){var f=[],p=!0,h=!1,g=void 0;try{for(var y,m=c[Symbol.iterator]();!(p=(y=m.next()).done)&&(f.push(y.value),!d||f.length!==d);p=!0);}catch(v){h=!0,g=v}finally{try{!p&&null!=m.return&&m.return()}finally{if(h)throw g}}return f}}(c,d)||function o(c,d){if(c){if("string"==typeof c)return i(c,d);var f=Object.prototype.toString.call(c).slice(8,-1);if("Object"===f&&c.constructor&&(f=c.constructor.name),"Map"===f||"Set"===f)return Array.from(c);if("Arguments"===f||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(f))return i(c,d)}}(c,d)||function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(h.split(" "),2),v=m[1];return{longitude:parseFloat(m[0]),latitude:parseFloat(v)}})}},884:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(7029)),o=a(n(3100)),i=a(n(5705)),s=a(n(942));function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d,f){var p=(0,r.default)(f),h=(0,o.default)(f),g=(0,r.default)(d),m=(0,o.default)(d);return((0,s.default)(Math.atan2(Math.sin((0,i.default)(h)-(0,i.default)(m))*Math.cos((0,i.default)(p)),Math.cos((0,i.default)(g))*Math.sin((0,i.default)(p))-Math.sin((0,i.default)(g))*Math.cos((0,i.default)(p))*Math.cos((0,i.default)(h)-(0,i.default)(m))))+360)%360}},917:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){var u=r.distanceConversion[arguments.length>1&&void 0!==arguments[1]?arguments[1]:"m"];if(u)return a*u;throw new Error("Invalid unit used for distance conversion.")}},939:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(7029)),o=a(n(3100)),i=a(n(5705)),s=a(n(942));function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d,f){var p=(0,i.default)((0,o.default)(f))-(0,i.default)((0,o.default)(d)),h=Math.log(Math.tan((0,i.default)((0,r.default)(f))/2+Math.PI/4)/Math.tan((0,i.default)((0,r.default)(d))/2+Math.PI/4));return Math.abs(p)>Math.PI&&(p=p>0?-1*(2*Math.PI-p):2*Math.PI+p),((0,s.default)(Math.atan2(p,h))+360)%360}},942:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){return 180*i/Math.PI}},1118:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(2447));t.default=function(l,u){return(0,r.default)(l,u)[0]}},1167:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){switch(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"kmh"){case"kmh":return a*r.timeConversion.h*r.distanceConversion.km;case"mph":return a*r.timeConversion.h*r.distanceConversion.mi;default:return a}}},1532:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){var l=new RegExp(r.sexagesimalPattern).exec(a.toString().trim());if(typeof l>"u"||null===l)throw new Error("Given value is not in sexagesimal format");var u=Number(l[2])/60||0,c=Number(l[4])/3600||0,d=parseFloat(l[1])+u+c;return["S","W"].includes(l[7])?-d:d}},1691:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(5705)),o=a(n(7029)),i=a(n(3100)),s=n(7636);function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d){var f=0;if(d.length>2){for(var p,h,g,m=0;m<d.length;m++){m===d.length-2?(p=d.length-2,h=d.length-1,g=0):m===d.length-1?(p=d.length-1,h=0,g=1):(p=m,h=m+1,g=m+2);var y=(0,i.default)(d[p]),v=(0,o.default)(d[h]),M=(0,i.default)(d[g]);f+=((0,r.default)(M)-(0,r.default)(y))*Math.sin((0,r.default)(v))}f=f*s.earthRadius*s.earthRadius/2}return Math.abs(f)}},2222:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(7029)),o=l(n(3100)),i=l(n(5705)),s=l(n(942)),a=n(7636);function l(d){return d&&d.__esModule?d:{default:d}}t.default=function(f,p,h){var g=arguments.length>3&&void 0!==arguments[3]?arguments[3]:6371e3,m=(0,r.default)(f),y=(0,o.default)(f),v=p/g,M=(0,i.default)(h),S=(0,i.default)(m),P=(0,i.default)(y),fe=Math.asin(Math.sin(S)*Math.cos(v)+Math.cos(S)*Math.sin(v)*Math.cos(M)),ee=P+Math.atan2(Math.sin(M)*Math.sin(v)*Math.cos(S),Math.cos(v)-Math.sin(S)*Math.sin(fe)),he=(0,s.default)(ee);return(he<a.MINLON||he>a.MAXLON)&&(ee=(ee+3*Math.PI)%(2*Math.PI)-Math.PI,he=(0,s.default)(ee)),{latitude:(0,s.default)(fe),longitude:he}}},2447:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(8674));t.default=function(l,u){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.default;return c="function"==typeof c?c:r.default,u.slice().sort(function(d,f){return c(l,d)-c(l,f)})}},2541:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r={computeDestinationPoint:!0,convertArea:!0,convertDistance:!0,convertSpeed:!0,decimalToSexagesimal:!0,findNearest:!0,getAreaOfPolygon:!0,getBounds:!0,getBoundsOfDistance:!0,getCenter:!0,getCenterOfBounds:!0,getCompassDirection:!0,getCoordinateKey:!0,getCoordinateKeys:!0,getDistance:!0,getDistanceFromLine:!0,getGreatCircleBearing:!0,getLatitude:!0,getLongitude:!0,getPathLength:!0,getPreciseDistance:!0,getRhumbLineBearing:!0,getRoughCompassDirection:!0,getSpeed:!0,isDecimal:!0,isPointInLine:!0,isPointInPolygon:!0,isPointNearLine:!0,isPointWithinRadius:!0,isSexagesimal:!0,isValidCoordinate:!0,isValidLatitude:!0,isValidLongitude:!0,orderByDistance:!0,sexagesimalToDecimal:!0,toDecimal:!0,toRad:!0,toDeg:!0,wktToPolygon:!0};Object.defineProperty(t,"computeDestinationPoint",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"convertArea",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(t,"convertDistance",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(t,"convertSpeed",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"decimalToSexagesimal",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(t,"findNearest",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(t,"getAreaOfPolygon",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(t,"getBounds",{enumerable:!0,get:function(){return d.default}}),Object.defineProperty(t,"getBoundsOfDistance",{enumerable:!0,get:function(){return f.default}}),Object.defineProperty(t,"getCenter",{enumerable:!0,get:function(){return p.default}}),Object.defineProperty(t,"getCenterOfBounds",{enumerable:!0,get:function(){return h.default}}),Object.defineProperty(t,"getCompassDirection",{enumerable:!0,get:function(){return g.default}}),Object.defineProperty(t,"getCoordinateKey",{enumerable:!0,get:function(){return m.default}}),Object.defineProperty(t,"getCoordinateKeys",{enumerable:!0,get:function(){return y.default}}),Object.defineProperty(t,"getDistance",{enumerable:!0,get:function(){return v.default}}),Object.defineProperty(t,"getDistanceFromLine",{enumerable:!0,get:function(){return M.default}}),Object.defineProperty(t,"getGreatCircleBearing",{enumerable:!0,get:function(){return S.default}}),Object.defineProperty(t,"getLatitude",{enumerable:!0,get:function(){return P.default}}),Object.defineProperty(t,"getLongitude",{enumerable:!0,get:function(){return fe.default}}),Object.defineProperty(t,"getPathLength",{enumerable:!0,get:function(){return ee.default}}),Object.defineProperty(t,"getPreciseDistance",{enumerable:!0,get:function(){return he.default}}),Object.defineProperty(t,"getRhumbLineBearing",{enumerable:!0,get:function(){return oe.default}}),Object.defineProperty(t,"getRoughCompassDirection",{enumerable:!0,get:function(){return Ee.default}}),Object.defineProperty(t,"getSpeed",{enumerable:!0,get:function(){return $n.default}}),Object.defineProperty(t,"isDecimal",{enumerable:!0,get:function(){return ja.default}}),Object.defineProperty(t,"isPointInLine",{enumerable:!0,get:function(){return Yr.default}}),Object.defineProperty(t,"isPointInPolygon",{enumerable:!0,get:function(){return Jr.default}}),Object.defineProperty(t,"isPointNearLine",{enumerable:!0,get:function(){return Xr.default}}),Object.defineProperty(t,"isPointWithinRadius",{enumerable:!0,get:function(){return an.default}}),Object.defineProperty(t,"isSexagesimal",{enumerable:!0,get:function(){return Bn.default}}),Object.defineProperty(t,"isValidCoordinate",{enumerable:!0,get:function(){return Ha.default}}),Object.defineProperty(t,"isValidLatitude",{enumerable:!0,get:function(){return $a.default}}),Object.defineProperty(t,"isValidLongitude",{enumerable:!0,get:function(){return Si.default}}),Object.defineProperty(t,"orderByDistance",{enumerable:!0,get:function(){return ki.default}}),Object.defineProperty(t,"sexagesimalToDecimal",{enumerable:!0,get:function(){return xi.default}}),Object.defineProperty(t,"toDecimal",{enumerable:!0,get:function(){return Nt.default}}),Object.defineProperty(t,"toRad",{enumerable:!0,get:function(){return zd.default}}),Object.defineProperty(t,"toDeg",{enumerable:!0,get:function(){return Ri.default}}),Object.defineProperty(t,"wktToPolygon",{enumerable:!0,get:function(){return Gd.default}});var o=H(n(2222)),i=H(n(179)),s=H(n(917)),a=H(n(1167)),l=H(n(8948)),u=H(n(1118)),c=H(n(1691)),d=H(n(9144)),f=H(n(190)),p=H(n(5524)),h=H(n(7088)),g=H(n(9952)),m=H(n(8744)),y=H(n(4695)),v=H(n(8674)),M=H(n(7504)),S=H(n(884)),P=H(n(7029)),fe=H(n(3100)),ee=H(n(5378)),he=H(n(2671)),oe=H(n(939)),Ee=H(n(2845)),$n=H(n(8950)),ja=H(n(3026)),Yr=H(n(4194)),Jr=H(n(3536)),Xr=H(n(2787)),an=H(n(202)),Bn=H(n(4902)),Ha=H(n(7637)),$a=H(n(6563)),Si=H(n(266)),ki=H(n(2447)),xi=H(n(1532)),Nt=H(n(5101)),zd=H(n(5705)),Ri=H(n(942)),Gd=H(n(354)),Ba=n(7636);function H(x){return x&&x.__esModule?x:{default:x}}Object.keys(Ba).forEach(function(x){"default"===x||"__esModule"===x||Object.prototype.hasOwnProperty.call(r,x)||Object.defineProperty(t,x,{enumerable:!0,get:function(){return Ba[x]}})})},2671:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(7029)),o=a(n(3100)),i=a(n(5705)),s=n(7636);function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d,f){var p=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;p=typeof p<"u"&&!isNaN(p)?p:1;var P,fe,ee,he,oe,Ee,Ha,h=(0,r.default)(d),g=(0,o.default)(d),m=(0,r.default)(f),y=(0,o.default)(f),v=6356752.314245,M=1/298.257223563,S=(0,i.default)(y-g),$n=Math.atan((1-M)*Math.tan((0,i.default)(parseFloat(h)))),ja=Math.atan((1-M)*Math.tan((0,i.default)(parseFloat(m)))),Yr=Math.sin($n),Jr=Math.cos($n),Xr=Math.sin(ja),an=Math.cos(ja),Bn=S,$a=100;do{var Si=Math.sin(Bn),ki=Math.cos(Bn);if(0===(Ee=Math.sqrt(an*Si*(an*Si)+(Jr*Xr-Yr*an*ki)*(Jr*Xr-Yr*an*ki))))return 0;P=Yr*Xr+Jr*an*ki,fe=Math.atan2(Ee,P),oe=P-2*Yr*Xr/(he=1-(ee=Jr*an*Si/Ee)*ee),isNaN(oe)&&(oe=0);var xi=M/16*he*(4+M*(4-3*he));Ha=Bn,Bn=S+(1-xi)*M*ee*(fe+xi*Ee*(oe+xi*P*(2*oe*oe-1)))}while(Math.abs(Bn-Ha)>1e-12&&--$a>0);if(0===$a)return NaN;var Nt=he*(s.earthRadius*s.earthRadius-v*v)/(v*v),Ri=Nt/1024*(256+Nt*(Nt*(74-47*Nt)-128));return Math.round(v*(1+Nt/16384*(4096+Nt*(Nt*(320-175*Nt)-768)))*(fe-Ri*Ee*(oe+Ri/4*(P*(2*oe*oe-1)-Ri/6*oe*(4*Ee*Ee-3)*(4*oe*oe-3))))/p)*p}},2787:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(7504));t.default=function(l,u,c,d){return(0,r.default)(l,u,c)<d}},2845:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){return/^(NNE|NE|NNW|N)$/.test(i)?"N":/^(ENE|E|ESE|SE)$/.test(i)?"E":/^(SSE|S|SSW|SW)$/.test(i)?"S":/^(WSW|W|WNW|NW)$/.test(i)?"W":void 0}},3026:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){var s=i.toString().trim();return!isNaN(parseFloat(s))&&parseFloat(s)===Number(s)}},3100:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636),o=s(n(8744)),i=s(n(5101));function s(u){return u&&u.__esModule?u:{default:u}}t.default=function(c,d){var f=(0,o.default)(c,r.longitudeKeys);if(!(typeof f>"u"||null===f)){var p=c[f];return!0===d?p:(0,i.default)(p)}}},3536:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=i(n(7029)),o=i(n(3100));function i(l){return l&&l.__esModule?l:{default:l}}t.default=function(u,c){for(var d=!1,f=c.length,p=-1,h=f-1;++p<f;h=p)((0,o.default)(c[p])<=(0,o.default)(u)&&(0,o.default)(u)<(0,o.default)(c[h])||(0,o.default)(c[h])<=(0,o.default)(u)&&(0,o.default)(u)<(0,o.default)(c[p]))&&(0,r.default)(u)<((0,r.default)(c[h])-(0,r.default)(c[p]))*((0,o.default)(u)-(0,o.default)(c[p]))/((0,o.default)(c[h])-(0,o.default)(c[p]))+(0,r.default)(c[p])&&(d=!d);return d}},4194:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(8674));t.default=function(l,u,c){return(0,r.default)(u,l)+(0,r.default)(l,c)===(0,r.default)(u,c)}},4695:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636),o=function i(d){return d&&d.__esModule?d:{default:d}}(n(8744));function s(d,f){var p=Object.keys(d);if(Object.getOwnPropertySymbols){var h=Object.getOwnPropertySymbols(d);f&&(h=h.filter(function(g){return Object.getOwnPropertyDescriptor(d,g).enumerable})),p.push.apply(p,h)}return p}function l(d,f,p){return f in d?Object.defineProperty(d,f,{value:p,enumerable:!0,configurable:!0,writable:!0}):d[f]=p,d}t.default=function(f){var p=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{longitude:r.longitudeKeys,latitude:r.latitudeKeys,altitude:r.altitudeKeys},h=(0,o.default)(f,p.longitude),g=(0,o.default)(f,p.latitude),m=(0,o.default)(f,p.altitude);return function a(d){for(var f=1;f<arguments.length;f++){var p=null!=arguments[f]?arguments[f]:{};f%2?s(Object(p),!0).forEach(function(h){l(d,h,p[h])}):Object.getOwnPropertyDescriptors?Object.defineProperties(d,Object.getOwnPropertyDescriptors(p)):s(Object(p)).forEach(function(h){Object.defineProperty(d,h,Object.getOwnPropertyDescriptor(p,h))})}return d}({latitude:g,longitude:h},m?{altitude:m}:{})}},4902:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){return r.sexagesimalPattern.test(a.toString().trim())}},5101:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(3026)),o=l(n(4902)),i=l(n(1532)),s=l(n(7637)),a=l(n(4695));function l(h){return h&&h.__esModule?h:{default:h}}function u(h,g){var m=Object.keys(h);if(Object.getOwnPropertySymbols){var y=Object.getOwnPropertySymbols(h);g&&(y=y.filter(function(v){return Object.getOwnPropertyDescriptor(h,v).enumerable})),m.push.apply(m,y)}return m}function c(h){for(var g=1;g<arguments.length;g++){var m=null!=arguments[g]?arguments[g]:{};g%2?u(Object(m),!0).forEach(function(y){d(h,y,m[y])}):Object.getOwnPropertyDescriptors?Object.defineProperties(h,Object.getOwnPropertyDescriptors(m)):u(Object(m)).forEach(function(y){Object.defineProperty(h,y,Object.getOwnPropertyDescriptor(m,y))})}return h}function d(h,g,m){return g in h?Object.defineProperty(h,g,{value:m,enumerable:!0,configurable:!0,writable:!0}):h[g]=m,h}t.default=function h(g){if((0,r.default)(g))return Number(g);if((0,o.default)(g))return(0,i.default)(g);if((0,s.default)(g)){var m=(0,a.default)(g);return Array.isArray(g)?g.map(function(y,v){return[0,1].includes(v)?h(y):y}):c(c(c({},g),m.latitude&&d({},m.latitude,h(g[m.latitude]))),m.longitude&&d({},m.longitude,h(g[m.longitude])))}return Array.isArray(g)?g.map(function(y){return(0,s.default)(y)?h(y):y}):g}},5378:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(l){return l&&l.__esModule?l:{default:l}}(n(8674));function i(l){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(c){return typeof c}:function(c){return c&&"function"==typeof Symbol&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c})(l)}t.default=function(u){var c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.default;return u.reduce(function(d,f){return"object"===i(d)&&null!==d.last&&(d.distance+=c(f,d.last)),d.last=f,d},{last:null,distance:0}).distance}},5524:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(7029)),o=a(n(3100)),i=a(n(5705)),s=a(n(942));function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d){if(!1===Array.isArray(d)||0===d.length)return!1;var f=d.length,p=d.reduce(function(y,v){var M=(0,i.default)((0,r.default)(v)),S=(0,i.default)((0,o.default)(v));return{X:y.X+Math.cos(M)*Math.cos(S),Y:y.Y+Math.cos(M)*Math.sin(S),Z:y.Z+Math.sin(M)}},{X:0,Y:0,Z:0}),h=p.X/f,g=p.Y/f,m=p.Z/f;return{longitude:(0,s.default)(Math.atan2(g,h)),latitude:(0,s.default)(Math.atan2(m,Math.sqrt(h*h+g*g)))}}},5551:(e,t)=>{function n(u,c){return u*u+c*c}function r(u,c){return n(u.longitude-c.longitude,u.latitude-c.latitude)}function o(u,c,d){var f=c.longitude,p=c.latitude,h=d.longitude-f,g=d.latitude-p;if(0!==h||0!==g){var m=((u.longitude-f)*h+(u.latitude-p)*g)/n(h,g);m>1?(f=d.longitude,p=d.latitude):m>0&&(f+=h*m,p+=g*m)}return n(u.longitude-f,u.latitude-p)}function s(u,c,d,f,p){for(var g,h=f,m=c+1;m<d;m++){var y=o(u[m],u[c],u[d]);y>h&&(g=m,h=y)}h>f&&(g-c>1&&s(u,c,g,f,p),p.push(u[g]),d-g>1&&s(u,g,d,f,p))}function a(u,c){var d=u.length-1,f=[u[0]];return s(u,0,d,c,f),f.push(u[d]),f}t.__esModule=!0,t.SimplifyLL=function l(u,c,d){if(void 0===c&&(c=1),void 0===d&&(d=!1),u.length<=2)return u;var f=c*c;return a(u=d?u:function i(u,c){for(var f,d=u[0],p=[d],h=1,g=u.length;h<g;h++)r(f=u[h],d)>c&&(p.push(f),d=f);return d!==f&&p.push(f),p}(u,f),f)}},5705:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){return i*Math.PI/180}},6380:(e,t,n)=>{var o=n(6729);t.p$=o.SimplifyAP,n(5551),n(6413)},6413:(e,t)=>{function n(u,c){return u*u+c*c}function r(u,c){return n(u.x-c.x,u.y-c.y)}function o(u,c,d){var f=c.x,p=c.y,h=d.x-f,g=d.y-p;if(0!==h||0!==g){var m=((u.x-f)*h+(u.y-p)*g)/n(h,g);m>1?(f=d.x,p=d.y):m>0&&(f+=h*m,p+=g*m)}return n(u.x-f,u.y-p)}function s(u,c,d,f,p){for(var g,h=f,m=c+1;m<d;m++){var y=o(u[m],u[c],u[d]);y>h&&(g=m,h=y)}h>f&&(g-c>1&&s(u,c,g,f,p),p.push(u[g]),d-g>1&&s(u,g,d,f,p))}function a(u,c){var d=u.length-1,f=[u[0]];return s(u,0,d,c,f),f.push(u[d]),f}t.__esModule=!0,t.Simplify=function l(u,c,d){if(void 0===c&&(c=1),void 0===d&&(d=!1),u.length<=2)return u;var f=c*c;return a(u=d?u:function i(u,c){for(var f,d=u[0],p=[d],h=1,g=u.length;h<g;h++)r(f=u[h],d)>c&&(p.push(f),d=f);return d!==f&&p.push(f),p}(u,f),f)}},6522:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){return i>1?1:i<-1?-1:i}},6563:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(3026)),o=a(n(4902)),i=a(n(1532)),s=n(7636);function a(c){return c&&c.__esModule?c:{default:c}}t.default=function c(d){return(0,r.default)(d)?!(parseFloat(d)>s.MAXLAT||d<s.MINLAT):!!(0,o.default)(d)&&c((0,i.default)(d))}},6729:(e,t)=>{function n(u,c){return u*u+c*c}function r(u,c){return n(u[0]-c[0],u[1]-c[1])}function o(u,c,d){var f=c[0],p=c[1],h=d[0]-f,g=d[1]-p;if(0!==h||0!==g){var m=((u[0]-f)*h+(u[1]-p)*g)/n(h,g);m>1?(f=d[0],p=d[1]):m>0&&(f+=h*m,p+=g*m)}return n(u[0]-f,u[1]-p)}function s(u,c,d,f,p){for(var g,h=f,m=c+1;m<d;m++){var y=o(u[m],u[c],u[d]);y>h&&(g=m,h=y)}h>f&&(g-c>1&&s(u,c,g,f,p),p.push(u[g]),d-g>1&&s(u,g,d,f,p))}function a(u,c){var d=u.length-1,f=[u[0]];return s(u,0,d,c,f),f.push(u[d]),f}t.__esModule=!0,t.SimplifyAP=function l(u,c,d){if(void 0===c&&(c=1),void 0===d&&(d=!1),u.length<=2)return u;var f=c*c;return a(u=d?u:function i(u,c){for(var f,d=u[0],p=[d],h=1,g=u.length;h<g;h++)r(f=u[h],d)>c&&(p.push(f),d=f);return d!==f&&p.push(f),p}(u,f),f)}},7029:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636),o=s(n(8744)),i=s(n(5101));function s(u){return u&&u.__esModule?u:{default:u}}t.default=function(c,d){var f=(0,o.default)(c,r.latitudeKeys);if(!(typeof f>"u"||null===f)){var p=c[f];return!0===d?p:(0,i.default)(p)}}},7088:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(9144));t.default=function(l){var u=(0,r.default)(l),d=u.minLng+(u.maxLng-u.minLng)/2;return{latitude:parseFloat((u.minLat+(u.maxLat-u.minLat)/2).toFixed(6)),longitude:parseFloat(d.toFixed(6))}}},7504:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=i(n(8674)),o=i(n(6522));function i(l){return l&&l.__esModule?l:{default:l}}t.default=function(u,c,d){var f=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,p=(0,r.default)(c,u,f),h=(0,r.default)(u,d,f),g=(0,r.default)(c,d,f),m=Math.acos((0,o.default)((p*p+g*g-h*h)/(2*p*g))),y=Math.acos((0,o.default)((h*h+g*g-p*p)/(2*h*g)));return m>Math.PI/2?p:y>Math.PI/2?h:Math.sin(m)*p}},7636:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.areaConversion=t.timeConversion=t.distanceConversion=t.altitudeKeys=t.latitudeKeys=t.longitudeKeys=t.MAXLON=t.MINLON=t.MAXLAT=t.MINLAT=t.earthRadius=t.sexagesimalPattern=void 0,t.sexagesimalPattern=/^([0-9]{1,3})\xb0\s*([0-9]{1,3}(?:\.(?:[0-9]{1,}))?)['\u2032]\s*(([0-9]{1,3}(\.([0-9]{1,}))?)["\u2033]\s*)?([NEOSW]?)$/,t.earthRadius=6378137,t.MINLAT=-90,t.MAXLAT=90,t.MINLON=-180,t.MAXLON=180,t.longitudeKeys=["lng","lon","longitude",0],t.latitudeKeys=["lat","latitude",1],t.altitudeKeys=["alt","altitude","elevation","elev",2],t.distanceConversion={m:1,km:.001,cm:100,mm:1e3,mi:1/1609.344,sm:1/1852.216,ft:100/30.48,in:100/2.54,yd:1/.9144},t.timeConversion={m:60,h:3600,d:86400};var p={m2:1,km2:1e-6,ha:1e-4,a:.01,ft2:10.763911,yd2:1.19599,in2:1550.0031};t.areaConversion=p,p.sqm=p.m2,p.sqkm=p.km2,p.sqft=p.ft2,p.sqyd=p.yd2,p.sqin=p.in2},7637:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=s(n(4695)),o=s(n(6563)),i=s(n(266));function s(u){return u&&u.__esModule?u:{default:u}}t.default=function(c){var d=(0,r.default)(c),f=d.latitude,p=d.longitude;if(Array.isArray(c)&&c.length>=2)return(0,i.default)(c[0])&&(0,o.default)(c[1]);if(typeof f>"u"||typeof p>"u")return!1;var h=c[p],g=c[f];return!(typeof g>"u"||typeof h>"u"||!1===(0,o.default)(g)||!1===(0,i.default)(h))}},8674:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(7029)),o=l(n(3100)),i=l(n(5705)),s=l(n(6522)),a=n(7636);function l(d){return d&&d.__esModule?d:{default:d}}t.default=function(f,p){var h=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;h=typeof h<"u"&&!isNaN(h)?h:1;var g=(0,r.default)(f),m=(0,o.default)(f),y=(0,r.default)(p),v=(0,o.default)(p),M=Math.acos((0,s.default)(Math.sin((0,i.default)(y))*Math.sin((0,i.default)(g))+Math.cos((0,i.default)(y))*Math.cos((0,i.default)(g))*Math.cos((0,i.default)(m)-(0,i.default)(v))))*a.earthRadius;return Math.round(M/h)*h}},8744:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i,s){return s.reduce(function(a,l){if(typeof i>"u"||null===i)throw new Error("'".concat(i,"' is no valid coordinate."));return Object.prototype.hasOwnProperty.call(i,l)&&typeof l<"u"&&typeof a>"u"?(a=l,l):a},void 0)}},8948:(e,t)=>{function n(d,f){return function a(d){if(Array.isArray(d))return d}(d)||function s(d,f){if(!(typeof Symbol>"u")&&Symbol.iterator in Object(d)){var p=[],h=!0,g=!1,m=void 0;try{for(var v,y=d[Symbol.iterator]();!(h=(v=y.next()).done)&&(p.push(v.value),!f||p.length!==f);h=!0);}catch(M){g=!0,m=M}finally{try{!h&&null!=y.return&&y.return()}finally{if(g)throw m}}return p}}(d,f)||function o(d,f){if(d){if("string"==typeof d)return i(d,f);var p=Object.prototype.toString.call(d).slice(8,-1);if("Object"===p&&d.constructor&&(p=d.constructor.name),"Map"===p||"Set"===p)return Array.from(d);if("Arguments"===p||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(p))return i(d,f)}}(d,f)||function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(d,f){(null==f||f>d.length)&&(f=d.length);for(var p=0,h=new Array(f);p<f;p++)h[p]=d[p];return h}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(f){var h=n(f.toString().split("."),2),m=h[1],y=Math.abs(Number(h[0])),v=60*+("0."+(m||0)),M=v.toString().split("."),S=Math.floor(v),P=function(f){var h=Math.pow(10,arguments.length>1&&void 0!==arguments[1]?arguments[1]:4);return Math.round(f*h)/h}(60*+("0."+(M[1]||0))).toString(),ee=n(P.split("."),2),he=ee[0],oe=ee[1],Ee=void 0===oe?"0":oe;return y+"\xb0 "+S.toString().padStart(2,"0")+"' "+he.padStart(2,"0")+"."+Ee.padEnd(1,"0")+'"'}},8950:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(8674));t.default=function(l,u){return(arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.default)(l,u)/(Number(u.time)-Number(l.time))*1e3}},9144:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=i(n(7029)),o=i(n(3100));function i(l){return l&&l.__esModule?l:{default:l}}t.default=function(u){if(!1===Array.isArray(u)||0===u.length)throw new Error("No points were given.");return u.reduce(function(c,d){var f=(0,r.default)(d),p=(0,o.default)(d);return{maxLat:Math.max(f,c.maxLat),minLat:Math.min(f,c.minLat),maxLng:Math.max(p,c.maxLng),minLng:Math.min(p,c.minLng)}},{maxLat:-1/0,minLat:1/0,maxLng:-1/0,minLng:1/0})}},9952:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(939));t.default=function(l,u){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.default,d="function"==typeof c?c(l,u):(0,r.default)(l,u);if(isNaN(d))throw new Error("Could not calculate bearing for given points. Check your bearing function");switch(Math.round(d/22.5)){case 1:return"NNE";case 2:return"NE";case 3:return"ENE";case 4:return"E";case 5:return"ESE";case 6:return"SE";case 7:return"SSE";case 8:return"S";case 9:return"SSW";case 10:return"SW";case 11:return"WSW";case 12:return"W";case 13:return"WNW";case 14:return"NW";case 15:return"NNW";default:return"N"}}}},Zd={};function Ua(e){var t=Zd[e];if(void 0!==t)return t.exports;var n=Zd[e]={exports:{}};return nb[e](n,n.exports,Ua),n.exports}function Wa(e){return"function"==typeof e}let qa=!1;const ot={Promise:void 0,set useDeprecatedSynchronousErrorHandling(e){if(e){const t=new Error;console.warn("DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n"+t.stack)}else qa&&console.log("RxJS: Back to a better error behavior. Thank you. <3");qa=e},get useDeprecatedSynchronousErrorHandling(){return qa}};function eo(e){setTimeout(()=>{throw e},0)}const Oi={closed:!0,next(e){},error(e){if(ot.useDeprecatedSynchronousErrorHandling)throw e;eo(e)},complete(){}},rb=Array.isArray||(e=>e&&"number"==typeof e.length),Pi=(()=>{function e(t){return Error.call(this),this.message=t?`${t.length} errors occurred during unsubscription:\n${t.map((n,r)=>`${r+1}) ${n.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=t,this}return e.prototype=Object.create(Error.prototype),e})();class we{constructor(t){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,t&&(this._ctorUnsubscribe=!0,this._unsubscribe=t)}unsubscribe(){let t;if(this.closed)return;let{_parentOrParents:n,_ctorUnsubscribe:r,_unsubscribe:o,_subscriptions:i}=this;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,n instanceof we)n.remove(this);else if(null!==n)for(let s=0;s<n.length;++s)n[s].remove(this);if(Wa(o)){r&&(this._unsubscribe=void 0);try{o.call(this)}catch(s){t=s instanceof Pi?Kd(s.errors):[s]}}if(rb(i)){let s=-1,a=i.length;for(;++s<a;){const l=i[s];if(null!==(e=l)&&"object"==typeof e)try{l.unsubscribe()}catch(u){t=t||[],u instanceof Pi?t=t.concat(Kd(u.errors)):t.push(u)}}}var e;if(t)throw new Pi(t)}add(t){let n=t;if(!t)return we.EMPTY;switch(typeof t){case"function":n=new we(t);case"object":if(n===this||n.closed||"function"!=typeof n.unsubscribe)return n;if(this.closed)return n.unsubscribe(),n;if(!(n instanceof we)){const i=n;n=new we,n._subscriptions=[i]}break;default:throw new Error("unrecognized teardown "+t+" added to Subscription.")}let{_parentOrParents:r}=n;if(null===r)n._parentOrParents=this;else if(r instanceof we){if(r===this)return n;n._parentOrParents=[r,this]}else{if(-1!==r.indexOf(this))return n;r.push(this)}const o=this._subscriptions;return null===o?this._subscriptions=[n]:o.push(n),n}remove(t){const n=this._subscriptions;if(n){const r=n.indexOf(t);-1!==r&&n.splice(r,1)}}}var e;function Kd(e){return e.reduce((t,n)=>t.concat(n instanceof Pi?n.errors:n),[])}we.EMPTY=((e=new we).closed=!0,e);const Ai="function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random();class ht extends we{constructor(t,n,r){switch(super(),this.syncErrorValue=null,this.syncErrorThrown=!1,this.syncErrorThrowable=!1,this.isStopped=!1,arguments.length){case 0:this.destination=Oi;break;case 1:if(!t){this.destination=Oi;break}if("object"==typeof t){t instanceof ht?(this.syncErrorThrowable=t.syncErrorThrowable,this.destination=t,t.add(this)):(this.syncErrorThrowable=!0,this.destination=new Qd(this,t));break}default:this.syncErrorThrowable=!0,this.destination=new Qd(this,t,n,r)}}[Ai](){return this}static create(t,n,r){const o=new ht(t,n,r);return o.syncErrorThrowable=!1,o}next(t){this.isStopped||this._next(t)}error(t){this.isStopped||(this.isStopped=!0,this._error(t))}complete(){this.isStopped||(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe())}_next(t){this.destination.next(t)}_error(t){this.destination.error(t),this.unsubscribe()}_complete(){this.destination.complete(),this.unsubscribe()}_unsubscribeAndRecycle(){const{_parentOrParents:t}=this;return this._parentOrParents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parentOrParents=t,this}}class Qd extends ht{constructor(t,n,r,o){super(),this._parentSubscriber=t;let i,s=this;Wa(n)?i=n:n&&(i=n.next,r=n.error,o=n.complete,n!==Oi&&(s=Object.create(n),Wa(s.unsubscribe)&&this.add(s.unsubscribe.bind(s)),s.unsubscribe=this.unsubscribe.bind(this))),this._context=s,this._next=i,this._error=r,this._complete=o}next(t){if(!this.isStopped&&this._next){const{_parentSubscriber:n}=this;ot.useDeprecatedSynchronousErrorHandling&&n.syncErrorThrowable?this.__tryOrSetError(n,this._next,t)&&this.unsubscribe():this.__tryOrUnsub(this._next,t)}}error(t){if(!this.isStopped){const{_parentSubscriber:n}=this,{useDeprecatedSynchronousErrorHandling:r}=ot;if(this._error)r&&n.syncErrorThrowable?(this.__tryOrSetError(n,this._error,t),this.unsubscribe()):(this.__tryOrUnsub(this._error,t),this.unsubscribe());else if(n.syncErrorThrowable)r?(n.syncErrorValue=t,n.syncErrorThrown=!0):eo(t),this.unsubscribe();else{if(this.unsubscribe(),r)throw t;eo(t)}}}complete(){if(!this.isStopped){const{_parentSubscriber:t}=this;if(this._complete){const n=()=>this._complete.call(this._context);ot.useDeprecatedSynchronousErrorHandling&&t.syncErrorThrowable?(this.__tryOrSetError(t,n),this.unsubscribe()):(this.__tryOrUnsub(n),this.unsubscribe())}else this.unsubscribe()}}__tryOrUnsub(t,n){try{t.call(this._context,n)}catch(r){if(this.unsubscribe(),ot.useDeprecatedSynchronousErrorHandling)throw r;eo(r)}}__tryOrSetError(t,n,r){if(!ot.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{n.call(this._context,r)}catch(o){return ot.useDeprecatedSynchronousErrorHandling?(t.syncErrorValue=o,t.syncErrorThrown=!0,!0):(eo(o),!0)}return!1}_unsubscribe(){const{_parentSubscriber:t}=this;this._context=null,this._parentSubscriber=null,t.unsubscribe()}}const ab="function"==typeof Symbol&&Symbol.observable||"@@observable";function lb(e){return e}let Jd=(()=>{class e{constructor(n){this._isScalar=!1,n&&(this._subscribe=n)}lift(n){const r=new e;return r.source=this,r.operator=n,r}subscribe(n,r,o){const{operator:i}=this,s=function sb(e,t,n){if(e){if(e instanceof ht)return e;if(e[Ai])return e[Ai]()}return e||t||n?new ht(e,t,n):new ht(Oi)}(n,r,o);if(s.add(i?i.call(s,this.source):this.source||ot.useDeprecatedSynchronousErrorHandling&&!s.syncErrorThrowable?this._subscribe(s):this._trySubscribe(s)),ot.useDeprecatedSynchronousErrorHandling&&s.syncErrorThrowable&&(s.syncErrorThrowable=!1,s.syncErrorThrown))throw s.syncErrorValue;return s}_trySubscribe(n){try{return this._subscribe(n)}catch(r){ot.useDeprecatedSynchronousErrorHandling&&(n.syncErrorThrown=!0,n.syncErrorValue=r),function ib(e){for(;e;){const{closed:t,destination:n,isStopped:r}=e;if(t||r)return!1;e=n&&n instanceof ht?n:null}return!0}(n)?n.error(r):console.warn(r)}}forEach(n,r){return new(r=Xd(r))((o,i)=>{let s;s=this.subscribe(a=>{try{n(a)}catch(l){i(l),s&&s.unsubscribe()}},i,o)})}_subscribe(n){const{source:r}=this;return r&&r.subscribe(n)}[ab](){return this}pipe(...n){return 0===n.length?this:function Yd(e){return 0===e.length?lb:1===e.length?e[0]:function(n){return e.reduce((r,o)=>o(r),n)}}(n)(this)}toPromise(n){return new(n=Xd(n))((r,o)=>{let i;this.subscribe(s=>i=s,s=>o(s),()=>r(i))})}}return e.create=t=>new e(t),e})();function Xd(e){if(e||(e=ot.Promise||Promise),!e)throw new Error("no Promise impl found");return e}const Un=(()=>{function e(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}return e.prototype=Object.create(Error.prototype),e})();class ub extends we{constructor(t,n){super(),this.subject=t,this.subscriber=n,this.closed=!1}unsubscribe(){if(this.closed)return;this.closed=!0;const t=this.subject,n=t.observers;if(this.subject=null,!n||0===n.length||t.isStopped||t.closed)return;const r=n.indexOf(this.subscriber);-1!==r&&n.splice(r,1)}}class cb extends ht{constructor(t){super(t),this.destination=t}}let ze=(()=>{class e extends Jd{constructor(){super(),this.observers=[],this.closed=!1,this.isStopped=!1,this.hasError=!1,this.thrownError=null}[Ai](){return new cb(this)}lift(n){const r=new ef(this,this);return r.operator=n,r}next(n){if(this.closed)throw new Un;if(!this.isStopped){const{observers:r}=this,o=r.length,i=r.slice();for(let s=0;s<o;s++)i[s].next(n)}}error(n){if(this.closed)throw new Un;this.hasError=!0,this.thrownError=n,this.isStopped=!0;const{observers:r}=this,o=r.length,i=r.slice();for(let s=0;s<o;s++)i[s].error(n);this.observers.length=0}complete(){if(this.closed)throw new Un;this.isStopped=!0;const{observers:n}=this,r=n.length,o=n.slice();for(let i=0;i<r;i++)o[i].complete();this.observers.length=0}unsubscribe(){this.isStopped=!0,this.closed=!0,this.observers=null}_trySubscribe(n){if(this.closed)throw new Un;return super._trySubscribe(n)}_subscribe(n){if(this.closed)throw new Un;return this.hasError?(n.error(this.thrownError),we.EMPTY):this.isStopped?(n.complete(),we.EMPTY):(this.observers.push(n),new ub(this,n))}asObservable(){const n=new Jd;return n.source=this,n}}return e.create=(t,n)=>new ef(t,n),e})();class ef extends ze{constructor(t,n){super(),this.destination=t,this.source=n}next(t){const{destination:n}=this;n&&n.next&&n.next(t)}error(t){const{destination:n}=this;n&&n.error&&this.destination.error(t)}complete(){const{destination:t}=this;t&&t.complete&&this.destination.complete()}_subscribe(t){const{source:n}=this;return n?this.source.subscribe(t):we.EMPTY}}let ge=null;function V(e){const t=ge;return ge=e,t}const qn={version:0,lastCleanEpoch:0,dirty:!1,producerNode:void 0,producerLastReadVersion:void 0,producerIndexOfThis:void 0,nextProducerIndex:0,liveConsumerNode:void 0,liveConsumerIndexOfThis:void 0,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,kind:"unknown",producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function no(e){if((!io(e)||e.dirty)&&(e.dirty||1!==e.lastCleanEpoch)){if(!e.producerMustRecompute(e)&&!ro(e))return void Fi(e);e.producerRecomputeValue(e),Fi(e)}}function Fi(e){e.dirty=!1,e.lastCleanEpoch=1}function ro(e){ji(e);for(let t=0;t<e.producerNode.length;t++){const n=e.producerNode[t],r=e.producerLastReadVersion[t];if(r!==n.version||(no(n),r!==n.version))return!0}return!1}function Vi(e,t){if(function af(e){e.liveConsumerNode??=[],e.liveConsumerIndexOfThis??=[]}(e),1===e.liveConsumerNode.length&&function lf(e){return void 0!==e.producerNode}(e))for(let r=0;r<e.producerNode.length;r++)Vi(e.producerNode[r],e.producerIndexOfThis[r]);const n=e.liveConsumerNode.length-1;if(e.liveConsumerNode[t]=e.liveConsumerNode[n],e.liveConsumerIndexOfThis[t]=e.liveConsumerIndexOfThis[n],e.liveConsumerNode.length--,e.liveConsumerIndexOfThis.length--,t<e.liveConsumerNode.length){const r=e.liveConsumerIndexOfThis[t],o=e.liveConsumerNode[t];ji(o),o.producerIndexOfThis[r]=t}}function io(e){return e.consumerIsAlwaysLive||(e?.liveConsumerNode?.length??0)>0}function ji(e){e.producerNode??=[],e.producerIndexOfThis??=[],e.producerLastReadVersion??=[]}Error;class b extends Error{code;constructor(t,n){super(function Wt(e,t){return`NG0${Math.abs(e)}${t?": "+t:""}`}(t,n)),this.code=t}}function K(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}globalThis;class N{_desc;ngMetadataName="InjectionToken";\u0275prov;constructor(t,n){this._desc=t,this.\u0275prov=void 0,"number"==typeof n?this.__NG_ELEMENT_ID__=n:void 0!==n&&(this.\u0275prov=K({token:this,providedIn:n.providedIn||"root",factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}var B=function(e){return e[e.Default=0]="Default",e[e.Host=1]="Host",e[e.Self=2]="Self",e[e.SkipSelf=4]="SkipSelf",e[e.Optional=8]="Optional",e}(B||{});const O={lFrame:pp(null),bindingsEnabled:!0,skipHydrationRootTNode:null};let Rl=!1;function j(){let e=function ip(){return O.lFrame.currentTNode}();for(;null!==e&&64===e.type;)e=e.parent;return e}function ds(e){const t=Rl;return Rl=e,t}function pp(e){const t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return null!==e&&(e.child=t),t}new N("").__NG_ELEMENT_ID__=e=>{const t=j();if(null===t)throw new b(204,!1);if(2&t.type)return t.value;if(e&B.Optional)return null;throw new b(204,!1)},Symbol;class tP{constructor(){this.limitUI04=this.maxFromBits(4),this.limitUI06=this.maxFromBits(6),this.limitUI08=this.maxFromBits(8),this.limitUI12=this.maxFromBits(12),this.limitUI14=this.maxFromBits(14),this.limitUI16=this.maxFromBits(16),this.limitUI32=this.maxFromBits(32),this.limitUI40=this.maxFromBits(40),this.limitUI48=this.maxFromBits(48),this.create()}toString(){return this.hex}toURN(){return"urn:uuid:"+this.hex}toSignalK(){return`urn:mrn:signalk:uuid:${this.hex}`}toBytes(){let t=this.hex.split("-"),n=[],r=0;for(let o=0;o<t.length;o++)for(let i=0;i<t[o].length;i+=2)n[r++]=parseInt(t[o].substr(i,2),16);return n}maxFromBits(t){return Math.pow(2,t)}getRandomInt(t,n){return Math.floor(Math.random()*(n-t+1))+t}randomUI04(){return this.getRandomInt(0,this.limitUI04-1)}randomUI06(){return this.getRandomInt(0,this.limitUI06-1)}randomUI08(){return this.getRandomInt(0,this.limitUI08-1)}randomUI12(){return this.getRandomInt(0,this.limitUI12-1)}randomUI14(){return this.getRandomInt(0,this.limitUI14-1)}randomUI16(){return this.getRandomInt(0,this.limitUI16-1)}randomUI32(){return this.getRandomInt(0,this.limitUI32-1)}randomUI40(){return(0|Math.random()*(1<<30))+(0|1024*Math.random())*(1<<30)}randomUI48(){return(0|Math.random()*(1<<30))+(0|Math.random()*(1<<18))*(1<<30)}create(){this.fromParts(this.randomUI32(),this.randomUI16(),16384|this.randomUI12(),128|this.randomUI06(),this.randomUI08(),this.randomUI48())}paddedString(t,n,r=null){r=r||"0";let o=n-(t=String(t)).length;for(;o>0;o>>>=1,r+=r)1&o&&(t=r+t);return t}fromParts(t,n,r,o,i,s){return this.version=r>>12&15,this.hex=this.paddedString(t.toString(16),8)+"-"+this.paddedString(n.toString(16),4)+"-"+this.paddedString(r.toString(16),4)+"-"+this.paddedString(o.toString(16),2)+this.paddedString(i.toString(16),2)+"-"+this.paddedString(s.toString(16),12),this}}class Aa{static updates(){return{context:null,updates:[]}}static subscribe(){return{context:null,subscribe:[]}}static unsubscribe(){return{context:null,unsubscribe:[]}}static request(){return{requestId:(new tP).toString()}}}let rP=(()=>{class e{constructor(){this._filter="",this._wsTimeout=2e4,this._token="",this._playbackMode=!1,this.version=1,this.endpoint="",this.selfId="",this._source=null,this._connect=new ze,this.onConnect=this._connect.asObservable(),this._close=new ze,this.onClose=this._close.asObservable(),this._error=new ze,this.onError=this._error.asObservable(),this._message=new ze,this.onMessage=this._message.asObservable()}set source(n){this._source||(this._source={}),this._source.label=n}set authToken(n){this._token=n}get connectionTimeout(){return this._wsTimeout}set connectionTimeout(n){this._wsTimeout=n<3e3?3e3:n>6e4?6e4:n}get isOpen(){return!(!this.ws||1==this.ws.readyState||3==this.ws.readyState)}get filter(){return this._filter}set filter(n){this._filter=n&&-1!=n.indexOf("self")?this.selfId?this.selfId:"":n}get playbackMode(){return this._playbackMode}close(){this.ws&&(this.ws.close(),this.ws=null)}open(n,r,o){if(!(n=n||this.endpoint))return;let i=-1==n.indexOf("?")?"?":"&";r&&(n+=`${i}subscribe=${r}`),(this._token||o)&&(n+=`${r?"&":"?"}token=${this._token||o}`),this.close(),this.ws=new WebSocket(n),setTimeout(()=>{this.ws&&1!=this.ws.readyState&&3!=this.ws.readyState&&(console.warn(`Connection watchdog expired (${this._wsTimeout/1e3} sec): ${this.ws.readyState}... aborting connection...`),this.close())},this._wsTimeout),this.ws.onopen=s=>{this._connect.next(s)},this.ws.onclose=s=>{this._close.next(s)},this.ws.onerror=s=>{this._error.next(s)},this.ws.onmessage=s=>{this.parseOnMessage(s)}}parseOnMessage(n){let r;if("string"==typeof n.data)try{r=JSON.parse(n.data)}catch{return}this.isHello(r)?(this.selfId=r.self,this._playbackMode=typeof r.startTime<"u",this._message.next(r)):this.isResponse(r)?(typeof r.login<"u"&&typeof r.login.token<"u"&&(this._token=r.login.token),this._message.next(r)):this._filter&&this.isDelta(r)?r.context==this._filter&&this._message.next(r):this._message.next(r)}sendRequest(n){if("object"!=typeof n)return"";let r=Aa.request();return typeof n.login>"u"&&this._token&&(r.token=this._token),Object.keys(n).forEach(i=>{r[i]=n[i]}),this.send(r),r.requestId}put(n,r,o){return this.sendRequest({context:"self"==n?"vessels.self":n,put:{path:r,value:o}})}login(n,r){return this.sendRequest({login:{username:n,password:r}})}send(n){this.ws&&("object"==typeof n&&(n=JSON.stringify(n)),this.ws.send(n))}sendUpdate(n="self",r,o){let i=Aa.updates();this._token&&(i.token=this._token),i.context="self"==n?"vessels.self":n,this._token&&(i.token=this._token);let s=[];"string"==typeof r&&s.push({path:r,value:o}),"object"==typeof r&&Array.isArray(r)&&(s=r);let a={timestamp:(new Date).toISOString(),values:s};this._source&&(a.source=this._source),i.updates.push(a),this.send(i)}subscribe(n="*",r="*",o){let i=Aa.subscribe();if(this._token&&(i.token=this._token),i.context="self"==n?"vessels.self":n,this._token&&(i.token=this._token),"object"==typeof r&&Array.isArray(r)&&(i.subscribe=r),"string"==typeof r){let s={};s.path=r,o&&"object"==typeof o&&(o.period&&(s.period=o.period),o.minPeriod&&(s.minPeriod=o.period),o.format&&("delta"==o.format||"full"==o.format)&&(s.format=o.format),o.policy&&("instant"==o.policy||"ideal"==o.policy||"fixed"==o.policy)&&(s.policy=o.policy)),i.subscribe.push(s)}this.send(i)}unsubscribe(n="*",r="*"){let o=Aa.unsubscribe();this._token&&(o.token=this._token),o.context="self"==n?"vessels.self":n,this._token&&(o.token=this._token),"object"==typeof r&&Array.isArray(r)&&(o.unsubscribe=r),"string"==typeof r&&o.unsubscribe.push({path:r}),this.send(o)}raiseAlarm(n="*",r,o){let i;i="string"==typeof r&&-1==r.indexOf("notifications.")?`notifications.${r}`:r,this.put(n,i,o.value)}clearAlarm(n="*",r){let o=-1==r.indexOf("notifications.")?`notifications.${r}`:r;this.put(n,o,null)}isSelf(n){return n.context==this.selfId}isDelta(n){return typeof n.context<"u"}isHello(n){return typeof n.version<"u"&&typeof n.self<"u"}isResponse(n){return typeof n.requestId<"u"}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=K({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();class iP{constructor(t,n,r,o){this._method=[],this._message="",this._message=typeof t<"u"?t:"",this._state=typeof n<"u"?n:HD.alarm,r&&this._method.push(Fd.visual),o&&this._method.push(Fd.sound)}get value(){return{message:this._message,state:this._state,method:this._method}}}var HD=function(e){return e.normal="normal",e.alert="alert",e.warn="warn",e.alarm="alarm",e.emergency="emergency",e}(HD||{}),Fd=function(e){return e.visual="visual",e.sound="sound",e}(Fd||{});class aP{constructor(){this.obsList=[],this.stream=new rP,this._connect=new ze,this.onConnect=this._connect.asObservable(),this._close=new ze,this.onClose=this._close.asObservable(),this._error=new ze,this.onError=this._error.asObservable(),this._message=new ze,this.onMessage=this._message.asObservable()}get endpoint(){return this.stream.endpoint}set endpoint(t){this.stream.endpoint=t}get selfId(){return this.stream.selfId}set selfId(t){this.stream.selfId=t}get _source(){return this.stream._source}set _source(t){this.stream._source=t}set source(t){this.stream.source=t}set authToken(t){this.stream.authToken=t}get connectionTimeout(){return this.stream.connectionTimeout}set connectionTimeout(t){this.stream.connectionTimeout=t}get isOpen(){return this.stream.isOpen}get filter(){return this.stream.filter}set filter(t){this.stream.filter=t}get playbackMode(){return this.stream.playbackMode}open(t,n="none",r){this.obsList.push(this.stream.onConnect.subscribe(o=>this._connect.next(o))),this.obsList.push(this.stream.onClose.subscribe(o=>this._close.next(o))),this.obsList.push(this.stream.onError.subscribe(o=>this._error.next(o))),this.obsList.push(this.stream.onMessage.subscribe(o=>this._message.next(o))),this.stream.open(t,n,r)}close(){this.stream.close(),this.obsList.forEach(t=>t.unsubscribe()),this.obsList=[]}sendRequest(t){return this.stream.sendRequest(t)}put(t,n,r){return this.stream.put(t,n,r)}login(t,n){return this.stream.login(t,n)}send(t){this.stream.send(t)}sendUpdate(t="self",n,r){this.stream.sendUpdate(t,n,r)}subscribe(t="*",n="*",r){this.stream.subscribe(t,n,r)}unsubscribe(t="*",n="*"){this.stream.unsubscribe(t,n)}raiseAlarm(t="*",n,r){this.stream.raiseAlarm(t,n,r)}clearAlarm(t="*",n){this.stream.clearAlarm(t,n)}isSelf(t){return this.stream.isSelf(t)}isDelta(t){return this.stream.isDelta(t)}isHello(t){return this.stream.isHello(t)}isResponse(t){return this.stream.isResponse(t)}}class La{id;name;mmsi;position=[0,0];state;type={id:-1,name:""};properties={};lastUpdated=new Date;callsignVhf;callsignHf;orientation=0;virtual}class $D extends La{anchor={maxRadius:null,radius:null,position:null};autopilot={};buddy=!1;cog;cogTrue=null;cogMagnetic=null;courseApi={arrivalCircle:0,activeRoute:{},nextPoint:{},previousPoint:{}};courseCalcs={};distanceToSelf;environment={mode:null,sun:null};heading;headingTrue=null;headingMagnetic=null;performance={beatAngle:null,gybeAngle:null};racing;registrations={};resourceUpdates=[];sog;track=[];vectors={cog:[]};wind={direction:null,mwd:null,twd:null,tws:null,speedTrue:null,sog:null,awa:null,aws:null};design={airHeight:null,beam:null,draft:{current:null,maximum:null},length:null};destination={name:null,eta:null};flag;port}class lP extends La{constructor(){super()}}class uP extends La{sog=0;track=[];constructor(){super()}}class BD extends La{constructor(){super()}}class cP extends BD{twd;tws;temperature;constructor(){super()}}class Vd{static celciusToKelvin(t=0){return t+273.15}static kelvinToCelcius(t=0){return t-273.15}static kelvinToFarenheit(t=0){return 1.8*t-459.67}static degreesToRadians(t=0){return t*Math.PI/180}static radiansToDegrees(t=0){return 180*t/Math.PI}static angleToDirection(t,n){const r=2*Math.PI;if(n||(n=0),t||(t=0),isNaN(n)||isNaN(t))return null;const o=n+t;return o>r?o-r:o<0?r+o:o}static directionToAngle(t,n){const r=2*Math.PI;if(n||(n=0),t||(t=0),isNaN(n)||isNaN(t))return null;const o=n-t;let i;if(o>0)i=o>Math.PI?r-o:0-o;else if(o<0){const s=Math.abs(o);i=s>Math.PI?s-r:s}else i=o;return i}static knotsToKm(t){return 1.852*t}static nauticalMilesToKm(t){return 1.852*t}static knotsToMSec(t){return.51444325460445*t}static kmToKnots(t){return.539957*t}static kmToNauticalMiles(t){return.539957*t}static kmToMiles(t){return.621371*t}static metersToFeet(t){return 3.28084*t}static msecToKnots(t){return 1.94384*t}static msecToKmh(t){return 3.6*t}static msecToMph(t){return 2.23694*t}static nauticalMilesToMiles(t){return 1.15078*t}static milesToKm(t){return 1.60934*t}static milesToNauticalMiles(t){return.868976*t}static rpmToHertz(t){return t/60}}var Fn=Ua(2541);class Ct{static destCoordinate(t,n,r){const o=(0,Fn.computeDestinationPoint)(t,r,Vd.radiansToDegrees(n));return[o.longitude,o.latitude]}static distanceTo(t,n){return(0,Fn.getDistance)(t,n)}static routeLength(t){return(0,Fn.getPathLength)(t)}static routeLegs(t,n){if(t.length<2)return[];const r=[];r.push(n?{bearing:(0,Fn.getGreatCircleBearing)(n,t[0]),distance:Ct.distanceTo(n,t[0])}:{bearing:0,distance:0});for(let o=1;o<t.length;++o){const i={bearing:(0,Fn.getGreatCircleBearing)(t[o-1],t[o]),distance:Ct.distanceTo(t[o-1],t[o])};r.push(i)}return r}static centreOfPolygon(t){const n=(0,Fn.getCenter)(t);return[n.longitude,n.latitude]}static inDLCrossingZone(t,n=170){return Math.abs(t[0])>=n}static inBounds(t,n){return(0,Fn.isPointInPolygon)(t,[[n[0],n[1]],[n[0],n[3]],[n[2],n[3]],[n[2],n[1]],[n[0],n[1]]])}static calcMapifiedExtent(t,n){const o=111111*Math.cos(Vd.degreesToRadians(t[1])),i=[0,0,0,0];return i[1]=t[1]+(0-Math.abs(n))/111111,i[3]=t[1]+Math.abs(n)/111111,i[0]=t[0]+(0-Math.abs(n))/o,i[2]=t[0]+Math.abs(n)/o,i}static normaliseCoords(t){if(!Array.isArray(t))return[0,0];if("number"==typeof t[0]){if(t[0]>180)for(;t[0]>180;)t[0]=t[0]-360;else if(t[0]<-180)for(;t[0]<-180;)t[0]=360+t[0];return t}return Array.isArray(t[0])?(t.forEach(n=>this.normaliseCoords(n)),t):void 0}}class dP{action="notification";playback=!1;result=null;self=null;timestamp=(new Date).toISOString();sourceRef}class Hd{action;playback=!1;result=null;timestamp;self=null;constructor(){this.action="update"}}class fP extends Hd{constructor(){super(),this.action="resource"}}class pP extends Hd{constructor(){super(),this.action="trail"}}var hP=Ua(6380);const gP=["environment.wind.speedTrue","environment.wind.speedOverGround","environment.wind.angleTrueGround","environment.wind.angleTrueWater","environment.wind.directionTrue","environment.wind.directionMagnetic","navigation.courseOverGroundTrue","navigation.courseOverGroundMagnetic","navigation.headingTrue","navigation.headingMagnetic"];let F,De,UD;const Ei=[];let Bd,Fa=[],$d=!1,Ud=!1;const pe={signalk:{},aisState:[]};let Ve,zD,WD=[0,0,0,0],qD=60,wi=0,Vn={},jn=500,Tt=!1;const $t={maxAge:54e4,staleAge:36e4,lastTick:(new Date).valueOf(),maxTrack:20};let Wd={cogLine:10,aisCogLine:10};const _i={trailDuration:24,trailResolution:{lastHour:"5s",next23:"10s",beyond24:"1m"}};let Hn,Ci="freeboard-sk";function GD(){Ve={updated:{},stale:{},expired:{}}}function Va({action:e,msg:t}){switch(e){case"onConnect":postMessage({action:"open",playback:Tt,result:t.target.readyState});break;case"onClose":KD(!1);break;case"onError":postMessage({action:"error",playback:Tt,result:"Connection error!"});break;case"onMessage":!function bP(e){De.isHello(e)?(postMessage({action:"hello",result:e,self:e.self,playback:Tt}),jn&&JD()):De.isDelta(e)?($d=!0,e.updates.forEach(t=>{t.values&&(Hn=t.$source,t.values.forEach(n=>{if(zD=t.timestamp,e.context)switch(e.context.split(".")[0]){case"shore":case"atons":pe?.signalk.atons&&function _P(e,t){let n=!1;if(-1!==e.indexOf("shore.basestations")&&(n=!0),!F.atons.has(e)){const o=new BD;o.id=e,o.position=null,n&&(o.type.id=-1,o.type.name="Basestation"),F.atons.set(e,o)}const r=F.atons.get(e);""===t.path?(typeof t.value.name<"u"&&(r.name=t.value.name),typeof t.value.mmsi<"u"&&(r.mmsi=t.value.mmsi),typeof t.value.atonType<"u"&&(r.type=t.value.atonType)):"atonType"===t.path?r.type=t.value:"virtual"===t.path?r.virtual=t.value:"navigation.position"===t.path?(r.position=[t.value.longitude,t.value.latitude],r.positionReceived=!0):r.properties[t.path]=t.value}(e.context,n),Ni(e.context,F.atons,pe?.signalk.atons);break;case"sar":pe?.signalk.sar&&function CP(e,t){if(!F.sar.has(e)){const r=new lP;r.id=e,r.position=null,r.type.id=-1,r.type.name="SaR Beacon",F.sar.set(e,r)}const n=F.sar.get(e);""===t.path?(typeof t.value.name<"u"&&(n.name=t.value.name),typeof t.value.mmsi<"u"&&(n.mmsi=t.value.mmsi),typeof t.value.communication<"u"&&(n.callsignVhf=t.value.communication.callsignVhf??"",n.callsignHf=t.value.communication.callsignHf??"")):"communication.callsignVhf"===t.path?n.callsignVhf=t.value:"communication.callsignHf"===t.path?n.callsignHf=t.value:"navigation.position"===t.path&&t.value&&(n.position=Ct.normaliseCoords([t.value.longitude,t.value.latitude]),n.positionReceived=!0)}(e.context,n),Ni(e.context,F.sar,pe?.signalk.sar);break;case"aircraft":pe?.signalk.aircraft&&function NP(e,t){if(!F.aircraft.has(e)){const r=new uP;r.id=e,r.position=null,F.aircraft.set(e,r)}const n=F.aircraft.get(e);""===t.path?(typeof t.value.name<"u"&&(n.name=t.value.name),typeof t.value.mmsi<"u"&&(n.mmsi=t.value.mmsi),typeof t.value.communication<"u"&&(n.callsignVhf=t.value.communication.callsignVhf??"",n.callsignHf=t.value.communication.callsignHf??"")):"communication.callsignVhf"===t.path?n.callsignVhf=t.value:"communication.callsignHf"===t.path?n.callsignHf=t.value:"navigation.position"===t.path&&t.value?(n.position=Ct.normaliseCoords([t.value.longitude,t.value.latitude]),n.positionReceived=!0,qd(n)):"navigation.courseOverGroundTrue"===t.path?n.orientation=t.value:"navigation.speedOverGround"===t.path&&(n.sog=t.value)}(e.context,n),Ni(e.context,F.aircraft,pe?.signalk.aircraft);break;case"meteo":pe?.signalk.meteo&&(function TP(e,t){if(!F.meteo.has(e)){const r=new cP;r.id=e,r.position=null,r.type.id=-1,r.type.name="Weather Station",F.meteo.set(e,r)}const n=F.meteo.get(e);if(""===t.path){if(typeof t.value.name<"u"&&(n.name=t.value.name),typeof t.value.mmsi<"u"){const r=e.split(":").slice(-2);n.mmsi=2===r.length?`${r[0]}:${r[1]}`:t.value.mmsi}typeof t.value.communication<"u"&&(n.callsignVhf=t.value.communication.callsignVhf??"",n.callsignHf=t.value.communication.callsignHf??"")}else"communication.callsignVhf"===t.path?n.callsignVhf=t.value:"communication.callsignHf"===t.path?n.callsignHf=t.value:"environment.outside.temperature"===t.path?n.temperature=t.value:"environment.wind.directionTrue"===t.path?n.twd=t.value:"environment.wind.averageSpeed"===t.path?n.tws=t.value:"navigation.position"===t.path&&t.value&&(n.position=Ct.normaliseCoords([t.value.longitude,t.value.latitude]),n.positionReceived=!0)}(e.context,n),tb(n)),Ni(e.context,F.meteo,pe?.signalk.meteo);break;case"vessels":if(De.isSelf(e))F.self.id||(F.self.id=e.context),eb(F.self,n,!0),tb(n);else{if(pe?.signalk.vessels){const r=function MP(e){if(!F.aisTargets.has(e)){const t=new $D;t.id=e,t.position=null,F.aisTargets.set(e,t)}return F.aisTargets.get(e)}(e.context);eb(r,n)}Ni(e.context,F.aisTargets,pe?.signalk.vessels,pe?.aisState)}}}))}),YD()):De.isResponse(e)&&postMessage({action:"response",result:e})}(t)}}function ZD(e={}){e.interval&&"number"==typeof e.interval&&(jn=e.interval,XD(),JD(),qD=1/(jn/1e3)*60),Tt=!!e.playback,e.selections&&(typeof e.selections.preferredPaths<"u"&&(Vn=e.selections.preferredPaths),e.selections.aisMaxAge&&"number"==typeof e.selections.aisMaxAge&&($t.maxAge=e.selections.aisMaxAge),e.selections.aisStaleAge&&"number"==typeof e.selections.aisStaleAge&&($t.staleAge=e.selections.aisStaleAge),"number"==typeof e.selections.signalk.maxRadius&&(pe.signalk=e.selections.signalk),typeof e.selections.aisState<"u"&&Array.isArray(e.selections.aisState)&&(pe.aisState=e.selections.aisState),Wd=e.selections.vessel)}function KD(e=!1){XD(),Ei.forEach(t=>t.unsubscribe()),De&&e&&De.close(),De=null,postMessage({action:"close",result:e,playback:Tt})}function Ti(e){return new Promise((t,n)=>{fetch(`${e}`).then(r=>{r.json().then(o=>t(o)).catch(o=>n(o))}).catch(r=>{n(r)})})}function QD(){Ti(Bd+"/tracks"+(pe&&pe.signalk&&pe.signalk.maxRadius?`?radius=${pe.signalk.maxRadius}`:"?radius=10000")).then(t=>{Ud=!0,Object.entries(t).forEach(n=>{if(F.aisTargets.has(n[0])){const r=F.aisTargets.get(n[0]);r.track=n[1].coordinates,qd(r)}})}).catch(()=>{Ud=!1})}function Ni(e,t,n=!0,r=[]){if(n){let o=t.get(e);o&&r.includes(o?.state)&&(Ve.expired[e]=!0,o=null),o&&pe.signalk.maxRadius?o.positionReceived&&Ct.inBounds(o.position,WD)?Ve.updated[e]=!0:(t.delete(e),Ve.expired[e]=!0):Ve.updated[e]=!0}else 0!==t.size&&(t.forEach((o,i)=>{Ve.expired[i]=!0}),t.clear())}function YD(e=!1){if(!jn||e){const t=new Hd;t.playback=Tt,F.aisStatus.updated=Object.keys(Ve.updated),F.aisStatus.stale=Object.keys(Ve.stale),F.aisStatus.expired=Object.keys(Ve.expired),t.result=F,t.timestamp=Tt?zD:F.self.lastUpdated.toISOString(),postMessage(t),GD(),F.self.resourceUpdates=[],0===wi&&(function wP(){const e=(new Date).valueOf();F.aisTargets.forEach((t,n)=>{t.lastUpdated.valueOf()<e-$t.maxAge?(Ve.expired[n]=!0,F.aisTargets.delete(n)):t.lastUpdated.valueOf()<e-$t.staleAge&&(Ve.stale[n]=!0)}),F.aircraft.forEach((t,n)=>{t.lastUpdated.valueOf()<e-$t.maxAge?(Ve.expired[n]=!0,F.aircraft.delete(n)):t.lastUpdated.valueOf()<e-$t.staleAge&&(Ve.stale[n]=!0)}),F.sar.forEach((t,n)=>{t.lastUpdated.valueOf()<e-$t.maxAge?(Ve.expired[n]=!0,F.sar.delete(n)):t.lastUpdated.valueOf()<e-$t.staleAge&&(Ve.stale[n]=!0)})}(),F.self.positionReceived&&pe?.signalk.maxRadius&&(WD=Ct.calcMapifiedExtent(F.self.position,pe.signalk.maxRadius),wi++)),wi=wi>=qD?0:wi+1}}function JD(){jn&&"number"==typeof jn&&Fa.push(setInterval(()=>{$d&&(YD(!0),$d=!1)},jn)),Fa.push(setInterval(()=>{Ud&&QD()},6e4))}function XD(){Fa.forEach(e=>clearInterval(e)),Fa=[]}function eb(e,t,n=!1){if(e.lastUpdated=new Date,n){if(t.path.startsWith("resources."))e.resourceUpdates.push(t),function EP(e){const t=new fP;t.playback=Tt,t.result={path:e.path,value:e.value,sourceRef:Hn},postMessage(t)}(t);else if(t.path.startsWith("navigation.racing"))e.properties[t.path]=t.value;else if("performance.beatAngle"===t.path)e.performance.beatAngle=t.value;else if("performance.gybeAngle"===t.path)e.performance.gybeAngle=t.value;else if(t.path.startsWith("navigation.course."))if(t.path.startsWith("navigation.course.calcValues.")){const i=t.path.split(".").slice(3).join(".");e.courseCalcs[i]=t.value}else t.path.includes("activeRoute")?e.courseApi.activeRoute=t.value:-1!==t.path.indexOf("nextPoint")?e.courseApi.nextPoint=t.value:-1!==t.path.indexOf("previousPoint")?e.courseApi.previousPoint=t.value:"arrivalCircle"===t.path&&(e.courseApi.arrivalCircle=t.value);else"environment.mode"===t.path?e.environment.mode=t.value:"environment.sun"===t.path&&(e.environment.sun=t.value);const o=-1!==t.path.indexOf("course")?t.path.split(".").slice(0,2).join("."):t.path;-1!==gP.indexOf(o)&&(F.paths[o]=null)}else"navigation.distanceToSelf"===t.path&&(e.distanceToSelf=t.value);if(""===t.path)typeof t.value.name<"u"&&(e.name=t.value.name),typeof t.value.mmsi<"u"&&(e.mmsi=t.value.mmsi),typeof t.value.registrations<"u"&&(e.registrations=t.value.registrations),typeof t.value.buddy<"u"&&(e.buddy=t.value.buddy),typeof t.value.communication<"u"&&(e.callsignVhf=t.value.communication.callsignVhf??"",e.callsignHf=t.value.communication.callsignHf??"");else if("communication.callsignVhf"===t.path)e.callsignVhf=t.value;else if("communication.callsignHf"===t.path)e.callsignHf=t.value;else if("design.aisShipType"===t.path)e.type=t.value;else if("navigation.position"===t.path&&t.value){if(typeof t.value.latitude>"u"||typeof t.value.longitude>"u")return;e.position=Ct.normaliseCoords([t.value.longitude,t.value.latitude]),e.positionReceived=!0,n||qd(e)}else"navigation.state"===t.path?e.state=t.value:"navigation.speedOverGround"===t.path?e.sog=t.value:"environment.wind.angleApparent"===t.path?e.wind.awa=t.value:"environment.wind.speedApparent"===t.path?e.wind.aws=t.value:"environment.wind.speedTrue"===t.path?e.wind.speedTrue=t.value:"environment.wind.speedOverGround"===t.path?e.wind.sog=t.value:"environment.wind.directionTrue"===t.path?e.wind.twd=t.value:"environment.wind.directionMagnetic"===t.path?e.wind.mwd=t.value:"navigation.anchor.position"===t.path?e.anchor.position=t.value:"navigation.anchor.maxRadius"===t.path?e.anchor.maxRadius=t.value:"navigation.anchor.currentRadius"===t.path?e.anchor.radius=t.value:"steering.autopilot.state"===t.path&&Hn===Ci?e.autopilot.state=t.value:"steering.autopilot.mode"===t.path&&Hn===Ci?e.autopilot.mode=t.value:"steering.autopilot.target"===t.path&&Hn===Ci?e.autopilot.target=t.value:"steering.autopilot.engaged"===t.path&&Hn===Ci?e.autopilot.enabled=t.value:"steering.autopilot.defaultPilot"===t.path?(e.autopilot.default=t.value,Ci=t.value):"navigation.courseOverGroundTrue"===t.path?e.cogTrue=t.value:"navigation.courseOverGroundMagnetic"===t.path?e.cogMagnetic=t.value:"navigation.headingTrue"===t.path?e.headingTrue=t.value:"navigation.headingMagnetic"===t.path&&(e.headingMagnetic=t.value);typeof Vn.heading<"u"&&t.path===Vn.heading&&(e.orientation=t.value),typeof Vn.tws<"u"&&t.path===Vn.tws&&(e.wind.tws=t.value),typeof Vn.twd<"u"&&t.path===Vn.twd&&(e.wind.direction="environment.wind.angleTrueGround"===t.path||"environment.wind.angleTrueWater"===t.path?Vd.angleToDirection(t.value,e.orientation??0):t.value);const r=e.cogTrue??e.cogMagnetic??void 0;typeof r<"u"&&e.position&&(e.vectors.cog=[e.position,Ct.destCoordinate(e.position,r,(e.sog??0)*(60*(n?Wd.cogLine:Wd.aisCogLine)))])}function tb(e){if(e.path.includes("notifications.")){const t=new dP;t.playback=Tt,t.result={path:e.path,value:e.value,sourceRef:Hn},postMessage(t)}}function qd(e){if(e.track&&0===e.track.length)e.track.push([e.position]);else{const n=e.track[e.track.length-1][e.track[e.track.length-1].length-1];n[0]!==e.position[0]&&n[1]!==e.position[1]&&e.track[e.track.length-1].push(e.position)}e.track[e.track.length-1]=e.track[e.track.length-1].slice(0-$t.maxTrack)}addEventListener("message",({data:e})=>{!function vP(e){if(e.cmd)switch(e.cmd){case"open":ZD(e.options),function IP(e){if(De)return;if(!e.url)return void postMessage({action:"error",result:"Valid options not provided!"});const t=e.url.split("/");if(t.pop(),t.push("api"),t[0]="wss:"===t[0]?"https:":"http:",Bd=t.join("/"),function mP(){F={self:new $D,aisTargets:new Map,aisStatus:{updated:[],stale:[],expired:[]},paths:{},atons:new Map,aircraft:new Map,sar:new Map,meteo:new Map},F.self.positionReceived=!1,GD()}(),De=new aP,Ei.push(De.onConnect.subscribe(n=>Va({action:"onConnect",msg:n}))),Ei.push(De.onClose.subscribe(n=>Va({action:"onClose",msg:n}))),Ei.push(De.onError.subscribe(n=>Va({action:"onError",msg:n}))),Ei.push(De.onMessage.subscribe(n=>Va({action:"onMessage",msg:n}))),De.authToken=UD,e.playback){const n=e.playbackOptions.startTime?`?startTime=${e.playbackOptions.startTime}`:null;let r=e.playbackOptions.playbackRate?`playbackRate=${e.playbackOptions.playbackRate}`:null;r=r?n?"&"+r:"?"+r:null,De.open(`${e.url}${n||""}${r||""}`,e.playbackOptions.subscribe,e.token)}else De.open(e.url,e.subscribe,e.token),QD()}(e.options);break;case"close":KD(!0);break;case"subscribe":De.subscribe(e.options.context,e.options.path);break;case"settings":ZD(e.options);break;case"alarm":!function DP(e){const t=-1===e.type.indexOf("notifications.")?`notifications.${e.type}`:e.type;e.raise?De.raiseAlarm("self",t,new iP(e.message,e.state,!0,!0)):De.clearAlarm("self",t)}(e.options);break;case"vessel":if(e.options){let t;t="self"===e.options.context?F.self:F.aisTargets.get(e.options.context),t&&e.options.name&&(t.name=e.options.name)}break;case"auth":e.options&&typeof e.options.token<"u"&&(UD=e.options.token);break;case"trail":e.options&&(_i.trailDuration=e.options.trailDuration??24,e.options.trailResolution&&(_i.trailResolution.lastHour=e.options.trailResolution.lastHour??"5s",_i.trailResolution.next23=e.options.trailResolution.next23??"1m",_i.trailResolution.beyond24=e.options.trailResolution.beyond24??"5m")),function yP(e){const t=Bd+"/self/track?",n=[];e.trailDuration>24&&(n.push(Ti(`${t}timespan=${e.trailDuration-24}h&resolution=${e.trailResolution.beyond24}×panOffset=24`)),n.push(Ti(`${t}timespan=23h&resolution=${e.trailResolution.next23}×panOffset=1`))),e.trailDuration>1&&e.trailDuration<25&&n.push(Ti(`${t}timespan=${e.trailDuration-1}h&resolution=${e.trailResolution.next23}×panOffset=1`)),n.push(Ti(`${t}timespan=1h&resolution=${e.trailResolution.lastHour}`));let i=[];const s=new pP;s.playback=Tt,Promise.all(n).then(a=>{let l=0;const u=n.length-1;a.forEach(d=>{if(d.type&&"MultiLineString"===d.type&&d.coordinates&&Array.isArray(d.coordinates))if(l!==u){let f=[];for(d.coordinates.forEach(p=>{f=f.concat(p)}),f=(0,hP.p$)(f,5e-4,true);f.length>60;){const p=f.slice(0,60);i.push(p),f=f.slice(59),f[0]=[f[0][0]+5e-9,f[0][1]+5e-9]}0!==f.length&&i.push(f)}else i=i.concat(d.coordinates);l++}),s.result=i,postMessage(s)}).catch(()=>{s.result=null,postMessage(s)})}(_i)}}(e)})})();
|