@pacem/pacem 1.0.0-abel → 1.0.0-amaldi
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/browser/pacem-2d.js +3 -3
- package/dist/browser/pacem-2d.js.map +0 -5
- package/dist/browser/pacem-2d.min.js +3 -3
- package/dist/browser/pacem-2d.min.js.map +0 -5
- package/dist/browser/pacem-3d.js +341 -341
- package/dist/browser/pacem-3d.js.map +1 -6
- package/dist/browser/pacem-3d.min.js +3 -3
- package/dist/browser/pacem-3d.min.js.map +1 -6
- package/dist/browser/pacem-charts.js +3 -3
- package/dist/browser/pacem-charts.js.map +0 -5
- package/dist/browser/pacem-charts.min.js +3 -3
- package/dist/browser/pacem-charts.min.js.map +0 -5
- package/dist/browser/pacem-cms.js +107 -107
- package/dist/browser/pacem-cms.js.map +1 -6
- package/dist/browser/pacem-cms.min.js +3 -3
- package/dist/browser/pacem-cms.min.js.map +1 -6
- package/dist/browser/pacem-core.js +21 -7
- package/dist/browser/pacem-core.js.map +1 -6
- package/dist/browser/pacem-core.min.js +4 -4
- package/dist/browser/pacem-core.min.js.map +1 -6
- package/dist/browser/pacem-foundation.js +3 -3
- package/dist/browser/pacem-foundation.js.map +0 -5
- package/dist/browser/pacem-foundation.min.js +3 -3
- package/dist/browser/pacem-foundation.min.js.map +0 -5
- package/dist/browser/pacem-fx.js +19 -19
- package/dist/browser/pacem-fx.js.map +1 -6
- package/dist/browser/pacem-fx.min.js +3 -3
- package/dist/browser/pacem-fx.min.js.map +1 -6
- package/dist/browser/pacem-logging.js +3 -3
- package/dist/browser/pacem-logging.js.map +0 -5
- package/dist/browser/pacem-logging.min.js +3 -3
- package/dist/browser/pacem-logging.min.js.map +0 -5
- package/dist/browser/pacem-maps.js +3 -3
- package/dist/browser/pacem-maps.js.map +0 -5
- package/dist/browser/pacem-maps.min.js +3 -3
- package/dist/browser/pacem-maps.min.js.map +0 -5
- package/dist/browser/pacem-media.js +3 -3
- package/dist/browser/pacem-media.js.map +0 -5
- package/dist/browser/pacem-media.min.js +3 -3
- package/dist/browser/pacem-media.min.js.map +0 -5
- package/dist/browser/pacem-networking.js +3 -3
- package/dist/browser/pacem-networking.js.map +0 -5
- package/dist/browser/pacem-networking.min.js +3 -3
- package/dist/browser/pacem-networking.min.js.map +0 -5
- package/dist/browser/pacem-numerical.js +3 -3
- package/dist/browser/pacem-numerical.js.map +0 -5
- package/dist/browser/pacem-numerical.min.js +3 -3
- package/dist/browser/pacem-numerical.min.js.map +0 -5
- package/dist/browser/pacem-plus.js +77 -77
- package/dist/browser/pacem-plus.js.map +1 -6
- package/dist/browser/pacem-plus.min.js +3 -3
- package/dist/browser/pacem-plus.min.js.map +1 -6
- package/dist/browser/pacem-scaffolding.js +11 -8
- package/dist/browser/pacem-scaffolding.js.map +1 -6
- package/dist/browser/pacem-scaffolding.min.js +4 -4
- package/dist/browser/pacem-scaffolding.min.js.map +1 -6
- package/dist/browser/pacem-ui.js +37 -26
- package/dist/browser/pacem-ui.js.map +1 -6
- package/dist/browser/pacem-ui.min.js +4 -4
- package/dist/browser/pacem-ui.min.js.map +1 -6
- package/dist/bundle/pacem.min.mjs +40 -38
- package/dist/bundle/pacem.mjs +58 -32
- package/dist/bundle/pacem.mjs.map +2 -7
- package/dist/typings/index.d.ts +5 -3
- package/dist/vscode.html-custom.json +4834 -0
- package/package.json +9 -8
|
@@ -1,6 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @pacem/pacem v1.0.0-abel (https://js.pacem.it)
|
|
3
|
-
* Copyright 2026 Pacem (https://pacem.it)
|
|
4
|
-
* Licensed under Apache-2.0
|
|
5
|
-
*/
|
|
6
1
|
{"version":3,"file":"pacem-maps.min.js","sources":["../esm/types.js","../esm/types-components.js","../esm/geolocate.js","../esm/azure.js","../esm/leaflet.js","../esm/google.js","../esm/index-iife.js"],"sourcesContent":["var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Transformer } from '@pacem/pacem-core';\n;\nconst EMPTY_LATLNG = { lat: Number.NaN, lng: Number.NaN };\nexport class LatLng {\n static get Empty() {\n return EMPTY_LATLNG;\n }\n static isEmpty(l) {\n return l === EMPTY_LATLNG || (isNaN(l.lat) && isNaN(l.lng));\n }\n static isLatLng(obj) {\n return 'lat' in obj && typeof obj.lat === 'number'\n && 'lng' in obj && typeof obj.lng == 'number';\n }\n static translate(start, delta) {\n // TODO: handle 'EDGE' cases!\n return { lat: start.lat + delta.lat, lng: start.lng + delta.lng };\n }\n static equals(a, b) {\n return a === b || (a.lat === b.lat && a.lng === b.lng);\n }\n}\nconst EMPTY_LATLNG_BOUNDS = { ne: LatLng.Empty, sw: LatLng.Empty };\n;\nexport class LatLngBounds {\n static get Empty() {\n return EMPTY_LATLNG_BOUNDS;\n }\n static isEmpty(bnds) {\n return bnds === EMPTY_LATLNG_BOUNDS || (LatLng.isEmpty(bnds.ne) && LatLng.isEmpty(bnds.sw));\n }\n static isPoint(bnds) {\n return !this.isEmpty(bnds) && (bnds.ne === bnds.sw || (bnds.ne.lat === bnds.sw.lat && bnds.ne.lng === bnds.sw.lng));\n }\n static isLatLngBounds(obj) {\n return typeof obj === 'object'\n && 'ne' in obj && LatLng.isLatLng(obj.ne)\n && 'sw' in obj && LatLng.isLatLng(obj.sw);\n }\n static union(a, b) {\n if (LatLngBounds.isEmpty(a)) {\n if (LatLngBounds.isLatLngBounds(b)) {\n return b;\n }\n return { ne: b, sw: b };\n }\n if (LatLngBounds.isLatLngBounds(b)) {\n if (LatLngBounds.isEmpty(b)) {\n return a;\n }\n // TODO: handle 'EDGE' cases!\n const north = Math.max(a.ne.lat, b.ne.lat), east = Math.max(a.ne.lng, b.ne.lng), south = Math.min(a.sw.lat, b.sw.lat), west = Math.min(a.sw.lng, b.sw.lng);\n return { ne: { lat: north, lng: east }, sw: { lat: south, lng: west } };\n }\n if (LatLng.isLatLng(b)) {\n if (LatLng.isEmpty(b)) {\n return a;\n }\n const north = Math.max(a.ne.lat, b.lat), east = Math.max(a.ne.lng, b.lng), south = Math.min(a.sw.lat, b.lat), west = Math.min(a.sw.lng, b.lng);\n return { ne: { lat: north, lng: east }, sw: { lat: south, lng: west } };\n }\n return a;\n }\n static equals(a, b) {\n return a === b || (LatLng.equals(a.ne, b.ne) && LatLng.equals(a.sw, b.sw));\n }\n}\nconst MapProjectionConsts = {\n SIZE: 256, // fast for computation\n RAD: Math.PI / 180,\n DEG: 180 / Math.PI,\n EPSILON: 1E-15,\n SIN_LIMIT: 1 - 1E-15,\n EARTH_RADIUS: 6_378_137,\n};\nconst _MapConsts = {\n TRANSFORMERS_NS: 'maps',\n //DEFAULT_COORDS: { lat: 44.714188025077984, lng: 10.296516444873811 }\n};\nexport class MapProjection {\n constructor(_pixelSize, _bounds, _normalizedSize = MapProjectionConsts.SIZE) {\n this._pixelSize = _pixelSize;\n this._bounds = _bounds;\n this._normalizedSize = _normalizedSize;\n const hSize = _normalizedSize / 2;\n this.#center = { x: hSize, y: hSize };\n this.#sizerad = _normalizedSize / 360.0;\n this.#sizedeg = hSize / Math.PI;\n this.#bottomLeft = this._latLngToWorldNormalizedPoint(_bounds.sw);\n this.#topRight = this._latLngToWorldNormalizedPoint(_bounds.ne);\n }\n #center;\n #bottomLeft;\n #topRight;\n #sizerad;\n #sizedeg;\n _latLngToWorldNormalizedPoint(latLng) {\n const x = this.#center.x + latLng.lng * this.#sizedeg;\n const latRad = latLng.lat * MapProjectionConsts.RAD;\n const limit = MapProjectionConsts.SIN_LIMIT;\n const sin = Math.sin(latRad).clamp(-limit, limit);\n const y = this.#center.y + .5 * Math.log((1 + sin) / (1 - sin)) * (-this.#sizerad);\n return { x, y };\n }\n _worldNormalizedPointToLatLng(point) {\n const lat = MapProjectionConsts.DEG * (2 * Math.atan(Math.exp((point.y - this.#center.y) / -this.#sizerad)) - Math.PI / 2);\n const lng = (point.x - this.#center.x) / this.#sizedeg;\n return { lat, lng };\n }\n _latLngToPoint(latLng) {\n const topRight = this.#topRight, bottomLeft = this.#bottomLeft, deltaLat = -topRight.y + bottomLeft.y, deltaLng = topRight.x - bottomLeft.x, target = this._latLngToWorldNormalizedPoint(latLng);\n const { width, height } = this._pixelSize;\n const x = (target.x - bottomLeft.x) * (width / deltaLng);\n const y = (target.y - topRight.y) * (height / deltaLat);\n return { x, y };\n }\n _pointToLatLng(point) {\n const topRight = this.#topRight, bottomLeft = this.#bottomLeft, deltaLat = -topRight.y + bottomLeft.y, deltaLng = topRight.x - bottomLeft.x;\n const { width, height } = this._pixelSize;\n // to normalized x\n const x = point.x / (width / deltaLng) + this.#bottomLeft.x;\n // to normalized y\n const y = point.y / (height / deltaLat) + this.#topRight.y;\n return this._worldNormalizedPointToLatLng({ x, y });\n }\n static _haversine(from, to) {\n const degToRad = MapProjectionConsts.RAD, lambda1 = from.lng * degToRad, lambda2 = to.lng * degToRad, phi1 = from.lat * degToRad, phi2 = to.lat * degToRad;\n return 2 * Math.asin(Math.sqrt(Math.pow(Math.sin((phi1 - phi2) / 2), 2) + Math.cos(phi1) * Math.cos(phi2) * Math.pow(Math.sin((lambda1 - lambda2) / 2), 2)));\n }\n /**\n * Computes a new LatLng by moving from a start position by a distance vector\n * expressed in meters along north (dNorth) and east (dEast), on a spherical Earth.\n * @param dEast Distance 'right' in meters.\n * @param dNorth Distance 'up' in meters.\n * @param start Start position.\n * @param radius Planet radius in meters.\n */\n static _offsetByMeters(start, dNorth, dEast, radius) {\n const { RAD: deg2Rad, DEG: rad2Deg } = MapProjectionConsts;\n // convert start lat/lng to radians\n const lat1 = start.lat * deg2Rad;\n const lng1 = start.lng * deg2Rad;\n // angular distance in radians\n const dLat = dNorth / radius;\n const dLng = dEast / (radius * Math.cos(lat1));\n const lat2 = lat1 + dLat;\n const lng2 = lng1 + dLng;\n return {\n lat: lat2 * rad2Deg,\n lng: lng2 * rad2Deg\n };\n }\n /**\n * Returns the position obtained by moving a geographic point by the specified amount (in meters) north and east.\n * @param start Starting position.\n * @param north Distance 'north' in meters.\n * @param east Distance 'east' in meters.\n * @param r Planet radius in meters (default is Earth's radius).\n * @returns New position after moving north and east by the specified distances.\n */\n static offsetBy(start, north, east, r = MapProjectionConsts.EARTH_RADIUS) {\n return MapProjection._offsetByMeters(start, north, east, r);\n }\n /**\n * Distance in meters between two locations.\n * @param from First location.\n * @param to Second location.\n */\n static distanceBetween(from, to, r = MapProjectionConsts.EARTH_RADIUS) {\n return MapProjection._haversine(from, to) * r;\n }\n static latLngToPoint(latLng, bounds, size) {\n return new MapProjection(size, bounds)._latLngToPoint(latLng);\n }\n static pointToLatLng(point, size, bounds) {\n return new MapProjection(size, bounds)._pointToLatLng(point);\n }\n}\n__decorate([\n Transformer(_MapConsts.TRANSFORMERS_NS + \".\")\n], MapProjection, \"offsetBy\", null);\n__decorate([\n Transformer(_MapConsts.TRANSFORMERS_NS + \".\")\n], MapProjection, \"distanceBetween\", null);\n__decorate([\n Transformer(_MapConsts.TRANSFORMERS_NS + \".\")\n], MapProjection, \"latLngToPoint\", null);\n__decorate([\n Transformer(_MapConsts.TRANSFORMERS_NS + \".\")\n], MapProjection, \"pointToLatLng\", null);\n// }\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, PCSS, CustomElement, Watch, Utils, PropertyConverters, CustomTypedEvent, PropertyChangeEvent, CustomElementUtils, Debounce, PropertyChangeEventName, PacemEventTarget } from '@pacem/pacem-core';\nimport { LatLng, LatLngBounds } from './types';\n// namespace Pacem.Components.Maps {\nexport var MapType;\n(function (MapType) {\n MapType[\"ROAD\"] = \"road\";\n MapType[\"SATELLITE\"] = \"satellite\";\n MapType[\"HYBRID\"] = \"hybrid\";\n MapType[\"TERRAIN\"] = \"terrain\";\n MapType[\"HIGH_CONTRAST\"] = \"high_contrast\";\n})(MapType || (MapType = {}));\nexport var MapColorScheme;\n(function (MapColorScheme) {\n MapColorScheme[\"LIGHT\"] = \"light\";\n MapColorScheme[\"DARK\"] = \"dark\";\n MapColorScheme[\"SYSTEM\"] = \"system\";\n})(MapColorScheme || (MapColorScheme = {}));\nconst MapConstsInternal = {\n MAP_SELECTOR: P + '-map',\n LINK_SELECTOR: P + '-map-link',\n MARKER_SELECTOR: P + '-map-marker',\n POLYLINE_SELECTOR: P + '-map-polyline',\n CIRCLE_SELECTOR: P + '-map-circle',\n POLYGON_SELECTOR: P + '-map-polygon',\n RECTANGLE_SELECTOR: P + '-map-rectangle',\n LAYER_SELECTOR: P + '-map-layer',\n OVERLAY_IMAGE_SELECTOR: P + '-map-overlay-image',\n OVERLAY_PANEL_SELECTOR: P + '-map-overlay-panel',\n GEOCODER_SELECTOR: P + '-map-geocode',\n DEFAULT_COORDS: { lat: 44.714188025077984, lng: 10.296516444873811 }\n};\nexport const MapConsts = {\n DEFAULT_COORDS: MapConstsInternal.DEFAULT_COORDS\n};\n/** @deprecated */\nexport function isLatLng(obj) {\n return LatLng.isLatLng(obj);\n}\n/** @deprecated */\nexport function isLatLngBounds(obj) {\n return LatLngBounds.isLatLngBounds(obj);\n}\nconst DEFAULT_MAPTARGET_KEY = 'defaultMapTarget';\nexport const LatLngConverter = {\n convert: attr => {\n const arr = /^\\s*([+\\-\\d\\.]+)\\s*,?\\s*([+\\-\\d\\.]+)\\s*$/.exec(attr);\n if (arr && arr.length > 2) {\n return { lat: parseFloat(arr[1]), lng: parseFloat(arr[2]) };\n }\n return JSON.parse(attr);\n },\n convertBack: prop => JSON.stringify(prop)\n};\nexport const LatLngBoundsConverter = {\n convert: attr => {\n const arr = /^\\s*([+\\-\\d\\.]+)\\s*,?\\s*([+\\-\\d\\.]+)\\s*,?\\s*([+\\-\\d\\.]+)\\s*,?\\s*([+\\-\\d\\.]+)\\s*$/.exec(attr);\n if (arr && arr.length > 4) {\n return {\n sw: { lat: parseFloat(arr[3]), lng: parseFloat(arr[4]) },\n ne: { lat: parseFloat(arr[1]), lng: parseFloat(arr[2]) }\n };\n }\n return JSON.parse(attr);\n },\n convertBack: prop => JSON.stringify(prop)\n};\nexport class MapUtils {\n static parseCoords(input) {\n if (input && !isNaN(input['lat']) && !isNaN(input['lng']))\n return [input['lat'], input['lng']];\n else if (Utils.isArray(input) && input.length > 1)\n return [input[0], input[1]];\n else if (/^\\s*(\\+|-)?[\\d]+(.[\\d]+)?\\s*,\\s*(\\+|-)?[\\d]+(.[\\d]+)?\\s*$/.test(input)) {\n var splitted = input.split(',');\n return [parseFloat(splitted[0]), parseFloat(splitted[1])];\n }\n return [MapConstsInternal.DEFAULT_COORDS.lat, MapConstsInternal.DEFAULT_COORDS.lng];\n }\n static expandBounds(bnds, latLng) {\n if (latLng) {\n if (!Array.isArray(latLng)) {\n latLng = [latLng.lat, latLng.lng];\n }\n bnds.push(latLng);\n }\n }\n static isContentEmpty(element) {\n return element.children.length == 0;\n }\n}\n;\nexport class MapRelevantElement extends PacemEventTarget {\n get map() {\n return this['_map'] = this['_map'] || CustomElementUtils.findAncestorOfType(this, PacemMapElement);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first && name === 'hide') {\n const map = this.map;\n map?.adapter?.fitBounds(map, true);\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.map && this.map.register(this);\n }\n disconnectedCallback() {\n this.map && this.map.unregister(this);\n super.disconnectedCallback();\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], MapRelevantElement.prototype, \"hide\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], MapRelevantElement.prototype, \"inactive\", void 0);\nexport class MapEvent extends CustomTypedEvent {\n constructor(type, args) {\n super(type, args);\n }\n}\nlet PacemMapGeocodeElement = class PacemMapGeocodeElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this.debounce = 1000;\n this.#fetching = false;\n }\n #fetching;\n #handle;\n #promise;\n get fetching() {\n return this.#fetching;\n }\n _guards() {\n // if nothing changed return the current results\n const results = this.results;\n if (!Utils.isNullOrEmpty(results)) {\n const result = results[0];\n if (!Utils.isNull(this.position) && LatLng.equals(this.position, result.position) && this.search === result.fullAddress) {\n return Promise.resolve(results);\n }\n }\n // if adapter is not available then return an empty array\n const adapter = this.adapter;\n if (Utils.isNull(adapter) || adapter.disabled || !adapter.active) {\n return Promise.resolve([]);\n }\n // ok to fetch for new results\n return null;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'search':\n this.geocode(val);\n break;\n case 'position':\n this.reverseGeocode(val);\n break;\n case 'results':\n if (Utils.isNullOrEmpty(val)) {\n this.search = '';\n this.position = null;\n }\n else {\n const r = val[0];\n this.search = r.fullAddress;\n this.position = r.position;\n }\n break;\n }\n }\n _broadcastFetchingUpdate(f) {\n if (f !== this.#fetching) {\n this.#fetching = f;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'fetching', oldValue: !f, currentValue: f }));\n }\n }\n _fetch(wrapper) {\n const { promise, search, position, key } = wrapper;\n const current = this.#promise;\n // check for equivalence\n if (!Utils.isNull(current)\n && LatLng.equals(current.position, position)\n && (current.search || '') === (search || '')) {\n return;\n }\n // update scope vars\n this.#promise = { key, promise, position, search };\n // green light\n this._broadcastFetchingUpdate(true);\n promise.then(r => {\n if (key === this.#promise.key) {\n this._broadcastFetchingUpdate(false);\n this._successCallback(r);\n }\n }, e => this._errorCallback(e));\n }\n _debounce(callback, debounce = this.debounce) {\n if (this.#handle) {\n clearTimeout(this.#handle);\n }\n this.#handle = window.setTimeout(() => {\n callback();\n }, debounce || 0);\n }\n reverseGeocode(position = this.position, maxResults = this.maxResults) {\n if (this.disabled) {\n return;\n }\n this._debounce(() => {\n const promise = this._guards() ?? this.adapter.reverseGeocode(position, maxResults || 1);\n this._fetch({ promise, position, key: Utils.uniqueCode() });\n });\n }\n geocode(search = this.search, maxResults = this.maxResults) {\n if (this.disabled) {\n return;\n }\n this._debounce(() => {\n const promise = this._guards() ?? this.adapter.geocode(search, maxResults || 10);\n this._fetch({ promise, search, position: LatLng.Empty, key: Utils.uniqueCode() });\n });\n }\n _successCallback(r) {\n const any = !Utils.isNullOrEmpty(r);\n if (any || !Utils.isNullOrEmpty(this.results)) {\n // change observable property if any result found\n // OR if an empty set should replace a non-empty one.\n if (r !== this.results) {\n this.results = r;\n if (any) {\n // fire 'success' event only in case of non-empty set.\n this.dispatchEvent(new CustomEvent('success', { detail: r, bubbles: false, cancelable: false }));\n }\n }\n }\n }\n _errorCallback(e) {\n if (!Utils.isNullOrEmpty(this.results)) {\n this.results = [];\n }\n this.dispatchEvent(new CustomEvent('error', { detail: e, bubbles: false, cancelable: false }));\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemMapGeocodeElement.prototype, \"adapter\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMapGeocodeElement.prototype, \"maxResults\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMapGeocodeElement.prototype, \"debounce\", void 0);\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Json })\n], PacemMapGeocodeElement.prototype, \"results\", void 0);\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.String })\n], PacemMapGeocodeElement.prototype, \"search\", void 0);\n__decorate([\n Watch({ emit: true, converter: LatLngConverter })\n], PacemMapGeocodeElement.prototype, \"position\", void 0);\nPacemMapGeocodeElement = __decorate([\n CustomElement({ tagName: MapConstsInternal.GEOCODER_SELECTOR })\n], PacemMapGeocodeElement);\nexport { PacemMapGeocodeElement };\n//#endregion\nexport class PacemMapAdapterElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this.active = true;\n this.#maps = new Map();\n this.#markers = new WeakMap();\n this.#shapes = new WeakMap();\n this.#layers = new WeakMap();\n this.#overlays = new WeakMap();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n this.active = !this.disabled && this.isActive();\n }\n }\n #maps;\n #markers;\n #shapes;\n #layers;\n #overlays;\n get layerAdapters() {\n return this.#layers;\n }\n get overlayAdapters() {\n return this.#overlays;\n }\n get markerAdapters() {\n return this.#markers;\n }\n get shapeAdapters() {\n return this.#shapes;\n }\n hasMap(map) {\n return this.#maps.has(map);\n }\n enrolledMaps() {\n return this.#maps.keys();\n }\n tryGetMap(map) {\n const maps = this.#maps;\n if (maps.has(map)) {\n return maps.get(map);\n }\n return null;\n }\n getMap(map) {\n const retval = this.tryGetMap(map);\n return retval?.map;\n }\n /**\n * Initializes the map and returns its corresponding DOM element.\n * @param map {PacemMapElement} Container for the map\n */\n async initialize(map) {\n const maps = this.#maps;\n if (!maps.has(map)) {\n const retval = await this.init(map);\n maps.set(map, retval);\n // initialize layer adapter\n const layers = this.#layers;\n if (!layers.has(map)) {\n layers.set(map, this.buildLayerAdapterFor(map));\n }\n // initialize overlay adapter\n const overlays = this.#overlays;\n if (!overlays.has(map)) {\n overlays.set(map, this.buildOverlayAdapterFor(map));\n }\n // initialize marker adapter\n const markers = this.#markers;\n if (!markers.has(map)) {\n markers.set(map, this.buildMarkerAdapterFor(map));\n }\n // initialize shape adapter\n const shapes = this.#shapes;\n if (!shapes.has(map)) {\n shapes.set(map, this.buildShapeAdapterFor(map));\n }\n return retval.container;\n }\n return maps.get(map).container;\n }\n /**\n * Disposes the resources attached to the map.\n * @param map {PacemMapElement} The map\n */\n destroy(map) {\n const layers = this.#layers;\n if (layers.has(map)) {\n layers.delete(map);\n }\n const overlays = this.#overlays;\n if (overlays.has(map)) {\n overlays.delete(map);\n }\n const markers = this.#markers;\n if (markers.has(map)) {\n markers.delete(map);\n }\n const shapes = this.#shapes;\n if (shapes.has(map)) {\n shapes.delete(map);\n }\n const maps = this.#maps;\n if (maps.has(map)) {\n this.dispose(map);\n maps.delete(map);\n }\n }\n /**\n * Removes a map element.\n * @param item {MapRelevantElement} item to be removed\n */\n removeItem(item) {\n const ctrl = item.map;\n // case layer\n if (item instanceof PacemMapLayerElement) {\n const layers = this.layerAdapters;\n if (layers.has(ctrl)) {\n const adapter = layers.get(ctrl);\n adapter.removeLayer(item);\n }\n }\n // case marker\n else if (item instanceof PacemMapMarkerElement) {\n const markers = this.markerAdapters;\n if (markers.has(ctrl)) {\n const adapter = markers.get(ctrl);\n adapter.removeMarker(item);\n }\n }\n // case shape\n else if (item instanceof PacemMapShapeElement) {\n const shape = this.shapeAdapters;\n if (shape.has(ctrl)) {\n const adapter = shape.get(ctrl);\n adapter.removeShape(item);\n }\n }\n // case overlay\n else if (item instanceof PacemMapOverlayElement) {\n const overlays = this.overlayAdapters;\n if (overlays.has(ctrl)) {\n const adapter = overlays.get(ctrl);\n adapter.removeOverlay(item);\n }\n }\n // TODO: other cases\n //...\n // fitBounds just in case\n if (!item.inactive) {\n this.fitBounds(ctrl, true);\n }\n }\n /**\n * Draws a map element.\n * @param item {MapRelevantElement} item to be drawn\n */\n drawItem(item) {\n const ctrl = item.map;\n // case layer\n if (item instanceof PacemMapLayerElement) {\n const layers = this.layerAdapters;\n if (layers.has(ctrl)) {\n const adapter = layers.get(ctrl);\n adapter.drawLayer(item);\n }\n }\n // case marker\n else if (item instanceof PacemMapMarkerElement) {\n const markers = this.markerAdapters;\n if (markers.has(ctrl)) {\n const adapter = markers.get(ctrl);\n adapter.drawMarker(item);\n }\n }\n // case shape\n else if (item instanceof PacemMapShapeElement) {\n const shapes = this.shapeAdapters;\n if (shapes.has(ctrl)) {\n const adapter = shapes.get(ctrl);\n adapter.drawShape(item);\n }\n }\n // case overlay\n else if (item instanceof PacemMapOverlayElement) {\n const overlays = this.overlayAdapters;\n if (overlays.has(ctrl)) {\n const adapter = overlays.get(ctrl);\n adapter.drawOverlay(item);\n }\n }\n // TODO: other cases\n //...\n // fitBounds just in case\n if (!item.inactive) {\n this.fitBounds(ctrl, true);\n }\n }\n /**\n * Shows the infowindow relevant to a map element (if any).\n * @param item {MapRelevantElement} item whose infowindow must be displayed\n */\n popupInfoWindow(item) {\n const ctrl = item.map;\n if (item instanceof PacemMapMarkerElement) {\n const markers = this.markerAdapters;\n if (markers.has(ctrl)) {\n markers.get(ctrl).openInfoWindow(item);\n }\n }\n }\n /**\n * Hides the infowindow relevant to a map element (if any).\n * @param item {MapRelevantElement} item whose infowindow must be hidden\n */\n popoutInfoWindow(item) {\n const ctrl = item.map;\n if (item instanceof PacemMapMarkerElement) {\n const markers = this.markerAdapters;\n if (markers.has(ctrl)) {\n markers.get(ctrl).closeInfoWindow(item);\n }\n }\n }\n setView(ctrl, center, zoom) {\n if (!this.hasMap(ctrl)) {\n return;\n }\n let options = {};\n if (typeof center === 'number') {\n options = Utils.extend({}, { zoom: center });\n }\n else if (LatLng.isLatLng(center)) {\n options = Utils.extend({}, { center, zoom });\n }\n else {\n options = center;\n }\n this.setViewNative(ctrl, options);\n }\n fitBounds(map, onlyIfAutofitOrBounds) {\n if (!Utils.isNull(map)) {\n this._fitBounds(map, onlyIfAutofitOrBounds);\n }\n else {\n for (let m of this.enrolledMaps() || []) {\n this._fitBounds(m, onlyIfAutofitOrBounds);\n }\n }\n }\n _fitBounds(ctrl, onlyIfAutofitOrBounds) {\n if (!this.hasMap(ctrl))\n return;\n // check against autofit\n if (!ctrl.autofit && onlyIfAutofitOrBounds === true)\n return;\n if (LatLngBounds.isLatLngBounds(onlyIfAutofitOrBounds) && !LatLngBounds.isEmpty(onlyIfAutofitOrBounds)) {\n this.fitBoundsNative(ctrl, onlyIfAutofitOrBounds);\n return;\n }\n const markersBounds = this.markerAdapters.get(ctrl)?.getBounds(), shapesBounds = this.shapeAdapters.get(ctrl)?.getBounds();\n // no markers nor shapes\n const emptyMarkerBounds = Utils.isNull(markersBounds) || LatLngBounds.isEmpty(markersBounds), emptyShapeBounds = Utils.isNull(shapesBounds) || LatLngBounds.isEmpty(shapesBounds);\n if (emptyMarkerBounds && emptyShapeBounds) {\n this.setView(ctrl, { center: ctrl.center, zoom: ctrl.zoom });\n return;\n }\n let bnds = LatLngBounds.Empty;\n if (!emptyMarkerBounds) {\n bnds = LatLngBounds.union(bnds, markersBounds);\n }\n if (!emptyShapeBounds) {\n bnds = LatLngBounds.union(bnds, shapesBounds);\n }\n if (!LatLngBounds.isPoint(bnds)) {\n this.fitBoundsNative(ctrl, bnds);\n }\n else {\n this.setView(ctrl, { zoom: ctrl.zoom, center: bnds.ne });\n }\n }\n ;\n updateMapElement(ctrl, arg1, arg2) {\n ['type', 'tilt', 'heading'].forEach(prop => {\n if (prop in arg1) {\n ctrl[prop] = arg1[prop];\n }\n });\n const zoom = ('zoom' in arg1) ? arg1.zoom : arg2;\n if (!Utils.isNullOrEmpty(zoom) && zoom !== ctrl.zoom) {\n ctrl.zoom = zoom;\n }\n const center = LatLng.isLatLng(arg1) ? arg1 : arg1.center;\n if (!Utils.isNullOrEmpty(center) && (center.lat != ctrl.center?.lat || center.lng != ctrl.center?.lng)) {\n ctrl.center = center;\n }\n // update bounds\n ctrl.updateBounds(this.getBounds(ctrl));\n }\n}\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Boolean })\n], PacemMapAdapterElement.prototype, \"active\", void 0);\n__decorate([\n Debounce(1000, (key, ctrl) => `pacem:debounce:${key}:${ctrl.id}`)\n], PacemMapAdapterElement.prototype, \"_fitBounds\", null);\nexport class MapItemAdapter {\n constructor(_map, _adapter = _map.adapter) {\n this._map = _map;\n this._adapter = _adapter;\n }\n get adapter() { return this._adapter; }\n get map() { return this._map; }\n getMap(item) {\n return this._adapter.getMap(item.map);\n }\n}\nexport class PacemOverlayAdapter extends MapItemAdapter {\n constructor(map, adapter = map.adapter) {\n super(map, adapter);\n }\n #overlays = new Map();\n get layers() { return this.#overlays; }\n onOverlayLoad(item, evt) {\n item.dispatchEvent(new Event('overlayload'));\n }\n ensureOverlay(item, map) {\n const ctrl = this, overlays = ctrl.#overlays;\n let overlay;\n if (!overlays.has(item)) {\n overlay = this.buildOverlay(item, map);\n if (!Utils.isNull(overlay)) {\n overlays.set(item, overlay);\n }\n }\n else {\n overlay = overlays.get(item);\n }\n return overlay;\n }\n removeOverlay(item) {\n const ctrl = this, map = ctrl.getMap(item), overlays = this.#overlays;\n if (overlays.has(item)) {\n const layer = overlays.get(item);\n ctrl.deleteOverlay(layer, map);\n overlays.delete(item);\n }\n }\n drawOverlay(item) {\n const ctrl = this, map = ctrl.getMap(item);\n if (Utils.isNull(map)) {\n return;\n }\n else if (Utils.isNullOrEmpty(item) || item.hide) {\n ctrl.removeOverlay(item);\n return;\n }\n //\n const overlay = this.ensureOverlay(item, map);\n this.setBounds(overlay, map, item.bounds);\n this.updateOverlay(overlay, map, item);\n }\n}\nexport class PacemMapOverlayElement extends MapRelevantElement {\n}\n__decorate([\n Watch({ emit: false, converter: LatLngBoundsConverter })\n], PacemMapOverlayElement.prototype, \"bounds\", void 0);\nlet PacemMapOverlayImageElement = class PacemMapOverlayImageElement extends PacemMapOverlayElement {\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemMapOverlayImageElement.prototype, \"src\", void 0);\nPacemMapOverlayImageElement = __decorate([\n CustomElement({ tagName: MapConstsInternal.OVERLAY_IMAGE_SELECTOR })\n], PacemMapOverlayImageElement);\nexport { PacemMapOverlayImageElement };\nexport class PacemLayerAdapter extends MapItemAdapter {\n constructor(map, adapter = map.adapter) {\n super(map, adapter);\n }\n #layers = new Map();\n #loadHandlers = new Map();\n get layers() { return this.#layers; }\n onTileLoad(item, evt) {\n item.dispatchEvent(new Event('tileload'));\n }\n ensureLayer(item, map) {\n const ctrl = this, layers = ctrl.#layers;\n let layer;\n if (!layers.has(item)) {\n layer = this.buildLayer(item, map);\n if (layer != null) {\n const handler = (e) => { ctrl.onTileLoad(item, e); };\n this.#loadHandlers.set(item, handler);\n this.addLoadEventListener(layer, map, handler);\n layers.set(item, layer);\n }\n }\n else {\n layer = layers.get(item);\n }\n return layer;\n }\n removeLayer(item) {\n const ctrl = this, map = ctrl.getMap(item), layers = this.#layers;\n if (layers.has(item)) {\n const layer = layers.get(item);\n const handlers = this.#loadHandlers;\n if (handlers.has(item)) {\n const handler = handlers.get(item);\n this.removeLoadEventListener(layer, map, handler);\n handlers.delete(item);\n }\n ctrl.deleteLayer(layer, map);\n layers.delete(item);\n }\n }\n drawLayer(item) {\n const ctrl = this, map = ctrl.getMap(item);\n if (Utils.isNull(map)) {\n return;\n }\n else if (Utils.isNullOrEmpty(item) || item.hide) {\n ctrl.removeLayer(item);\n return;\n }\n //\n this.ensureLayer(item, map);\n }\n}\nlet PacemMapLayerElement = class PacemMapLayerElement extends MapRelevantElement {\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemMapLayerElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemMapLayerElement.prototype, \"include\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemMapLayerElement.prototype, \"mode\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMapLayerElement.prototype, \"minZoom\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMapLayerElement.prototype, \"maxZoom\", void 0);\nPacemMapLayerElement = __decorate([\n CustomElement({ tagName: MapConstsInternal.LAYER_SELECTOR })\n], PacemMapLayerElement);\nexport { PacemMapLayerElement };\nexport class PacemMarkerAdapter extends MapItemAdapter {\n constructor(map, adapter = map.adapter) {\n super(map, adapter);\n }\n get mapAutomaticallyScrollsOnDrag() {\n return false;\n }\n #markers = new Map();\n #infoWindows = new Map();\n getBounds(filter = _ => true) {\n const markers = this.markers;\n let bnds = LatLngBounds.Empty;\n for (var m of markers.keys()) {\n if (!filter(m) || m.inactive) {\n continue;\n }\n let marker = markers.get(m);\n if (Utils.isNull(marker)) {\n continue;\n }\n bnds = LatLngBounds.union(bnds, this.getMarkerPosition(marker));\n }\n return bnds;\n }\n get markers() { return this.#markers; }\n get infoWindows() { return this.#infoWindows; }\n onDragEnd(item, evt) {\n const marker = this.markers.get(item), dpos = this.getMarkerPosition(marker);\n item.onDragEnd(dpos);\n }\n onClick(item, evt) {\n const marker = this.markers.get(item), dpos = this.getMarkerPosition(marker);\n item.onClick(dpos);\n }\n onInfoOpen(item) {\n item.onInfoOpen();\n }\n onInfoClose(item) {\n item.onInfoClose();\n }\n ensureMarker(item, map) {\n const ctrl = this;\n let marker;\n if (!ctrl.markers.has(item)) {\n marker = this.buildMarker(item, map);\n if (marker != null) {\n this.addClickEventListener(marker, map, (e) => { ctrl.onClick(item, e); ctrl.openInfoWindow(item, e); });\n this.addDragEventListener(marker, map, (e) => { if (!this.mapAutomaticallyScrollsOnDrag)\n ctrl.adapter.fitBounds(item.map, true); });\n this.addDragEndEventListener(marker, map, (e) => ctrl.onDragEnd(item, e));\n ctrl.markers.set(item, marker);\n }\n }\n else {\n marker = ctrl.markers.get(item);\n }\n return marker;\n }\n removeMarker(item) {\n const ctrl = this, map = ctrl.getMap(item), infoWindows = this.#infoWindows, markers = this.#markers;\n if (infoWindows.has(item)) {\n // const info = infoWindows.get(item);\n infoWindows.delete(item);\n }\n if (markers.has(item)) {\n const marker = markers.get(item);\n ctrl.deleteMarker(marker, map);\n markers.delete(item);\n // ctrl._adapter.removeItem(item);\n }\n }\n drawMarker(item) {\n const ctrl = this, map = ctrl.getMap(item);\n if (Utils.isNull(map)) {\n return;\n }\n else if (Utils.isNullOrEmpty(item && item.position) || item.hide) {\n ctrl.removeMarker(item);\n return;\n }\n //\n const marker = this.ensureMarker(item, map);\n // set position\n this.setPosition(marker, item.position);\n this.setIcon(marker, item.icon);\n this.setLabel(marker, item.caption);\n this.setDraggable(marker, item.draggable);\n }\n closeInfoWindow(item, evt) {\n const ctrl = this;\n if (ctrl.infoWindows.has(item)) {\n const info = ctrl.infoWindows.get(item);\n this.closeInfo(info);\n }\n }\n ensureInfoWindow(item, map) {\n var ctrl = this;\n let info;\n if (!ctrl.infoWindows.has(item)) {\n info = this.buildInfoWindow(item);\n this.addCloseClickEventListener(info, map, (_) => {\n ctrl.deleteInfoWindow(info, map);\n ctrl.onInfoClose(item);\n });\n ctrl.infoWindows.set(item, info);\n }\n else {\n info = ctrl.infoWindows.get(item);\n }\n return info;\n }\n openInfoWindow(item, evt) {\n var ctrl = this, marker = ctrl.markers.get(item), content = item.caption, map = ctrl.getMap(item);\n if (!MapUtils.isContentEmpty(item)) {\n content = item.innerHTML;\n }\n if (!Utils.isNullOrEmpty(content)) {\n const info = this.ensureInfoWindow(item, map);\n this.setContent(info, content);\n this.openInfo(info, content, map, marker);\n ctrl.onInfoOpen(item);\n }\n }\n}\nlet PacemMapMarkerElement = class PacemMapMarkerElement extends MapRelevantElement {\n onDragEnd(position) {\n this.position = position;\n this.dispatchEvent(new MapEvent('dragend', { position: position }));\n }\n onClick(position) {\n this.position = position;\n this.dispatchEvent(new MapEvent('click', { position: position }));\n }\n onInfoOpen() {\n this.dispatchEvent(new MapEvent('openinfo'));\n }\n onInfoClose() {\n this.dispatchEvent(new MapEvent('closeinfo'));\n }\n};\n__decorate([\n Watch({ converter: LatLngConverter })\n], PacemMapMarkerElement.prototype, \"position\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemMapMarkerElement.prototype, \"icon\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemMapMarkerElement.prototype, \"caption\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemMapMarkerElement.prototype, \"draggable\", void 0);\nPacemMapMarkerElement = __decorate([\n CustomElement({ tagName: MapConstsInternal.MARKER_SELECTOR })\n], PacemMapMarkerElement);\nexport { PacemMapMarkerElement };\nexport class PacemShapeAdapter extends MapItemAdapter {\n constructor(map, adapter = map.adapter) {\n super(map, adapter);\n }\n #shapes = new Map();\n get shapes() { return this.#shapes; }\n getBounds(filter = _ => true) {\n const shapes = this.shapes;\n let bnds = LatLngBounds.Empty;\n for (var s of shapes.keys()) {\n if (!filter(s) || s.inactive) {\n continue;\n }\n let shape = shapes.get(s);\n if (Utils.isNull(shape)) {\n continue;\n }\n bnds = LatLngBounds.union(bnds, this.getShapeBounds(shape));\n }\n return bnds;\n }\n removeShape(item) {\n const ctrl = this, map = ctrl.getMap(item), shapes = this.#shapes;\n if (shapes.has(item)) {\n const shape = shapes.get(item);\n ctrl.deleteShape(shape, map);\n shapes.delete(item);\n }\n }\n _dispatchEvent(item, type, evt) {\n const shape = this.shapes.get(item), position = this.getShapePosition(evt ?? shape);\n item.dispatchEvent(new MapEvent(type, { position }));\n }\n #dragDelta = new Map();\n onDragStart(item, evt) {\n const shape = this.shapes.get(item);\n const bounds = this.getShapeBounds(shape);\n this.#dragDelta.set(item, bounds.ne);\n this._dispatchEvent(item, 'dragstart', evt);\n }\n onDragEnd(item, evt) {\n const shape = this.shapes.get(item);\n const bounds = this.getShapeBounds(shape);\n const neStart = this.#dragDelta.get(item), neEnd = bounds.ne;\n ;\n const delta = { lat: neEnd.lat - neStart.lat, lng: neEnd.lng - neStart.lng };\n this._translateShape(item, delta);\n this._dispatchEvent(item, 'dragend', evt);\n }\n _translateShape(item, latLng) {\n if (item instanceof PacemMapCircleElement) {\n item.center = LatLng.translate(item.center, latLng);\n return;\n }\n if (item instanceof PacemMapPolylineElement) {\n const path = item.vertices.map(p => LatLng.translate(p, latLng));\n item.vertices = path;\n return;\n }\n if (item instanceof PacemMapPolygonElement) {\n const path = item.vertices.map(p => LatLng.translate(p, latLng));\n item.vertices = path;\n return;\n }\n }\n onDrag(item, evt) {\n this._dispatchEvent(item, 'drag', evt);\n }\n onClick(item, evt) {\n this._dispatchEvent(item, 'click', evt);\n }\n ensureShape(item, map) {\n const ctrl = this;\n let shape;\n if (!ctrl.shapes.has(item)) {\n shape = this.buildShape(item, map);\n if (shape != null) {\n this.addClickEventListener(shape, (e) => ctrl.onClick(item, e));\n this.addDragEventListener(shape, (e) => { ctrl.onDrag(item, e); ctrl.adapter.fitBounds(item.map, true); });\n this.addDragEndEventListener(shape, (e) => ctrl.onDragEnd(item, e));\n this.addDragStartEventListener(shape, (e) => ctrl.onDragStart(item, e));\n ctrl.shapes.set(item, shape);\n }\n }\n else {\n shape = ctrl.shapes.get(item);\n }\n return shape;\n }\n drawShape(item) {\n const ctrl = this, map = ctrl.getMap(item);\n if (Utils.isNull(map)) {\n return;\n }\n else if (Utils.isNullOrEmpty(item) || item.hide) {\n ctrl.removeShape(item);\n return;\n }\n //\n const shape = this.ensureShape(item, map);\n this.setShape(shape, item);\n this.setEditable(shape, item.editable);\n this.setDraggable(shape, item.draggable);\n }\n}\nexport class PacemMapShapeElement extends MapRelevantElement {\n}\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Boolean })\n], PacemMapShapeElement.prototype, \"draggable\", void 0);\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Boolean })\n], PacemMapShapeElement.prototype, \"editable\", void 0);\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Json })\n], PacemMapShapeElement.prototype, \"stroke\", void 0);\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Json })\n], PacemMapShapeElement.prototype, \"fill\", void 0);\nlet PacemMapPolylineElement = class PacemMapPolylineElement extends PacemMapShapeElement {\n};\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Json })\n], PacemMapPolylineElement.prototype, \"vertices\", void 0);\nPacemMapPolylineElement = __decorate([\n CustomElement({ tagName: MapConstsInternal.POLYLINE_SELECTOR })\n], PacemMapPolylineElement);\nexport { PacemMapPolylineElement };\nlet PacemMapPolygonElement = class PacemMapPolygonElement extends PacemMapShapeElement {\n};\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Json })\n], PacemMapPolygonElement.prototype, \"vertices\", void 0);\nPacemMapPolygonElement = __decorate([\n CustomElement({ tagName: MapConstsInternal.POLYGON_SELECTOR })\n], PacemMapPolygonElement);\nexport { PacemMapPolygonElement };\nlet PacemMapCircleElement = class PacemMapCircleElement extends PacemMapShapeElement {\n};\n__decorate([\n Watch({ emit: true, converter: LatLngConverter })\n], PacemMapCircleElement.prototype, \"center\", void 0);\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Json })\n], PacemMapCircleElement.prototype, \"radius\", void 0);\nPacemMapCircleElement = __decorate([\n CustomElement({ tagName: MapConstsInternal.CIRCLE_SELECTOR })\n], PacemMapCircleElement);\nexport { PacemMapCircleElement };\n//#endregion\nlet PacemMapElement = class PacemMapElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this.zoom = 12;\n this.center = MapConstsInternal.DEFAULT_COORDS;\n this.#bounds = LatLngBounds.Empty;\n this.scale = true;\n this.mousewheel = true;\n this.draggable = true;\n this.doubleClickZoom = true;\n this.keyboardShortcuts = true;\n /** Gets or sets whether to autofit the bounds whenever the map gets refreshed. */\n this.autofit = true;\n this.paddingTop = 0;\n this.paddingLeft = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n // GMaps features\n this.tilt = 0;\n this.heading = 0;\n this._drawHandler = (evt) => {\n this._draw(evt.target);\n };\n //#endregion\n //#region lifecycle\n this._listenToActiveAdapter = (e) => {\n const adapter = e.target;\n if (e.detail.propertyName === 'active' && e.detail.currentValue) {\n adapter.removeEventListener(PropertyChangeEventName, this._listenToActiveAdapter, false);\n this._switchAdapter(adapter);\n }\n };\n this._initialized = false;\n this._afterInit = (_, old) => {\n this._initialized = true;\n // loop through child element map-relevant-items\n for (var child of CustomElementUtils.findDescendants(this, n => n instanceof MapRelevantElement)) {\n this._erase(child, old);\n this._draw(child);\n }\n // dispose old, if any.\n if (old) {\n old?.destroy(this);\n }\n };\n this._resizeHandler = (e) => {\n this.onResize(e);\n };\n //#endregion\n }\n updateBounds(bounds) {\n if (!LatLngBounds.equals(bounds, this.#bounds)) {\n const oldValue = this.#bounds;\n const currentValue = this.#bounds = bounds;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'bounds', oldValue, currentValue }));\n }\n }\n #bounds;\n get bounds() {\n return this.#bounds;\n }\n get container() {\n return this._container;\n }\n register(item) {\n item.addEventListener(PropertyChangeEventName, this._drawHandler, false);\n this._draw(item);\n }\n unregister(item) {\n this._erase(item);\n item.removeEventListener(PropertyChangeEventName, this._drawHandler, false);\n }\n _draw(item, adapter = this.adapter) {\n this._initialized &&\n adapter &&\n adapter.drawItem(item);\n }\n _erase(item, adapter = this.adapter) {\n this._initialized &&\n adapter &&\n adapter.removeItem(item);\n }\n _switchAdapter(val, old) {\n if (!val.active) {\n if (old) {\n this._afterInit(null, old);\n }\n val.addEventListener(PropertyChangeEventName, this._listenToActiveAdapter, false);\n }\n else {\n val.initialize(this).then(_ => this._afterInit(_, old));\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setupContainer();\n //\n this.adapter && this._switchAdapter(this.adapter);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'bounds') {\n return;\n }\n if (name === 'adapter') {\n if (!Utils.isNull(this._container)) {\n this._initialized = false;\n if (val) {\n this._switchAdapter(val, old);\n }\n else if (old) {\n this._afterInit(null, old);\n }\n }\n }\n else {\n switch (name) {\n case 'zoom':\n case 'center':\n case 'type':\n case 'theme':\n case 'tilt':\n case 'heading':\n this.adapter?.setView(this, { type: this.type, tilt: this.tilt, heading: this.heading, zoom: this.zoom, center: this.center, theme: this.theme });\n break;\n case 'autofit':\n if (val) {\n this.adapter?.fitBounds(this);\n }\n break;\n case 'target':\n if (old) {\n this._dismissContainer(old);\n }\n if (val) {\n this._setupContainer(val);\n this._setupResizer();\n }\n else {\n this._dismissResizer();\n }\n break;\n }\n this.adapter && this.adapter.invalidateSize(this);\n }\n }\n _dismissContainer(container = this._container) {\n if (container.dataset[DEFAULT_MAPTARGET_KEY] === 'true') {\n container.remove();\n }\n else {\n Utils.removeClass(container, PCSS + '-map');\n }\n if (container === this._container) {\n this._container = null;\n }\n }\n _dismissResizer() {\n const resizer = this._resizer;\n resizer.removeEventListener('resize', this._resizeHandler, false);\n resizer.remove();\n this._resizer = null;\n }\n _setupContainer(val = this.target) {\n if (Utils.isNull(val)) {\n val = document.createElement('div');\n val.dataset[DEFAULT_MAPTARGET_KEY] = 'true';\n this.insertAdjacentElement('afterend', val);\n }\n const container = this._container = val;\n Utils.addClass(container, PCSS + '-map');\n return container;\n }\n _setupResizer() {\n const container = this._container;\n if (Utils.isNull(container)) {\n throw new Error('You must set up the map container before its resizing listener.');\n }\n if (Utils.isNull(this._resizer)) {\n const resizer = this._resizer = document.createElement(P + '-resize');\n resizer.addEventListener('resize', this._resizeHandler, false);\n container.insertAdjacentElement('afterend', resizer);\n }\n this._resizer.target = container;\n return this._resizer;\n }\n _detach() {\n if (!Utils.isNull(this._container)) {\n this._dismissContainer();\n }\n if (!Utils.isNull(this._resizer)) {\n this._dismissResizer();\n }\n }\n disconnectedCallback() {\n this._detach();\n super.disconnectedCallback();\n }\n onResize(e) {\n this.adapter && this.adapter.invalidateSize(this);\n }\n};\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Number })\n], PacemMapElement.prototype, \"zoom\", void 0);\n__decorate([\n Watch({ emit: true, converter: LatLngConverter })\n], PacemMapElement.prototype, \"center\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemMapElement.prototype, \"type\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemMapElement.prototype, \"theme\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemMapElement.prototype, \"scale\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemMapElement.prototype, \"mousewheel\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemMapElement.prototype, \"zoomControl\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemMapElement.prototype, \"draggable\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemMapElement.prototype, \"doubleClickZoom\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemMapElement.prototype, \"keyboardShortcuts\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemMapElement.prototype, \"autofit\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMapElement.prototype, \"paddingTop\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMapElement.prototype, \"paddingLeft\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMapElement.prototype, \"paddingRight\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMapElement.prototype, \"paddingBottom\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemMapElement.prototype, \"adapter\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemMapElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMapElement.prototype, \"tilt\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMapElement.prototype, \"heading\", void 0);\nPacemMapElement = __decorate([\n CustomElement({ tagName: MapConstsInternal.MAP_SELECTOR })\n], PacemMapElement);\nexport { PacemMapElement };\n//}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Utils, CustomElement, Watch, P, PropertyConverters, PropertyChangeEvent, PacemEventTarget } from '@pacem/pacem-core';\nimport { LatLngConverter } from './types-components';\n;\nconst consts = {\n GEOLOCATION_UNAVAILABLE: 'geolocation_unavailable',\n POSITION_UNAVAILABLE: 'position_unavailable',\n PERMISSION_DENIED: 'permission_denied',\n TIMEOUT: 'timeout',\n UNKNOWN_ERROR: 'unknown_error',\n};\nlet PacemMapGeolocateElement = class PacemMapGeolocateElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this.permission = 'prompt';\n this.maximumAge = 15000;\n this.timeout = 30000;\n this.#fetching = false;\n this._successCallback = (position) => {\n this.permission = 'granted';\n this._setFetching(false);\n const detail = {\n lat: position.coords.latitude, lng: position.coords.longitude,\n timestamp: position.timestamp, altitude: position.coords.altitude,\n heading: position.coords.heading, speed: position.coords.speed\n };\n this.position = detail;\n this.dispatchEvent(new CustomEvent('success', { detail }));\n };\n this._errorCallback = (err) => {\n this._setFetching(false);\n const detail = typeof err === 'string' ? err : this._errToString(err);\n this.dispatchEvent(new CustomEvent('error', { detail }));\n };\n }\n _checkPermission() {\n return new Promise(resolve => {\n const permissionApi = navigator.permissions;\n if (Utils.isNull(permissionApi)) {\n resolve('prompt');\n }\n else {\n permissionApi.query({ name: 'geolocation' }).then(p => {\n resolve(this.permission = p.state);\n });\n }\n });\n }\n #fetching;\n get fetching() {\n return this.#fetching;\n }\n _setFetching(val) {\n if (val !== this.fetching) {\n this.#fetching = val;\n this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'fetching', currentValue: val, oldValue: !val }));\n }\n }\n fetch() {\n if (this.disabled) {\n return;\n }\n if (!navigator.geolocation) {\n this._errorCallback(consts.GEOLOCATION_UNAVAILABLE);\n return;\n }\n this._checkPermission().then(_ => {\n this._setFetching(true);\n navigator.geolocation.getCurrentPosition(this._successCallback, this._errorCallback, { enableHighAccuracy: true, maximumAge: this.maximumAge });\n });\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._checkPermission();\n }\n _errToString(err) {\n switch (err.code) {\n case GeolocationPositionError.PERMISSION_DENIED:\n return consts.PERMISSION_DENIED;\n case GeolocationPositionError.POSITION_UNAVAILABLE:\n return consts.POSITION_UNAVAILABLE;\n case GeolocationPositionError.TIMEOUT:\n return consts.TIMEOUT;\n default:\n return consts.UNKNOWN_ERROR;\n }\n }\n};\n__decorate([\n Watch({ emit: true, converter: LatLngConverter })\n], PacemMapGeolocateElement.prototype, \"position\", void 0);\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.String })\n], PacemMapGeolocateElement.prototype, \"permission\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMapGeolocateElement.prototype, \"maximumAge\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemMapGeolocateElement.prototype, \"timeout\", void 0);\nPacemMapGeolocateElement = __decorate([\n CustomElement({ tagName: P + '-map-geolocate' })\n], PacemMapGeolocateElement);\nexport { PacemMapGeolocateElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemAzureMapAdapterElement_1;\nimport { Utils, CustomElement, Watch, P, PropertyConverters, CustomElementUtils, Debounce } from '@pacem/pacem-core';\nimport { PacemOverlayAdapter, PacemMapAdapterElement, PacemLayerAdapter, PacemMarkerAdapter, PacemShapeAdapter, MapUtils, MapColorScheme, MapType, MapEvent } from './types-components';\n// namespace Pacem.Components.Maps {\nconst consts = {\n TIMEOUT: 1000,\n API_JS: 'https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.js',\n API_CSS: 'https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.css'\n};\nfunction convertAddress(address) {\n return {\n city: address.municipality,\n state: address.countrySubdivision,\n province: address.countrySecondarySubdivision,\n village: address.municipalitySubdivision ?? address.localName,\n zipCode: address.postalCode,\n streetName: address.street ?? address.streetName,\n houseNumber: address.buildingNumber ?? address.streetNumber,\n countryCode: address.countryCode,\n country: address.country,\n };\n}\nclass AtlasMapUtils {\n static getPosition(latLng) {\n if (Array.isArray(latLng)) {\n latLng = { lat: latLng[0], lng: latLng[1] };\n }\n return atlas.data.Position.fromLatLng(latLng);\n }\n static getBounds(bounds) {\n if (Utils.isArray(bounds)) {\n return atlas.data.BoundingBox.fromPositions(bounds.map(p => /* reverse */ [p[1], p[0]]));\n }\n const ne = AtlasMapUtils.getPosition(bounds.ne), sw = AtlasMapUtils.getPosition(bounds.sw);\n return atlas.data.BoundingBox.fromPositions([ne, sw]);\n }\n static getLatLng(position) {\n return { lat: position[1], lng: position[0] };\n }\n static getLatLngBounds(bounds) {\n const ne = atlas.data.BoundingBox.getNorthEast(bounds), sw = atlas.data.BoundingBox.getSouthWest(bounds);\n return { ne: AtlasMapUtils.getLatLng(ne), sw: AtlasMapUtils.getLatLng(sw) };\n }\n static parseGeocoding(response) {\n if (Utils.isNullOrEmpty(response.results)) {\n return [];\n }\n ;\n return response.results.map(r => {\n return {\n fullAddress: r.address.freeformAddress,\n address: convertAddress(r.address),\n position: { lat: r.position.lat, lng: r.position.lon, altitude: null }\n };\n });\n }\n static parseReverseGeocoding(response, location) {\n if (response.summary.numResults < 1) {\n return { fullAddress: '', address: {}, position: null };\n }\n ;\n const addr = response.addresses[0], position = (location ?? addr.position).split(',').map(i => parseFloat(i)), address = addr.address, fullAddress = address.freeformAddress;\n return {\n fullAddress, address: convertAddress(address), position: { lat: position[0], lng: position[1], altitude: position.length > 2 ? position[2] : null }\n };\n }\n}\nclass PacemAzureOverlayAdapter extends PacemOverlayAdapter {\n deleteOverlay(overlay, map) {\n throw new Error(\"Method not implemented.\");\n }\n buildOverlay(item, map) {\n throw new Error(\"Method not implemented.\");\n }\n setBounds(item, map, bounds) {\n throw new Error(\"Method not implemented.\");\n }\n updateOverlay(overlay, map, item) {\n throw new Error(\"Method not implemented.\");\n }\n}\nclass PacemAzureLayerAdapter extends PacemLayerAdapter {\n addLoadEventListener(layer, map, callback) {\n throw new Error(\"Method not implemented.\");\n }\n removeLoadEventListener(layer, map, callback) {\n throw new Error(\"Method not implemented.\");\n }\n deleteLayer(layer, map) {\n throw new Error(\"Method not implemented.\");\n }\n buildLayer(item, map) {\n throw new Error(\"Method not implemented.\");\n }\n}\nclass PacemAzureMarkerAdapter extends PacemMarkerAdapter {\n getMarkerPosition(marker) {\n const position = marker.getOptions().position;\n return AtlasMapUtils.getLatLng(position);\n }\n buildMarker(item, map) {\n const marker = new atlas.HtmlMarker();\n map.markers.add(marker);\n marker.setOptions({ popup: new atlas.Popup() });\n return marker;\n }\n addClickEventListener(marker, map, callback) {\n map.events.add('click', marker, callback);\n }\n addDragEventListener(marker, map, callback) {\n map.events.add('drag', marker, callback);\n }\n addDragEndEventListener(marker, map, callback) {\n map.events.add('dragend', marker, callback);\n }\n _setPopupPosition(info, position) {\n const popup = this._getPopup(info);\n if (!Utils.isNull(popup)) {\n popup.setOptions({ position });\n }\n }\n setPosition(marker, position) {\n const p = AtlasMapUtils.getPosition(position);\n marker.setOptions({ position: p });\n this._setPopupPosition(marker, p);\n }\n setIcon(marker, icon) {\n let popupOptions = { pixelOffset: [0, -36 /* default marker size */] };\n let options = { popup: new atlas.Popup() };\n let fnIcon = (icon, w, h) => `<img width=\"${(w || 'auto')}\" height=\"${(h || 'auto')}\" style=\"pointer-events: none\" src=\"${icon}\" />`; //item.icon.url;\n if (typeof icon === 'string') {\n // icon url only\n options.htmlContent = fnIcon(icon);\n }\n else if (!Utils.isNull(icon)) {\n // structured icon\n const size = icon.size, anchor = icon.anchor;\n options.htmlContent = fnIcon(icon.url, size && size.width, size && size.height);\n if (anchor) {\n options.anchor = \"top-left\";\n options.pixelOffset = [-anchor.x, -anchor.y];\n popupOptions.pixelOffset = [0, -anchor.y];\n }\n else if (size && size.height) {\n popupOptions.pixelOffset = [0, -size.height / 2];\n }\n }\n options.popup.setOptions(popupOptions);\n marker.setOptions(options);\n }\n setLabel(marker, label) {\n let options = { text: label };\n marker.setOptions(options);\n }\n setDraggable(marker, draggable) {\n let options = { draggable };\n marker.setOptions(options);\n }\n deleteMarker(marker, map) {\n map.markers.remove(marker);\n }\n deleteInfoWindow(info, map) {\n const popup = this._getPopup(info);\n popup.remove();\n }\n closeInfo(info) {\n const popup = this._getPopup(info);\n if (popup?.isOpen() !== true) {\n return;\n }\n popup.close();\n }\n openInfo(info, content, map, marker) {\n const { popup, position } = info.getOptions();\n this._setContent(popup, content, position);\n marker.togglePopup();\n map.events.addOnce('close', popup, (e) => {\n popup.setOptions({ content: '' });\n });\n }\n buildInfoWindow(item) {\n return this.markers.get(item);\n }\n addCloseClickEventListener(info, map, callback) {\n const popup = this._getPopup(info);\n map.events.add('close', popup, callback);\n }\n setContent(info, content) {\n /* unnecessary */\n const { popup, position } = info.getOptions();\n this._setContent(popup, content, position);\n }\n _getPopup(info) {\n return info.getOptions().popup;\n }\n _setContent(popup, content, position) {\n popup.setOptions({ content: `<div style=\"padding: 8px 24px 8px 8px;\">${content}</div>`, position });\n }\n}\nclass PacemAzureShapeAdapter extends PacemShapeAdapter {\n addDragStartEventListener(shape, callback) {\n throw new Error(\"Method not implemented.\");\n }\n deleteShape(shape, map) {\n throw new Error(\"Method not implemented.\");\n }\n getShapeBounds(shape) {\n throw new Error(\"Method not implemented.\");\n }\n getShapePosition(obj) {\n throw new Error(\"Method not implemented.\");\n }\n buildShape(item, map) {\n throw new Error(\"Method not implemented.\");\n }\n addClickEventListener(shape, callback) {\n throw new Error(\"Method not implemented.\");\n }\n addDragEventListener(shape, callback) {\n throw new Error(\"Method not implemented.\");\n }\n addDragEndEventListener(shape, callback) {\n throw new Error(\"Method not implemented.\");\n }\n setShape(shape, item) {\n throw new Error(\"Method not implemented.\");\n }\n setEditable(shape, editable) {\n throw new Error(\"Method not implemented.\");\n }\n setDraggable(shape, draggable) {\n throw new Error(\"Method not implemented.\");\n }\n}\n//#region geocoders\nclass PacemAzureMapGeocoder {\n _buildGeocodeRequest(key, search, maxResults = 10, language = '') {\n // TODO: upgrade to newest version (see: https://www.npmjs.com/package/azure-maps-rest)\n const url = 'https://atlas.microsoft.com/search/address/json?api-version=1.0';\n const query = { 'subscription-key': key, query: search, limit: '' + maxResults, language };\n return {\n uri: Utils.URIs.appendQuery(url, query),\n options: {\n mode: 'cors' //, headers: {}\n }\n };\n }\n parseGeocodeResponse(response) {\n return new Promise((resolve, reject) => {\n response.json().then((r) => {\n const retval = AtlasMapUtils.parseGeocoding(r);\n resolve(retval);\n }, e => reject(e));\n });\n }\n geocode(key, address, maxResults = 10, language = '') {\n return new Promise((resolve, reject) => {\n const request = this._buildGeocodeRequest(key, address, maxResults, language);\n return fetch(request.uri, request.options).then(response => {\n if (response.ok) {\n this.parseGeocodeResponse(response).then(resolve, reject);\n }\n else {\n reject(response);\n }\n }, e => reject(e));\n });\n }\n reverseGeocode(key, latLng, language = '') {\n return new Promise((resolve, reject) => {\n const request = this._buildReverseRequest(key, latLng, language);\n return fetch(request.uri, request.options).then(response => {\n if (response.ok) {\n this._parseReverseResponse(response).then(resolve, reject);\n }\n else {\n reject(response);\n }\n }, e => reject(e));\n });\n }\n _buildReverseRequest(key, position, language = '') {\n // TODO: upgrade to newest version (see: https://atlas.microsoft.com/reverseGeocode?api-version=2023-06-01)\n const url = 'https://atlas.microsoft.com/search/address/reverse/json?api-version=1.0';\n const latLng = MapUtils.parseCoords(position);\n const query = {\n 'subscription-key': key,\n query: latLng[0] + ',' + latLng[1],\n language\n };\n return {\n uri: Utils.URIs.appendQuery(url, query),\n options: {\n mode: 'cors' //, headers: {}\n }\n };\n }\n _parseReverseResponse(response) {\n return new Promise((resolve, reject) => {\n response.json().then((r) => {\n const retval = AtlasMapUtils.parseReverseGeocoding(r);\n resolve([retval]);\n }, e => reject(e));\n });\n }\n}\n//#endregion\nconst MAP_EVENTS = ['moveend', 'dragend', 'zoomend', 'rotateend'];\nfunction getNativeMapStyle(options) {\n const darkTheme = options.theme == MapColorScheme.DARK || (options.theme !== MapColorScheme.LIGHT && window.matchMedia('(prefers-color-scheme: dark)').matches);\n switch (options.type) {\n case 'satellite':\n case 'satellite_road_labels':\n case 'grayscale_dark':\n case 'grayscale_light':\n case 'night':\n case 'road_shaded_relief':\n case 'road':\n case 'high_constrast_dark':\n case 'high_constrast_light':\n return options.type;\n case MapType.HYBRID:\n return 'satellite_road_labels';\n case MapType.SATELLITE:\n return 'satellite';\n case MapType.TERRAIN:\n return 'road_shaded_relief';\n case MapType.HIGH_CONTRAST:\n return darkTheme ? 'high_constrast_dark' : 'high_constrast_light';\n default:\n return darkTheme ? 'night' : 'road';\n }\n}\nlet PacemAzureMapAdapterElement = PacemAzureMapAdapterElement_1 = class PacemAzureMapAdapterElement extends PacemMapAdapterElement {\n geocode(address, maxResults) {\n return new PacemAzureMapGeocoder().geocode(this.subscriptionKey, address, maxResults, Utils.lang(this));\n }\n reverseGeocode(latLng, maxResults) {\n return new PacemAzureMapGeocoder().reverseGeocode(this.subscriptionKey, latLng, Utils.lang(this));\n }\n getBounds(ctrl) {\n const map = this.getMap(ctrl);\n const { bounds } = map.getCamera();\n return AtlasMapUtils.getLatLngBounds(bounds);\n }\n isActive() {\n return !Utils.isNullOrEmpty(this.subscriptionKey);\n }\n buildOverlayAdapterFor(map) {\n return new PacemAzureOverlayAdapter(map, this);\n }\n buildMarkerAdapterFor(map) {\n return new PacemAzureMarkerAdapter(map, this);\n }\n buildShapeAdapterFor(map) {\n return new PacemAzureShapeAdapter(map, this);\n }\n buildLayerAdapterFor(map) {\n return new PacemAzureLayerAdapter(map, this);\n }\n setViewNative(ctrl, options) {\n const map = this.getMap(ctrl);\n // style\n options = Utils.extend({ type: ctrl.type, theme: ctrl.theme }, options);\n const style = getNativeMapStyle(options);\n map.setStyle({ style });\n const center = options.center && AtlasMapUtils.getPosition(options.center) || map.getCamera().center;\n const zoom = options.zoom || map.getCamera().zoom;\n map.setCamera({ center, zoom });\n }\n #listeners = new WeakMap();\n snapshot(ctrl, type = 'image/png', quality) {\n if (!this.hasMap(ctrl)) {\n return Promise.reject();\n }\n const { map } = this.tryGetMap(ctrl);\n return new Promise((resolve, _) => {\n Utils.blobToDataURL(this.#blobs.get(ctrl)).then(dataUrl => {\n const container = map.getCanvasContainer();\n container.style.backgroundImage = `url(${dataUrl})`;\n container.style.backgroundSize = 'contain';\n Utils.snapshotElement(container, null, type, quality).then(resolve);\n });\n });\n }\n #blobs = new WeakMap();\n // #region ABSTRACT IMPLEMENTATION\n dispose(ctrl) {\n if (!this.hasMap(ctrl)) {\n return;\n }\n const { map } = this.tryGetMap(ctrl);\n // detach listeners\n const listeners = this.#listeners.get(ctrl);\n listeners.forEach(listener => {\n map.events.remove(listener.eventName, listener.handler);\n });\n // cleanup\n this.#listeners.delete(ctrl);\n // destroy map\n map.dispose();\n }\n async init(container) {\n await Promise.all([\n CustomElementUtils.importjs(consts.API_JS),\n CustomElementUtils.importcss(consts.API_CSS, undefined, true)\n ]);\n const ctrl = container;\n const scale = ctrl.scale;\n const draggable = ctrl.draggable;\n const dblClickZoom = ctrl.doubleClickZoom;\n const kbShortcuts = ctrl.keyboardShortcuts;\n //\n const center = AtlasMapUtils.getPosition(ctrl.center);\n const mapOptions = {\n center: center,\n zoom: ctrl.zoom,\n subscriptionKey: this.subscriptionKey,\n dragPanInteraction: draggable,\n scrollZoomInteraction: ctrl.mousewheel,\n dblClickZoomInteraction: !dblClickZoom,\n keyboardInteraction: kbShortcuts,\n language: this.language || Utils.lang(container),\n };\n const canvas = ctrl.container;\n const mapElement = document.createElement('div');\n mapElement.id = `azure-maps-${Utils.uniqueCode()}`;\n mapElement.style.width = '100%';\n mapElement.style.height = '100%';\n canvas.innerHTML = '';\n canvas.appendChild(mapElement);\n const map = new atlas.Map(mapElement.id, mapOptions);\n const listeners = [];\n this.#listeners.set(ctrl, listeners);\n MAP_EVENTS.forEach((evt) => {\n const handler = this._spinMapUpdateHandler(ctrl, map);\n map.events.add(evt, handler);\n listeners.push({ eventName: evt, handler });\n });\n if (scale && ctrl.zoomControl) {\n map.events.addOnce('ready', (e) => {\n let pos = atlas.ControlPosition.NonFixed;\n switch (ctrl.zoomControl) {\n case 'topleft':\n pos = atlas.ControlPosition.TopLeft;\n break;\n case 'topright':\n pos = atlas.ControlPosition.TopRight;\n break;\n case 'bottomright':\n pos = atlas.ControlPosition.BottomRight;\n break;\n case 'bottomleft':\n pos = atlas.ControlPosition.BottomLeft;\n break;\n }\n map.controls.add(new atlas.control.ZoomControl(), { position: pos });\n });\n }\n map.events.add('idle', (e) => {\n map.getCanvas().toBlob(blob => {\n this.#blobs.set(container, blob);\n });\n });\n map.events.addOnce('ready', () => {\n container.dispatchEvent(new MapEvent(\"maploaded\"));\n });\n return { map, container: mapElement };\n }\n invalidateSize(ctrl) {\n if (!this.hasMap(ctrl)) {\n return;\n }\n const { map } = this.tryGetMap(ctrl);\n if (map) {\n map.resize();\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first && name === 'language') {\n for (let ctrl of this.enrolledMaps()) {\n const { map } = this.tryGetMap(ctrl);\n map.setStyle({ language: val || Utils.lang(ctrl) });\n }\n }\n }\n //#endregion\n _spinMapUpdateHandler(ctrl, map) {\n return () => {\n this._updateMap(ctrl, map);\n };\n }\n _updateMap(ctrl, map) {\n if (!Utils.isNull(map) && !Utils.isNull(ctrl)) {\n const camera = map.getCamera(), center = camera.center, zoom = camera.zoom;\n if (camera.zoom === 1) {\n console.warn('Azure Maps control lacks in reflecting the actual map zoom onto the camera property. Cannot reflect info back to PacemMapElement.');\n }\n else\n this.updateMapElement(ctrl, AtlasMapUtils.getLatLng(center), zoom);\n }\n }\n static _getBounds(ctrl) {\n const paddingTop = ctrl.paddingTop || 0, paddingLeft = ctrl.paddingLeft || 0, paddingRight = ctrl.paddingRight || 0, paddingBottom = ctrl.paddingBottom || 0;\n return { 'top': paddingTop, 'bottom': paddingBottom, 'left': paddingLeft, 'right': paddingRight };\n }\n fitBoundsNative(ctrl, bnds, padding = PacemAzureMapAdapterElement_1._getBounds(ctrl)) {\n const map = this.getMap(ctrl);\n // TODO: avoid double loop (specially for large sets), just set coords in 'correct' place for Azure maps right away...\n map.setCamera({ bounds: AtlasMapUtils.getBounds(bnds), padding });\n //} else {\n // if (bnds.length === 1) {\n // map.setCamera({ center: AtlasMapUtils.getPosition(bnds[0]), zoom: ctrl.zoom });\n // }\n //}\n }\n ;\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemAzureMapAdapterElement.prototype, \"subscriptionKey\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemAzureMapAdapterElement.prototype, \"language\", void 0);\n__decorate([\n Debounce(500)\n], PacemAzureMapAdapterElement.prototype, \"_updateMap\", null);\nPacemAzureMapAdapterElement = PacemAzureMapAdapterElement_1 = __decorate([\n CustomElement({ tagName: P + '-map-adapter-azure' })\n], PacemAzureMapAdapterElement);\nexport { PacemAzureMapAdapterElement };\n//}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Utils, CustomElement, Watch, P, PropertyConverters, Debounce, CustomTypedEvent, CustomElementUtils } from '@pacem/pacem-core';\nimport { PacemMapAdapterElement, PacemOverlayAdapter, PacemLayerAdapter, PacemMarkerAdapter, PacemShapeAdapter, \n//PacemMapPolylineElement, PacemMapPolygonElement, PacemMapCircleElement, PacemMapOverlayImageElement,\nMapUtils, MapEvent } from './types-components';\n// namespace Pacem.Components.Maps {\nconst consts = {\n API_JS: 'https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.min.js', //'https://unpkg.com/leaflet@1.5.1/dist/leaflet.js',\n API_JS_INTEGRITY: null, //'sha512-GffPMF3RvMeYyc1LWMHtK8EbPv0iNZ8/oTtHPx9/cc2ILxQ+u905qIwdpULaqDkyBKgOaB57QTMg7ztg8Jm2Og==',\n API_CSS: 'https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.min.css', //'https://unpkg.com/leaflet@1.5.1/dist/leaflet.css',\n API_CSS_INTEGRITY: null // 'sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ=='\n};\nfunction convertAddress(address) {\n return {\n city: address.city,\n state: address.state,\n provinceCode: address[\"ISO3166-2-lvl6\"]?.split('-')[1],\n province: address.county,\n village: address.village,\n zipCode: address.postcode,\n streetName: address.road,\n houseNumber: address.house_number,\n countryCode: address.country_code?.toUpperCase(),\n country: address.country\n };\n}\nfunction convertResponse(r) {\n return { fullAddress: r.display_name, address: convertAddress(r.address), position: { lat: parseFloat(r.lat), lng: parseFloat(r.lon), altitude: null } };\n}\nclass LeafletUtils {\n static toLiteral(bounds) {\n const ne = bounds.getNorthEast(), sw = bounds.getSouthWest();\n return { ne, sw };\n }\n static parseGeocoding(response) {\n if (Utils.isNullOrEmpty(response)) {\n return [];\n }\n return response.map(convertResponse);\n }\n static parseReverseGeocoding(response) {\n if (Utils.isNullOrEmpty(response)) {\n return [];\n }\n return [convertResponse(response)];\n }\n}\nexport const LayerLoadEventName = \"layerload\";\nclass LayerLoadEvent extends CustomTypedEvent {\n constructor(layer) {\n super(LayerLoadEventName, layer, { bubbles: true });\n }\n}\nclass PacemLeafletMarkerAdapter extends PacemMarkerAdapter {\n deleteInfoWindow(info, map) {\n info.unbindPopup();\n }\n deleteMarker(marker, map) {\n marker.removeFrom(map);\n }\n getMarkerPosition(marker) {\n return marker.getLatLng();\n }\n buildMarker(item, map) {\n return L.marker(item.position).addTo(map);\n }\n addClickEventListener(marker, map, callback) {\n marker.on('click', callback);\n }\n addDragEventListener(marker, map, callback) {\n marker.on('drag', callback);\n }\n addDragEndEventListener(marker, map, callback) {\n marker.on('dragend', callback);\n }\n setPosition(marker, position) {\n marker.setLatLng(position);\n }\n setIcon(marker, icon) {\n const ctrl = this;\n if (typeof icon === 'string') {\n // icon url only\n ctrl._setIcon(marker, icon);\n }\n else if (!Utils.isNull(icon)) {\n // structured icon\n let options = { iconUrl: icon.url };\n if (!Utils.isNullOrEmpty(icon.size)) {\n Utils.extend(options, {\n iconSize: [icon.size.width, icon.size.height],\n iconAnchor: [icon.size.width / 2, icon.size.height],\n popupAnchor: [0, -icon.size.height]\n });\n }\n if (!Utils.isNullOrEmpty(icon.anchor)) {\n Utils.extend(options, {\n iconAnchor: [icon.anchor.x, icon.anchor.y]\n });\n }\n ctrl._setIcon(marker, new L.Icon(options));\n }\n }\n setLabel(marker, label) {\n // not available\n }\n setDraggable(marker, draggable) {\n if (draggable === true) {\n marker.dragging.enable();\n }\n else {\n marker.dragging.disable();\n }\n }\n closeInfo(marker) {\n marker.closePopup();\n }\n openInfo(info, content, map, marker) {\n info\n .bindPopup(content /*, { offset: new L.Point( 0, 0) }*/)\n .openPopup();\n }\n buildInfoWindow(item) {\n return this.markers.get(item);\n }\n addCloseClickEventListener(marker, map, callback) {\n marker.on('popupclose', callback);\n }\n setContent(marker, content) {\n const popup = marker.getPopup();\n if (popup && popup.getContent() != content) {\n marker.setPopupContent(content);\n }\n }\n _setIcon(marker, v) {\n // legacy (deprecated)\n if (typeof v === 'string') {\n var icon = { 'iconUrl': v }, size, anchor, popup;\n if ((size = this['size']) && /[\\d]+,[\\d]+/.test(size)) {\n var ndx = -1;\n var size0 = [parseInt(size.substring(0, (ndx = size.indexOf(',')))), parseInt(size.substring(ndx + 1))];\n Object.assign(icon, { 'iconSize': size0 });\n }\n if ((anchor = this['anchor']) && /[\\d]+,[\\d]+/.test(anchor)) {\n var ndx = -1;\n var anchor0 = [parseInt(anchor.substring(0, (ndx = anchor.indexOf(',')))), parseInt(anchor.substring(ndx + 1))];\n Object.assign(icon, { 'iconAnchor': anchor0, 'popupAnchor': [0, -anchor0[1]] });\n }\n if ((popup = this['popupAnchor']) && /[\\d]+,[\\d]+/.test(popup)) {\n var ndx = -1;\n var anchor0 = [parseInt(anchor.substring(0, (ndx = anchor.indexOf(',')))), parseInt(anchor.substring(ndx + 1))];\n Object.assign(icon, { 'popupAnchor': anchor0 });\n }\n marker.setIcon(L.icon(icon));\n }\n // good\n else if (v)\n marker.setIcon(v);\n }\n}\nclass PacemLeafletShapeAdapter extends PacemShapeAdapter {\n addDragStartEventListener(shape, callback) {\n throw new Error(\"Method not implemented.\");\n }\n deleteShape(shape, map) {\n throw new Error(\"Method not implemented.\");\n }\n getShapeBounds(shape) {\n throw new Error(\"Method not implemented.\");\n }\n getShapePosition(obj) {\n throw new Error(\"Method not implemented.\");\n }\n buildShape(item, map) {\n throw new Error(\"Method not implemented.\");\n }\n addClickEventListener(shape, callback) {\n throw new Error(\"Method not implemented.\");\n }\n addDragEventListener(shape, callback) {\n throw new Error(\"Method not implemented.\");\n }\n addDragEndEventListener(shape, callback) {\n throw new Error(\"Method not implemented.\");\n }\n setShape(shape, item) {\n throw new Error(\"Method not implemented.\");\n }\n setEditable(shape, editable) {\n throw new Error(\"Method not implemented.\");\n }\n setDraggable(shape, draggable) {\n throw new Error(\"Method not implemented.\");\n }\n}\nclass PacemLeafletLayerAdapter extends PacemLayerAdapter {\n addLoadEventListener(layer, map, callback) {\n layer.on('load', callback);\n }\n removeLoadEventListener(layer, map, callback) {\n layer.off('load', callback);\n }\n deleteLayer(layer, map) {\n layer.remove();\n }\n buildLayer(item, map) {\n const mode = (item.mode || '').toLowerCase();\n switch (mode) {\n case 'wms':\n return L.tileLayer.wms(item.url, { layers: (item.include || []).join(','), minZoom: item.minZoom, maxZoom: item.maxZoom, transparent: true, format: 'image/png' }).addTo(map);\n default:\n return L.tileLayer(item.url, { tms: mode === 'tms', minZoom: item.minZoom, maxZoom: item.maxZoom }).addTo(map);\n }\n }\n}\nclass PacemLeafletOverlayAdapter extends PacemOverlayAdapter {\n deleteOverlay(overlay, map) {\n throw new Error(\"Method not implemented.\");\n }\n buildOverlay(item, map) {\n throw new Error(\"Method not implemented.\");\n }\n setBounds(item, map, bounds) {\n throw new Error(\"Method not implemented.\");\n }\n updateOverlay(overlay, map, item) {\n throw new Error(\"Method not implemented.\");\n }\n}\nlet PacemLeafletMapAdapterElement = class PacemLeafletMapAdapterElement extends PacemMapAdapterElement {\n constructor() {\n super(...arguments);\n this.#tileLayers = new WeakMap();\n this.tiles = '//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';\n this.attribution = 'Map data © <a href=\"http://openstreetmap.org\">OpenStreetMap</a> contributors';\n this._tileLayerLoadHandler = (evt) => {\n this.dispatchLayerLoadEvent(evt.sourceTarget);\n };\n //#endregion\n this._mapUpdateHandler = (ctrl) => {\n const map = this.getMap(ctrl);\n if (!Utils.isNull(map) && !Utils.isNull(ctrl)) {\n this.updateMapElement(ctrl, map.getCenter(), map.getZoom());\n }\n };\n }\n buildOverlayAdapterFor(map) {\n return new PacemLeafletOverlayAdapter(map, this);\n }\n geocode(address, maxResults) {\n return new PacemNominatimMapGeocoder().geocode(address, maxResults, Utils.lang(this));\n }\n reverseGeocode(latLng, _) {\n return new PacemNominatimMapGeocoder().reverseGeocode(latLng, Utils.lang(this));\n }\n getBounds(ctrl) {\n const nativeMap = this.getMap(ctrl);\n const bounds = nativeMap.getBounds();\n return LeafletUtils.toLiteral(bounds);\n }\n isActive() {\n return true;\n }\n setViewNative(ctrl, options) {\n const map = this.getMap(ctrl);\n if (options.center) {\n map.setView(options.center, options.zoom ?? map.getZoom(), { animate: true });\n }\n else if (typeof options.zoom === 'number') {\n map.setZoom(options.zoom, { animate: true });\n }\n }\n buildMarkerAdapterFor(map) {\n return new PacemLeafletMarkerAdapter(map, this);\n }\n buildShapeAdapterFor(map) {\n return new PacemLeafletShapeAdapter(map, this);\n }\n buildLayerAdapterFor(map) {\n return new PacemLeafletLayerAdapter(map, this);\n }\n #tileLayers;\n snapshot(map, type = 'image/png', quality) {\n return Utils.snapshotElement(map.container.firstElementChild, null, type, quality);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'tiles':\n for (let map of this.enrolledMaps()) {\n this._redrawMap(map);\n }\n default:\n for (let map of this.enrolledMaps()) {\n this.invalidateSize(map);\n }\n break;\n }\n }\n // #region ABSTRACT IMPLEMENTATION\n dispose(ctrl) {\n const { map } = this.tryGetMap(ctrl);\n const tiles = this.#tileLayers.get(ctrl);\n if (tiles) {\n tiles.off('load', this._tileLayerLoadHandler);\n }\n map.clearAllEventListeners();\n this.#tileLayers.delete(ctrl);\n }\n async init(container) {\n await Promise.all([CustomElementUtils.importjs(consts.API_JS, consts.API_JS_INTEGRITY, true),\n CustomElementUtils.importcss(consts.API_CSS, consts.API_CSS_INTEGRITY, true)]);\n const ctrl = container;\n var scale = ctrl.scale;\n var draggable = ctrl.draggable;\n var dblClickZoom = ctrl.doubleClickZoom;\n var kbShortcuts = ctrl.keyboardShortcuts;\n //\n var center = L.latLng(MapUtils.parseCoords(ctrl.center));\n var mapOptions = {\n zoomControl: scale && !Utils.isNullOrEmpty(ctrl.zoomControl),\n scrollWheelZoom: ctrl.mousewheel,\n dragging: draggable,\n doubleClickZoom: !dblClickZoom,\n keyboard: kbShortcuts\n };\n const canvas = ctrl.container;\n const mapElement = document.createElement('div');\n mapElement.style.width = '100%';\n mapElement.style.height = '100%';\n canvas.innerHTML = '';\n canvas.appendChild(mapElement);\n const map = L.map(mapElement, mapOptions);\n ['zoomend', 'moveend'].forEach(evt => {\n map.on(evt, _ => {\n this._idleFiller(ctrl);\n this._mapUpdateHandler(ctrl);\n });\n });\n map.on('load', () => {\n if (scale && ctrl.zoomControl) {\n map.zoomControl.setPosition(ctrl['zoomControl']);\n }\n this._idleFiller(ctrl);\n });\n const tiles = L.tileLayer(this.tiles, { attribution: this.attribution }).addTo(map);\n tiles.on('load', this._tileLayerLoadHandler);\n this.#tileLayers.set(ctrl, tiles);\n // setting now the center and zoom, triggers the \"load\" event and activates the child-components, if any.\n /*\n LeafletJS docs: Map's \"load\" Event\n \"Fired when the map is initialized (when its center and zoom are set for the first time).\"\n (http://leafletjs.com/reference.html#map-events)\n */\n map.setView(center, ctrl.zoom);\n // first-load\n map.once('idle', function () {\n map.fire('resize');\n container.dispatchEvent(new MapEvent(\"maploaded\"));\n });\n // call setView NOW to trigger the load event :(\n const cnt = MapUtils.parseCoords(ctrl.center), xpr = [cnt[0], cnt[1]];\n map.setView(xpr, ctrl.zoom);\n return { map, container: mapElement };\n }\n dispatchLayerLoadEvent(layer) {\n this.dispatchEvent(new LayerLoadEvent(layer));\n }\n invalidateSize(ctrl) {\n if (this.hasMap(ctrl)) {\n const map = this.getMap(ctrl);\n map.invalidateSize();\n }\n }\n _idleFiller(ctrl) {\n if (this.hasMap(ctrl)) {\n const map = this.getMap(ctrl);\n map.fire('idle');\n }\n }\n fitBoundsNative(ctrl, bounds, padding = { top: ctrl.paddingTop || 0, left: ctrl.paddingLeft || 0, right: ctrl.paddingRight || 0, bottom: ctrl.paddingBottom || 0 }) {\n const map = this.getMap(ctrl);\n const pads = { 'paddingTopLeft': new L.Point(padding.left, padding.top), 'paddingBottomRight': new L.Point(padding.right, padding.bottom) };\n const ne = bounds.ne, sw = bounds.sw;\n try {\n map.fitBounds([[ne.lat, ne.lng], [sw.lat, sw.lng]], pads);\n }\n catch (e) {\n throw e;\n }\n }\n ;\n _redrawMap(map) {\n var ctrl = this, tileLayer = ctrl.#tileLayers.get(map);\n ;\n if (!Utils.isNull(ctrl.tiles && tileLayer)) {\n tileLayer.setUrl(ctrl.tiles);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemLeafletMapAdapterElement.prototype, \"tiles\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemLeafletMapAdapterElement.prototype, \"attribution\", void 0);\n__decorate([\n Debounce(500)\n], PacemLeafletMapAdapterElement.prototype, \"_idleFiller\", null);\nPacemLeafletMapAdapterElement = __decorate([\n CustomElement({ tagName: P + '-map-adapter-leaflet' })\n], PacemLeafletMapAdapterElement);\nexport { PacemLeafletMapAdapterElement };\n//#region geocoders\nclass PacemNominatimMapGeocoder {\n _buildGeocodeRequest(search, maxResults = 10, language = '') {\n // https://nominatim.openstreetmap.org/search?addressdetails=1&format=json&limit={limit}&accept-language={culture}&q={q}\n const url = 'https://nominatim.openstreetmap.org/search?addressdetails=1&format=json';\n const query = { q: search, limit: '' + maxResults, 'accept-language': language };\n return {\n uri: Utils.URIs.appendQuery(url, query),\n options: {\n mode: 'cors' //, headers: {}\n }\n };\n }\n parseGeocodeResponse(response) {\n return new Promise((resolve, reject) => {\n response.json().then((r) => {\n const retval = LeafletUtils.parseGeocoding(r);\n resolve(retval);\n }, e => reject(e));\n });\n }\n geocode(address, maxResults = 10, language = '') {\n return new Promise((resolve, reject) => {\n const request = this._buildGeocodeRequest(address, maxResults, language);\n return fetch(request.uri, request.options).then(response => {\n if (response.ok) {\n this.parseGeocodeResponse(response).then(resolve, reject);\n }\n else {\n reject(response);\n }\n }, e => reject(e));\n });\n }\n reverseGeocode(latLng, language = '') {\n return new Promise((resolve, reject) => {\n const request = this._buildReverseRequest(latLng, language);\n return fetch(request.uri, request.options).then(response => {\n if (response.ok) {\n this._parseReverseResponse(response).then(resolve, reject);\n }\n else {\n reject(response);\n }\n }, e => reject(e));\n });\n }\n _buildReverseRequest(position, language = '') {\n // https://nominatim.openstreetmap.org/reverse?addressdetails=1&format=json&accept-language={culture}&lat={lat}&lon={lng}\n const url = 'https://nominatim.openstreetmap.org/reverse?addressdetails=1&format=json';\n const latLng = MapUtils.parseCoords(position);\n const query = {\n lat: '' + latLng[0],\n lon: '' + latLng[1],\n 'accept-language': language\n };\n return {\n uri: Utils.URIs.appendQuery(url, query),\n options: {\n mode: 'cors' //, headers: {}\n }\n };\n }\n _parseReverseResponse(response) {\n return new Promise((resolve, reject) => {\n response.json().then((r) => {\n const retval = LeafletUtils.parseReverseGeocoding(r);\n resolve(retval);\n }, e => reject(e));\n });\n }\n}\n//#endregion\n//}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Utils, CustomElement, Watch, P, PropertyConverters, Debounce } from '@pacem/pacem-core';\nimport { LatLngBounds } from './types';\nimport { PacemMapAdapterElement, PacemOverlayAdapter, PacemLayerAdapter, PacemMarkerAdapter, PacemShapeAdapter, PacemMapPolylineElement, PacemMapPolygonElement, PacemMapCircleElement, PacemMapOverlayImageElement, MapUtils, MapColorScheme, MapType, MapEvent } from './types-components';\n// namespace Pacem.Components.Maps {\nconst consts = {\n DETACH_TIMEOUT: 200,\n /**@deprecated */\n API_URI: 'https://maps.googleapis.com/maps/api/js',\n MAX_ROADMAP_ZOOM: 22,\n //MAX_SATELLITE_ZOOM: 22,\n BOOTSTRAP_SNIPPET: (key, lang, region, v) => {\n return `(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))})({\r\n key: \"${key}\", v: \"${v}\", language: \"${lang}\", region: \"${region}\",\r\n // Add other bootstrap parameters as needed, using camel case.\r\n });`;\n },\n MAPS_NOT_FOUND: 'google.maps not found.',\n GEOCODER_UNAVAILABLE: 'google.maps geocoder unavailable.',\n INVALID_KEY: 'invalid google.maps api key.',\n TILE_EXTENT: [-Math.PI * 6378137, Math.PI * 6378137],\n};\nclass Bootstrapper {\n #promise;\n #params;\n _equivalent(key, language, region, version) {\n const guard = this.#params;\n return !Utils.isNull(guard)\n && guard.key === key\n // fallback on curreny values when not explicitated\n && guard.language === (language || guard.language)\n && guard.region === (region || guard.region)\n && guard.version === (version || guard.version);\n }\n _spinFuture(key, language, region, version) {\n return new Promise((resolve, reject) => {\n // check if already bootstrapped with the same variables\n if (!this._equivalent(key, language, region, version)) {\n Bootstrapper._ensureBootstrapScript(key, language, region, version);\n }\n this.#params = { language, region, version, key };\n google.maps.importLibrary(\"maps\").then(_ => {\n resolve();\n this.#promise = null;\n }, e => {\n reject(e);\n this.#promise = null;\n });\n });\n }\n boostrap(key, language, region, version = 'weekly') {\n if (Utils.isNullOrEmpty(key)) {\n return Promise.reject(consts.INVALID_KEY);\n }\n if (Utils.isNull(this.#promise) || !this._equivalent(key, language, region, version)) {\n this.#promise = this._spinFuture(key, language, region, version);\n }\n return this.#promise;\n }\n static _ensureBootstrapScript(key, language, region, v) {\n const uniqueAttrName = 'pacem-googlemaps';\n const uniqueAttrValue = `v=${v},l=${language},r=${region}`;\n let script = document.querySelector(`script[${uniqueAttrName}]`);\n if (!Utils.isNull(script)) {\n if (script.getAttribute(uniqueAttrName) === uniqueAttrValue) {\n return;\n }\n else {\n script.remove();\n document.querySelectorAll('script[src^=\\'https://maps.googleapis.com/maps\\']').forEach(i => i.remove());\n delete window['google'];\n }\n }\n if (Utils.isNullOrEmpty(key)) {\n return;\n }\n script = document.createElement('script');\n script.setAttribute(uniqueAttrName, uniqueAttrValue);\n script.textContent = consts.BOOTSTRAP_SNIPPET(key, language, region, v);\n document.head.appendChild(script);\n }\n}\n/** Bootstrapper singleton. */\nconst bootstrapper = new Bootstrapper();\nclass GMapsUtils {\n static getPosition(latLng) {\n if (Array.isArray(latLng)) {\n return { lat: latLng[0], lng: latLng[1] };\n }\n return latLng;\n }\n static getBounds(bnds) {\n if (Utils.isNullOrEmpty(bnds)) {\n return null;\n }\n return { north: bnds.ne.lat, east: bnds.ne.lng, south: bnds.sw.lat, west: bnds.sw.lng };\n }\n static mapGeocodeResults(a, b = []) {\n const retval = [];\n a ??= [];\n for (let j = 0; j < a.length; j++) {\n const elevation = b.length > j ? b[j] : null;\n const address = GMapsUtils.mapGeocodeResult(a[j], elevation);\n retval.push(address);\n }\n return retval;\n }\n static mapGeocodeResult(a, b) {\n const address = a?.address_components || [];\n const buildingNumber = address.find(a => a.types.indexOf('street_number') >= 0)?.long_name;\n const streetName = address.find(a => a.types.indexOf('route') >= 0)?.long_name;\n const city = address.find(a => a.types.indexOf('locality') >= 0)?.long_name;\n const comune = address.find(a => a.types.indexOf(\"administrative_area_level_3\") >= 0)?.long_name;\n const provinceObj = address.find(a => a.types.indexOf(\"administrative_area_level_2\") >= 0);\n const region = address.find(a => a.types.indexOf(\"administrative_area_level_1\") >= 0)?.short_name;\n const countryObj = address.find(a => a.types.indexOf(\"country\") >= 0);\n const zipCode = address.find(a => a.types.indexOf(\"postal_code\") >= 0)?.short_name;\n const structuredAddress = {\n houseNumber: buildingNumber,\n city: comune || city,\n provinceCode: provinceObj?.short_name,\n province: provinceObj?.long_name,\n countryCode: countryObj?.short_name,\n country: countryObj?.long_name,\n zipCode,\n streetName,\n state: region,\n village: city,\n type: a.geometry.location_type\n };\n const retval = {\n fullAddress: a.formatted_address,\n position: GMapsUtils.toLiteral(a.geometry.location, b?.elevation),\n address: structuredAddress\n };\n return retval;\n }\n static toLiteral(l, e) {\n if (Utils.isNull(l)) {\n return null;\n }\n if ('lat' in l && typeof l.lat === 'function' && 'lng' in l && typeof l.lng === 'function') {\n return { lat: l.lat(), lng: l.lng(), altitude: e };\n }\n if ('getNorthEast' in l && typeof l.getNorthEast === 'function' && 'getSouthWest' in l && typeof l.getSouthWest === 'function') {\n const ne = l.getNorthEast(), sw = l.getSouthWest();\n return { ne: GMapsUtils.toLiteral(ne), sw: GMapsUtils.toLiteral(sw) };\n }\n if ('north' in l && typeof l.north === 'number'\n && 'south' in l && typeof l.south === 'number'\n && 'west' in l && typeof l.west === 'number'\n && 'east' in l && typeof l.east === 'number') {\n return {\n ne: { lat: l.north, lng: l.east }, sw: { lat: l.south, lng: l.west }\n };\n }\n return Utils.extend({ altitude: e }, l);\n }\n static areEqual(l1, l2) {\n if (Utils.isNull(l1) || Utils.isNull(l2)) {\n return false;\n }\n const latLng1 = GMapsUtils.toLiteral(l1), latLng2 = GMapsUtils.toLiteral(l2);\n return latLng1.lat === latLng2.lat && latLng1.lng === latLng2.lng;\n }\n static fitBounds(map, bnds, padding) {\n //map.panToBounds(bnds, padding);\n map?.fitBounds(bnds, padding);\n }\n static setCenter(map, center) {\n if (!Utils.isNull(map) && !GMapsUtils.areEqual(map.getCenter(), center)) {\n map.panTo(center);\n //map.setCenter(center);\n }\n }\n}\nclass PacemGoogleShapeAdapter extends PacemShapeAdapter {\n getShapeBounds(shape) {\n const bnds = new google.maps.LatLngBounds();\n if (shape instanceof google.maps.Circle) {\n const b = shape.getBounds();\n if (b) {\n bnds.extend(b.getNorthEast());\n bnds.extend(b.getSouthWest());\n }\n }\n else if (shape instanceof google.maps.Polygon) {\n shape.getPath().forEach(l => bnds.extend(l));\n }\n else if (shape instanceof google.maps.Polyline) {\n shape.getPath().forEach(l => bnds.extend(l));\n }\n if (bnds.isEmpty() !== false) {\n return LatLngBounds.Empty;\n }\n return GMapsUtils.toLiteral(bnds);\n }\n deleteShape(shape, map) {\n shape.setMap(null);\n }\n getShapePosition(obj) {\n if ('latLng' in obj) {\n return obj.latLng;\n }\n return null;\n }\n buildShape(item, map) {\n const clickable = true;\n if (item instanceof PacemMapPolylineElement) {\n return new google.maps.Polyline({\n path: item.vertices,\n clickable,\n map\n });\n }\n if (item instanceof PacemMapPolygonElement) {\n return new google.maps.Polygon({\n paths: [item.vertices],\n clickable,\n map\n });\n }\n if (item instanceof PacemMapCircleElement) {\n return new google.maps.Circle({\n center: item.center,\n radius: item.radius,\n clickable,\n map\n });\n }\n return null;\n }\n addClickEventListener(shape, callback) {\n shape.addListener('click', callback);\n }\n addDragEventListener(shape, callback) {\n shape.addListener('drag', callback);\n }\n addDragStartEventListener(shape, callback) {\n shape.addListener('dragstart', callback);\n }\n addDragEndEventListener(shape, callback) {\n shape.addListener('dragend', callback);\n }\n setShape(shape, item) {\n if (item instanceof PacemMapPolylineElement) {\n const polyline = shape;\n polyline.setOptions({\n strokeColor: item.stroke?.color,\n strokeOpacity: item.stroke?.alpha ?? 1,\n strokeWeight: item.stroke?.thickness,\n path: item.vertices,\n });\n }\n if (item instanceof PacemMapPolygonElement) {\n const polygon = shape;\n polygon.setOptions({\n strokeColor: item.stroke?.color,\n strokeOpacity: item.stroke?.alpha ?? 1,\n strokeWeight: item.stroke?.thickness,\n strokePosition: google.maps.StrokePosition.CENTER,\n fillColor: item.fill?.color,\n fillOpacity: item.fill?.alpha,\n paths: [item.vertices]\n });\n }\n if (item instanceof PacemMapCircleElement) {\n const circle = shape;\n circle.setOptions({\n strokeColor: item.stroke?.color,\n strokeOpacity: item.stroke?.alpha ?? 1,\n strokeWeight: item.stroke?.thickness,\n strokePosition: google.maps.StrokePosition.CENTER,\n fillColor: item.fill?.color,\n fillOpacity: item.fill?.alpha,\n center: item.center,\n radius: item.radius\n });\n }\n }\n setEditable(shape, editable) {\n shape.setOptions({\n editable\n });\n }\n setDraggable(shape, draggable) {\n shape.setOptions({\n draggable\n });\n }\n}\nclass PacemGoogleMarkerAdapter extends PacemMarkerAdapter {\n deleteInfoWindow(info, map) {\n info.unbindAll();\n }\n deleteMarker(marker, map) {\n marker.setMap(null);\n }\n get mapAutomaticallyScrollsOnDrag() {\n return true;\n }\n getMarkerPosition(marker) {\n const latLng = marker.getPosition();\n return { lat: latLng.lat(), lng: latLng.lng() };\n }\n buildMarker(item, map) {\n return new google.maps.Marker({\n position: item.position,\n map\n });\n }\n addClickEventListener(marker, map, callback) {\n marker.addListener('click', callback);\n }\n addDragEventListener(marker, map, callback) {\n marker.addListener('drag', callback);\n }\n addDragEndEventListener(marker, map, callback) {\n marker.addListener('dragend', callback);\n }\n setPosition(marker, position) {\n marker.setPosition(position);\n }\n setIcon(marker, icon) {\n if (typeof icon === 'string') {\n // icon url only\n marker.setIcon(icon);\n }\n else if (!Utils.isNull(icon)) {\n // structured icon\n let options = { url: icon.url };\n if (!Utils.isNullOrEmpty(icon.size)) {\n options.size = new google.maps.Size(icon.size.width, icon.size.height);\n options.anchor = new google.maps.Point(icon.size.width / 2, icon.size.height);\n }\n if (!Utils.isNullOrEmpty(icon.anchor)) {\n options.anchor = new google.maps.Point(icon.anchor.x, icon.anchor.y);\n }\n marker.setIcon(options);\n }\n }\n setLabel(marker, label) {\n marker.setLabel(label);\n }\n setDraggable(marker, draggable) {\n marker.setDraggable(draggable);\n }\n closeInfo(info) {\n info.close();\n }\n openInfo(info, _, map, marker) {\n info.open(map, marker);\n }\n buildInfoWindow(item) {\n let offsX = 0;\n if (typeof item.icon !== 'string' && !Utils.isNull(item.icon)) {\n offsX = ((item.icon.size?.width ?? 0) / 2) -\n (item.icon.anchor?.x ?? 0);\n }\n return new google.maps.InfoWindow({\n pixelOffset: new google.maps.Size(-offsX, 0)\n });\n }\n addCloseClickEventListener(info, map, callback) {\n info.addListener('closeclick', callback);\n }\n setContent(info, content) {\n info.setContent(content);\n }\n}\nclass PacemGoogleLayerAdapter extends PacemLayerAdapter {\n addLoadEventListener(layer, map, callback) {\n layer.addListener('tilesloaded', callback);\n }\n removeLoadEventListener(layer, map, callback) {\n // not necessary\n }\n deleteLayer(layer, map) {\n const layers = map.overlayMapTypes.getArray();\n const index = layers.findIndex(v => v === layer);\n if (index >= 0) {\n map.overlayMapTypes.removeAt(index);\n }\n }\n _getBounds(x, y, zoom) {\n const ext = consts.TILE_EXTENT;\n var tileSize = (ext[1] * 2) / Math.pow(2, zoom);\n var minx = ext[0] + x * tileSize;\n var maxx = ext[0] + (x + 1) * tileSize;\n // remember y origin starts at top\n var miny = ext[1] - (y + 1) * tileSize;\n var maxy = ext[1] - y * tileSize;\n return [minx, miny, maxx, maxy];\n }\n _getWmsTileUrl(url, layers) {\n return (coords, zoom) => {\n const tileUrl = Utils.URIs.appendQuery(url, {\n service: 'WMS', styles: '', transparent: 'true',\n request: 'GetMap', srs: 'EPSG:3857', format: 'image/png', version: '1.1.1',\n layers: layers?.join(',') || '', width: '256', height: '256',\n bbox: this._getBounds(coords.x, coords.y, zoom).join(',')\n });\n return tileUrl;\n };\n }\n _getWmsLayer(item, map) {\n const wmsLayer = new google.maps.ImageMapType({\n getTileUrl: this._getWmsTileUrl(item.url, item.include),\n //name: item.id,\n //alt: \"TODO\",\n minZoom: item.minZoom,\n maxZoom: item.maxZoom,\n opacity: 1 /* TODO */,\n });\n map.overlayMapTypes.push(wmsLayer);\n return wmsLayer;\n }\n _getTmsTileUrl(template) {\n const subdomains = 'abc';\n function getSubDomain(tilePoint) {\n const index = Math.abs(tilePoint.x + tilePoint.y) % subdomains.length;\n return subdomains[index];\n }\n //{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\n return (coords, zoom) => {\n const data = {\n r: /*retina ? '@2x' :*/ '',\n s: getSubDomain(coords),\n x: '' + coords.x,\n y: '' + coords.y,\n z: '' + zoom\n };\n let tileUrl = template;\n for (let prop in data) {\n tileUrl = tileUrl.replaceAll('{' + prop + '}', data[prop]);\n }\n return tileUrl;\n };\n }\n _getTmsLayer(item, map) {\n const wmsLayer = new google.maps.ImageMapType({\n getTileUrl: this._getTmsTileUrl(item.url),\n //name: item.id,\n //alt: \"TODO\",\n minZoom: item.minZoom,\n maxZoom: item.maxZoom,\n opacity: 1 /* TODO */,\n });\n map.overlayMapTypes.push(wmsLayer);\n return wmsLayer;\n }\n buildLayer(item, map) {\n const mode = (item.mode || '').toLowerCase();\n switch (mode) {\n case 'wms':\n return this._getWmsLayer(item, map);\n case 'tms':\n return this._getTmsLayer(item, map);\n default:\n throw new Error(`\"${item.mode}\" overlays not supported for the Google Maps integration.`);\n }\n }\n}\nfunction createOverlay(item) {\n //#region closure classes\n class PacemGoogleOverlay extends google.maps.OverlayView {\n constructor(_item) {\n super();\n this._item = _item;\n }\n get element() {\n return this._item;\n }\n get bounds() {\n const bounds = this._item.bounds;\n if (Utils.isNull(bounds)) {\n return null;\n }\n return GMapsUtils.getBounds(bounds);\n }\n getBoundingBox() {\n const proj = this.getProjection(), bounds = this.bounds;\n if (Utils.isNullOrEmpty(bounds)) {\n return null;\n }\n const sw = proj.fromLatLngToDivPixel({ lat: bounds.south, lng: bounds.west });\n const ne = proj.fromLatLngToDivPixel({ lat: bounds.north, lng: bounds.east });\n return { x: sw.x, y: ne.y, width: ne.x - sw.x, height: sw.y - ne.y };\n }\n }\n class PacemGoogleImageOverlay extends PacemGoogleOverlay {\n get src() {\n return this.element.src;\n }\n #div;\n onAdd() {\n // TODO: switch to canvas\n const div = this.#div = this.#div || document.createElement('div');\n div.style.position = 'absolute';\n const panes = this.getPanes();\n panes.overlayLayer.appendChild(div);\n }\n onRemove() {\n const div = this.#div;\n if (!Utils.isNull(div)) {\n div.remove();\n this.#div = null;\n }\n }\n draw() {\n const div = this.#div;\n if (Utils.isNull(div)) {\n return;\n }\n const bbox = this.getBoundingBox();\n if (Utils.isNull(bbox)) {\n return;\n }\n div.style.top = bbox.y + 'px';\n div.style.left = bbox.x + 'px';\n div.style.width = bbox.width + 'px';\n div.style.height = bbox.height + 'px';\n div.style.backgroundSize = `${bbox.width}px ${bbox.height}px`;\n div.style.backgroundImage = `url(${this.src})`;\n }\n }\n //#endregion\n if (item instanceof PacemMapOverlayImageElement) {\n return new PacemGoogleImageOverlay(item);\n }\n return null;\n}\n;\nclass PacemGoogleOverlayAdapter extends PacemOverlayAdapter {\n updateOverlay(overlay, map, item) {\n overlay.set;\n overlay.draw();\n }\n deleteOverlay(overlay, map) {\n overlay.setMap(null);\n }\n buildOverlay(item, map) {\n let overlay = createOverlay(item);\n overlay.setMap(map);\n return overlay;\n }\n setBounds(item, map, bounds) {\n item.draw();\n }\n}\nconst MAP_EVENTS = ['dragend', 'zoom_changed', 'center_changed', 'maptypeid_changed', 'tilt_changed', 'heading_changed', 'bounds_changed'];\nfunction getNativeMapStyle(options) {\n const theme = options.theme == MapColorScheme.DARK ? google.maps.ColorScheme.DARK : (options.theme != MapColorScheme.LIGHT ? google.maps.ColorScheme.FOLLOW_SYSTEM : google.maps.ColorScheme.LIGHT);\n switch (options.type) {\n case google.maps.MapTypeId.HYBRID:\n case google.maps.MapTypeId.ROADMAP:\n case google.maps.MapTypeId.TERRAIN:\n case google.maps.MapTypeId.SATELLITE:\n return { type: options.type, theme };\n case MapType.HYBRID:\n return { type: google.maps.MapTypeId.HYBRID, theme };\n case MapType.SATELLITE:\n return { type: google.maps.MapTypeId.SATELLITE, theme };\n case MapType.TERRAIN:\n return { type: google.maps.MapTypeId.TERRAIN, theme };\n default:\n return { type: google.maps.MapTypeId.ROADMAP, theme };\n }\n}\nlet PacemGoogleMapAdapterElement = class PacemGoogleMapAdapterElement extends PacemMapAdapterElement {\n geocode(address, maxResults) {\n const language = this.language || '', region = this.region || '', version = this.version || 'weekly';\n const geocoder = new PacemGoogleMapGeocoder(this.apiKey, language, region, version);\n return geocoder.geocode(address, maxResults);\n }\n reverseGeocode(latLng, maxResults) {\n const language = this.language || '', region = this.region || '', version = this.version || 'weekly';\n const geocoder = new PacemGoogleMapGeocoder(this.apiKey, language, region, version);\n return geocoder.reverseGeocode(latLng, maxResults);\n }\n getBounds(map) {\n if (!this.hasMap(map)) {\n return LatLngBounds.Empty;\n }\n const nativeMap = this.getMap(map);\n const retval = nativeMap.getBounds();\n return GMapsUtils.toLiteral(retval);\n }\n isActive() {\n return !Utils.isNullOrEmpty(this.apiKey);\n }\n buildMarkerAdapterFor(map) {\n return new PacemGoogleMarkerAdapter(map, this);\n }\n buildOverlayAdapterFor(map) {\n return new PacemGoogleOverlayAdapter(map, this);\n }\n buildShapeAdapterFor(map) {\n return new PacemGoogleShapeAdapter(map, this);\n }\n buildLayerAdapterFor(map) {\n return new PacemGoogleLayerAdapter(map, this);\n }\n getMaxAvailableZoom(latLng) {\n return new Promise((resolve, reject) => {\n const svc = new google.maps.MaxZoomService();\n svc.getMaxZoomAtLatLng(latLng, result => {\n if (result.status === google.maps.MaxZoomStatus.OK) {\n resolve(result.zoom);\n }\n else {\n reject();\n }\n });\n });\n }\n #listeners = new WeakMap();\n snapshot(ctrl, type = 'image/png', quality) {\n const { container } = this.tryGetMap(ctrl);\n return Utils.snapshotElement(container, null, type, quality);\n }\n setViewNative(ctrl, options) {\n const map = this.getMap(ctrl);\n options = Utils.extend({ type: ctrl.type, theme: ctrl.theme }, options);\n const { type, theme } = getNativeMapStyle(options);\n if (this.#bootstrapped && theme !== map.get('colorScheme')) {\n this._bootstrapDebounced();\n return;\n }\n map.setOptions({ colorScheme: theme, mapTypeId: type });\n if (typeof options.tilt === 'number') {\n map.setTilt(options.tilt);\n }\n if (typeof options.heading === 'number') {\n map.setHeading(options.heading);\n }\n // `setZoom` BEFORE\n // calling `panTo` method, otherwise\n // no smooth transition will be applied.\n const fnSetCenter = () => {\n if (options.center) {\n GMapsUtils.setCenter(map, options.center);\n }\n };\n if (typeof options.zoom === 'number' && options.zoom !== map.getZoom()) {\n const mapType = map.getMapTypeId();\n switch (mapType) {\n case google.maps.MapTypeId.SATELLITE:\n case google.maps.MapTypeId.HYBRID:\n // async retrieve\n const currentCenter = GMapsUtils.toLiteral(map.getCenter());\n this.getMaxAvailableZoom(currentCenter).then(z => {\n const zoom = Math.min(z, options.zoom);\n map.setZoom(zoom);\n fnSetCenter();\n });\n break;\n default:\n const zoom = Math.min(consts.MAX_ROADMAP_ZOOM, options.zoom);\n map.setZoom(zoom);\n fnSetCenter();\n break;\n }\n }\n else {\n fnSetCenter();\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'libraries':\n case 'apiKey':\n case 'language':\n case 'region':\n if (this.#bootstrapped) {\n this._bootstrapDebounced();\n }\n break;\n case 'defaultOptions':\n for (let map of this.enrolledMaps()) {\n this._updateMapOptions(map);\n }\n break;\n default:\n for (let map of this.enrolledMaps()) {\n this.invalidateSize(map);\n }\n break;\n }\n }\n }\n // #region ABSTRACT IMPLEMENTATION\n dispose(map) {\n const listeners = this.#listeners.get(map);\n while (listeners.length) {\n google.maps.event.removeListener(listeners.pop());\n }\n this.#listeners.delete(map);\n }\n _updateMapOptions(ctrl) {\n if (!this.hasMap(ctrl)) {\n return;\n }\n const { map } = this.tryGetMap(ctrl);\n map.setOptions(this._buildMapOptions(ctrl));\n }\n _buildMapOptions(ctrl) {\n const scale = ctrl.scale;\n const draggable = ctrl.draggable;\n const dblClickZoom = ctrl.doubleClickZoom;\n const kbShortcuts = ctrl.keyboardShortcuts;\n const { type: mapTypeId, theme: colorScheme } = getNativeMapStyle({ type: ctrl.type, theme: ctrl.theme });\n return Utils.extend({}, this.defaultOptions || { streetViewControl: false, zoomControl: false, mapTypeControl: false, fullscreenControl: false, cameraControl: false }, {\n zoomControl: scale && !Utils.isNullOrEmpty(ctrl.zoomControl),\n zoomControlOptions: {\n position: (function (zpos) {\n switch (zpos) {\n case 'topright':\n return google.maps.ControlPosition.RIGHT_TOP;\n case 'bottomleft':\n return google.maps.ControlPosition.LEFT_BOTTOM;\n case 'bottomright':\n return google.maps.ControlPosition.RIGHT_BOTTOM;\n default:\n return google.maps.ControlPosition.LEFT_TOP;\n }\n })(ctrl.zoomControl)\n },\n scrollwheel: ctrl.mousewheel,\n disableDoubleClickZoom: dblClickZoom,\n keyboardShortcuts: kbShortcuts,\n draggable: draggable,\n mapTypeId,\n colorScheme,\n tilt: ctrl.tilt,\n heading: ctrl.heading,\n });\n }\n #bootstrapped = false;\n _bootstrapDebounced() {\n this._bootstrap().then(_ => {\n for (let map of this.enrolledMaps()) {\n // HACK: (toggle adapter off/on)\n map.adapter = null;\n map.adapter = this;\n }\n });\n }\n _bootstrap() {\n return new Promise((resolve, reject) => {\n const apiKey = this.apiKey, language = this.language || '', region = this.region || '', version = this.version || 'weekly';\n bootstrapper.boostrap(apiKey, language, region, version).then(_ => {\n const promises = [];\n for (let lib of this.libraries || []) {\n promises.push(google.maps.importLibrary(lib));\n }\n Promise.all(promises).then(_ => {\n resolve();\n this.#bootstrapped = true;\n }, reject);\n }, reject);\n });\n }\n async init(container) {\n await this._bootstrap();\n //\n const ctrl = container;\n const centerPos = MapUtils.parseCoords(ctrl.center);\n const center = new google.maps.LatLng(centerPos[0], centerPos[1]);\n const mapOptions = this._buildMapOptions(ctrl);\n const canvas = ctrl.container;\n const mapElement = document.createElement('div');\n mapElement.style.width = '100%';\n mapElement.style.height = '100%';\n canvas.innerHTML = '';\n canvas.appendChild(mapElement);\n const map = new google.maps.Map(mapElement, mapOptions);\n const listeners = [];\n this.#listeners.set(ctrl, listeners);\n MAP_EVENTS.forEach(evt => {\n listeners.push(map.addListener(evt, this._spinMapUpdateHandler(ctrl, map)));\n });\n // setting now the center and zoom, triggers the \"load\" event and activates the child-components, if any.\n map.setZoom(ctrl.zoom);\n map.setCenter(center);\n // first-load\n var listener = map.addListener('idle', function once(e) {\n listener.remove();\n container.dispatchEvent(new MapEvent(\"maploaded\"));\n });\n // tilesloaded\n listeners.push(map.addListener('tilesloaded', evt => {\n container.dispatchEvent(new MapEvent(\"tilesloaded\"));\n }));\n // call setView NOW to trigger the load event :(\n const cnt = MapUtils.parseCoords(ctrl.center), xpr = new google.maps.LatLng(cnt[0], cnt[1]);\n map.setZoom(ctrl.zoom);\n map.setCenter(xpr);\n return { map, container: mapElement };\n }\n invalidateSize(ctrl) {\n if (!this.hasMap(ctrl)) {\n return;\n }\n const { map } = this.tryGetMap(ctrl);\n google.maps.event.trigger(map, \"resize\");\n }\n //#endregion\n _spinMapUpdateHandler(ctrl, map) {\n return () => {\n if (!Utils.isNull(map) && !Utils.isNull(ctrl)) {\n const center = map.getCenter();\n if (Utils.isNull(center)) {\n // not fully initialized yet\n return;\n }\n this.updateMapElement(ctrl, {\n center: { lat: center.lat(), lng: center.lng() }, zoom: map.getZoom(),\n type: map.getMapTypeId(), tilt: map.getTilt(), heading: map.getHeading()\n });\n }\n };\n }\n fitBoundsNative(ctrl, bounds, padding = this._getPadding(ctrl)) {\n const map = this.tryGetMap(ctrl)?.map;\n if (Utils.isNull(map)) {\n return;\n }\n const bnds = GMapsUtils.getBounds(bounds);\n GMapsUtils.fitBounds(map, bnds, padding);\n }\n ;\n _getPadding(ctrl) {\n const top = ctrl.paddingTop || 0, left = ctrl.paddingLeft || 0, right = ctrl.paddingRight || 0, bottom = ctrl.paddingBottom || 0;\n if (left || top || right || bottom) {\n return { top, bottom, left, right };\n }\n return null;\n }\n /**\n @deprecated\n */\n _padBounds(ctrl) {\n const paddingTop = ctrl.paddingTop || 0, paddingLeft = ctrl.paddingLeft || 0, paddingRight = ctrl.paddingRight || 0, paddingBottom = ctrl.paddingBottom || 0;\n if (paddingLeft || paddingTop || paddingRight || paddingBottom) {\n const map = this.tryGetMap(ctrl).map;\n const bnds = map.getBounds();\n const w = map.getDiv().clientWidth, h = map.getDiv().clientHeight;\n //\n const n_nw = map.getProjection().fromPointToLatLng(new google.maps.Point(-paddingLeft, -paddingTop));\n const n_se = map.getProjection().fromPointToLatLng(new google.maps.Point(w + paddingRight, h + paddingBottom));\n //\n bnds.extend(n_nw);\n bnds.extend(n_se);\n }\n }\n _redrawMap() {\n // do nothing (no tiles)\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemGoogleMapAdapterElement.prototype, \"apiKey\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemGoogleMapAdapterElement.prototype, \"version\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemGoogleMapAdapterElement.prototype, \"language\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemGoogleMapAdapterElement.prototype, \"region\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemGoogleMapAdapterElement.prototype, \"defaultOptions\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.StringArray })\n], PacemGoogleMapAdapterElement.prototype, \"libraries\", void 0);\n__decorate([\n Debounce(consts.DETACH_TIMEOUT)\n], PacemGoogleMapAdapterElement.prototype, \"_bootstrapDebounced\", null);\nPacemGoogleMapAdapterElement = __decorate([\n CustomElement({ tagName: P + '-map-adapter-google' })\n], PacemGoogleMapAdapterElement);\nexport { PacemGoogleMapAdapterElement };\n//#region geocoders\nclass PacemGoogleMapGeocoder {\n constructor(apiKey, language = '', region = '', version = 'weekly') {\n this.apiKey = apiKey;\n this.language = language;\n this.region = region;\n this.version = version;\n }\n /**\n * Try add altitude info.\n * @param results\n * @returns\n */\n _elevateResults(set) {\n return new Promise((resolve, reject) => {\n // try get elevation as well\n const elevation = new google.maps.ElevationService();\n elevation.getElevationForLocations({ locations: set.map(i => i.geometry.location) }, (results2, status2) => {\n if (status2 === google.maps.ElevationStatus.OK) {\n const retval = GMapsUtils.mapGeocodeResults(set, results2);\n // success\n resolve(retval);\n }\n else {\n // partial success (no elevation)\n const retval = GMapsUtils.mapGeocodeResults(set);\n resolve(retval);\n }\n });\n });\n }\n geocode(search, maxResults = 10) {\n return new Promise((resolve, reject) => {\n bootstrapper.boostrap(this.apiKey, this.language || '', this.region || '', this.version || 'weekly').then(_ => {\n const geocoder = new google.maps.Geocoder();\n geocoder.geocode({\n address: search,\n //language: this.language || '',\n //region: this.region || ''\n }, (results, status) => {\n if (status === google.maps.GeocoderStatus.OK\n || status == google.maps.GeocoderStatus.ZERO_RESULTS) {\n const set = (results || [])\n .filter((_, index) => index < (maxResults || 10));\n this._elevateResults(set).then(resolve);\n }\n else {\n // error\n reject(status);\n }\n });\n }, reject);\n });\n }\n _reverseGeocodeInternal(position, maxResults) {\n const location = GMapsUtils.getPosition(position);\n return new Promise((resolve, reject) => {\n bootstrapper.boostrap(this.apiKey, this.language || '', this.region || '', this.version || 'weekly').then(_ => {\n const geocoder = new google.maps.Geocoder();\n geocoder.geocode({\n location,\n //language: this.language || '',\n //region: this.region || ''\n }, (results, status) => {\n if (status === google.maps.GeocoderStatus.OK\n || status == google.maps.GeocoderStatus.ZERO_RESULTS) {\n const set = (results || [])\n .filter((_, index) => index < (maxResults || 10));\n this._elevateResults(set).then(resolve);\n }\n else {\n // error\n reject(status);\n }\n });\n }, reject);\n });\n }\n reverseGeocode(position, maxResults = 1) {\n return this._reverseGeocodeInternal(position, maxResults);\n }\n}\n//#endregion\n//}\n","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","EMPTY_LATLNG","lat","Number","NaN","lng","LatLng","Empty","isEmpty","l","isNaN","isLatLng","obj","translate","start","delta","equals","a","b","EMPTY_LATLNG_BOUNDS","ne","sw","LatLngBounds","bnds","isPoint","this","isLatLngBounds","union","Math","max","min","MapProjectionConsts","SIZE","RAD","PI","DEG","SIN_LIMIT","EARTH_RADIUS","_MapConsts","MapProjection","constructor","_pixelSize","_bounds","_normalizedSize","hSize","center","x","y","sizerad","sizedeg","bottomLeft","_latLngToWorldNormalizedPoint","topRight","latLng","latRad","limit","sin","clamp","log","_worldNormalizedPointToLatLng","point","atan","exp","_latLngToPoint","deltaLat","deltaLng","width","height","_pointToLatLng","_haversine","from","to","degToRad","lambda1","lambda2","phi1","phi2","asin","sqrt","pow","cos","_offsetByMeters","dNorth","dEast","radius","deg2Rad","rad2Deg","lat1","offsetBy","north","east","distanceBetween","latLngToPoint","bounds","size","pointToLatLng","Transformer","MapType","MapColorScheme","MapConstsInternal","MAP_SELECTOR","P","MARKER_SELECTOR","POLYLINE_SELECTOR","CIRCLE_SELECTOR","POLYGON_SELECTOR","LAYER_SELECTOR","OVERLAY_IMAGE_SELECTOR","GEOCODER_SELECTOR","DEFAULT_COORDS","MapConsts","DEFAULT_MAPTARGET_KEY","LatLngConverter","convert","attr","arr","exec","parseFloat","JSON","parse","convertBack","prop","stringify","LatLngBoundsConverter","MapUtils","parseCoords","input","Utils","isArray","test","splitted","split","expandBounds","Array","push","isContentEmpty","element","children","MapRelevantElement","PacemEventTarget","map","CustomElementUtils","findAncestorOfType","PacemMapElement","propertyChangedCallback","name","old","val","first","super","adapter","fitBounds","viewActivatedCallback","register","disconnectedCallback","unregister","Watch","converter","PropertyConverters","Boolean","prototype","MapEvent","CustomTypedEvent","type","args","PacemMapGeocodeElement","debounce","fetching","handle","promise","_guards","results","isNullOrEmpty","result","isNull","position","search","fullAddress","Promise","resolve","disabled","active","geocode","reverseGeocode","_broadcastFetchingUpdate","f","dispatchEvent","PropertyChangeEvent","propertyName","oldValue","currentValue","_fetch","wrapper","current","then","_successCallback","e","_errorCallback","_debounce","callback","clearTimeout","window","setTimeout","maxResults","uniqueCode","any","CustomEvent","detail","bubbles","cancelable","emit","Element","Json","String","CustomElement","tagName","PacemMapAdapterElement","maps","Map","markers","WeakMap","shapes","layers","overlays","isActive","layerAdapters","overlayAdapters","markerAdapters","shapeAdapters","hasMap","has","enrolledMaps","keys","tryGetMap","get","getMap","retval","initialize","init","set","buildLayerAdapterFor","buildOverlayAdapterFor","buildMarkerAdapterFor","buildShapeAdapterFor","container","destroy","delete","dispose","removeItem","item","ctrl","PacemMapLayerElement","removeLayer","PacemMapMarkerElement","removeMarker","PacemMapShapeElement","shape","removeShape","PacemMapOverlayElement","removeOverlay","inactive","drawItem","drawLayer","drawMarker","drawShape","drawOverlay","popupInfoWindow","openInfoWindow","popoutInfoWindow","closeInfoWindow","setView","zoom","options","extend","setViewNative","onlyIfAutofitOrBounds","m","_fitBounds","autofit","fitBoundsNative","markersBounds","getBounds","shapesBounds","emptyMarkerBounds","emptyShapeBounds","updateMapElement","arg1","arg2","forEach","updateBounds","Debounce","id","MapItemAdapter","_map","_adapter","PacemOverlayAdapter","onOverlayLoad","evt","Event","ensureOverlay","overlay","buildOverlay","layer","deleteOverlay","hide","setBounds","updateOverlay","PacemMapOverlayImageElement","PacemLayerAdapter","loadHandlers","onTileLoad","ensureLayer","buildLayer","handler","addLoadEventListener","handlers","removeLoadEventListener","deleteLayer","PacemMarkerAdapter","mapAutomaticallyScrollsOnDrag","infoWindows","filter","_","marker","getMarkerPosition","onDragEnd","dpos","onClick","onInfoOpen","onInfoClose","ensureMarker","buildMarker","addClickEventListener","addDragEventListener","addDragEndEventListener","deleteMarker","setPosition","setIcon","icon","setLabel","caption","setDraggable","draggable","info","closeInfo","ensureInfoWindow","buildInfoWindow","addCloseClickEventListener","deleteInfoWindow","content","innerHTML","setContent","openInfo","PacemShapeAdapter","s","getShapeBounds","deleteShape","_dispatchEvent","getShapePosition","dragDelta","onDragStart","neStart","neEnd","_translateShape","PacemMapCircleElement","PacemMapPolylineElement","path","vertices","p","PacemMapPolygonElement","onDrag","ensureShape","buildShape","addDragStartEventListener","setShape","setEditable","editable","scale","mousewheel","doubleClickZoom","keyboardShortcuts","paddingTop","paddingLeft","paddingRight","paddingBottom","tilt","heading","_drawHandler","_draw","_listenToActiveAdapter","removeEventListener","PropertyChangeEventName","_switchAdapter","_initialized","_afterInit","child","findDescendants","n","_erase","_resizeHandler","onResize","_container","addEventListener","_setupContainer","theme","_dismissContainer","_setupResizer","_dismissResizer","invalidateSize","dataset","remove","removeClass","PCSS","resizer","_resizer","document","createElement","insertAdjacentElement","addClass","Error","_detach","consts","PacemMapGeolocateElement","permission","maximumAge","timeout","_setFetching","coords","latitude","longitude","timestamp","altitude","speed","err","_errToString","_checkPermission","permissionApi","navigator","permissions","query","state","fetch","geolocation","getCurrentPosition","enableHighAccuracy","code","GeolocationPositionError","PERMISSION_DENIED","POSITION_UNAVAILABLE","TIMEOUT","PacemAzureMapAdapterElement_1","convertAddress","address","city","municipality","countrySubdivision","province","countrySecondarySubdivision","village","municipalitySubdivision","localName","zipCode","postalCode","streetName","street","houseNumber","buildingNumber","streetNumber","countryCode","country","AtlasMapUtils","getPosition","atlas","data","Position","fromLatLng","BoundingBox","fromPositions","getLatLng","getLatLngBounds","getNorthEast","getSouthWest","parseGeocoding","response","freeformAddress","lon","parseReverseGeocoding","location","summary","numResults","addr","addresses","PacemAzureOverlayAdapter","PacemAzureLayerAdapter","PacemAzureMarkerAdapter","getOptions","HtmlMarker","add","setOptions","popup","Popup","events","_setPopupPosition","_getPopup","popupOptions","pixelOffset","fnIcon","w","h","htmlContent","anchor","url","label","text","isOpen","close","_setContent","togglePopup","addOnce","PacemAzureShapeAdapter","PacemAzureMapGeocoder","_buildGeocodeRequest","language","uri","URIs","appendQuery","mode","parseGeocodeResponse","reject","json","request","ok","_buildReverseRequest","_parseReverseResponse","MAP_EVENTS","PacemAzureMapAdapterElement","subscriptionKey","lang","getCamera","style","darkTheme","DARK","LIGHT","matchMedia","matches","HYBRID","SATELLITE","TERRAIN","HIGH_CONTRAST","getNativeMapStyle","setStyle","setCamera","listeners","snapshot","quality","blobToDataURL","blobs","dataUrl","getCanvasContainer","backgroundImage","backgroundSize","snapshotElement","listener","eventName","all","importjs","importcss","undefined","dblClickZoom","kbShortcuts","mapOptions","dragPanInteraction","scrollZoomInteraction","dblClickZoomInteraction","keyboardInteraction","canvas","mapElement","appendChild","_spinMapUpdateHandler","zoomControl","pos","ControlPosition","NonFixed","TopLeft","TopRight","BottomRight","BottomLeft","controls","control","ZoomControl","getCanvas","toBlob","blob","resize","_updateMap","camera","console","warn","_getBounds","top","bottom","left","right","padding","convertResponse","display_name","provinceCode","county","postcode","road","house_number","country_code","toUpperCase","LeafletUtils","toLiteral","LayerLoadEventName","LayerLoadEvent","PacemLeafletMarkerAdapter","unbindPopup","removeFrom","L","addTo","on","setLatLng","_setIcon","iconUrl","iconSize","iconAnchor","popupAnchor","Icon","dragging","enable","disable","closePopup","bindPopup","openPopup","getPopup","getContent","setPopupContent","v","ndx","size0","parseInt","substring","indexOf","assign","anchor0","PacemLeafletShapeAdapter","PacemLeafletLayerAdapter","off","toLowerCase","tileLayer","wms","include","join","minZoom","maxZoom","transparent","format","tms","PacemLeafletOverlayAdapter","PacemLeafletMapAdapterElement","tileLayers","tiles","attribution","_tileLayerLoadHandler","dispatchLayerLoadEvent","sourceTarget","_mapUpdateHandler","getCenter","getZoom","PacemNominatimMapGeocoder","animate","setZoom","firstElementChild","_redrawMap","clearAllEventListeners","scrollWheelZoom","keyboard","_idleFiller","once","fire","cnt","xpr","pads","paddingTopLeft","Point","paddingBottomRight","setUrl","q","DETACH_TIMEOUT","API_URI","MAX_ROADMAP_ZOOM","BOOTSTRAP_SNIPPET","region","MAPS_NOT_FOUND","GEOCODER_UNAVAILABLE","INVALID_KEY","TILE_EXTENT","Bootstrapper","params","_equivalent","version","guard","_spinFuture","_ensureBootstrapScript","google","importLibrary","boostrap","uniqueAttrName","uniqueAttrValue","script","querySelector","getAttribute","querySelectorAll","setAttribute","textContent","head","bootstrapper","GMapsUtils","south","west","mapGeocodeResults","j","elevation","mapGeocodeResult","address_components","find","types","long_name","comune","provinceObj","short_name","countryObj","structuredAddress","geometry","location_type","formatted_address","areEqual","l1","l2","latLng1","latLng2","setCenter","panTo","PacemGoogleShapeAdapter","Circle","Polygon","Polyline","getPath","setMap","clickable","paths","addListener","strokeColor","stroke","color","strokeOpacity","alpha","strokeWeight","thickness","strokePosition","StrokePosition","CENTER","fillColor","fill","fillOpacity","PacemGoogleMarkerAdapter","unbindAll","Marker","Size","open","offsX","InfoWindow","PacemGoogleLayerAdapter","index","overlayMapTypes","getArray","findIndex","removeAt","ext","tileSize","minx","maxx","_getWmsTileUrl","service","styles","srs","bbox","_getWmsLayer","wmsLayer","ImageMapType","getTileUrl","opacity","_getTmsTileUrl","template","tilePoint","abs","subdomains","z","tileUrl","replaceAll","_getTmsLayer","PacemGoogleOverlayAdapter","draw","PacemGoogleOverlay","OverlayView","_item","getBoundingBox","proj","getProjection","fromLatLngToDivPixel","PacemGoogleImageOverlay","src","div","onAdd","getPanes","overlayLayer","onRemove","createOverlay","ColorScheme","FOLLOW_SYSTEM","MapTypeId","ROADMAP","PacemGoogleMapAdapterElement","PacemGoogleMapGeocoder","apiKey","getMaxAvailableZoom","MaxZoomService","getMaxZoomAtLatLng","status","MaxZoomStatus","OK","bootstrapped","_bootstrapDebounced","colorScheme","mapTypeId","setTilt","setHeading","fnSetCenter","getMapTypeId","currentCenter","_updateMapOptions","event","removeListener","pop","_buildMapOptions","defaultOptions","streetViewControl","mapTypeControl","fullscreenControl","cameraControl","zoomControlOptions","zpos","RIGHT_TOP","LEFT_BOTTOM","RIGHT_BOTTOM","LEFT_TOP","scrollwheel","disableDoubleClickZoom","_bootstrap","promises","lib","libraries","centerPos","trigger","getTilt","getHeading","_getPadding","_padBounds","getDiv","clientWidth","clientHeight","n_nw","fromPointToLatLng","n_se","StringArray","_elevateResults","ElevationService","getElevationForLocations","locations","results2","status2","ElevationStatus","Geocoder","GeocoderStatus","ZERO_RESULTS","_reverseGeocodeInternal","DeepMerger","merge","Output"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
* @pacem/pacem v1.0.0-
|
|
3
|
-
*
|
|
1
|
+
/*!
|
|
2
|
+
* @pacem/pacem v1.0.0-amaldi (https://js.pacem.it)
|
|
3
|
+
* Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
(function (pacemFoundation, pacemCore) {
|