@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.
Files changed (149) hide show
  1. package/CHANGELOG.md +55 -1
  2. package/package.json +24 -20
  3. package/public/590.4431be8bbcdbb3f8.js +1 -0
  4. package/public/assets/help/img/settings_course.png +0 -0
  5. package/public/assets/help/img/settings_other_vessels.png +0 -0
  6. package/public/assets/help/index.html +46 -15
  7. package/public/assets/img/alarms/weather.png +0 -0
  8. package/public/index.html +2 -2
  9. package/public/main.a54a56a8a0f02b2d.js +1 -0
  10. package/public/polyfills.12ddee7e4cb46a02.js +1 -0
  11. package/public/runtime.0360fd4b1168b48a.js +1 -0
  12. package/public/styles.a0bf4282aea78b28.css +1 -0
  13. package/dist/fb-openlayers/README.md +0 -17
  14. package/dist/fb-openlayers/bundles/fb-openlayers.umd.js +0 -4884
  15. package/dist/fb-openlayers/bundles/fb-openlayers.umd.js.map +0 -1
  16. package/dist/fb-openlayers/esm2015/fb-openlayers.js +0 -5
  17. package/dist/fb-openlayers/esm2015/index.js +0 -92
  18. package/dist/fb-openlayers/esm2015/lib/alarms/layer-anchor-alarm.component.js +0 -136
  19. package/dist/fb-openlayers/esm2015/lib/alarms/layer-cpa-alarm.component.js +0 -135
  20. package/dist/fb-openlayers/esm2015/lib/content.component.js +0 -16
  21. package/dist/fb-openlayers/esm2015/lib/control.component.js +0 -37
  22. package/dist/fb-openlayers/esm2015/lib/controls.directive.js +0 -61
  23. package/dist/fb-openlayers/esm2015/lib/interactions/interaction-draw.component.js +0 -72
  24. package/dist/fb-openlayers/esm2015/lib/interactions/interaction-modify.component.js +0 -72
  25. package/dist/fb-openlayers/esm2015/lib/interactions.directive.js +0 -61
  26. package/dist/fb-openlayers/esm2015/lib/layer.component.js +0 -157
  27. package/dist/fb-openlayers/esm2015/lib/map.component.js +0 -206
  28. package/dist/fb-openlayers/esm2015/lib/map.service.js +0 -70
  29. package/dist/fb-openlayers/esm2015/lib/models.js +0 -37
  30. package/dist/fb-openlayers/esm2015/lib/navigation/layer-arrival-circle.component.js +0 -116
  31. package/dist/fb-openlayers/esm2015/lib/navigation/layer-bearing-line.component.js +0 -229
  32. package/dist/fb-openlayers/esm2015/lib/navigation/layer-xte-path.component.js +0 -120
  33. package/dist/fb-openlayers/esm2015/lib/overlay.component.js +0 -56
  34. package/dist/fb-openlayers/esm2015/lib/resources/layer-charts.component.js +0 -141
  35. package/dist/fb-openlayers/esm2015/lib/resources/layer-notes.component.js +0 -177
  36. package/dist/fb-openlayers/esm2015/lib/resources/layer-regions.component.js +0 -184
  37. package/dist/fb-openlayers/esm2015/lib/resources/layer-resourceset.component.js +0 -226
  38. package/dist/fb-openlayers/esm2015/lib/resources/layer-routes.component.js +0 -188
  39. package/dist/fb-openlayers/esm2015/lib/resources/layer-sktarget-tracks.component.js +0 -213
  40. package/dist/fb-openlayers/esm2015/lib/resources/layer-sktargets.component.js +0 -269
  41. package/dist/fb-openlayers/esm2015/lib/resources/layer-skvessels.component.js +0 -410
  42. package/dist/fb-openlayers/esm2015/lib/resources/layer-tracks.component.js +0 -175
  43. package/dist/fb-openlayers/esm2015/lib/resources/layer-waypoints.component.js +0 -238
  44. package/dist/fb-openlayers/esm2015/lib/util.js +0 -124
  45. package/dist/fb-openlayers/esm2015/lib/vessel/layer-vessel-trail.component.js +0 -178
  46. package/dist/fb-openlayers/esm2015/lib/vessel/layer-vessel.component.js +0 -229
  47. package/dist/fb-openlayers/esm2015/lib/view.directive.js +0 -141
  48. package/dist/fb-openlayers/fb-openlayers.d.ts +0 -5
  49. package/dist/fb-openlayers/fb-openlayers.d.ts.map +0 -1
  50. package/dist/fb-openlayers/fb-openlayers.metadata.json +0 -1
  51. package/dist/fb-openlayers/fesm2015/fb-openlayers.js +0 -4326
  52. package/dist/fb-openlayers/fesm2015/fb-openlayers.js.map +0 -1
  53. package/dist/fb-openlayers/index.d.ts +0 -33
  54. package/dist/fb-openlayers/index.d.ts.map +0 -1
  55. package/dist/fb-openlayers/index.ngfactory.d.ts.map +0 -1
  56. package/dist/fb-openlayers/lib/alarms/layer-anchor-alarm.component.d.ts +0 -44
  57. package/dist/fb-openlayers/lib/alarms/layer-anchor-alarm.component.d.ts.map +0 -1
  58. package/dist/fb-openlayers/lib/alarms/layer-anchor-alarm.component.ngfactory.d.ts.map +0 -1
  59. package/dist/fb-openlayers/lib/alarms/layer-cpa-alarm.component.d.ts +0 -39
  60. package/dist/fb-openlayers/lib/alarms/layer-cpa-alarm.component.d.ts.map +0 -1
  61. package/dist/fb-openlayers/lib/alarms/layer-cpa-alarm.component.ngfactory.d.ts.map +0 -1
  62. package/dist/fb-openlayers/lib/content.component.d.ts +0 -6
  63. package/dist/fb-openlayers/lib/content.component.d.ts.map +0 -1
  64. package/dist/fb-openlayers/lib/content.component.ngfactory.d.ts.map +0 -1
  65. package/dist/fb-openlayers/lib/control.component.d.ts +0 -14
  66. package/dist/fb-openlayers/lib/control.component.d.ts.map +0 -1
  67. package/dist/fb-openlayers/lib/control.component.ngfactory.d.ts.map +0 -1
  68. package/dist/fb-openlayers/lib/controls.directive.d.ts +0 -14
  69. package/dist/fb-openlayers/lib/controls.directive.d.ts.map +0 -1
  70. package/dist/fb-openlayers/lib/controls.directive.ngfactory.d.ts.map +0 -1
  71. package/dist/fb-openlayers/lib/interactions/interaction-draw.component.d.ts +0 -27
  72. package/dist/fb-openlayers/lib/interactions/interaction-draw.component.d.ts.map +0 -1
  73. package/dist/fb-openlayers/lib/interactions/interaction-draw.component.ngfactory.d.ts.map +0 -1
  74. package/dist/fb-openlayers/lib/interactions/interaction-modify.component.d.ts +0 -26
  75. package/dist/fb-openlayers/lib/interactions/interaction-modify.component.d.ts.map +0 -1
  76. package/dist/fb-openlayers/lib/interactions/interaction-modify.component.ngfactory.d.ts.map +0 -1
  77. package/dist/fb-openlayers/lib/interactions.directive.d.ts +0 -14
  78. package/dist/fb-openlayers/lib/interactions.directive.d.ts.map +0 -1
  79. package/dist/fb-openlayers/lib/interactions.directive.ngfactory.d.ts.map +0 -1
  80. package/dist/fb-openlayers/lib/layer.component.d.ts +0 -41
  81. package/dist/fb-openlayers/lib/layer.component.d.ts.map +0 -1
  82. package/dist/fb-openlayers/lib/layer.component.ngfactory.d.ts.map +0 -1
  83. package/dist/fb-openlayers/lib/map.component.d.ts +0 -71
  84. package/dist/fb-openlayers/lib/map.component.d.ts.map +0 -1
  85. package/dist/fb-openlayers/lib/map.component.ngfactory.d.ts.map +0 -1
  86. package/dist/fb-openlayers/lib/map.component.scss.shim.ngstyle.d.ts.map +0 -1
  87. package/dist/fb-openlayers/lib/map.service.d.ts +0 -19
  88. package/dist/fb-openlayers/lib/map.service.d.ts.map +0 -1
  89. package/dist/fb-openlayers/lib/map.service.ngfactory.d.ts.map +0 -1
  90. package/dist/fb-openlayers/lib/models.d.ts +0 -42
  91. package/dist/fb-openlayers/lib/models.d.ts.map +0 -1
  92. package/dist/fb-openlayers/lib/navigation/layer-arrival-circle.component.d.ts +0 -39
  93. package/dist/fb-openlayers/lib/navigation/layer-arrival-circle.component.d.ts.map +0 -1
  94. package/dist/fb-openlayers/lib/navigation/layer-arrival-circle.component.ngfactory.d.ts.map +0 -1
  95. package/dist/fb-openlayers/lib/navigation/layer-bearing-line.component.d.ts +0 -49
  96. package/dist/fb-openlayers/lib/navigation/layer-bearing-line.component.d.ts.map +0 -1
  97. package/dist/fb-openlayers/lib/navigation/layer-bearing-line.component.ngfactory.d.ts.map +0 -1
  98. package/dist/fb-openlayers/lib/navigation/layer-xte-path.component.d.ts +0 -39
  99. package/dist/fb-openlayers/lib/navigation/layer-xte-path.component.d.ts.map +0 -1
  100. package/dist/fb-openlayers/lib/navigation/layer-xte-path.component.ngfactory.d.ts.map +0 -1
  101. package/dist/fb-openlayers/lib/overlay.component.d.ts +0 -25
  102. package/dist/fb-openlayers/lib/overlay.component.d.ts.map +0 -1
  103. package/dist/fb-openlayers/lib/overlay.component.ngfactory.d.ts.map +0 -1
  104. package/dist/fb-openlayers/lib/resources/layer-charts.component.d.ts +0 -20
  105. package/dist/fb-openlayers/lib/resources/layer-charts.component.d.ts.map +0 -1
  106. package/dist/fb-openlayers/lib/resources/layer-charts.component.ngfactory.d.ts.map +0 -1
  107. package/dist/fb-openlayers/lib/resources/layer-notes.component.d.ts +0 -51
  108. package/dist/fb-openlayers/lib/resources/layer-notes.component.d.ts.map +0 -1
  109. package/dist/fb-openlayers/lib/resources/layer-notes.component.ngfactory.d.ts.map +0 -1
  110. package/dist/fb-openlayers/lib/resources/layer-regions.component.d.ts +0 -53
  111. package/dist/fb-openlayers/lib/resources/layer-regions.component.d.ts.map +0 -1
  112. package/dist/fb-openlayers/lib/resources/layer-regions.component.ngfactory.d.ts.map +0 -1
  113. package/dist/fb-openlayers/lib/resources/layer-resourceset.component.d.ts +0 -49
  114. package/dist/fb-openlayers/lib/resources/layer-resourceset.component.d.ts.map +0 -1
  115. package/dist/fb-openlayers/lib/resources/layer-resourceset.component.ngfactory.d.ts.map +0 -1
  116. package/dist/fb-openlayers/lib/resources/layer-routes.component.d.ts +0 -52
  117. package/dist/fb-openlayers/lib/resources/layer-routes.component.d.ts.map +0 -1
  118. package/dist/fb-openlayers/lib/resources/layer-routes.component.ngfactory.d.ts.map +0 -1
  119. package/dist/fb-openlayers/lib/resources/layer-sktarget-tracks.component.d.ts +0 -44
  120. package/dist/fb-openlayers/lib/resources/layer-sktarget-tracks.component.d.ts.map +0 -1
  121. package/dist/fb-openlayers/lib/resources/layer-sktarget-tracks.component.ngfactory.d.ts.map +0 -1
  122. package/dist/fb-openlayers/lib/resources/layer-sktargets.component.d.ts +0 -51
  123. package/dist/fb-openlayers/lib/resources/layer-sktargets.component.d.ts.map +0 -1
  124. package/dist/fb-openlayers/lib/resources/layer-sktargets.component.ngfactory.d.ts.map +0 -1
  125. package/dist/fb-openlayers/lib/resources/layer-skvessels.component.d.ts +0 -60
  126. package/dist/fb-openlayers/lib/resources/layer-skvessels.component.d.ts.map +0 -1
  127. package/dist/fb-openlayers/lib/resources/layer-skvessels.component.ngfactory.d.ts.map +0 -1
  128. package/dist/fb-openlayers/lib/resources/layer-tracks.component.d.ts +0 -50
  129. package/dist/fb-openlayers/lib/resources/layer-tracks.component.d.ts.map +0 -1
  130. package/dist/fb-openlayers/lib/resources/layer-tracks.component.ngfactory.d.ts.map +0 -1
  131. package/dist/fb-openlayers/lib/resources/layer-waypoints.component.d.ts +0 -57
  132. package/dist/fb-openlayers/lib/resources/layer-waypoints.component.d.ts.map +0 -1
  133. package/dist/fb-openlayers/lib/resources/layer-waypoints.component.ngfactory.d.ts.map +0 -1
  134. package/dist/fb-openlayers/lib/util.d.ts +0 -19
  135. package/dist/fb-openlayers/lib/util.d.ts.map +0 -1
  136. package/dist/fb-openlayers/lib/vessel/layer-vessel-trail.component.d.ts +0 -45
  137. package/dist/fb-openlayers/lib/vessel/layer-vessel-trail.component.d.ts.map +0 -1
  138. package/dist/fb-openlayers/lib/vessel/layer-vessel-trail.component.ngfactory.d.ts.map +0 -1
  139. package/dist/fb-openlayers/lib/vessel/layer-vessel.component.d.ts +0 -55
  140. package/dist/fb-openlayers/lib/vessel/layer-vessel.component.d.ts.map +0 -1
  141. package/dist/fb-openlayers/lib/vessel/layer-vessel.component.ngfactory.d.ts.map +0 -1
  142. package/dist/fb-openlayers/lib/view.directive.d.ts +0 -44
  143. package/dist/fb-openlayers/lib/view.directive.d.ts.map +0 -1
  144. package/dist/fb-openlayers/lib/view.directive.ngfactory.d.ts.map +0 -1
  145. package/public/53.4babe18f9baabeea.js +0 -1
  146. package/public/main.a668c86ee67ed842.js +0 -1
  147. package/public/polyfills.1ba4e1a897c69e24.js +0 -1
  148. package/public/runtime.55118010dbcb6e60.js +0 -1
  149. 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 a version of Signal K server that implements the `Resources API` and `Course API`.
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.2",
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": "~13.2.6",
33
- "@angular/animations": "~13.2.6",
34
- "@angular/cdk": "^13.2.6",
35
- "@angular/cli": "~13.2.6",
36
- "@angular/common": "~13.2.6",
37
- "@angular/compiler": "~13.2.6",
38
- "@angular/compiler-cli": "~13.2.6",
39
- "@angular/core": "~13.2.6",
40
- "@angular/forms": "~13.2.6",
41
- "@angular/language-service": "~13.2.6",
42
- "@angular/material": "^13.2.6",
43
- "@angular/platform-browser": "~13.2.6",
44
- "@angular/platform-browser-dynamic": "~13.2.6",
45
- "@kolkov/angular-editor": "^2.0.0",
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": "^13.2.1",
66
+ "ng-packagr": "^14.0.2",
63
67
  "ngeohash": "^0.6.3",
64
- "ol": "6.5.0",
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.rc1",
71
- "signalk-worker-angular": ">=1.1.3 <2.0.0",
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.5.5",
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}&timespanOffset=24`)),n.push(ni(`${e}timespan=23h&resolution=${t.trailResolution.next23}&timespanOffset=1`))),t.trailDuration>1&&t.trailDuration<25&&n.push(ni(`${e}timespan=${t.trailDuration-1}h&resolution=${t.trailResolution.next23}&timespanOffset=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)})})()})();
@@ -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 it option to
1652
- auromatically advance to the next route point.<br />
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>Time to Wait</b>: Select the period of time to elapse before the
1655
- destination is set to the next route point.<br />
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 from the
1684
- server in hours. Time is relative to the current time.<br />
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
- Freeboard will attempt to retrieve track from the server in
1687
- the following way:
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>time < (now - 24hrs) => 5 minute intervals.</li>
1690
- <li>
1691
- (now - 1hr) < time > (now - 24hrs) => 1 minute intervals.
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. <br />
1992
- <i>http://server:3000/@signalk/freeboard-sk?host=192.168.86.32&port=3100</i>
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
 
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 #0855b2}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 #0855b2}75%{border:3px solid #7AB7FF}to{border:3px solid rgba(8,85,178,.1)}}</style><link rel="stylesheet" href="styles.f013b594260c141e.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles.f013b594260c141e.css"></noscript></head>
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.55118010dbcb6e60.js" type="module"></script><script src="polyfills.1ba4e1a897c69e24.js" type="module"></script><script src="main.a668c86ee67ed842.js" type="module"></script>
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>