@artstesh/maps 1.0.0

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 (152) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +13 -0
  3. package/dist/README.md +24 -0
  4. package/dist/bundles/maps-components-src-map.umd.js +1349 -0
  5. package/dist/bundles/maps-components-src-map.umd.js.map +1 -0
  6. package/dist/bundles/maps-components.umd.js +1353 -0
  7. package/dist/bundles/maps-components.umd.js.map +1 -0
  8. package/dist/esm2015/map/common/destructible.component.js +19 -0
  9. package/dist/esm2015/map/common/id.generator.js +14 -0
  10. package/dist/esm2015/map/helpers/index.js +2 -0
  11. package/dist/esm2015/map/helpers/marker-style.helper.js +25 -0
  12. package/dist/esm2015/map/map-plate/features/index.js +2 -0
  13. package/dist/esm2015/map/map-plate/features/markers/markers.component.js +47 -0
  14. package/dist/esm2015/map/map-plate/layers/feature-layer/feature-layer.component.js +55 -0
  15. package/dist/esm2015/map/map-plate/layers/feature-layer/feature-layer.factory.js +28 -0
  16. package/dist/esm2015/map/map-plate/layers/feature-layer/feature-layer.settings.js +47 -0
  17. package/dist/esm2015/map/map-plate/layers/index.js +6 -0
  18. package/dist/esm2015/map/map-plate/layers/osm-tile-layer/osm-tile-layer.component.js +61 -0
  19. package/dist/esm2015/map/map-plate/layers/tile-layer/tile-layer.component.js +20 -0
  20. package/dist/esm2015/map/map-plate/layers/tile-layer/tile-layer.settings.js +41 -0
  21. package/dist/esm2015/map/map-plate/map-plate.component.js +65 -0
  22. package/dist/esm2015/map/map-plate/map-plate.factory.service.js +27 -0
  23. package/dist/esm2015/map/map.module.js +35 -0
  24. package/dist/esm2015/map/messages/commands/add-layer.command.js +12 -0
  25. package/dist/esm2015/map/messages/commands/clear-layer.command.js +12 -0
  26. package/dist/esm2015/map/messages/commands/place-layer-features.command.js +13 -0
  27. package/dist/esm2015/map/messages/commands/remove-layer.command.js +12 -0
  28. package/dist/esm2015/map/messages/events/map-rendered.event.js +12 -0
  29. package/dist/esm2015/map/messages/generic-message.js +15 -0
  30. package/dist/esm2015/map/messages/index.js +3 -0
  31. package/dist/esm2015/map/models/index.js +4 -0
  32. package/dist/esm2015/map/models/map-lyrs.enum.js +19 -0
  33. package/dist/esm2015/map/models/map-settings.js +53 -0
  34. package/dist/esm2015/map/models/marker-model.js +26 -0
  35. package/dist/esm2015/map/public-api.js +14 -0
  36. package/dist/esm2015/map/services/map-management.service.js +61 -0
  37. package/dist/esm2015/map/services/map-postboy.service.js +26 -0
  38. package/dist/esm2015/map/services/map-state.service.js +16 -0
  39. package/dist/esm2015/map/services/message-registrator.service.js +24 -0
  40. package/dist/esm2015/map/services/service.collector.js +14 -0
  41. package/dist/esm2015/maps-components.js +5 -0
  42. package/dist/esm2015/public-api.js +5 -0
  43. package/dist/esm2015/src/map/common/destructible.component.js +19 -0
  44. package/dist/esm2015/src/map/common/id.generator.js +14 -0
  45. package/dist/esm2015/src/map/helpers/index.js +2 -0
  46. package/dist/esm2015/src/map/helpers/marker-style.helper.js +25 -0
  47. package/dist/esm2015/src/map/map-plate/features/index.js +2 -0
  48. package/dist/esm2015/src/map/map-plate/features/markers/markers.component.js +47 -0
  49. package/dist/esm2015/src/map/map-plate/layers/feature-layer/feature-layer.component.js +55 -0
  50. package/dist/esm2015/src/map/map-plate/layers/feature-layer/feature-layer.factory.js +28 -0
  51. package/dist/esm2015/src/map/map-plate/layers/feature-layer/feature-layer.settings.js +47 -0
  52. package/dist/esm2015/src/map/map-plate/layers/index.js +6 -0
  53. package/dist/esm2015/src/map/map-plate/layers/osm-tile-layer/osm-tile-layer.component.js +61 -0
  54. package/dist/esm2015/src/map/map-plate/layers/tile-layer/tile-layer.component.js +20 -0
  55. package/dist/esm2015/src/map/map-plate/layers/tile-layer/tile-layer.settings.js +41 -0
  56. package/dist/esm2015/src/map/map-plate/map-plate.component.js +65 -0
  57. package/dist/esm2015/src/map/map-plate/map-plate.factory.service.js +27 -0
  58. package/dist/esm2015/src/map/map.module.js +35 -0
  59. package/dist/esm2015/src/map/maps-components-src-map.js +5 -0
  60. package/dist/esm2015/src/map/messages/commands/add-layer.command.js +12 -0
  61. package/dist/esm2015/src/map/messages/commands/clear-layer.command.js +12 -0
  62. package/dist/esm2015/src/map/messages/commands/place-layer-features.command.js +13 -0
  63. package/dist/esm2015/src/map/messages/commands/remove-layer.command.js +12 -0
  64. package/dist/esm2015/src/map/messages/events/map-rendered.event.js +12 -0
  65. package/dist/esm2015/src/map/messages/generic-message.js +15 -0
  66. package/dist/esm2015/src/map/messages/index.js +3 -0
  67. package/dist/esm2015/src/map/models/index.js +4 -0
  68. package/dist/esm2015/src/map/models/map-lyrs.enum.js +19 -0
  69. package/dist/esm2015/src/map/models/map-settings.js +53 -0
  70. package/dist/esm2015/src/map/models/marker-model.js +26 -0
  71. package/dist/esm2015/src/map/public-api.js +14 -0
  72. package/dist/esm2015/src/map/services/map-management.service.js +61 -0
  73. package/dist/esm2015/src/map/services/map-postboy.service.js +26 -0
  74. package/dist/esm2015/src/map/services/map-state.service.js +16 -0
  75. package/dist/esm2015/src/map/services/message-registrator.service.js +24 -0
  76. package/dist/esm2015/src/map/services/service.collector.js +14 -0
  77. package/dist/fesm2015/maps-components-src-map.js +727 -0
  78. package/dist/fesm2015/maps-components-src-map.js.map +1 -0
  79. package/dist/fesm2015/maps-components.js +731 -0
  80. package/dist/fesm2015/maps-components.js.map +1 -0
  81. package/dist/map/common/destructible.component.d.ts +10 -0
  82. package/dist/map/common/id.generator.d.ts +4 -0
  83. package/dist/map/helpers/index.d.ts +1 -0
  84. package/dist/map/helpers/marker-style.helper.d.ts +5 -0
  85. package/dist/map/map-plate/features/index.d.ts +1 -0
  86. package/dist/map/map-plate/features/markers/markers.component.d.ts +16 -0
  87. package/dist/map/map-plate/layers/feature-layer/feature-layer.component.d.ts +22 -0
  88. package/dist/map/map-plate/layers/feature-layer/feature-layer.factory.d.ts +9 -0
  89. package/dist/map/map-plate/layers/feature-layer/feature-layer.settings.d.ts +15 -0
  90. package/dist/map/map-plate/layers/index.d.ts +5 -0
  91. package/dist/map/map-plate/layers/osm-tile-layer/osm-tile-layer.component.d.ts +19 -0
  92. package/dist/map/map-plate/layers/tile-layer/tile-layer.component.d.ts +12 -0
  93. package/dist/map/map-plate/layers/tile-layer/tile-layer.settings.d.ts +13 -0
  94. package/dist/map/map-plate/map-plate.component.d.ts +23 -0
  95. package/dist/map/map-plate/map-plate.factory.service.d.ts +8 -0
  96. package/dist/map/map.module.d.ts +13 -0
  97. package/dist/map/messages/commands/add-layer.command.d.ts +9 -0
  98. package/dist/map/messages/commands/clear-layer.command.d.ts +7 -0
  99. package/dist/map/messages/commands/place-layer-features.command.d.ts +10 -0
  100. package/dist/map/messages/commands/remove-layer.command.d.ts +8 -0
  101. package/dist/map/messages/events/map-rendered.event.d.ts +8 -0
  102. package/dist/map/messages/generic-message.d.ts +9 -0
  103. package/dist/map/messages/index.d.ts +2 -0
  104. package/dist/map/models/index.d.ts +3 -0
  105. package/dist/map/models/map-lyrs.enum.d.ts +10 -0
  106. package/dist/map/models/map-settings.d.ts +17 -0
  107. package/dist/map/models/marker-model.d.ts +16 -0
  108. package/dist/map/public-api.d.ts +10 -0
  109. package/dist/map/services/map-management.service.d.ts +15 -0
  110. package/dist/map/services/map-postboy.service.d.ts +11 -0
  111. package/dist/map/services/map-state.service.d.ts +9 -0
  112. package/dist/map/services/message-registrator.service.d.ts +7 -0
  113. package/dist/map/services/service.collector.d.ts +9 -0
  114. package/dist/maps-components.d.ts +5 -0
  115. package/dist/package.json +20 -0
  116. package/dist/public-api.d.ts +1 -0
  117. package/dist/src/map/common/destructible.component.d.ts +10 -0
  118. package/dist/src/map/common/id.generator.d.ts +4 -0
  119. package/dist/src/map/helpers/index.d.ts +1 -0
  120. package/dist/src/map/helpers/marker-style.helper.d.ts +5 -0
  121. package/dist/src/map/map-plate/features/index.d.ts +1 -0
  122. package/dist/src/map/map-plate/features/markers/markers.component.d.ts +16 -0
  123. package/dist/src/map/map-plate/layers/feature-layer/feature-layer.component.d.ts +22 -0
  124. package/dist/src/map/map-plate/layers/feature-layer/feature-layer.factory.d.ts +9 -0
  125. package/dist/src/map/map-plate/layers/feature-layer/feature-layer.settings.d.ts +15 -0
  126. package/dist/src/map/map-plate/layers/index.d.ts +5 -0
  127. package/dist/src/map/map-plate/layers/osm-tile-layer/osm-tile-layer.component.d.ts +19 -0
  128. package/dist/src/map/map-plate/layers/tile-layer/tile-layer.component.d.ts +12 -0
  129. package/dist/src/map/map-plate/layers/tile-layer/tile-layer.settings.d.ts +13 -0
  130. package/dist/src/map/map-plate/map-plate.component.d.ts +23 -0
  131. package/dist/src/map/map-plate/map-plate.factory.service.d.ts +8 -0
  132. package/dist/src/map/map.module.d.ts +13 -0
  133. package/dist/src/map/maps-components-src-map.d.ts +5 -0
  134. package/dist/src/map/messages/commands/add-layer.command.d.ts +9 -0
  135. package/dist/src/map/messages/commands/clear-layer.command.d.ts +7 -0
  136. package/dist/src/map/messages/commands/place-layer-features.command.d.ts +10 -0
  137. package/dist/src/map/messages/commands/remove-layer.command.d.ts +8 -0
  138. package/dist/src/map/messages/events/map-rendered.event.d.ts +8 -0
  139. package/dist/src/map/messages/generic-message.d.ts +9 -0
  140. package/dist/src/map/messages/index.d.ts +2 -0
  141. package/dist/src/map/models/index.d.ts +3 -0
  142. package/dist/src/map/models/map-lyrs.enum.d.ts +10 -0
  143. package/dist/src/map/models/map-settings.d.ts +17 -0
  144. package/dist/src/map/models/marker-model.d.ts +16 -0
  145. package/dist/src/map/package.json +10 -0
  146. package/dist/src/map/public-api.d.ts +10 -0
  147. package/dist/src/map/services/map-management.service.d.ts +15 -0
  148. package/dist/src/map/services/map-postboy.service.d.ts +11 -0
  149. package/dist/src/map/services/map-state.service.d.ts +9 -0
  150. package/dist/src/map/services/message-registrator.service.d.ts +7 -0
  151. package/dist/src/map/services/service.collector.d.ts +9 -0
  152. package/package.json +91 -0
@@ -0,0 +1,727 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, Injectable, ChangeDetectionStrategy, Input, NgModule } from '@angular/core';
3
+ import * as i5 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import { Feature } from 'ol';
6
+ import { Point } from 'ol/geom';
7
+ import { useGeographic } from 'ol/proj';
8
+ import { Subject, ReplaySubject } from 'rxjs';
9
+ import Map from 'ol/Map';
10
+ import View from 'ol/View';
11
+ import TileLayer from 'ol/layer/Tile';
12
+ import OSM from 'ol/source/OSM';
13
+ import { filter, first } from 'rxjs/operators';
14
+ import { Vector } from 'ol/source';
15
+ import { Vector as Vector$1 } from 'ol/layer';
16
+ import Style from 'ol/style/Style';
17
+ import { Icon, Circle, Fill, Stroke } from 'ol/style';
18
+
19
+ class DestructibleComponent {
20
+ constructor() {
21
+ this.subs = [];
22
+ }
23
+ ngOnDestroy() {
24
+ this.subs.forEach((s) => s.unsubscribe());
25
+ if (this.onDestroy)
26
+ this.onDestroy();
27
+ }
28
+ }
29
+ DestructibleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DestructibleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
+ DestructibleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DestructibleComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DestructibleComponent, decorators: [{
32
+ type: Component,
33
+ args: [{ template: '' }]
34
+ }] });
35
+
36
+ var MapLyrs;
37
+ (function (MapLyrs) {
38
+ MapLyrs[MapLyrs["Hybrid"] = 1] = "Hybrid";
39
+ MapLyrs[MapLyrs["Satellite"] = 2] = "Satellite";
40
+ MapLyrs[MapLyrs["Streets"] = 3] = "Streets";
41
+ MapLyrs[MapLyrs["Terrain"] = 4] = "Terrain";
42
+ })(MapLyrs || (MapLyrs = {}));
43
+ class MapLyrsLabel {
44
+ static get(lyrs) {
45
+ return MapLyrsLabel.lyrs[lyrs];
46
+ }
47
+ }
48
+ MapLyrsLabel.lyrs = {
49
+ [MapLyrs.Hybrid]: 's,h',
50
+ [MapLyrs.Satellite]: 's',
51
+ [MapLyrs.Streets]: 'm',
52
+ [MapLyrs.Terrain]: 'p',
53
+ };
54
+
55
+ class MapSettings {
56
+ constructor() {
57
+ this.center = [0, 0];
58
+ this.maxZoom = 19;
59
+ this.minZoom = 0;
60
+ this.zoom = 4;
61
+ this.lyrs = MapLyrs.Hybrid;
62
+ this.language = 'en';
63
+ }
64
+ static copy(model) {
65
+ const result = new MapSettings();
66
+ result.center = model.center;
67
+ result.maxZoom = model.maxZoom;
68
+ result.minZoom = model.minZoom;
69
+ result.zoom = model.zoom;
70
+ result.lyrs = model.lyrs;
71
+ result.language = model.language;
72
+ return result;
73
+ }
74
+ setCenter(center) {
75
+ return MapSettings.copy(Object.assign(Object.assign({}, this), { center }));
76
+ }
77
+ setMaxZoom(maxZoom) {
78
+ return MapSettings.copy(Object.assign(Object.assign({}, this), { maxZoom }));
79
+ }
80
+ setMinZoom(minZoom) {
81
+ return MapSettings.copy(Object.assign(Object.assign({}, this), { minZoom }));
82
+ }
83
+ setZoom(zoom) {
84
+ return MapSettings.copy(Object.assign(Object.assign({}, this), { zoom }));
85
+ }
86
+ setLyrs(lyrs) {
87
+ return MapSettings.copy(Object.assign(Object.assign({}, this), { lyrs }));
88
+ }
89
+ setLanguage(language) {
90
+ return MapSettings.copy(Object.assign(Object.assign({}, this), { language }));
91
+ }
92
+ isSame(model) {
93
+ if (this.maxZoom !== model.maxZoom)
94
+ return false;
95
+ if (this.minZoom !== model.minZoom)
96
+ return false;
97
+ if (this.zoom !== model.zoom)
98
+ return false;
99
+ if (this.lyrs !== model.lyrs)
100
+ return false;
101
+ if (this.language !== model.language)
102
+ return false;
103
+ return this.center.length !== model.center.length || !!this.center.filter((c, i) => c !== model.center[i]);
104
+ }
105
+ }
106
+
107
+ class IdGenerator {
108
+ static get() {
109
+ let result = [];
110
+ for (let i = 0; i < 7; i++) {
111
+ result.push(IdGenerator.collection
112
+ .sort(() => 0.5 - Math.random())
113
+ .slice(0, 5)
114
+ .join(''));
115
+ }
116
+ return result.join('-');
117
+ }
118
+ }
119
+ IdGenerator.collection = 'ABCDEFGHIJKLMNOPQRSTUVWXTZ0123456789'.split('');
120
+
121
+ class MarkerModel {
122
+ constructor(lat, lng, id, info) {
123
+ this.lat = lat;
124
+ this.lng = lng;
125
+ this.id = id;
126
+ this.info = info;
127
+ if (id == null)
128
+ this.id = IdGenerator.get();
129
+ this._feature = this.getFeature();
130
+ }
131
+ get feature() {
132
+ return this._feature;
133
+ }
134
+ getFeature() {
135
+ const feature = new Feature(new Point([this.lng, this.lat]));
136
+ feature.setId(this.id);
137
+ if (this.info) {
138
+ Object.keys(this.info).forEach((k) => feature.set(k, this.info[k]));
139
+ }
140
+ return feature;
141
+ }
142
+ }
143
+
144
+ class GenericMessage {
145
+ }
146
+ class CallbackMessage extends GenericMessage {
147
+ constructor() {
148
+ super(...arguments);
149
+ this.result$ = new Subject();
150
+ this.result = this.result$.asObservable();
151
+ }
152
+ finish(value) {
153
+ this.result$.next(value);
154
+ this.result$.complete();
155
+ }
156
+ }
157
+
158
+ class MapRenderedEvent extends GenericMessage {
159
+ constructor(map) {
160
+ super();
161
+ this.map = map;
162
+ }
163
+ get id() {
164
+ return MapRenderedEvent.ID;
165
+ }
166
+ }
167
+ MapRenderedEvent.ID = 'b6121807-3b89-4cd3-82cf-089d2cefdc4f';
168
+
169
+ class AddLayerCommand extends GenericMessage {
170
+ constructor(layer) {
171
+ super();
172
+ this.layer = layer;
173
+ }
174
+ get id() {
175
+ return AddLayerCommand.ID;
176
+ }
177
+ }
178
+ AddLayerCommand.ID = 'd93e250f-92bc-43ac-9c6a-46c521a1aaa5';
179
+
180
+ class PlaceLayerFeaturesCommand extends GenericMessage {
181
+ constructor(layer, features) {
182
+ super();
183
+ this.layer = layer;
184
+ this.features = features;
185
+ }
186
+ get id() {
187
+ return PlaceLayerFeaturesCommand.ID;
188
+ }
189
+ }
190
+ PlaceLayerFeaturesCommand.ID = '8caf86bc-869b-426f-b36d-4642f6b8aab0';
191
+
192
+ class RemoveLayerCommand extends GenericMessage {
193
+ constructor(layer) {
194
+ super();
195
+ this.layer = layer;
196
+ }
197
+ get id() {
198
+ return RemoveLayerCommand.ID;
199
+ }
200
+ }
201
+ RemoveLayerCommand.ID = 'ab484e0e-e185-45cd-8434-12101f3c7eb1';
202
+
203
+ class ClearLayerCommand extends GenericMessage {
204
+ constructor(layer) {
205
+ super();
206
+ this.layer = layer;
207
+ }
208
+ get id() {
209
+ return ClearLayerCommand.ID;
210
+ }
211
+ }
212
+ ClearLayerCommand.ID = 'd02842b7-fa62-458d-b1e4-12dd814610c5';
213
+
214
+ class MapPostboyService {
215
+ constructor() {
216
+ this.applications = {};
217
+ }
218
+ register(id, sub) {
219
+ this.applications[id] = sub;
220
+ }
221
+ subscribe(id) {
222
+ if (!this.applications[id])
223
+ throw new Error(`There is no event with id ${id}`);
224
+ return this.applications[id].asObservable();
225
+ }
226
+ fire(message) {
227
+ if (!this.applications[message.id])
228
+ throw new Error(`There is no event with id ${message.id}`);
229
+ this.applications[message.id].next(message);
230
+ }
231
+ }
232
+ MapPostboyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapPostboyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
233
+ MapPostboyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapPostboyService });
234
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapPostboyService, decorators: [{
235
+ type: Injectable
236
+ }] });
237
+
238
+ class MessageRegistratorService {
239
+ constructor(service) {
240
+ service.register(MapRenderedEvent.ID, new ReplaySubject(1));
241
+ service.register(AddLayerCommand.ID, new Subject());
242
+ service.register(PlaceLayerFeaturesCommand.ID, new ReplaySubject(1));
243
+ service.register(RemoveLayerCommand.ID, new Subject());
244
+ service.register(ClearLayerCommand.ID, new Subject());
245
+ }
246
+ }
247
+ MessageRegistratorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MessageRegistratorService, deps: [{ token: MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
248
+ MessageRegistratorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MessageRegistratorService });
249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MessageRegistratorService, decorators: [{
250
+ type: Injectable
251
+ }], ctorParameters: function () { return [{ type: MapPostboyService }]; } });
252
+
253
+ class MapStateService {
254
+ constructor(postboy) {
255
+ this.postboy = postboy;
256
+ postboy.subscribe(MapRenderedEvent.ID).subscribe((m) => (this.map = m));
257
+ }
258
+ }
259
+ MapStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapStateService, deps: [{ token: MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
260
+ MapStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapStateService });
261
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapStateService, decorators: [{
262
+ type: Injectable
263
+ }], ctorParameters: function () { return [{ type: MapPostboyService }]; } });
264
+
265
+ class MapManagementService {
266
+ constructor(postboy) {
267
+ this.postboy = postboy;
268
+ this.layers = {};
269
+ this.observeMapRender();
270
+ this.observeAddLayer();
271
+ this.observeRemoveLayer();
272
+ this.observePlaceFeatures();
273
+ this.observeClearLayer();
274
+ }
275
+ observeMapRender() {
276
+ this.postboy.subscribe(MapRenderedEvent.ID).subscribe((m) => {
277
+ this.map = m.map;
278
+ });
279
+ }
280
+ observeClearLayer() {
281
+ this.postboy.subscribe(ClearLayerCommand.ID).subscribe((c) => {
282
+ var _a, _b;
283
+ (_b = (_a = this.layers[c.layer]) === null || _a === void 0 ? void 0 : _a.getSource()) === null || _b === void 0 ? void 0 : _b.clear();
284
+ });
285
+ }
286
+ observeAddLayer() {
287
+ this.postboy.subscribe(AddLayerCommand.ID).subscribe((c) => {
288
+ if (!this.map)
289
+ return;
290
+ this.layers[c.layer.get('name')] = c.layer;
291
+ this.map.addLayer(c.layer);
292
+ });
293
+ }
294
+ observePlaceFeatures() {
295
+ this.postboy.subscribe(PlaceLayerFeaturesCommand.ID).subscribe((c) => {
296
+ var _a, _b, _c;
297
+ if (!this.layers[c.layer])
298
+ return;
299
+ (_b = (_a = this.layers[c.layer]) === null || _a === void 0 ? void 0 : _a.getSource()) === null || _b === void 0 ? void 0 : _b.clear();
300
+ (_c = this.layers[c.layer].getSource()) === null || _c === void 0 ? void 0 : _c.addFeatures(c.features);
301
+ });
302
+ }
303
+ observeRemoveLayer() {
304
+ this.postboy.subscribe(RemoveLayerCommand.ID).subscribe((c) => {
305
+ if (!this.map)
306
+ return;
307
+ delete this.layers[c.layer.get('name')];
308
+ this.map.removeLayer(c.layer);
309
+ });
310
+ }
311
+ }
312
+ MapManagementService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapManagementService, deps: [{ token: MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
313
+ MapManagementService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapManagementService });
314
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapManagementService, decorators: [{
315
+ type: Injectable
316
+ }], ctorParameters: function () { return [{ type: MapPostboyService }]; } });
317
+
318
+ class ServiceCollector {
319
+ constructor(registrator, management, state) { }
320
+ }
321
+ ServiceCollector.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ServiceCollector, deps: [{ token: MessageRegistratorService }, { token: MapManagementService }, { token: MapStateService }], target: i0.ɵɵFactoryTarget.Injectable });
322
+ ServiceCollector.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ServiceCollector });
323
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ServiceCollector, decorators: [{
324
+ type: Injectable
325
+ }], ctorParameters: function () { return [{ type: MessageRegistratorService }, { type: MapManagementService }, { type: MapStateService }]; } });
326
+
327
+ class MapPlateFactory {
328
+ build(settings) {
329
+ return new Map({
330
+ controls: [],
331
+ view: new View({
332
+ center: (settings === null || settings === void 0 ? void 0 : settings.center) || [0, 0],
333
+ zoom: (settings === null || settings === void 0 ? void 0 : settings.zoom) || 4,
334
+ minZoom: (settings === null || settings === void 0 ? void 0 : settings.minZoom) || 0,
335
+ maxZoom: (settings === null || settings === void 0 ? void 0 : settings.maxZoom) || 19,
336
+ }),
337
+ layers: [],
338
+ });
339
+ }
340
+ }
341
+ MapPlateFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapPlateFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
342
+ MapPlateFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapPlateFactory, providedIn: 'root' });
343
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapPlateFactory, decorators: [{
344
+ type: Injectable,
345
+ args: [{
346
+ providedIn: 'root',
347
+ }]
348
+ }] });
349
+
350
+ class OsmTileLayerComponent extends DestructibleComponent {
351
+ constructor() {
352
+ super();
353
+ this._url = '';
354
+ }
355
+ set url(value) {
356
+ if (!value || this._url === value)
357
+ return;
358
+ this._url = value;
359
+ this.initLayer();
360
+ }
361
+ set map(value) {
362
+ if (!value || this._map === value)
363
+ return;
364
+ this._map = value;
365
+ this.initLayer();
366
+ }
367
+ ngOnInit() { }
368
+ ngOnDestroy() {
369
+ var _a, _b;
370
+ if (this.layer) {
371
+ (_a = this._map) === null || _a === void 0 ? void 0 : _a.removeLayer(this.layer);
372
+ }
373
+ // @ts-ignore
374
+ (_b = this.layer) === null || _b === void 0 ? void 0 : _b.setMap(null);
375
+ }
376
+ initLayer() {
377
+ if (!this._url || !this._map)
378
+ return;
379
+ if (this.layer)
380
+ this._map.removeLayer(this.layer);
381
+ this.layer = new TileLayer({
382
+ source: new OSM({
383
+ url: this._url,
384
+ }),
385
+ });
386
+ this.layer.set('name', 'osm-tile-layer');
387
+ this._map.addLayer(this.layer);
388
+ }
389
+ }
390
+ OsmTileLayerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: OsmTileLayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
391
+ OsmTileLayerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: OsmTileLayerComponent, selector: "lib-osm-tile-layer", inputs: { url: "url", map: "map" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
392
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: OsmTileLayerComponent, decorators: [{
393
+ type: Component,
394
+ args: [{
395
+ selector: 'lib-osm-tile-layer',
396
+ template: '',
397
+ styleUrls: [],
398
+ changeDetection: ChangeDetectionStrategy.OnPush,
399
+ }]
400
+ }], ctorParameters: function () { return []; }, propDecorators: { url: [{
401
+ type: Input
402
+ }], map: [{
403
+ type: Input
404
+ }] } });
405
+
406
+ class MapPlateComponent extends DestructibleComponent {
407
+ constructor(elementRef, postboy, mapFactory, registrator, detector) {
408
+ super();
409
+ this.elementRef = elementRef;
410
+ this.postboy = postboy;
411
+ this.mapFactory = mapFactory;
412
+ this.detector = detector;
413
+ this.osmUrl = '';
414
+ this._settings = new MapSettings();
415
+ }
416
+ set settings(value) {
417
+ if (!value || this._settings.isSame(value))
418
+ return;
419
+ this._settings = value;
420
+ this.setOsm();
421
+ }
422
+ ngOnInit() {
423
+ useGeographic();
424
+ this.map = this.mapFactory.build(this._settings);
425
+ this.map.setTarget(this.elementRef.nativeElement);
426
+ this.detector.detectChanges();
427
+ this.map.once('postrender', () => {
428
+ this.map.updateSize();
429
+ this.postboy.fire(new MapRenderedEvent(this.map));
430
+ });
431
+ this.setOsm();
432
+ }
433
+ setOsm() {
434
+ if (!this.map)
435
+ return;
436
+ this.osmUrl = `https://mt{0-3}.google.com/vt/lyrs=${MapLyrsLabel.get(this._settings.lyrs)}&hl=${this._settings.language}&x={x}&y={y}&z={z}`;
437
+ this.detector.detectChanges();
438
+ this.map.updateSize();
439
+ }
440
+ }
441
+ MapPlateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapPlateComponent, deps: [{ token: i0.ElementRef }, { token: MapPostboyService }, { token: MapPlateFactory }, { token: ServiceCollector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
442
+ MapPlateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MapPlateComponent, selector: "lib-map-plate", inputs: { settings: "settings" }, providers: [MessageRegistratorService, MapStateService, MapManagementService, ServiceCollector], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n<lib-osm-tile-layer *ngIf=\"osmUrl && map\" [map]=\"map\" [url]=\"osmUrl\"></lib-osm-tile-layer>\n", styles: ["lib-map-plate{position:relative;display:flex;flex-direction:column;height:100%}\n"], components: [{ type: OsmTileLayerComponent, selector: "lib-osm-tile-layer", inputs: ["url", "map"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
443
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapPlateComponent, decorators: [{
444
+ type: Component,
445
+ args: [{
446
+ selector: 'lib-map-plate',
447
+ templateUrl: './map-plate.component.html',
448
+ styleUrls: ['./map-plate.component.scss'],
449
+ changeDetection: ChangeDetectionStrategy.OnPush,
450
+ providers: [MessageRegistratorService, MapStateService, MapManagementService, ServiceCollector],
451
+ }]
452
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: MapPostboyService }, { type: MapPlateFactory }, { type: ServiceCollector }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { settings: [{
453
+ type: Input
454
+ }] } });
455
+
456
+ class TileLayerComponent extends DestructibleComponent {
457
+ constructor() {
458
+ super();
459
+ }
460
+ }
461
+ TileLayerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TileLayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
462
+ TileLayerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TileLayerComponent, selector: "lib-tile-layer", usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
463
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TileLayerComponent, decorators: [{
464
+ type: Component,
465
+ args: [{
466
+ selector: 'lib-tile-layer',
467
+ template: '',
468
+ styleUrls: [],
469
+ changeDetection: ChangeDetectionStrategy.OnPush,
470
+ }]
471
+ }], ctorParameters: function () { return []; } });
472
+
473
+ class FeatureLayerSettings {
474
+ constructor() {
475
+ this.name = IdGenerator.get();
476
+ this.zIndex = 1;
477
+ this.maxZoom = 19;
478
+ this.minZoom = 0;
479
+ }
480
+ static copy(model) {
481
+ const result = new FeatureLayerSettings();
482
+ result.name = model.name;
483
+ result.maxZoom = model.maxZoom;
484
+ result.minZoom = model.minZoom;
485
+ result.zIndex = model.zIndex;
486
+ result.style = model.style;
487
+ return result;
488
+ }
489
+ setZIndex(zIndex) {
490
+ return FeatureLayerSettings.copy(Object.assign(Object.assign({}, this), { zIndex }));
491
+ }
492
+ setName(name) {
493
+ return FeatureLayerSettings.copy(Object.assign(Object.assign({}, this), { name }));
494
+ }
495
+ setMaxZoom(maxZoom) {
496
+ return FeatureLayerSettings.copy(Object.assign(Object.assign({}, this), { maxZoom }));
497
+ }
498
+ setMinZoom(minZoom) {
499
+ return FeatureLayerSettings.copy(Object.assign(Object.assign({}, this), { minZoom }));
500
+ }
501
+ setStyle(style) {
502
+ return FeatureLayerSettings.copy(Object.assign(Object.assign({}, this), { style }));
503
+ }
504
+ isSame(model) {
505
+ if (this.maxZoom !== model.maxZoom)
506
+ return false;
507
+ if (this.minZoom !== model.minZoom)
508
+ return false;
509
+ if (this.zIndex !== model.zIndex)
510
+ return false;
511
+ if (this.name !== model.name)
512
+ return false;
513
+ if (this.style !== model.style)
514
+ return false;
515
+ return true;
516
+ }
517
+ }
518
+
519
+ class FeatureLayerFactory {
520
+ build(settings) {
521
+ const source = new Vector({});
522
+ const layer = new Vector$1({
523
+ source: source,
524
+ maxZoom: settings.maxZoom,
525
+ minZoom: settings.minZoom,
526
+ zIndex: settings.zIndex,
527
+ });
528
+ if (settings.style)
529
+ layer.setStyle(settings.style);
530
+ layer.set('name', settings.name);
531
+ return layer;
532
+ }
533
+ }
534
+ FeatureLayerFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FeatureLayerFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
535
+ FeatureLayerFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FeatureLayerFactory, providedIn: 'root' });
536
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FeatureLayerFactory, decorators: [{
537
+ type: Injectable,
538
+ args: [{
539
+ providedIn: 'root',
540
+ }]
541
+ }] });
542
+
543
+ class FeatureLayerComponent extends DestructibleComponent {
544
+ constructor(postboy, factory) {
545
+ super();
546
+ this.postboy = postboy;
547
+ this.factory = factory;
548
+ this.layer = null;
549
+ this._settings = new FeatureLayerSettings();
550
+ this.onDestroy = () => this.removeLayer();
551
+ }
552
+ ngOnInit() {
553
+ this.postboy
554
+ .subscribe(MapRenderedEvent.ID)
555
+ .pipe(filter((m) => !!m), first())
556
+ .subscribe((m) => this.initLayer());
557
+ }
558
+ set settings(value) {
559
+ if (!value || this._settings.isSame(value))
560
+ return;
561
+ this._settings = value;
562
+ this.initLayer();
563
+ }
564
+ initLayer() {
565
+ this.removeLayer();
566
+ this.layer = this.factory.build(this._settings);
567
+ this.postboy.fire(new AddLayerCommand(this.layer));
568
+ }
569
+ removeLayer() {
570
+ if (this.layer)
571
+ this.postboy.fire(new RemoveLayerCommand(this.layer));
572
+ }
573
+ }
574
+ FeatureLayerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FeatureLayerComponent, deps: [{ token: MapPostboyService }, { token: FeatureLayerFactory }], target: i0.ɵɵFactoryTarget.Component });
575
+ FeatureLayerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FeatureLayerComponent, selector: "lib-feature-layer", inputs: { settings: "settings" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
576
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FeatureLayerComponent, decorators: [{
577
+ type: Component,
578
+ args: [{
579
+ selector: 'lib-feature-layer',
580
+ template: '',
581
+ styleUrls: [],
582
+ changeDetection: ChangeDetectionStrategy.OnPush,
583
+ }]
584
+ }], ctorParameters: function () { return [{ type: MapPostboyService }, { type: FeatureLayerFactory }]; }, propDecorators: { settings: [{
585
+ type: Input
586
+ }] } });
587
+
588
+ class MarkersComponent extends DestructibleComponent {
589
+ constructor(postboy) {
590
+ super();
591
+ this.postboy = postboy;
592
+ this.layerName = '';
593
+ this._markers = [];
594
+ }
595
+ set markers(value) {
596
+ this._markers = value;
597
+ this.putMarkers();
598
+ }
599
+ ngOnInit() {
600
+ this.postboy
601
+ .subscribe(MapRenderedEvent.ID)
602
+ .pipe(filter((m) => !!m), first())
603
+ .subscribe(() => this.putMarkers());
604
+ }
605
+ putMarkers() {
606
+ var _a;
607
+ if (!((_a = this._markers) === null || _a === void 0 ? void 0 : _a.length))
608
+ return;
609
+ this.postboy.fire(new PlaceLayerFeaturesCommand(this.layerName, this._markers.map((m) => m.feature)));
610
+ }
611
+ }
612
+ MarkersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MarkersComponent, deps: [{ token: MapPostboyService }], target: i0.ɵɵFactoryTarget.Component });
613
+ MarkersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MarkersComponent, selector: "lib-markers", inputs: { layerName: "layerName", markers: "markers" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
614
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MarkersComponent, decorators: [{
615
+ type: Component,
616
+ args: [{
617
+ selector: 'lib-markers',
618
+ template: '',
619
+ styleUrls: [],
620
+ changeDetection: ChangeDetectionStrategy.OnPush,
621
+ }]
622
+ }], ctorParameters: function () { return [{ type: MapPostboyService }]; }, propDecorators: { layerName: [{
623
+ type: Input
624
+ }], markers: [{
625
+ type: Input
626
+ }] } });
627
+
628
+ class MapModule {
629
+ }
630
+ MapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
631
+ MapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapModule, declarations: [DestructibleComponent,
632
+ MapPlateComponent,
633
+ TileLayerComponent,
634
+ OsmTileLayerComponent,
635
+ FeatureLayerComponent,
636
+ MarkersComponent], imports: [CommonModule], exports: [MapPlateComponent, FeatureLayerComponent, MarkersComponent] });
637
+ MapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapModule, imports: [[CommonModule]] });
638
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapModule, decorators: [{
639
+ type: NgModule,
640
+ args: [{
641
+ imports: [CommonModule],
642
+ declarations: [
643
+ DestructibleComponent,
644
+ MapPlateComponent,
645
+ TileLayerComponent,
646
+ OsmTileLayerComponent,
647
+ FeatureLayerComponent,
648
+ MarkersComponent,
649
+ ],
650
+ exports: [MapPlateComponent, FeatureLayerComponent, MarkersComponent],
651
+ }]
652
+ }] });
653
+
654
+ class TileLayerSettings {
655
+ constructor() {
656
+ this.name = 'tiles';
657
+ this.maxZoom = 19;
658
+ this.minZoom = 0;
659
+ this.opacity = 1;
660
+ this.url = '';
661
+ }
662
+ static copy(model) {
663
+ const result = new TileLayerSettings();
664
+ result.name = model.name;
665
+ result.maxZoom = model.maxZoom;
666
+ result.minZoom = model.minZoom;
667
+ result.url = model.url;
668
+ return result;
669
+ }
670
+ setUrl(url) {
671
+ return TileLayerSettings.copy(Object.assign(Object.assign({}, this), { url }));
672
+ }
673
+ setName(name) {
674
+ return TileLayerSettings.copy(Object.assign(Object.assign({}, this), { name }));
675
+ }
676
+ setMaxZoom(maxZoom) {
677
+ return TileLayerSettings.copy(Object.assign(Object.assign({}, this), { maxZoom }));
678
+ }
679
+ setMinZoom(minZoom) {
680
+ return TileLayerSettings.copy(Object.assign(Object.assign({}, this), { minZoom }));
681
+ }
682
+ isSame(model) {
683
+ if (this.maxZoom !== model.maxZoom)
684
+ return false;
685
+ if (this.minZoom !== model.minZoom)
686
+ return false;
687
+ if (this.url !== model.url)
688
+ return false;
689
+ if (this.name !== model.name)
690
+ return false;
691
+ return true;
692
+ }
693
+ }
694
+
695
+ class MarkerStyleHelper {
696
+ static fromSvg(svg, size = [30, 30], zIndex = 400) {
697
+ let image = new Image();
698
+ image.src = 'data:image/svg+xml,' + escape(svg);
699
+ return new Style({
700
+ image: new Icon({
701
+ img: image,
702
+ imgSize: size,
703
+ }),
704
+ zIndex,
705
+ });
706
+ }
707
+ static circle(radius, fill, strokeColor, strokeWidth = 1) {
708
+ return new Style({
709
+ image: new Circle({
710
+ radius,
711
+ fill: new Fill({ color: fill }),
712
+ stroke: new Stroke({ color: strokeColor, width: strokeWidth }),
713
+ }),
714
+ });
715
+ }
716
+ }
717
+
718
+ /*
719
+ * Public API Surface of maps
720
+ */
721
+
722
+ /**
723
+ * Generated bundle index. Do not edit.
724
+ */
725
+
726
+ export { CallbackMessage, FeatureLayerComponent, FeatureLayerSettings, GenericMessage, MapLyrs, MapLyrsLabel, MapModule, MapPlateComponent, MapPostboyService, MapRenderedEvent, MapSettings, MarkerModel, MarkerStyleHelper, MarkersComponent, MessageRegistratorService, OsmTileLayerComponent, TileLayerComponent, TileLayerSettings };
727
+ //# sourceMappingURL=maps-components-src-map.js.map