UNPKG

155 kBSource Map (JSON)View Raw
1{"version":3,"file":"core.umd.js","sources":["../esm/core/services/maps-api-loader/maps-api-loader.js","../esm/core/services/google-maps-api-wrapper.js","../esm/core/services/managers/circle-manager.js","../esm/core/services/managers/marker-manager.js","../esm/core/services/managers/info-window-manager.js","../esm/core/services/managers/polygon-manager.js","../esm/core/services/managers/polyline-manager.js","../esm/core/services/managers/kml-layer-manager.js","../esm/core/directives/google-map.js","../esm/core/directives/google-map-circle.js","../esm/core/directives/google-map-info-window.js","../esm/core/directives/google-map-kml-layer.js","../esm/core/directives/google-map-marker.js","../esm/core/directives/google-map-polygon.js","../esm/core/directives/google-map-polyline-point.js","../esm/core/directives/google-map-polyline.js","../esm/core/utils/browser-globals.js","../esm/core/services/maps-api-loader/lazy-maps-api-loader.js","../esm/core/services/maps-api-loader/noop-maps-api-loader.js","../esm/core/map-types.js","../esm/core/core-module.js","../esm/core/index.js"],"sourcesContent":["import { Injectable } from '@angular/core';\nexport var MapsAPILoader = (function () {\n function MapsAPILoader() {\n }\n MapsAPILoader.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n MapsAPILoader.ctorParameters = function () { return []; };\n return MapsAPILoader;\n}());\n//# sourceMappingURL=maps-api-loader.js.map","import { Injectable, NgZone } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\nimport { MapsAPILoader } from './maps-api-loader/maps-api-loader';\n/**\n * Wrapper class that handles the communication with the Google Maps Javascript\n * API v3\n */\nexport var GoogleMapsAPIWrapper = (function () {\n function GoogleMapsAPIWrapper(_loader, _zone) {\n var _this = this;\n this._loader = _loader;\n this._zone = _zone;\n this._map =\n new Promise(function (resolve) { _this._mapResolver = resolve; });\n }\n GoogleMapsAPIWrapper.prototype.createMap = function (el, mapOptions) {\n var _this = this;\n return this._loader.load().then(function () {\n var map = new google.maps.Map(el, mapOptions);\n _this._mapResolver(map);\n return;\n });\n };\n GoogleMapsAPIWrapper.prototype.setMapOptions = function (options) {\n this._map.then(function (m) { m.setOptions(options); });\n };\n /**\n * Creates a google map marker with the map context\n */\n GoogleMapsAPIWrapper.prototype.createMarker = function (options) {\n if (options === void 0) { options = {}; }\n return this._map.then(function (map) {\n options.map = map;\n return new google.maps.Marker(options);\n });\n };\n GoogleMapsAPIWrapper.prototype.createInfoWindow = function (options) {\n return this._map.then(function () { return new google.maps.InfoWindow(options); });\n };\n /**\n * Creates a google.map.Circle for the current map.\n */\n GoogleMapsAPIWrapper.prototype.createCircle = function (options) {\n return this._map.then(function (map) {\n options.map = map;\n return new google.maps.Circle(options);\n });\n };\n GoogleMapsAPIWrapper.prototype.createPolyline = function (options) {\n return this.getNativeMap().then(function (map) {\n var line = new google.maps.Polyline(options);\n line.setMap(map);\n return line;\n });\n };\n GoogleMapsAPIWrapper.prototype.createPolygon = function (options) {\n return this.getNativeMap().then(function (map) {\n var polygon = new google.maps.Polygon(options);\n polygon.setMap(map);\n return polygon;\n });\n };\n /**\n * Determines if given coordinates are insite a Polygon path.\n */\n GoogleMapsAPIWrapper.prototype.containsLocation = function (latLng, polygon) {\n return google.maps.geometry.poly.containsLocation(latLng, polygon);\n };\n GoogleMapsAPIWrapper.prototype.subscribeToMapEvent = function (eventName) {\n var _this = this;\n return Observable.create(function (observer) {\n _this._map.then(function (m) {\n m.addListener(eventName, function (arg) { _this._zone.run(function () { return observer.next(arg); }); });\n });\n });\n };\n GoogleMapsAPIWrapper.prototype.setCenter = function (latLng) {\n return this._map.then(function (map) { return map.setCenter(latLng); });\n };\n GoogleMapsAPIWrapper.prototype.getZoom = function () { return this._map.then(function (map) { return map.getZoom(); }); };\n GoogleMapsAPIWrapper.prototype.getBounds = function () {\n return this._map.then(function (map) { return map.getBounds(); });\n };\n GoogleMapsAPIWrapper.prototype.setZoom = function (zoom) {\n return this._map.then(function (map) { return map.setZoom(zoom); });\n };\n GoogleMapsAPIWrapper.prototype.getCenter = function () {\n return this._map.then(function (map) { return map.getCenter(); });\n };\n GoogleMapsAPIWrapper.prototype.panTo = function (latLng) {\n return this._map.then(function (map) { return map.panTo(latLng); });\n };\n GoogleMapsAPIWrapper.prototype.fitBounds = function (latLng) {\n return this._map.then(function (map) { return map.fitBounds(latLng); });\n };\n GoogleMapsAPIWrapper.prototype.panToBounds = function (latLng) {\n return this._map.then(function (map) { return map.panToBounds(latLng); });\n };\n /**\n * Returns the native Google Maps Map instance. Be careful when using this instance directly.\n */\n GoogleMapsAPIWrapper.prototype.getNativeMap = function () { return this._map; };\n /**\n * Triggers the given event name on the map instance.\n */\n GoogleMapsAPIWrapper.prototype.triggerMapEvent = function (eventName) {\n return this._map.then(function (m) { return google.maps.event.trigger(m, eventName); });\n };\n GoogleMapsAPIWrapper.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n GoogleMapsAPIWrapper.ctorParameters = function () { return [\n { type: MapsAPILoader, },\n { type: NgZone, },\n ]; };\n return GoogleMapsAPIWrapper;\n}());\n//# sourceMappingURL=google-maps-api-wrapper.js.map","import { Injectable, NgZone } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\nexport var CircleManager = (function () {\n function CircleManager(_apiWrapper, _zone) {\n this._apiWrapper = _apiWrapper;\n this._zone = _zone;\n this._circles = new Map();\n }\n CircleManager.prototype.addCircle = function (circle) {\n this._circles.set(circle, this._apiWrapper.createCircle({\n center: { lat: circle.latitude, lng: circle.longitude },\n clickable: circle.clickable,\n draggable: circle.draggable,\n editable: circle.editable,\n fillColor: circle.fillColor,\n fillOpacity: circle.fillOpacity,\n radius: circle.radius,\n strokeColor: circle.strokeColor,\n strokeOpacity: circle.strokeOpacity,\n strokePosition: circle.strokePosition,\n strokeWeight: circle.strokeWeight,\n visible: circle.visible,\n zIndex: circle.zIndex\n }));\n };\n ;\n /**\n * Removes the given circle from the map.\n */\n CircleManager.prototype.removeCircle = function (circle) {\n var _this = this;\n return this._circles.get(circle).then(function (c) {\n c.setMap(null);\n _this._circles.delete(circle);\n });\n };\n CircleManager.prototype.setOptions = function (circle, options) {\n return this._circles.get(circle).then(function (c) { return c.setOptions(options); });\n };\n ;\n CircleManager.prototype.getBounds = function (circle) {\n return this._circles.get(circle).then(function (c) { return c.getBounds(); });\n };\n ;\n CircleManager.prototype.getCenter = function (circle) {\n return this._circles.get(circle).then(function (c) { return c.getCenter(); });\n };\n ;\n CircleManager.prototype.getRadius = function (circle) {\n return this._circles.get(circle).then(function (c) { return c.getRadius(); });\n };\n CircleManager.prototype.setCenter = function (circle) {\n return this._circles.get(circle).then(function (c) { return c.setCenter({ lat: circle.latitude, lng: circle.longitude }); });\n };\n ;\n CircleManager.prototype.setEditable = function (circle) {\n return this._circles.get(circle).then(function (c) { return c.setEditable(circle.editable); });\n };\n ;\n CircleManager.prototype.setDraggable = function (circle) {\n return this._circles.get(circle).then(function (c) { return c.setDraggable(circle.draggable); });\n };\n ;\n CircleManager.prototype.setVisible = function (circle) {\n return this._circles.get(circle).then(function (c) { return c.setVisible(circle.visible); });\n };\n ;\n CircleManager.prototype.setRadius = function (circle) {\n return this._circles.get(circle).then(function (c) { return c.setRadius(circle.radius); });\n };\n ;\n CircleManager.prototype.createEventObservable = function (eventName, circle) {\n var _this = this;\n return Observable.create(function (observer) {\n var listener = null;\n _this._circles.get(circle).then(function (c) {\n listener = c.addListener(eventName, function (e) { return _this._zone.run(function () { return observer.next(e); }); });\n });\n return function () {\n if (listener !== null) {\n listener.remove();\n }\n };\n });\n };\n CircleManager.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n CircleManager.ctorParameters = function () { return [\n { type: GoogleMapsAPIWrapper, },\n { type: NgZone, },\n ]; };\n return CircleManager;\n}());\n//# sourceMappingURL=circle-manager.js.map","import { Injectable, NgZone } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\nimport { GoogleMapsAPIWrapper } from './../google-maps-api-wrapper';\nexport var MarkerManager = (function () {\n function MarkerManager(_mapsWrapper, _zone) {\n this._mapsWrapper = _mapsWrapper;\n this._zone = _zone;\n this._markers = new Map();\n }\n MarkerManager.prototype.deleteMarker = function (marker) {\n var _this = this;\n var m = this._markers.get(marker);\n if (m == null) {\n // marker already deleted\n return Promise.resolve();\n }\n return m.then(function (m) {\n return _this._zone.run(function () {\n m.setMap(null);\n _this._markers.delete(marker);\n });\n });\n };\n MarkerManager.prototype.updateMarkerPosition = function (marker) {\n return this._markers.get(marker).then(function (m) { return m.setPosition({ lat: marker.latitude, lng: marker.longitude }); });\n };\n MarkerManager.prototype.updateTitle = function (marker) {\n return this._markers.get(marker).then(function (m) { return m.setTitle(marker.title); });\n };\n MarkerManager.prototype.updateLabel = function (marker) {\n return this._markers.get(marker).then(function (m) { m.setLabel(marker.label); });\n };\n MarkerManager.prototype.updateDraggable = function (marker) {\n return this._markers.get(marker).then(function (m) { return m.setDraggable(marker.draggable); });\n };\n MarkerManager.prototype.updateIcon = function (marker) {\n return this._markers.get(marker).then(function (m) { return m.setIcon(marker.iconUrl); });\n };\n MarkerManager.prototype.updateOpacity = function (marker) {\n return this._markers.get(marker).then(function (m) { return m.setOpacity(marker.opacity); });\n };\n MarkerManager.prototype.updateVisible = function (marker) {\n return this._markers.get(marker).then(function (m) { return m.setVisible(marker.visible); });\n };\n MarkerManager.prototype.updateZIndex = function (marker) {\n return this._markers.get(marker).then(function (m) { return m.setZIndex(marker.zIndex); });\n };\n MarkerManager.prototype.addMarker = function (marker) {\n var markerPromise = this._mapsWrapper.createMarker({\n position: { lat: marker.latitude, lng: marker.longitude },\n label: marker.label,\n draggable: marker.draggable,\n icon: marker.iconUrl,\n opacity: marker.opacity,\n visible: marker.visible,\n zIndex: marker.zIndex,\n title: marker.title\n });\n this._markers.set(marker, markerPromise);\n };\n MarkerManager.prototype.getNativeMarker = function (marker) {\n return this._markers.get(marker);\n };\n MarkerManager.prototype.createEventObservable = function (eventName, marker) {\n var _this = this;\n return Observable.create(function (observer) {\n _this._markers.get(marker).then(function (m) {\n m.addListener(eventName, function (e) { return _this._zone.run(function () { return observer.next(e); }); });\n });\n });\n };\n MarkerManager.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n MarkerManager.ctorParameters = function () { return [\n { type: GoogleMapsAPIWrapper, },\n { type: NgZone, },\n ]; };\n return MarkerManager;\n}());\n//# sourceMappingURL=marker-manager.js.map","import { Observable } from 'rxjs/Observable';\nimport { Injectable, NgZone } from '@angular/core';\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\nimport { MarkerManager } from './marker-manager';\nexport var InfoWindowManager = (function () {\n function InfoWindowManager(_mapsWrapper, _zone, _markerManager) {\n this._mapsWrapper = _mapsWrapper;\n this._zone = _zone;\n this._markerManager = _markerManager;\n this._infoWindows = new Map();\n }\n InfoWindowManager.prototype.deleteInfoWindow = function (infoWindow) {\n var _this = this;\n var iWindow = this._infoWindows.get(infoWindow);\n if (iWindow == null) {\n // info window already deleted\n return Promise.resolve();\n }\n return iWindow.then(function (i) {\n return _this._zone.run(function () {\n i.close();\n _this._infoWindows.delete(infoWindow);\n });\n });\n };\n InfoWindowManager.prototype.setPosition = function (infoWindow) {\n return this._infoWindows.get(infoWindow).then(function (i) { return i.setPosition({\n lat: infoWindow.latitude,\n lng: infoWindow.longitude\n }); });\n };\n InfoWindowManager.prototype.setZIndex = function (infoWindow) {\n return this._infoWindows.get(infoWindow)\n .then(function (i) { return i.setZIndex(infoWindow.zIndex); });\n };\n InfoWindowManager.prototype.open = function (infoWindow) {\n var _this = this;\n return this._infoWindows.get(infoWindow).then(function (w) {\n if (infoWindow.hostMarker != null) {\n return _this._markerManager.getNativeMarker(infoWindow.hostMarker).then(function (marker) {\n return _this._mapsWrapper.getNativeMap().then(function (map) { return w.open(map, marker); });\n });\n }\n return _this._mapsWrapper.getNativeMap().then(function (map) { return w.open(map); });\n });\n };\n InfoWindowManager.prototype.close = function (infoWindow) {\n return this._infoWindows.get(infoWindow).then(function (w) { return w.close(); });\n };\n InfoWindowManager.prototype.setOptions = function (infoWindow, options) {\n return this._infoWindows.get(infoWindow).then(function (i) { return i.setOptions(options); });\n };\n InfoWindowManager.prototype.addInfoWindow = function (infoWindow) {\n var options = {\n content: infoWindow.content,\n maxWidth: infoWindow.maxWidth,\n zIndex: infoWindow.zIndex,\n };\n if (typeof infoWindow.latitude === 'number' && typeof infoWindow.longitude === 'number') {\n options.position = { lat: infoWindow.latitude, lng: infoWindow.longitude };\n }\n var infoWindowPromise = this._mapsWrapper.createInfoWindow(options);\n this._infoWindows.set(infoWindow, infoWindowPromise);\n };\n /**\n * Creates a Google Maps event listener for the given InfoWindow as an Observable\n */\n InfoWindowManager.prototype.createEventObservable = function (eventName, infoWindow) {\n var _this = this;\n return Observable.create(function (observer) {\n _this._infoWindows.get(infoWindow).then(function (i) {\n i.addListener(eventName, function (e) { return _this._zone.run(function () { return observer.next(e); }); });\n });\n });\n };\n InfoWindowManager.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n InfoWindowManager.ctorParameters = function () { return [\n { type: GoogleMapsAPIWrapper, },\n { type: NgZone, },\n { type: MarkerManager, },\n ]; };\n return InfoWindowManager;\n}());\n//# sourceMappingURL=info-window-manager.js.map","import { Injectable, NgZone } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\nexport var PolygonManager = (function () {\n function PolygonManager(_mapsWrapper, _zone) {\n this._mapsWrapper = _mapsWrapper;\n this._zone = _zone;\n this._polygons = new Map();\n }\n PolygonManager.prototype.addPolygon = function (path) {\n var polygonPromise = this._mapsWrapper.createPolygon({\n clickable: path.clickable,\n draggable: path.draggable,\n editable: path.editable,\n fillColor: path.fillColor,\n fillOpacity: path.fillOpacity,\n geodesic: path.geodesic,\n paths: path.paths,\n strokeColor: path.strokeColor,\n strokeOpacity: path.strokeOpacity,\n strokeWeight: path.strokeWeight,\n visible: path.visible,\n zIndex: path.zIndex,\n });\n this._polygons.set(path, polygonPromise);\n };\n PolygonManager.prototype.updatePolygon = function (polygon) {\n var _this = this;\n var m = this._polygons.get(polygon);\n if (m == null) {\n return Promise.resolve();\n }\n return m.then(function (l) { return _this._zone.run(function () { l.setPaths(polygon.paths); }); });\n };\n PolygonManager.prototype.setPolygonOptions = function (path, options) {\n return this._polygons.get(path).then(function (l) { l.setOptions(options); });\n };\n PolygonManager.prototype.deletePolygon = function (paths) {\n var _this = this;\n var m = this._polygons.get(paths);\n if (m == null) {\n return Promise.resolve();\n }\n return m.then(function (l) {\n return _this._zone.run(function () {\n l.setMap(null);\n _this._polygons.delete(paths);\n });\n });\n };\n PolygonManager.prototype.createEventObservable = function (eventName, path) {\n var _this = this;\n return Observable.create(function (observer) {\n _this._polygons.get(path).then(function (l) {\n l.addListener(eventName, function (e) { return _this._zone.run(function () { return observer.next(e); }); });\n });\n });\n };\n PolygonManager.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n PolygonManager.ctorParameters = function () { return [\n { type: GoogleMapsAPIWrapper, },\n { type: NgZone, },\n ]; };\n return PolygonManager;\n}());\n//# sourceMappingURL=polygon-manager.js.map","import { Injectable, NgZone } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\nexport var PolylineManager = (function () {\n function PolylineManager(_mapsWrapper, _zone) {\n this._mapsWrapper = _mapsWrapper;\n this._zone = _zone;\n this._polylines = new Map();\n }\n PolylineManager._convertPoints = function (line) {\n var path = line._getPoints().map(function (point) {\n return { lat: point.latitude, lng: point.longitude };\n });\n return path;\n };\n PolylineManager.prototype.addPolyline = function (line) {\n var path = PolylineManager._convertPoints(line);\n var polylinePromise = this._mapsWrapper.createPolyline({\n clickable: line.clickable,\n draggable: line.draggable,\n editable: line.editable,\n geodesic: line.geodesic,\n strokeColor: line.strokeColor,\n strokeOpacity: line.strokeOpacity,\n strokeWeight: line.strokeWeight,\n visible: line.visible,\n zIndex: line.zIndex,\n path: path\n });\n this._polylines.set(line, polylinePromise);\n };\n PolylineManager.prototype.updatePolylinePoints = function (line) {\n var _this = this;\n var path = PolylineManager._convertPoints(line);\n var m = this._polylines.get(line);\n if (m == null) {\n return Promise.resolve();\n }\n return m.then(function (l) { return _this._zone.run(function () { l.setPath(path); }); });\n };\n PolylineManager.prototype.setPolylineOptions = function (line, options) {\n return this._polylines.get(line).then(function (l) { l.setOptions(options); });\n };\n PolylineManager.prototype.deletePolyline = function (line) {\n var _this = this;\n var m = this._polylines.get(line);\n if (m == null) {\n return Promise.resolve();\n }\n return m.then(function (l) {\n return _this._zone.run(function () {\n l.setMap(null);\n _this._polylines.delete(line);\n });\n });\n };\n PolylineManager.prototype.createEventObservable = function (eventName, line) {\n var _this = this;\n return Observable.create(function (observer) {\n _this._polylines.get(line).then(function (l) {\n l.addListener(eventName, function (e) { return _this._zone.run(function () { return observer.next(e); }); });\n });\n });\n };\n PolylineManager.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n PolylineManager.ctorParameters = function () { return [\n { type: GoogleMapsAPIWrapper, },\n { type: NgZone, },\n ]; };\n return PolylineManager;\n}());\n//# sourceMappingURL=polyline-manager.js.map","import { Injectable, NgZone } from '@angular/core';\nimport { Observable } from 'rxjs/Observable';\nimport { GoogleMapsAPIWrapper } from './../google-maps-api-wrapper';\n/**\n * Manages all KML Layers for a Google Map instance.\n */\nexport var KmlLayerManager = (function () {\n function KmlLayerManager(_wrapper, _zone) {\n this._wrapper = _wrapper;\n this._zone = _zone;\n this._layers = new Map();\n }\n /**\n * Adds a new KML Layer to the map.\n */\n KmlLayerManager.prototype.addKmlLayer = function (layer) {\n var newLayer = this._wrapper.getNativeMap().then(function (m) {\n return new google.maps.KmlLayer({\n clickable: layer.clickable,\n map: m,\n preserveViewport: layer.preserveViewport,\n screenOverlays: layer.screenOverlays,\n suppressInfoWindows: layer.suppressInfoWindows,\n url: layer.url,\n zIndex: layer.zIndex\n });\n });\n this._layers.set(layer, newLayer);\n };\n KmlLayerManager.prototype.setOptions = function (layer, options) {\n this._layers.get(layer).then(function (l) { return l.setOptions(options); });\n };\n KmlLayerManager.prototype.deleteKmlLayer = function (layer) {\n var _this = this;\n this._layers.get(layer).then(function (l) {\n l.setMap(null);\n _this._layers.delete(layer);\n });\n };\n /**\n * Creates a Google Maps event listener for the given KmlLayer as an Observable\n */\n KmlLayerManager.prototype.createEventObservable = function (eventName, layer) {\n var _this = this;\n return Observable.create(function (observer) {\n _this._layers.get(layer).then(function (m) {\n m.addListener(eventName, function (e) { return _this._zone.run(function () { return observer.next(e); }); });\n });\n });\n };\n KmlLayerManager.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n KmlLayerManager.ctorParameters = function () { return [\n { type: GoogleMapsAPIWrapper, },\n { type: NgZone, },\n ]; };\n return KmlLayerManager;\n}());\n//# sourceMappingURL=kml-layer-manager.js.map","import { Component, ElementRef, EventEmitter } from '@angular/core';\nimport { GoogleMapsAPIWrapper } from '../services/google-maps-api-wrapper';\nimport { CircleManager } from '../services/managers/circle-manager';\nimport { InfoWindowManager } from '../services/managers/info-window-manager';\nimport { MarkerManager } from '../services/managers/marker-manager';\nimport { PolygonManager } from '../services/managers/polygon-manager';\nimport { PolylineManager } from '../services/managers/polyline-manager';\nimport { KmlLayerManager } from './../services/managers/kml-layer-manager';\n/**\n * SebMGoogleMap renders a Google Map.\n * **Important note**: To be able see a map in the browser, you have to define a height for the CSS\n * class `sebm-google-map-container`.\n *\n * ### Example\n * ```typescript\n * import { Component } from '@angular/core';\n * import { SebmGoogleMap } from 'angular2-google-maps/core';\n *\n * @Component({\n * selector: 'my-map-cmp',\n * directives: [SebmGoogleMap],\n * styles: [`\n * .sebm-google-map-container {\n * height: 300px;\n * }\n * `],\n * template: `\n * <sebm-google-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n * </sebm-google-map>\n * `\n * })\n * ```\n */\nexport var SebmGoogleMap = (function () {\n function SebmGoogleMap(_elem, _mapsWrapper) {\n this._elem = _elem;\n this._mapsWrapper = _mapsWrapper;\n /**\n * The longitude that defines the center of the map.\n */\n this.longitude = 0;\n /**\n * The latitude that defines the center of the map.\n */\n this.latitude = 0;\n /**\n * The zoom level of the map. The default zoom level is 8.\n */\n this.zoom = 8;\n /**\n * Enables/disables if map is draggable.\n */\n this.draggable = true;\n /**\n * Enables/disables zoom and center on double click. Enabled by default.\n */\n this.disableDoubleClickZoom = false;\n /**\n * Enables/disables all default UI of the Google map. Please note: When the map is created, this\n * value cannot get updated.\n */\n this.disableDefaultUI = false;\n /**\n * If false, disables scrollwheel zooming on the map. The scrollwheel is enabled by default.\n */\n this.scrollwheel = true;\n /**\n * If false, prevents the map from being controlled by the keyboard. Keyboard shortcuts are\n * enabled by default.\n */\n this.keyboardShortcuts = true;\n /**\n * The enabled/disabled state of the Zoom control.\n */\n this.zoomControl = true;\n /**\n * Styles to apply to each of the default map types. Note that for Satellite/Hybrid and Terrain\n * modes, these styles will only apply to labels and geometry.\n */\n this.styles = [];\n /**\n * When true and the latitude and/or longitude values changes, the Google Maps panTo method is\n * used to\n * center the map. See: https://developers.google.com/maps/documentation/javascript/reference#Map\n */\n this.usePanning = false;\n /**\n * The initial enabled/disabled state of the Street View Pegman control.\n * This control is part of the default UI, and should be set to false when displaying a map type\n * on which the Street View road overlay should not appear (e.g. a non-Earth map type).\n */\n this.streetViewControl = true;\n /**\n * Sets the viewport to contain the given bounds.\n */\n this.fitBounds = null;\n /**\n * The initial enabled/disabled state of the Scale control. This is disabled by default.\n */\n this.scaleControl = false;\n /**\n * The initial enabled/disabled state of the Map type control.\n */\n this.mapTypeControl = false;\n this._observableSubscriptions = [];\n /**\n * This event emitter gets emitted when the user clicks on the map (but not when they click on a\n * marker or infoWindow).\n */\n this.mapClick = new EventEmitter();\n /**\n * This event emitter gets emitted when the user right-clicks on the map (but not when they click\n * on a marker or infoWindow).\n */\n this.mapRightClick = new EventEmitter();\n /**\n * This event emitter gets emitted when the user double-clicks on the map (but not when they click\n * on a marker or infoWindow).\n */\n this.mapDblClick = new EventEmitter();\n /**\n * This event emitter is fired when the map center changes.\n */\n this.centerChange = new EventEmitter();\n /**\n * This event is fired when the viewport bounds have changed.\n */\n this.boundsChange = new EventEmitter();\n /**\n * This event is fired when the map becomes idle after panning or zooming.\n */\n this.idle = new EventEmitter();\n /**\n * This event is fired when the zoom level has changed.\n */\n this.zoomChange = new EventEmitter();\n }\n /** @internal */\n SebmGoogleMap.prototype.ngOnInit = function () {\n // todo: this should be solved with a new component and a viewChild decorator\n var container = this._elem.nativeElement.querySelector('.sebm-google-map-container-inner');\n this._initMapInstance(container);\n };\n SebmGoogleMap.prototype._initMapInstance = function (el) {\n this._mapsWrapper.createMap(el, {\n center: { lat: this.latitude || 0, lng: this.longitude || 0 },\n zoom: this.zoom,\n minZoom: this.minZoom,\n maxZoom: this.maxZoom,\n disableDefaultUI: this.disableDefaultUI,\n backgroundColor: this.backgroundColor,\n draggable: this.draggable,\n draggableCursor: this.draggableCursor,\n draggingCursor: this.draggingCursor,\n keyboardShortcuts: this.keyboardShortcuts,\n zoomControl: this.zoomControl,\n styles: this.styles,\n streetViewControl: this.streetViewControl,\n scaleControl: this.scaleControl,\n mapTypeControl: this.mapTypeControl\n });\n // register event listeners\n this._handleMapCenterChange();\n this._handleMapZoomChange();\n this._handleMapMouseEvents();\n this._handleBoundsChange();\n this._handleIdleEvent();\n };\n /** @internal */\n SebmGoogleMap.prototype.ngOnDestroy = function () {\n // unsubscribe all registered observable subscriptions\n this._observableSubscriptions.forEach(function (s) { return s.unsubscribe(); });\n };\n /* @internal */\n SebmGoogleMap.prototype.ngOnChanges = function (changes) {\n this._updateMapOptionsChanges(changes);\n this._updatePosition(changes);\n };\n SebmGoogleMap.prototype._updateMapOptionsChanges = function (changes) {\n var options = {};\n var optionKeys = Object.keys(changes).filter(function (k) { return SebmGoogleMap._mapOptionsAttributes.indexOf(k) !== -1; });\n optionKeys.forEach(function (k) { options[k] = changes[k].currentValue; });\n this._mapsWrapper.setMapOptions(options);\n };\n /**\n * Triggers a resize event on the google map instance.\n * Returns a promise that gets resolved after the event was triggered.\n */\n SebmGoogleMap.prototype.triggerResize = function () {\n var _this = this;\n // Note: When we would trigger the resize event and show the map in the same turn (which is a\n // common case for triggering a resize event), then the resize event would not\n // work (to show the map), so we trigger the event in a timeout.\n return new Promise(function (resolve) {\n setTimeout(function () { return _this._mapsWrapper.triggerMapEvent('resize').then(function () { return resolve(); }); });\n });\n };\n SebmGoogleMap.prototype._updatePosition = function (changes) {\n if (changes['latitude'] == null && changes['longitude'] == null &&\n changes['fitBounds'] == null) {\n // no position update needed\n return;\n }\n // we prefer fitBounds in changes\n if (changes['fitBounds'] && this.fitBounds != null) {\n this._fitBounds();\n return;\n }\n if (typeof this.latitude !== 'number' || typeof this.longitude !== 'number') {\n return;\n }\n var newCenter = {\n lat: this.latitude,\n lng: this.longitude,\n };\n if (this.usePanning) {\n this._mapsWrapper.panTo(newCenter);\n }\n else {\n this._mapsWrapper.setCenter(newCenter);\n }\n };\n SebmGoogleMap.prototype._fitBounds = function () {\n if (this.usePanning) {\n this._mapsWrapper.panToBounds(this.fitBounds);\n return;\n }\n this._mapsWrapper.fitBounds(this.fitBounds);\n };\n SebmGoogleMap.prototype._handleMapCenterChange = function () {\n var _this = this;\n var s = this._mapsWrapper.subscribeToMapEvent('center_changed').subscribe(function () {\n _this._mapsWrapper.getCenter().then(function (center) {\n _this.latitude = center.lat();\n _this.longitude = center.lng();\n _this.centerChange.emit({ lat: _this.latitude, lng: _this.longitude });\n });\n });\n this._observableSubscriptions.push(s);\n };\n SebmGoogleMap.prototype._handleBoundsChange = function () {\n var _this = this;\n var s = this._mapsWrapper.subscribeToMapEvent('bounds_changed').subscribe(function () {\n _this._mapsWrapper.getBounds().then(function (bounds) { _this.boundsChange.emit(bounds); });\n });\n this._observableSubscriptions.push(s);\n };\n SebmGoogleMap.prototype._handleMapZoomChange = function () {\n var _this = this;\n var s = this._mapsWrapper.subscribeToMapEvent('zoom_changed').subscribe(function () {\n _this._mapsWrapper.getZoom().then(function (z) {\n _this.zoom = z;\n _this.zoomChange.emit(z);\n });\n });\n this._observableSubscriptions.push(s);\n };\n SebmGoogleMap.prototype._handleIdleEvent = function () {\n var _this = this;\n var s = this._mapsWrapper.subscribeToMapEvent('idle').subscribe(function () { _this.idle.emit(void 0); });\n this._observableSubscriptions.push(s);\n };\n SebmGoogleMap.prototype._handleMapMouseEvents = function () {\n var _this = this;\n var events = [\n { name: 'click', emitter: this.mapClick },\n { name: 'rightclick', emitter: this.mapRightClick },\n ];\n events.forEach(function (e) {\n var s = _this._mapsWrapper.subscribeToMapEvent(e.name).subscribe(function (event) {\n var value = { coords: { lat: event.latLng.lat(), lng: event.latLng.lng() } };\n e.emitter.emit(value);\n });\n _this._observableSubscriptions.push(s);\n });\n };\n /**\n * Map option attributes that can change over time\n */\n SebmGoogleMap._mapOptionsAttributes = [\n 'disableDoubleClickZoom', 'scrollwheel', 'draggable', 'draggableCursor', 'draggingCursor',\n 'keyboardShortcuts', 'zoomControl', 'styles', 'streetViewControl', 'zoom', 'mapTypeControl',\n 'minZoom', 'maxZoom'\n ];\n SebmGoogleMap.decorators = [\n { type: Component, args: [{\n selector: 'sebm-google-map',\n providers: [\n GoogleMapsAPIWrapper, MarkerManager, InfoWindowManager, CircleManager, PolylineManager,\n PolygonManager, KmlLayerManager\n ],\n inputs: [\n 'longitude', 'latitude', 'zoom', 'minZoom', 'maxZoom', 'draggable: mapDraggable',\n 'disableDoubleClickZoom', 'disableDefaultUI', 'scrollwheel', 'backgroundColor', 'draggableCursor',\n 'draggingCursor', 'keyboardShortcuts', 'zoomControl', 'styles', 'usePanning', 'streetViewControl',\n 'fitBounds', 'scaleControl', 'mapTypeControl'\n ],\n outputs: [\n 'mapClick', 'mapRightClick', 'mapDblClick', 'centerChange', 'idle', 'boundsChange', 'zoomChange'\n ],\n host: { '[class.sebm-google-map-container]': 'true' },\n styles: [\"\\n .sebm-google-map-container-inner {\\n width: inherit;\\n height: inherit;\\n }\\n .sebm-google-map-content {\\n display:none;\\n }\\n \"],\n template: \"\\n <div class='sebm-google-map-container-inner'></div>\\n <div class='sebm-google-map-content'>\\n <ng-content></ng-content>\\n </div>\\n \"\n },] },\n ];\n /** @nocollapse */\n SebmGoogleMap.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: GoogleMapsAPIWrapper, },\n ]; };\n return SebmGoogleMap;\n}());\n//# sourceMappingURL=google-map.js.map","import { Directive, EventEmitter } from '@angular/core';\nimport { CircleManager } from '../services/managers/circle-manager';\nexport var SebmGoogleMapCircle = (function () {\n function SebmGoogleMapCircle(_manager) {\n this._manager = _manager;\n /**\n * Indicates whether this Circle handles mouse events. Defaults to true.\n */\n this.clickable = true;\n /**\n * If set to true, the user can drag this circle over the map. Defaults to false.\n */\n this.draggable = false;\n /**\n * If set to true, the user can edit this circle by dragging the control points shown at\n * the center and around the circumference of the circle. Defaults to false.\n */\n this.editable = false;\n /**\n * The radius in meters on the Earth's surface.\n */\n this.radius = 0;\n /**\n * The stroke position. Defaults to CENTER.\n * This property is not supported on Internet Explorer 8 and earlier.\n */\n this.strokePosition = 'CENTER';\n /**\n * The stroke width in pixels.\n */\n this.strokeWeight = 0;\n /**\n * Whether this circle is visible on the map. Defaults to true.\n */\n this.visible = true;\n /**\n * This event is fired when the circle's center is changed.\n */\n this.centerChange = new EventEmitter();\n /**\n * This event emitter gets emitted when the user clicks on the circle.\n */\n this.circleClick = new EventEmitter();\n /**\n * This event emitter gets emitted when the user clicks on the circle.\n */\n this.circleDblClick = new EventEmitter();\n /**\n * This event is repeatedly fired while the user drags the circle.\n */\n this.drag = new EventEmitter();\n /**\n * This event is fired when the user stops dragging the circle.\n */\n this.dragEnd = new EventEmitter();\n /**\n * This event is fired when the user starts dragging the circle.\n */\n this.dragStart = new EventEmitter();\n /**\n * This event is fired when the DOM mousedown event is fired on the circle.\n */\n this.mouseDown = new EventEmitter();\n /**\n * This event is fired when the DOM mousemove event is fired on the circle.\n */\n this.mouseMove = new EventEmitter();\n /**\n * This event is fired on circle mouseout.\n */\n this.mouseOut = new EventEmitter();\n /**\n * This event is fired on circle mouseover.\n */\n this.mouseOver = new EventEmitter();\n /**\n * This event is fired when the DOM mouseup event is fired on the circle.\n */\n this.mouseUp = new EventEmitter();\n /**\n * This event is fired when the circle's radius is changed.\n */\n this.radiusChange = new EventEmitter();\n /**\n * This event is fired when the circle is right-clicked on.\n */\n this.rightClick = new EventEmitter();\n this._circleAddedToManager = false;\n this._eventSubscriptions = [];\n }\n /** @internal */\n SebmGoogleMapCircle.prototype.ngOnInit = function () {\n this._manager.addCircle(this);\n this._circleAddedToManager = true;\n this._registerEventListeners();\n };\n /** @internal */\n SebmGoogleMapCircle.prototype.ngOnChanges = function (changes) {\n if (!this._circleAddedToManager) {\n return;\n }\n if (changes['latitude'] || changes['longitude']) {\n this._manager.setCenter(this);\n }\n if (changes['editable']) {\n this._manager.setEditable(this);\n }\n if (changes['draggable']) {\n this._manager.setDraggable(this);\n }\n if (changes['visible']) {\n this._manager.setVisible(this);\n }\n if (changes['radius']) {\n this._manager.setRadius(this);\n }\n this._updateCircleOptionsChanges(changes);\n };\n SebmGoogleMapCircle.prototype._updateCircleOptionsChanges = function (changes) {\n var options = {};\n var optionKeys = Object.keys(changes).filter(function (k) { return SebmGoogleMapCircle._mapOptions.indexOf(k) !== -1; });\n optionKeys.forEach(function (k) { options[k] = changes[k].currentValue; });\n if (optionKeys.length > 0) {\n this._manager.setOptions(this, options);\n }\n };\n SebmGoogleMapCircle.prototype._registerEventListeners = function () {\n var _this = this;\n var events = new Map();\n events.set('center_changed', this.centerChange);\n events.set('click', this.circleClick);\n events.set('dblclick', this.circleDblClick);\n events.set('drag', this.drag);\n events.set('dragend', this.dragEnd);\n events.set('dragStart', this.dragStart);\n events.set('mousedown', this.mouseDown);\n events.set('mousemove', this.mouseMove);\n events.set('mouseout', this.mouseOut);\n events.set('mouseover', this.mouseOver);\n events.set('mouseup', this.mouseUp);\n events.set('radius_changed', this.radiusChange);\n events.set('rightclick', this.rightClick);\n events.forEach(function (eventEmitter, eventName) {\n _this._eventSubscriptions.push(_this._manager.createEventObservable(eventName, _this).subscribe(function (value) {\n switch (eventName) {\n case 'radius_changed':\n _this._manager.getRadius(_this).then(function (radius) { return eventEmitter.emit(radius); });\n break;\n case 'center_changed':\n _this._manager.getCenter(_this).then(function (center) {\n return eventEmitter.emit({ lat: center.lat(), lng: center.lng() });\n });\n break;\n default:\n eventEmitter.emit({ coords: { lat: value.latLng.lat(), lng: value.latLng.lng() } });\n }\n }));\n });\n };\n /** @internal */\n SebmGoogleMapCircle.prototype.ngOnDestroy = function () {\n this._eventSubscriptions.forEach(function (s) { s.unsubscribe(); });\n this._eventSubscriptions = null;\n this._manager.removeCircle(this);\n };\n /**\n * Gets the LatLngBounds of this Circle.\n */\n SebmGoogleMapCircle.prototype.getBounds = function () { return this._manager.getBounds(this); };\n SebmGoogleMapCircle.prototype.getCenter = function () { return this._manager.getCenter(this); };\n SebmGoogleMapCircle._mapOptions = [\n 'fillColor', 'fillOpacity', 'strokeColor', 'strokeOpacity', 'strokePosition', 'strokeWeight',\n 'visible', 'zIndex'\n ];\n SebmGoogleMapCircle.decorators = [\n { type: Directive, args: [{\n selector: 'sebm-google-map-circle',\n inputs: [\n 'latitude', 'longitude', 'clickable', 'draggable: circleDraggable', 'editable', 'fillColor',\n 'fillOpacity', 'radius', 'strokeColor', 'strokeOpacity', 'strokePosition', 'strokeWeight',\n 'visible', 'zIndex'\n ],\n outputs: [\n 'centerChange', 'circleClick', 'circleDblClick', 'drag', 'dragEnd', 'dragStart', 'mouseDown',\n 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'radiusChange', 'rightClick'\n ]\n },] },\n ];\n /** @nocollapse */\n SebmGoogleMapCircle.ctorParameters = function () { return [\n { type: CircleManager, },\n ]; };\n return SebmGoogleMapCircle;\n}());\n//# sourceMappingURL=google-map-circle.js.map","import { Component, ElementRef, EventEmitter } from '@angular/core';\nimport { InfoWindowManager } from '../services/managers/info-window-manager';\nvar infoWindowId = 0;\n/**\n * SebmGoogleMapInfoWindow renders a info window inside a {@link SebmGoogleMapMarker} or standalone.\n *\n * ### Example\n * ```typescript\n * import { Component } from 'angular2/core';\n * import { SebmGoogleMap, SebmGoogleMapMarker, SebmGoogleMapInfoWindow } from\n * 'angular2-google-maps/core';\n *\n * @Component({\n * selector: 'my-map-cmp',\n * directives: [SebmGoogleMap, SebmGoogleMapMarker, SebmGoogleMapInfoWindow],\n * styles: [`\n * .sebm-google-map-container {\n * height: 300px;\n * }\n * `],\n * template: `\n * <sebm-google-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n * <sebm-google-map-marker [latitude]=\"lat\" [longitude]=\"lng\" [label]=\"'M'\">\n * <sebm-google-map-info-window [disableAutoPan]=\"true\">\n * Hi, this is the content of the <strong>info window</strong>\n * </sebm-google-map-info-window>\n * </sebm-google-map-marker>\n * </sebm-google-map>\n * `\n * })\n * ```\n */\nexport var SebmGoogleMapInfoWindow = (function () {\n function SebmGoogleMapInfoWindow(_infoWindowManager, _el) {\n this._infoWindowManager = _infoWindowManager;\n this._el = _el;\n /**\n * Sets the open state for the InfoWindow. You can also call the open() and close() methods.\n */\n this.isOpen = false;\n /**\n * Emits an event when the info window is closed.\n */\n this.infoWindowClose = new EventEmitter();\n this._infoWindowAddedToManager = false;\n this._id = (infoWindowId++).toString();\n }\n SebmGoogleMapInfoWindow.prototype.ngOnInit = function () {\n this.content = this._el.nativeElement.querySelector('.sebm-google-map-info-window-content');\n this._infoWindowManager.addInfoWindow(this);\n this._infoWindowAddedToManager = true;\n this._updateOpenState();\n this._registerEventListeners();\n };\n /** @internal */\n SebmGoogleMapInfoWindow.prototype.ngOnChanges = function (changes) {\n if (!this._infoWindowAddedToManager) {\n return;\n }\n if ((changes['latitude'] || changes['longitude']) && typeof this.latitude === 'number' &&\n typeof this.longitude === 'number') {\n this._infoWindowManager.setPosition(this);\n }\n if (changes['zIndex']) {\n this._infoWindowManager.setZIndex(this);\n }\n if (changes['isOpen']) {\n this._updateOpenState();\n }\n this._setInfoWindowOptions(changes);\n };\n SebmGoogleMapInfoWindow.prototype._registerEventListeners = function () {\n var _this = this;\n this._infoWindowManager.createEventObservable('closeclick', this).subscribe(function () {\n _this.isOpen = false;\n _this.infoWindowClose.emit();\n });\n };\n SebmGoogleMapInfoWindow.prototype._updateOpenState = function () {\n this.isOpen ? this.open() : this.close();\n };\n SebmGoogleMapInfoWindow.prototype._setInfoWindowOptions = function (changes) {\n var options = {};\n var optionKeys = Object.keys(changes).filter(function (k) { return SebmGoogleMapInfoWindow._infoWindowOptionsInputs.indexOf(k) !== -1; });\n optionKeys.forEach(function (k) { options[k] = changes[k].currentValue; });\n this._infoWindowManager.setOptions(this, options);\n };\n /**\n * Opens the info window.\n */\n SebmGoogleMapInfoWindow.prototype.open = function () { return this._infoWindowManager.open(this); };\n /**\n * Closes the info window.\n */\n SebmGoogleMapInfoWindow.prototype.close = function () {\n var _this = this;\n return this._infoWindowManager.close(this).then(function () { _this.infoWindowClose.emit(); });\n };\n /** @internal */\n SebmGoogleMapInfoWindow.prototype.id = function () { return this._id; };\n /** @internal */\n SebmGoogleMapInfoWindow.prototype.toString = function () { return 'SebmGoogleMapInfoWindow-' + this._id.toString(); };\n /** @internal */\n SebmGoogleMapInfoWindow.prototype.ngOnDestroy = function () { this._infoWindowManager.deleteInfoWindow(this); };\n SebmGoogleMapInfoWindow._infoWindowOptionsInputs = ['disableAutoPan', 'maxWidth'];\n SebmGoogleMapInfoWindow.decorators = [\n { type: Component, args: [{\n selector: 'sebm-google-map-info-window',\n inputs: ['latitude', 'longitude', 'disableAutoPan', 'isOpen', 'zIndex', 'maxWidth'],\n outputs: ['infoWindowClose'],\n template: \"<div class='sebm-google-map-info-window-content'>\\n <ng-content></ng-content>\\n </div>\\n \"\n },] },\n ];\n /** @nocollapse */\n SebmGoogleMapInfoWindow.ctorParameters = function () { return [\n { type: InfoWindowManager, },\n { type: ElementRef, },\n ]; };\n return SebmGoogleMapInfoWindow;\n}());\n//# sourceMappingURL=google-map-info-window.js.map","import { Directive, EventEmitter } from '@angular/core';\nimport { KmlLayerManager } from './../services/managers/kml-layer-manager';\nvar layerId = 0;\nexport var SebmGoogleMapKmlLayer = (function () {\n function SebmGoogleMapKmlLayer(_manager) {\n this._manager = _manager;\n this._addedToManager = false;\n this._id = (layerId++).toString();\n this._subscriptions = [];\n /**\n * If true, the layer receives mouse events. Default value is true.\n */\n this.clickable = true;\n /**\n * By default, the input map is centered and zoomed to the bounding box of the contents of the\n * layer.\n * If this option is set to true, the viewport is left unchanged, unless the map's center and zoom\n * were never set.\n */\n this.preserveViewport = false;\n /**\n * Whether to render the screen overlays. Default true.\n */\n this.screenOverlays = true;\n /**\n * Suppress the rendering of info windows when layer features are clicked.\n */\n this.suppressInfoWindows = false;\n /**\n * The URL of the KML document to display.\n */\n this.url = null;\n /**\n * The z-index of the layer.\n */\n this.zIndex = null;\n /**\n * This event is fired when a feature in the layer is clicked.\n */\n this.layerClick = new EventEmitter();\n /**\n * This event is fired when the KML layers default viewport has changed.\n */\n this.defaultViewportChange = new EventEmitter();\n /**\n * This event is fired when the KML layer has finished loading.\n * At this point it is safe to read the status property to determine if the layer loaded\n * successfully.\n */\n this.statusChange = new EventEmitter();\n }\n SebmGoogleMapKmlLayer.prototype.ngOnInit = function () {\n if (this._addedToManager) {\n return;\n }\n this._manager.addKmlLayer(this);\n this._addedToManager = true;\n this._addEventListeners();\n };\n SebmGoogleMapKmlLayer.prototype.ngOnChanges = function (changes) {\n if (!this._addedToManager) {\n return;\n }\n this._updatePolygonOptions(changes);\n };\n SebmGoogleMapKmlLayer.prototype._updatePolygonOptions = function (changes) {\n var options = Object.keys(changes)\n .filter(function (k) { return SebmGoogleMapKmlLayer._kmlLayerOptions.indexOf(k) !== -1; })\n .reduce(function (obj, k) {\n obj[k] = changes[k].currentValue;\n return obj;\n }, {});\n if (Object.keys(options).length > 0) {\n this._manager.setOptions(this, options);\n }\n };\n SebmGoogleMapKmlLayer.prototype._addEventListeners = function () {\n var _this = this;\n var listeners = [\n { name: 'click', handler: function (ev) { return _this.layerClick.emit(ev); } },\n { name: 'defaultviewport_changed', handler: function () { return _this.defaultViewportChange.emit(); } },\n { name: 'status_changed', handler: function () { return _this.statusChange.emit(); } },\n ];\n listeners.forEach(function (obj) {\n var os = _this._manager.createEventObservable(obj.name, _this).subscribe(obj.handler);\n _this._subscriptions.push(os);\n });\n };\n /** @internal */\n SebmGoogleMapKmlLayer.prototype.id = function () { return this._id; };\n /** @internal */\n SebmGoogleMapKmlLayer.prototype.toString = function () { return \"SebmGoogleMapKmlLayer-\" + this._id.toString(); };\n /** @internal */\n SebmGoogleMapKmlLayer.prototype.ngOnDestroy = function () {\n this._manager.deleteKmlLayer(this);\n // unsubscribe all registered observable subscriptions\n this._subscriptions.forEach(function (s) { return s.unsubscribe(); });\n };\n SebmGoogleMapKmlLayer._kmlLayerOptions = ['clickable', 'preserveViewport', 'screenOverlays', 'suppressInfoWindows', 'url', 'zIndex'];\n SebmGoogleMapKmlLayer.decorators = [\n { type: Directive, args: [{\n selector: 'sebm-google-map-kml-layer',\n inputs: ['clickable', 'preserveViewport', 'screenOverlays', 'suppressInfoWindows', 'url', 'zIndex'],\n outputs: ['layerClick', 'defaultViewportChange', 'statusChange']\n },] },\n ];\n /** @nocollapse */\n SebmGoogleMapKmlLayer.ctorParameters = function () { return [\n { type: KmlLayerManager, },\n ]; };\n return SebmGoogleMapKmlLayer;\n}());\n//# sourceMappingURL=google-map-kml-layer.js.map","import { ContentChild, Directive, EventEmitter } from '@angular/core';\nimport { MarkerManager } from '../services/managers/marker-manager';\nimport { SebmGoogleMapInfoWindow } from './google-map-info-window';\nvar markerId = 0;\n/**\n * SebmGoogleMapMarker renders a map marker inside a {@link SebmGoogleMap}.\n *\n * ### Example\n * ```typescript\n * import { Component } from 'angular2/core';\n * import { SebmGoogleMap, SebmGoogleMapMarker } from 'angular2-google-maps/core';\n *\n * @Component({\n * selector: 'my-map-cmp',\n * directives: [SebmGoogleMap, SebmGoogleMapMarker],\n * styles: [`\n * .sebm-google-map-container {\n * height: 300px;\n * }\n * `],\n * template: `\n * <sebm-google-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n * <sebm-google-map-marker [latitude]=\"lat\" [longitude]=\"lng\" [label]=\"'M'\">\n * </sebm-google-map-marker>\n * </sebm-google-map>\n * `\n * })\n * ```\n */\nexport var SebmGoogleMapMarker = (function () {\n function SebmGoogleMapMarker(_markerManager) {\n this._markerManager = _markerManager;\n /**\n * If true, the marker can be dragged. Default value is false.\n */\n this.draggable = false;\n /**\n * If true, the marker is visible\n */\n this.visible = true;\n /**\n * Whether to automatically open the child info window when the marker is clicked.\n */\n this.openInfoWindow = true;\n /**\n * The marker's opacity between 0.0 and 1.0.\n */\n this.opacity = 1;\n /**\n * All markers are displayed on the map in order of their zIndex, with higher values displaying in\n * front of markers with lower values. By default, markers are displayed according to their\n * vertical position on screen, with lower markers appearing in front of markers further up the\n * screen.\n */\n this.zIndex = 1;\n /**\n * This event emitter gets emitted when the user clicks on the marker.\n */\n this.markerClick = new EventEmitter();\n /**\n * This event is fired when the user stops dragging the marker.\n */\n this.dragEnd = new EventEmitter();\n /**\n * This event is fired when the user mouses over the marker.\n */\n this.mouseOver = new EventEmitter();\n /**\n * This event is fired when the user mouses outside the marker.\n */\n this.mouseOut = new EventEmitter();\n this._markerAddedToManger = false;\n this._observableSubscriptions = [];\n this._id = (markerId++).toString();\n }\n /* @internal */\n SebmGoogleMapMarker.prototype.ngAfterContentInit = function () {\n if (this.infoWindow != null) {\n this.infoWindow.hostMarker = this;\n }\n };\n /** @internal */\n SebmGoogleMapMarker.prototype.ngOnChanges = function (changes) {\n if (typeof this.latitude !== 'number' || typeof this.longitude !== 'number') {\n return;\n }\n if (!this._markerAddedToManger) {\n this._markerManager.addMarker(this);\n this._markerAddedToManger = true;\n this._addEventListeners();\n return;\n }\n if (changes['latitude'] || changes['longitude']) {\n this._markerManager.updateMarkerPosition(this);\n }\n if (changes['title']) {\n this._markerManager.updateTitle(this);\n }\n if (changes['label']) {\n this._markerManager.updateLabel(this);\n }\n if (changes['draggable']) {\n this._markerManager.updateDraggable(this);\n }\n if (changes['iconUrl']) {\n this._markerManager.updateIcon(this);\n }\n if (changes['opacity']) {\n this._markerManager.updateOpacity(this);\n }\n if (changes['visible']) {\n this._markerManager.updateVisible(this);\n }\n if (changes['zIndex']) {\n this._markerManager.updateZIndex(this);\n }\n };\n SebmGoogleMapMarker.prototype._addEventListeners = function () {\n var _this = this;\n var cs = this._markerManager.createEventObservable('click', this).subscribe(function () {\n if (_this.openInfoWindow && _this.infoWindow != null) {\n _this.infoWindow.open();\n }\n _this.markerClick.emit(null);\n });\n this._observableSubscriptions.push(cs);\n var ds = this._markerManager.createEventObservable('dragend', this)\n .subscribe(function (e) {\n _this.dragEnd.emit({ coords: { lat: e.latLng.lat(), lng: e.latLng.lng() } });\n });\n this._observableSubscriptions.push(ds);\n var mover = this._markerManager.createEventObservable('mouseover', this)\n .subscribe(function (e) {\n _this.mouseOver.emit({ coords: { lat: e.latLng.lat(), lng: e.latLng.lng() } });\n });\n this._observableSubscriptions.push(mover);\n var mout = this._markerManager.createEventObservable('mouseout', this)\n .subscribe(function (e) {\n _this.mouseOut.emit({ coords: { lat: e.latLng.lat(), lng: e.latLng.lng() } });\n });\n this._observableSubscriptions.push(mout);\n };\n /** @internal */\n SebmGoogleMapMarker.prototype.id = function () { return this._id; };\n /** @internal */\n SebmGoogleMapMarker.prototype.toString = function () { return 'SebmGoogleMapMarker-' + this._id.toString(); };\n /** @internal */\n SebmGoogleMapMarker.prototype.ngOnDestroy = function () {\n this._markerManager.deleteMarker(this);\n // unsubscribe all registered observable subscriptions\n this._observableSubscriptions.forEach(function (s) { return s.unsubscribe(); });\n };\n SebmGoogleMapMarker.decorators = [\n { type: Directive, args: [{\n selector: 'sebm-google-map-marker',\n inputs: [\n 'latitude', 'longitude', 'title', 'label', 'draggable: markerDraggable', 'iconUrl',\n 'openInfoWindow', 'opacity', 'visible', 'zIndex'\n ],\n outputs: ['markerClick', 'dragEnd', 'mouseOver', 'mouseOut']\n },] },\n ];\n /** @nocollapse */\n SebmGoogleMapMarker.ctorParameters = function () { return [\n { type: MarkerManager, },\n ]; };\n SebmGoogleMapMarker.propDecorators = {\n 'infoWindow': [{ type: ContentChild, args: [SebmGoogleMapInfoWindow,] },],\n };\n return SebmGoogleMapMarker;\n}());\n//# sourceMappingURL=google-map-marker.js.map","import { Directive, EventEmitter } from '@angular/core';\nimport { PolygonManager } from '../services/managers/polygon-manager';\n/**\n * SebmGoogleMapPolygon renders a polygon on a {@link SebmGoogleMap}\n *\n * ### Example\n * ```typescript\n * import { Component } from '@angular/core';\n * import { SebmGoogleMap, SebmGooglePolygon, LatLngLiteral } from 'angular2-maps/core';\n *\n * @Component({\n * selector: 'my-map-cmp',\n * styles: [`\n * .semb-map-container {\n * height: 300px;\n * }\n * `],\n * template: `\n * <semb-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n * <semb-map-polygon [paths]=\"paths\">\n * </semb-map-polygon>\n * </semb-map>\n * `\n * })\n * export class MyMapCmp {\n * lat: number = 0;\n * lng: number = 0;\n * zoom: number = 10;\n * paths: Array<LatLngLiteral> = [\n * { lat: 0, lng: 10 },\n * { lat: 0, lng: 20 },\n * { lat: 10, lng: 20 },\n * { lat: 10, lng: 10 },\n * { lat: 0, lng: 10 }\n * ]\n * // Nesting paths will create a hole where they overlap;\n * nestedPaths: Array<Array<LatLngLiteral>> = [[\n * { lat: 0, lng: 10 },\n * { lat: 0, lng: 20 },\n * { lat: 10, lng: 20 },\n * { lat: 10, lng: 10 },\n * { lat: 0, lng: 10 }\n * ], [\n * { lat: 0, lng: 15 },\n * { lat: 0, lng: 20 },\n * { lat: 5, lng: 20 },\n * { lat: 5, lng: 15 },\n * { lat: 0, lng: 15 }\n * ]]\n * }\n * ```\n */\nexport var SebmGoogleMapPolygon = (function () {\n function SebmGoogleMapPolygon(_polygonManager) {\n this._polygonManager = _polygonManager;\n /**\n * Indicates whether this Polygon handles mouse events. Defaults to true.\n */\n this.clickable = true;\n /**\n * If set to true, the user can drag this shape over the map. The geodesic\n * property defines the mode of dragging. Defaults to false.\n */\n this.draggable = false;\n /**\n * If set to true, the user can edit this shape by dragging the control\n * points shown at the vertices and on each segment. Defaults to false.\n */\n this.editable = false;\n /**\n * When true, edges of the polygon are interpreted as geodesic and will\n * follow the curvature of the Earth. When false, edges of the polygon are\n * rendered as straight lines in screen space. Note that the shape of a\n * geodesic polygon may appear to change when dragged, as the dimensions\n * are maintained relative to the surface of the earth. Defaults to false.\n */\n this.geodesic = false;\n /**\n * The ordered sequence of coordinates that designates a closed loop.\n * Unlike polylines, a polygon may consist of one or more paths.\n * As a result, the paths property may specify one or more arrays of\n * LatLng coordinates. Paths are closed automatically; do not repeat the\n * first vertex of the path as the last vertex. Simple polygons may be\n * defined using a single array of LatLngs. More complex polygons may\n * specify an array of arrays. Any simple arrays are converted into Arrays.\n * Inserting or removing LatLngs from the Array will automatically update\n * the polygon on the map.\n */\n this.paths = [];\n /**\n * This event is fired when the DOM click event is fired on the Polygon.\n */\n this.polyClick = new EventEmitter();\n /**\n * This event is fired when the DOM dblclick event is fired on the Polygon.\n */\n this.polyDblClick = new EventEmitter();\n /**\n * This event is repeatedly fired while the user drags the polygon.\n */\n this.polyDrag = new EventEmitter();\n /**\n * This event is fired when the user stops dragging the polygon.\n */\n this.polyDragEnd = new EventEmitter();\n /**\n * This event is fired when the user starts dragging the polygon.\n */\n this.polyDragStart = new EventEmitter();\n /**\n * This event is fired when the DOM mousedown event is fired on the Polygon.\n */\n this.polyMouseDown = new EventEmitter();\n /**\n * This event is fired when the DOM mousemove event is fired on the Polygon.\n */\n this.polyMouseMove = new EventEmitter();\n /**\n * This event is fired on Polygon mouseout.\n */\n this.polyMouseOut = new EventEmitter();\n /**\n * This event is fired on Polygon mouseover.\n */\n this.polyMouseOver = new EventEmitter();\n /**\n * This event is fired whe the DOM mouseup event is fired on the Polygon\n */\n this.polyMouseUp = new EventEmitter();\n /**\n * This even is fired when the Polygon is right-clicked on.\n */\n this.polyRightClick = new EventEmitter();\n this._polygonAddedToManager = false;\n this._subscriptions = [];\n }\n /** @internal */\n SebmGoogleMapPolygon.prototype.ngAfterContentInit = function () {\n if (!this._polygonAddedToManager) {\n this._init();\n }\n };\n SebmGoogleMapPolygon.prototype.ngOnChanges = function (changes) {\n if (!this._polygonAddedToManager) {\n this._init();\n return;\n }\n this._polygonManager.setPolygonOptions(this, this._updatePolygonOptions(changes));\n };\n SebmGoogleMapPolygon.prototype._init = function () {\n this._polygonManager.addPolygon(this);\n this._polygonAddedToManager = true;\n this._addEventListeners();\n };\n SebmGoogleMapPolygon.prototype._addEventListeners = function () {\n var _this = this;\n var handlers = [\n { name: 'click', handler: function (ev) { return _this.polyClick.emit(ev); } },\n { name: 'dbclick', handler: function (ev) { return _this.polyDblClick.emit(ev); } },\n { name: 'drag', handler: function (ev) { return _this.polyDrag.emit(ev); } },\n { name: 'dragend', handler: function (ev) { return _this.polyDragEnd.emit(ev); } },\n { name: 'dragstart', handler: function (ev) { return _this.polyDragStart.emit(ev); } },\n { name: 'mousedown', handler: function (ev) { return _this.polyMouseDown.emit(ev); } },\n { name: 'mousemove', handler: function (ev) { return _this.polyMouseMove.emit(ev); } },\n { name: 'mouseout', handler: function (ev) { return _this.polyMouseOut.emit(ev); } },\n { name: 'mouseover', handler: function (ev) { return _this.polyMouseOver.emit(ev); } },\n { name: 'mouseup', handler: function (ev) { return _this.polyMouseUp.emit(ev); } },\n { name: 'rightclick', handler: function (ev) { return _this.polyRightClick.emit(ev); } },\n ];\n handlers.forEach(function (obj) {\n var os = _this._polygonManager.createEventObservable(obj.name, _this).subscribe(obj.handler);\n _this._subscriptions.push(os);\n });\n };\n SebmGoogleMapPolygon.prototype._updatePolygonOptions = function (changes) {\n return Object.keys(changes)\n .filter(function (k) { return SebmGoogleMapPolygon._polygonOptionsAttributes.indexOf(k) !== -1; })\n .reduce(function (obj, k) {\n obj[k] = changes[k].currentValue;\n return obj;\n }, {});\n };\n /** @internal */\n SebmGoogleMapPolygon.prototype.id = function () { return this._id; };\n /** @internal */\n SebmGoogleMapPolygon.prototype.ngOnDestroy = function () {\n this._polygonManager.deletePolygon(this);\n // unsubscribe all registered observable subscriptions\n this._subscriptions.forEach(function (s) { return s.unsubscribe(); });\n };\n SebmGoogleMapPolygon._polygonOptionsAttributes = [\n 'clickable', 'draggable', 'editable', 'fillColor', 'fillOpacity', 'geodesic', 'icon', 'map',\n 'paths', 'strokeColor', 'strokeOpacity', 'strokeWeight', 'visible', 'zIndex', 'draggable',\n 'editable', 'visible'\n ];\n SebmGoogleMapPolygon.decorators = [\n { type: Directive, args: [{\n selector: 'sebm-map-polygon',\n inputs: [\n 'clickable',\n 'draggable: polyDraggable',\n 'editable',\n 'fillColor',\n 'fillOpacity',\n 'geodesic',\n 'paths',\n 'strokeColor',\n 'strokeOpacity',\n 'strokeWeight',\n 'visible',\n 'zIndex',\n ],\n outputs: [\n 'polyClick', 'polyDblClick', 'polyDrag', 'polyDragEnd', 'polyMouseDown', 'polyMouseMove',\n 'polyMouseOut', 'polyMouseOver', 'polyMouseUp', 'polyRightClick'\n ]\n },] },\n ];\n /** @nocollapse */\n SebmGoogleMapPolygon.ctorParameters = function () { return [\n { type: PolygonManager, },\n ]; };\n return SebmGoogleMapPolygon;\n}());\n//# sourceMappingURL=google-map-polygon.js.map","import { Directive, EventEmitter, Input, Output } from '@angular/core';\n/**\n * SebmGoogleMapPolylinePoint represents one element of a polyline within a {@link\n * SembGoogleMapPolyline}\n */\nexport var SebmGoogleMapPolylinePoint = (function () {\n function SebmGoogleMapPolylinePoint() {\n /**\n * This event emitter gets emitted when the position of the point changed.\n */\n this.positionChanged = new EventEmitter();\n }\n SebmGoogleMapPolylinePoint.prototype.ngOnChanges = function (changes) {\n if (changes['latitude'] || changes['longitude']) {\n var position = {\n lat: changes['latitude'].currentValue,\n lng: changes['longitude'].currentValue\n };\n this.positionChanged.emit(position);\n }\n };\n SebmGoogleMapPolylinePoint.decorators = [\n { type: Directive, args: [{ selector: 'sebm-google-map-polyline-point' },] },\n ];\n /** @nocollapse */\n SebmGoogleMapPolylinePoint.ctorParameters = function () { return []; };\n SebmGoogleMapPolylinePoint.propDecorators = {\n 'latitude': [{ type: Input },],\n 'longitude': [{ type: Input },],\n 'positionChanged': [{ type: Output },],\n };\n return SebmGoogleMapPolylinePoint;\n}());\n//# sourceMappingURL=google-map-polyline-point.js.map","import { ContentChildren, Directive, EventEmitter } from '@angular/core';\nimport { PolylineManager } from '../services/managers/polyline-manager';\nimport { SebmGoogleMapPolylinePoint } from './google-map-polyline-point';\nvar polylineId = 0;\n/**\n * SebmGoogleMapPolyline renders a polyline on a {@link SebmGoogleMap}\n *\n * ### Example\n * ```typescript\n * import { Component } from 'angular2/core';\n * import { SebmGoogleMap, SebmGooglePolyline, SebmGooglePolylinePoint } from\n * 'angular2-google-maps/core';\n *\n * @Component({\n * selector: 'my-map-cmp',\n * directives: [SebmGoogleMap, SebmGooglePolyline, SebmGooglePolylinePoint],\n * styles: [`\n * .sebm-google-map-container {\n * height: 300px;\n * }\n * `],\n * template: `\n * <sebm-google-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n * <sebm-google-map-polyline>\n * <sebm-google-map-polyline-point [latitude]=\"latA\" [longitude]=\"lngA\">\n * </sebm-google-map-polyline-point>\n * <sebm-google-map-polyline-point [latitude]=\"latB\" [longitude]=\"lngB\">\n * </sebm-google-map-polyline-point>\n * </sebm-google-map-polyline>\n * </sebm-google-map>\n * `\n * })\n * ```\n */\nexport var SebmGoogleMapPolyline = (function () {\n function SebmGoogleMapPolyline(_polylineManager) {\n this._polylineManager = _polylineManager;\n /**\n * Indicates whether this Polyline handles mouse events. Defaults to true.\n */\n this.clickable = true;\n /**\n * If set to true, the user can drag this shape over the map. The geodesic property defines the\n * mode of dragging. Defaults to false.\n */\n this.draggable = false;\n /**\n * If set to true, the user can edit this shape by dragging the control points shown at the\n * vertices and on each segment. Defaults to false.\n */\n this.editable = false;\n /**\n * When true, edges of the polygon are interpreted as geodesic and will follow the curvature of\n * the Earth. When false, edges of the polygon are rendered as straight lines in screen space.\n * Note that the shape of a geodesic polygon may appear to change when dragged, as the dimensions\n * are maintained relative to the surface of the earth. Defaults to false.\n */\n this.geodesic = false;\n /**\n * Whether this polyline is visible on the map. Defaults to true.\n */\n this.visible = true;\n /**\n * This event is fired when the DOM click event is fired on the Polyline.\n */\n this.lineClick = new EventEmitter();\n /**\n * This event is fired when the DOM dblclick event is fired on the Polyline.\n */\n this.lineDblClick = new EventEmitter();\n /**\n * This event is repeatedly fired while the user drags the polyline.\n */\n this.lineDrag = new EventEmitter();\n /**\n * This event is fired when the user stops dragging the polyline.\n */\n this.lineDragEnd = new EventEmitter();\n /**\n * This event is fired when the user starts dragging the polyline.\n */\n this.lineDragStart = new EventEmitter();\n /**\n * This event is fired when the DOM mousedown event is fired on the Polyline.\n */\n this.lineMouseDown = new EventEmitter();\n /**\n * This event is fired when the DOM mousemove event is fired on the Polyline.\n */\n this.lineMouseMove = new EventEmitter();\n /**\n * This event is fired on Polyline mouseout.\n */\n this.lineMouseOut = new EventEmitter();\n /**\n * This event is fired on Polyline mouseover.\n */\n this.lineMouseOver = new EventEmitter();\n /**\n * This event is fired whe the DOM mouseup event is fired on the Polyline\n */\n this.lineMouseUp = new EventEmitter();\n /**\n * This even is fired when the Polyline is right-clicked on.\n */\n this.lineRightClick = new EventEmitter();\n this._polylineAddedToManager = false;\n this._subscriptions = [];\n this._id = (polylineId++).toString();\n }\n /** @internal */\n SebmGoogleMapPolyline.prototype.ngAfterContentInit = function () {\n var _this = this;\n if (this.points.length) {\n this.points.forEach(function (point) {\n var s = point.positionChanged.subscribe(function () { _this._polylineManager.updatePolylinePoints(_this); });\n _this._subscriptions.push(s);\n });\n }\n if (!this._polylineAddedToManager) {\n this._init();\n }\n var s = this.points.changes.subscribe(function () { return _this._polylineManager.updatePolylinePoints(_this); });\n this._subscriptions.push(s);\n this._polylineManager.updatePolylinePoints(this);\n };\n SebmGoogleMapPolyline.prototype.ngOnChanges = function (changes) {\n if (!this._polylineAddedToManager) {\n this._init();\n return;\n }\n var options = {};\n var optionKeys = Object.keys(changes).filter(function (k) { return SebmGoogleMapPolyline._polylineOptionsAttributes.indexOf(k) !== -1; });\n optionKeys.forEach(function (k) { return options[k] = changes[k].currentValue; });\n this._polylineManager.setPolylineOptions(this, options);\n };\n SebmGoogleMapPolyline.prototype._init = function () {\n this._polylineManager.addPolyline(this);\n this._polylineAddedToManager = true;\n this._addEventListeners();\n };\n SebmGoogleMapPolyline.prototype._addEventListeners = function () {\n var _this = this;\n var handlers = [\n { name: 'click', handler: function (ev) { return _this.lineClick.emit(ev); } },\n { name: 'dbclick', handler: function (ev) { return _this.lineDblClick.emit(ev); } },\n { name: 'drag', handler: function (ev) { return _this.lineDrag.emit(ev); } },\n { name: 'dragend', handler: function (ev) { return _this.lineDragEnd.emit(ev); } },\n { name: 'dragstart', handler: function (ev) { return _this.lineDragStart.emit(ev); } },\n { name: 'mousedown', handler: function (ev) { return _this.lineMouseDown.emit(ev); } },\n { name: 'mousemove', handler: function (ev) { return _this.lineMouseMove.emit(ev); } },\n { name: 'mouseout', handler: function (ev) { return _this.lineMouseOut.emit(ev); } },\n { name: 'mouseover', handler: function (ev) { return _this.lineMouseOver.emit(ev); } },\n { name: 'mouseup', handler: function (ev) { return _this.lineMouseUp.emit(ev); } },\n { name: 'rightclick', handler: function (ev) { return _this.lineRightClick.emit(ev); } },\n ];\n handlers.forEach(function (obj) {\n var os = _this._polylineManager.createEventObservable(obj.name, _this).subscribe(obj.handler);\n _this._subscriptions.push(os);\n });\n };\n /** @internal */\n SebmGoogleMapPolyline.prototype._getPoints = function () {\n if (this.points) {\n return this.points.toArray();\n }\n return [];\n };\n /** @internal */\n SebmGoogleMapPolyline.prototype.id = function () { return this._id; };\n /** @internal */\n SebmGoogleMapPolyline.prototype.ngOnDestroy = function () {\n this._polylineManager.deletePolyline(this);\n // unsubscribe all registered observable subscriptions\n this._subscriptions.forEach(function (s) { return s.unsubscribe(); });\n };\n SebmGoogleMapPolyline._polylineOptionsAttributes = [\n 'draggable', 'editable', 'visible', 'geodesic', 'strokeColor', 'strokeOpacity', 'strokeWeight',\n 'zIndex'\n ];\n SebmGoogleMapPolyline.decorators = [\n { type: Directive, args: [{\n selector: 'sebm-google-map-polyline',\n inputs: [\n 'clickable', 'draggable: polylineDraggable', 'editable', 'geodesic', 'strokeColor',\n 'strokeWeight', 'strokeOpacity', 'visible', 'zIndex'\n ],\n outputs: [\n 'lineClick', 'lineDblClick', 'lineDrag', 'lineDragEnd', 'lineMouseDown', 'lineMouseMove',\n 'lineMouseOut', 'lineMouseOver', 'lineMouseUp', 'lineRightClick'\n ]\n },] },\n ];\n /** @nocollapse */\n SebmGoogleMapPolyline.ctorParameters = function () { return [\n { type: PolylineManager, },\n ]; };\n SebmGoogleMapPolyline.propDecorators = {\n 'points': [{ type: ContentChildren, args: [SebmGoogleMapPolylinePoint,] },],\n };\n return SebmGoogleMapPolyline;\n}());\n//# sourceMappingURL=google-map-polyline.js.map","export var WindowRef = (function () {\n function WindowRef() {\n }\n WindowRef.prototype.getNativeWindow = function () { return window; };\n return WindowRef;\n}());\nexport var DocumentRef = (function () {\n function DocumentRef() {\n }\n DocumentRef.prototype.getNativeDocument = function () { return document; };\n return DocumentRef;\n}());\nexport var BROWSER_GLOBALS_PROVIDERS = [WindowRef, DocumentRef];\n//# sourceMappingURL=browser-globals.js.map","var __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nimport { Inject, Injectable, OpaqueToken } from '@angular/core';\nimport { DocumentRef, WindowRef } from '../../utils/browser-globals';\nimport { MapsAPILoader } from './maps-api-loader';\nexport var GoogleMapsScriptProtocol;\n(function (GoogleMapsScriptProtocol) {\n GoogleMapsScriptProtocol[GoogleMapsScriptProtocol[\"HTTP\"] = 1] = \"HTTP\";\n GoogleMapsScriptProtocol[GoogleMapsScriptProtocol[\"HTTPS\"] = 2] = \"HTTPS\";\n GoogleMapsScriptProtocol[GoogleMapsScriptProtocol[\"AUTO\"] = 3] = \"AUTO\";\n})(GoogleMapsScriptProtocol || (GoogleMapsScriptProtocol = {}));\n/**\n * Token for the config of the LazyMapsAPILoader. Please provide an object of type {@link\n * LazyMapsAPILoaderConfig}.\n */\nexport var LAZY_MAPS_API_CONFIG = new OpaqueToken('angular2-google-maps LAZY_MAPS_API_CONFIG');\nexport var LazyMapsAPILoader = (function (_super) {\n __extends(LazyMapsAPILoader, _super);\n function LazyMapsAPILoader(config, w, d) {\n _super.call(this);\n this._config = config || {};\n this._windowRef = w;\n this._documentRef = d;\n }\n LazyMapsAPILoader.prototype.load = function () {\n var _this = this;\n if (this._scriptLoadingPromise) {\n return this._scriptLoadingPromise;\n }\n var script = this._documentRef.getNativeDocument().createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n var callbackName = \"angular2GoogleMapsLazyMapsAPILoader\";\n script.src = this._getScriptSrc(callbackName);\n this._scriptLoadingPromise = new Promise(function (resolve, reject) {\n _this._windowRef.getNativeWindow()[callbackName] = function () { resolve(); };\n script.onerror = function (error) { reject(error); };\n });\n this._documentRef.getNativeDocument().body.appendChild(script);\n return this._scriptLoadingPromise;\n };\n LazyMapsAPILoader.prototype._getScriptSrc = function (callbackName) {\n var protocolType = (this._config && this._config.protocol) || GoogleMapsScriptProtocol.HTTPS;\n var protocol;\n switch (protocolType) {\n case GoogleMapsScriptProtocol.AUTO:\n protocol = '';\n break;\n case GoogleMapsScriptProtocol.HTTP:\n protocol = 'http:';\n break;\n case GoogleMapsScriptProtocol.HTTPS:\n protocol = 'https:';\n break;\n }\n var hostAndPath = this._config.hostAndPath || 'maps.googleapis.com/maps/api/js';\n var queryParams = {\n v: this._config.apiVersion || '3',\n callback: callbackName,\n key: this._config.apiKey,\n client: this._config.clientId,\n channel: this._config.channel,\n libraries: this._config.libraries,\n region: this._config.region,\n language: this._config.language\n };\n var params = Object.keys(queryParams)\n .filter(function (k) { return queryParams[k] != null; })\n .filter(function (k) {\n // remove empty arrays\n return !Array.isArray(queryParams[k]) ||\n (Array.isArray(queryParams[k]) && queryParams[k].length > 0);\n })\n .map(function (k) {\n // join arrays as comma seperated strings\n var i = queryParams[k];\n if (Array.isArray(i)) {\n return { key: k, value: i.join(',') };\n }\n return { key: k, value: queryParams[k] };\n })\n .map(function (entry) { return entry.key + \"=\" + entry.value; })\n .join('&');\n return protocol + \"//\" + hostAndPath + \"?\" + params;\n };\n LazyMapsAPILoader.decorators = [\n { type: Injectable },\n ];\n /** @nocollapse */\n LazyMapsAPILoader.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [LAZY_MAPS_API_CONFIG,] },] },\n { type: WindowRef, },\n { type: DocumentRef, },\n ]; };\n return LazyMapsAPILoader;\n}(MapsAPILoader));\n//# sourceMappingURL=lazy-maps-api-loader.js.map","/**\n * When using the NoOpMapsAPILoader, the Google Maps API must be added to the page via a `<script>`\n * Tag.\n * It's important that the Google Maps API script gets loaded first on the page.\n */\nexport var NoOpMapsAPILoader = (function () {\n function NoOpMapsAPILoader() {\n }\n NoOpMapsAPILoader.prototype.load = function () {\n if (!window.google || !window.google.maps) {\n throw new Error('Google Maps API not loaded on page. Make sure window.google.maps is available!');\n }\n return Promise.resolve();\n };\n ;\n return NoOpMapsAPILoader;\n}());\n//# sourceMappingURL=noop-maps-api-loader.js.map","// exported map types\n//# sourceMappingURL=map-types.js.map","import { NgModule } from '@angular/core';\nimport { SebmGoogleMapKmlLayer } from './directives/google-map-kml-layer';\nimport { SebmGoogleMap } from './directives/google-map';\nimport { SebmGoogleMapCircle } from './directives/google-map-circle';\nimport { SebmGoogleMapInfoWindow } from './directives/google-map-info-window';\nimport { SebmGoogleMapMarker } from './directives/google-map-marker';\nimport { SebmGoogleMapPolygon } from './directives/google-map-polygon';\nimport { SebmGoogleMapPolyline } from './directives/google-map-polyline';\nimport { SebmGoogleMapPolylinePoint } from './directives/google-map-polyline-point';\nimport { LazyMapsAPILoader } from './services/maps-api-loader/lazy-maps-api-loader';\nimport { LAZY_MAPS_API_CONFIG } from './services/maps-api-loader/lazy-maps-api-loader';\nimport { MapsAPILoader } from './services/maps-api-loader/maps-api-loader';\nimport { BROWSER_GLOBALS_PROVIDERS } from './utils/browser-globals';\n/**\n * @internal\n */\nexport function coreDirectives() {\n return [\n SebmGoogleMap, SebmGoogleMapMarker, SebmGoogleMapInfoWindow, SebmGoogleMapCircle,\n SebmGoogleMapPolygon, SebmGoogleMapPolyline, SebmGoogleMapPolylinePoint, SebmGoogleMapKmlLayer\n ];\n}\n;\n/**\n * The angular2-google-maps core module. Contains all Directives/Services/Pipes\n * of the core module. Please use `AgmCoreModule.forRoot()` in your app module.\n */\nexport var AgmCoreModule = (function () {\n function AgmCoreModule() {\n }\n /**\n * Please use this method when you register the module at the root level.\n */\n AgmCoreModule.forRoot = function (lazyMapsAPILoaderConfig) {\n return {\n ngModule: AgmCoreModule,\n providers: BROWSER_GLOBALS_PROVIDERS.concat([\n { provide: MapsAPILoader, useClass: LazyMapsAPILoader },\n { provide: LAZY_MAPS_API_CONFIG, useValue: lazyMapsAPILoaderConfig }\n ]),\n };\n };\n AgmCoreModule.decorators = [\n { type: NgModule, args: [{ declarations: coreDirectives(), exports: coreDirectives() },] },\n ];\n /** @nocollapse */\n AgmCoreModule.ctorParameters = function () { return []; };\n return AgmCoreModule;\n}());\n//# sourceMappingURL=core-module.js.map","// main modules\nexport * from './directives';\nexport * from './services';\nexport * from './map-types';\n// Google Maps types\n// core module\n// we explicitly export the module here to prevent this Ionic 2 bug:\n// http://stevemichelotti.com/integrate-angular-2-google-maps-into-ionic-2/\nexport { AgmCoreModule } from './core-module';\n//# sourceMappingURL=index.js.map"],"names":["Injectable","Observable","NgZone","EventEmitter","Component","ElementRef","Directive","ContentChild","Input","Output","ContentChildren","this","GoogleMapsScriptProtocol","OpaqueToken","Inject","NgModule"],"mappings":"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"}
\No newline at end of file