1 | import { Directive, EventEmitter, Input, NgZone, Output } from '@angular/core';
|
2 | import { LeafletDirective } from '../core/leaflet.directive';
|
3 | import { LeafletDirectiveWrapper } from '../core/leaflet.directive.wrapper';
|
4 | import { LeafletUtil } from '../core/leaflet.util';
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 | var LeafletLayerDirective = (function () {
|
13 | function LeafletLayerDirective(leafletDirective, zone) {
|
14 | this.zone = zone;
|
15 |
|
16 | this.onAdd = new EventEmitter();
|
17 | this.onRemove = new EventEmitter();
|
18 | this.leafletDirective = new LeafletDirectiveWrapper(leafletDirective);
|
19 | }
|
20 | LeafletLayerDirective.prototype.ngOnInit = function () {
|
21 |
|
22 | this.leafletDirective.init();
|
23 | };
|
24 | LeafletLayerDirective.prototype.ngOnDestroy = function () {
|
25 | if (null != this.layer) {
|
26 |
|
27 | this.removeLayerEventListeners(this.layer);
|
28 |
|
29 | this.layer.remove();
|
30 | }
|
31 | };
|
32 | LeafletLayerDirective.prototype.ngOnChanges = function (changes) {
|
33 | var _this = this;
|
34 | if (changes['layer']) {
|
35 |
|
36 | var p_1 = changes['layer'].previousValue;
|
37 | var n_1 = changes['layer'].currentValue;
|
38 | this.zone.runOutsideAngular(function () {
|
39 | if (null != p_1) {
|
40 | _this.removeLayerEventListeners(p_1);
|
41 | p_1.remove();
|
42 | }
|
43 | if (null != n_1) {
|
44 | _this.addLayerEventListeners(n_1);
|
45 | _this.leafletDirective.getMap().addLayer(n_1);
|
46 | }
|
47 | });
|
48 | }
|
49 | };
|
50 | LeafletLayerDirective.prototype.addLayerEventListeners = function (l) {
|
51 | var _this = this;
|
52 | this.onAddLayerHandler = function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onAdd, e); };
|
53 | l.on('add', this.onAddLayerHandler);
|
54 | this.onRemoveLayerHandler = function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onRemove, e); };
|
55 | l.on('remove', this.onRemoveLayerHandler);
|
56 | };
|
57 | LeafletLayerDirective.prototype.removeLayerEventListeners = function (l) {
|
58 | l.off('add', this.onAddLayerHandler);
|
59 | l.off('remove', this.onRemoveLayerHandler);
|
60 | };
|
61 | LeafletLayerDirective.decorators = [
|
62 | { type: Directive, args: [{
|
63 | selector: '[leafletLayer]'
|
64 | },] }
|
65 | ];
|
66 | LeafletLayerDirective.ctorParameters = function () { return [
|
67 | { type: LeafletDirective },
|
68 | { type: NgZone }
|
69 | ]; };
|
70 | LeafletLayerDirective.propDecorators = {
|
71 | layer: [{ type: Input, args: ['leafletLayer',] }],
|
72 | onAdd: [{ type: Output, args: ['leafletLayerAdd',] }],
|
73 | onRemove: [{ type: Output, args: ['leafletLayerRemove',] }]
|
74 | };
|
75 | return LeafletLayerDirective;
|
76 | }());
|
77 | export { LeafletLayerDirective };
|
78 |
|
\ | No newline at end of file |