pacem 0.51.10-erlang → 0.51.10-faraday
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/dist/css/pacem-dark-content.min.css +1 -1
- package/dist/css/pacem-dark-shell.min.css +1 -1
- package/dist/css/pacem-dark.min.css +1 -1
- package/dist/css/pacem-light-content.min.css +1 -1
- package/dist/css/pacem-light-shell.min.css +1 -1
- package/dist/css/pacem-light.min.css +1 -1
- package/dist/css/pacem-phousys-content.min.css +1 -1
- package/dist/css/pacem-phousys-shell.min.css +1 -1
- package/dist/css/pacem-phousys.min.css +1 -1
- package/dist/js/azure-maps.d.ts +1 -1
- package/dist/js/pacem-2d.d.ts +1 -1
- package/dist/js/pacem-2d.js +1 -1
- package/dist/js/pacem-2d.min.js +1 -1
- package/dist/js/pacem-3d.d.ts +1 -1
- package/dist/js/pacem-3d.js +1 -1
- package/dist/js/pacem-3d.min.js +1 -1
- package/dist/js/pacem-charts.d.ts +1 -1
- package/dist/js/pacem-charts.js +1 -1
- package/dist/js/pacem-charts.min.js +1 -1
- package/dist/js/pacem-cms.d.ts +1 -1
- package/dist/js/pacem-cms.js +1 -1
- package/dist/js/pacem-cms.min.js +1 -1
- package/dist/js/pacem-core.d.ts +1 -1
- package/dist/js/pacem-core.js +1 -1
- package/dist/js/pacem-core.min.js +1 -1
- package/dist/js/pacem-foundation.d.ts +1 -1
- package/dist/js/pacem-foundation.js +1 -1
- package/dist/js/pacem-foundation.min.js +1 -1
- package/dist/js/pacem-fx.d.ts +1 -1
- package/dist/js/pacem-fx.js +1 -1
- package/dist/js/pacem-fx.min.js +1 -1
- package/dist/js/pacem-logging.d.ts +1 -1
- package/dist/js/pacem-logging.js +1 -1
- package/dist/js/pacem-logging.min.js +1 -1
- package/dist/js/pacem-maps.d.ts +19 -3
- package/dist/js/pacem-maps.js +87 -6
- package/dist/js/pacem-maps.min.js +2 -2
- package/dist/js/pacem-media.d.ts +1 -1
- package/dist/js/pacem-media.js +1 -1
- package/dist/js/pacem-media.min.js +1 -1
- package/dist/js/pacem-networking.d.ts +1 -1
- package/dist/js/pacem-networking.js +1 -1
- package/dist/js/pacem-networking.min.js +1 -1
- package/dist/js/pacem-numerical.d.ts +1 -1
- package/dist/js/pacem-numerical.js +1 -1
- package/dist/js/pacem-numerical.min.js +1 -1
- package/dist/js/pacem-plus.d.ts +1 -1
- package/dist/js/pacem-plus.js +1 -1
- package/dist/js/pacem-plus.min.js +1 -1
- package/dist/js/pacem-scaffolding.d.ts +1 -1
- package/dist/js/pacem-scaffolding.js +1 -1
- package/dist/js/pacem-scaffolding.min.js +1 -1
- package/dist/js/pacem-ui.d.ts +1 -1
- package/dist/js/pacem-ui.js +1 -1
- package/dist/js/pacem-ui.min.js +1 -1
- package/dist/js/swagger-types.d.ts +1 -1
- package/package.json +1 -1
package/dist/js/azure-maps.d.ts
CHANGED
package/dist/js/pacem-2d.d.ts
CHANGED
package/dist/js/pacem-2d.js
CHANGED
package/dist/js/pacem-2d.min.js
CHANGED
package/dist/js/pacem-3d.d.ts
CHANGED
package/dist/js/pacem-3d.js
CHANGED
package/dist/js/pacem-3d.min.js
CHANGED
package/dist/js/pacem-charts.js
CHANGED
package/dist/js/pacem-cms.d.ts
CHANGED
package/dist/js/pacem-cms.js
CHANGED
package/dist/js/pacem-cms.min.js
CHANGED
package/dist/js/pacem-core.d.ts
CHANGED
package/dist/js/pacem-core.js
CHANGED
package/dist/js/pacem-fx.d.ts
CHANGED
package/dist/js/pacem-fx.js
CHANGED
package/dist/js/pacem-fx.min.js
CHANGED
package/dist/js/pacem-logging.js
CHANGED
package/dist/js/pacem-maps.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pacem v0.51.10-
|
|
2
|
+
* pacem v0.51.10-faraday (https://js.pacem.it)
|
|
3
3
|
* Copyright 2025 Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under Apache-2.0
|
|
5
5
|
*/
|
|
@@ -71,6 +71,18 @@ declare namespace Pacem.Maps {
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
declare namespace Pacem.Components.Maps {
|
|
74
|
+
export enum MapType {
|
|
75
|
+
ROAD = "road",
|
|
76
|
+
SATELLITE = "satellite",
|
|
77
|
+
HYBRID = "hybrid",
|
|
78
|
+
TERRAIN = "terrain",
|
|
79
|
+
HIGH_CONTRAST = "high_contrast"
|
|
80
|
+
}
|
|
81
|
+
export enum MapColorScheme {
|
|
82
|
+
LIGHT = "light",
|
|
83
|
+
DARK = "dark",
|
|
84
|
+
SYSTEM = "system"
|
|
85
|
+
}
|
|
74
86
|
export const MapConsts: {
|
|
75
87
|
DEFAULT_COORDS: {
|
|
76
88
|
lat: number;
|
|
@@ -114,7 +126,8 @@ declare namespace Pacem.Components.Maps {
|
|
|
114
126
|
export type MapViewOptions = {
|
|
115
127
|
zoom: number;
|
|
116
128
|
center: LatLng;
|
|
117
|
-
type: string;
|
|
129
|
+
type: string | MapType;
|
|
130
|
+
theme?: MapColorScheme;
|
|
118
131
|
tilt: number;
|
|
119
132
|
heading: number;
|
|
120
133
|
};
|
|
@@ -414,7 +427,8 @@ declare namespace Pacem.Components.Maps {
|
|
|
414
427
|
center: LatLng;
|
|
415
428
|
updateBounds(bounds: LatLngBounds): void;
|
|
416
429
|
get bounds(): LatLngBounds;
|
|
417
|
-
type: "roadmap" | "satellite" | "hybrid" | "terrain" | string;
|
|
430
|
+
type: "roadmap" | "satellite" | "hybrid" | "terrain" | string | MapType;
|
|
431
|
+
theme: MapColorScheme;
|
|
418
432
|
scale: boolean;
|
|
419
433
|
mousewheel: boolean;
|
|
420
434
|
/**
|
|
@@ -520,9 +534,11 @@ declare namespace Pacem.Components.Maps {
|
|
|
520
534
|
protected setViewNative(ctrl: PacemMapElement, options: Partial<MapViewOptions>): void;
|
|
521
535
|
snapshot(ctrl: PacemMapElement, type?: string, quality?: number): Promise<Blob>;
|
|
522
536
|
subscriptionKey: string;
|
|
537
|
+
language: string;
|
|
523
538
|
protected dispose(ctrl: PacemMapElement): void;
|
|
524
539
|
protected init(container: PacemMapElement): Promise<MapHandle>;
|
|
525
540
|
invalidateSize(ctrl: PacemMapElement): void;
|
|
541
|
+
propertyChangedCallback(name: string, old: any, val: any, first?: boolean): void;
|
|
526
542
|
private _spinMapUpdateHandler;
|
|
527
543
|
private _updateMap;
|
|
528
544
|
private static _getBounds;
|
package/dist/js/pacem-maps.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pacem v0.51.10-
|
|
2
|
+
* pacem v0.51.10-faraday (https://js.pacem.it)
|
|
3
3
|
* Copyright 2025 Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under Apache-2.0
|
|
5
5
|
*/
|
|
@@ -174,6 +174,20 @@ var Pacem;
|
|
|
174
174
|
(function (Components) {
|
|
175
175
|
var Maps;
|
|
176
176
|
(function (Maps) {
|
|
177
|
+
let MapType;
|
|
178
|
+
(function (MapType) {
|
|
179
|
+
MapType["ROAD"] = "road";
|
|
180
|
+
MapType["SATELLITE"] = "satellite";
|
|
181
|
+
MapType["HYBRID"] = "hybrid";
|
|
182
|
+
MapType["TERRAIN"] = "terrain";
|
|
183
|
+
MapType["HIGH_CONTRAST"] = "high_contrast";
|
|
184
|
+
})(MapType = Maps.MapType || (Maps.MapType = {}));
|
|
185
|
+
let MapColorScheme;
|
|
186
|
+
(function (MapColorScheme) {
|
|
187
|
+
MapColorScheme["LIGHT"] = "light";
|
|
188
|
+
MapColorScheme["DARK"] = "dark";
|
|
189
|
+
MapColorScheme["SYSTEM"] = "system";
|
|
190
|
+
})(MapColorScheme = Maps.MapColorScheme || (Maps.MapColorScheme = {}));
|
|
177
191
|
const MapConstsInternal = {
|
|
178
192
|
MAP_SELECTOR: Pacem.P + '-map',
|
|
179
193
|
LINK_SELECTOR: Pacem.P + '-map-link',
|
|
@@ -1319,9 +1333,10 @@ var Pacem;
|
|
|
1319
1333
|
case 'zoom':
|
|
1320
1334
|
case 'center':
|
|
1321
1335
|
case 'type':
|
|
1336
|
+
case 'theme':
|
|
1322
1337
|
case 'tilt':
|
|
1323
1338
|
case 'heading':
|
|
1324
|
-
this.adapter && this.adapter.setView(this, { type: this.type, tilt: this.tilt, heading: this.heading, zoom: this.zoom, center: this.center });
|
|
1339
|
+
this.adapter && this.adapter.setView(this, { type: this.type, tilt: this.tilt, heading: this.heading, zoom: this.zoom, center: this.center, theme: this.theme });
|
|
1325
1340
|
break;
|
|
1326
1341
|
case 'autofit':
|
|
1327
1342
|
if (val) {
|
|
@@ -1409,6 +1424,9 @@ var Pacem;
|
|
|
1409
1424
|
__decorate([
|
|
1410
1425
|
Pacem.Watch({ emit: false, converter: Pacem.PropertyConverters.String })
|
|
1411
1426
|
], PacemMapElement.prototype, "type", void 0);
|
|
1427
|
+
__decorate([
|
|
1428
|
+
Pacem.Watch({ emit: false, converter: Pacem.PropertyConverters.String })
|
|
1429
|
+
], PacemMapElement.prototype, "theme", void 0);
|
|
1412
1430
|
__decorate([
|
|
1413
1431
|
Pacem.Watch({ emit: false, converter: Pacem.PropertyConverters.Boolean })
|
|
1414
1432
|
], PacemMapElement.prototype, "scale", void 0);
|
|
@@ -1774,6 +1792,31 @@ var Pacem;
|
|
|
1774
1792
|
}
|
|
1775
1793
|
//#endregion
|
|
1776
1794
|
const MAP_EVENTS = ['moveend', 'dragend', 'zoomend', 'rotateend'];
|
|
1795
|
+
function getNativeMapStyle(options) {
|
|
1796
|
+
const darkTheme = options.theme == Maps.MapColorScheme.DARK || (options.theme !== Maps.MapColorScheme.LIGHT && window.matchMedia('(prefers-color-scheme: dark)').matches);
|
|
1797
|
+
switch (options.type) {
|
|
1798
|
+
case 'satellite':
|
|
1799
|
+
case 'satellite_road_labels':
|
|
1800
|
+
case 'grayscale_dark':
|
|
1801
|
+
case 'grayscale_light':
|
|
1802
|
+
case 'night':
|
|
1803
|
+
case 'road_shaded_relief':
|
|
1804
|
+
case 'road':
|
|
1805
|
+
case 'high_constrast_dark':
|
|
1806
|
+
case 'high_constrast_light':
|
|
1807
|
+
return options.type;
|
|
1808
|
+
case Maps.MapType.HYBRID:
|
|
1809
|
+
return 'satellite_road_labels';
|
|
1810
|
+
case Maps.MapType.SATELLITE:
|
|
1811
|
+
return 'satellite';
|
|
1812
|
+
case Maps.MapType.TERRAIN:
|
|
1813
|
+
return 'road_shaded_relief';
|
|
1814
|
+
case Maps.MapType.HIGH_CONTRAST:
|
|
1815
|
+
return darkTheme ? 'high_constrast_dark' : 'high_constrast_light';
|
|
1816
|
+
default:
|
|
1817
|
+
return darkTheme ? 'night' : 'road';
|
|
1818
|
+
}
|
|
1819
|
+
}
|
|
1777
1820
|
let PacemAzureMapAdapterElement = PacemAzureMapAdapterElement_1 = class PacemAzureMapAdapterElement extends Maps.PacemMapAdapterElement {
|
|
1778
1821
|
geocode(address, maxResults) {
|
|
1779
1822
|
return new PacemAzureMapGeocoder().geocode(this.subscriptionKey, address, maxResults, Pacem.Utils.lang(this));
|
|
@@ -1803,6 +1846,9 @@ var Pacem;
|
|
|
1803
1846
|
}
|
|
1804
1847
|
setViewNative(ctrl, options) {
|
|
1805
1848
|
const map = this.getMap(ctrl);
|
|
1849
|
+
// style
|
|
1850
|
+
const style = getNativeMapStyle(options);
|
|
1851
|
+
map.setStyle({ style });
|
|
1806
1852
|
const center = options.center && AtlasMapUtils.getPosition(options.center) || map.getCamera().center;
|
|
1807
1853
|
const zoom = options.zoom || map.getCamera().zoom;
|
|
1808
1854
|
map.setCamera({ center, zoom });
|
|
@@ -1859,7 +1905,7 @@ var Pacem;
|
|
|
1859
1905
|
scrollZoomInteraction: ctrl.mousewheel,
|
|
1860
1906
|
dblClickZoomInteraction: !dblClickZoom,
|
|
1861
1907
|
keyboardInteraction: kbShortcuts,
|
|
1862
|
-
language: Pacem.Utils.lang(container),
|
|
1908
|
+
language: this.language || Pacem.Utils.lang(container),
|
|
1863
1909
|
};
|
|
1864
1910
|
const canvas = ctrl.container;
|
|
1865
1911
|
const mapElement = document.createElement('div');
|
|
@@ -1915,6 +1961,15 @@ var Pacem;
|
|
|
1915
1961
|
map.resize();
|
|
1916
1962
|
}
|
|
1917
1963
|
}
|
|
1964
|
+
propertyChangedCallback(name, old, val, first) {
|
|
1965
|
+
super.propertyChangedCallback(name, old, val, first);
|
|
1966
|
+
if (!first && name === 'language') {
|
|
1967
|
+
for (let ctrl of this.enrolledMaps()) {
|
|
1968
|
+
const { map } = this.tryGetMap(ctrl);
|
|
1969
|
+
map.setStyle({ language: val || Pacem.Utils.lang(ctrl) });
|
|
1970
|
+
}
|
|
1971
|
+
}
|
|
1972
|
+
}
|
|
1918
1973
|
//#endregion
|
|
1919
1974
|
_spinMapUpdateHandler(ctrl, map) {
|
|
1920
1975
|
return () => {
|
|
@@ -1950,6 +2005,9 @@ var Pacem;
|
|
|
1950
2005
|
__decorate([
|
|
1951
2006
|
Pacem.Watch({ emit: false, converter: Pacem.PropertyConverters.String })
|
|
1952
2007
|
], PacemAzureMapAdapterElement.prototype, "subscriptionKey", void 0);
|
|
2008
|
+
__decorate([
|
|
2009
|
+
Pacem.Watch({ emit: false, converter: Pacem.PropertyConverters.String })
|
|
2010
|
+
], PacemAzureMapAdapterElement.prototype, "language", void 0);
|
|
1953
2011
|
__decorate([
|
|
1954
2012
|
Pacem.Debounce(500)
|
|
1955
2013
|
], PacemAzureMapAdapterElement.prototype, "_updateMap", null);
|
|
@@ -2626,6 +2684,24 @@ var Pacem;
|
|
|
2626
2684
|
}
|
|
2627
2685
|
class LatLngBounds extends Pacem.Maps.LatLngBounds {
|
|
2628
2686
|
}
|
|
2687
|
+
function getNativeMapStyle(options) {
|
|
2688
|
+
const theme = options.theme == Maps.MapColorScheme.DARK ? google.maps.ColorScheme.DARK : (options.theme != Maps.MapColorScheme.LIGHT ? google.maps.ColorScheme.FOLLOW_SYSTEM : google.maps.ColorScheme.LIGHT);
|
|
2689
|
+
switch (options.type) {
|
|
2690
|
+
case google.maps.MapTypeId.HYBRID:
|
|
2691
|
+
case google.maps.MapTypeId.ROADMAP:
|
|
2692
|
+
case google.maps.MapTypeId.TERRAIN:
|
|
2693
|
+
case google.maps.MapTypeId.SATELLITE:
|
|
2694
|
+
return { type: options.type, theme };
|
|
2695
|
+
case Maps.MapType.HYBRID:
|
|
2696
|
+
return { type: google.maps.MapTypeId.HYBRID, theme };
|
|
2697
|
+
case Maps.MapType.SATELLITE:
|
|
2698
|
+
return { type: google.maps.MapTypeId.SATELLITE, theme };
|
|
2699
|
+
case Maps.MapType.TERRAIN:
|
|
2700
|
+
return { type: google.maps.MapTypeId.TERRAIN, theme };
|
|
2701
|
+
default:
|
|
2702
|
+
return { type: google.maps.MapTypeId.ROADMAP, theme };
|
|
2703
|
+
}
|
|
2704
|
+
}
|
|
2629
2705
|
let PacemGoogleMapAdapterElement = class PacemGoogleMapAdapterElement extends Maps.PacemMapAdapterElement {
|
|
2630
2706
|
geocode(address, maxResults) {
|
|
2631
2707
|
const language = this.language || '', region = this.region || '', version = this.version || 'weekly';
|
|
@@ -2680,9 +2756,12 @@ var Pacem;
|
|
|
2680
2756
|
}
|
|
2681
2757
|
setViewNative(ctrl, options) {
|
|
2682
2758
|
const map = this.getMap(ctrl);
|
|
2683
|
-
|
|
2684
|
-
|
|
2759
|
+
const { type, theme } = getNativeMapStyle(options);
|
|
2760
|
+
if (this.#bootstrapped && theme !== map.get('colorScheme')) {
|
|
2761
|
+
this._bootstrapDebounced();
|
|
2762
|
+
return;
|
|
2685
2763
|
}
|
|
2764
|
+
map.setOptions({ colorScheme: theme, mapTypeId: type });
|
|
2686
2765
|
if (typeof options.tilt === 'number') {
|
|
2687
2766
|
map.setTilt(options.tilt);
|
|
2688
2767
|
}
|
|
@@ -2766,6 +2845,7 @@ var Pacem;
|
|
|
2766
2845
|
const draggable = ctrl.draggable;
|
|
2767
2846
|
const dblClickZoom = ctrl.doubleClickZoom;
|
|
2768
2847
|
const kbShortcuts = ctrl.keyboardShortcuts;
|
|
2848
|
+
const { type: mapTypeId, theme: colorScheme } = getNativeMapStyle({ type: ctrl.type, theme: ctrl.theme });
|
|
2769
2849
|
return Pacem.Utils.extend({}, this.defaultOptions || { streetViewControl: false, zoomControl: false, mapTypeControl: false }, {
|
|
2770
2850
|
zoomControl: scale && !Pacem.Utils.isNullOrEmpty(ctrl.zoomControl),
|
|
2771
2851
|
zoomControlOptions: {
|
|
@@ -2786,7 +2866,8 @@ var Pacem;
|
|
|
2786
2866
|
disableDoubleClickZoom: dblClickZoom,
|
|
2787
2867
|
keyboardShortcuts: kbShortcuts,
|
|
2788
2868
|
draggable: draggable,
|
|
2789
|
-
mapTypeId
|
|
2869
|
+
mapTypeId,
|
|
2870
|
+
colorScheme,
|
|
2790
2871
|
tilt: ctrl.tilt,
|
|
2791
2872
|
heading: ctrl.heading,
|
|
2792
2873
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pacem v0.51.10-
|
|
2
|
+
* pacem v0.51.10-faraday (https://js.pacem.it)
|
|
3
3
|
* Copyright 2025 Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
var Pacem,__decorate=this&&this.__decorate||function(e,t,s,o){var a,r=arguments.length,n=r<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,s):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,s,o);else for(var i=e.length-1;i>=0;i--)(a=e[i])&&(n=(r<3?a(n):r>3?a(t,s,n):a(t,s))||n);return r>3&&n&&Object.defineProperty(t,s,n),n};!function(e){!function(t){const s={lat:Number.NaN,lng:Number.NaN};class LatLng{static get Empty(){return s}static isEmpty(e){return e===s||isNaN(e.lat)&&isNaN(e.lng)}static isLatLng(e){return"lat"in e&&"number"==typeof e.lat&&"lng"in e&&"number"==typeof e.lng}static translate(e,t){return{lat:e.lat+t.lat,lng:e.lng+t.lng}}static equals(e,t){return e===t||e.lat===t.lat&&e.lng===t.lng}}t.LatLng=LatLng;const o={ne:LatLng.Empty,sw:LatLng.Empty};class LatLngBounds{static get Empty(){return o}static isEmpty(e){return e===o||LatLng.isEmpty(e.ne)&&LatLng.isEmpty(e.sw)}static isPoint(e){return!this.isEmpty(e)&&(e.ne===e.sw||e.ne.lat===e.sw.lat&&e.ne.lng===e.sw.lng)}static isLatLngBounds(e){return"ne"in e&&LatLng.isLatLng(e.ne)&&"sw"in e&&LatLng.isLatLng(e.sw)}static union(e,t){if(LatLngBounds.isEmpty(e))return LatLngBounds.isLatLngBounds(t)?t:{ne:t,sw:t};if(LatLngBounds.isLatLngBounds(t)){if(LatLngBounds.isEmpty(t))return e;return{ne:{lat:Math.max(e.ne.lat,t.ne.lat),lng:Math.max(e.ne.lng,t.ne.lng)},sw:{lat:Math.min(e.sw.lat,t.sw.lat),lng:Math.min(e.sw.lng,t.sw.lng)}}}if(LatLng.isLatLng(t)){if(LatLng.isEmpty(t))return e;return{ne:{lat:Math.max(e.ne.lat,t.lat),lng:Math.max(e.ne.lng,t.lng)},sw:{lat:Math.min(e.sw.lat,t.lat),lng:Math.min(e.sw.lng,t.lng)}}}return e}static equals(e,t){return e===t||LatLng.equals(e.ne,t.ne)&&LatLng.equals(e.sw,t.sw)}}t.LatLngBounds=LatLngBounds;const a={SIZE:256,RAD:Math.PI/180,DEG:180/Math.PI,EPSILON:1e-15,SIN_LIMIT:1-1e-15,EARTH_RADIUS:6378137},r="maps";class MapProjection{constructor(e,t,s=a.SIZE){this._pixelSize=e,this._bounds=t,this._normalizedSize=s;const o=s/2;this.#e={x:o,y:o},this.#t=s/360,this.#s=o/Math.PI,this.#o=this._latLngToWorldNormalizedPoint(t.sw),this.#a=this._latLngToWorldNormalizedPoint(t.ne)}#e;#o;#a;#t;#s;_latLngToWorldNormalizedPoint(e){const t=this.#e.x+e.lng*this.#s,s=e.lat*a.RAD,o=a.SIN_LIMIT,r=Math.sin(s).clamp(-o,o);return{x:t,y:this.#e.y+.5*Math.log((1+r)/(1-r))*-this.#t}}_worldNormalizedPointToLatLng(e){return{lat:a.DEG*(2*Math.atan(Math.exp((e.y-this.#e.y)/-this.#t))-Math.PI/2),lng:(e.x-this.#e.x)/this.#s}}_latLngToPoint(e){const t=this.#a,s=this.#o,o=-t.y+s.y,a=t.x-s.x,r=this._latLngToWorldNormalizedPoint(e),{width:n,height:i}=this._pixelSize;return{x:(r.x-s.x)*(n/a),y:(r.y-t.y)*(i/o)}}_pointToLatLng(e){const t=this.#a,s=this.#o,o=-t.y+s.y,a=t.x-s.x,{width:r,height:n}=this._pixelSize,i=e.x/(r/a)+this.#o.x,l=e.y/(n/o)+this.#a.y;return this._worldNormalizedPointToLatLng({x:i,y:l})}static _haversine(e,t){const s=a.RAD,o=e.lng*s,r=t.lng*s,n=e.lat*s,i=t.lat*s;return 2*Math.asin(Math.sqrt(Math.pow(Math.sin((n-i)/2),2)+Math.cos(n)*Math.cos(i)*Math.pow(Math.sin((o-r)/2),2)))}static distanceBetween(e,t,s=a.EARTH_RADIUS){return MapProjection._haversine(e,t)*s}static latLngToPoint(e,t,s){return new MapProjection(s,t)._latLngToPoint(e)}static pointToLatLng(e,t,s){return new MapProjection(t,s)._pointToLatLng(e)}}__decorate([e.Transformer(r+".")],MapProjection,"distanceBetween",null),__decorate([e.Transformer(r+".")],MapProjection,"latLngToPoint",null),__decorate([e.Transformer(r+".")],MapProjection,"pointToLatLng",null),t.MapProjection=MapProjection}(e.Maps||(e.Maps={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(s){const o={MAP_SELECTOR:e.P+"-map",LINK_SELECTOR:e.P+"-map-link",MARKER_SELECTOR:e.P+"-map-marker",POLYLINE_SELECTOR:e.P+"-map-polyline",CIRCLE_SELECTOR:e.P+"-map-circle",POLYGON_SELECTOR:e.P+"-map-polygon",RECTANGLE_SELECTOR:e.P+"-map-rectangle",LAYER_SELECTOR:e.P+"-map-layer",OVERLAY_IMAGE_SELECTOR:e.P+"-map-overlay-image",GEOCODER_SELECTOR:e.P+"-map-geocode",DEFAULT_COORDS:{lat:44.71418802507798,lng:10.296516444873811}};s.MapConsts={DEFAULT_COORDS:o.DEFAULT_COORDS};class LatLng extends e.Maps.LatLng{}class LatLngBounds extends e.Maps.LatLngBounds{}s.isLatLng=function(e){return LatLng.isLatLng(e)},s.isLatLngBounds=function(e){return LatLngBounds.isLatLngBounds(e)};const a="defaultMapTarget";s.LatLngConverter={convert:e=>{const t=/^\s*([+\-\d\.]+)\s*,?\s*([+\-\d\.]+)\s*$/.exec(e);return t&&t.length>2?{lat:parseFloat(t[1]),lng:parseFloat(t[2])}:JSON.parse(e)},convertBack:e=>JSON.stringify(e)},s.LatLngBoundsConverter={convert:e=>{const t=/^\s*([+\-\d\.]+)\s*,?\s*([+\-\d\.]+)\s*,?\s*([+\-\d\.]+)\s*,?\s*([+\-\d\.]+)\s*$/.exec(e);return t&&t.length>4?{sw:{lat:parseFloat(t[3]),lng:parseFloat(t[4])},ne:{lat:parseFloat(t[1]),lng:parseFloat(t[2])}}:JSON.parse(e)},convertBack:e=>JSON.stringify(e)};class MapUtils{static parseCoords(t){if(t&&!isNaN(t.lat)&&!isNaN(t.lng))return[t.lat,t.lng];if(e.Utils.isArray(t)&&t.length>1)return[t[0],t[1]];if(/^\s*(\+|-)?[\d]+(.[\d]+)?\s*,\s*(\+|-)?[\d]+(.[\d]+)?\s*$/.test(t)){var s=t.split(",");return[parseFloat(s[0]),parseFloat(s[1])]}return[o.DEFAULT_COORDS.lat,o.DEFAULT_COORDS.lng]}static expandBounds(e,t){t&&(Array.isArray(t)||(t=[t.lat,t.lng]),e.push(t))}static isContentEmpty(e){return 0==e.children.length}}s.MapUtils=MapUtils;class MapRelevantElement extends t.PacemEventTarget{get map(){return this._map=this._map||e.CustomElementUtils.findAncestorOfType(this,h)}propertyChangedCallback(e,t,s,o){if(super.propertyChangedCallback(e,t,s,o),!o&&"hide"===e){const e=this.map;e?.adapter?.fitBounds(e,!0)}}viewActivatedCallback(){super.viewActivatedCallback(),this.map&&this.map.register(this)}disconnectedCallback(){this.map&&this.map.unregister(this),super.disconnectedCallback()}}__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],MapRelevantElement.prototype,"hide",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],MapRelevantElement.prototype,"inactive",void 0),s.MapRelevantElement=MapRelevantElement;class MapEvent extends e.CustomTypedEvent{constructor(e,t){super(e,t)}}s.MapEvent=MapEvent;let r=class PacemMapGeocodeElement extends t.PacemEventTarget{constructor(){super(...arguments),this.debounce=1e3,this.#r=!1}#r;#n;#i;get fetching(){return this.#r}_guards(){const t=this.results;if(!e.Utils.isNullOrEmpty(t)){const s=t[0];if(!e.Utils.isNull(this.position)&&LatLng.equals(this.position,s.position)&&this.search===s.fullAddress)return Promise.resolve(t)}const s=this.adapter;return e.Utils.isNull(s)||s.disabled||!s.active?Promise.resolve([]):null}propertyChangedCallback(t,s,o,a){switch(super.propertyChangedCallback(t,s,o,a),t){case"search":this.geocode(o);break;case"position":this.reverseGeocode(o);break;case"results":if(e.Utils.isNullOrEmpty(o))this.search="",this.position=null;else{const e=o[0];this.search=e.fullAddress,this.position=e.position}}}_broadcastFetchingUpdate(t){t!==this.#r&&(this.#r=t,this.dispatchEvent(new e.PropertyChangeEvent({propertyName:"fetching",oldValue:!t,currentValue:t})))}_fetch(t){const{promise:s,search:o,position:a,key:r}=t,n=this.#i;!e.Utils.isNull(n)&&LatLng.equals(n.position,a)&&(n.search||"")===(o||"")||(this.#i={key:r,promise:s,position:a,search:o},this._broadcastFetchingUpdate(!0),s.then((e=>{r===this.#i.key&&(this._broadcastFetchingUpdate(!1),this._successCallback(e))}),(e=>this._errorCallback(e))))}_debounce(e,t=this.debounce){this.#n&&clearTimeout(this.#n),this.#n=setTimeout((()=>{e()}),t||0)}reverseGeocode(t=this.position,s=this.maxResults){this.disabled||this._debounce((()=>{const o=this._guards()??this.adapter.reverseGeocode(t,s||1);this._fetch({promise:o,position:t,key:e.Utils.uniqueCode()})}))}geocode(t=this.search,s=this.maxResults){this.disabled||this._debounce((()=>{const o=this._guards()??this.adapter.geocode(t,s||10);this._fetch({promise:o,search:t,position:LatLng.Empty,key:e.Utils.uniqueCode()})}))}_successCallback(t){const s=!e.Utils.isNullOrEmpty(t);!s&&e.Utils.isNullOrEmpty(this.results)||t!==this.results&&(this.results=t,s&&this.dispatchEvent(new CustomEvent("success",{detail:t,bubbles:!1,cancelable:!1})))}_errorCallback(t){e.Utils.isNullOrEmpty(this.results)||(this.results=[]),this.dispatchEvent(new CustomEvent("error",{detail:t,bubbles:!1,cancelable:!1}))}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],r.prototype,"adapter",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],r.prototype,"maxResults",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],r.prototype,"debounce",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],r.prototype,"results",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.String})],r.prototype,"search",void 0),__decorate([e.Watch({emit:!0,converter:s.LatLngConverter})],r.prototype,"position",void 0),r=__decorate([e.CustomElement({tagName:o.GEOCODER_SELECTOR})],r),s.PacemMapGeocodeElement=r;class PacemMapAdapterElement extends t.PacemEventTarget{constructor(){super(...arguments),this.active=!0,this.#l=new Map,this.#p=new WeakMap,this.#d=new WeakMap,this.#c=new WeakMap,this.#h=new WeakMap}propertyChangedCallback(e,t,s,o){super.propertyChangedCallback(e,t,s,o),o||(this.active=!this.disabled&&this.isActive())}#l;#p;#d;#c;#h;get layerAdapters(){return this.#c}get overlayAdapters(){return this.#h}get markerAdapters(){return this.#p}get shapeAdapters(){return this.#d}hasMap(e){return this.#l.has(e)}enrolledMaps(){return this.#l.keys()}tryGetMap(e){const t=this.#l;return t.has(e)?t.get(e):null}getMap(e){const t=this.tryGetMap(e);return t?.map}async initialize(e){const t=this.#l;if(!t.has(e)){const s=await this.init(e);t.set(e,s);const o=this.#c;o.has(e)||o.set(e,this.buildLayerAdapterFor(e));const a=this.#h;a.has(e)||a.set(e,this.buildOverlayAdapterFor(e));const r=this.#p;r.has(e)||r.set(e,this.buildMarkerAdapterFor(e));const n=this.#d;return n.has(e)||n.set(e,this.buildShapeAdapterFor(e)),s.container}return t.get(e).container}destroy(e){const t=this.#c;t.has(e)&&t.delete(e);const s=this.#h;s.has(e)&&s.delete(e);const o=this.#p;o.has(e)&&o.delete(e);const a=this.#d;a.has(e)&&a.delete(e);const r=this.#l;r.has(e)&&(this.dispose(e),r.delete(e))}removeItem(e){const t=e.map;if(e instanceof i){const s=this.layerAdapters;if(s.has(t)){s.get(t).removeLayer(e)}}else if(e instanceof l){const s=this.markerAdapters;if(s.has(t)){s.get(t).removeMarker(e)}}else if(e instanceof PacemMapShapeElement){const s=this.shapeAdapters;if(s.has(t)){s.get(t).removeShape(e)}}else if(e instanceof PacemMapOverlayElement){const s=this.overlayAdapters;if(s.has(t)){s.get(t).removeOverlay(e)}}e.inactive||this.fitBounds(t,!0)}drawItem(e){const t=e.map;if(e instanceof i){const s=this.layerAdapters;if(s.has(t)){s.get(t).drawLayer(e)}}else if(e instanceof l){const s=this.markerAdapters;if(s.has(t)){s.get(t).drawMarker(e)}}else if(e instanceof PacemMapShapeElement){const s=this.shapeAdapters;if(s.has(t)){s.get(t).drawShape(e)}}else if(e instanceof PacemMapOverlayElement){const s=this.overlayAdapters;if(s.has(t)){s.get(t).drawOverlay(e)}}e.inactive||this.fitBounds(t,!0)}popupInfoWindow(e){const t=e.map;if(e instanceof l){const s=this.markerAdapters;s.has(t)&&s.get(t).openInfoWindow(e)}}popoutInfoWindow(e){const t=e.map;if(e instanceof l){const s=this.markerAdapters;s.has(t)&&s.get(t).closeInfoWindow(e)}}setView(t,s,o){if(!this.hasMap(t))return;let a={};a="number"==typeof s?e.Utils.extend({},{zoom:s}):LatLng.isLatLng(s)?e.Utils.extend({},{center:s,zoom:o}):s,this.setViewNative(t,a)}fitBounds(t,s){if(e.Utils.isNull(t))for(let e of this.enrolledMaps()||[])this._fitBounds(e,s);else this._fitBounds(t,s)}_fitBounds(t,s){if(!this.hasMap(t))return;if(!t.autofit&&!0===s)return;const o=this.markerAdapters.get(t)?.getBounds(),a=this.shapeAdapters.get(t)?.getBounds(),r=e.Utils.isNull(o)||LatLngBounds.isEmpty(o),n=e.Utils.isNull(a)||LatLngBounds.isEmpty(a);if(r&&n)return void this.setView(t,{center:t.center,zoom:t.zoom});let i=LatLngBounds.Empty;r||(i=LatLngBounds.union(i,o)),n||(i=LatLngBounds.union(i,a)),LatLngBounds.isPoint(i)?this.setView(t,{zoom:t.zoom,center:i.ne}):this.fitBoundsNative(t,i)}updateMapElement(t,s,o){["type","tilt","heading"].forEach((e=>{e in s&&(t[e]=s[e])}));const a="zoom"in s?s.zoom:o;e.Utils.isNullOrEmpty(a)||a===t.zoom||(t.zoom=a);const r=LatLng.isLatLng(s)?s:s.center;e.Utils.isNullOrEmpty(r)||r.lat==t.center?.lat&&r.lng==t.center?.lng||(t.center=r),t.updateBounds(this.getBounds(t))}}__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Boolean})],PacemMapAdapterElement.prototype,"active",void 0),__decorate([e.Debounce(1e3,((e,t)=>`pacem:debounce:${e}:${t.id}`))],PacemMapAdapterElement.prototype,"_fitBounds",null),s.PacemMapAdapterElement=PacemMapAdapterElement;class MapItemAdapter{constructor(e,t=e.adapter){this._map=e,this._adapter=t}get adapter(){return this._adapter}get map(){return this._map}getMap(e){return this._adapter.getMap(e.map)}}s.MapItemAdapter=MapItemAdapter;s.PacemOverlayAdapter=class PacemOverlayAdapter extends MapItemAdapter{constructor(e,t=e.adapter){super(e,t)}#h=new Map;get layers(){return this.#h}onOverlayLoad(e,t){e.dispatchEvent(new Event("overlayload"))}ensureOverlay(t,s){const o=this.#h;let a;return o.has(t)?a=o.get(t):(a=this.buildOverlay(t,s),e.Utils.isNull(a)||o.set(t,a)),a}removeOverlay(e){const t=this,s=t.getMap(e),o=this.#h;if(o.has(e)){const a=o.get(e);t.deleteOverlay(a,s),o.delete(e)}}drawOverlay(t){const s=this,o=s.getMap(t);if(e.Utils.isNull(o))return;if(e.Utils.isNullOrEmpty(t)||t.hide)return void s.removeOverlay(t);const a=this.ensureOverlay(t,o);this.setBounds(a,o,t.bounds),this.updateOverlay(a,o,t)}};class PacemMapOverlayElement extends MapRelevantElement{}__decorate([e.Watch({emit:!1,converter:s.LatLngBoundsConverter})],PacemMapOverlayElement.prototype,"bounds",void 0),s.PacemMapOverlayElement=PacemMapOverlayElement;let n=class PacemMapOverlayImageElement extends PacemMapOverlayElement{};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],n.prototype,"src",void 0),n=__decorate([e.CustomElement({tagName:o.OVERLAY_IMAGE_SELECTOR})],n),s.PacemMapOverlayImageElement=n;s.PacemLayerAdapter=class PacemLayerAdapter extends MapItemAdapter{constructor(e,t=e.adapter){super(e,t)}#c=new Map;#m=new Map;get layers(){return this.#c}onTileLoad(e,t){e.dispatchEvent(new Event("tileload"))}ensureLayer(e,t){const s=this,o=s.#c;let a;if(o.has(e))a=o.get(e);else if(a=this.buildLayer(e,t),null!=a){const r=t=>{s.onTileLoad(e,t)};this.#m.set(e,r),this.addLoadEventListener(a,t,r),o.set(e,a)}return a}removeLayer(e){const t=this,s=t.getMap(e),o=this.#c;if(o.has(e)){const a=o.get(e),r=this.#m;if(r.has(e)){const t=r.get(e);this.removeLoadEventListener(a,s,t),r.delete(e)}t.deleteLayer(a,s),o.delete(e)}}drawLayer(t){const s=this,o=s.getMap(t);e.Utils.isNull(o)||(e.Utils.isNullOrEmpty(t)||t.hide?s.removeLayer(t):this.ensureLayer(t,o))}};let i=class PacemMapLayerElement extends MapRelevantElement{};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],i.prototype,"url",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],i.prototype,"include",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],i.prototype,"mode",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"minZoom",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"maxZoom",void 0),i=__decorate([e.CustomElement({tagName:o.LAYER_SELECTOR})],i),s.PacemMapLayerElement=i;s.PacemMarkerAdapter=class PacemMarkerAdapter extends MapItemAdapter{constructor(e,t=e.adapter){super(e,t)}get mapAutomaticallyScrollsOnDrag(){return!1}#p=new Map;#u=new Map;getBounds(t=e=>!0){const s=this.markers;let o=LatLngBounds.Empty;for(var a of s.keys()){if(!t(a)||a.inactive)continue;let r=s.get(a);e.Utils.isNull(r)||(o=LatLngBounds.union(o,this.getMarkerPosition(r)))}return o}get markers(){return this.#p}get infoWindows(){return this.#u}onDragEnd(e,t){const s=this.markers.get(e),o=this.getMarkerPosition(s);e.onDragEnd(o)}onClick(e,t){const s=this.markers.get(e),o=this.getMarkerPosition(s);e.onClick(o)}onInfoOpen(e){e.onInfoOpen()}onInfoClose(e){e.onInfoClose()}ensureMarker(e,t){const s=this;let o;return s.markers.has(e)?o=s.markers.get(e):(o=this.buildMarker(e,t),null!=o&&(this.addClickEventListener(o,t,(t=>{s.onClick(e,t),s.openInfoWindow(e,t)})),this.addDragEventListener(o,t,(t=>{this.mapAutomaticallyScrollsOnDrag||s.adapter.fitBounds(e.map,!0)})),this.addDragEndEventListener(o,t,(t=>s.onDragEnd(e,t))),s.markers.set(e,o))),o}removeMarker(e){const t=this,s=t.getMap(e),o=this.#u,a=this.#p;if(o.has(e)&&o.delete(e),a.has(e)){const o=a.get(e);t.deleteMarker(o,s),a.delete(e)}}drawMarker(t){const s=this,o=s.getMap(t);if(e.Utils.isNull(o))return;if(e.Utils.isNullOrEmpty(t&&t.position)||t.hide)return void s.removeMarker(t);const a=this.ensureMarker(t,o);this.setPosition(a,t.position),this.setIcon(a,t.icon),this.setLabel(a,t.caption),this.setDraggable(a,t.draggable)}closeInfoWindow(e,t){const s=this;if(s.infoWindows.has(e)){const t=s.infoWindows.get(e);this.closeInfo(t)}}ensureInfoWindow(e,t){var s=this;let o;return s.infoWindows.has(e)?o=s.infoWindows.get(e):(o=this.buildInfoWindow(e),this.addCloseClickEventListener(o,t,(a=>{s.deleteInfoWindow(o,t),s.onInfoClose(e)})),s.infoWindows.set(e,o)),o}openInfoWindow(t,s){var o=this,a=o.markers.get(t),r=t.caption,n=o.getMap(t);if(MapUtils.isContentEmpty(t)||(r=t.innerHTML),!e.Utils.isNullOrEmpty(r)){const e=this.ensureInfoWindow(t,n);this.setContent(e,r),this.openInfo(e,r,n,a),o.onInfoOpen(t)}}};let l=class PacemMapMarkerElement extends MapRelevantElement{onDragEnd(e){this.position=e,this.dispatchEvent(new MapEvent("dragend",{position:e}))}onClick(e){this.position=e,this.dispatchEvent(new MapEvent("click",{position:e}))}onInfoOpen(){this.dispatchEvent(new MapEvent("openinfo"))}onInfoClose(){this.dispatchEvent(new MapEvent("closeinfo"))}};__decorate([e.Watch({converter:s.LatLngConverter})],l.prototype,"position",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],l.prototype,"icon",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],l.prototype,"caption",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],l.prototype,"draggable",void 0),l=__decorate([e.CustomElement({tagName:o.MARKER_SELECTOR})],l),s.PacemMapMarkerElement=l;s.PacemShapeAdapter=class PacemShapeAdapter extends MapItemAdapter{constructor(e,t=e.adapter){super(e,t)}#d=new Map;get shapes(){return this.#d}getBounds(t=e=>!0){const s=this.shapes;let o=LatLngBounds.Empty;for(var a of s.keys()){if(!t(a)||a.inactive)continue;let r=s.get(a);e.Utils.isNull(r)||(o=LatLngBounds.union(o,this.getShapeBounds(r)))}return o}removeShape(e){const t=this,s=t.getMap(e),o=this.#d;if(o.has(e)){const a=o.get(e);t.deleteShape(a,s),o.delete(e)}}_dispatchEvent(e,t,s){const o=this.shapes.get(e),a=this.getShapePosition(s??o);e.dispatchEvent(new MapEvent(t,{position:a}))}#g=new Map;onDragStart(e,t){const s=this.shapes.get(e),o=this.getShapeBounds(s);this.#g.set(e,o.ne),this._dispatchEvent(e,"dragstart",t)}onDragEnd(e,t){const s=this.shapes.get(e),o=this.getShapeBounds(s),a=this.#g.get(e),r=o.ne,n={lat:r.lat-a.lat,lng:r.lng-a.lng};this._translateShape(e,n),this._dispatchEvent(e,"dragend",t)}_translateShape(e,t){if(e instanceof c)e.center=LatLng.translate(e.center,t);else if(e instanceof p){const s=e.vertices.map((e=>LatLng.translate(e,t)));e.vertices=s}else if(e instanceof d){const s=e.vertices.map((e=>LatLng.translate(e,t)));e.vertices=s}else;}onDrag(e,t){this._dispatchEvent(e,"drag",t)}onClick(e,t){this._dispatchEvent(e,"click",t)}ensureShape(e,t){const s=this;let o;return s.shapes.has(e)?o=s.shapes.get(e):(o=this.buildShape(e,t),null!=o&&(this.addClickEventListener(o,(t=>s.onClick(e,t))),this.addDragEventListener(o,(t=>{s.onDrag(e,t),s.adapter.fitBounds(e.map,!0)})),this.addDragEndEventListener(o,(t=>s.onDragEnd(e,t))),this.addDragStartEventListener(o,(t=>s.onDragStart(e,t))),s.shapes.set(e,o))),o}drawShape(t){const s=this,o=s.getMap(t);if(e.Utils.isNull(o))return;if(e.Utils.isNullOrEmpty(t)||t.hide)return void s.removeShape(t);const a=this.ensureShape(t,o);this.setShape(a,t),this.setEditable(a,t.editable),this.setDraggable(a,t.draggable)}};class PacemMapShapeElement extends MapRelevantElement{}__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Boolean})],PacemMapShapeElement.prototype,"draggable",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Boolean})],PacemMapShapeElement.prototype,"editable",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],PacemMapShapeElement.prototype,"stroke",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],PacemMapShapeElement.prototype,"fill",void 0),s.PacemMapShapeElement=PacemMapShapeElement;let p=class PacemMapPolylineElement extends PacemMapShapeElement{};__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],p.prototype,"vertices",void 0),p=__decorate([e.CustomElement({tagName:o.POLYLINE_SELECTOR})],p),s.PacemMapPolylineElement=p;let d=class PacemMapPolygonElement extends PacemMapShapeElement{};__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],d.prototype,"vertices",void 0),d=__decorate([e.CustomElement({tagName:o.POLYGON_SELECTOR})],d),s.PacemMapPolygonElement=d;let c=class PacemMapCircleElement extends PacemMapShapeElement{};__decorate([e.Watch({emit:!0,converter:s.LatLngConverter})],c.prototype,"center",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],c.prototype,"radius",void 0),c=__decorate([e.CustomElement({tagName:o.CIRCLE_SELECTOR})],c),s.PacemMapCircleElement=c;let h=class PacemMapElement extends t.PacemEventTarget{constructor(){super(...arguments),this.zoom=12,this.center=o.DEFAULT_COORDS,this.#v=LatLngBounds.Empty,this.scale=!0,this.mousewheel=!0,this.draggable=!0,this.doubleClickZoom=!0,this.keyboardShortcuts=!0,this.autofit=!0,this.paddingTop=0,this.paddingLeft=0,this.paddingRight=0,this.paddingBottom=0,this.tilt=0,this.heading=0,this._drawHandler=e=>{this._draw(e.target)},this._listenToActiveAdapter=t=>{const s=t.target;"active"===t.detail.propertyName&&t.detail.currentValue&&(s.removeEventListener(e.PropertyChangeEventName,this._listenToActiveAdapter,!1),this._switchAdapter(s))},this._initialized=!1,this._afterInit=(t,s)=>{for(var o of(this._initialized=!0,e.CustomElementUtils.findDescendants(this,(e=>e instanceof MapRelevantElement))))this._erase(o,s),this._draw(o);s&&s?.destroy(this)},this._resizeHandler=e=>{this.onResize(e)}}updateBounds(t){if(!LatLngBounds.equals(t,this.#v)){const s=this.#v,o=this.#v=t;this.dispatchEvent(new e.PropertyChangeEvent({propertyName:"bounds",oldValue:s,currentValue:o}))}}#v;get bounds(){return this.#v}get container(){return this._container}register(t){t.addEventListener(e.PropertyChangeEventName,this._drawHandler,!1),this._draw(t)}unregister(t){this._erase(t),t.removeEventListener(e.PropertyChangeEventName,this._drawHandler,!1)}_draw(e,t=this.adapter){this._initialized&&t&&t.drawItem(e)}_erase(e,t=this.adapter){this._initialized&&t&&t.removeItem(e)}_switchAdapter(t,s){t.active?t.initialize(this).then((e=>this._afterInit(e,s))):(s&&this._afterInit(null,s),t.addEventListener(e.PropertyChangeEventName,this._listenToActiveAdapter,!1))}viewActivatedCallback(){super.viewActivatedCallback(),this._setupContainer(),this.adapter&&this._switchAdapter(this.adapter)}propertyChangedCallback(t,s,o,a){if(super.propertyChangedCallback(t,s,o,a),"bounds"!==t)if("adapter"===t)e.Utils.isNull(this._container)||(this._initialized=!1,o?this._switchAdapter(o,s):s&&this._afterInit(null,s));else{switch(t){case"zoom":case"center":case"type":case"tilt":case"heading":this.adapter&&this.adapter.setView(this,{type:this.type,tilt:this.tilt,heading:this.heading,zoom:this.zoom,center:this.center});break;case"autofit":o&&this.adapter&&this.adapter.fitBounds(this);break;case"target":s&&this._dismissContainer(s),o?(this._setupContainer(o),this._setupResizer()):this._dismissResizer()}this.adapter&&this.adapter.invalidateSize(this)}}_dismissContainer(t=this._container){"true"===t.dataset[a]?t.remove():e.Utils.removeClass(t,e.PCSS+"-map"),t===this._container&&(this._container=null)}_dismissResizer(){const e=this._resizer;e.removeEventListener("resize",this._resizeHandler,!1),e.remove(),this._resizer=null}_setupContainer(t=this.target){e.Utils.isNull(t)&&((t=document.createElement("div")).dataset[a]="true",this.insertAdjacentElement("afterend",t));const s=this._container=t;return e.Utils.addClass(s,e.PCSS+"-map"),s}_setupResizer(){const t=this._container;if(e.Utils.isNull(t))throw new Error("You must set up the map container before its resizing listener.");if(e.Utils.isNull(this._resizer)){const s=this._resizer=document.createElement(e.P+"-resize");s.addEventListener("resize",this._resizeHandler,!1),t.insertAdjacentElement("afterend",s)}return this._resizer.target=t,this._resizer}_detach(){e.Utils.isNull(this._container)||this._dismissContainer(),e.Utils.isNull(this._resizer)||this._dismissResizer()}disconnectedCallback(){this._detach(),super.disconnectedCallback()}onResize(e){this.adapter&&this.adapter.invalidateSize(this)}};__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Number})],h.prototype,"zoom",void 0),__decorate([e.Watch({emit:!0,converter:s.LatLngConverter})],h.prototype,"center",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],h.prototype,"type",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],h.prototype,"scale",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],h.prototype,"mousewheel",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],h.prototype,"zoomControl",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],h.prototype,"draggable",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],h.prototype,"doubleClickZoom",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],h.prototype,"keyboardShortcuts",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],h.prototype,"autofit",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],h.prototype,"paddingTop",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],h.prototype,"paddingLeft",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],h.prototype,"paddingRight",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],h.prototype,"paddingBottom",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],h.prototype,"adapter",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],h.prototype,"target",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],h.prototype,"tilt",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],h.prototype,"heading",void 0),h=__decorate([e.CustomElement({tagName:o.MAP_SELECTOR})],h),s.PacemMapElement=h}(t.Maps||(t.Maps={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){var s;const o="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.js",a="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.css";function r(e){return{city:e.municipality,state:e.countrySubdivision,province:e.countrySecondarySubdivision,village:e.municipalitySubdivision??e.localName,zipCode:e.postalCode,streetName:e.street??e.streetName,houseNumber:e.buildingNumber??e.streetNumber,countryCode:e.countryCode,country:e.country}}class AtlasMapUtils{static getPosition(e){return Array.isArray(e)&&(e={lat:e[0],lng:e[1]}),atlas.data.Position.fromLatLng(e)}static getBounds(t){if(e.Utils.isArray(t))return atlas.data.BoundingBox.fromPositions(t.map((e=>[e[1],e[0]])));const s=AtlasMapUtils.getPosition(t.ne),o=AtlasMapUtils.getPosition(t.sw);return atlas.data.BoundingBox.fromPositions([s,o])}static getLatLng(e){return{lat:e[1],lng:e[0]}}static getLatLngBounds(e){const t=atlas.data.BoundingBox.getNorthEast(e),s=atlas.data.BoundingBox.getSouthWest(e);return{ne:AtlasMapUtils.getLatLng(t),sw:AtlasMapUtils.getLatLng(s)}}static parseGeocoding(t){return e.Utils.isNullOrEmpty(t.results)?[]:t.results.map((e=>({fullAddress:e.address.freeformAddress,address:r(e.address),position:{lat:e.position.lat,lng:e.position.lon,altitude:null}})))}static parseReverseGeocoding(e,t){if(e.summary.numResults<1)return{fullAddress:"",address:{},position:null};const s=e.addresses[0],o=(t??s.position).split(",").map((e=>parseFloat(e))),a=s.address;return{fullAddress:a.freeformAddress,address:r(a),position:{lat:o[0],lng:o[1],altitude:o.length>2?o[2]:null}}}}class PacemAzureOverlayAdapter extends t.PacemOverlayAdapter{deleteOverlay(e,t){throw new Error("Method not implemented.")}buildOverlay(e,t){throw new Error("Method not implemented.")}setBounds(e,t,s){throw new Error("Method not implemented.")}updateOverlay(e,t,s){throw new Error("Method not implemented.")}}class PacemAzureLayerAdapter extends t.PacemLayerAdapter{addLoadEventListener(e,t,s){throw new Error("Method not implemented.")}removeLoadEventListener(e,t,s){throw new Error("Method not implemented.")}deleteLayer(e,t){throw new Error("Method not implemented.")}buildLayer(e,t){throw new Error("Method not implemented.")}}class PacemAzureMarkerAdapter extends t.PacemMarkerAdapter{getMarkerPosition(e){const t=e.getOptions().position;return AtlasMapUtils.getLatLng(t)}buildMarker(e,t){const s=new atlas.HtmlMarker;return t.markers.add(s),s.setOptions({popup:new atlas.Popup}),s}addClickEventListener(e,t,s){t.events.add("click",e,s)}addDragEventListener(e,t,s){t.events.add("drag",e,s)}addDragEndEventListener(e,t,s){t.events.add("dragend",e,s)}_setPopupPosition(t,s){const o=this._getPopup(t);e.Utils.isNull(o)||o.setOptions({position:s})}setPosition(e,t){const s=AtlasMapUtils.getPosition(t);e.setOptions({position:s}),this._setPopupPosition(e,s)}setIcon(t,s){let o={pixelOffset:[0,-36]},a={popup:new atlas.Popup},r=(e,t,s)=>`<img width="${t||"auto"}" height="${s||"auto"}" style="pointer-events: none" src="${e}" />`;if("string"==typeof s)a.htmlContent=r(s);else if(!e.Utils.isNull(s)){const e=s.size,t=s.anchor;a.htmlContent=r(s.url,e&&e.width,e&&e.height),t?(a.anchor="top-left",a.pixelOffset=[-t.x,-t.y],o.pixelOffset=[0,-t.y]):e&&e.height&&(o.pixelOffset=[0,-e.height/2])}a.popup.setOptions(o),t.setOptions(a)}setLabel(e,t){let s={text:t};e.setOptions(s)}setDraggable(e,t){let s={draggable:t};e.setOptions(s)}deleteMarker(e,t){t.markers.remove(e)}deleteInfoWindow(e,t){this._getPopup(e).remove()}closeInfo(e){const t=this._getPopup(e);!0===t?.isOpen()&&t.close()}openInfo(e,t,s,o){const{popup:a,position:r}=e.getOptions();this._setContent(a,t,r),o.togglePopup(),s.events.addOnce("close",a,(e=>{a.setOptions({content:""})}))}buildInfoWindow(e){return this.markers.get(e)}addCloseClickEventListener(e,t,s){const o=this._getPopup(e);t.events.add("close",o,s)}setContent(e,t){const{popup:s,position:o}=e.getOptions();this._setContent(s,t,o)}_getPopup(e){return e.getOptions().popup}_setContent(e,t,s){e.setOptions({content:`<div style="padding: 8px 24px 8px 8px;">${t}</div>`,position:s})}}class PacemAzureShapeAdapter extends t.PacemShapeAdapter{addDragStartEventListener(e,t){throw new Error("Method not implemented.")}deleteShape(e,t){throw new Error("Method not implemented.")}getShapeBounds(e){throw new Error("Method not implemented.")}getShapePosition(e){throw new Error("Method not implemented.")}buildShape(e,t){throw new Error("Method not implemented.")}addClickEventListener(e,t){throw new Error("Method not implemented.")}addDragEventListener(e,t){throw new Error("Method not implemented.")}addDragEndEventListener(e,t){throw new Error("Method not implemented.")}setShape(e,t){throw new Error("Method not implemented.")}setEditable(e,t){throw new Error("Method not implemented.")}setDraggable(e,t){throw new Error("Method not implemented.")}}class PacemAzureMapGeocoder{_buildGeocodeRequest(t,s,o=10,a=""){const r={"subscription-key":t,query:s,limit:""+o,language:a};return{uri:e.Utils.URIs.appendQuery("https://atlas.microsoft.com/search/address/json?api-version=1.0",r),options:{mode:"cors"}}}parseGeocodeResponse(e){return new Promise(((t,s)=>{e.json().then((e=>{const s=AtlasMapUtils.parseGeocoding(e);t(s)}),(e=>s(e)))}))}geocode(e,t,s=10,o=""){return new Promise(((a,r)=>{const n=this._buildGeocodeRequest(e,t,s,o);return fetch(n.uri,n.options).then((e=>{e.ok?this.parseGeocodeResponse(e).then(a,r):r(e)}),(e=>r(e)))}))}reverseGeocode(e,t,s=""){return new Promise(((o,a)=>{const r=this._buildReverseRequest(e,t,s);return fetch(r.uri,r.options).then((e=>{e.ok?this._parseReverseResponse(e).then(o,a):a(e)}),(e=>a(e)))}))}_buildReverseRequest(s,o,a=""){const r=t.MapUtils.parseCoords(o),n={"subscription-key":s,query:r[0]+","+r[1],language:a};return{uri:e.Utils.URIs.appendQuery("https://atlas.microsoft.com/search/address/reverse/json?api-version=1.0",n),options:{mode:"cors"}}}_parseReverseResponse(e){return new Promise(((t,s)=>{e.json().then((e=>{const s=AtlasMapUtils.parseReverseGeocoding(e);t([s])}),(e=>s(e)))}))}}const n=["moveend","dragend","zoomend","rotateend"];let i=s=class PacemAzureMapAdapterElement extends t.PacemMapAdapterElement{geocode(t,s){return(new PacemAzureMapGeocoder).geocode(this.subscriptionKey,t,s,e.Utils.lang(this))}reverseGeocode(t,s){return(new PacemAzureMapGeocoder).reverseGeocode(this.subscriptionKey,t,e.Utils.lang(this))}getBounds(e){const t=this.getMap(e),{bounds:s}=t.getCamera();return AtlasMapUtils.getLatLngBounds(s)}isActive(){return!e.Utils.isNullOrEmpty(this.subscriptionKey)}buildOverlayAdapterFor(e){return new PacemAzureOverlayAdapter(e,this)}buildMarkerAdapterFor(e){return new PacemAzureMarkerAdapter(e,this)}buildShapeAdapterFor(e){return new PacemAzureShapeAdapter(e,this)}buildLayerAdapterFor(e){return new PacemAzureLayerAdapter(e,this)}setViewNative(e,t){const s=this.getMap(e),o=t.center&&AtlasMapUtils.getPosition(t.center)||s.getCamera().center,a=t.zoom||s.getCamera().zoom;s.setCamera({center:o,zoom:a})}#y=new WeakMap;snapshot(t,s="image/png",o){if(!this.hasMap(t))return Promise.reject();const{map:a}=this.tryGetMap(t);return new Promise(((r,n)=>{e.Utils.blobToDataURL(this.#f.get(t)).then((t=>{const n=a.getCanvasContainer();n.style.backgroundImage=`url(${t})`,n.style.backgroundSize="contain",e.Utils.snapshotElement(n,null,s,o).then(r)}))}))}#f=new WeakMap;dispose(e){if(!this.hasMap(e))return;const{map:t}=this.tryGetMap(e);this.#y.get(e).forEach((e=>{t.events.remove(e.eventName,e.handler)})),this.#y.delete(e),t.dispose()}async init(s){await Promise.all([e.CustomElementUtils.importjs(o),e.CustomElementUtils.importcss(a,void 0,!0)]);const r=s,i=r.scale,l=r.draggable,p=r.doubleClickZoom,d=r.keyboardShortcuts,c={center:AtlasMapUtils.getPosition(r.center),zoom:r.zoom,subscriptionKey:this.subscriptionKey,dragPanInteraction:l,scrollZoomInteraction:r.mousewheel,dblClickZoomInteraction:!p,keyboardInteraction:d,language:e.Utils.lang(s)},h=r.container,m=document.createElement("div");m.id=`azure-maps-${e.Utils.uniqueCode()}`,m.style.width="100%",m.style.height="100%",h.innerHTML="",h.appendChild(m);const u=new atlas.Map(m.id,c),g=[];return this.#y.set(r,g),n.forEach((e=>{const t=this._spinMapUpdateHandler(r,u);u.events.add(e,t),g.push({eventName:e,handler:t})})),i&&r.zoomControl&&u.events.addOnce("ready",(e=>{let t=atlas.ControlPosition.NonFixed;switch(r.zoomControl){case"topleft":t=atlas.ControlPosition.TopLeft;break;case"topright":t=atlas.ControlPosition.TopRight;break;case"bottomright":t=atlas.ControlPosition.BottomRight;break;case"bottomleft":t=atlas.ControlPosition.BottomLeft}u.controls.add(new atlas.control.ZoomControl,{position:t})})),u.events.add("idle",(e=>{u.getCanvas().toBlob((e=>{this.#f.set(s,e)}))})),u.events.addOnce("ready",(()=>{s.dispatchEvent(new t.MapEvent("maploaded"))})),{map:u,container:m}}invalidateSize(e){if(!this.hasMap(e))return;const{map:t}=this.tryGetMap(e);t&&t.resize()}_spinMapUpdateHandler(e,t){return()=>{this._updateMap(e,t)}}_updateMap(t,s){if(!e.Utils.isNull(s)&&!e.Utils.isNull(t)){const e=s.getCamera(),o=e.center,a=e.zoom;1===e.zoom?console.warn("Azure Maps control lacks in reflecting the actual map zoom onto the camera property. Cannot reflect info back to PacemMapElement."):this.updateMapElement(t,AtlasMapUtils.getLatLng(o),a)}}static _getBounds(e){const t=e.paddingTop||0,s=e.paddingLeft||0,o=e.paddingRight||0;return{top:t,bottom:e.paddingBottom||0,left:s,right:o}}fitBoundsNative(e,t,o=s._getBounds(e)){this.getMap(e).setCamera({bounds:AtlasMapUtils.getBounds(t),padding:o})}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],i.prototype,"subscriptionKey",void 0),__decorate([e.Debounce(500)],i.prototype,"_updateMap",null),i=s=__decorate([e.CustomElement({tagName:e.P+"-map-adapter-azure"})],i),t.PacemAzureMapAdapterElement=i}(t.Maps||(t.Maps={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(s){const o="geolocation_unavailable",a="position_unavailable",r="permission_denied",n="timeout",i="unknown_error";let l=class PacemMapGeolocateElement extends t.PacemEventTarget{constructor(){super(...arguments),this.permission="prompt",this.maximumAge=15e3,this.timeout=3e4,this.#r=!1,this._successCallback=e=>{this.permission="granted",this._setFetching(!1);const t={lat:e.coords.latitude,lng:e.coords.longitude,timestamp:e.timestamp,altitude:e.coords.altitude,heading:e.coords.heading,speed:e.coords.speed};this.position=t,this.dispatchEvent(new CustomEvent("success",{detail:t}))},this._errorCallback=e=>{this._setFetching(!1);const t="string"==typeof e?e:this._errToString(e);this.dispatchEvent(new CustomEvent("error",{detail:t}))}}_checkPermission(){return new Promise((t=>{const s=navigator.permissions;e.Utils.isNull(s)?t("prompt"):s.query({name:"geolocation"}).then((e=>{t(this.permission=e.state)}))}))}#r;get fetching(){return this.#r}_setFetching(t){t!==this.fetching&&(this.#r=t,this.dispatchEvent(new e.PropertyChangeEvent({propertyName:"fetching",currentValue:t,oldValue:!t})))}fetch(){this.disabled||(navigator.geolocation?this._checkPermission().then((e=>{this._setFetching(!0),navigator.geolocation.getCurrentPosition(this._successCallback,this._errorCallback,{enableHighAccuracy:!0,maximumAge:this.maximumAge})})):this._errorCallback(o))}viewActivatedCallback(){super.viewActivatedCallback(),this._checkPermission()}_errToString(e){switch(e.code){case GeolocationPositionError.PERMISSION_DENIED:return r;case GeolocationPositionError.POSITION_UNAVAILABLE:return a;case GeolocationPositionError.TIMEOUT:return n;default:return i}}};__decorate([e.Watch({emit:!0,converter:s.LatLngConverter})],l.prototype,"position",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.String})],l.prototype,"permission",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],l.prototype,"maximumAge",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],l.prototype,"timeout",void 0),l=__decorate([e.CustomElement({tagName:e.P+"-map-geolocate"})],l),s.PacemMapGeolocateElement=l}(t.Maps||(t.Maps={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){const s={DETACH_TIMEOUT:200,API_URI:"https://maps.googleapis.com/maps/api/js",MAX_ROADMAP_ZOOM:22,BOOTSTRAP_SNIPPET:(e,t,s,o)=>`(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=\`https://maps.\${c}apis.com/maps/api/js?\`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({\n key: "${e}", v: "${o}", language: "${t}", region: "${s}",\n // Add other bootstrap parameters as needed, using camel case.\n });`,MAPS_NOT_FOUND:"google.maps not found.",GEOCODER_UNAVAILABLE:"google.maps geocoder unavailable.",INVALID_KEY:"invalid google.maps api key.",TILE_EXTENT:[6378137*-Math.PI,6378137*Math.PI]};class Bootstrapper{#i;#L;_equivalent(t,s,o,a){const r=this.#L;return!e.Utils.isNull(r)&&r.key===t&&r.language===(s||r.language)&&r.region===(o||r.region)&&r.version===(a||r.version)}_spinFuture(e,t,s,o){return new Promise(((a,r)=>{this._equivalent(e,t,s,o)||Bootstrapper._ensureBootstrapScript(e,t,s,o),this.#L={language:t,region:s,version:o,key:e},google.maps.importLibrary("maps").then((e=>{a(),this.#i=null}),(e=>{r(e),this.#i=null}))}))}boostrap(t,o,a,r="weekly"){return e.Utils.isNullOrEmpty(t)?Promise.reject(s.INVALID_KEY):(!e.Utils.isNull(this.#i)&&this._equivalent(t,o,a,r)||(this.#i=this._spinFuture(t,o,a,r)),this.#i)}static _ensureBootstrapScript(t,o,a,r){const n="pacem-googlemaps",i=`v=${r},l=${o},r=${a}`;let l=document.querySelector(`script[${n}]`);if(!e.Utils.isNull(l)){if(l.getAttribute(n)===i)return;l.remove(),document.querySelectorAll("script[src^='https://maps.googleapis.com/maps']").forEach((e=>e.remove())),delete window.google}e.Utils.isNullOrEmpty(t)||(l=document.createElement("script"),l.setAttribute(n,i),l.textContent=s.BOOTSTRAP_SNIPPET(t,o,a,r),document.head.appendChild(l))}}const o=new Bootstrapper;class GMapsUtils{static getPosition(e){return Array.isArray(e)&&(e={lat:e[0],lng:e[1]}),e}static getBounds(t){return e.Utils.isNullOrEmpty(t)?null:{north:t.ne.lat,east:t.ne.lng,south:t.sw.lat,west:t.sw.lng}}static mapGeocodeResults(e,t=[]){const s=[];e??=[];for(let o=0;o<e.length;o++){const a=t.length>o?t[o]:null,r=GMapsUtils.mapGeocodeResult(e[o],a);s.push(r)}return s}static mapGeocodeResult(e,t){const s=e?.address_components||[],o=s.find((e=>e.types.indexOf("street_number")>=0))?.long_name,a=s.find((e=>e.types.indexOf("route")>=0))?.long_name,r=s.find((e=>e.types.indexOf("locality")>=0))?.long_name,n=s.find((e=>e.types.indexOf("administrative_area_level_3")>=0))?.long_name,i=s.find((e=>e.types.indexOf("administrative_area_level_2")>=0)),l=s.find((e=>e.types.indexOf("administrative_area_level_1")>=0))?.short_name,p=s.find((e=>e.types.indexOf("country")>=0)),d=s.find((e=>e.types.indexOf("postal_code")>=0))?.short_name,c={houseNumber:o,city:n||r,provinceCode:i?.short_name,province:i?.long_name,countryCode:p?.short_name,country:p?.long_name,zipCode:d,streetName:a,state:l,village:r,type:e.geometry.location_type};return{fullAddress:e.formatted_address,position:GMapsUtils.toLiteral(e.geometry.location,t?.elevation),address:c}}static toLiteral(t,s){if(e.Utils.isNull(t))return null;if("lat"in t&&"function"==typeof t.lat&&"lng"in t&&"function"==typeof t.lng)return{lat:t.lat(),lng:t.lng(),altitude:s};if("getNorthEast"in t&&"function"==typeof t.getNorthEast&&"getSouthWest"in t&&"function"==typeof t.getSouthWest){const e=t.getNorthEast(),s=t.getSouthWest();return{ne:GMapsUtils.toLiteral(e),sw:GMapsUtils.toLiteral(s)}}return"north"in t&&"number"==typeof t.north&&"south"in t&&"number"==typeof t.south&&"west"in t&&"number"==typeof t.west&&"east"in t&&"number"==typeof t.east?{ne:{lat:t.north,lng:t.east},sw:{lat:t.south,lng:t.west}}:e.Utils.extend({altitude:s},t)}static areEqual(t,s){if(e.Utils.isNull(t)||e.Utils.isNull(s))return!1;const o=GMapsUtils.toLiteral(t),a=GMapsUtils.toLiteral(s);return o.lat===a.lat&&o.lng===a.lng}static fitBounds(e,t,s){e?.fitBounds(t,s)}static setCenter(t,s){e.Utils.isNull(t)||GMapsUtils.areEqual(t.getCenter(),s)||t.panTo(s)}}class PacemGoogleShapeAdapter extends t.PacemShapeAdapter{getShapeBounds(e){const t=new google.maps.LatLngBounds;if(e instanceof google.maps.Circle){const s=e.getBounds();s&&(t.extend(s.getNorthEast()),t.extend(s.getSouthWest()))}else(e instanceof google.maps.Polygon||e instanceof google.maps.Polyline)&&e.getPath().forEach((e=>t.extend(e)));return!1!==t.isEmpty()?LatLngBounds.Empty:GMapsUtils.toLiteral(t)}deleteShape(e,t){e.setMap(null)}getShapePosition(e){return"latLng"in e?e.latLng:null}buildShape(e,s){const o=!0;return e instanceof t.PacemMapPolylineElement?new google.maps.Polyline({path:e.vertices,clickable:o,map:s}):e instanceof t.PacemMapPolygonElement?new google.maps.Polygon({paths:[e.vertices],clickable:o,map:s}):e instanceof t.PacemMapCircleElement?new google.maps.Circle({center:e.center,radius:e.radius,clickable:o,map:s}):null}addClickEventListener(e,t){e.addListener("click",t)}addDragEventListener(e,t){e.addListener("drag",t)}addDragStartEventListener(e,t){e.addListener("dragstart",t)}addDragEndEventListener(e,t){e.addListener("dragend",t)}setShape(e,s){if(s instanceof t.PacemMapPolylineElement){e.setOptions({strokeColor:s.stroke?.color,strokeOpacity:s.stroke?.alpha??1,strokeWeight:s.stroke?.thickness,path:s.vertices})}if(s instanceof t.PacemMapPolygonElement){e.setOptions({strokeColor:s.stroke?.color,strokeOpacity:s.stroke?.alpha??1,strokeWeight:s.stroke?.thickness,strokePosition:google.maps.StrokePosition.CENTER,fillColor:s.fill?.color,fillOpacity:s.fill?.alpha,paths:[s.vertices]})}if(s instanceof t.PacemMapCircleElement){e.setOptions({strokeColor:s.stroke?.color,strokeOpacity:s.stroke?.alpha??1,strokeWeight:s.stroke?.thickness,strokePosition:google.maps.StrokePosition.CENTER,fillColor:s.fill?.color,fillOpacity:s.fill?.alpha,center:s.center,radius:s.radius})}}setEditable(e,t){e.setOptions({editable:t})}setDraggable(e,t){e.setOptions({draggable:t})}}class PacemGoogleMarkerAdapter extends t.PacemMarkerAdapter{deleteInfoWindow(e,t){e.unbindAll()}deleteMarker(e,t){e.setMap(null)}get mapAutomaticallyScrollsOnDrag(){return!0}getMarkerPosition(e){const t=e.getPosition();return{lat:t.lat(),lng:t.lng()}}buildMarker(e,t){return new google.maps.Marker({position:e.position,map:t})}addClickEventListener(e,t,s){e.addListener("click",s)}addDragEventListener(e,t,s){e.addListener("drag",s)}addDragEndEventListener(e,t,s){e.addListener("dragend",s)}setPosition(e,t){e.setPosition(t)}setIcon(t,s){if("string"==typeof s)t.setIcon(s);else if(!e.Utils.isNull(s)){let o={url:s.url};e.Utils.isNullOrEmpty(s.size)||(o.size=new google.maps.Size(s.size.width,s.size.height),o.anchor=new google.maps.Point(s.size.width/2,s.size.height)),e.Utils.isNullOrEmpty(s.anchor)||(o.anchor=new google.maps.Point(s.anchor.x,s.anchor.y)),t.setIcon(o)}}setLabel(e,t){e.setLabel(t)}setDraggable(e,t){e.setDraggable(t)}closeInfo(e){e.close()}openInfo(e,t,s,o){e.open(s,o)}buildInfoWindow(t){let s=0;return"string"==typeof t.icon||e.Utils.isNull(t.icon)||(s=(t.icon.size?.width??0)/2-(t.icon.anchor?.x??0)),new google.maps.InfoWindow({pixelOffset:new google.maps.Size(-s,0)})}addCloseClickEventListener(e,t,s){e.addListener("closeclick",s)}setContent(e,t){e.setContent(t)}}class PacemGoogleLayerAdapter extends t.PacemLayerAdapter{addLoadEventListener(e,t,s){e.addListener("tilesloaded",s)}removeLoadEventListener(e,t,s){}deleteLayer(e,t){const s=t.overlayMapTypes.getArray().findIndex((t=>t===e));s>=0&&t.overlayMapTypes.removeAt(s)}_getBounds(e,t,o){const a=s.TILE_EXTENT;var r=2*a[1]/Math.pow(2,o),n=a[0]+e*r,i=a[0]+(e+1)*r;return[n,a[1]-(t+1)*r,i,a[1]-t*r]}_getWmsTileUrl(t,s){return(o,a)=>e.Utils.URIs.appendQuery(t,{service:"WMS",styles:"",transparent:"true",request:"GetMap",srs:"EPSG:3857",format:"image/png",version:"1.1.1",layers:s?.join(",")||"",width:"256",height:"256",bbox:this._getBounds(o.x,o.y,a).join(",")})}_getWmsLayer(e,t){const s=new google.maps.ImageMapType({getTileUrl:this._getWmsTileUrl(e.url,e.include),minZoom:e.minZoom,maxZoom:e.maxZoom,opacity:1});return t.overlayMapTypes.push(s),s}_getTmsTileUrl(e){return(t,s)=>{const o={r:"",s:(a=t,"abc"[Math.abs(a.x+a.y)%3]),x:""+t.x,y:""+t.y,z:""+s};var a;let r=e;for(let e in o)r=r.replaceAll("{"+e+"}",o[e]);return r}}_getTmsLayer(e,t){const s=new google.maps.ImageMapType({getTileUrl:this._getTmsTileUrl(e.url),minZoom:e.minZoom,maxZoom:e.maxZoom,opacity:1});return t.overlayMapTypes.push(s),s}buildLayer(e,t){switch((e.mode||"").toLowerCase()){case"wms":return this._getWmsLayer(e,t);case"tms":return this._getTmsLayer(e,t);default:throw new Error(`"${e.mode}" overlays not supported for the Google Maps integration.`)}}}class PacemGoogleOverlayAdapter extends t.PacemOverlayAdapter{updateOverlay(e,t,s){e.set,e.draw()}deleteOverlay(e,t){e.setMap(null)}buildOverlay(s,o){let a=function(s){class PacemGoogleOverlay extends google.maps.OverlayView{constructor(e){super(),this._item=e}get element(){return this._item}get bounds(){const t=this._item.bounds;return e.Utils.isNull(t)?null:GMapsUtils.getBounds(t)}getBoundingBox(){const t=this.getProjection(),s=this.bounds;if(e.Utils.isNullOrEmpty(s))return null;const o=t.fromLatLngToDivPixel({lat:s.south,lng:s.west}),a=t.fromLatLngToDivPixel({lat:s.north,lng:s.east});return{x:o.x,y:a.y,width:a.x-o.x,height:o.y-a.y}}}class PacemGoogleImageOverlay extends PacemGoogleOverlay{get src(){return this.element.src}#_;onAdd(){const e=this.#_=this.#_||document.createElement("div");e.style.position="absolute",this.getPanes().overlayLayer.appendChild(e)}onRemove(){const t=this.#_;e.Utils.isNull(t)||(t.remove(),this.#_=null)}draw(){const t=this.#_;if(e.Utils.isNull(t))return;const s=this.getBoundingBox();e.Utils.isNull(s)||(t.style.top=s.y+"px",t.style.left=s.x+"px",t.style.width=s.width+"px",t.style.height=s.height+"px",t.style.backgroundSize=`${s.width}px ${s.height}px`,t.style.backgroundImage=`url(${this.src})`)}}return s instanceof t.PacemMapOverlayImageElement?new PacemGoogleImageOverlay(s):null}(s);return a.setMap(o),a}setBounds(e,t,s){e.draw()}}const a=["dragend","zoom_changed","center_changed","maptypeid_changed","tilt_changed","heading_changed","bounds_changed"];e.Maps.LatLng;class LatLngBounds extends e.Maps.LatLngBounds{}let r=class PacemGoogleMapAdapterElement extends t.PacemMapAdapterElement{geocode(e,t){const s=this.language||"",o=this.region||"",a=this.version||"weekly";return new PacemGoogleMapGeocoder(this.apiKey,s,o,a).geocode(e,t)}reverseGeocode(e,t){const s=this.language||"",o=this.region||"",a=this.version||"weekly";return new PacemGoogleMapGeocoder(this.apiKey,s,o,a).reverseGeocode(e,t)}getBounds(e){if(!this.hasMap(e))return LatLngBounds.Empty;const t=this.getMap(e).getBounds();return GMapsUtils.toLiteral(t)}isActive(){return!e.Utils.isNullOrEmpty(this.apiKey)}buildMarkerAdapterFor(e){return new PacemGoogleMarkerAdapter(e,this)}buildOverlayAdapterFor(e){return new PacemGoogleOverlayAdapter(e,this)}buildShapeAdapterFor(e){return new PacemGoogleShapeAdapter(e,this)}buildLayerAdapterFor(e){return new PacemGoogleLayerAdapter(e,this)}getMaxAvailableZoom(e){return new Promise(((t,s)=>{(new google.maps.MaxZoomService).getMaxZoomAtLatLng(e,(e=>{e.status===google.maps.MaxZoomStatus.OK?t(e.zoom):s()}))}))}#y=new WeakMap;snapshot(t,s="image/png",o){const{container:a}=this.tryGetMap(t);return e.Utils.snapshotElement(a,null,s,o)}setViewNative(e,t){const o=this.getMap(e);"string"==typeof t.type&&o.setMapTypeId(t.type),"number"==typeof t.tilt&&o.setTilt(t.tilt),"number"==typeof t.heading&&o.setHeading(t.heading);const a=()=>{t.center&&GMapsUtils.setCenter(o,t.center)};if("number"==typeof t.zoom&&t.zoom!==o.getZoom()){switch(o.getMapTypeId()){case google.maps.MapTypeId.SATELLITE:case google.maps.MapTypeId.HYBRID:const e=GMapsUtils.toLiteral(o.getCenter());this.getMaxAvailableZoom(e).then((e=>{const s=Math.min(e,t.zoom);o.setZoom(s),a()}));break;default:const r=Math.min(s.MAX_ROADMAP_ZOOM,t.zoom);o.setZoom(r),a()}}else a()}propertyChangedCallback(e,t,s,o){if(super.propertyChangedCallback(e,t,s,o),!o)switch(e){case"libraries":case"apiKey":case"language":case"region":this.#E&&this._bootstrapDebounced();break;case"defaultOptions":for(let e of this.enrolledMaps())this._updateMapOptions(e);break;default:for(let e of this.enrolledMaps())this.invalidateSize(e)}}dispose(e){const t=this.#y.get(e);for(;t.length;)google.maps.event.removeListener(t.pop());this.#y.delete(e)}_updateMapOptions(e){if(!this.hasMap(e))return;const{map:t}=this.tryGetMap(e);t.setOptions(this._buildMapOptions(e))}_buildMapOptions(t){const s=t.scale,o=t.draggable,a=t.doubleClickZoom,r=t.keyboardShortcuts;return e.Utils.extend({},this.defaultOptions||{streetViewControl:!1,zoomControl:!1,mapTypeControl:!1},{zoomControl:s&&!e.Utils.isNullOrEmpty(t.zoomControl),zoomControlOptions:{position:function(e){switch(e){case"topright":return google.maps.ControlPosition.RIGHT_TOP;case"bottomleft":return google.maps.ControlPosition.LEFT_BOTTOM;case"bottomright":return google.maps.ControlPosition.RIGHT_BOTTOM;default:return google.maps.ControlPosition.LEFT_TOP}}(t.zoomControl)},scrollwheel:t.mousewheel,disableDoubleClickZoom:a,keyboardShortcuts:r,draggable:o,mapTypeId:t.type,tilt:t.tilt,heading:t.heading})}#E=!1;_bootstrapDebounced(){this._bootstrap().then((e=>{for(let e of this.enrolledMaps())e.adapter=null,e.adapter=this}))}_bootstrap(){return new Promise(((e,t)=>{const s=this.apiKey,a=this.language||"",r=this.region||"",n=this.version||"weekly";o.boostrap(s,a,r,n).then((s=>{const o=[];for(let e of this.libraries||[])o.push(google.maps.importLibrary(e));Promise.all(o).then((t=>{e(),this.#E=!0}),t)}),t)}))}async init(e){await this._bootstrap();const s=e,o=t.MapUtils.parseCoords(s.center),r=new google.maps.LatLng(o[0],o[1]),n=this._buildMapOptions(s),i=s.container,l=document.createElement("div");l.style.width="100%",l.style.height="100%",i.innerHTML="",i.appendChild(l);const p=new google.maps.Map(l,n),d=[];this.#y.set(s,d),a.forEach((e=>{d.push(p.addListener(e,this._spinMapUpdateHandler(s,p)))})),p.setZoom(s.zoom),p.setCenter(r);var c=p.addListener("idle",(function(s){c.remove(),e.dispatchEvent(new t.MapEvent("maploaded"))}));const h=t.MapUtils.parseCoords(s.center),m=new google.maps.LatLng(h[0],h[1]);return p.setZoom(s.zoom),p.setCenter(m),{map:p,container:l}}invalidateSize(e){if(!this.hasMap(e))return;const{map:t}=this.tryGetMap(e);google.maps.event.trigger(t,"resize")}_spinMapUpdateHandler(t,s){return()=>{if(!e.Utils.isNull(s)&&!e.Utils.isNull(t)){const o=s.getCenter();if(e.Utils.isNull(o))return;this.updateMapElement(t,{center:{lat:o.lat(),lng:o.lng()},zoom:s.getZoom(),type:s.getMapTypeId(),tilt:s.getTilt(),heading:s.getHeading()})}}}fitBoundsNative(t,s,o=this._getPadding(t)){const a=this.tryGetMap(t)?.map;if(e.Utils.isNull(a))return;const r=GMapsUtils.getBounds(s);GMapsUtils.fitBounds(a,r,o)}_getPadding(e){const t=e.paddingTop||0,s=e.paddingLeft||0,o=e.paddingRight||0,a=e.paddingBottom||0;return s||t||o||a?{top:t,bottom:a,left:s,right:o}:null}_padBounds(e){const t=e.paddingTop||0,s=e.paddingLeft||0,o=e.paddingRight||0,a=e.paddingBottom||0;if(s||t||o||a){const r=this.tryGetMap(e).map,n=r.getBounds(),i=r.getDiv().clientWidth,l=r.getDiv().clientHeight,p=r.getProjection().fromPointToLatLng(new google.maps.Point(-s,-t)),d=r.getProjection().fromPointToLatLng(new google.maps.Point(i+o,l+a));n.extend(p),n.extend(d)}}_redrawMap(){}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],r.prototype,"apiKey",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],r.prototype,"version",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],r.prototype,"language",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],r.prototype,"region",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],r.prototype,"defaultOptions",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.StringArray})],r.prototype,"libraries",void 0),__decorate([e.Debounce(s.DETACH_TIMEOUT)],r.prototype,"_bootstrapDebounced",null),r=__decorate([e.CustomElement({tagName:e.P+"-map-adapter-google"})],r),t.PacemGoogleMapAdapterElement=r;class PacemGoogleMapGeocoder{constructor(e,t="",s="",o="weekly"){this.apiKey=e,this.language=t,this.region=s,this.version=o}_elevateResults(e){return new Promise(((t,s)=>{(new google.maps.ElevationService).getElevationForLocations({locations:e.map((e=>e.geometry.location))},((s,o)=>{if(o===google.maps.ElevationStatus.OK){const o=GMapsUtils.mapGeocodeResults(e,s);t(o)}else{const s=GMapsUtils.mapGeocodeResults(e);t(s)}}))}))}geocode(e,t=10){return new Promise(((s,a)=>{o.boostrap(this.apiKey,this.language||"",this.region||"",this.version||"weekly").then((o=>{(new google.maps.Geocoder).geocode({address:e},((e,o)=>{if(o===google.maps.GeocoderStatus.OK||o==google.maps.GeocoderStatus.ZERO_RESULTS){const o=(e||[]).filter(((e,s)=>s<(t||10)));this._elevateResults(o).then(s)}else a(o)}))}),a)}))}_reverseGeocodeInternal(e,t){const s=GMapsUtils.getPosition(e);return new Promise(((e,a)=>{o.boostrap(this.apiKey,this.language||"",this.region||"",this.version||"weekly").then((o=>{(new google.maps.Geocoder).geocode({location:s},((s,o)=>{if(o===google.maps.GeocoderStatus.OK||o==google.maps.GeocoderStatus.ZERO_RESULTS){const o=(s||[]).filter(((e,s)=>s<(t||10)));this._elevateResults(o).then(e)}else a(o)}))}),a)}))}reverseGeocode(e,t=1){return this._reverseGeocodeInternal(e,t)}}}(t.Maps||(t.Maps={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){const s="https://unpkg.com/leaflet@1.5.1/dist/leaflet.js",o="sha512-GffPMF3RvMeYyc1LWMHtK8EbPv0iNZ8/oTtHPx9/cc2ILxQ+u905qIwdpULaqDkyBKgOaB57QTMg7ztg8Jm2Og==",a="https://unpkg.com/leaflet@1.5.1/dist/leaflet.css",r="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ==";function n(e){return{fullAddress:e.display_name,address:(t=e.address,{city:t.city,state:t.state,provinceCode:t["ISO3166-2-lvl6"]?.split("-")[1],province:t.county,village:t.village,zipCode:t.postcode,streetName:t.road,houseNumber:t.house_number,countryCode:t.country_code?.toUpperCase(),country:t.country}),position:{lat:parseFloat(e.lat),lng:parseFloat(e.lon),altitude:null}};var t}class LeafletUtils{static toLiteral(e){return{ne:e.getNorthEast(),sw:e.getSouthWest()}}static parseGeocoding(t){return e.Utils.isNullOrEmpty(t)?[]:t.map(n)}static parseReverseGeocoding(t){return e.Utils.isNullOrEmpty(t)?[]:[n(t)]}}t.LayerLoadEventName="layerload";class LayerLoadEvent extends e.CustomTypedEvent{constructor(e){super(t.LayerLoadEventName,e,{bubbles:!0})}}class PacemLeafletMarkerAdapter extends t.PacemMarkerAdapter{deleteInfoWindow(e,t){e.unbindPopup()}deleteMarker(e,t){e.removeFrom(t)}getMarkerPosition(e){return e.getLatLng()}buildMarker(e,t){return L.marker(e.position).addTo(t)}addClickEventListener(e,t,s){e.on("click",s)}addDragEventListener(e,t,s){e.on("drag",s)}addDragEndEventListener(e,t,s){e.on("dragend",s)}setPosition(e,t){e.setLatLng(t)}setIcon(t,s){const o=this;if("string"==typeof s)o._setIcon(t,s);else if(!e.Utils.isNull(s)){let a={iconUrl:s.url};e.Utils.isNullOrEmpty(s.size)||e.Utils.extend(a,{iconSize:[s.size.width,s.size.height],iconAnchor:[s.size.width/2,s.size.height],popupAnchor:[0,-s.size.height]}),e.Utils.isNullOrEmpty(s.anchor)||e.Utils.extend(a,{iconAnchor:[s.anchor.x,s.anchor.y]}),o._setIcon(t,new L.Icon(a))}}setLabel(e,t){}setDraggable(e,t){!0===t?e.dragging.enable():e.dragging.disable()}closeInfo(e){e.closePopup()}openInfo(e,t,s,o){e.bindPopup(t).openPopup()}buildInfoWindow(e){return this.markers.get(e)}addCloseClickEventListener(e,t,s){e.on("popupclose",s)}setContent(e,t){const s=e.getPopup();s&&s.getContent()!=t&&e.setPopupContent(t)}_setIcon(e,t){if("string"==typeof t){var s,o,a,r={iconUrl:t};if((s=this.size)&&/[\d]+,[\d]+/.test(s)){var n=-1,i=[parseInt(s.substring(0,n=s.indexOf(","))),parseInt(s.substring(n+1))];Object.assign(r,{iconSize:i})}if((o=this.anchor)&&/[\d]+,[\d]+/.test(o)){n=-1;var l=[parseInt(o.substring(0,n=o.indexOf(","))),parseInt(o.substring(n+1))];Object.assign(r,{iconAnchor:l,popupAnchor:[0,-l[1]]})}if((a=this.popupAnchor)&&/[\d]+,[\d]+/.test(a)){n=-1,l=[parseInt(o.substring(0,n=o.indexOf(","))),parseInt(o.substring(n+1))];Object.assign(r,{popupAnchor:l})}e.setIcon(L.icon(r))}else t&&e.setIcon(t)}}class PacemLeafletShapeAdapter extends t.PacemShapeAdapter{addDragStartEventListener(e,t){throw new Error("Method not implemented.")}deleteShape(e,t){throw new Error("Method not implemented.")}getShapeBounds(e){throw new Error("Method not implemented.")}getShapePosition(e){throw new Error("Method not implemented.")}buildShape(e,t){throw new Error("Method not implemented.")}addClickEventListener(e,t){throw new Error("Method not implemented.")}addDragEventListener(e,t){throw new Error("Method not implemented.")}addDragEndEventListener(e,t){throw new Error("Method not implemented.")}setShape(e,t){throw new Error("Method not implemented.")}setEditable(e,t){throw new Error("Method not implemented.")}setDraggable(e,t){throw new Error("Method not implemented.")}}class PacemLeafletLayerAdapter extends t.PacemLayerAdapter{addLoadEventListener(e,t,s){e.on("load",s)}removeLoadEventListener(e,t,s){e.off("load",s)}deleteLayer(e,t){e.remove()}buildLayer(e,t){const s=(e.mode||"").toLowerCase();return"wms"===s?L.tileLayer.wms(e.url,{layers:(e.include||[]).join(","),minZoom:e.minZoom,maxZoom:e.maxZoom,transparent:!0,format:"image/png"}).addTo(t):L.tileLayer(e.url,{tms:"tms"===s,minZoom:e.minZoom,maxZoom:e.maxZoom}).addTo(t)}}class PacemLeafletOverlayAdapter extends t.PacemOverlayAdapter{deleteOverlay(e,t){throw new Error("Method not implemented.")}buildOverlay(e,t){throw new Error("Method not implemented.")}setBounds(e,t,s){throw new Error("Method not implemented.")}updateOverlay(e,t,s){throw new Error("Method not implemented.")}}let i=class PacemLeafletMapAdapterElement extends t.PacemMapAdapterElement{constructor(){super(...arguments),this.#M=new WeakMap,this.tiles="//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",this.attribution='Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors',this._tileLayerLoadHandler=e=>{this.dispatchLayerLoadEvent(e.sourceTarget)},this._mapUpdateHandler=t=>{const s=this.getMap(t);e.Utils.isNull(s)||e.Utils.isNull(t)||this.updateMapElement(t,s.getCenter(),s.getZoom())}}buildOverlayAdapterFor(e){return new PacemLeafletOverlayAdapter(e,this)}geocode(t,s){return(new PacemNominatimMapGeocoder).geocode(t,s,e.Utils.lang(this))}reverseGeocode(t,s){return(new PacemNominatimMapGeocoder).reverseGeocode(t,e.Utils.lang(this))}getBounds(e){const t=this.getMap(e).getBounds();return LeafletUtils.toLiteral(t)}isActive(){return!0}setViewNative(e,t){const s=this.getMap(e);t.center?s.setView(t.center,t.zoom??s.getZoom(),{animate:!0}):"number"==typeof t.zoom&&s.setZoom(t.zoom,{animate:!0})}buildMarkerAdapterFor(e){return new PacemLeafletMarkerAdapter(e,this)}buildShapeAdapterFor(e){return new PacemLeafletShapeAdapter(e,this)}buildLayerAdapterFor(e){return new PacemLeafletLayerAdapter(e,this)}#M;snapshot(t,s="image/png",o){return e.Utils.snapshotElement(t.container.firstElementChild,null,s,o)}propertyChangedCallback(e,t,s,o){if(super.propertyChangedCallback(e,t,s,o),"tiles"===e)for(let e of this.enrolledMaps())this._redrawMap(e);for(let e of this.enrolledMaps())this.invalidateSize(e)}dispose(e){const{map:t}=this.tryGetMap(e),s=this.#M.get(e);s&&s.off("load",this._tileLayerLoadHandler),t.clearAllEventListeners(),this.#M.delete(e)}async init(n){await Promise.all([e.CustomElementUtils.importjs(s,o,!0),e.CustomElementUtils.importcss(a,r,!0)]);const i=n;var l=i.scale,p=i.draggable,d=i.doubleClickZoom,c=i.keyboardShortcuts,h=L.latLng(t.MapUtils.parseCoords(i.center)),m={zoomControl:l&&!e.Utils.isNullOrEmpty(i.zoomControl),scrollWheelZoom:i.mousewheel,dragging:p,doubleClickZoom:!d,keyboard:c};const u=i.container,g=document.createElement("div");g.style.width="100%",g.style.height="100%",u.innerHTML="",u.appendChild(g);const v=L.map(g,m);["zoomend","moveend"].forEach((e=>{v.on(e,(e=>{this._idleFiller(i),this._mapUpdateHandler(i)}))})),v.on("load",(()=>{l&&i.zoomControl&&v.zoomControl.setPosition(i.zoomControl),this._idleFiller(i)}));const y=L.tileLayer(this.tiles,{attribution:this.attribution}).addTo(v);y.on("load",this._tileLayerLoadHandler),this.#M.set(i,y),v.setView(h,i.zoom),v.once("idle",(function(){v.fire("resize"),n.dispatchEvent(new t.MapEvent("maploaded"))}));const f=t.MapUtils.parseCoords(i.center),_=[f[0],f[1]];return v.setView(_,i.zoom),{map:v,container:g}}dispatchLayerLoadEvent(e){this.dispatchEvent(new LayerLoadEvent(e))}invalidateSize(e){if(this.hasMap(e)){this.getMap(e).invalidateSize()}}_idleFiller(e){if(this.hasMap(e)){this.getMap(e).fire("idle")}}fitBoundsNative(e,t,s={top:e.paddingTop||0,left:e.paddingLeft||0,right:e.paddingRight||0,bottom:e.paddingBottom||0}){const o=this.getMap(e),a={paddingTopLeft:new L.Point(s.left,s.top),paddingBottomRight:new L.Point(s.right,s.bottom)},r=t.ne,n=t.sw;try{o.fitBounds([[r.lat,r.lng],[n.lat,n.lng]],a)}catch(e){throw e}}_redrawMap(t){var s=this,o=s.#M.get(t);e.Utils.isNull(s.tiles&&o)||o.setUrl(s.tiles)}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],i.prototype,"tiles",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],i.prototype,"attribution",void 0),__decorate([e.Debounce(500)],i.prototype,"_idleFiller",null),i=__decorate([e.CustomElement({tagName:e.P+"-map-adapter-leaflet"})],i),t.PacemLeafletMapAdapterElement=i;class PacemNominatimMapGeocoder{_buildGeocodeRequest(t,s=10,o=""){const a={q:t,limit:""+s,"accept-language":o};return{uri:e.Utils.URIs.appendQuery("https://nominatim.openstreetmap.org/search?addressdetails=1&format=json",a),options:{mode:"cors"}}}parseGeocodeResponse(e){return new Promise(((t,s)=>{e.json().then((e=>{const s=LeafletUtils.parseGeocoding(e);t(s)}),(e=>s(e)))}))}geocode(e,t=10,s=""){return new Promise(((o,a)=>{const r=this._buildGeocodeRequest(e,t,s);return fetch(r.uri,r.options).then((e=>{e.ok?this.parseGeocodeResponse(e).then(o,a):a(e)}),(e=>a(e)))}))}reverseGeocode(e,t=""){return new Promise(((s,o)=>{const a=this._buildReverseRequest(e,t);return fetch(a.uri,a.options).then((e=>{e.ok?this._parseReverseResponse(e).then(s,o):o(e)}),(e=>o(e)))}))}_buildReverseRequest(s,o=""){const a=t.MapUtils.parseCoords(s),r={lat:""+a[0],lon:""+a[1],"accept-language":o};return{uri:e.Utils.URIs.appendQuery("https://nominatim.openstreetmap.org/reverse?addressdetails=1&format=json",r),options:{mode:"cors"}}}_parseReverseResponse(e){return new Promise(((t,s)=>{e.json().then((e=>{const s=LeafletUtils.parseReverseGeocoding(e);t(s)}),(e=>s(e)))}))}}}(t.Maps||(t.Maps={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={}));
|
|
6
|
+
var Pacem,__decorate=this&&this.__decorate||function(e,t,s,o){var a,r=arguments.length,n=r<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,s):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,s,o);else for(var i=e.length-1;i>=0;i--)(a=e[i])&&(n=(r<3?a(n):r>3?a(t,s,n):a(t,s))||n);return r>3&&n&&Object.defineProperty(t,s,n),n};!function(e){!function(t){const s={lat:Number.NaN,lng:Number.NaN};class LatLng{static get Empty(){return s}static isEmpty(e){return e===s||isNaN(e.lat)&&isNaN(e.lng)}static isLatLng(e){return"lat"in e&&"number"==typeof e.lat&&"lng"in e&&"number"==typeof e.lng}static translate(e,t){return{lat:e.lat+t.lat,lng:e.lng+t.lng}}static equals(e,t){return e===t||e.lat===t.lat&&e.lng===t.lng}}t.LatLng=LatLng;const o={ne:LatLng.Empty,sw:LatLng.Empty};class LatLngBounds{static get Empty(){return o}static isEmpty(e){return e===o||LatLng.isEmpty(e.ne)&&LatLng.isEmpty(e.sw)}static isPoint(e){return!this.isEmpty(e)&&(e.ne===e.sw||e.ne.lat===e.sw.lat&&e.ne.lng===e.sw.lng)}static isLatLngBounds(e){return"ne"in e&&LatLng.isLatLng(e.ne)&&"sw"in e&&LatLng.isLatLng(e.sw)}static union(e,t){if(LatLngBounds.isEmpty(e))return LatLngBounds.isLatLngBounds(t)?t:{ne:t,sw:t};if(LatLngBounds.isLatLngBounds(t)){if(LatLngBounds.isEmpty(t))return e;return{ne:{lat:Math.max(e.ne.lat,t.ne.lat),lng:Math.max(e.ne.lng,t.ne.lng)},sw:{lat:Math.min(e.sw.lat,t.sw.lat),lng:Math.min(e.sw.lng,t.sw.lng)}}}if(LatLng.isLatLng(t)){if(LatLng.isEmpty(t))return e;return{ne:{lat:Math.max(e.ne.lat,t.lat),lng:Math.max(e.ne.lng,t.lng)},sw:{lat:Math.min(e.sw.lat,t.lat),lng:Math.min(e.sw.lng,t.lng)}}}return e}static equals(e,t){return e===t||LatLng.equals(e.ne,t.ne)&&LatLng.equals(e.sw,t.sw)}}t.LatLngBounds=LatLngBounds;const a={SIZE:256,RAD:Math.PI/180,DEG:180/Math.PI,EPSILON:1e-15,SIN_LIMIT:1-1e-15,EARTH_RADIUS:6378137},r="maps";class MapProjection{constructor(e,t,s=a.SIZE){this._pixelSize=e,this._bounds=t,this._normalizedSize=s;const o=s/2;this.#e={x:o,y:o},this.#t=s/360,this.#s=o/Math.PI,this.#o=this._latLngToWorldNormalizedPoint(t.sw),this.#a=this._latLngToWorldNormalizedPoint(t.ne)}#e;#o;#a;#t;#s;_latLngToWorldNormalizedPoint(e){const t=this.#e.x+e.lng*this.#s,s=e.lat*a.RAD,o=a.SIN_LIMIT,r=Math.sin(s).clamp(-o,o);return{x:t,y:this.#e.y+.5*Math.log((1+r)/(1-r))*-this.#t}}_worldNormalizedPointToLatLng(e){return{lat:a.DEG*(2*Math.atan(Math.exp((e.y-this.#e.y)/-this.#t))-Math.PI/2),lng:(e.x-this.#e.x)/this.#s}}_latLngToPoint(e){const t=this.#a,s=this.#o,o=-t.y+s.y,a=t.x-s.x,r=this._latLngToWorldNormalizedPoint(e),{width:n,height:i}=this._pixelSize;return{x:(r.x-s.x)*(n/a),y:(r.y-t.y)*(i/o)}}_pointToLatLng(e){const t=this.#a,s=this.#o,o=-t.y+s.y,a=t.x-s.x,{width:r,height:n}=this._pixelSize,i=e.x/(r/a)+this.#o.x,l=e.y/(n/o)+this.#a.y;return this._worldNormalizedPointToLatLng({x:i,y:l})}static _haversine(e,t){const s=a.RAD,o=e.lng*s,r=t.lng*s,n=e.lat*s,i=t.lat*s;return 2*Math.asin(Math.sqrt(Math.pow(Math.sin((n-i)/2),2)+Math.cos(n)*Math.cos(i)*Math.pow(Math.sin((o-r)/2),2)))}static distanceBetween(e,t,s=a.EARTH_RADIUS){return MapProjection._haversine(e,t)*s}static latLngToPoint(e,t,s){return new MapProjection(s,t)._latLngToPoint(e)}static pointToLatLng(e,t,s){return new MapProjection(t,s)._pointToLatLng(e)}}__decorate([e.Transformer(r+".")],MapProjection,"distanceBetween",null),__decorate([e.Transformer(r+".")],MapProjection,"latLngToPoint",null),__decorate([e.Transformer(r+".")],MapProjection,"pointToLatLng",null),t.MapProjection=MapProjection}(e.Maps||(e.Maps={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(s){let o,a;!function(e){e.ROAD="road",e.SATELLITE="satellite",e.HYBRID="hybrid",e.TERRAIN="terrain",e.HIGH_CONTRAST="high_contrast"}(o=s.MapType||(s.MapType={})),function(e){e.LIGHT="light",e.DARK="dark",e.SYSTEM="system"}(a=s.MapColorScheme||(s.MapColorScheme={}));const r={MAP_SELECTOR:e.P+"-map",LINK_SELECTOR:e.P+"-map-link",MARKER_SELECTOR:e.P+"-map-marker",POLYLINE_SELECTOR:e.P+"-map-polyline",CIRCLE_SELECTOR:e.P+"-map-circle",POLYGON_SELECTOR:e.P+"-map-polygon",RECTANGLE_SELECTOR:e.P+"-map-rectangle",LAYER_SELECTOR:e.P+"-map-layer",OVERLAY_IMAGE_SELECTOR:e.P+"-map-overlay-image",GEOCODER_SELECTOR:e.P+"-map-geocode",DEFAULT_COORDS:{lat:44.71418802507798,lng:10.296516444873811}};s.MapConsts={DEFAULT_COORDS:r.DEFAULT_COORDS};class LatLng extends e.Maps.LatLng{}class LatLngBounds extends e.Maps.LatLngBounds{}s.isLatLng=function(e){return LatLng.isLatLng(e)},s.isLatLngBounds=function(e){return LatLngBounds.isLatLngBounds(e)};const n="defaultMapTarget";s.LatLngConverter={convert:e=>{const t=/^\s*([+\-\d\.]+)\s*,?\s*([+\-\d\.]+)\s*$/.exec(e);return t&&t.length>2?{lat:parseFloat(t[1]),lng:parseFloat(t[2])}:JSON.parse(e)},convertBack:e=>JSON.stringify(e)},s.LatLngBoundsConverter={convert:e=>{const t=/^\s*([+\-\d\.]+)\s*,?\s*([+\-\d\.]+)\s*,?\s*([+\-\d\.]+)\s*,?\s*([+\-\d\.]+)\s*$/.exec(e);return t&&t.length>4?{sw:{lat:parseFloat(t[3]),lng:parseFloat(t[4])},ne:{lat:parseFloat(t[1]),lng:parseFloat(t[2])}}:JSON.parse(e)},convertBack:e=>JSON.stringify(e)};class MapUtils{static parseCoords(t){if(t&&!isNaN(t.lat)&&!isNaN(t.lng))return[t.lat,t.lng];if(e.Utils.isArray(t)&&t.length>1)return[t[0],t[1]];if(/^\s*(\+|-)?[\d]+(.[\d]+)?\s*,\s*(\+|-)?[\d]+(.[\d]+)?\s*$/.test(t)){var s=t.split(",");return[parseFloat(s[0]),parseFloat(s[1])]}return[r.DEFAULT_COORDS.lat,r.DEFAULT_COORDS.lng]}static expandBounds(e,t){t&&(Array.isArray(t)||(t=[t.lat,t.lng]),e.push(t))}static isContentEmpty(e){return 0==e.children.length}}s.MapUtils=MapUtils;class MapRelevantElement extends t.PacemEventTarget{get map(){return this._map=this._map||e.CustomElementUtils.findAncestorOfType(this,g)}propertyChangedCallback(e,t,s,o){if(super.propertyChangedCallback(e,t,s,o),!o&&"hide"===e){const e=this.map;e?.adapter?.fitBounds(e,!0)}}viewActivatedCallback(){super.viewActivatedCallback(),this.map&&this.map.register(this)}disconnectedCallback(){this.map&&this.map.unregister(this),super.disconnectedCallback()}}__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],MapRelevantElement.prototype,"hide",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],MapRelevantElement.prototype,"inactive",void 0),s.MapRelevantElement=MapRelevantElement;class MapEvent extends e.CustomTypedEvent{constructor(e,t){super(e,t)}}s.MapEvent=MapEvent;let i=class PacemMapGeocodeElement extends t.PacemEventTarget{constructor(){super(...arguments),this.debounce=1e3,this.#r=!1}#r;#n;#i;get fetching(){return this.#r}_guards(){const t=this.results;if(!e.Utils.isNullOrEmpty(t)){const s=t[0];if(!e.Utils.isNull(this.position)&&LatLng.equals(this.position,s.position)&&this.search===s.fullAddress)return Promise.resolve(t)}const s=this.adapter;return e.Utils.isNull(s)||s.disabled||!s.active?Promise.resolve([]):null}propertyChangedCallback(t,s,o,a){switch(super.propertyChangedCallback(t,s,o,a),t){case"search":this.geocode(o);break;case"position":this.reverseGeocode(o);break;case"results":if(e.Utils.isNullOrEmpty(o))this.search="",this.position=null;else{const e=o[0];this.search=e.fullAddress,this.position=e.position}}}_broadcastFetchingUpdate(t){t!==this.#r&&(this.#r=t,this.dispatchEvent(new e.PropertyChangeEvent({propertyName:"fetching",oldValue:!t,currentValue:t})))}_fetch(t){const{promise:s,search:o,position:a,key:r}=t,n=this.#i;!e.Utils.isNull(n)&&LatLng.equals(n.position,a)&&(n.search||"")===(o||"")||(this.#i={key:r,promise:s,position:a,search:o},this._broadcastFetchingUpdate(!0),s.then((e=>{r===this.#i.key&&(this._broadcastFetchingUpdate(!1),this._successCallback(e))}),(e=>this._errorCallback(e))))}_debounce(e,t=this.debounce){this.#n&&clearTimeout(this.#n),this.#n=setTimeout((()=>{e()}),t||0)}reverseGeocode(t=this.position,s=this.maxResults){this.disabled||this._debounce((()=>{const o=this._guards()??this.adapter.reverseGeocode(t,s||1);this._fetch({promise:o,position:t,key:e.Utils.uniqueCode()})}))}geocode(t=this.search,s=this.maxResults){this.disabled||this._debounce((()=>{const o=this._guards()??this.adapter.geocode(t,s||10);this._fetch({promise:o,search:t,position:LatLng.Empty,key:e.Utils.uniqueCode()})}))}_successCallback(t){const s=!e.Utils.isNullOrEmpty(t);!s&&e.Utils.isNullOrEmpty(this.results)||t!==this.results&&(this.results=t,s&&this.dispatchEvent(new CustomEvent("success",{detail:t,bubbles:!1,cancelable:!1})))}_errorCallback(t){e.Utils.isNullOrEmpty(this.results)||(this.results=[]),this.dispatchEvent(new CustomEvent("error",{detail:t,bubbles:!1,cancelable:!1}))}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],i.prototype,"adapter",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"maxResults",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"debounce",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],i.prototype,"results",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.String})],i.prototype,"search",void 0),__decorate([e.Watch({emit:!0,converter:s.LatLngConverter})],i.prototype,"position",void 0),i=__decorate([e.CustomElement({tagName:r.GEOCODER_SELECTOR})],i),s.PacemMapGeocodeElement=i;class PacemMapAdapterElement extends t.PacemEventTarget{constructor(){super(...arguments),this.active=!0,this.#l=new Map,this.#p=new WeakMap,this.#d=new WeakMap,this.#c=new WeakMap,this.#h=new WeakMap}propertyChangedCallback(e,t,s,o){super.propertyChangedCallback(e,t,s,o),o||(this.active=!this.disabled&&this.isActive())}#l;#p;#d;#c;#h;get layerAdapters(){return this.#c}get overlayAdapters(){return this.#h}get markerAdapters(){return this.#p}get shapeAdapters(){return this.#d}hasMap(e){return this.#l.has(e)}enrolledMaps(){return this.#l.keys()}tryGetMap(e){const t=this.#l;return t.has(e)?t.get(e):null}getMap(e){const t=this.tryGetMap(e);return t?.map}async initialize(e){const t=this.#l;if(!t.has(e)){const s=await this.init(e);t.set(e,s);const o=this.#c;o.has(e)||o.set(e,this.buildLayerAdapterFor(e));const a=this.#h;a.has(e)||a.set(e,this.buildOverlayAdapterFor(e));const r=this.#p;r.has(e)||r.set(e,this.buildMarkerAdapterFor(e));const n=this.#d;return n.has(e)||n.set(e,this.buildShapeAdapterFor(e)),s.container}return t.get(e).container}destroy(e){const t=this.#c;t.has(e)&&t.delete(e);const s=this.#h;s.has(e)&&s.delete(e);const o=this.#p;o.has(e)&&o.delete(e);const a=this.#d;a.has(e)&&a.delete(e);const r=this.#l;r.has(e)&&(this.dispose(e),r.delete(e))}removeItem(e){const t=e.map;if(e instanceof p){const s=this.layerAdapters;if(s.has(t)){s.get(t).removeLayer(e)}}else if(e instanceof d){const s=this.markerAdapters;if(s.has(t)){s.get(t).removeMarker(e)}}else if(e instanceof PacemMapShapeElement){const s=this.shapeAdapters;if(s.has(t)){s.get(t).removeShape(e)}}else if(e instanceof PacemMapOverlayElement){const s=this.overlayAdapters;if(s.has(t)){s.get(t).removeOverlay(e)}}e.inactive||this.fitBounds(t,!0)}drawItem(e){const t=e.map;if(e instanceof p){const s=this.layerAdapters;if(s.has(t)){s.get(t).drawLayer(e)}}else if(e instanceof d){const s=this.markerAdapters;if(s.has(t)){s.get(t).drawMarker(e)}}else if(e instanceof PacemMapShapeElement){const s=this.shapeAdapters;if(s.has(t)){s.get(t).drawShape(e)}}else if(e instanceof PacemMapOverlayElement){const s=this.overlayAdapters;if(s.has(t)){s.get(t).drawOverlay(e)}}e.inactive||this.fitBounds(t,!0)}popupInfoWindow(e){const t=e.map;if(e instanceof d){const s=this.markerAdapters;s.has(t)&&s.get(t).openInfoWindow(e)}}popoutInfoWindow(e){const t=e.map;if(e instanceof d){const s=this.markerAdapters;s.has(t)&&s.get(t).closeInfoWindow(e)}}setView(t,s,o){if(!this.hasMap(t))return;let a={};a="number"==typeof s?e.Utils.extend({},{zoom:s}):LatLng.isLatLng(s)?e.Utils.extend({},{center:s,zoom:o}):s,this.setViewNative(t,a)}fitBounds(t,s){if(e.Utils.isNull(t))for(let e of this.enrolledMaps()||[])this._fitBounds(e,s);else this._fitBounds(t,s)}_fitBounds(t,s){if(!this.hasMap(t))return;if(!t.autofit&&!0===s)return;const o=this.markerAdapters.get(t)?.getBounds(),a=this.shapeAdapters.get(t)?.getBounds(),r=e.Utils.isNull(o)||LatLngBounds.isEmpty(o),n=e.Utils.isNull(a)||LatLngBounds.isEmpty(a);if(r&&n)return void this.setView(t,{center:t.center,zoom:t.zoom});let i=LatLngBounds.Empty;r||(i=LatLngBounds.union(i,o)),n||(i=LatLngBounds.union(i,a)),LatLngBounds.isPoint(i)?this.setView(t,{zoom:t.zoom,center:i.ne}):this.fitBoundsNative(t,i)}updateMapElement(t,s,o){["type","tilt","heading"].forEach((e=>{e in s&&(t[e]=s[e])}));const a="zoom"in s?s.zoom:o;e.Utils.isNullOrEmpty(a)||a===t.zoom||(t.zoom=a);const r=LatLng.isLatLng(s)?s:s.center;e.Utils.isNullOrEmpty(r)||r.lat==t.center?.lat&&r.lng==t.center?.lng||(t.center=r),t.updateBounds(this.getBounds(t))}}__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Boolean})],PacemMapAdapterElement.prototype,"active",void 0),__decorate([e.Debounce(1e3,((e,t)=>`pacem:debounce:${e}:${t.id}`))],PacemMapAdapterElement.prototype,"_fitBounds",null),s.PacemMapAdapterElement=PacemMapAdapterElement;class MapItemAdapter{constructor(e,t=e.adapter){this._map=e,this._adapter=t}get adapter(){return this._adapter}get map(){return this._map}getMap(e){return this._adapter.getMap(e.map)}}s.MapItemAdapter=MapItemAdapter;s.PacemOverlayAdapter=class PacemOverlayAdapter extends MapItemAdapter{constructor(e,t=e.adapter){super(e,t)}#h=new Map;get layers(){return this.#h}onOverlayLoad(e,t){e.dispatchEvent(new Event("overlayload"))}ensureOverlay(t,s){const o=this.#h;let a;return o.has(t)?a=o.get(t):(a=this.buildOverlay(t,s),e.Utils.isNull(a)||o.set(t,a)),a}removeOverlay(e){const t=this,s=t.getMap(e),o=this.#h;if(o.has(e)){const a=o.get(e);t.deleteOverlay(a,s),o.delete(e)}}drawOverlay(t){const s=this,o=s.getMap(t);if(e.Utils.isNull(o))return;if(e.Utils.isNullOrEmpty(t)||t.hide)return void s.removeOverlay(t);const a=this.ensureOverlay(t,o);this.setBounds(a,o,t.bounds),this.updateOverlay(a,o,t)}};class PacemMapOverlayElement extends MapRelevantElement{}__decorate([e.Watch({emit:!1,converter:s.LatLngBoundsConverter})],PacemMapOverlayElement.prototype,"bounds",void 0),s.PacemMapOverlayElement=PacemMapOverlayElement;let l=class PacemMapOverlayImageElement extends PacemMapOverlayElement{};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],l.prototype,"src",void 0),l=__decorate([e.CustomElement({tagName:r.OVERLAY_IMAGE_SELECTOR})],l),s.PacemMapOverlayImageElement=l;s.PacemLayerAdapter=class PacemLayerAdapter extends MapItemAdapter{constructor(e,t=e.adapter){super(e,t)}#c=new Map;#m=new Map;get layers(){return this.#c}onTileLoad(e,t){e.dispatchEvent(new Event("tileload"))}ensureLayer(e,t){const s=this,o=s.#c;let a;if(o.has(e))a=o.get(e);else if(a=this.buildLayer(e,t),null!=a){const r=t=>{s.onTileLoad(e,t)};this.#m.set(e,r),this.addLoadEventListener(a,t,r),o.set(e,a)}return a}removeLayer(e){const t=this,s=t.getMap(e),o=this.#c;if(o.has(e)){const a=o.get(e),r=this.#m;if(r.has(e)){const t=r.get(e);this.removeLoadEventListener(a,s,t),r.delete(e)}t.deleteLayer(a,s),o.delete(e)}}drawLayer(t){const s=this,o=s.getMap(t);e.Utils.isNull(o)||(e.Utils.isNullOrEmpty(t)||t.hide?s.removeLayer(t):this.ensureLayer(t,o))}};let p=class PacemMapLayerElement extends MapRelevantElement{};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],p.prototype,"url",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],p.prototype,"include",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],p.prototype,"mode",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],p.prototype,"minZoom",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],p.prototype,"maxZoom",void 0),p=__decorate([e.CustomElement({tagName:r.LAYER_SELECTOR})],p),s.PacemMapLayerElement=p;s.PacemMarkerAdapter=class PacemMarkerAdapter extends MapItemAdapter{constructor(e,t=e.adapter){super(e,t)}get mapAutomaticallyScrollsOnDrag(){return!1}#p=new Map;#g=new Map;getBounds(t=e=>!0){const s=this.markers;let o=LatLngBounds.Empty;for(var a of s.keys()){if(!t(a)||a.inactive)continue;let r=s.get(a);e.Utils.isNull(r)||(o=LatLngBounds.union(o,this.getMarkerPosition(r)))}return o}get markers(){return this.#p}get infoWindows(){return this.#g}onDragEnd(e,t){const s=this.markers.get(e),o=this.getMarkerPosition(s);e.onDragEnd(o)}onClick(e,t){const s=this.markers.get(e),o=this.getMarkerPosition(s);e.onClick(o)}onInfoOpen(e){e.onInfoOpen()}onInfoClose(e){e.onInfoClose()}ensureMarker(e,t){const s=this;let o;return s.markers.has(e)?o=s.markers.get(e):(o=this.buildMarker(e,t),null!=o&&(this.addClickEventListener(o,t,(t=>{s.onClick(e,t),s.openInfoWindow(e,t)})),this.addDragEventListener(o,t,(t=>{this.mapAutomaticallyScrollsOnDrag||s.adapter.fitBounds(e.map,!0)})),this.addDragEndEventListener(o,t,(t=>s.onDragEnd(e,t))),s.markers.set(e,o))),o}removeMarker(e){const t=this,s=t.getMap(e),o=this.#g,a=this.#p;if(o.has(e)&&o.delete(e),a.has(e)){const o=a.get(e);t.deleteMarker(o,s),a.delete(e)}}drawMarker(t){const s=this,o=s.getMap(t);if(e.Utils.isNull(o))return;if(e.Utils.isNullOrEmpty(t&&t.position)||t.hide)return void s.removeMarker(t);const a=this.ensureMarker(t,o);this.setPosition(a,t.position),this.setIcon(a,t.icon),this.setLabel(a,t.caption),this.setDraggable(a,t.draggable)}closeInfoWindow(e,t){const s=this;if(s.infoWindows.has(e)){const t=s.infoWindows.get(e);this.closeInfo(t)}}ensureInfoWindow(e,t){var s=this;let o;return s.infoWindows.has(e)?o=s.infoWindows.get(e):(o=this.buildInfoWindow(e),this.addCloseClickEventListener(o,t,(a=>{s.deleteInfoWindow(o,t),s.onInfoClose(e)})),s.infoWindows.set(e,o)),o}openInfoWindow(t,s){var o=this,a=o.markers.get(t),r=t.caption,n=o.getMap(t);if(MapUtils.isContentEmpty(t)||(r=t.innerHTML),!e.Utils.isNullOrEmpty(r)){const e=this.ensureInfoWindow(t,n);this.setContent(e,r),this.openInfo(e,r,n,a),o.onInfoOpen(t)}}};let d=class PacemMapMarkerElement extends MapRelevantElement{onDragEnd(e){this.position=e,this.dispatchEvent(new MapEvent("dragend",{position:e}))}onClick(e){this.position=e,this.dispatchEvent(new MapEvent("click",{position:e}))}onInfoOpen(){this.dispatchEvent(new MapEvent("openinfo"))}onInfoClose(){this.dispatchEvent(new MapEvent("closeinfo"))}};__decorate([e.Watch({converter:s.LatLngConverter})],d.prototype,"position",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],d.prototype,"icon",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],d.prototype,"caption",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],d.prototype,"draggable",void 0),d=__decorate([e.CustomElement({tagName:r.MARKER_SELECTOR})],d),s.PacemMapMarkerElement=d;s.PacemShapeAdapter=class PacemShapeAdapter extends MapItemAdapter{constructor(e,t=e.adapter){super(e,t)}#d=new Map;get shapes(){return this.#d}getBounds(t=e=>!0){const s=this.shapes;let o=LatLngBounds.Empty;for(var a of s.keys()){if(!t(a)||a.inactive)continue;let r=s.get(a);e.Utils.isNull(r)||(o=LatLngBounds.union(o,this.getShapeBounds(r)))}return o}removeShape(e){const t=this,s=t.getMap(e),o=this.#d;if(o.has(e)){const a=o.get(e);t.deleteShape(a,s),o.delete(e)}}_dispatchEvent(e,t,s){const o=this.shapes.get(e),a=this.getShapePosition(s??o);e.dispatchEvent(new MapEvent(t,{position:a}))}#u=new Map;onDragStart(e,t){const s=this.shapes.get(e),o=this.getShapeBounds(s);this.#u.set(e,o.ne),this._dispatchEvent(e,"dragstart",t)}onDragEnd(e,t){const s=this.shapes.get(e),o=this.getShapeBounds(s),a=this.#u.get(e),r=o.ne,n={lat:r.lat-a.lat,lng:r.lng-a.lng};this._translateShape(e,n),this._dispatchEvent(e,"dragend",t)}_translateShape(e,t){if(e instanceof m)e.center=LatLng.translate(e.center,t);else if(e instanceof c){const s=e.vertices.map((e=>LatLng.translate(e,t)));e.vertices=s}else if(e instanceof h){const s=e.vertices.map((e=>LatLng.translate(e,t)));e.vertices=s}else;}onDrag(e,t){this._dispatchEvent(e,"drag",t)}onClick(e,t){this._dispatchEvent(e,"click",t)}ensureShape(e,t){const s=this;let o;return s.shapes.has(e)?o=s.shapes.get(e):(o=this.buildShape(e,t),null!=o&&(this.addClickEventListener(o,(t=>s.onClick(e,t))),this.addDragEventListener(o,(t=>{s.onDrag(e,t),s.adapter.fitBounds(e.map,!0)})),this.addDragEndEventListener(o,(t=>s.onDragEnd(e,t))),this.addDragStartEventListener(o,(t=>s.onDragStart(e,t))),s.shapes.set(e,o))),o}drawShape(t){const s=this,o=s.getMap(t);if(e.Utils.isNull(o))return;if(e.Utils.isNullOrEmpty(t)||t.hide)return void s.removeShape(t);const a=this.ensureShape(t,o);this.setShape(a,t),this.setEditable(a,t.editable),this.setDraggable(a,t.draggable)}};class PacemMapShapeElement extends MapRelevantElement{}__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Boolean})],PacemMapShapeElement.prototype,"draggable",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Boolean})],PacemMapShapeElement.prototype,"editable",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],PacemMapShapeElement.prototype,"stroke",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],PacemMapShapeElement.prototype,"fill",void 0),s.PacemMapShapeElement=PacemMapShapeElement;let c=class PacemMapPolylineElement extends PacemMapShapeElement{};__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],c.prototype,"vertices",void 0),c=__decorate([e.CustomElement({tagName:r.POLYLINE_SELECTOR})],c),s.PacemMapPolylineElement=c;let h=class PacemMapPolygonElement extends PacemMapShapeElement{};__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],h.prototype,"vertices",void 0),h=__decorate([e.CustomElement({tagName:r.POLYGON_SELECTOR})],h),s.PacemMapPolygonElement=h;let m=class PacemMapCircleElement extends PacemMapShapeElement{};__decorate([e.Watch({emit:!0,converter:s.LatLngConverter})],m.prototype,"center",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],m.prototype,"radius",void 0),m=__decorate([e.CustomElement({tagName:r.CIRCLE_SELECTOR})],m),s.PacemMapCircleElement=m;let g=class PacemMapElement extends t.PacemEventTarget{constructor(){super(...arguments),this.zoom=12,this.center=r.DEFAULT_COORDS,this.#y=LatLngBounds.Empty,this.scale=!0,this.mousewheel=!0,this.draggable=!0,this.doubleClickZoom=!0,this.keyboardShortcuts=!0,this.autofit=!0,this.paddingTop=0,this.paddingLeft=0,this.paddingRight=0,this.paddingBottom=0,this.tilt=0,this.heading=0,this._drawHandler=e=>{this._draw(e.target)},this._listenToActiveAdapter=t=>{const s=t.target;"active"===t.detail.propertyName&&t.detail.currentValue&&(s.removeEventListener(e.PropertyChangeEventName,this._listenToActiveAdapter,!1),this._switchAdapter(s))},this._initialized=!1,this._afterInit=(t,s)=>{for(var o of(this._initialized=!0,e.CustomElementUtils.findDescendants(this,(e=>e instanceof MapRelevantElement))))this._erase(o,s),this._draw(o);s&&s?.destroy(this)},this._resizeHandler=e=>{this.onResize(e)}}updateBounds(t){if(!LatLngBounds.equals(t,this.#y)){const s=this.#y,o=this.#y=t;this.dispatchEvent(new e.PropertyChangeEvent({propertyName:"bounds",oldValue:s,currentValue:o}))}}#y;get bounds(){return this.#y}get container(){return this._container}register(t){t.addEventListener(e.PropertyChangeEventName,this._drawHandler,!1),this._draw(t)}unregister(t){this._erase(t),t.removeEventListener(e.PropertyChangeEventName,this._drawHandler,!1)}_draw(e,t=this.adapter){this._initialized&&t&&t.drawItem(e)}_erase(e,t=this.adapter){this._initialized&&t&&t.removeItem(e)}_switchAdapter(t,s){t.active?t.initialize(this).then((e=>this._afterInit(e,s))):(s&&this._afterInit(null,s),t.addEventListener(e.PropertyChangeEventName,this._listenToActiveAdapter,!1))}viewActivatedCallback(){super.viewActivatedCallback(),this._setupContainer(),this.adapter&&this._switchAdapter(this.adapter)}propertyChangedCallback(t,s,o,a){if(super.propertyChangedCallback(t,s,o,a),"bounds"!==t)if("adapter"===t)e.Utils.isNull(this._container)||(this._initialized=!1,o?this._switchAdapter(o,s):s&&this._afterInit(null,s));else{switch(t){case"zoom":case"center":case"type":case"theme":case"tilt":case"heading":this.adapter&&this.adapter.setView(this,{type:this.type,tilt:this.tilt,heading:this.heading,zoom:this.zoom,center:this.center,theme:this.theme});break;case"autofit":o&&this.adapter&&this.adapter.fitBounds(this);break;case"target":s&&this._dismissContainer(s),o?(this._setupContainer(o),this._setupResizer()):this._dismissResizer()}this.adapter&&this.adapter.invalidateSize(this)}}_dismissContainer(t=this._container){"true"===t.dataset[n]?t.remove():e.Utils.removeClass(t,e.PCSS+"-map"),t===this._container&&(this._container=null)}_dismissResizer(){const e=this._resizer;e.removeEventListener("resize",this._resizeHandler,!1),e.remove(),this._resizer=null}_setupContainer(t=this.target){e.Utils.isNull(t)&&((t=document.createElement("div")).dataset[n]="true",this.insertAdjacentElement("afterend",t));const s=this._container=t;return e.Utils.addClass(s,e.PCSS+"-map"),s}_setupResizer(){const t=this._container;if(e.Utils.isNull(t))throw new Error("You must set up the map container before its resizing listener.");if(e.Utils.isNull(this._resizer)){const s=this._resizer=document.createElement(e.P+"-resize");s.addEventListener("resize",this._resizeHandler,!1),t.insertAdjacentElement("afterend",s)}return this._resizer.target=t,this._resizer}_detach(){e.Utils.isNull(this._container)||this._dismissContainer(),e.Utils.isNull(this._resizer)||this._dismissResizer()}disconnectedCallback(){this._detach(),super.disconnectedCallback()}onResize(e){this.adapter&&this.adapter.invalidateSize(this)}};__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Number})],g.prototype,"zoom",void 0),__decorate([e.Watch({emit:!0,converter:s.LatLngConverter})],g.prototype,"center",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],g.prototype,"type",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],g.prototype,"theme",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],g.prototype,"scale",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],g.prototype,"mousewheel",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],g.prototype,"zoomControl",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],g.prototype,"draggable",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],g.prototype,"doubleClickZoom",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],g.prototype,"keyboardShortcuts",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],g.prototype,"autofit",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],g.prototype,"paddingTop",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],g.prototype,"paddingLeft",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],g.prototype,"paddingRight",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],g.prototype,"paddingBottom",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],g.prototype,"adapter",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],g.prototype,"target",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],g.prototype,"tilt",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],g.prototype,"heading",void 0),g=__decorate([e.CustomElement({tagName:r.MAP_SELECTOR})],g),s.PacemMapElement=g}(t.Maps||(t.Maps={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){var s;const o="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.js",a="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.css";function r(e){return{city:e.municipality,state:e.countrySubdivision,province:e.countrySecondarySubdivision,village:e.municipalitySubdivision??e.localName,zipCode:e.postalCode,streetName:e.street??e.streetName,houseNumber:e.buildingNumber??e.streetNumber,countryCode:e.countryCode,country:e.country}}class AtlasMapUtils{static getPosition(e){return Array.isArray(e)&&(e={lat:e[0],lng:e[1]}),atlas.data.Position.fromLatLng(e)}static getBounds(t){if(e.Utils.isArray(t))return atlas.data.BoundingBox.fromPositions(t.map((e=>[e[1],e[0]])));const s=AtlasMapUtils.getPosition(t.ne),o=AtlasMapUtils.getPosition(t.sw);return atlas.data.BoundingBox.fromPositions([s,o])}static getLatLng(e){return{lat:e[1],lng:e[0]}}static getLatLngBounds(e){const t=atlas.data.BoundingBox.getNorthEast(e),s=atlas.data.BoundingBox.getSouthWest(e);return{ne:AtlasMapUtils.getLatLng(t),sw:AtlasMapUtils.getLatLng(s)}}static parseGeocoding(t){return e.Utils.isNullOrEmpty(t.results)?[]:t.results.map((e=>({fullAddress:e.address.freeformAddress,address:r(e.address),position:{lat:e.position.lat,lng:e.position.lon,altitude:null}})))}static parseReverseGeocoding(e,t){if(e.summary.numResults<1)return{fullAddress:"",address:{},position:null};const s=e.addresses[0],o=(t??s.position).split(",").map((e=>parseFloat(e))),a=s.address;return{fullAddress:a.freeformAddress,address:r(a),position:{lat:o[0],lng:o[1],altitude:o.length>2?o[2]:null}}}}class PacemAzureOverlayAdapter extends t.PacemOverlayAdapter{deleteOverlay(e,t){throw new Error("Method not implemented.")}buildOverlay(e,t){throw new Error("Method not implemented.")}setBounds(e,t,s){throw new Error("Method not implemented.")}updateOverlay(e,t,s){throw new Error("Method not implemented.")}}class PacemAzureLayerAdapter extends t.PacemLayerAdapter{addLoadEventListener(e,t,s){throw new Error("Method not implemented.")}removeLoadEventListener(e,t,s){throw new Error("Method not implemented.")}deleteLayer(e,t){throw new Error("Method not implemented.")}buildLayer(e,t){throw new Error("Method not implemented.")}}class PacemAzureMarkerAdapter extends t.PacemMarkerAdapter{getMarkerPosition(e){const t=e.getOptions().position;return AtlasMapUtils.getLatLng(t)}buildMarker(e,t){const s=new atlas.HtmlMarker;return t.markers.add(s),s.setOptions({popup:new atlas.Popup}),s}addClickEventListener(e,t,s){t.events.add("click",e,s)}addDragEventListener(e,t,s){t.events.add("drag",e,s)}addDragEndEventListener(e,t,s){t.events.add("dragend",e,s)}_setPopupPosition(t,s){const o=this._getPopup(t);e.Utils.isNull(o)||o.setOptions({position:s})}setPosition(e,t){const s=AtlasMapUtils.getPosition(t);e.setOptions({position:s}),this._setPopupPosition(e,s)}setIcon(t,s){let o={pixelOffset:[0,-36]},a={popup:new atlas.Popup},r=(e,t,s)=>`<img width="${t||"auto"}" height="${s||"auto"}" style="pointer-events: none" src="${e}" />`;if("string"==typeof s)a.htmlContent=r(s);else if(!e.Utils.isNull(s)){const e=s.size,t=s.anchor;a.htmlContent=r(s.url,e&&e.width,e&&e.height),t?(a.anchor="top-left",a.pixelOffset=[-t.x,-t.y],o.pixelOffset=[0,-t.y]):e&&e.height&&(o.pixelOffset=[0,-e.height/2])}a.popup.setOptions(o),t.setOptions(a)}setLabel(e,t){let s={text:t};e.setOptions(s)}setDraggable(e,t){let s={draggable:t};e.setOptions(s)}deleteMarker(e,t){t.markers.remove(e)}deleteInfoWindow(e,t){this._getPopup(e).remove()}closeInfo(e){const t=this._getPopup(e);!0===t?.isOpen()&&t.close()}openInfo(e,t,s,o){const{popup:a,position:r}=e.getOptions();this._setContent(a,t,r),o.togglePopup(),s.events.addOnce("close",a,(e=>{a.setOptions({content:""})}))}buildInfoWindow(e){return this.markers.get(e)}addCloseClickEventListener(e,t,s){const o=this._getPopup(e);t.events.add("close",o,s)}setContent(e,t){const{popup:s,position:o}=e.getOptions();this._setContent(s,t,o)}_getPopup(e){return e.getOptions().popup}_setContent(e,t,s){e.setOptions({content:`<div style="padding: 8px 24px 8px 8px;">${t}</div>`,position:s})}}class PacemAzureShapeAdapter extends t.PacemShapeAdapter{addDragStartEventListener(e,t){throw new Error("Method not implemented.")}deleteShape(e,t){throw new Error("Method not implemented.")}getShapeBounds(e){throw new Error("Method not implemented.")}getShapePosition(e){throw new Error("Method not implemented.")}buildShape(e,t){throw new Error("Method not implemented.")}addClickEventListener(e,t){throw new Error("Method not implemented.")}addDragEventListener(e,t){throw new Error("Method not implemented.")}addDragEndEventListener(e,t){throw new Error("Method not implemented.")}setShape(e,t){throw new Error("Method not implemented.")}setEditable(e,t){throw new Error("Method not implemented.")}setDraggable(e,t){throw new Error("Method not implemented.")}}class PacemAzureMapGeocoder{_buildGeocodeRequest(t,s,o=10,a=""){const r={"subscription-key":t,query:s,limit:""+o,language:a};return{uri:e.Utils.URIs.appendQuery("https://atlas.microsoft.com/search/address/json?api-version=1.0",r),options:{mode:"cors"}}}parseGeocodeResponse(e){return new Promise(((t,s)=>{e.json().then((e=>{const s=AtlasMapUtils.parseGeocoding(e);t(s)}),(e=>s(e)))}))}geocode(e,t,s=10,o=""){return new Promise(((a,r)=>{const n=this._buildGeocodeRequest(e,t,s,o);return fetch(n.uri,n.options).then((e=>{e.ok?this.parseGeocodeResponse(e).then(a,r):r(e)}),(e=>r(e)))}))}reverseGeocode(e,t,s=""){return new Promise(((o,a)=>{const r=this._buildReverseRequest(e,t,s);return fetch(r.uri,r.options).then((e=>{e.ok?this._parseReverseResponse(e).then(o,a):a(e)}),(e=>a(e)))}))}_buildReverseRequest(s,o,a=""){const r=t.MapUtils.parseCoords(o),n={"subscription-key":s,query:r[0]+","+r[1],language:a};return{uri:e.Utils.URIs.appendQuery("https://atlas.microsoft.com/search/address/reverse/json?api-version=1.0",n),options:{mode:"cors"}}}_parseReverseResponse(e){return new Promise(((t,s)=>{e.json().then((e=>{const s=AtlasMapUtils.parseReverseGeocoding(e);t([s])}),(e=>s(e)))}))}}const n=["moveend","dragend","zoomend","rotateend"];let i=s=class PacemAzureMapAdapterElement extends t.PacemMapAdapterElement{geocode(t,s){return(new PacemAzureMapGeocoder).geocode(this.subscriptionKey,t,s,e.Utils.lang(this))}reverseGeocode(t,s){return(new PacemAzureMapGeocoder).reverseGeocode(this.subscriptionKey,t,e.Utils.lang(this))}getBounds(e){const t=this.getMap(e),{bounds:s}=t.getCamera();return AtlasMapUtils.getLatLngBounds(s)}isActive(){return!e.Utils.isNullOrEmpty(this.subscriptionKey)}buildOverlayAdapterFor(e){return new PacemAzureOverlayAdapter(e,this)}buildMarkerAdapterFor(e){return new PacemAzureMarkerAdapter(e,this)}buildShapeAdapterFor(e){return new PacemAzureShapeAdapter(e,this)}buildLayerAdapterFor(e){return new PacemAzureLayerAdapter(e,this)}setViewNative(e,s){const o=this.getMap(e),a=function(e){const s=e.theme==t.MapColorScheme.DARK||e.theme!==t.MapColorScheme.LIGHT&&window.matchMedia("(prefers-color-scheme: dark)").matches;switch(e.type){case"satellite":case"satellite_road_labels":case"grayscale_dark":case"grayscale_light":case"night":case"road_shaded_relief":case"road":case"high_constrast_dark":case"high_constrast_light":return e.type;case t.MapType.HYBRID:return"satellite_road_labels";case t.MapType.SATELLITE:return"satellite";case t.MapType.TERRAIN:return"road_shaded_relief";case t.MapType.HIGH_CONTRAST:return s?"high_constrast_dark":"high_constrast_light";default:return s?"night":"road"}}(s);o.setStyle({style:a});const r=s.center&&AtlasMapUtils.getPosition(s.center)||o.getCamera().center,n=s.zoom||o.getCamera().zoom;o.setCamera({center:r,zoom:n})}#v=new WeakMap;snapshot(t,s="image/png",o){if(!this.hasMap(t))return Promise.reject();const{map:a}=this.tryGetMap(t);return new Promise(((r,n)=>{e.Utils.blobToDataURL(this.#_.get(t)).then((t=>{const n=a.getCanvasContainer();n.style.backgroundImage=`url(${t})`,n.style.backgroundSize="contain",e.Utils.snapshotElement(n,null,s,o).then(r)}))}))}#_=new WeakMap;dispose(e){if(!this.hasMap(e))return;const{map:t}=this.tryGetMap(e);this.#v.get(e).forEach((e=>{t.events.remove(e.eventName,e.handler)})),this.#v.delete(e),t.dispose()}async init(s){await Promise.all([e.CustomElementUtils.importjs(o),e.CustomElementUtils.importcss(a,void 0,!0)]);const r=s,i=r.scale,l=r.draggable,p=r.doubleClickZoom,d=r.keyboardShortcuts,c={center:AtlasMapUtils.getPosition(r.center),zoom:r.zoom,subscriptionKey:this.subscriptionKey,dragPanInteraction:l,scrollZoomInteraction:r.mousewheel,dblClickZoomInteraction:!p,keyboardInteraction:d,language:this.language||e.Utils.lang(s)},h=r.container,m=document.createElement("div");m.id=`azure-maps-${e.Utils.uniqueCode()}`,m.style.width="100%",m.style.height="100%",h.innerHTML="",h.appendChild(m);const g=new atlas.Map(m.id,c),u=[];return this.#v.set(r,u),n.forEach((e=>{const t=this._spinMapUpdateHandler(r,g);g.events.add(e,t),u.push({eventName:e,handler:t})})),i&&r.zoomControl&&g.events.addOnce("ready",(e=>{let t=atlas.ControlPosition.NonFixed;switch(r.zoomControl){case"topleft":t=atlas.ControlPosition.TopLeft;break;case"topright":t=atlas.ControlPosition.TopRight;break;case"bottomright":t=atlas.ControlPosition.BottomRight;break;case"bottomleft":t=atlas.ControlPosition.BottomLeft}g.controls.add(new atlas.control.ZoomControl,{position:t})})),g.events.add("idle",(e=>{g.getCanvas().toBlob((e=>{this.#_.set(s,e)}))})),g.events.addOnce("ready",(()=>{s.dispatchEvent(new t.MapEvent("maploaded"))})),{map:g,container:m}}invalidateSize(e){if(!this.hasMap(e))return;const{map:t}=this.tryGetMap(e);t&&t.resize()}propertyChangedCallback(t,s,o,a){if(super.propertyChangedCallback(t,s,o,a),!a&&"language"===t)for(let t of this.enrolledMaps()){const{map:s}=this.tryGetMap(t);s.setStyle({language:o||e.Utils.lang(t)})}}_spinMapUpdateHandler(e,t){return()=>{this._updateMap(e,t)}}_updateMap(t,s){if(!e.Utils.isNull(s)&&!e.Utils.isNull(t)){const e=s.getCamera(),o=e.center,a=e.zoom;1===e.zoom?console.warn("Azure Maps control lacks in reflecting the actual map zoom onto the camera property. Cannot reflect info back to PacemMapElement."):this.updateMapElement(t,AtlasMapUtils.getLatLng(o),a)}}static _getBounds(e){const t=e.paddingTop||0,s=e.paddingLeft||0,o=e.paddingRight||0;return{top:t,bottom:e.paddingBottom||0,left:s,right:o}}fitBoundsNative(e,t,o=s._getBounds(e)){this.getMap(e).setCamera({bounds:AtlasMapUtils.getBounds(t),padding:o})}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],i.prototype,"subscriptionKey",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],i.prototype,"language",void 0),__decorate([e.Debounce(500)],i.prototype,"_updateMap",null),i=s=__decorate([e.CustomElement({tagName:e.P+"-map-adapter-azure"})],i),t.PacemAzureMapAdapterElement=i}(t.Maps||(t.Maps={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(s){const o="geolocation_unavailable",a="position_unavailable",r="permission_denied",n="timeout",i="unknown_error";let l=class PacemMapGeolocateElement extends t.PacemEventTarget{constructor(){super(...arguments),this.permission="prompt",this.maximumAge=15e3,this.timeout=3e4,this.#r=!1,this._successCallback=e=>{this.permission="granted",this._setFetching(!1);const t={lat:e.coords.latitude,lng:e.coords.longitude,timestamp:e.timestamp,altitude:e.coords.altitude,heading:e.coords.heading,speed:e.coords.speed};this.position=t,this.dispatchEvent(new CustomEvent("success",{detail:t}))},this._errorCallback=e=>{this._setFetching(!1);const t="string"==typeof e?e:this._errToString(e);this.dispatchEvent(new CustomEvent("error",{detail:t}))}}_checkPermission(){return new Promise((t=>{const s=navigator.permissions;e.Utils.isNull(s)?t("prompt"):s.query({name:"geolocation"}).then((e=>{t(this.permission=e.state)}))}))}#r;get fetching(){return this.#r}_setFetching(t){t!==this.fetching&&(this.#r=t,this.dispatchEvent(new e.PropertyChangeEvent({propertyName:"fetching",currentValue:t,oldValue:!t})))}fetch(){this.disabled||(navigator.geolocation?this._checkPermission().then((e=>{this._setFetching(!0),navigator.geolocation.getCurrentPosition(this._successCallback,this._errorCallback,{enableHighAccuracy:!0,maximumAge:this.maximumAge})})):this._errorCallback(o))}viewActivatedCallback(){super.viewActivatedCallback(),this._checkPermission()}_errToString(e){switch(e.code){case GeolocationPositionError.PERMISSION_DENIED:return r;case GeolocationPositionError.POSITION_UNAVAILABLE:return a;case GeolocationPositionError.TIMEOUT:return n;default:return i}}};__decorate([e.Watch({emit:!0,converter:s.LatLngConverter})],l.prototype,"position",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.String})],l.prototype,"permission",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],l.prototype,"maximumAge",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],l.prototype,"timeout",void 0),l=__decorate([e.CustomElement({tagName:e.P+"-map-geolocate"})],l),s.PacemMapGeolocateElement=l}(t.Maps||(t.Maps={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){const s={DETACH_TIMEOUT:200,API_URI:"https://maps.googleapis.com/maps/api/js",MAX_ROADMAP_ZOOM:22,BOOTSTRAP_SNIPPET:(e,t,s,o)=>`(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=\`https://maps.\${c}apis.com/maps/api/js?\`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({\n key: "${e}", v: "${o}", language: "${t}", region: "${s}",\n // Add other bootstrap parameters as needed, using camel case.\n });`,MAPS_NOT_FOUND:"google.maps not found.",GEOCODER_UNAVAILABLE:"google.maps geocoder unavailable.",INVALID_KEY:"invalid google.maps api key.",TILE_EXTENT:[6378137*-Math.PI,6378137*Math.PI]};class Bootstrapper{#i;#L;_equivalent(t,s,o,a){const r=this.#L;return!e.Utils.isNull(r)&&r.key===t&&r.language===(s||r.language)&&r.region===(o||r.region)&&r.version===(a||r.version)}_spinFuture(e,t,s,o){return new Promise(((a,r)=>{this._equivalent(e,t,s,o)||Bootstrapper._ensureBootstrapScript(e,t,s,o),this.#L={language:t,region:s,version:o,key:e},google.maps.importLibrary("maps").then((e=>{a(),this.#i=null}),(e=>{r(e),this.#i=null}))}))}boostrap(t,o,a,r="weekly"){return e.Utils.isNullOrEmpty(t)?Promise.reject(s.INVALID_KEY):(!e.Utils.isNull(this.#i)&&this._equivalent(t,o,a,r)||(this.#i=this._spinFuture(t,o,a,r)),this.#i)}static _ensureBootstrapScript(t,o,a,r){const n="pacem-googlemaps",i=`v=${r},l=${o},r=${a}`;let l=document.querySelector(`script[${n}]`);if(!e.Utils.isNull(l)){if(l.getAttribute(n)===i)return;l.remove(),document.querySelectorAll("script[src^='https://maps.googleapis.com/maps']").forEach((e=>e.remove())),delete window.google}e.Utils.isNullOrEmpty(t)||(l=document.createElement("script"),l.setAttribute(n,i),l.textContent=s.BOOTSTRAP_SNIPPET(t,o,a,r),document.head.appendChild(l))}}const o=new Bootstrapper;class GMapsUtils{static getPosition(e){return Array.isArray(e)&&(e={lat:e[0],lng:e[1]}),e}static getBounds(t){return e.Utils.isNullOrEmpty(t)?null:{north:t.ne.lat,east:t.ne.lng,south:t.sw.lat,west:t.sw.lng}}static mapGeocodeResults(e,t=[]){const s=[];e??=[];for(let o=0;o<e.length;o++){const a=t.length>o?t[o]:null,r=GMapsUtils.mapGeocodeResult(e[o],a);s.push(r)}return s}static mapGeocodeResult(e,t){const s=e?.address_components||[],o=s.find((e=>e.types.indexOf("street_number")>=0))?.long_name,a=s.find((e=>e.types.indexOf("route")>=0))?.long_name,r=s.find((e=>e.types.indexOf("locality")>=0))?.long_name,n=s.find((e=>e.types.indexOf("administrative_area_level_3")>=0))?.long_name,i=s.find((e=>e.types.indexOf("administrative_area_level_2")>=0)),l=s.find((e=>e.types.indexOf("administrative_area_level_1")>=0))?.short_name,p=s.find((e=>e.types.indexOf("country")>=0)),d=s.find((e=>e.types.indexOf("postal_code")>=0))?.short_name,c={houseNumber:o,city:n||r,provinceCode:i?.short_name,province:i?.long_name,countryCode:p?.short_name,country:p?.long_name,zipCode:d,streetName:a,state:l,village:r,type:e.geometry.location_type};return{fullAddress:e.formatted_address,position:GMapsUtils.toLiteral(e.geometry.location,t?.elevation),address:c}}static toLiteral(t,s){if(e.Utils.isNull(t))return null;if("lat"in t&&"function"==typeof t.lat&&"lng"in t&&"function"==typeof t.lng)return{lat:t.lat(),lng:t.lng(),altitude:s};if("getNorthEast"in t&&"function"==typeof t.getNorthEast&&"getSouthWest"in t&&"function"==typeof t.getSouthWest){const e=t.getNorthEast(),s=t.getSouthWest();return{ne:GMapsUtils.toLiteral(e),sw:GMapsUtils.toLiteral(s)}}return"north"in t&&"number"==typeof t.north&&"south"in t&&"number"==typeof t.south&&"west"in t&&"number"==typeof t.west&&"east"in t&&"number"==typeof t.east?{ne:{lat:t.north,lng:t.east},sw:{lat:t.south,lng:t.west}}:e.Utils.extend({altitude:s},t)}static areEqual(t,s){if(e.Utils.isNull(t)||e.Utils.isNull(s))return!1;const o=GMapsUtils.toLiteral(t),a=GMapsUtils.toLiteral(s);return o.lat===a.lat&&o.lng===a.lng}static fitBounds(e,t,s){e?.fitBounds(t,s)}static setCenter(t,s){e.Utils.isNull(t)||GMapsUtils.areEqual(t.getCenter(),s)||t.panTo(s)}}class PacemGoogleShapeAdapter extends t.PacemShapeAdapter{getShapeBounds(e){const t=new google.maps.LatLngBounds;if(e instanceof google.maps.Circle){const s=e.getBounds();s&&(t.extend(s.getNorthEast()),t.extend(s.getSouthWest()))}else(e instanceof google.maps.Polygon||e instanceof google.maps.Polyline)&&e.getPath().forEach((e=>t.extend(e)));return!1!==t.isEmpty()?LatLngBounds.Empty:GMapsUtils.toLiteral(t)}deleteShape(e,t){e.setMap(null)}getShapePosition(e){return"latLng"in e?e.latLng:null}buildShape(e,s){const o=!0;return e instanceof t.PacemMapPolylineElement?new google.maps.Polyline({path:e.vertices,clickable:o,map:s}):e instanceof t.PacemMapPolygonElement?new google.maps.Polygon({paths:[e.vertices],clickable:o,map:s}):e instanceof t.PacemMapCircleElement?new google.maps.Circle({center:e.center,radius:e.radius,clickable:o,map:s}):null}addClickEventListener(e,t){e.addListener("click",t)}addDragEventListener(e,t){e.addListener("drag",t)}addDragStartEventListener(e,t){e.addListener("dragstart",t)}addDragEndEventListener(e,t){e.addListener("dragend",t)}setShape(e,s){if(s instanceof t.PacemMapPolylineElement){e.setOptions({strokeColor:s.stroke?.color,strokeOpacity:s.stroke?.alpha??1,strokeWeight:s.stroke?.thickness,path:s.vertices})}if(s instanceof t.PacemMapPolygonElement){e.setOptions({strokeColor:s.stroke?.color,strokeOpacity:s.stroke?.alpha??1,strokeWeight:s.stroke?.thickness,strokePosition:google.maps.StrokePosition.CENTER,fillColor:s.fill?.color,fillOpacity:s.fill?.alpha,paths:[s.vertices]})}if(s instanceof t.PacemMapCircleElement){e.setOptions({strokeColor:s.stroke?.color,strokeOpacity:s.stroke?.alpha??1,strokeWeight:s.stroke?.thickness,strokePosition:google.maps.StrokePosition.CENTER,fillColor:s.fill?.color,fillOpacity:s.fill?.alpha,center:s.center,radius:s.radius})}}setEditable(e,t){e.setOptions({editable:t})}setDraggable(e,t){e.setOptions({draggable:t})}}class PacemGoogleMarkerAdapter extends t.PacemMarkerAdapter{deleteInfoWindow(e,t){e.unbindAll()}deleteMarker(e,t){e.setMap(null)}get mapAutomaticallyScrollsOnDrag(){return!0}getMarkerPosition(e){const t=e.getPosition();return{lat:t.lat(),lng:t.lng()}}buildMarker(e,t){return new google.maps.Marker({position:e.position,map:t})}addClickEventListener(e,t,s){e.addListener("click",s)}addDragEventListener(e,t,s){e.addListener("drag",s)}addDragEndEventListener(e,t,s){e.addListener("dragend",s)}setPosition(e,t){e.setPosition(t)}setIcon(t,s){if("string"==typeof s)t.setIcon(s);else if(!e.Utils.isNull(s)){let o={url:s.url};e.Utils.isNullOrEmpty(s.size)||(o.size=new google.maps.Size(s.size.width,s.size.height),o.anchor=new google.maps.Point(s.size.width/2,s.size.height)),e.Utils.isNullOrEmpty(s.anchor)||(o.anchor=new google.maps.Point(s.anchor.x,s.anchor.y)),t.setIcon(o)}}setLabel(e,t){e.setLabel(t)}setDraggable(e,t){e.setDraggable(t)}closeInfo(e){e.close()}openInfo(e,t,s,o){e.open(s,o)}buildInfoWindow(t){let s=0;return"string"==typeof t.icon||e.Utils.isNull(t.icon)||(s=(t.icon.size?.width??0)/2-(t.icon.anchor?.x??0)),new google.maps.InfoWindow({pixelOffset:new google.maps.Size(-s,0)})}addCloseClickEventListener(e,t,s){e.addListener("closeclick",s)}setContent(e,t){e.setContent(t)}}class PacemGoogleLayerAdapter extends t.PacemLayerAdapter{addLoadEventListener(e,t,s){e.addListener("tilesloaded",s)}removeLoadEventListener(e,t,s){}deleteLayer(e,t){const s=t.overlayMapTypes.getArray().findIndex((t=>t===e));s>=0&&t.overlayMapTypes.removeAt(s)}_getBounds(e,t,o){const a=s.TILE_EXTENT;var r=2*a[1]/Math.pow(2,o),n=a[0]+e*r,i=a[0]+(e+1)*r;return[n,a[1]-(t+1)*r,i,a[1]-t*r]}_getWmsTileUrl(t,s){return(o,a)=>e.Utils.URIs.appendQuery(t,{service:"WMS",styles:"",transparent:"true",request:"GetMap",srs:"EPSG:3857",format:"image/png",version:"1.1.1",layers:s?.join(",")||"",width:"256",height:"256",bbox:this._getBounds(o.x,o.y,a).join(",")})}_getWmsLayer(e,t){const s=new google.maps.ImageMapType({getTileUrl:this._getWmsTileUrl(e.url,e.include),minZoom:e.minZoom,maxZoom:e.maxZoom,opacity:1});return t.overlayMapTypes.push(s),s}_getTmsTileUrl(e){return(t,s)=>{const o={r:"",s:(a=t,"abc"[Math.abs(a.x+a.y)%3]),x:""+t.x,y:""+t.y,z:""+s};var a;let r=e;for(let e in o)r=r.replaceAll("{"+e+"}",o[e]);return r}}_getTmsLayer(e,t){const s=new google.maps.ImageMapType({getTileUrl:this._getTmsTileUrl(e.url),minZoom:e.minZoom,maxZoom:e.maxZoom,opacity:1});return t.overlayMapTypes.push(s),s}buildLayer(e,t){switch((e.mode||"").toLowerCase()){case"wms":return this._getWmsLayer(e,t);case"tms":return this._getTmsLayer(e,t);default:throw new Error(`"${e.mode}" overlays not supported for the Google Maps integration.`)}}}class PacemGoogleOverlayAdapter extends t.PacemOverlayAdapter{updateOverlay(e,t,s){e.set,e.draw()}deleteOverlay(e,t){e.setMap(null)}buildOverlay(s,o){let a=function(s){class PacemGoogleOverlay extends google.maps.OverlayView{constructor(e){super(),this._item=e}get element(){return this._item}get bounds(){const t=this._item.bounds;return e.Utils.isNull(t)?null:GMapsUtils.getBounds(t)}getBoundingBox(){const t=this.getProjection(),s=this.bounds;if(e.Utils.isNullOrEmpty(s))return null;const o=t.fromLatLngToDivPixel({lat:s.south,lng:s.west}),a=t.fromLatLngToDivPixel({lat:s.north,lng:s.east});return{x:o.x,y:a.y,width:a.x-o.x,height:o.y-a.y}}}class PacemGoogleImageOverlay extends PacemGoogleOverlay{get src(){return this.element.src}#f;onAdd(){const e=this.#f=this.#f||document.createElement("div");e.style.position="absolute",this.getPanes().overlayLayer.appendChild(e)}onRemove(){const t=this.#f;e.Utils.isNull(t)||(t.remove(),this.#f=null)}draw(){const t=this.#f;if(e.Utils.isNull(t))return;const s=this.getBoundingBox();e.Utils.isNull(s)||(t.style.top=s.y+"px",t.style.left=s.x+"px",t.style.width=s.width+"px",t.style.height=s.height+"px",t.style.backgroundSize=`${s.width}px ${s.height}px`,t.style.backgroundImage=`url(${this.src})`)}}return s instanceof t.PacemMapOverlayImageElement?new PacemGoogleImageOverlay(s):null}(s);return a.setMap(o),a}setBounds(e,t,s){e.draw()}}const a=["dragend","zoom_changed","center_changed","maptypeid_changed","tilt_changed","heading_changed","bounds_changed"];e.Maps.LatLng;class LatLngBounds extends e.Maps.LatLngBounds{}function r(e){const s=e.theme==t.MapColorScheme.DARK?google.maps.ColorScheme.DARK:e.theme!=t.MapColorScheme.LIGHT?google.maps.ColorScheme.FOLLOW_SYSTEM:google.maps.ColorScheme.LIGHT;switch(e.type){case google.maps.MapTypeId.HYBRID:case google.maps.MapTypeId.ROADMAP:case google.maps.MapTypeId.TERRAIN:case google.maps.MapTypeId.SATELLITE:return{type:e.type,theme:s};case t.MapType.HYBRID:return{type:google.maps.MapTypeId.HYBRID,theme:s};case t.MapType.SATELLITE:return{type:google.maps.MapTypeId.SATELLITE,theme:s};case t.MapType.TERRAIN:return{type:google.maps.MapTypeId.TERRAIN,theme:s};default:return{type:google.maps.MapTypeId.ROADMAP,theme:s}}}let n=class PacemGoogleMapAdapterElement extends t.PacemMapAdapterElement{geocode(e,t){const s=this.language||"",o=this.region||"",a=this.version||"weekly";return new PacemGoogleMapGeocoder(this.apiKey,s,o,a).geocode(e,t)}reverseGeocode(e,t){const s=this.language||"",o=this.region||"",a=this.version||"weekly";return new PacemGoogleMapGeocoder(this.apiKey,s,o,a).reverseGeocode(e,t)}getBounds(e){if(!this.hasMap(e))return LatLngBounds.Empty;const t=this.getMap(e).getBounds();return GMapsUtils.toLiteral(t)}isActive(){return!e.Utils.isNullOrEmpty(this.apiKey)}buildMarkerAdapterFor(e){return new PacemGoogleMarkerAdapter(e,this)}buildOverlayAdapterFor(e){return new PacemGoogleOverlayAdapter(e,this)}buildShapeAdapterFor(e){return new PacemGoogleShapeAdapter(e,this)}buildLayerAdapterFor(e){return new PacemGoogleLayerAdapter(e,this)}getMaxAvailableZoom(e){return new Promise(((t,s)=>{(new google.maps.MaxZoomService).getMaxZoomAtLatLng(e,(e=>{e.status===google.maps.MaxZoomStatus.OK?t(e.zoom):s()}))}))}#v=new WeakMap;snapshot(t,s="image/png",o){const{container:a}=this.tryGetMap(t);return e.Utils.snapshotElement(a,null,s,o)}setViewNative(e,t){const o=this.getMap(e),{type:a,theme:n}=r(t);if(this.#E&&n!==o.get("colorScheme"))return void this._bootstrapDebounced();o.setOptions({colorScheme:n,mapTypeId:a}),"number"==typeof t.tilt&&o.setTilt(t.tilt),"number"==typeof t.heading&&o.setHeading(t.heading);const i=()=>{t.center&&GMapsUtils.setCenter(o,t.center)};if("number"==typeof t.zoom&&t.zoom!==o.getZoom()){switch(o.getMapTypeId()){case google.maps.MapTypeId.SATELLITE:case google.maps.MapTypeId.HYBRID:const e=GMapsUtils.toLiteral(o.getCenter());this.getMaxAvailableZoom(e).then((e=>{const s=Math.min(e,t.zoom);o.setZoom(s),i()}));break;default:const a=Math.min(s.MAX_ROADMAP_ZOOM,t.zoom);o.setZoom(a),i()}}else i()}propertyChangedCallback(e,t,s,o){if(super.propertyChangedCallback(e,t,s,o),!o)switch(e){case"libraries":case"apiKey":case"language":case"region":this.#E&&this._bootstrapDebounced();break;case"defaultOptions":for(let e of this.enrolledMaps())this._updateMapOptions(e);break;default:for(let e of this.enrolledMaps())this.invalidateSize(e)}}dispose(e){const t=this.#v.get(e);for(;t.length;)google.maps.event.removeListener(t.pop());this.#v.delete(e)}_updateMapOptions(e){if(!this.hasMap(e))return;const{map:t}=this.tryGetMap(e);t.setOptions(this._buildMapOptions(e))}_buildMapOptions(t){const s=t.scale,o=t.draggable,a=t.doubleClickZoom,n=t.keyboardShortcuts,{type:i,theme:l}=r({type:t.type,theme:t.theme});return e.Utils.extend({},this.defaultOptions||{streetViewControl:!1,zoomControl:!1,mapTypeControl:!1},{zoomControl:s&&!e.Utils.isNullOrEmpty(t.zoomControl),zoomControlOptions:{position:function(e){switch(e){case"topright":return google.maps.ControlPosition.RIGHT_TOP;case"bottomleft":return google.maps.ControlPosition.LEFT_BOTTOM;case"bottomright":return google.maps.ControlPosition.RIGHT_BOTTOM;default:return google.maps.ControlPosition.LEFT_TOP}}(t.zoomControl)},scrollwheel:t.mousewheel,disableDoubleClickZoom:a,keyboardShortcuts:n,draggable:o,mapTypeId:i,colorScheme:l,tilt:t.tilt,heading:t.heading})}#E=!1;_bootstrapDebounced(){this._bootstrap().then((e=>{for(let e of this.enrolledMaps())e.adapter=null,e.adapter=this}))}_bootstrap(){return new Promise(((e,t)=>{const s=this.apiKey,a=this.language||"",r=this.region||"",n=this.version||"weekly";o.boostrap(s,a,r,n).then((s=>{const o=[];for(let e of this.libraries||[])o.push(google.maps.importLibrary(e));Promise.all(o).then((t=>{e(),this.#E=!0}),t)}),t)}))}async init(e){await this._bootstrap();const s=e,o=t.MapUtils.parseCoords(s.center),r=new google.maps.LatLng(o[0],o[1]),n=this._buildMapOptions(s),i=s.container,l=document.createElement("div");l.style.width="100%",l.style.height="100%",i.innerHTML="",i.appendChild(l);const p=new google.maps.Map(l,n),d=[];this.#v.set(s,d),a.forEach((e=>{d.push(p.addListener(e,this._spinMapUpdateHandler(s,p)))})),p.setZoom(s.zoom),p.setCenter(r);var c=p.addListener("idle",(function(s){c.remove(),e.dispatchEvent(new t.MapEvent("maploaded"))}));const h=t.MapUtils.parseCoords(s.center),m=new google.maps.LatLng(h[0],h[1]);return p.setZoom(s.zoom),p.setCenter(m),{map:p,container:l}}invalidateSize(e){if(!this.hasMap(e))return;const{map:t}=this.tryGetMap(e);google.maps.event.trigger(t,"resize")}_spinMapUpdateHandler(t,s){return()=>{if(!e.Utils.isNull(s)&&!e.Utils.isNull(t)){const o=s.getCenter();if(e.Utils.isNull(o))return;this.updateMapElement(t,{center:{lat:o.lat(),lng:o.lng()},zoom:s.getZoom(),type:s.getMapTypeId(),tilt:s.getTilt(),heading:s.getHeading()})}}}fitBoundsNative(t,s,o=this._getPadding(t)){const a=this.tryGetMap(t)?.map;if(e.Utils.isNull(a))return;const r=GMapsUtils.getBounds(s);GMapsUtils.fitBounds(a,r,o)}_getPadding(e){const t=e.paddingTop||0,s=e.paddingLeft||0,o=e.paddingRight||0,a=e.paddingBottom||0;return s||t||o||a?{top:t,bottom:a,left:s,right:o}:null}_padBounds(e){const t=e.paddingTop||0,s=e.paddingLeft||0,o=e.paddingRight||0,a=e.paddingBottom||0;if(s||t||o||a){const r=this.tryGetMap(e).map,n=r.getBounds(),i=r.getDiv().clientWidth,l=r.getDiv().clientHeight,p=r.getProjection().fromPointToLatLng(new google.maps.Point(-s,-t)),d=r.getProjection().fromPointToLatLng(new google.maps.Point(i+o,l+a));n.extend(p),n.extend(d)}}_redrawMap(){}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],n.prototype,"apiKey",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],n.prototype,"version",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],n.prototype,"language",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],n.prototype,"region",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],n.prototype,"defaultOptions",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.StringArray})],n.prototype,"libraries",void 0),__decorate([e.Debounce(s.DETACH_TIMEOUT)],n.prototype,"_bootstrapDebounced",null),n=__decorate([e.CustomElement({tagName:e.P+"-map-adapter-google"})],n),t.PacemGoogleMapAdapterElement=n;class PacemGoogleMapGeocoder{constructor(e,t="",s="",o="weekly"){this.apiKey=e,this.language=t,this.region=s,this.version=o}_elevateResults(e){return new Promise(((t,s)=>{(new google.maps.ElevationService).getElevationForLocations({locations:e.map((e=>e.geometry.location))},((s,o)=>{if(o===google.maps.ElevationStatus.OK){const o=GMapsUtils.mapGeocodeResults(e,s);t(o)}else{const s=GMapsUtils.mapGeocodeResults(e);t(s)}}))}))}geocode(e,t=10){return new Promise(((s,a)=>{o.boostrap(this.apiKey,this.language||"",this.region||"",this.version||"weekly").then((o=>{(new google.maps.Geocoder).geocode({address:e},((e,o)=>{if(o===google.maps.GeocoderStatus.OK||o==google.maps.GeocoderStatus.ZERO_RESULTS){const o=(e||[]).filter(((e,s)=>s<(t||10)));this._elevateResults(o).then(s)}else a(o)}))}),a)}))}_reverseGeocodeInternal(e,t){const s=GMapsUtils.getPosition(e);return new Promise(((e,a)=>{o.boostrap(this.apiKey,this.language||"",this.region||"",this.version||"weekly").then((o=>{(new google.maps.Geocoder).geocode({location:s},((s,o)=>{if(o===google.maps.GeocoderStatus.OK||o==google.maps.GeocoderStatus.ZERO_RESULTS){const o=(s||[]).filter(((e,s)=>s<(t||10)));this._elevateResults(o).then(e)}else a(o)}))}),a)}))}reverseGeocode(e,t=1){return this._reverseGeocodeInternal(e,t)}}}(t.Maps||(t.Maps={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){const s="https://unpkg.com/leaflet@1.5.1/dist/leaflet.js",o="sha512-GffPMF3RvMeYyc1LWMHtK8EbPv0iNZ8/oTtHPx9/cc2ILxQ+u905qIwdpULaqDkyBKgOaB57QTMg7ztg8Jm2Og==",a="https://unpkg.com/leaflet@1.5.1/dist/leaflet.css",r="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ==";function n(e){return{fullAddress:e.display_name,address:(t=e.address,{city:t.city,state:t.state,provinceCode:t["ISO3166-2-lvl6"]?.split("-")[1],province:t.county,village:t.village,zipCode:t.postcode,streetName:t.road,houseNumber:t.house_number,countryCode:t.country_code?.toUpperCase(),country:t.country}),position:{lat:parseFloat(e.lat),lng:parseFloat(e.lon),altitude:null}};var t}class LeafletUtils{static toLiteral(e){return{ne:e.getNorthEast(),sw:e.getSouthWest()}}static parseGeocoding(t){return e.Utils.isNullOrEmpty(t)?[]:t.map(n)}static parseReverseGeocoding(t){return e.Utils.isNullOrEmpty(t)?[]:[n(t)]}}t.LayerLoadEventName="layerload";class LayerLoadEvent extends e.CustomTypedEvent{constructor(e){super(t.LayerLoadEventName,e,{bubbles:!0})}}class PacemLeafletMarkerAdapter extends t.PacemMarkerAdapter{deleteInfoWindow(e,t){e.unbindPopup()}deleteMarker(e,t){e.removeFrom(t)}getMarkerPosition(e){return e.getLatLng()}buildMarker(e,t){return L.marker(e.position).addTo(t)}addClickEventListener(e,t,s){e.on("click",s)}addDragEventListener(e,t,s){e.on("drag",s)}addDragEndEventListener(e,t,s){e.on("dragend",s)}setPosition(e,t){e.setLatLng(t)}setIcon(t,s){const o=this;if("string"==typeof s)o._setIcon(t,s);else if(!e.Utils.isNull(s)){let a={iconUrl:s.url};e.Utils.isNullOrEmpty(s.size)||e.Utils.extend(a,{iconSize:[s.size.width,s.size.height],iconAnchor:[s.size.width/2,s.size.height],popupAnchor:[0,-s.size.height]}),e.Utils.isNullOrEmpty(s.anchor)||e.Utils.extend(a,{iconAnchor:[s.anchor.x,s.anchor.y]}),o._setIcon(t,new L.Icon(a))}}setLabel(e,t){}setDraggable(e,t){!0===t?e.dragging.enable():e.dragging.disable()}closeInfo(e){e.closePopup()}openInfo(e,t,s,o){e.bindPopup(t).openPopup()}buildInfoWindow(e){return this.markers.get(e)}addCloseClickEventListener(e,t,s){e.on("popupclose",s)}setContent(e,t){const s=e.getPopup();s&&s.getContent()!=t&&e.setPopupContent(t)}_setIcon(e,t){if("string"==typeof t){var s,o,a,r={iconUrl:t};if((s=this.size)&&/[\d]+,[\d]+/.test(s)){var n=-1,i=[parseInt(s.substring(0,n=s.indexOf(","))),parseInt(s.substring(n+1))];Object.assign(r,{iconSize:i})}if((o=this.anchor)&&/[\d]+,[\d]+/.test(o)){n=-1;var l=[parseInt(o.substring(0,n=o.indexOf(","))),parseInt(o.substring(n+1))];Object.assign(r,{iconAnchor:l,popupAnchor:[0,-l[1]]})}if((a=this.popupAnchor)&&/[\d]+,[\d]+/.test(a)){n=-1,l=[parseInt(o.substring(0,n=o.indexOf(","))),parseInt(o.substring(n+1))];Object.assign(r,{popupAnchor:l})}e.setIcon(L.icon(r))}else t&&e.setIcon(t)}}class PacemLeafletShapeAdapter extends t.PacemShapeAdapter{addDragStartEventListener(e,t){throw new Error("Method not implemented.")}deleteShape(e,t){throw new Error("Method not implemented.")}getShapeBounds(e){throw new Error("Method not implemented.")}getShapePosition(e){throw new Error("Method not implemented.")}buildShape(e,t){throw new Error("Method not implemented.")}addClickEventListener(e,t){throw new Error("Method not implemented.")}addDragEventListener(e,t){throw new Error("Method not implemented.")}addDragEndEventListener(e,t){throw new Error("Method not implemented.")}setShape(e,t){throw new Error("Method not implemented.")}setEditable(e,t){throw new Error("Method not implemented.")}setDraggable(e,t){throw new Error("Method not implemented.")}}class PacemLeafletLayerAdapter extends t.PacemLayerAdapter{addLoadEventListener(e,t,s){e.on("load",s)}removeLoadEventListener(e,t,s){e.off("load",s)}deleteLayer(e,t){e.remove()}buildLayer(e,t){const s=(e.mode||"").toLowerCase();return"wms"===s?L.tileLayer.wms(e.url,{layers:(e.include||[]).join(","),minZoom:e.minZoom,maxZoom:e.maxZoom,transparent:!0,format:"image/png"}).addTo(t):L.tileLayer(e.url,{tms:"tms"===s,minZoom:e.minZoom,maxZoom:e.maxZoom}).addTo(t)}}class PacemLeafletOverlayAdapter extends t.PacemOverlayAdapter{deleteOverlay(e,t){throw new Error("Method not implemented.")}buildOverlay(e,t){throw new Error("Method not implemented.")}setBounds(e,t,s){throw new Error("Method not implemented.")}updateOverlay(e,t,s){throw new Error("Method not implemented.")}}let i=class PacemLeafletMapAdapterElement extends t.PacemMapAdapterElement{constructor(){super(...arguments),this.#M=new WeakMap,this.tiles="//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",this.attribution='Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors',this._tileLayerLoadHandler=e=>{this.dispatchLayerLoadEvent(e.sourceTarget)},this._mapUpdateHandler=t=>{const s=this.getMap(t);e.Utils.isNull(s)||e.Utils.isNull(t)||this.updateMapElement(t,s.getCenter(),s.getZoom())}}buildOverlayAdapterFor(e){return new PacemLeafletOverlayAdapter(e,this)}geocode(t,s){return(new PacemNominatimMapGeocoder).geocode(t,s,e.Utils.lang(this))}reverseGeocode(t,s){return(new PacemNominatimMapGeocoder).reverseGeocode(t,e.Utils.lang(this))}getBounds(e){const t=this.getMap(e).getBounds();return LeafletUtils.toLiteral(t)}isActive(){return!0}setViewNative(e,t){const s=this.getMap(e);t.center?s.setView(t.center,t.zoom??s.getZoom(),{animate:!0}):"number"==typeof t.zoom&&s.setZoom(t.zoom,{animate:!0})}buildMarkerAdapterFor(e){return new PacemLeafletMarkerAdapter(e,this)}buildShapeAdapterFor(e){return new PacemLeafletShapeAdapter(e,this)}buildLayerAdapterFor(e){return new PacemLeafletLayerAdapter(e,this)}#M;snapshot(t,s="image/png",o){return e.Utils.snapshotElement(t.container.firstElementChild,null,s,o)}propertyChangedCallback(e,t,s,o){if(super.propertyChangedCallback(e,t,s,o),"tiles"===e)for(let e of this.enrolledMaps())this._redrawMap(e);for(let e of this.enrolledMaps())this.invalidateSize(e)}dispose(e){const{map:t}=this.tryGetMap(e),s=this.#M.get(e);s&&s.off("load",this._tileLayerLoadHandler),t.clearAllEventListeners(),this.#M.delete(e)}async init(n){await Promise.all([e.CustomElementUtils.importjs(s,o,!0),e.CustomElementUtils.importcss(a,r,!0)]);const i=n;var l=i.scale,p=i.draggable,d=i.doubleClickZoom,c=i.keyboardShortcuts,h=L.latLng(t.MapUtils.parseCoords(i.center)),m={zoomControl:l&&!e.Utils.isNullOrEmpty(i.zoomControl),scrollWheelZoom:i.mousewheel,dragging:p,doubleClickZoom:!d,keyboard:c};const g=i.container,u=document.createElement("div");u.style.width="100%",u.style.height="100%",g.innerHTML="",g.appendChild(u);const y=L.map(u,m);["zoomend","moveend"].forEach((e=>{y.on(e,(e=>{this._idleFiller(i),this._mapUpdateHandler(i)}))})),y.on("load",(()=>{l&&i.zoomControl&&y.zoomControl.setPosition(i.zoomControl),this._idleFiller(i)}));const v=L.tileLayer(this.tiles,{attribution:this.attribution}).addTo(y);v.on("load",this._tileLayerLoadHandler),this.#M.set(i,v),y.setView(h,i.zoom),y.once("idle",(function(){y.fire("resize"),n.dispatchEvent(new t.MapEvent("maploaded"))}));const _=t.MapUtils.parseCoords(i.center),f=[_[0],_[1]];return y.setView(f,i.zoom),{map:y,container:u}}dispatchLayerLoadEvent(e){this.dispatchEvent(new LayerLoadEvent(e))}invalidateSize(e){if(this.hasMap(e)){this.getMap(e).invalidateSize()}}_idleFiller(e){if(this.hasMap(e)){this.getMap(e).fire("idle")}}fitBoundsNative(e,t,s={top:e.paddingTop||0,left:e.paddingLeft||0,right:e.paddingRight||0,bottom:e.paddingBottom||0}){const o=this.getMap(e),a={paddingTopLeft:new L.Point(s.left,s.top),paddingBottomRight:new L.Point(s.right,s.bottom)},r=t.ne,n=t.sw;try{o.fitBounds([[r.lat,r.lng],[n.lat,n.lng]],a)}catch(e){throw e}}_redrawMap(t){var s=this,o=s.#M.get(t);e.Utils.isNull(s.tiles&&o)||o.setUrl(s.tiles)}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],i.prototype,"tiles",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],i.prototype,"attribution",void 0),__decorate([e.Debounce(500)],i.prototype,"_idleFiller",null),i=__decorate([e.CustomElement({tagName:e.P+"-map-adapter-leaflet"})],i),t.PacemLeafletMapAdapterElement=i;class PacemNominatimMapGeocoder{_buildGeocodeRequest(t,s=10,o=""){const a={q:t,limit:""+s,"accept-language":o};return{uri:e.Utils.URIs.appendQuery("https://nominatim.openstreetmap.org/search?addressdetails=1&format=json",a),options:{mode:"cors"}}}parseGeocodeResponse(e){return new Promise(((t,s)=>{e.json().then((e=>{const s=LeafletUtils.parseGeocoding(e);t(s)}),(e=>s(e)))}))}geocode(e,t=10,s=""){return new Promise(((o,a)=>{const r=this._buildGeocodeRequest(e,t,s);return fetch(r.uri,r.options).then((e=>{e.ok?this.parseGeocodeResponse(e).then(o,a):a(e)}),(e=>a(e)))}))}reverseGeocode(e,t=""){return new Promise(((s,o)=>{const a=this._buildReverseRequest(e,t);return fetch(a.uri,a.options).then((e=>{e.ok?this._parseReverseResponse(e).then(s,o):o(e)}),(e=>o(e)))}))}_buildReverseRequest(s,o=""){const a=t.MapUtils.parseCoords(s),r={lat:""+a[0],lon:""+a[1],"accept-language":o};return{uri:e.Utils.URIs.appendQuery("https://nominatim.openstreetmap.org/reverse?addressdetails=1&format=json",r),options:{mode:"cors"}}}_parseReverseResponse(e){return new Promise(((t,s)=>{e.json().then((e=>{const s=LeafletUtils.parseReverseGeocoding(e);t(s)}),(e=>s(e)))}))}}}(t.Maps||(t.Maps={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={}));
|
package/dist/js/pacem-media.d.ts
CHANGED
package/dist/js/pacem-media.js
CHANGED
package/dist/js/pacem-plus.d.ts
CHANGED
package/dist/js/pacem-plus.js
CHANGED
package/dist/js/pacem-ui.d.ts
CHANGED
package/dist/js/pacem-ui.js
CHANGED
package/dist/js/pacem-ui.min.js
CHANGED
package/package.json
CHANGED