UNPKG

angular-leaflet

Version:

Collection of angular components to build map views faster and with minimal configuration using the most popular library **LeafletJS**.

114 lines 7.92 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ContentChildren, ElementRef, Input, QueryList } from '@angular/core'; import { map } from 'leaflet'; import { BaseLayer } from './base-layer'; import { MapHandler } from './map-handler'; export class LeafletComponent { /** * @param {?} elementRef */ constructor(elementRef) { this.elementRef = elementRef; this.layerIds = []; this.handlerIds = []; } /** * @return {?} */ ngOnInit() { this.map = map(this.elementRef.nativeElement, Object.assign({}, this.options)); } /** * @return {?} */ ngAfterContentInit() { this.addLayers(); this.layers.changes.subscribe(this.addLayers.bind(this)); this.addHandlers(); this.handlers.changes.subscribe(this.addHandlers.bind(this)); } /** * @private * @return {?} */ addLayers() { this.layers.filter((/** * @param {?} layer * @return {?} */ layer => !this.layerIds.includes(layer.id))).forEach(this.addLayer.bind(this)); } /** * @private * @param {?} layer * @return {?} */ addLayer(layer) { layer.addTo(this.map); this.layerIds = [...this.layerIds, layer.id]; } /** * @private * @return {?} */ addHandlers() { this.handlers.filter((/** * @param {?} handler * @return {?} */ handler => !this.handlerIds.includes(handler.id))).forEach(this.addHandler.bind(this)); } /** * @private * @param {?} handler * @return {?} */ addHandler(handler) { handler.initialize(this.map); this.handlerIds = [...this.handlerIds, handler.id]; } } LeafletComponent.decorators = [ { type: Component, args: [{ selector: 'ngl-leaflet', template: '<ng-content></ng-content>', styles: [` :host { display: flex; flex: 1 1 auto; } `] }] } ]; /** @nocollapse */ LeafletComponent.ctorParameters = () => [ { type: ElementRef } ]; LeafletComponent.propDecorators = { options: [{ type: Input }], layers: [{ type: ContentChildren, args: [BaseLayer,] }], handlers: [{ type: ContentChildren, args: [MapHandler, { descendants: true },] }] }; if (false) { /** @type {?} */ LeafletComponent.prototype.options; /** @type {?} */ LeafletComponent.prototype.layers; /** @type {?} */ LeafletComponent.prototype.handlers; /** @type {?} */ LeafletComponent.prototype.map; /** @type {?} */ LeafletComponent.prototype.layerIds; /** @type {?} */ LeafletComponent.prototype.handlerIds; /** * @type {?} * @private */ LeafletComponent.prototype.elementRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhZmxldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLWxlYWZsZXQvIiwic291cmNlcyI6WyJjb3JlL2xlYWZsZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLEdBQUcsRUFBbUIsTUFBTSxTQUFTLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBYzNDLE1BQU0sT0FBTyxnQkFBZ0I7Ozs7SUFVM0IsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUgxQyxhQUFRLEdBQWEsRUFBRSxDQUFDO1FBQ3hCLGVBQVUsR0FBYSxFQUFFLENBQUM7SUFFbUIsQ0FBQzs7OztJQUU5QyxRQUFRO1FBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLG9CQUN2QyxJQUFJLENBQUMsT0FBTyxFQUNmLENBQUM7SUFDTCxDQUFDOzs7O0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQzs7Ozs7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNOzs7O1FBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25HLENBQUM7Ozs7OztJQUVPLFFBQVEsQ0FBQyxLQUFxQjtRQUNwQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDOzs7OztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNOzs7O1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdHLENBQUM7Ozs7OztJQUVPLFVBQVUsQ0FBQyxPQUFtQjtRQUNwQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDOzs7WUF0REYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxhQUFhO2dCQUN2QixRQUFRLEVBQUUsMkJBQTJCO3lCQUVuQzs7Ozs7S0FLQzthQUVKOzs7O1lBaEJzRCxVQUFVOzs7c0JBa0I5RCxLQUFLO3FCQUVMLGVBQWUsU0FBQyxTQUFTO3VCQUN6QixlQUFlLFNBQUMsVUFBVSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTs7OztJQUhsRCxtQ0FBNkI7O0lBRTdCLGtDQUE4RDs7SUFDOUQsb0NBQW9GOztJQUVwRiwrQkFBUzs7SUFDVCxvQ0FBd0I7O0lBQ3hCLHNDQUEwQjs7Ozs7SUFFZCxzQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtYXAsIE1hcCwgTWFwT3B0aW9ucyB9IGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IHsgQmFzZUxheWVyIH0gZnJvbSAnLi9iYXNlLWxheWVyJztcbmltcG9ydCB7IE1hcEhhbmRsZXIgfSBmcm9tICcuL21hcC1oYW5kbGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdsLWxlYWZsZXQnLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgfVxuICAgIGBcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBMZWFmbGV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgQElucHV0KCkgb3B0aW9uczogTWFwT3B0aW9ucztcblxuICBAQ29udGVudENoaWxkcmVuKEJhc2VMYXllcikgbGF5ZXJzOiBRdWVyeUxpc3Q8QmFzZUxheWVyPGFueT4+O1xuICBAQ29udGVudENoaWxkcmVuKE1hcEhhbmRsZXIsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgaGFuZGxlcnM6IFF1ZXJ5TGlzdDxNYXBIYW5kbGVyPjtcblxuICBtYXA6IE1hcDtcbiAgbGF5ZXJJZHM6IHN0cmluZ1tdID0gW107XG4gIGhhbmRsZXJJZHM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubWFwID0gbWFwKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAuLi50aGlzLm9wdGlvbnNcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmFkZExheWVycygpO1xuICAgIHRoaXMubGF5ZXJzLmNoYW5nZXMuc3Vic2NyaWJlKHRoaXMuYWRkTGF5ZXJzLmJpbmQodGhpcykpO1xuXG4gICAgdGhpcy5hZGRIYW5kbGVycygpO1xuICAgIHRoaXMuaGFuZGxlcnMuY2hhbmdlcy5zdWJzY3JpYmUodGhpcy5hZGRIYW5kbGVycy5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTGF5ZXJzKCkge1xuICAgIHRoaXMubGF5ZXJzLmZpbHRlcihsYXllciA9PiAhdGhpcy5sYXllcklkcy5pbmNsdWRlcyhsYXllci5pZCkpLmZvckVhY2godGhpcy5hZGRMYXllci5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTGF5ZXIobGF5ZXI6IEJhc2VMYXllcjxhbnk+KSB7XG4gICAgbGF5ZXIuYWRkVG8odGhpcy5tYXApO1xuICAgIHRoaXMubGF5ZXJJZHMgPSBbLi4udGhpcy5sYXllcklkcywgbGF5ZXIuaWRdO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRIYW5kbGVycygpIHtcbiAgICB0aGlzLmhhbmRsZXJzLmZpbHRlcihoYW5kbGVyID0+ICF0aGlzLmhhbmRsZXJJZHMuaW5jbHVkZXMoaGFuZGxlci5pZCkpLmZvckVhY2godGhpcy5hZGRIYW5kbGVyLmJpbmQodGhpcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRIYW5kbGVyKGhhbmRsZXI6IE1hcEhhbmRsZXIpIHtcbiAgICBoYW5kbGVyLmluaXRpYWxpemUodGhpcy5tYXApO1xuICAgIHRoaXMuaGFuZGxlcklkcyA9IFsuLi50aGlzLmhhbmRsZXJJZHMsIGhhbmRsZXIuaWRdO1xuICB9XG59XG4iXX0=