@signalk/freeboard-sk 2.0.0-beta.2 → 2.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +55 -1
- package/package.json +24 -20
- package/public/590.4431be8bbcdbb3f8.js +1 -0
- package/public/assets/help/img/settings_course.png +0 -0
- package/public/assets/help/img/settings_other_vessels.png +0 -0
- package/public/assets/help/index.html +46 -15
- package/public/assets/img/alarms/weather.png +0 -0
- package/public/index.html +2 -2
- package/public/main.a54a56a8a0f02b2d.js +1 -0
- package/public/polyfills.12ddee7e4cb46a02.js +1 -0
- package/public/runtime.0360fd4b1168b48a.js +1 -0
- package/public/styles.a0bf4282aea78b28.css +1 -0
- package/dist/fb-openlayers/README.md +0 -17
- package/dist/fb-openlayers/bundles/fb-openlayers.umd.js +0 -4884
- package/dist/fb-openlayers/bundles/fb-openlayers.umd.js.map +0 -1
- package/dist/fb-openlayers/esm2015/fb-openlayers.js +0 -5
- package/dist/fb-openlayers/esm2015/index.js +0 -92
- package/dist/fb-openlayers/esm2015/lib/alarms/layer-anchor-alarm.component.js +0 -136
- package/dist/fb-openlayers/esm2015/lib/alarms/layer-cpa-alarm.component.js +0 -135
- package/dist/fb-openlayers/esm2015/lib/content.component.js +0 -16
- package/dist/fb-openlayers/esm2015/lib/control.component.js +0 -37
- package/dist/fb-openlayers/esm2015/lib/controls.directive.js +0 -61
- package/dist/fb-openlayers/esm2015/lib/interactions/interaction-draw.component.js +0 -72
- package/dist/fb-openlayers/esm2015/lib/interactions/interaction-modify.component.js +0 -72
- package/dist/fb-openlayers/esm2015/lib/interactions.directive.js +0 -61
- package/dist/fb-openlayers/esm2015/lib/layer.component.js +0 -157
- package/dist/fb-openlayers/esm2015/lib/map.component.js +0 -206
- package/dist/fb-openlayers/esm2015/lib/map.service.js +0 -70
- package/dist/fb-openlayers/esm2015/lib/models.js +0 -37
- package/dist/fb-openlayers/esm2015/lib/navigation/layer-arrival-circle.component.js +0 -116
- package/dist/fb-openlayers/esm2015/lib/navigation/layer-bearing-line.component.js +0 -229
- package/dist/fb-openlayers/esm2015/lib/navigation/layer-xte-path.component.js +0 -120
- package/dist/fb-openlayers/esm2015/lib/overlay.component.js +0 -56
- package/dist/fb-openlayers/esm2015/lib/resources/layer-charts.component.js +0 -141
- package/dist/fb-openlayers/esm2015/lib/resources/layer-notes.component.js +0 -177
- package/dist/fb-openlayers/esm2015/lib/resources/layer-regions.component.js +0 -184
- package/dist/fb-openlayers/esm2015/lib/resources/layer-resourceset.component.js +0 -226
- package/dist/fb-openlayers/esm2015/lib/resources/layer-routes.component.js +0 -188
- package/dist/fb-openlayers/esm2015/lib/resources/layer-sktarget-tracks.component.js +0 -213
- package/dist/fb-openlayers/esm2015/lib/resources/layer-sktargets.component.js +0 -269
- package/dist/fb-openlayers/esm2015/lib/resources/layer-skvessels.component.js +0 -410
- package/dist/fb-openlayers/esm2015/lib/resources/layer-tracks.component.js +0 -175
- package/dist/fb-openlayers/esm2015/lib/resources/layer-waypoints.component.js +0 -238
- package/dist/fb-openlayers/esm2015/lib/util.js +0 -124
- package/dist/fb-openlayers/esm2015/lib/vessel/layer-vessel-trail.component.js +0 -178
- package/dist/fb-openlayers/esm2015/lib/vessel/layer-vessel.component.js +0 -229
- package/dist/fb-openlayers/esm2015/lib/view.directive.js +0 -141
- package/dist/fb-openlayers/fb-openlayers.d.ts +0 -5
- package/dist/fb-openlayers/fb-openlayers.d.ts.map +0 -1
- package/dist/fb-openlayers/fb-openlayers.metadata.json +0 -1
- package/dist/fb-openlayers/fesm2015/fb-openlayers.js +0 -4326
- package/dist/fb-openlayers/fesm2015/fb-openlayers.js.map +0 -1
- package/dist/fb-openlayers/index.d.ts +0 -33
- package/dist/fb-openlayers/index.d.ts.map +0 -1
- package/dist/fb-openlayers/index.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/alarms/layer-anchor-alarm.component.d.ts +0 -44
- package/dist/fb-openlayers/lib/alarms/layer-anchor-alarm.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/alarms/layer-anchor-alarm.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/alarms/layer-cpa-alarm.component.d.ts +0 -39
- package/dist/fb-openlayers/lib/alarms/layer-cpa-alarm.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/alarms/layer-cpa-alarm.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/content.component.d.ts +0 -6
- package/dist/fb-openlayers/lib/content.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/content.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/control.component.d.ts +0 -14
- package/dist/fb-openlayers/lib/control.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/control.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/controls.directive.d.ts +0 -14
- package/dist/fb-openlayers/lib/controls.directive.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/controls.directive.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/interactions/interaction-draw.component.d.ts +0 -27
- package/dist/fb-openlayers/lib/interactions/interaction-draw.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/interactions/interaction-draw.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/interactions/interaction-modify.component.d.ts +0 -26
- package/dist/fb-openlayers/lib/interactions/interaction-modify.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/interactions/interaction-modify.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/interactions.directive.d.ts +0 -14
- package/dist/fb-openlayers/lib/interactions.directive.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/interactions.directive.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/layer.component.d.ts +0 -41
- package/dist/fb-openlayers/lib/layer.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/layer.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/map.component.d.ts +0 -71
- package/dist/fb-openlayers/lib/map.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/map.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/map.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/map.service.d.ts +0 -19
- package/dist/fb-openlayers/lib/map.service.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/map.service.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/models.d.ts +0 -42
- package/dist/fb-openlayers/lib/models.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/navigation/layer-arrival-circle.component.d.ts +0 -39
- package/dist/fb-openlayers/lib/navigation/layer-arrival-circle.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/navigation/layer-arrival-circle.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/navigation/layer-bearing-line.component.d.ts +0 -49
- package/dist/fb-openlayers/lib/navigation/layer-bearing-line.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/navigation/layer-bearing-line.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/navigation/layer-xte-path.component.d.ts +0 -39
- package/dist/fb-openlayers/lib/navigation/layer-xte-path.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/navigation/layer-xte-path.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/overlay.component.d.ts +0 -25
- package/dist/fb-openlayers/lib/overlay.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/overlay.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-charts.component.d.ts +0 -20
- package/dist/fb-openlayers/lib/resources/layer-charts.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-charts.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-notes.component.d.ts +0 -51
- package/dist/fb-openlayers/lib/resources/layer-notes.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-notes.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-regions.component.d.ts +0 -53
- package/dist/fb-openlayers/lib/resources/layer-regions.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-regions.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-resourceset.component.d.ts +0 -49
- package/dist/fb-openlayers/lib/resources/layer-resourceset.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-resourceset.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-routes.component.d.ts +0 -52
- package/dist/fb-openlayers/lib/resources/layer-routes.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-routes.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-sktarget-tracks.component.d.ts +0 -44
- package/dist/fb-openlayers/lib/resources/layer-sktarget-tracks.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-sktarget-tracks.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-sktargets.component.d.ts +0 -51
- package/dist/fb-openlayers/lib/resources/layer-sktargets.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-sktargets.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-skvessels.component.d.ts +0 -60
- package/dist/fb-openlayers/lib/resources/layer-skvessels.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-skvessels.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-tracks.component.d.ts +0 -50
- package/dist/fb-openlayers/lib/resources/layer-tracks.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-tracks.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-waypoints.component.d.ts +0 -57
- package/dist/fb-openlayers/lib/resources/layer-waypoints.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/resources/layer-waypoints.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/util.d.ts +0 -19
- package/dist/fb-openlayers/lib/util.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/vessel/layer-vessel-trail.component.d.ts +0 -45
- package/dist/fb-openlayers/lib/vessel/layer-vessel-trail.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/vessel/layer-vessel-trail.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/vessel/layer-vessel.component.d.ts +0 -55
- package/dist/fb-openlayers/lib/vessel/layer-vessel.component.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/vessel/layer-vessel.component.ngfactory.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/view.directive.d.ts +0 -44
- package/dist/fb-openlayers/lib/view.directive.d.ts.map +0 -1
- package/dist/fb-openlayers/lib/view.directive.ngfactory.d.ts.map +0 -1
- package/public/53.4babe18f9baabeea.js +0 -1
- package/public/main.a668c86ee67ed842.js +0 -1
- package/public/polyfills.1ba4e1a897c69e24.js +0 -1
- package/public/runtime.55118010dbcb6e60.js +0 -1
- package/public/styles.f013b594260c141e.css +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
### v2.0.0
|
|
4
4
|
|
|
5
|
-
__** BREAKING CHANGE **__ Freeboard-SK now requires
|
|
5
|
+
__** BREAKING CHANGE **__ Freeboard-SK now requires Signal K API Version 2
|
|
6
|
+
|
|
7
|
+
Freeboard-SK makes extensive use of both the new `Resources` and `Course` APIs.
|
|
6
8
|
|
|
7
9
|
__UPDATES:__
|
|
8
10
|
|
|
@@ -30,6 +32,58 @@ __UPDATES:__
|
|
|
30
32
|
|
|
31
33
|
- **Change**: Notes are only displayed on the map if they have a valid position. Notes attached to a resource / region are only available in the notes list of that resource.
|
|
32
34
|
|
|
35
|
+
- **Experiment**: Display Weather forecasts and warnings provided by `freeboard-sk-helper` plug-in. Ensure `freeboard-sk-helper` is configured using _Plugin Config_ on server dashboard. For more information see `freeboard-sk-helper` documentation.
|
|
36
|
+
|
|
37
|
+
### v1.22.1
|
|
38
|
+
|
|
39
|
+
- **Add**: Additional settings to control the way vessel trail is retrieved from the server.
|
|
40
|
+
|
|
41
|
+
- **Update**: Improved rendering of vessel trail when retrieved from the server.
|
|
42
|
+
|
|
43
|
+
- **Fix**: Trail to Route not honoring `Include Trail from Server` on tolerance change.
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
### v1.21.2
|
|
47
|
+
|
|
48
|
+
- **Update**: Allow seconds to be specified when setting targetArrivalTime.
|
|
49
|
+
- **Fix**: Error handling when targetArrivalTime.
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
### v1.21.1
|
|
53
|
+
|
|
54
|
+
- **Fix**: VMG display value is incorrect.
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
### v1.21.0
|
|
58
|
+
|
|
59
|
+
- **Add**: Ability to apply targetArrivalTime when a destination is active at the path navigation.course.targetArrivalTime
|
|
60
|
+
|
|
61
|
+
- **Add**: Support to display Icon in WebApps list.
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
### v1.20.0
|
|
65
|
+
|
|
66
|
+
- **Add**: Ability to supply url parameters to set the following configuration: `northup`, `zoom` and `movemap`. See Help for details. (closes #110)
|
|
67
|
+
|
|
68
|
+
- **Experiment**: View weather forecast information provided by `openweather-signalk` plugin.
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
### v1.19.4
|
|
72
|
+
|
|
73
|
+
- **Update**: Change select all/none on resource lists to only operate on the visible (filtered) list items. (closes #107)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
### v1.19.3
|
|
77
|
+
|
|
78
|
+
- **Add**: Speed units selection option added to settings. (closes #104)
|
|
79
|
+
|
|
80
|
+
### v1.19.2
|
|
81
|
+
|
|
82
|
+
- **Fix**: Coordinate display issue when format is DegMinSec. (closes #105)
|
|
83
|
+
|
|
84
|
+
### v1.19.1
|
|
85
|
+
|
|
86
|
+
- **Fix**: Issue where vessel name and MMSI not being received in stream connection after upgrading to server version 1.41.0
|
|
33
87
|
|
|
34
88
|
### v1.19.0
|
|
35
89
|
|
package/package.json
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@signalk/freeboard-sk",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.4",
|
|
4
4
|
"description": "Openlayers chartplotter implementation for Signal K",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"signalk-webapp",
|
|
7
7
|
"signalk-category-chart-plotters"
|
|
8
8
|
],
|
|
9
|
+
"signalk": {
|
|
10
|
+
"appIcon": "./assets/icons/icon-72x72.png",
|
|
11
|
+
"displayName": "Freeboard-SK"
|
|
12
|
+
},
|
|
9
13
|
"repository": "https://github.com/SignalK/freeboard-sk",
|
|
10
14
|
"scripts": {
|
|
11
15
|
"ng": "ng",
|
|
@@ -29,20 +33,20 @@
|
|
|
29
33
|
],
|
|
30
34
|
"license": "Apache-v2",
|
|
31
35
|
"devDependencies": {
|
|
32
|
-
"@angular-devkit/build-angular": "
|
|
33
|
-
"@angular/animations": "
|
|
34
|
-
"@angular/cdk": "^
|
|
35
|
-
"@angular/cli": "
|
|
36
|
-
"@angular/common": "
|
|
37
|
-
"@angular/compiler": "
|
|
38
|
-
"@angular/compiler-cli": "
|
|
39
|
-
"@angular/core": "
|
|
40
|
-
"@angular/forms": "
|
|
41
|
-
"@angular/language-service": "
|
|
42
|
-
"@angular/material": "^
|
|
43
|
-
"@angular/platform-browser": "
|
|
44
|
-
"@angular/platform-browser-dynamic": "
|
|
45
|
-
"@kolkov/angular-editor": "^2.
|
|
36
|
+
"@angular-devkit/build-angular": "^14.0.1",
|
|
37
|
+
"@angular/animations": "^14.0.1",
|
|
38
|
+
"@angular/cdk": "^14.0.1",
|
|
39
|
+
"@angular/cli": "^14.0.1",
|
|
40
|
+
"@angular/common": "^14.0.1",
|
|
41
|
+
"@angular/compiler": "^14.0.1",
|
|
42
|
+
"@angular/compiler-cli": "^14.0.1",
|
|
43
|
+
"@angular/core": "^14.0.1",
|
|
44
|
+
"@angular/forms": "^14.0.1",
|
|
45
|
+
"@angular/language-service": "^14.0.1",
|
|
46
|
+
"@angular/material": "^14.0.1",
|
|
47
|
+
"@angular/platform-browser": "^14.0.1",
|
|
48
|
+
"@angular/platform-browser-dynamic": "^14.0.1",
|
|
49
|
+
"@kolkov/angular-editor": "^2.1.0",
|
|
46
50
|
"@types/jasmine": "~3.6.0",
|
|
47
51
|
"@types/jasminewd2": "~2.0.3",
|
|
48
52
|
"@types/node": "^12.11.1",
|
|
@@ -59,20 +63,20 @@
|
|
|
59
63
|
"karma-coverage-istanbul-reporter": "~3.0.2",
|
|
60
64
|
"karma-jasmine": "~4.0.0",
|
|
61
65
|
"karma-jasmine-html-reporter": "^1.5.0",
|
|
62
|
-
"ng-packagr": "^
|
|
66
|
+
"ng-packagr": "^14.0.2",
|
|
63
67
|
"ngeohash": "^0.6.3",
|
|
64
|
-
"ol": "6.
|
|
68
|
+
"ol": "^6.14.1",
|
|
65
69
|
"prettier": "^2.5.1",
|
|
66
70
|
"prettier-plugin-organize-attributes": "^0.0.5",
|
|
67
71
|
"proj4": "2.6.2",
|
|
68
72
|
"protractor": "~7.0.0",
|
|
69
73
|
"rxjs": "~6.6.3",
|
|
70
|
-
"signalk-client-angular": "^2.0.0-beta.
|
|
71
|
-
"signalk-worker-angular": "
|
|
74
|
+
"signalk-client-angular": "^2.0.0-beta.rc2",
|
|
75
|
+
"signalk-worker-angular": "^1.1.4-beta.2",
|
|
72
76
|
"simplify-ts": "^1.0.2",
|
|
73
77
|
"ts-node": "~7.0.0",
|
|
74
78
|
"tslib": "^2.0.0",
|
|
75
|
-
"typescript": "~4.
|
|
79
|
+
"typescript": "~4.7.3",
|
|
76
80
|
"zone.js": "~0.11.4"
|
|
77
81
|
}
|
|
78
82
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(()=>{"use strict";var Vh={7887:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=M(v(6984)),S=M(v(5010)),w=M(v(9601)),A=M(v(8302)),I=v(964);function M(p){return p&&p.__esModule?p:{default:p}}f.default=function(y,_,D){var T=arguments.length>3&&void 0!==arguments[3]?arguments[3]:6371e3,O=(0,E.default)(y),j=(0,S.default)(y),Y=_/T,ae=(0,w.default)(D),ye=(0,w.default)(O),se=(0,w.default)(j),Re=Math.asin(Math.sin(ye)*Math.cos(Y)+Math.cos(ye)*Math.sin(Y)*Math.cos(ae)),Ne=se+Math.atan2(Math.sin(ae)*Math.sin(Y)*Math.cos(ye),Math.cos(Y)-Math.sin(ye)*Math.sin(Re)),me=(0,A.default)(Ne);return(me<I.MINLON||me>I.MAXLON)&&(Ne=(Ne+3*Math.PI)%(2*Math.PI)-Math.PI,me=(0,A.default)(Ne)),{latitude:(0,A.default)(Re),longitude:me}}},964:(F,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.areaConversion=f.timeConversion=f.distanceConversion=f.altitudeKeys=f.latitudeKeys=f.longitudeKeys=f.MAXLON=f.MINLON=f.MAXLAT=f.MINLAT=f.earthRadius=f.sexagesimalPattern=void 0,f.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]?)$/,f.earthRadius=6378137,f.MINLAT=-90,f.MAXLAT=90,f.MINLON=-180,f.MAXLON=180,f.longitudeKeys=["lng","lon","longitude",0],f.latitudeKeys=["lat","latitude",1],f.altitudeKeys=["alt","altitude","elevation","elev",2],f.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},f.timeConversion={m:60,h:3600,d:86400};var _={m2:1,km2:1e-6,ha:1e-4,a:.01,ft2:10.763911,yd2:1.19599,in2:1550.0031};f.areaConversion=_,_.sqm=_.m2,_.sqkm=_.km2,_.sqft=_.ft2,_.sqyd=_.yd2,_.sqin=_.in2},8315:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=v(964);f.default=function(I){var M=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"m",g=E.areaConversion[M];if(g)return I*g;throw new Error("Invalid unit used for area conversion.")}},713:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=v(964);f.default=function(I){var M=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"m",g=E.distanceConversion[M];if(g)return I*g;throw new Error("Invalid unit used for distance conversion.")}},9173:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=v(964);f.default=function(I){var M=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"kmh";switch(M){case"kmh":return I*E.timeConversion.h*E.distanceConversion.km;case"mph":return I*E.timeConversion.h*E.distanceConversion.mi;default:return I}}},4974:(F,f)=>{function v(p,y){return function I(p){if(Array.isArray(p))return p}(p)||function A(p,y){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(p)){var _=[],D=!0,T=!1,O=void 0;try{for(var Y,j=p[Symbol.iterator]();!(D=(Y=j.next()).done)&&(_.push(Y.value),!y||_.length!==y);D=!0);}catch(ae){T=!0,O=ae}finally{try{!D&&null!=j.return&&j.return()}finally{if(T)throw O}}return _}}(p,y)||function S(p,y){if(p){if("string"==typeof p)return w(p,y);var _=Object.prototype.toString.call(p).slice(8,-1);if("Object"===_&&p.constructor&&(_=p.constructor.name),"Map"===_||"Set"===_)return Array.from(p);if("Arguments"===_||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(_))return w(p,y)}}(p,y)||function E(){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 w(p,y){(null==y||y>p.length)&&(y=p.length);for(var _=0,D=new Array(y);_<y;_++)D[_]=p[_];return D}Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0,f.default=function(y){var D=v(y.toString().split("."),2),O=D[1],j=Math.abs(Number(D[0])),Y=60*Number("0."+(O||0)),ae=Y.toString().split("."),ye=Math.floor(Y),se=function(y){var D=Math.pow(10,arguments.length>1&&void 0!==arguments[1]?arguments[1]:4);return Math.round(y*D)/D}(60*Number("0."+(ae[1]||0))).toString(),Ne=v(se.split("."),2),me=Ne[0],fe=Ne[1],Ie=void 0===fe?"0":fe;return j+"\xb0 "+ye.toString().padStart(2,"0")+"' "+me.padStart(2,"0")+"."+Ie.padEnd(1,"0")+'"'}},1675:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=function S(I){return I&&I.__esModule?I:{default:I}}(v(8252));f.default=function(M,g){return(0,E.default)(M,g)[0]}},4434:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=I(v(9601)),S=I(v(6984)),w=I(v(5010)),A=v(964);function I(m){return m&&m.__esModule?m:{default:m}}f.default=function(p){var y=0;if(p.length>2){for(var _,D,T,O=0;O<p.length;O++){O===p.length-2?(_=p.length-2,D=p.length-1,T=0):O===p.length-1?(_=p.length-1,D=0,T=1):(_=O,D=O+1,T=O+2);var j=(0,w.default)(p[_]),Y=(0,S.default)(p[D]),ae=(0,w.default)(p[T]);y+=((0,E.default)(ae)-(0,E.default)(j))*Math.sin((0,E.default)(Y))}y=y*A.earthRadius*A.earthRadius/2}return Math.abs(y)}},5744:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=w(v(6984)),S=w(v(5010));function w(M){return M&&M.__esModule?M:{default:M}}f.default=function(g){if(!1===Array.isArray(g)||0===g.length)throw new Error("No points were given.");return g.reduce(function(m,p){var y=(0,E.default)(p),_=(0,S.default)(p);return{maxLat:Math.max(y,m.maxLat),minLat:Math.min(y,m.minLat),maxLng:Math.max(_,m.maxLng),minLng:Math.min(_,m.minLng)}},{maxLat:-1/0,minLat:1/0,maxLng:-1/0,minLng:1/0})}},2908:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=M(v(6984)),S=M(v(5010)),w=M(v(9601)),A=M(v(8302)),I=v(964);function M(p){return p&&p.__esModule?p:{default:p}}f.default=function(y,_){var fe,Ie,D=(0,E.default)(y),T=(0,S.default)(y),O=(0,w.default)(D),j=(0,w.default)(T),Y=_/I.earthRadius,ae=O-Y,ye=O+Y,se=(0,w.default)(I.MAXLAT),Re=(0,w.default)(I.MINLAT),Ne=(0,w.default)(I.MAXLON),me=(0,w.default)(I.MINLON);if(ae>Re&&ye<se){var Te=Math.asin(Math.sin(Y)/Math.cos(O));(fe=j-Te)<me&&(fe+=2*Math.PI),(Ie=j+Te)>Ne&&(Ie-=2*Math.PI)}else ae=Math.max(ae,Re),ye=Math.min(ye,se),fe=me,Ie=Ne;return[{latitude:(0,A.default)(ae),longitude:(0,A.default)(fe)},{latitude:(0,A.default)(ye),longitude:(0,A.default)(Ie)}]}},5582:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=I(v(6984)),S=I(v(5010)),w=I(v(9601)),A=I(v(8302));function I(m){return m&&m.__esModule?m:{default:m}}f.default=function(p){if(!1===Array.isArray(p)||0===p.length)return!1;var y=p.length,_=p.reduce(function(j,Y){var ae=(0,w.default)((0,E.default)(Y)),ye=(0,w.default)((0,S.default)(Y));return{X:j.X+Math.cos(ae)*Math.cos(ye),Y:j.Y+Math.cos(ae)*Math.sin(ye),Z:j.Z+Math.sin(ae)}},{X:0,Y:0,Z:0}),D=_.X/y,T=_.Y/y,O=_.Z/y;return{longitude:(0,A.default)(Math.atan2(T,D)),latitude:(0,A.default)(Math.atan2(O,Math.sqrt(D*D+T*T)))}}},6963:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=function S(I){return I&&I.__esModule?I:{default:I}}(v(5744));f.default=function(M){var g=(0,E.default)(M),p=g.minLng+(g.maxLng-g.minLng)/2;return{latitude:parseFloat((g.minLat+(g.maxLat-g.minLat)/2).toFixed(6)),longitude:parseFloat(p.toFixed(6))}}},4629:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=function S(I){return I&&I.__esModule?I:{default:I}}(v(2571));f.default=function(M,g){var m=arguments.length>2&&void 0!==arguments[2]?arguments[2]:E.default,p="function"==typeof m?m(M,g):(0,E.default)(M,g);if(isNaN(p))throw new Error("Could not calculate bearing for given points. Check your bearing function");switch(Math.round(p/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"}}},8839:(F,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0,f.default=function(w,A){return A.reduce(function(I,M){if(null==w)throw new Error("'".concat(w,"' is no valid coordinate."));return Object.prototype.hasOwnProperty.call(w,M)&&void 0!==M&&void 0===I?(I=M,M):I},void 0)}},804:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=v(964),S=function w(p){return p&&p.__esModule?p:{default:p}}(v(8839));function A(p,y){var _=Object.keys(p);if(Object.getOwnPropertySymbols){var D=Object.getOwnPropertySymbols(p);y&&(D=D.filter(function(T){return Object.getOwnPropertyDescriptor(p,T).enumerable})),_.push.apply(_,D)}return _}function I(p){for(var y=1;y<arguments.length;y++){var _=null!=arguments[y]?arguments[y]:{};y%2?A(Object(_),!0).forEach(function(D){M(p,D,_[D])}):Object.getOwnPropertyDescriptors?Object.defineProperties(p,Object.getOwnPropertyDescriptors(_)):A(Object(_)).forEach(function(D){Object.defineProperty(p,D,Object.getOwnPropertyDescriptor(_,D))})}return p}function M(p,y,_){return y in p?Object.defineProperty(p,y,{value:_,enumerable:!0,configurable:!0,writable:!0}):p[y]=_,p}f.default=function(y){var _=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{longitude:E.longitudeKeys,latitude:E.latitudeKeys,altitude:E.altitudeKeys},D=(0,S.default)(y,_.longitude),T=(0,S.default)(y,_.latitude),O=(0,S.default)(y,_.altitude);return I({latitude:T,longitude:D},O?{altitude:O}:{})}},9068:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=M(v(6984)),S=M(v(5010)),w=M(v(9601)),A=M(v(7148)),I=v(964);function M(p){return p&&p.__esModule?p:{default:p}}f.default=function(y,_){var D=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;D=void 0===D||isNaN(D)?1:D;var T=(0,E.default)(y),O=(0,S.default)(y),j=(0,E.default)(_),Y=(0,S.default)(_),ae=Math.acos((0,A.default)(Math.sin((0,w.default)(j))*Math.sin((0,w.default)(T))+Math.cos((0,w.default)(j))*Math.cos((0,w.default)(T))*Math.cos((0,w.default)(O)-(0,w.default)(Y))))*I.earthRadius;return Math.round(ae/D)*D}},1599:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=w(v(9068)),S=w(v(7148));function w(M){return M&&M.__esModule?M:{default:M}}f.default=function(g,m,p){var y=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,_=(0,E.default)(m,g,y),D=(0,E.default)(g,p,y),T=(0,E.default)(m,p,y),O=Math.acos((0,S.default)((_*_+T*T-D*D)/(2*_*T))),j=Math.acos((0,S.default)((D*D+T*T-_*_)/(2*D*T)));return O>Math.PI/2?_:j>Math.PI/2?D:Math.sin(O)*_}},8172:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=I(v(6984)),S=I(v(5010)),w=I(v(9601)),A=I(v(8302));function I(m){return m&&m.__esModule?m:{default:m}}f.default=function(p,y){var _=(0,E.default)(y),D=(0,S.default)(y),T=(0,E.default)(p),O=(0,S.default)(p);return((0,A.default)(Math.atan2(Math.sin((0,w.default)(D)-(0,w.default)(O))*Math.cos((0,w.default)(_)),Math.cos((0,w.default)(T))*Math.sin((0,w.default)(_))-Math.sin((0,w.default)(T))*Math.cos((0,w.default)(_))*Math.cos((0,w.default)(D)-(0,w.default)(O))))+360)%360}},6984:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=v(964),S=A(v(8839)),w=A(v(1450));function A(g){return g&&g.__esModule?g:{default:g}}f.default=function(m,p){var y=(0,S.default)(m,E.latitudeKeys);if(null!=y){var _=m[y];return!0===p?_:(0,w.default)(_)}}},5010:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=v(964),S=A(v(8839)),w=A(v(1450));function A(g){return g&&g.__esModule?g:{default:g}}f.default=function(m,p){var y=(0,S.default)(m,E.longitudeKeys);if(null!=y){var _=m[y];return!0===p?_:(0,w.default)(_)}}},5482:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=function S(M){return M&&M.__esModule?M:{default:M}}(v(9068));function w(M){return(w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(m){return typeof m}:function(m){return m&&"function"==typeof Symbol&&m.constructor===Symbol&&m!==Symbol.prototype?"symbol":typeof m})(M)}f.default=function(g){var m=arguments.length>1&&void 0!==arguments[1]?arguments[1]:E.default;return g.reduce(function(p,y){return"object"===w(p)&&null!==p.last&&(p.distance+=m(y,p.last)),p.last=y,p},{last:null,distance:0}).distance}},6952:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=I(v(6984)),S=I(v(5010)),w=I(v(9601)),A=v(964);function I(m){return m&&m.__esModule?m:{default:m}}f.default=function(p,y){var _=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;_=void 0===_||isNaN(_)?1:_;var se,Re,Ne,me,fe,Ie,yn,D=(0,E.default)(p),T=(0,S.default)(p),O=(0,E.default)(y),j=(0,S.default)(y),Y=6356752.314245,ae=1/298.257223563,ye=(0,w.default)(j-T),Te=Math.atan((1-ae)*Math.tan((0,w.default)(parseFloat(D)))),tn=Math.atan((1-ae)*Math.tan((0,w.default)(parseFloat(O)))),Ut=Math.sin(Te),Wt=Math.cos(Te),Gt=Math.sin(tn),vt=Math.cos(tn),yt=ye,_n=100;do{var _t=Math.sin(yt),bn=Math.cos(yt);if(0===(Ie=Math.sqrt(vt*_t*(vt*_t)+(Wt*Gt-Ut*vt*bn)*(Wt*Gt-Ut*vt*bn))))return 0;se=Ut*Gt+Wt*vt*bn,Re=Math.atan2(Ie,se),fe=se-2*Ut*Gt/(me=1-(Ne=Wt*vt*_t/Ie)*Ne),isNaN(fe)&&(fe=0);var nn=ae/16*me*(4+ae*(4-3*me));yn=yt,yt=ye+(1-nn)*ae*Ne*(Re+nn*Ie*(fe+nn*se*(2*fe*fe-1)))}while(Math.abs(yt-yn)>1e-12&&--_n>0);if(0===_n)return NaN;var nt=me*(A.earthRadius*A.earthRadius-Y*Y)/(Y*Y),Dn=1+nt/16384*(4096+nt*(nt*(320-175*nt)-768)),Kt=nt/1024*(256+nt*(nt*(74-47*nt)-128)),In=Kt*Ie*(fe+Kt/4*(se*(2*fe*fe-1)-Kt/6*fe*(4*Ie*Ie-3)*(4*fe*fe-3))),wn=Y*Dn*(Re-In);return Math.round(wn/_)*_}},2571:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=I(v(6984)),S=I(v(5010)),w=I(v(9601)),A=I(v(8302));function I(m){return m&&m.__esModule?m:{default:m}}f.default=function(p,y){var _=(0,w.default)((0,S.default)(y))-(0,w.default)((0,S.default)(p)),D=Math.log(Math.tan((0,w.default)((0,E.default)(y))/2+Math.PI/4)/Math.tan((0,w.default)((0,E.default)(p))/2+Math.PI/4));return Math.abs(_)>Math.PI&&(_=_>0?-1*(2*Math.PI-_):2*Math.PI+_),((0,A.default)(Math.atan2(_,D))+360)%360}},9558:(F,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0,f.default=function(w){return/^NNE|NE|NNW|N$/.test(w)?"N":/^ENE|E|ESE|SE$/.test(w)?"E":/^SSE|S|SSW|SW$/.test(w)?"S":/^WSW|W|WNW|NW$/.test(w)?"W":void 0}},3430:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=function S(I){return I&&I.__esModule?I:{default:I}}(v(9068));f.default=function(M,g){var m=arguments.length>2&&void 0!==arguments[2]?arguments[2]:E.default,p=m(M,g),y=Number(g.time)-Number(M.time),_=p/y*1e3;return _}},5026:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0});var E={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(f,"computeDestinationPoint",{enumerable:!0,get:function(){return S.default}}),Object.defineProperty(f,"convertArea",{enumerable:!0,get:function(){return w.default}}),Object.defineProperty(f,"convertDistance",{enumerable:!0,get:function(){return A.default}}),Object.defineProperty(f,"convertSpeed",{enumerable:!0,get:function(){return I.default}}),Object.defineProperty(f,"decimalToSexagesimal",{enumerable:!0,get:function(){return M.default}}),Object.defineProperty(f,"findNearest",{enumerable:!0,get:function(){return g.default}}),Object.defineProperty(f,"getAreaOfPolygon",{enumerable:!0,get:function(){return m.default}}),Object.defineProperty(f,"getBounds",{enumerable:!0,get:function(){return p.default}}),Object.defineProperty(f,"getBoundsOfDistance",{enumerable:!0,get:function(){return y.default}}),Object.defineProperty(f,"getCenter",{enumerable:!0,get:function(){return _.default}}),Object.defineProperty(f,"getCenterOfBounds",{enumerable:!0,get:function(){return D.default}}),Object.defineProperty(f,"getCompassDirection",{enumerable:!0,get:function(){return T.default}}),Object.defineProperty(f,"getCoordinateKey",{enumerable:!0,get:function(){return O.default}}),Object.defineProperty(f,"getCoordinateKeys",{enumerable:!0,get:function(){return j.default}}),Object.defineProperty(f,"getDistance",{enumerable:!0,get:function(){return Y.default}}),Object.defineProperty(f,"getDistanceFromLine",{enumerable:!0,get:function(){return ae.default}}),Object.defineProperty(f,"getGreatCircleBearing",{enumerable:!0,get:function(){return ye.default}}),Object.defineProperty(f,"getLatitude",{enumerable:!0,get:function(){return se.default}}),Object.defineProperty(f,"getLongitude",{enumerable:!0,get:function(){return Re.default}}),Object.defineProperty(f,"getPathLength",{enumerable:!0,get:function(){return Ne.default}}),Object.defineProperty(f,"getPreciseDistance",{enumerable:!0,get:function(){return me.default}}),Object.defineProperty(f,"getRhumbLineBearing",{enumerable:!0,get:function(){return fe.default}}),Object.defineProperty(f,"getRoughCompassDirection",{enumerable:!0,get:function(){return Ie.default}}),Object.defineProperty(f,"getSpeed",{enumerable:!0,get:function(){return Te.default}}),Object.defineProperty(f,"isDecimal",{enumerable:!0,get:function(){return tn.default}}),Object.defineProperty(f,"isPointInLine",{enumerable:!0,get:function(){return Ut.default}}),Object.defineProperty(f,"isPointInPolygon",{enumerable:!0,get:function(){return Wt.default}}),Object.defineProperty(f,"isPointNearLine",{enumerable:!0,get:function(){return Gt.default}}),Object.defineProperty(f,"isPointWithinRadius",{enumerable:!0,get:function(){return vt.default}}),Object.defineProperty(f,"isSexagesimal",{enumerable:!0,get:function(){return yt.default}}),Object.defineProperty(f,"isValidCoordinate",{enumerable:!0,get:function(){return yn.default}}),Object.defineProperty(f,"isValidLatitude",{enumerable:!0,get:function(){return _n.default}}),Object.defineProperty(f,"isValidLongitude",{enumerable:!0,get:function(){return _t.default}}),Object.defineProperty(f,"orderByDistance",{enumerable:!0,get:function(){return bn.default}}),Object.defineProperty(f,"sexagesimalToDecimal",{enumerable:!0,get:function(){return nn.default}}),Object.defineProperty(f,"toDecimal",{enumerable:!0,get:function(){return nt.default}}),Object.defineProperty(f,"toRad",{enumerable:!0,get:function(){return Dn.default}}),Object.defineProperty(f,"toDeg",{enumerable:!0,get:function(){return Kt.default}}),Object.defineProperty(f,"wktToPolygon",{enumerable:!0,get:function(){return In.default}});var S=z(v(7887)),w=z(v(8315)),A=z(v(713)),I=z(v(9173)),M=z(v(4974)),g=z(v(1675)),m=z(v(4434)),p=z(v(5744)),y=z(v(2908)),_=z(v(5582)),D=z(v(6963)),T=z(v(4629)),O=z(v(8839)),j=z(v(804)),Y=z(v(9068)),ae=z(v(1599)),ye=z(v(8172)),se=z(v(6984)),Re=z(v(5010)),Ne=z(v(5482)),me=z(v(6952)),fe=z(v(2571)),Ie=z(v(9558)),Te=z(v(3430)),tn=z(v(2926)),Ut=z(v(9721)),Wt=z(v(2694)),Gt=z(v(9538)),vt=z(v(6958)),yt=z(v(9674)),yn=z(v(9139)),_n=z(v(3861)),_t=z(v(2494)),bn=z(v(8252)),nn=z(v(869)),nt=z(v(1450)),Dn=z(v(9601)),Kt=z(v(8302)),In=z(v(7103)),wn=v(964);function z($){return $&&$.__esModule?$:{default:$}}Object.keys(wn).forEach(function($){"default"===$||"__esModule"===$||Object.prototype.hasOwnProperty.call(E,$)||Object.defineProperty(f,$,{enumerable:!0,get:function(){return wn[$]}})})},2926:(F,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0,f.default=function(w){var A=w.toString().trim();return!isNaN(parseFloat(A))&&parseFloat(A)===Number(A)}},9721:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=function S(I){return I&&I.__esModule?I:{default:I}}(v(9068));f.default=function(M,g,m){return(0,E.default)(g,M)+(0,E.default)(M,m)===(0,E.default)(g,m)}},2694:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=w(v(6984)),S=w(v(5010));function w(M){return M&&M.__esModule?M:{default:M}}f.default=function(g,m){for(var p=!1,y=m.length,_=-1,D=y-1;++_<y;D=_)((0,S.default)(m[_])<=(0,S.default)(g)&&(0,S.default)(g)<(0,S.default)(m[D])||(0,S.default)(m[D])<=(0,S.default)(g)&&(0,S.default)(g)<(0,S.default)(m[_]))&&(0,E.default)(g)<((0,E.default)(m[D])-(0,E.default)(m[_]))*((0,S.default)(g)-(0,S.default)(m[_]))/((0,S.default)(m[D])-(0,S.default)(m[_]))+(0,E.default)(m[_])&&(p=!p);return p}},9538:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=function S(I){return I&&I.__esModule?I:{default:I}}(v(1599));f.default=function(M,g,m,p){return(0,E.default)(M,g,m)<p}},6958:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=function S(I){return I&&I.__esModule?I:{default:I}}(v(9068));f.default=function(M,g,m){return(0,E.default)(M,g)<m}},9674:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=v(964);f.default=function(I){return E.sexagesimalPattern.test(I.toString().trim())}},9139:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=A(v(804)),S=A(v(3861)),w=A(v(2494));function A(g){return g&&g.__esModule?g:{default:g}}f.default=function(m){var p=(0,E.default)(m),y=p.latitude,_=p.longitude;if(Array.isArray(m)&&m.length>=2)return(0,w.default)(m[0])&&(0,S.default)(m[1]);if(void 0===y||void 0===_)return!1;var D=m[_],T=m[y];return!(void 0===T||void 0===D||!1===(0,S.default)(T)||!1===(0,w.default)(D))}},3861:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=I(v(2926)),S=I(v(9674)),w=I(v(869)),A=v(964);function I(m){return m&&m.__esModule?m:{default:m}}f.default=function m(p){return(0,E.default)(p)?!(parseFloat(p)>A.MAXLAT||p<A.MINLAT):!!(0,S.default)(p)&&m((0,w.default)(p))}},2494:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=I(v(2926)),S=I(v(9674)),w=I(v(869)),A=v(964);function I(m){return m&&m.__esModule?m:{default:m}}f.default=function m(p){return(0,E.default)(p)?!(parseFloat(p)>A.MAXLON||p<A.MINLON):!!(0,S.default)(p)&&m((0,w.default)(p))}},8252:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=function S(I){return I&&I.__esModule?I:{default:I}}(v(9068));f.default=function(M,g){var m=arguments.length>2&&void 0!==arguments[2]?arguments[2]:E.default;return m="function"==typeof m?m:E.default,g.slice().sort(function(p,y){return m(M,p)-m(M,y)})}},7148:(F,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0,f.default=function(w){return w>1?1:w<-1?-1:w}},869:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=v(964);f.default=function(I){var M=new RegExp(E.sexagesimalPattern).exec(I.toString().trim());if(null==M)throw new Error("Given value is not in sexagesimal format");var g=Number(M[2])/60||0,m=Number(M[4])/3600||0,p=parseFloat(M[1])+g+m;return["S","W"].includes(M[7])?-p:p}},1450:(F,f,v)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0;var E=M(v(2926)),S=M(v(9674)),w=M(v(869)),A=M(v(9139)),I=M(v(804));function M(D){return D&&D.__esModule?D:{default:D}}function g(D,T){var O=Object.keys(D);if(Object.getOwnPropertySymbols){var j=Object.getOwnPropertySymbols(D);T&&(j=j.filter(function(Y){return Object.getOwnPropertyDescriptor(D,Y).enumerable})),O.push.apply(O,j)}return O}function m(D){for(var T=1;T<arguments.length;T++){var O=null!=arguments[T]?arguments[T]:{};T%2?g(Object(O),!0).forEach(function(j){p(D,j,O[j])}):Object.getOwnPropertyDescriptors?Object.defineProperties(D,Object.getOwnPropertyDescriptors(O)):g(Object(O)).forEach(function(j){Object.defineProperty(D,j,Object.getOwnPropertyDescriptor(O,j))})}return D}function p(D,T,O){return T in D?Object.defineProperty(D,T,{value:O,enumerable:!0,configurable:!0,writable:!0}):D[T]=O,D}f.default=function D(T){if((0,E.default)(T))return Number(T);if((0,S.default)(T))return(0,w.default)(T);if((0,A.default)(T)){var O=(0,I.default)(T);return Array.isArray(T)?T.map(function(j,Y){return[0,1].includes(Y)?D(j):j}):m(m(m({},T),O.latitude&&p({},O.latitude,D(T[O.latitude]))),O.longitude&&p({},O.longitude,D(T[O.longitude])))}return Array.isArray(T)?T.map(function(j){return(0,A.default)(j)?D(j):j}):T}},8302:(F,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0,f.default=function(w){return 180*w/Math.PI}},9601:(F,f)=>{Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0,f.default=function(w){return w*Math.PI/180}},7103:(F,f)=>{function w(m,p){(null==p||p>m.length)&&(p=m.length);for(var y=0,_=new Array(p);y<p;y++)_[y]=m[y];return _}Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0,f.default=function(p){if(!p.startsWith("POLYGON"))throw new Error("Invalid wkt.");return p.slice(p.indexOf("(")+2,p.indexOf(")")).split(", ").map(function(D){var O=function v(m,p){return function I(m){if(Array.isArray(m))return m}(m)||function A(m,p){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(m)){var y=[],_=!0,D=!1,T=void 0;try{for(var j,O=m[Symbol.iterator]();!(_=(j=O.next()).done)&&(y.push(j.value),!p||y.length!==p);_=!0);}catch(Y){D=!0,T=Y}finally{try{!_&&null!=O.return&&O.return()}finally{if(D)throw T}}return y}}(m,p)||function S(m,p){if(m){if("string"==typeof m)return w(m,p);var y=Object.prototype.toString.call(m).slice(8,-1);if("Object"===y&&m.constructor&&(y=m.constructor.name),"Map"===y||"Set"===y)return Array.from(m);if("Arguments"===y||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(y))return w(m,p)}}(m,p)||function E(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(D.split(" "),2),Y=O[1];return{longitude:parseFloat(O[0]),latitude:parseFloat(Y)}})}},9974:(F,f)=>{function v(g,m){return g*g+m*m}function E(g,m){return v(g[0]-m[0],g[1]-m[1])}function S(g,m,p){var y=m[0],_=m[1],D=p[0]-y,T=p[1]-_;if(0!==D||0!==T){var O=((g[0]-y)*D+(g[1]-_)*T)/v(D,T);O>1?(y=p[0],_=p[1]):O>0&&(y+=D*O,_+=T*O)}return v(g[0]-y,g[1]-_)}function A(g,m,p,y,_){for(var T,D=y,O=m+1;O<p;O++){var j=S(g[O],g[m],g[p]);j>D&&(T=O,D=j)}D>y&&(T-m>1&&A(g,m,T,y,_),_.push(g[T]),p-T>1&&A(g,T,p,y,_))}function I(g,m){var p=g.length-1,y=[g[0]];return A(g,0,p,m,y),y.push(g[p]),y}f.__esModule=!0,f.SimplifyAP=function M(g,m,p){if(void 0===m&&(m=1),void 0===p&&(p=!1),g.length<=2)return g;var y=m*m;return g=p?g:function w(g,m){for(var y,p=g[0],_=[p],D=1,T=g.length;D<T;D++)E(y=g[D],p)>m&&(_.push(y),p=y);return p!==y&&_.push(y),_}(g,y),I(g,y)}},44:(F,f,v)=>{var S=v(9974);f.EK=S.SimplifyAP,v(6586),v(5073)},6586:(F,f)=>{function v(g,m){return g*g+m*m}function E(g,m){return v(g.longitude-m.longitude,g.latitude-m.latitude)}function S(g,m,p){var y=m.longitude,_=m.latitude,D=p.longitude-y,T=p.latitude-_;if(0!==D||0!==T){var O=((g.longitude-y)*D+(g.latitude-_)*T)/v(D,T);O>1?(y=p.longitude,_=p.latitude):O>0&&(y+=D*O,_+=T*O)}return v(g.longitude-y,g.latitude-_)}function A(g,m,p,y,_){for(var T,D=y,O=m+1;O<p;O++){var j=S(g[O],g[m],g[p]);j>D&&(T=O,D=j)}D>y&&(T-m>1&&A(g,m,T,y,_),_.push(g[T]),p-T>1&&A(g,T,p,y,_))}function I(g,m){var p=g.length-1,y=[g[0]];return A(g,0,p,m,y),y.push(g[p]),y}f.__esModule=!0,f.SimplifyLL=function M(g,m,p){if(void 0===m&&(m=1),void 0===p&&(p=!1),g.length<=2)return g;var y=m*m;return g=p?g:function w(g,m){for(var y,p=g[0],_=[p],D=1,T=g.length;D<T;D++)E(y=g[D],p)>m&&(_.push(y),p=y);return p!==y&&_.push(y),_}(g,y),I(g,y)}},5073:(F,f)=>{function v(g,m){return g*g+m*m}function E(g,m){return v(g.x-m.x,g.y-m.y)}function S(g,m,p){var y=m.x,_=m.y,D=p.x-y,T=p.y-_;if(0!==D||0!==T){var O=((g.x-y)*D+(g.y-_)*T)/v(D,T);O>1?(y=p.x,_=p.y):O>0&&(y+=D*O,_+=T*O)}return v(g.x-y,g.y-_)}function A(g,m,p,y,_){for(var T,D=y,O=m+1;O<p;O++){var j=S(g[O],g[m],g[p]);j>D&&(T=O,D=j)}D>y&&(T-m>1&&A(g,m,T,y,_),_.push(g[T]),p-T>1&&A(g,T,p,y,_))}function I(g,m){var p=g.length-1,y=[g[0]];return A(g,0,p,m,y),y.push(g[p]),y}f.__esModule=!0,f.Simplify=function M(g,m,p){if(void 0===m&&(m=1),void 0===p&&(p=!1),g.length<=2)return g;var y=m*m;return g=p?g:function w(g,m){for(var y,p=g[0],_=[p],D=1,T=g.length;D<T;D++)E(y=g[D],p)>m&&(_.push(y),p=y);return p!==y&&_.push(y),_}(g,y),I(g,y)}}},_l={};function bo(F){var f=_l[F];if(void 0!==f)return f.exports;var v=_l[F]={exports:{}};return Vh[F](v,v.exports,bo),v.exports}(()=>{function F(t){return"function"==typeof t}let f=!1;const v={Promise:void 0,set useDeprecatedSynchronousErrorHandling(t){if(t){const e=new Error;console.warn("DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n"+e.stack)}else f&&console.log("RxJS: Back to a better error behavior. Thank you. <3");f=t},get useDeprecatedSynchronousErrorHandling(){return f}};function E(t){setTimeout(()=>{throw t},0)}const S={closed:!0,next(t){},error(t){if(v.useDeprecatedSynchronousErrorHandling)throw t;E(t)},complete(){}},w=Array.isArray||(t=>t&&"number"==typeof t.length);function A(t){return null!==t&&"object"==typeof t}const M=(()=>{function t(e){return Error.call(this),this.message=e?`${e.length} errors occurred during unsubscription:\n${e.map((n,r)=>`${r+1}) ${n.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=e,this}return t.prototype=Object.create(Error.prototype),t})();class g{constructor(e){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,e&&(this._ctorUnsubscribe=!0,this._unsubscribe=e)}unsubscribe(){let e;if(this.closed)return;let{_parentOrParents:n,_ctorUnsubscribe:r,_unsubscribe:i,_subscriptions:o}=this;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,n instanceof g)n.remove(this);else if(null!==n)for(let s=0;s<n.length;++s)n[s].remove(this);if(F(i)){r&&(this._unsubscribe=void 0);try{i.call(this)}catch(s){e=s instanceof M?m(s.errors):[s]}}if(w(o)){let s=-1,a=o.length;for(;++s<a;){const l=o[s];if(A(l))try{l.unsubscribe()}catch(u){e=e||[],u instanceof M?e=e.concat(m(u.errors)):e.push(u)}}}if(e)throw new M(e)}add(e){let n=e;if(!e)return g.EMPTY;switch(typeof e){case"function":n=new g(e);case"object":if(n===this||n.closed||"function"!=typeof n.unsubscribe)return n;if(this.closed)return n.unsubscribe(),n;if(!(n instanceof g)){const o=n;n=new g,n._subscriptions=[o]}break;default:throw new Error("unrecognized teardown "+e+" added to Subscription.")}let{_parentOrParents:r}=n;if(null===r)n._parentOrParents=this;else if(r instanceof g){if(r===this)return n;n._parentOrParents=[r,this]}else{if(-1!==r.indexOf(this))return n;r.push(this)}const i=this._subscriptions;return null===i?this._subscriptions=[n]:i.push(n),n}remove(e){const n=this._subscriptions;if(n){const r=n.indexOf(e);-1!==r&&n.splice(r,1)}}}var t;function m(t){return t.reduce((e,n)=>e.concat(n instanceof M?n.errors:n),[])}g.EMPTY=((t=new g).closed=!0,t);const p="function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random();class _ extends g{constructor(e,n,r){switch(super(),this.syncErrorValue=null,this.syncErrorThrown=!1,this.syncErrorThrowable=!1,this.isStopped=!1,arguments.length){case 0:this.destination=S;break;case 1:if(!e){this.destination=S;break}if("object"==typeof e){e instanceof _?(this.syncErrorThrowable=e.syncErrorThrowable,this.destination=e,e.add(this)):(this.syncErrorThrowable=!0,this.destination=new D(this,e));break}default:this.syncErrorThrowable=!0,this.destination=new D(this,e,n,r)}}[p](){return this}static create(e,n,r){const i=new _(e,n,r);return i.syncErrorThrowable=!1,i}next(e){this.isStopped||this._next(e)}error(e){this.isStopped||(this.isStopped=!0,this._error(e))}complete(){this.isStopped||(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe())}_next(e){this.destination.next(e)}_error(e){this.destination.error(e),this.unsubscribe()}_complete(){this.destination.complete(),this.unsubscribe()}_unsubscribeAndRecycle(){const{_parentOrParents:e}=this;return this._parentOrParents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parentOrParents=e,this}}class D extends _{constructor(e,n,r,i){super(),this._parentSubscriber=e;let o,s=this;F(n)?o=n:n&&(o=n.next,r=n.error,i=n.complete,n!==S&&(s=Object.create(n),F(s.unsubscribe)&&this.add(s.unsubscribe.bind(s)),s.unsubscribe=this.unsubscribe.bind(this))),this._context=s,this._next=o,this._error=r,this._complete=i}next(e){if(!this.isStopped&&this._next){const{_parentSubscriber:n}=this;v.useDeprecatedSynchronousErrorHandling&&n.syncErrorThrowable?this.__tryOrSetError(n,this._next,e)&&this.unsubscribe():this.__tryOrUnsub(this._next,e)}}error(e){if(!this.isStopped){const{_parentSubscriber:n}=this,{useDeprecatedSynchronousErrorHandling:r}=v;if(this._error)r&&n.syncErrorThrowable?(this.__tryOrSetError(n,this._error,e),this.unsubscribe()):(this.__tryOrUnsub(this._error,e),this.unsubscribe());else if(n.syncErrorThrowable)r?(n.syncErrorValue=e,n.syncErrorThrown=!0):E(e),this.unsubscribe();else{if(this.unsubscribe(),r)throw e;E(e)}}}complete(){if(!this.isStopped){const{_parentSubscriber:e}=this;if(this._complete){const n=()=>this._complete.call(this._context);v.useDeprecatedSynchronousErrorHandling&&e.syncErrorThrowable?(this.__tryOrSetError(e,n),this.unsubscribe()):(this.__tryOrUnsub(n),this.unsubscribe())}else this.unsubscribe()}}__tryOrUnsub(e,n){try{e.call(this._context,n)}catch(r){if(this.unsubscribe(),v.useDeprecatedSynchronousErrorHandling)throw r;E(r)}}__tryOrSetError(e,n,r){if(!v.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{n.call(this._context,r)}catch(i){return v.useDeprecatedSynchronousErrorHandling?(e.syncErrorValue=i,e.syncErrorThrown=!0,!0):(E(i),!0)}return!1}_unsubscribe(){const{_parentSubscriber:e}=this;this._context=null,this._parentSubscriber=null,e.unsubscribe()}}const j="function"==typeof Symbol&&Symbol.observable||"@@observable";function Y(t){return t}let se=(()=>{class t{constructor(n){this._isScalar=!1,n&&(this._subscribe=n)}lift(n){const r=new t;return r.source=this,r.operator=n,r}subscribe(n,r,i){const{operator:o}=this,s=function O(t,e,n){if(t){if(t instanceof _)return t;if(t[p])return t[p]()}return t||e||n?new _(t,e,n):new _(S)}(n,r,i);if(s.add(o?o.call(s,this.source):this.source||v.useDeprecatedSynchronousErrorHandling&&!s.syncErrorThrowable?this._subscribe(s):this._trySubscribe(s)),v.useDeprecatedSynchronousErrorHandling&&s.syncErrorThrowable&&(s.syncErrorThrowable=!1,s.syncErrorThrown))throw s.syncErrorValue;return s}_trySubscribe(n){try{return this._subscribe(n)}catch(r){v.useDeprecatedSynchronousErrorHandling&&(n.syncErrorThrown=!0,n.syncErrorValue=r),function T(t){for(;t;){const{closed:e,destination:n,isStopped:r}=t;if(e||r)return!1;t=n&&n instanceof _?n:null}return!0}(n)?n.error(r):console.warn(r)}}forEach(n,r){return new(r=Re(r))((i,o)=>{let s;s=this.subscribe(a=>{try{n(a)}catch(l){o(l),s&&s.unsubscribe()}},o,i)})}_subscribe(n){const{source:r}=this;return r&&r.subscribe(n)}[j](){return this}pipe(...n){return 0===n.length?this:function ye(t){return 0===t.length?Y:1===t.length?t[0]:function(n){return t.reduce((r,i)=>i(r),n)}}(n)(this)}toPromise(n){return new(n=Re(n))((r,i)=>{let o;this.subscribe(s=>o=s,s=>i(s),()=>r(o))})}}return t.create=e=>new t(e),t})();function Re(t){if(t||(t=v.Promise||Promise),!t)throw new Error("no Promise impl found");return t}const me=(()=>{function t(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}return t.prototype=Object.create(Error.prototype),t})();class fe extends g{constructor(e,n){super(),this.subject=e,this.subscriber=n,this.closed=!1}unsubscribe(){if(this.closed)return;this.closed=!0;const e=this.subject,n=e.observers;if(this.subject=null,!n||0===n.length||e.isStopped||e.closed)return;const r=n.indexOf(this.subscriber);-1!==r&&n.splice(r,1)}}class Ie extends _{constructor(e){super(e),this.destination=e}}let Te=(()=>{class t extends se{constructor(){super(),this.observers=[],this.closed=!1,this.isStopped=!1,this.hasError=!1,this.thrownError=null}[p](){return new Ie(this)}lift(n){const r=new tn(this,this);return r.operator=n,r}next(n){if(this.closed)throw new me;if(!this.isStopped){const{observers:r}=this,i=r.length,o=r.slice();for(let s=0;s<i;s++)o[s].next(n)}}error(n){if(this.closed)throw new me;this.hasError=!0,this.thrownError=n,this.isStopped=!0;const{observers:r}=this,i=r.length,o=r.slice();for(let s=0;s<i;s++)o[s].error(n);this.observers.length=0}complete(){if(this.closed)throw new me;this.isStopped=!0;const{observers:n}=this,r=n.length,i=n.slice();for(let o=0;o<r;o++)i[o].complete();this.observers.length=0}unsubscribe(){this.isStopped=!0,this.closed=!0,this.observers=null}_trySubscribe(n){if(this.closed)throw new me;return super._trySubscribe(n)}_subscribe(n){if(this.closed)throw new me;return this.hasError?(n.error(this.thrownError),g.EMPTY):this.isStopped?(n.complete(),g.EMPTY):(this.observers.push(n),new fe(this,n))}asObservable(){const n=new se;return n.source=this,n}}return t.create=(e,n)=>new tn(e,n),t})();class tn extends Te{constructor(e,n){super(),this.destination=e,this.source=n}next(e){const{destination:n}=this;n&&n.next&&n.next(e)}error(e){const{destination:n}=this;n&&n.error&&this.destination.error(e)}complete(){const{destination:e}=this;e&&e.complete&&this.destination.complete()}_subscribe(e){const{source:n}=this;return n?this.source.subscribe(e):g.EMPTY}}!function _n(){"function"==typeof Symbol&&Symbol.iterator&&Symbol}();function ke(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}Error;class ho{static updates(){return{context:null,updates:[]}}static subscribe(){return{context:null,subscribe:[]}}static unsubscribe(){return{context:null,unsubscribe:[]}}static request(){return{requestId:crypto.randomUUID()}}}let oM=(()=>{class t{constructor(){this._filter="",this._wsTimeout=2e4,this._token="",this._playbackMode=!1,this.version=1,this.endpoint="",this.selfId="",this._source=null,this._connect=new Te,this.onConnect=this._connect.asObservable(),this._close=new Te,this.onClose=this._close.asObservable(),this._error=new Te,this.onError=this._error.asObservable(),this._message=new Te,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,i){if(!(n=n||this.endpoint))return;let o=-1==n.indexOf("?")?"?":"&";r&&(n+=`${o}subscribe=${r}`),(this._token||i)&&(n+=`${r?"&":"?"}token=${this._token||i}`),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(i){return}this.isHello(r)?(this.selfId=r.self,this._playbackMode=void 0!==r.startTime,this._message.next(r)):this.isResponse(r)?(void 0!==r.login&&void 0!==r.login.token&&(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=ho.request();return void 0===n.login&&this._token&&(r.token=this._token),Object.keys(n).forEach(o=>{r[o]=n[o]}),this.send(r),r.requestId}put(n,r,i){return this.sendRequest({context:"self"==n?"vessels.self":n,put:{path:r,value:i}})}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,i){let o=ho.updates();this._token&&(o.token=this._token),o.context="self"==n?"vessels.self":n,this._token&&(o.token=this._token);let s=[];"string"==typeof r&&s.push({path:r,value:i}),"object"==typeof r&&Array.isArray(r)&&(s=r);let a={timestamp:(new Date).toISOString(),values:s};this._source&&(a.source=this._source),o.updates.push(a),this.send(o)}subscribe(n="*",r="*",i){let o=ho.subscribe();if(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.subscribe=r),"string"==typeof r){let s={};s.path=r,i&&"object"==typeof i&&(i.period&&(s.period=i.period),i.minPeriod&&(s.minPeriod=i.period),i.format&&("delta"==i.format||"full"==i.format)&&(s.format=i.format),i.policy&&("instant"==i.policy||"ideal"==i.policy||"fixed"==i.policy)&&(s.policy=i.policy)),o.subscribe.push(s)}this.send(o)}unsubscribe(n="*",r="*"){let i=ho.unsubscribe();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.unsubscribe=r),"string"==typeof r&&i.unsubscribe.push({path:r}),this.send(i)}raiseAlarm(n="*",r,i){let o;o="string"==typeof r&&-1==r.indexOf("notifications.")?`notifications.${r}`:r,this.put(n,o,i.value)}clearAlarm(n="*",r){let i=-1==r.indexOf("notifications.")?`notifications.${r}`:r;this.put(n,i,null)}isSelf(n){return n.context==this.selfId}isDelta(n){return void 0!==n.context}isHello(n){return void 0!==n.version&&void 0!==n.self}isResponse(n){return void 0!==n.requestId}}return t.\u0275fac=function(n){return new(n||t)},t.\u0275prov=ke({token:t,factory:t.\u0275fac,providedIn:"root"}),t})();class sM{constructor(e,n,r,i){this._method=[],this._message="",this._message=void 0!==e?e:"",this._state=void 0!==n?n:go.alarm,r&&this._method.push(Zr.visual),i&&this._method.push(Zr.sound)}get value(){return{message:this._message,state:this._state,method:this._method}}}var go=(()=>(function(t){t.normal="normal",t.alert="alert",t.warn="warn",t.alarm="alarm",t.emergency="emergency"}(go||(go={})),go))(),Zr=(()=>(function(t){t.visual="visual",t.sound="sound"}(Zr||(Zr={})),Zr))();class aM{constructor(){this.obsList=[],this.stream=new oM,this._connect=new Te,this.onConnect=this._connect.asObservable(),this._close=new Te,this.onClose=this._close.asObservable(),this._error=new Te,this.onError=this._error.asObservable(),this._message=new Te,this.onMessage=this._message.asObservable()}get endpoint(){return this.stream.endpoint}set endpoint(e){this.stream.endpoint=e}get selfId(){return this.stream.selfId}set selfId(e){this.stream.selfId=e}get _source(){return this.stream._source}set _source(e){this.stream._source=e}set source(e){this.stream.source=e}set authToken(e){this.stream.authToken=e}get connectionTimeout(){return this.stream.connectionTimeout}set connectionTimeout(e){this.stream.connectionTimeout=e}get isOpen(){return this.stream.isOpen}get filter(){return this.stream.filter}set filter(e){this.stream.filter=e}get playbackMode(){return this.stream.playbackMode}open(e,n="none",r){this.obsList.push(this.stream.onConnect.subscribe(i=>this._connect.next(i))),this.obsList.push(this.stream.onClose.subscribe(i=>this._close.next(i))),this.obsList.push(this.stream.onError.subscribe(i=>this._error.next(i))),this.obsList.push(this.stream.onMessage.subscribe(i=>this._message.next(i))),this.stream.open(e,n,r)}close(){this.stream.close(),this.obsList.forEach(e=>e.unsubscribe()),this.obsList=[]}sendRequest(e){return this.stream.sendRequest(e)}put(e,n,r){return this.stream.put(e,n,r)}login(e,n){return this.stream.login(e,n)}send(e){this.stream.send(e)}sendUpdate(e="self",n,r){this.stream.sendUpdate(e,n,r)}subscribe(e="*",n="*",r){this.stream.subscribe(e,n,r)}unsubscribe(e="*",n="*"){this.stream.unsubscribe(e,n)}raiseAlarm(e="*",n,r){this.stream.raiseAlarm(e,n,r)}clearAlarm(e="*",n){this.stream.clearAlarm(e,n)}isSelf(e){return this.stream.isSelf(e)}isDelta(e){return this.stream.isDelta(e)}isHello(e){return this.stream.isHello(e)}isResponse(e){return this.stream.isResponse(e)}}class wh{constructor(){this.position=[0,0],this.headingTrue=null,this.headingMagnetic=null,this.cogTrue=null,this.cogMagnetic=null,this.wind={direction:null,mwd:null,twd:null,tws:null,speedTrue:null,sog:null,awa:null,aws:null},this.lastUpdated=new Date,this.orientation=0,this.buddy=!1,this.closestApproach=null,this.mode="day",this.anchor={maxRadius:null,radius:null,position:null},this.resourceUpdates=[],this.autopilot={},this.track=[],this.courseApi={activeRoute:{},nextPoint:{},previousPoint:{}},this.properties={}}}class Mh{constructor(){this.lastUpdated=new Date,this.position=[0,0],this.properties={}}}class Eh extends Mh{constructor(){super(),this.type={id:-1,name:""}}}class lM extends Eh{constructor(){super()}}class uM extends Mh{constructor(){super(),this.orientation=0,this.sog=0,this.track=[]}}class sl{static celciusToKelvin(e=0){return e+273.15}static kelvinToCelcius(e=0){return e-273.15}static kelvinToFarenheit(e=0){return 1.8*e-459.67}static degreesToRadians(e=0){return e*Math.PI/180}static radiansToDegrees(e=0){return 180*e/Math.PI}static angleToDirection(e,n){const r=2*Math.PI;if(n||(n=0),e||(e=0),isNaN(n)||isNaN(e))return null;const i=n+e;return i>r?i-r:i<0?r+i:i}static directionToAngle(e,n){const r=2*Math.PI;if(n||(n=0),e||(e=0),isNaN(n)||isNaN(e))return null;const i=n-e;let o;if(i>0)o=i>Math.PI?r-i:0-i;else if(i<0){const s=Math.abs(i);o=s>Math.PI?s-r:s}else o=i;return o}static knotsToKm(e){return 1.852*e}static nauticalMilesToKm(e){return 1.852*e}static knotsToMSec(e){return.51444325460445*e}static kmToKnots(e){return.539957*e}static kmToNauticalMiles(e){return.539957*e}static kmToMiles(e){return.621371*e}static msecToKnots(e){return 1.94384*e}static msecToKmh(e){return 3.6*e}static msecToMph(e){return 2.23694*e}static nauticalMilesToMiles(e){return 1.15078*e}static milesToKm(e){return 1.60934*e}static milesToNauticalMiles(e){return.868976*e}static rpmToHertz(e){return e/60}}var Yr=bo(5026);class Jr{static destCoordinate(e,n,r){const i=(0,Yr.computeDestinationPoint)(e,r,sl.radiansToDegrees(n));return[i.longitude,i.latitude]}static distanceTo(e,n){return(0,Yr.getDistance)(e,n)}static routeLength(e){return(0,Yr.getPathLength)(e)}static centreOfPolygon(e){const n=(0,Yr.getCenter)(e);return[n.longitude,n.latitude]}static inDLCrossingZone(e,n=170){return Math.abs(e[0])>=n}static inBounds(e,n){return(0,Yr.isPointInPolygon)(e,[[n[0],n[1]],[n[0],n[3]],[n[2],n[3]],[n[2],n[1]],[n[0],n[1]]])}static calcMapifiedExtent(e,n){const i=111111*Math.cos(sl.degreesToRadians(e[1])),o=[0,0,0,0];return o[1]=e[1]+(0-Math.abs(n))/111111,o[3]=e[1]+Math.abs(n)/111111,o[0]=e[0]+(0-Math.abs(n))/i,o[2]=e[0]+Math.abs(n)/i,o}static normaliseCoords(e){if(!Array.isArray(e))return[0,0];if("number"==typeof e[0]){if(e[0]>180)for(;e[0]>180;)e[0]=e[0]-360;else if(e[0]<-180)for(;e[0]<-180;)e[0]=360+e[0];return e}return Array.isArray(e[0])?(e.forEach(n=>this.normaliseCoords(n)),e):void 0}}class cM{constructor(e){this.playback=!1,this.result=null,this.self=null,this.action="notification",this.type=e}}class Ch{constructor(){this.playback=!1,this.result=null,this.self=null,this.action="update"}}class dM extends Ch{constructor(){super(),this.action="trail"}}var fM=bo(44);const pM=["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 X,Ae;const Xr=[];let ll,mo=[],al=!1,vo=!1;const J={signalk:{},aisState:[]};let Ke,xh,Th=[0,0,0,0],Sh=60,ei=0,gn={},mn=500,Ht=!1;const Bt={maxAge:54e4,staleAge:36e4,lastTick:(new Date).valueOf(),maxTrack:20},ti={trailDuration:24,trailResolution:{lastHour:"5s",next23:"10s",beyond24:"1m"}};function Ph(){Ke={updated:{},stale:{},expired:{}}}function yo({action:t,msg:e}){switch(t){case"onConnect":postMessage({action:"open",playback:Ht,result:e.target.readyState});break;case"onClose":console.warn("streamEvent: ",e),Nh(!1);break;case"onError":console.warn("streamEvent: ",e),postMessage({action:"error",playback:Ht,result:"Connection error!"});break;case"onMessage":!function _M(t){Ae.isHello(t)?(postMessage({action:"hello",result:t,self:t.self,playback:Ht}),mn&&kh()):Ae.isDelta(t)?(al=!0,t.updates.forEach(e=>{!e.values||e.values.forEach(n=>{if(xh=e.timestamp,t.context)switch(t.context.split(".")[0]){case"shore":case"atons":null!=J&&J.signalk.atons&&function wM(t,e){let n=!1;if(-1!=t.indexOf("shore.basestations")&&(n=!0),!X.atons.has(t)){const i=new Eh;i.id=t,i.position=null,n&&(i.type.id=-1,i.type.name="Basestation"),X.atons.set(t,i)}const r=X.atons.get(t);""===e.path?(void 0!==e.value.name&&(r.name=e.value.name),void 0!==e.value.mmsi&&(r.mmsi=e.value.mmsi),void 0!==e.value.atonType&&(r.type=e.value.atonType)):"atonType"===e.path?r.type=e.value:"navigation.position"===e.path?(r.position=[e.value.longitude,e.value.latitude],r.positionReceived=!0):r.properties[e.path]=e.value}(t.context,n),_o(t.context,X.atons,null==J?void 0:J.signalk.atons);break;case"sar":null!=J&&J.signalk.sar&&function MM(t,e){if(!X.sar.has(t)){const r=new lM;r.id=t,r.position=null,r.type.id=-1,r.type.name="SaR Beacon",X.sar.set(t,r)}const n=X.sar.get(t);""===e.path?(void 0!==e.value.name&&(n.name=e.value.name),void 0!==e.value.mmsi&&(n.mmsi=e.value.mmsi)):"communication.callsignVhf"===e.path?n.callsign=e.value:"navigation.position"===e.path&&e.value?(n.position=Jr.normaliseCoords([e.value.longitude,e.value.latitude]),n.positionReceived=!0):n.properties[e.path]=e.value}(t.context,n),_o(t.context,X.sar,null==J?void 0:J.signalk.sar);break;case"aircraft":null!=J&&J.signalk.aircraft&&function EM(t,e){if(!X.aircraft.has(t)){const r=new uM;r.id=t,r.position=null,X.aircraft.set(t,r)}const n=X.aircraft.get(t);""===e.path?(void 0!==e.value.name&&(n.name=e.value.name),void 0!==e.value.mmsi&&(n.mmsi=e.value.mmsi)):"communication.callsignVhf"===e.path?n.callsign=e.value:"navigation.position"===e.path&&e.value?(n.position=Jr.normaliseCoords([e.value.longitude,e.value.latitude]),n.positionReceived=!0,ul(n)):"navigation.courseOverGroundTrue"===e.path?n.orientation=e.value:"navigation.speedOverGround"===e.path?n.sog=e.value:n.properties[e.path]=e.value}(t.context,n),_o(t.context,X.aircraft,null==J?void 0:J.signalk.aircraft);break;case"vessels":if(Ae.isSelf(t))jh(X.self,n,!0),function DM(t,e){const n={path:t.path,value:t.value,context:e||null};let r;const i=t.path.split(".");if(("notifications.environment.depth.belowTransducer"===t.path||"notifications.environment.depth.belowSurface"===t.path||"notifications.environment.depth.belowKeel"===t.path)&&(r=i[2]),"notifications.navigation.anchor"===t.path&&(r=i[2]),-1!=["mob","sinking","fire","piracy","flooding","collision","grounding","listing","adrift","abandon"].indexOf(i[i.length-1])&&(r=i[i.length-1]),-1!=t.path.indexOf("notifications.navigation.closestApproach")&&(r=i[2],n.context=i[3]),-1!=t.path.indexOf("notifications.buddy")&&(r=i[1],n.context=i[2]),-1!=t.path.indexOf("notifications.navigation.course.arrivalCircleEntered")&&(r=i[3]),-1!=t.path.indexOf("notifications.navigation.course.perpendicularPassed")&&(r=i[3]),-1!=t.path.indexOf("notifications.environment.weather.warning")&&(r=i[2]),r){const o=new cM(r);o.playback=Ht,o.result=n,postMessage(o)}}(n);else{if(null!=J&&J.signalk.vessels){const r=function bM(t){if(!X.aisTargets.has(t)){const e=new wh;e.position=null,X.aisTargets.set(t,e)}return X.aisTargets.get(t)}(t.context);jh(r,n)}_o(t.context,X.aisTargets,null==J?void 0:J.signalk.vessels,null==J?void 0:J.aisState)}}})}),Rh()):Ae.isResponse(t)&&postMessage({action:"response",result:t})}(e)}}function Ah(t={}){t.interval&&"number"==typeof t.interval&&(mn=t.interval,Lh(),kh(),Sh=1/(mn/1e3)*60),Ht=!!t.playback,t.selections&&(void 0!==t.selections.preferredPaths&&(gn=t.selections.preferredPaths),t.selections.aisMaxAge&&"number"==typeof t.selections.aisMaxAge&&(Bt.maxAge=t.selections.aisMaxAge),t.selections.aisStaleAge&&"number"==typeof t.selections.aisStaleAge&&(Bt.staleAge=t.selections.aisStaleAge),"number"==typeof t.selections.signalk.maxRadius&&(J.signalk=t.selections.signalk),void 0!==t.selections.aisState&&Array.isArray(t.selections.aisState)&&(J.aisState=t.selections.aisState),console.log("Worker: AIS Filter...",J))}function Nh(t=!1){Lh(),Xr.forEach(e=>e.unsubscribe()),Ae&&t&&Ae.close(),Ae=null,postMessage({action:"close",result:t,playback:Ht})}function ni(t){return new Promise((e,n)=>{fetch(`${t}`).then(r=>{r.json().then(i=>e(i)).catch(i=>n(i))}).catch(r=>{n(r)})})}function Oh(){ni(ll+"/tracks"+(J&&J.signalk&&J.signalk.maxRadius?`?radius=${J.signalk.maxRadius}`:"?radius=10000")).then(e=>{vo=!0,Object.entries(e).forEach(n=>{if(X.aisTargets.has(n[0])){const r=X.aisTargets.get(n[0]);r.track=n[1].coordinates,ul(r)}})}).catch(()=>{vo=!1,console.warn("Unable to fetch AIS tracks!")})}function _o(t,e,n=!0,r=[]){if(n){let i=e.get(t);i&&r.includes(null==i?void 0:i.state)&&(console.log(`state match => ${r}, ${t}`),Ke.expired[t]=!0,i=null),i&&J.signalk.maxRadius?i.positionReceived&&Jr.inBounds(i.position,Th)?Ke.updated[t]=!0:(e.delete(t),Ke.expired[t]=!0):Ke.updated[t]=!0}else 0!=e.size&&(e.forEach((i,o)=>{Ke.expired[o]=!0}),e.clear())}function Rh(t=!1){if(!mn||t){const e=new Ch;e.playback=Ht,X.aisStatus.updated=Object.keys(Ke.updated),X.aisStatus.stale=Object.keys(Ke.stale),X.aisStatus.expired=Object.keys(Ke.expired),e.result=X,e.timestamp=Ht?xh:X.self.lastUpdated.toISOString(),postMessage(e),Ph(),X.self.resourceUpdates=[],0==ei&&(function IM(){const t=(new Date).valueOf();X.aisTargets.forEach((e,n)=>{e.lastUpdated.valueOf()<t-Bt.maxAge?(Ke.expired[n]=!0,X.aisTargets.delete(n)):e.lastUpdated.valueOf()<t-Bt.staleAge&&(Ke.stale[n]=!0)}),X.aircraft.forEach((e,n)=>{e.lastUpdated.valueOf()<t-Bt.maxAge?(Ke.expired[n]=!0,X.aircraft.delete(n)):e.lastUpdated.valueOf()<t-Bt.staleAge&&(Ke.stale[n]=!0)}),X.sar.forEach((e,n)=>{e.lastUpdated.valueOf()<t-Bt.maxAge?(Ke.expired[n]=!0,X.sar.delete(n)):e.lastUpdated.valueOf()<t-Bt.staleAge&&(Ke.stale[n]=!0)})}(),X.self.positionReceived&&(null==J?void 0:J.signalk.maxRadius)&&(Th=Jr.calcMapifiedExtent(X.self.position,J.signalk.maxRadius),ei++)),ei=ei>=Sh?0:ei+1}}function kh(){mn&&"number"==typeof mn&&mo.push(setInterval(()=>{al&&(Rh(!0),al=!1)},mn)),mo.push(setInterval(()=>{console.warn("hasTrackPlugin",vo),vo&&Oh()},6e4))}function Lh(){mo.forEach(t=>clearInterval(t)),mo=[]}function jh(t,e,n=!1){if(t.lastUpdated=new Date,n){const r=-1!==e.path.indexOf("course")?e.path.split(".").slice(0,2).join("."):e.path;-1!=pM.indexOf(r)&&(X.paths[r]=null)}if(""===e.path)void 0!==e.value.name&&(t.name=e.value.name),void 0!==e.value.mmsi&&(t.mmsi=e.value.mmsi),void 0!==e.value.buddy&&(t.buddy=e.value.buddy);else if("communication.callsignVhf"===e.path)t.callsign=e.value;else if("navigation.position"===e.path&&e.value){if(void 0===e.value.longitude)return;t.position=Jr.normaliseCoords([e.value.longitude,e.value.latitude]),t.positionReceived=!0,n||ul(t)}else"navigation.state"===e.path?t.state=e.value:"navigation.speedOverGround"===e.path?t.sog=e.value:"navigation.courseOverGroundTrue"===e.path?t.cogTrue=e.value:"navigation.courseOverGroundMagnetic"===e.path?t.cogMagnetic=e.value:"navigation.headingTrue"===e.path?t.headingTrue=e.value:"navigation.headingMagnetic"===e.path?t.headingMagnetic=e.value:"environment.wind.angleApparent"===e.path?t.wind.awa=e.value:"environment.wind.speedApparent"===e.path?t.wind.aws=e.value:"environment.wind.speedTrue"===e.path?t.wind.speedTrue=e.value:"environment.wind.speedOverGround"===e.path?t.wind.sog=e.value:"environment.wind.directionTrue"===e.path?t.wind.twd=e.value:"environment.wind.directionMagnetic"===e.path?t.wind.mwd=e.value:"environment.mode"===e.path?t.mode=e.value:-1!==e.path.indexOf("navigation.course.")?-1!==e.path.indexOf("navigation.course.calcValues")?-1===e.path.indexOf("navigation.course.calcValues.previousPoint")&&(t[`course.${e.path.split(".").slice(-1)[0]}`]=e.value):-1!==e.path.indexOf("navigation.course.activeRoute")?t.courseApi.activeRoute[`${e.path.split(".").slice(-1)[0]}`]=e.value:-1!==e.path.indexOf("navigation.course.nextPoint")?t.courseApi.nextPoint[`${e.path.split(".").slice(-1)[0]}`]=e.value:-1!==e.path.indexOf("navigation.course.previousPoint")&&(t.courseApi.previousPoint[`${e.path.split(".").slice(-1)[0]}`]=e.value):-1!=e.path.indexOf("navigation.closestApproach")?t.closestApproach=e.value:"navigation.anchor.position"===e.path?t.anchor.position=e.value:"navigation.anchor.maxRadius"===e.path?t.anchor.maxRadius=e.value:"navigation.anchor.currentRadius"===e.path?t.anchor.radius=e.value:-1!=e.path.indexOf("resources.")?t.resourceUpdates.push(e):"steering.autopilot.mode"===e.path?t.autopilot.mode=e.value:"steering.autopilot.availableModes"===e.path?t.autopilot.modeList=e.value:"steering.autopilot.enabled"===e.path?t.autopilot.enabled=e.value:t.properties[e.path]=e.value;t.heading=null===t.heading&&null!=t.cog?t.cog:t.heading,void 0!==gn.heading&&e.path===gn.heading&&(t.orientation=e.value),void 0!==gn.tws&&e.path==gn.tws&&(t.wind.tws=e.value),void 0!==gn.twd&&e.path===gn.twd&&(t.wind.direction="environment.wind.angleTrueGround"===e.path||"environment.wind.angleTrueWater"===e.path?sl.angleToDirection(e.value,t.heading):e.value)}function ul(t){if(t.track&&0===t.track.length)t.track.push([t.position]);else{const n=t.track[t.track.length-1][t.track[t.track.length-1].length-1];n[0]!=t.position[0]&&n[1]!=t.position[1]&&t.track[t.track.length-1].push(t.position)}t.track[t.track.length-1]=t.track[t.track.length-1].slice(0-Bt.maxTrack)}addEventListener("message",({data:t})=>{!function gM(t){var e,n,r,i;if(t.cmd)switch(t.cmd){case"open":console.log("Worker control: opening stream..."),Ah(t.options),function vM(t){if(Ae)return;if(!t.url)return void postMessage({action:"error",result:"Valid options not provided!"});const e=t.url.split("/");if(e.pop(),e.push("api"),e[0]="wss:"==e[0]?"https:":"http:",ll=e.join("/"),function hM(){X={self:new wh,aisTargets:new Map,aisStatus:{updated:[],stale:[],expired:[]},paths:{},atons:new Map,aircraft:new Map,sar:new Map},X.self.positionReceived=!1,Ph()}(),Ae=new aM,Xr.push(Ae.onConnect.subscribe(n=>yo({action:"onConnect",msg:n}))),Xr.push(Ae.onClose.subscribe(n=>yo({action:"onClose",msg:n}))),Xr.push(Ae.onError.subscribe(n=>yo({action:"onError",msg:n}))),Xr.push(Ae.onMessage.subscribe(n=>yo({action:"onMessage",msg:n}))),t.playback){const n=t.playbackOptions.startTime?`?startTime=${t.playbackOptions.startTime}`:null;let r=t.playbackOptions.playbackRate?`playbackRate=${t.playbackOptions.playbackRate}`:null;r=r?n?"&"+r:"?"+r:null,Ae.open(`${t.url}${n||""}${r||""}`,t.playbackOptions.subscribe,t.token)}else Ae.open(t.url,t.subscribe,t.token),Oh()}(t.options);break;case"close":console.log("Worker control: closing stream..."),Nh(!0);break;case"subscribe":console.log("Worker control: subscribing to paths..."),Ae.subscribe(t.options.context,t.options.path);break;case"settings":console.log("Worker control: settings..."),Ah(t.options);break;case"alarm":console.log("Worker control: alarm action..."),function yM(t){const e=-1==t.type.indexOf("notifications.")?`notifications.${t.type}`:t.type;t.raise?Ae.raiseAlarm("self",e,new sM(t.message,t.state,!0,!0)):Ae.clearAlarm("self",e)}(t.options);break;case"vessel":if(console.log("Worker control: vessel setting..."),t.options){let o;o="self"===t.options.context?X.self:X.aisTargets.get(t.options.context),o&&t.options.name&&(o.name=t.options.name)}break;case"auth":console.log("Worker control: auth token..."),t.options&&(Ae.authToken=t.options.token);break;case"trail":console.log("Worker control: Fetch vessel trail from server..."),t.options&&(ti.trailDuration=null!==(e=t.options.trailDuration)&&void 0!==e?e:24,t.options.trailResolution&&(ti.trailResolution.lastHour=null!==(n=t.options.trailResolution.lastHour)&&void 0!==n?n:"5s",ti.trailResolution.next23=null!==(r=t.options.trailResolution.next23)&&void 0!==r?r:"1m",ti.trailResolution.beyond24=null!==(i=t.options.trailResolution.beyond24)&&void 0!==i?i:"5m")),function mM(t){console.info("Worker: Fetching vessel trail from server",t);const e=ll+"/self/track?",n=[];t.trailDuration>24&&(n.push(ni(`${e}timespan=${t.trailDuration-24}h&resolution=${t.trailResolution.beyond24}×panOffset=24`)),n.push(ni(`${e}timespan=23h&resolution=${t.trailResolution.next23}×panOffset=1`))),t.trailDuration>1&&t.trailDuration<25&&n.push(ni(`${e}timespan=${t.trailDuration-1}h&resolution=${t.trailResolution.next23}×panOffset=1`)),n.push(ni(`${e}timespan=1h&resolution=${t.trailResolution.lastHour}`));let o=[];const s=new dM;s.playback=Ht,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 h=[];for(d.coordinates.forEach(b=>{h=h.concat(b)}),h=(0,fM.EK)(h,5e-4,true);h.length>60;){const b=h.slice(0,60);o.push(b),h=h.slice(59),h[0]=[h[0][0]+5e-9,h[0][1]+5e-9]}0!==h.length&&o.push(h)}else o=o.concat(d.coordinates);l++}),s.result=o,postMessage(s)}).catch(()=>{s.result=null,postMessage(s)})}(ti)}}(t)})})()})();
|
|
Binary file
|
|
Binary file
|
|
@@ -1647,12 +1647,34 @@
|
|
|
1647
1647
|
|
|
1648
1648
|
<b>COURSE:</b><br />
|
|
1649
1649
|
This section provides settings for course navigation.<br />
|
|
1650
|
+
<img
|
|
1651
|
+
src="./img/settings_course.png"
|
|
1652
|
+
style="height: 150px"
|
|
1653
|
+
alt=""
|
|
1654
|
+
/><br />
|
|
1650
1655
|
|
|
1651
|
-
<b>Auto-advance to nextpoint on arrival</b>: Check
|
|
1652
|
-
|
|
1656
|
+
<b>Auto-advance to nextpoint on arrival</b>: Check this option to
|
|
1657
|
+
automatically advance to the next route point once the target
|
|
1658
|
+
notification has been received.<br />
|
|
1653
1659
|
|
|
1654
|
-
<b>
|
|
1655
|
-
|
|
1660
|
+
<b>Notification type to use</b>: Select the notification from the
|
|
1661
|
+
server to use to trigger the advancement to the next point.<br />
|
|
1662
|
+
Choose either:
|
|
1663
|
+
<li>
|
|
1664
|
+
<b><i>perpendicularPassed</i></b> (advancement occurs immediately
|
|
1665
|
+
notification is received.)
|
|
1666
|
+
</li>
|
|
1667
|
+
<li>
|
|
1668
|
+
<b><i>arrivalCircleEntered</i></b> (advancement occurs once
|
|
1669
|
+
<i>Time to Wait</i> has elapsed after notification has been
|
|
1670
|
+
receieved.)
|
|
1671
|
+
</li>
|
|
1672
|
+
|
|
1673
|
+
<b>Time to Wait</b>: Note: This option is only available when
|
|
1674
|
+
<i>arrivalCircleEntered</i> has been selected as the notification
|
|
1675
|
+
type.<br />
|
|
1676
|
+
Select the period of time to elapse before the destination is set to
|
|
1677
|
+
the next route point.<br />
|
|
1656
1678
|
|
|
1657
1679
|
<hr />
|
|
1658
1680
|
<b>VESSEL:</b><br />
|
|
@@ -1680,18 +1702,24 @@
|
|
|
1680
1702
|
<i>signalk/v1/api/self/track</i>.<br />
|
|
1681
1703
|
</li>
|
|
1682
1704
|
<li>
|
|
1683
|
-
Use the slider to set the length of track to retrieve
|
|
1684
|
-
server in hours. Time is relative to the current
|
|
1705
|
+
Use the slider to set the <b>length</b> of track to retrieve
|
|
1706
|
+
from the server in hours. Time is relative to the current
|
|
1707
|
+
time.<br />
|
|
1685
1708
|
|
|
1686
|
-
|
|
1687
|
-
the following
|
|
1709
|
+
The <b>Resolution</b> settings define the number of track
|
|
1710
|
+
points returned by the server for the following time windows:
|
|
1688
1711
|
<ul>
|
|
1689
|
-
<li>
|
|
1690
|
-
<li>
|
|
1691
|
-
|
|
1692
|
-
</li>
|
|
1693
|
-
<li>time > (now - 1hr) => 5 second intervals.</li>
|
|
1712
|
+
<li>Last hour (default = 5 secs)</li>
|
|
1713
|
+
<li>1 hour -> 24 hours (default = 1 min)</li>
|
|
1714
|
+
<li>> 24 hours (default = 5 min)</li>
|
|
1694
1715
|
</ul>
|
|
1716
|
+
<span style="color: red"
|
|
1717
|
+
><b>Note:</b> Selections will determine the volume of data
|
|
1718
|
+
transferred from the server which may impact performance.
|
|
1719
|
+
</span>
|
|
1720
|
+
Trail data received from the server undergoes temporal
|
|
1721
|
+
simplification to minimise the data used to display the trail
|
|
1722
|
+
whilst maintianing integrity.
|
|
1695
1723
|
</li>
|
|
1696
1724
|
</ul>
|
|
1697
1725
|
</li>
|
|
@@ -1988,8 +2016,11 @@
|
|
|
1988
2016
|
<i>http://server:3000/@signalk/freeboard-sk?movemap=0</i>
|
|
1989
2017
|
</p>
|
|
1990
2018
|
<p>
|
|
1991
|
-
Example: Connect to Signal K server at supplied address and port.
|
|
1992
|
-
<
|
|
2019
|
+
Example: Connect to Signal K server at supplied address and port.
|
|
2020
|
+
<br />
|
|
2021
|
+
<i
|
|
2022
|
+
>http://server:3000/@signalk/freeboard-sk?host=192.168.86.32&port=3100</i
|
|
2023
|
+
>
|
|
1993
2024
|
</p>
|
|
1994
2025
|
</div>
|
|
1995
2026
|
|
|
Binary file
|
package/public/index.html
CHANGED
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
<meta name="msapplication-TileColor" content="#ffffff">
|
|
63
63
|
<meta name="msapplication-TileImage" content="./assets/icons/ms-icon-192x192.png">
|
|
64
64
|
<!-- ******************** /Device Icons ******************** -->
|
|
65
|
-
<style>*{-webkit-tap-highlight-color:transparent}*{tap-highlight-color:transparent}body{background-color:#fff;margin:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}b{font-weight:500}.loading{font-size:12pt;font-family:Arial,Helvetica,sans-serif;position:absolute;top:25%;left:0;right:0;margin-right:auto;color:#000;text-align:center}.loading img{border:5px rgba(200,200,200,0) solid;border-radius:100px;-webkit-animation:colorchange 1s;animation:colorchange 1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}@-webkit-keyframes colorchange{0%{border:3px solid rgba(8,85,178,.1)}25%{border:3px solid #7AB7FF}50%{border:3px solid
|
|
65
|
+
<style>*{-webkit-tap-highlight-color:transparent}*{tap-highlight-color:transparent}body{background-color:#fff;margin:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}b{font-weight:500}.loading{font-size:12pt;font-family:Arial,Helvetica,sans-serif;position:absolute;top:25%;left:0;right:0;margin-right:auto;color:#000;text-align:center}.loading img{border:5px rgba(200,200,200,0) solid;border-radius:100px;-webkit-animation:colorchange 1s;animation:colorchange 1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}@-webkit-keyframes colorchange{0%{border:3px solid rgba(8,85,178,.1)}25%{border:3px solid #7AB7FF}50%{border:3px solid rgb(8,85,178)}75%{border:3px solid #7AB7FF}to{border:3px solid rgba(8,85,178,.1)}}@keyframes colorchange{0%{border:3px solid rgba(8,85,178,.1)}25%{border:3px solid #7AB7FF}50%{border:3px solid rgb(8,85,178)}75%{border:3px solid #7AB7FF}to{border:3px solid rgba(8,85,178,.1)}}</style><link rel="stylesheet" href="styles.a0bf4282aea78b28.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles.a0bf4282aea78b28.css"></noscript></head>
|
|
66
66
|
<body>
|
|
67
67
|
<app-root>
|
|
68
68
|
<div class="loading">
|
|
@@ -72,6 +72,6 @@
|
|
|
72
72
|
</div>
|
|
73
73
|
</div>
|
|
74
74
|
</app-root>
|
|
75
|
-
<script src="runtime.
|
|
75
|
+
<script src="runtime.0360fd4b1168b48a.js" type="module"></script><script src="polyfills.12ddee7e4cb46a02.js" type="module"></script><script src="main.a54a56a8a0f02b2d.js" type="module"></script>
|
|
76
76
|
|
|
77
77
|
</body></html>
|