@pacem/pacem 1.0.0-bessel → 1.0.0-binet

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/browser/pacem-2d.js +149 -2
  2. package/dist/browser/pacem-2d.js.map +1 -1
  3. package/dist/browser/pacem-2d.min.js +1 -1
  4. package/dist/browser/pacem-3d.js +646 -2
  5. package/dist/browser/pacem-3d.js.map +1 -1
  6. package/dist/browser/pacem-3d.min.js +1 -1
  7. package/dist/browser/pacem-charts.js +21 -1
  8. package/dist/browser/pacem-charts.js.map +1 -1
  9. package/dist/browser/pacem-charts.min.js +1 -1
  10. package/dist/browser/pacem-cms.js +118 -3
  11. package/dist/browser/pacem-cms.js.map +1 -1
  12. package/dist/browser/pacem-cms.min.js +1 -1
  13. package/dist/browser/pacem-core.js +870 -9
  14. package/dist/browser/pacem-core.js.map +1 -1
  15. package/dist/browser/pacem-core.min.js +2 -2
  16. package/dist/browser/pacem-foundation.js +296 -1
  17. package/dist/browser/pacem-foundation.js.map +1 -1
  18. package/dist/browser/pacem-foundation.min.js +1 -1
  19. package/dist/browser/pacem-fx.js +18 -1
  20. package/dist/browser/pacem-fx.js.map +1 -1
  21. package/dist/browser/pacem-fx.min.js +1 -1
  22. package/dist/browser/pacem-logging.js +15 -1
  23. package/dist/browser/pacem-logging.js.map +1 -1
  24. package/dist/browser/pacem-logging.min.js +1 -1
  25. package/dist/browser/pacem-maps.js +97 -1
  26. package/dist/browser/pacem-maps.js.map +1 -1
  27. package/dist/browser/pacem-maps.min.js +1 -1
  28. package/dist/browser/pacem-media.js +14 -1
  29. package/dist/browser/pacem-media.js.map +1 -1
  30. package/dist/browser/pacem-media.min.js +1 -1
  31. package/dist/browser/pacem-networking.js +22 -1
  32. package/dist/browser/pacem-networking.js.map +1 -1
  33. package/dist/browser/pacem-networking.min.js +1 -1
  34. package/dist/browser/pacem-numerical.js +360 -1
  35. package/dist/browser/pacem-numerical.js.map +1 -1
  36. package/dist/browser/pacem-numerical.min.js +1 -1
  37. package/dist/browser/pacem-plus.js +195 -4
  38. package/dist/browser/pacem-plus.js.map +1 -1
  39. package/dist/browser/pacem-plus.min.js +1 -1
  40. package/dist/browser/pacem-scaffolding.js +420 -38
  41. package/dist/browser/pacem-scaffolding.js.map +1 -1
  42. package/dist/browser/pacem-scaffolding.min.js +2 -2
  43. package/dist/browser/pacem-ui.js +143 -19
  44. package/dist/browser/pacem-ui.js.map +1 -1
  45. package/dist/browser/pacem-ui.min.js +2 -2
  46. package/dist/bundle/pacem.min.mjs +147 -147
  47. package/dist/bundle/pacem.mjs +2905 -1417
  48. package/dist/bundle/pacem.mjs.map +3 -3
  49. package/dist/docs/pacem-2d.json +11549 -0
  50. package/dist/docs/pacem-3d.json +29096 -0
  51. package/dist/docs/pacem-charts.json +4244 -0
  52. package/dist/docs/pacem-cms.json +9325 -0
  53. package/dist/docs/pacem-core.json +40109 -0
  54. package/dist/docs/pacem-foundation.json +8941 -0
  55. package/dist/docs/pacem-fx.json +3121 -0
  56. package/dist/docs/pacem-logging.json +941 -0
  57. package/dist/docs/pacem-maps.json +17387 -0
  58. package/dist/docs/pacem-media.json +1203 -0
  59. package/dist/docs/pacem-networking.json +1798 -0
  60. package/dist/docs/pacem-numerical.json +13706 -0
  61. package/dist/docs/pacem-plus.json +8468 -0
  62. package/dist/docs/pacem-scaffolding.json +34788 -0
  63. package/dist/docs/pacem-ui.json +18628 -0
  64. package/dist/typings/index.d.ts +4109 -31
  65. package/dist/vscode.html-custom.json +1303 -741
  66. package/package.json +4 -2
@@ -1 +1 @@
1
- {"version":3,"file":"pacem-maps.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","this","Transformer","P","Utils","PacemEventTarget","CustomElementUtils","Watch","PropertyConverters","CustomTypedEvent","PropertyChangeEvent","CustomElement","Debounce","PropertyChangeEventName","PCSS","consts","convertAddress","MAP_EVENTS","getNativeMapStyle","DeepMerger"],"mappings":"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"}
1
+ {"version":3,"file":"pacem-maps.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 };\n/** Static helpers for working with {@link LatLng} literals: the well-known {@link Empty} value, equality/emptiness checks, and translation. */\nexport class LatLng {\n /** Gets the well-known \"empty\" (`NaN`/`NaN`) {@link LatLng}. */\n static get Empty() {\n return EMPTY_LATLNG;\n }\n /** Returns whether the given {@link LatLng} is the {@link Empty} value (or otherwise has `NaN` coordinates). */\n static isEmpty(l) {\n return l === EMPTY_LATLNG || (isNaN(l.lat) && isNaN(l.lng));\n }\n /** Type-guard: returns whether the given object structurally looks like a {@link LatLng}. */\n static isLatLng(obj) {\n return 'lat' in obj && typeof obj.lat === 'number'\n && 'lng' in obj && typeof obj.lng == 'number';\n }\n /** Returns a new {@link LatLng} obtained by adding `delta`'s coordinates to `start`'s. */\n static translate(start, delta) {\n // TODO: handle 'EDGE' cases!\n return { lat: start.lat + delta.lat, lng: start.lng + delta.lng };\n }\n /** Returns whether two {@link LatLng} values are equal (by reference or by coordinates). */\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;\n/** Static helpers for working with {@link LatLngBounds} literals: the well-known {@link Empty} value, emptiness/point checks, and union. */\nexport class LatLngBounds {\n /** Gets the well-known \"empty\" {@link LatLngBounds}. */\n static get Empty() {\n return EMPTY_LATLNG_BOUNDS;\n }\n /** Returns whether the given {@link LatLngBounds} is the {@link Empty} value (or otherwise has empty corners). */\n static isEmpty(bnds) {\n return bnds === EMPTY_LATLNG_BOUNDS || (LatLng.isEmpty(bnds.ne) && LatLng.isEmpty(bnds.sw));\n }\n /** Returns whether the given bounds collapse to a single point (equal, non-empty corners). */\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 /** Type-guard: returns whether the given object structurally looks like a {@link LatLngBounds}. */\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 /** Returns whether two {@link LatLngBounds} values are equal (by reference or by corners). */\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};\n/** Converts between geographic coordinates ({@link LatLng}) and pixel coordinates within a given viewport ({@link LatLngBounds} over a {@link Size}), plus static distance/offset helpers usable as Pacem expression transformers. */\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 /**\n * Projects a geographic position onto pixel coordinates within a viewport of the given `size` and `bounds`.\n * @param latLng Position to project.\n * @param bounds Viewport geographic bounds.\n * @param size Viewport pixel size.\n */\n static latLngToPoint(latLng, bounds, size) {\n return new MapProjection(size, bounds)._latLngToPoint(latLng);\n }\n /**\n * Un-projects a pixel coordinate within a viewport of the given `size` and `bounds` back to a geographic position.\n * @param point Pixel coordinate to un-project.\n * @param size Viewport pixel size.\n * @param bounds Viewport geographic bounds.\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 {\n/** Base map rendering style, abstracted across the Azure Maps/Google Maps/Leaflet adapters. */\nexport var MapType;\n(function (MapType) {\n /** Standard road/street map. */\n MapType[\"ROAD\"] = \"road\";\n /** Satellite imagery only. */\n MapType[\"SATELLITE\"] = \"satellite\";\n /** Satellite imagery with road labels overlaid. */\n MapType[\"HYBRID\"] = \"hybrid\";\n /** Terrain/relief map. */\n MapType[\"TERRAIN\"] = \"terrain\";\n /** High-contrast variant, where supported by the underlying provider. */\n MapType[\"HIGH_CONTRAST\"] = \"high_contrast\";\n})(MapType || (MapType = {}));\n/** Color scheme applied to the map style, where supported by the underlying provider. */\nexport var MapColorScheme;\n(function (MapColorScheme) {\n /** Forces the light variant of the map style. */\n MapColorScheme[\"LIGHT\"] = \"light\";\n /** Forces the dark variant of the map style. */\n MapColorScheme[\"DARK\"] = \"dark\";\n /** Follows the OS/browser color-scheme preference. */\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};\n/** Public map-related constants, currently exposing the library's default center coordinates. */\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';\n/** {@link PropertyConverter} that parses a `\"lat,lng\"` (or JSON) attribute into a {@link LatLng}, and serializes it back to JSON. */\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};\n/** {@link PropertyConverter} that parses a `\"neLat,neLng,swLat,swLng\"` (or JSON) attribute into a {@link LatLngBounds}, and serializes it back to JSON. */\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};\n/** Static helpers shared across map adapters: coordinate parsing, bounds expansion, and content-emptiness checks. */\nexport class MapUtils {\n /** Parses a `LatLng`, a `[lat, lng]` array, or a `\"lat,lng\"` string into a `[lat, lng]` tuple; falls back to {@link MapConsts.DEFAULT_COORDS} when unparsable. */\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 /** Appends the given `LatLng` (or `[lat, lng]` array) to the `bnds` collection, in-place, unless it is nullish. */\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 /** Returns whether the given element has no child elements (used to decide whether to fall back to a marker's plain `caption`). */\n static isContentEmpty(element) {\n return element.children.length == 0;\n }\n}\n;\n/** Abstract base for every map-relevant custom element (markers, shapes, layers, overlays) that registers itself with an ancestor {@link PacemMapElement} and is drawn/removed through its currently active {@link PacemMapAdapterElement}. */\nexport class MapRelevantElement extends PacemEventTarget {\n /** @readonly Gets the ancestor {@link PacemMapElement} this item belongs to. */\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);\n/** Typed `CustomEvent` dispatched by map-relevant elements/adapters, carrying a {@link MapEventArgs} payload (e.g. a click/drag position). */\nexport class MapEvent extends CustomTypedEvent {\n constructor(type, args) {\n super(type, args);\n }\n}\n/** `<pacem-map-geocode>`: debounced geocoding/reverse-geocoding helper element that delegates to its {@link adapter}'s {@link MapGeocoder} implementation, exposing `search`/`position` as inputs and `results` as output. */\nlet PacemMapGeocodeElement = class PacemMapGeocodeElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n /** Gets or sets the debounce (in milliseconds) applied before a `search`/`position` change triggers a new request. */\n this.debounce = 1000;\n this.#fetching = false;\n }\n #fetching;\n #handle;\n #promise;\n /** @readonly Gets whether a geocode/reverse-geocode request is currently in flight. */\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\n/**\n * Abstract base for every map-provider adapter (Azure Maps, Google Maps, Leaflet, ...). Bridges one or more {@link PacemMapElement} instances to a concrete native map implementation, owning the geocoding, and the per-map marker/shape/layer/overlay adapter registries, the viewport (`setView`/`fitBounds`) logic and the `initialize`/`destroy` lifecycle shared by every provider-specific subclass (e.g. `PacemAzureMapAdapterElement`, `PacemGoogleMapAdapterElement`, `PacemLeafletMapAdapterElement`).\n */\nexport class PacemMapAdapterElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n /** Gets or sets whether this adapter is currently active (i.e. properly configured and enabled) for its enrolled maps. */\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);\n/** Abstract base for the per-{@link PacemMapElement} adapter objects that translate a specific kind of {@link MapRelevantElement} (marker, shape, layer, overlay) into calls against the native map (`TMap`) exposed by a {@link PacemMapAdapterElement} (`TAdapter`). */\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}\n/** Abstract {@link MapItemAdapter} that manages the lifecycle of provider-native overlays (`TOverlay`) mirroring {@link PacemMapOverlayElement} instances: building, bounding and updating them as the corresponding elements change. */\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}\n/** Abstract base for map overlay elements (e.g. {@link PacemMapOverlayImageElement}) positioned within a geographic {@link LatLngBounds}. */\nexport class PacemMapOverlayElement extends MapRelevantElement {\n}\n__decorate([\n Watch({ emit: false, converter: LatLngBoundsConverter })\n], PacemMapOverlayElement.prototype, \"bounds\", void 0);\n/** `<pacem-map-overlay-image>`: {@link PacemMapOverlayElement} that renders a raster image stretched over its {@link PacemMapOverlayElement.bounds bounds}. */\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 };\n/** Abstract {@link MapItemAdapter} that manages the lifecycle of provider-native tile layers (`TLayer`, WMS/TMS) mirroring {@link PacemMapLayerElement} instances, including their `tileload` event wiring. */\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}\n/** `<pacem-map-layer>`: {@link MapRelevantElement} declaring a raster tile layer (WMS or TMS) to be added to the map. */\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 };\n/** Abstract {@link MapItemAdapter} that manages the lifecycle of provider-native markers (`TMarker`) and their info windows (`TInfoWindow`) mirroring {@link PacemMapMarkerElement} instances: position/icon/label/draggable sync, click/drag event wiring, and info-window open/close. */\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}\n/** `<pacem-map-marker>`: {@link MapRelevantElement} representing a draggable, labeled marker with an optional info window, positioned at a {@link LatLng}. */\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 };\n/** Abstract {@link MapItemAdapter} that manages the lifecycle of provider-native shapes (`TShape`, e.g. polyline/polygon/circle) mirroring {@link PacemMapShapeElement} instances: geometry/style sync, drag/click event wiring, and drag-translation of the underlying element's coordinates. */\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}\n/** Abstract base for map shape elements ({@link PacemMapPolylineElement}, {@link PacemMapPolygonElement}, {@link PacemMapCircleElement}) sharing draggable/editable state and stroke/fill styling. */\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);\n/** `<pacem-map-polyline>`: {@link PacemMapShapeElement} rendering an open polyline through its {@link vertices}. */\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 };\n/** `<pacem-map-polygon>`: {@link PacemMapShapeElement} rendering a closed, fillable polygon through its {@link vertices}. */\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 };\n/** `<pacem-map-circle>`: {@link PacemMapShapeElement} rendering a circle at {@link center} with the given {@link radius}. */\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\n/** `<pacem-map>`: root map element hosting an active {@link PacemMapAdapterElement} (Azure Maps/Google Maps/Leaflet), rendering into its `target` (or an auto-generated container), and coordinating the registration/drawing of all descendant {@link MapRelevantElement} items. */\nlet PacemMapElement = class PacemMapElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n /** Gets or sets the map zoom level. */\n this.zoom = 12;\n /** Gets or sets the map center position. */\n this.center = MapConstsInternal.DEFAULT_COORDS;\n this.#bounds = LatLngBounds.Empty;\n /** Gets or sets whether to show the scale/zoom control. */\n this.scale = true;\n /** Gets or sets whether zooming with the mouse wheel is enabled. */\n this.mousewheel = true;\n /** Gets or sets whether the map can be panned by dragging. */\n this.draggable = true;\n /** Gets or sets whether double-click zooming is enabled. */\n this.doubleClickZoom = true;\n /** Gets or sets whether keyboard shortcuts are enabled. */\n this.keyboardShortcuts = true;\n /** Gets or sets whether to autofit the bounds whenever the map gets refreshed. */\n this.autofit = true;\n /** Gets or sets the top padding (in pixels) considered when fitting bounds. */\n this.paddingTop = 0;\n /** Gets or sets the left padding (in pixels) considered when fitting bounds. */\n this.paddingLeft = 0;\n /** Gets or sets the right padding (in pixels) considered when fitting bounds. */\n this.paddingRight = 0;\n /** Gets or sets the bottom padding (in pixels) considered when fitting bounds. */\n this.paddingBottom = 0;\n // GMaps features\n /** Gets or sets the map tilt angle in degrees (Google Maps only). */\n this.tilt = 0;\n /** Gets or sets the map heading/rotation in degrees (Google Maps only). */\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 /** Updates the {@link bounds} property, emitting a `PropertyChangeEvent` when it actually changed. */\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 /** @readonly Gets the current viewport bounds, as last reported by the active adapter. */\n get bounds() {\n return this.#bounds;\n }\n /** @readonly Gets the DOM element the native map is currently rendered into. */\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};\n/** `<pacem-map-geolocate>`: wraps the browser's Geolocation API, exposing the permission state and resolved {@link position} (with altitude/heading/speed/timestamp), meant to be used together with a `<pacem-map>`/`<pacem-map-marker>` pair. */\nlet PacemMapGeolocateElement = class PacemMapGeolocateElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n /** Gets or sets the current geolocation permission state (`'granted'`, `'denied'`, or `'prompt'`). */\n this.permission = 'prompt';\n /** Gets or sets the maximum age (in milliseconds) of a cached position that is acceptable to return. */\n this.maximumAge = 15000;\n /** Gets or sets the maximum time (in milliseconds) to wait for a position before failing with a timeout error. */\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 /** @readonly Gets whether a geolocation request is currently in progress. */\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 /** Requests the current position from the browser's Geolocation API, updating {@link position}/{@link permission} and firing `success`/`error` events. */\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}\n/** `<pacem-map-adapter-azure>`: {@link PacemMapAdapterElement} backed by Azure Maps (`atlas`), dynamically loading the Azure Maps SDK/CSS and translating the abstract map/marker/shape/layer/overlay lifecycle onto it. */\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}\n/** Event name dispatched by {@link PacemLeafletMapAdapterElement} whenever a tile layer finishes loading. */\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}\n/** `<pacem-map-adapter-leaflet>`: {@link PacemMapAdapterElement} backed by Leaflet, dynamically loading the Leaflet SDK/CSS and translating the abstract map/marker/layer/overlay lifecycle onto it, geocoding through the OpenStreetMap Nominatim API. */\nlet PacemLeafletMapAdapterElement = class PacemLeafletMapAdapterElement extends PacemMapAdapterElement {\n constructor() {\n super(...arguments);\n this.#tileLayers = new WeakMap();\n /** Gets or sets the tile source URL template for the base layer (defaults to the OpenStreetMap tile server). */\n this.tiles = '//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';\n /** Gets or sets the attribution text/markup shown on the map for the base layer. */\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 /** Dispatches the {@link LayerLoadEventName} event carrying the given native Leaflet layer. */\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}\n/** `<pacem-map-adapter-google>`: {@link PacemMapAdapterElement} backed by the Google Maps JavaScript API, bootstrapping/loading the SDK and translating the abstract map/marker/shape/layer/overlay lifecycle onto it. */\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 /** Resolves the maximum zoom level available (e.g. for satellite imagery) at the given position. */\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","this","Transformer","P","Utils","PacemEventTarget","CustomElementUtils","Watch","PropertyConverters","CustomTypedEvent","PropertyChangeEvent","CustomElement","Debounce","PropertyChangeEventName","PCSS","consts","convertAddress","MAP_EVENTS","getNativeMapStyle","DeepMerger"],"mappings":"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"}