@artstesh/maps 4.0.6 → 4.0.7

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 (81) hide show
  1. package/dist/esm2020/map/helpers/index.mjs +2 -1
  2. package/dist/esm2020/map/helpers/marker-style.helper.mjs +5 -1
  3. package/dist/esm2020/map/helpers/text-style.helper.mjs +14 -0
  4. package/dist/esm2020/map/map-plate/layers/cluster-layer/cluster-layer-factory.service.mjs +59 -0
  5. package/dist/esm2020/map/map-plate/layers/cluster-layer/cluster-layer.component.mjs +50 -0
  6. package/dist/esm2020/map/map-plate/layers/cluster-layer/cluster-layer.manager.mjs +18 -0
  7. package/dist/esm2020/map/map-plate/layers/cluster-layer/cluster-layer.settings.mjs +61 -0
  8. package/dist/esm2020/map/map-plate/layers/index.mjs +3 -1
  9. package/dist/esm2020/map/map-plate/map-plate.component.mjs +4 -3
  10. package/dist/esm2020/map/map.module.mjs +8 -3
  11. package/dist/esm2020/map/messages/commands/add-layer.command.mjs +1 -1
  12. package/dist/esm2020/map/messages/commands/fit-to-features.command.mjs +13 -0
  13. package/dist/esm2020/map/messages/events/map-click.event.mjs +3 -2
  14. package/dist/esm2020/map/models/i-identified.mjs +2 -0
  15. package/dist/esm2020/map/models/map.constants.mjs +4 -0
  16. package/dist/esm2020/map/models/marker-model.mjs +3 -2
  17. package/dist/esm2020/map/services/map-click.service.mjs +7 -3
  18. package/dist/esm2020/map/services/map-feature.service.mjs +39 -0
  19. package/dist/esm2020/map/services/map-management.service.mjs +6 -3
  20. package/dist/esm2020/map/services/message-registrator.service.mjs +9 -6
  21. package/dist/esm2020/src/map/helpers/index.mjs +2 -1
  22. package/dist/esm2020/src/map/helpers/marker-style.helper.mjs +5 -1
  23. package/dist/esm2020/src/map/helpers/text-style.helper.mjs +14 -0
  24. package/dist/esm2020/src/map/map-plate/layers/cluster-layer/cluster-layer-factory.service.mjs +59 -0
  25. package/dist/esm2020/src/map/map-plate/layers/cluster-layer/cluster-layer.component.mjs +50 -0
  26. package/dist/esm2020/src/map/map-plate/layers/cluster-layer/cluster-layer.manager.mjs +18 -0
  27. package/dist/esm2020/src/map/map-plate/layers/cluster-layer/cluster-layer.settings.mjs +61 -0
  28. package/dist/esm2020/src/map/map-plate/layers/index.mjs +3 -1
  29. package/dist/esm2020/src/map/map-plate/map-plate.component.mjs +4 -3
  30. package/dist/esm2020/src/map/map.module.mjs +8 -3
  31. package/dist/esm2020/src/map/messages/commands/add-layer.command.mjs +1 -1
  32. package/dist/esm2020/src/map/messages/commands/fit-to-features.command.mjs +13 -0
  33. package/dist/esm2020/src/map/messages/events/map-click.event.mjs +3 -2
  34. package/dist/esm2020/src/map/models/i-identified.mjs +2 -0
  35. package/dist/esm2020/src/map/models/map.constants.mjs +4 -0
  36. package/dist/esm2020/src/map/models/marker-model.mjs +3 -2
  37. package/dist/esm2020/src/map/services/map-click.service.mjs +7 -3
  38. package/dist/esm2020/src/map/services/map-feature.service.mjs +39 -0
  39. package/dist/esm2020/src/map/services/map-management.service.mjs +6 -3
  40. package/dist/esm2020/src/map/services/message-registrator.service.mjs +9 -6
  41. package/dist/fesm2015/maps-components-src-map.mjs +268 -18
  42. package/dist/fesm2015/maps-components-src-map.mjs.map +1 -1
  43. package/dist/fesm2015/maps-components.mjs +268 -18
  44. package/dist/fesm2015/maps-components.mjs.map +1 -1
  45. package/dist/fesm2020/maps-components-src-map.mjs +264 -17
  46. package/dist/fesm2020/maps-components-src-map.mjs.map +1 -1
  47. package/dist/fesm2020/maps-components.mjs +264 -17
  48. package/dist/fesm2020/maps-components.mjs.map +1 -1
  49. package/dist/map/helpers/index.d.ts +1 -0
  50. package/dist/map/helpers/marker-style.helper.d.ts +2 -0
  51. package/dist/map/helpers/text-style.helper.d.ts +4 -0
  52. package/dist/map/map-plate/layers/cluster-layer/cluster-layer-factory.service.d.ts +11 -0
  53. package/dist/map/map-plate/layers/cluster-layer/cluster-layer.component.d.ts +21 -0
  54. package/dist/map/map-plate/layers/cluster-layer/cluster-layer.manager.d.ts +11 -0
  55. package/dist/map/map-plate/layers/cluster-layer/cluster-layer.settings.d.ts +20 -0
  56. package/dist/map/map-plate/layers/index.d.ts +2 -0
  57. package/dist/map/map.module.d.ts +3 -2
  58. package/dist/map/messages/commands/add-layer.command.d.ts +3 -2
  59. package/dist/map/messages/commands/fit-to-features.command.d.ts +10 -0
  60. package/dist/map/messages/events/map-click.event.d.ts +10 -2
  61. package/dist/map/models/i-identified.d.ts +3 -0
  62. package/dist/map/models/map.constants.d.ts +3 -0
  63. package/dist/map/services/map-feature.service.d.ts +14 -0
  64. package/dist/map/services/message-registrator.service.d.ts +2 -1
  65. package/dist/src/map/helpers/index.d.ts +1 -0
  66. package/dist/src/map/helpers/marker-style.helper.d.ts +2 -0
  67. package/dist/src/map/helpers/text-style.helper.d.ts +4 -0
  68. package/dist/src/map/map-plate/layers/cluster-layer/cluster-layer-factory.service.d.ts +11 -0
  69. package/dist/src/map/map-plate/layers/cluster-layer/cluster-layer.component.d.ts +21 -0
  70. package/dist/src/map/map-plate/layers/cluster-layer/cluster-layer.manager.d.ts +11 -0
  71. package/dist/src/map/map-plate/layers/cluster-layer/cluster-layer.settings.d.ts +20 -0
  72. package/dist/src/map/map-plate/layers/index.d.ts +2 -0
  73. package/dist/src/map/map.module.d.ts +3 -2
  74. package/dist/src/map/messages/commands/add-layer.command.d.ts +3 -2
  75. package/dist/src/map/messages/commands/fit-to-features.command.d.ts +10 -0
  76. package/dist/src/map/messages/events/map-click.event.d.ts +10 -2
  77. package/dist/src/map/models/i-identified.d.ts +3 -0
  78. package/dist/src/map/models/map.constants.d.ts +3 -0
  79. package/dist/src/map/services/map-feature.service.d.ts +14 -0
  80. package/dist/src/map/services/message-registrator.service.d.ts +2 -1
  81. package/package.json +1 -1
@@ -1,6 +1,7 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { MapRenderedEvent } from '../messages';
3
3
  import { MapClickEvent } from '../messages/events/map-click.event';
4
+ import { MapConstants } from '../models/map.constants';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "./map-postboy.service";
6
7
  export class MapClickService {
@@ -19,7 +20,7 @@ export class MapClickService {
19
20
  });
20
21
  }
21
22
  onClick(ev) {
22
- const model = new MapClickEvent(ev.coordinate, {});
23
+ const model = new MapClickEvent(ev.coordinate, {}, {});
23
24
  this.map?.forEachFeatureAtPixel(ev.pixel, (f, l) => {
24
25
  this.getFeatureCollectionWithInner([f])
25
26
  .filter((f) => f.getId() != null)
@@ -27,7 +28,10 @@ export class MapClickService {
27
28
  let layerName = l.get('name');
28
29
  if (!model.entities[layerName])
29
30
  model.entities[layerName] = [];
30
- model.entities[layerName].push(f.getId());
31
+ if (!model.features[layerName])
32
+ model.features[layerName] = [];
33
+ model.entities[layerName].push({ id: fs.getId(), ...fs.get(MapConstants.FeatureInfo) });
34
+ model.features[layerName].push(fs);
31
35
  });
32
36
  });
33
37
  return model;
@@ -46,4 +50,4 @@ MapClickService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", vers
46
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MapClickService, decorators: [{
47
51
  type: Injectable
48
52
  }], ctorParameters: function () { return [{ type: i1.MapPostboyService }]; } });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNsaWNrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXBzLWNvbXBvbmVudHMvc3JjL21hcC9zZXJ2aWNlcy9tYXAtY2xpY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7OztBQUluRSxNQUFNLE9BQU8sZUFBZTtJQUcxQixZQUFvQixPQUEwQjtRQUExQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtJQUFHLENBQUM7SUFFbEQsRUFBRTtRQUNBLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQW1CLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzVFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNqQixJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLEVBQTRCO1FBQ2xDLE1BQU0sS0FBSyxHQUFrQixJQUFJLGFBQWEsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNqRCxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFzQixDQUFDLENBQUM7aUJBQ3pELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQztpQkFDaEMsT0FBTyxDQUFDLENBQUMsRUFBcUIsRUFBRSxFQUFFO2dCQUNqQyxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7b0JBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQy9ELEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUcsQ0FBQyxDQUFDO1lBQzdDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyw2QkFBNkIsQ0FBQyxRQUE2QjtRQUNqRSxNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDO1FBQ3ZDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN0QixNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBd0IsQ0FBQztZQUMvRCxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekUsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzs2R0F2Q1UsZUFBZTtpSEFBZixlQUFlOzRGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUG9zdGJveURlcGVuZGluZ1NlcnZpY2UgfSBmcm9tICdAYXJ0c3Rlc2gvcG9zdGJveSc7XG5pbXBvcnQgeyBGZWF0dXJlLCBNYXAsIE1hcEJyb3dzZXJFdmVudCB9IGZyb20gJ29sJztcbmltcG9ydCB7IE1hcFBvc3Rib3lTZXJ2aWNlIH0gZnJvbSAnLi9tYXAtcG9zdGJveS5zZXJ2aWNlJztcbmltcG9ydCB7IE1hcFJlbmRlcmVkRXZlbnQgfSBmcm9tICcuLi9tZXNzYWdlcyc7XG5pbXBvcnQgeyBNYXBDbGlja0V2ZW50IH0gZnJvbSAnLi4vbWVzc2FnZXMvZXZlbnRzL21hcC1jbGljay5ldmVudCc7XG5pbXBvcnQgeyBHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20nO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTWFwQ2xpY2tTZXJ2aWNlIGltcGxlbWVudHMgSVBvc3Rib3lEZXBlbmRpbmdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBtYXA/OiBNYXA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwb3N0Ym95OiBNYXBQb3N0Ym95U2VydmljZSkge31cblxuICB1cCgpOiB2b2lkIHtcbiAgICB0aGlzLm9ic2VydmVNYXBSZW5kZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZU1hcFJlbmRlcigpIHtcbiAgICB0aGlzLnBvc3Rib3kuc3Vic2NyaWJlPE1hcFJlbmRlcmVkRXZlbnQ+KE1hcFJlbmRlcmVkRXZlbnQuSUQpLnN1YnNjcmliZSgobSkgPT4ge1xuICAgICAgdGhpcy5tYXAgPSBtLm1hcDtcbiAgICAgIHRoaXMubWFwPy5vbignc2luZ2xlY2xpY2snLCAoZSkgPT4ge1xuICAgICAgICB0aGlzLnBvc3Rib3kuZmlyZSh0aGlzLm9uQ2xpY2soZSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBvbkNsaWNrKGV2OiBNYXBCcm93c2VyRXZlbnQ8VUlFdmVudD4pOiBNYXBDbGlja0V2ZW50IHtcbiAgICBjb25zdCBtb2RlbDogTWFwQ2xpY2tFdmVudCA9IG5ldyBNYXBDbGlja0V2ZW50KGV2LmNvb3JkaW5hdGUsIHt9KTtcbiAgICB0aGlzLm1hcD8uZm9yRWFjaEZlYXR1cmVBdFBpeGVsKGV2LnBpeGVsLCAoZiwgbCkgPT4ge1xuICAgICAgdGhpcy5nZXRGZWF0dXJlQ29sbGVjdGlvbldpdGhJbm5lcihbZiBhcyBGZWF0dXJlPEdlb21ldHJ5Pl0pXG4gICAgICAgIC5maWx0ZXIoKGYpID0+IGYuZ2V0SWQoKSAhPSBudWxsKVxuICAgICAgICAuZm9yRWFjaCgoZnM6IEZlYXR1cmU8R2VvbWV0cnk+KSA9PiB7XG4gICAgICAgICAgbGV0IGxheWVyTmFtZSA9IGwuZ2V0KCduYW1lJyk7XG4gICAgICAgICAgaWYgKCFtb2RlbC5lbnRpdGllc1tsYXllck5hbWVdKSBtb2RlbC5lbnRpdGllc1tsYXllck5hbWVdID0gW107XG4gICAgICAgICAgbW9kZWwuZW50aXRpZXNbbGF5ZXJOYW1lXS5wdXNoKGYuZ2V0SWQoKSEpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICBwcml2YXRlIGdldEZlYXR1cmVDb2xsZWN0aW9uV2l0aElubmVyKGZlYXR1cmVzOiBGZWF0dXJlPEdlb21ldHJ5PltdKTogRmVhdHVyZTxHZW9tZXRyeT5bXSB7XG4gICAgY29uc3QgcmVzdWx0OiBGZWF0dXJlPEdlb21ldHJ5PltdID0gW107XG4gICAgZmVhdHVyZXM/LmZvckVhY2goKGYpID0+IHtcbiAgICAgIGNvbnN0IGlubmVyRmVhdHVyZXMgPSBmLmdldCgnZmVhdHVyZXMnKSBhcyBGZWF0dXJlPEdlb21ldHJ5PltdO1xuICAgICAgaW5uZXJGZWF0dXJlcz8ubGVuZ3RoID8gcmVzdWx0LnB1c2goLi4uaW5uZXJGZWF0dXJlcykgOiByZXN1bHQucHVzaChmKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNsaWNrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXBzLWNvbXBvbmVudHMvc3JjL21hcC9zZXJ2aWNlcy9tYXAtY2xpY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFHdkQsTUFBTSxPQUFPLGVBQWU7SUFHMUIsWUFBb0IsT0FBMEI7UUFBMUIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7SUFBRyxDQUFDO0lBRWxELEVBQUU7UUFDQSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFtQixnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM1RSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDakIsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxFQUE0QjtRQUNsQyxNQUFNLEtBQUssR0FBa0IsSUFBSSxhQUFhLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQXNCLENBQUMsQ0FBQztpQkFDekQsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDO2lCQUNoQyxPQUFPLENBQUMsQ0FBQyxFQUFxQixFQUFFLEVBQUU7Z0JBQ2pDLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztvQkFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO29CQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUMvRCxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pGLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyw2QkFBNkIsQ0FBQyxRQUE2QjtRQUNqRSxNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDO1FBQ3ZDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN0QixNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBd0IsQ0FBQztZQUMvRCxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekUsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzs2R0F6Q1UsZUFBZTtpSEFBZixlQUFlOzRGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUG9zdGJveURlcGVuZGluZ1NlcnZpY2UgfSBmcm9tICdAYXJ0c3Rlc2gvcG9zdGJveSc7XG5pbXBvcnQgeyBGZWF0dXJlLCBNYXAsIE1hcEJyb3dzZXJFdmVudCB9IGZyb20gJ29sJztcbmltcG9ydCB7IE1hcFBvc3Rib3lTZXJ2aWNlIH0gZnJvbSAnLi9tYXAtcG9zdGJveS5zZXJ2aWNlJztcbmltcG9ydCB7IE1hcFJlbmRlcmVkRXZlbnQgfSBmcm9tICcuLi9tZXNzYWdlcyc7XG5pbXBvcnQgeyBNYXBDbGlja0V2ZW50IH0gZnJvbSAnLi4vbWVzc2FnZXMvZXZlbnRzL21hcC1jbGljay5ldmVudCc7XG5pbXBvcnQgeyBHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20nO1xuaW1wb3J0IHsgTWFwQ29uc3RhbnRzIH0gZnJvbSAnLi4vbW9kZWxzL21hcC5jb25zdGFudHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTWFwQ2xpY2tTZXJ2aWNlIGltcGxlbWVudHMgSVBvc3Rib3lEZXBlbmRpbmdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBtYXA/OiBNYXA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwb3N0Ym95OiBNYXBQb3N0Ym95U2VydmljZSkge31cblxuICB1cCgpOiB2b2lkIHtcbiAgICB0aGlzLm9ic2VydmVNYXBSZW5kZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZU1hcFJlbmRlcigpIHtcbiAgICB0aGlzLnBvc3Rib3kuc3Vic2NyaWJlPE1hcFJlbmRlcmVkRXZlbnQ+KE1hcFJlbmRlcmVkRXZlbnQuSUQpLnN1YnNjcmliZSgobSkgPT4ge1xuICAgICAgdGhpcy5tYXAgPSBtLm1hcDtcbiAgICAgIHRoaXMubWFwPy5vbignc2luZ2xlY2xpY2snLCAoZSkgPT4ge1xuICAgICAgICB0aGlzLnBvc3Rib3kuZmlyZSh0aGlzLm9uQ2xpY2soZSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBvbkNsaWNrKGV2OiBNYXBCcm93c2VyRXZlbnQ8VUlFdmVudD4pOiBNYXBDbGlja0V2ZW50IHtcbiAgICBjb25zdCBtb2RlbDogTWFwQ2xpY2tFdmVudCA9IG5ldyBNYXBDbGlja0V2ZW50KGV2LmNvb3JkaW5hdGUsIHt9LCB7fSk7XG4gICAgdGhpcy5tYXA/LmZvckVhY2hGZWF0dXJlQXRQaXhlbChldi5waXhlbCwgKGYsIGwpID0+IHtcbiAgICAgIHRoaXMuZ2V0RmVhdHVyZUNvbGxlY3Rpb25XaXRoSW5uZXIoW2YgYXMgRmVhdHVyZTxHZW9tZXRyeT5dKVxuICAgICAgICAuZmlsdGVyKChmKSA9PiBmLmdldElkKCkgIT0gbnVsbClcbiAgICAgICAgLmZvckVhY2goKGZzOiBGZWF0dXJlPEdlb21ldHJ5PikgPT4ge1xuICAgICAgICAgIGxldCBsYXllck5hbWUgPSBsLmdldCgnbmFtZScpO1xuICAgICAgICAgIGlmICghbW9kZWwuZW50aXRpZXNbbGF5ZXJOYW1lXSkgbW9kZWwuZW50aXRpZXNbbGF5ZXJOYW1lXSA9IFtdO1xuICAgICAgICAgIGlmICghbW9kZWwuZmVhdHVyZXNbbGF5ZXJOYW1lXSkgbW9kZWwuZmVhdHVyZXNbbGF5ZXJOYW1lXSA9IFtdO1xuICAgICAgICAgIG1vZGVsLmVudGl0aWVzW2xheWVyTmFtZV0ucHVzaCh7IGlkOiBmcy5nZXRJZCgpISwgLi4uZnMuZ2V0KE1hcENvbnN0YW50cy5GZWF0dXJlSW5mbykgfSk7XG4gICAgICAgICAgbW9kZWwuZmVhdHVyZXNbbGF5ZXJOYW1lXS5wdXNoKGZzKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGZWF0dXJlQ29sbGVjdGlvbldpdGhJbm5lcihmZWF0dXJlczogRmVhdHVyZTxHZW9tZXRyeT5bXSk6IEZlYXR1cmU8R2VvbWV0cnk+W10ge1xuICAgIGNvbnN0IHJlc3VsdDogRmVhdHVyZTxHZW9tZXRyeT5bXSA9IFtdO1xuICAgIGZlYXR1cmVzPy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICBjb25zdCBpbm5lckZlYXR1cmVzID0gZi5nZXQoJ2ZlYXR1cmVzJykgYXMgRmVhdHVyZTxHZW9tZXRyeT5bXTtcbiAgICAgIGlubmVyRmVhdHVyZXM/Lmxlbmd0aCA/IHJlc3VsdC5wdXNoKC4uLmlubmVyRmVhdHVyZXMpIDogcmVzdWx0LnB1c2goZik7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
@@ -0,0 +1,39 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { MapRenderedEvent } from '../messages';
3
+ import { FitToFeaturesCommand } from '../messages/commands/fit-to-features.command';
4
+ import { createEmpty, extend } from 'ol/extent';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "./map-postboy.service";
7
+ export class MapFeatureService {
8
+ constructor(postboy) {
9
+ this.postboy = postboy;
10
+ }
11
+ up() {
12
+ this.observeMapRender();
13
+ this.observeFitToFeatures();
14
+ }
15
+ observeMapRender() {
16
+ this.postboy.subscribe(MapRenderedEvent.ID).subscribe((m) => {
17
+ this.map = m.map;
18
+ });
19
+ }
20
+ observeFitToFeatures() {
21
+ this.postboy.subscribe(FitToFeaturesCommand.ID).subscribe((m) => {
22
+ this.fitToGeometries(m.features.map((f) => f.getGeometry()), m.zoomAfter);
23
+ });
24
+ }
25
+ fitToGeometries(geometries, zoomAfter) {
26
+ if (!geometries?.length || !this.map)
27
+ return;
28
+ const extent = createEmpty();
29
+ geometries.forEach((g) => extend(extent, g.getExtent()));
30
+ this.map.getView().fit(extent);
31
+ this.map.getView().setZoom(this.map.getView().getZoom() + zoomAfter);
32
+ }
33
+ }
34
+ MapFeatureService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MapFeatureService, deps: [{ token: i1.MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
35
+ MapFeatureService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MapFeatureService });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MapFeatureService, decorators: [{
37
+ type: Injectable
38
+ }], ctorParameters: function () { return [{ type: i1.MapPostboyService }]; } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWZlYXR1cmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hcHMtY29tcG9uZW50cy9zcmMvbWFwL3NlcnZpY2VzL21hcC1mZWF0dXJlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFcEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7OztBQUdoRCxNQUFNLE9BQU8saUJBQWlCO0lBRzVCLFlBQW9CLE9BQTBCO1FBQTFCLFlBQU8sR0FBUCxPQUFPLENBQW1CO0lBQUcsQ0FBQztJQUVsRCxFQUFFO1FBQ0EsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBbUIsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDNUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBdUIsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDcEYsSUFBSSxDQUFDLGVBQWUsQ0FDbEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUcsQ0FBQyxFQUN2QyxDQUFDLENBQUMsU0FBUyxDQUNaLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlLENBQUMsVUFBc0IsRUFBRSxTQUFpQjtRQUMvRCxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTztRQUM3QyxNQUFNLE1BQU0sR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUM3QixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUcsR0FBRyxTQUFTLENBQUMsQ0FBQztJQUN4RSxDQUFDOzsrR0EvQlUsaUJBQWlCO21IQUFqQixpQkFBaUI7NEZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElQb3N0Ym95RGVwZW5kaW5nU2VydmljZSB9IGZyb20gJ0BhcnRzdGVzaC9wb3N0Ym95JztcbmltcG9ydCB7IE1hcCB9IGZyb20gJ29sJztcbmltcG9ydCB7IE1hcFBvc3Rib3lTZXJ2aWNlIH0gZnJvbSAnLi9tYXAtcG9zdGJveS5zZXJ2aWNlJztcbmltcG9ydCB7IE1hcFJlbmRlcmVkRXZlbnQgfSBmcm9tICcuLi9tZXNzYWdlcyc7XG5pbXBvcnQgeyBGaXRUb0ZlYXR1cmVzQ29tbWFuZCB9IGZyb20gJy4uL21lc3NhZ2VzL2NvbW1hbmRzL2ZpdC10by1mZWF0dXJlcy5jb21tYW5kJztcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbSc7XG5pbXBvcnQgeyBjcmVhdGVFbXB0eSwgZXh0ZW5kIH0gZnJvbSAnb2wvZXh0ZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1hcEZlYXR1cmVTZXJ2aWNlIGltcGxlbWVudHMgSVBvc3Rib3lEZXBlbmRpbmdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBtYXA/OiBNYXA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwb3N0Ym95OiBNYXBQb3N0Ym95U2VydmljZSkge31cblxuICB1cCgpOiB2b2lkIHtcbiAgICB0aGlzLm9ic2VydmVNYXBSZW5kZXIoKTtcbiAgICB0aGlzLm9ic2VydmVGaXRUb0ZlYXR1cmVzKCk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVNYXBSZW5kZXIoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YnNjcmliZTxNYXBSZW5kZXJlZEV2ZW50PihNYXBSZW5kZXJlZEV2ZW50LklEKS5zdWJzY3JpYmUoKG0pID0+IHtcbiAgICAgIHRoaXMubWFwID0gbS5tYXA7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVGaXRUb0ZlYXR1cmVzKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWJzY3JpYmU8Rml0VG9GZWF0dXJlc0NvbW1hbmQ+KEZpdFRvRmVhdHVyZXNDb21tYW5kLklEKS5zdWJzY3JpYmUoKG0pID0+IHtcbiAgICAgIHRoaXMuZml0VG9HZW9tZXRyaWVzKFxuICAgICAgICBtLmZlYXR1cmVzLm1hcCgoZikgPT4gZi5nZXRHZW9tZXRyeSgpISksXG4gICAgICAgIG0uem9vbUFmdGVyLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZml0VG9HZW9tZXRyaWVzKGdlb21ldHJpZXM6IEdlb21ldHJ5W10sIHpvb21BZnRlcjogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCFnZW9tZXRyaWVzPy5sZW5ndGggfHwgIXRoaXMubWFwKSByZXR1cm47XG4gICAgY29uc3QgZXh0ZW50ID0gY3JlYXRlRW1wdHkoKTtcbiAgICBnZW9tZXRyaWVzLmZvckVhY2goKGcpID0+IGV4dGVuZChleHRlbnQsIGcuZ2V0RXh0ZW50KCkpKTtcbiAgICB0aGlzLm1hcC5nZXRWaWV3KCkuZml0KGV4dGVudCk7XG4gICAgdGhpcy5tYXAuZ2V0VmlldygpLnNldFpvb20odGhpcy5tYXAuZ2V0VmlldygpLmdldFpvb20oKSEgKyB6b29tQWZ0ZXIpO1xuICB9XG59XG4iXX0=
@@ -51,8 +51,11 @@ export class MapManagementService {
51
51
  this.postboy.subscribe(PlaceLayerFeaturesCommand.ID).subscribe((c) => {
52
52
  if (!this.layers[c.layer])
53
53
  return;
54
- this.layers[c.layer]?.getSource()?.clear();
55
- this.layers[c.layer].getSource()?.addFeatures(c.features);
54
+ let source = this.layers[c.layer]?.getSource();
55
+ if (!!source['getSource'])
56
+ source = source?.getSource();
57
+ source?.clear();
58
+ source?.addFeatures(c.features);
56
59
  });
57
60
  }
58
61
  observeRemoveLayer() {
@@ -69,4 +72,4 @@ MapManagementService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0",
69
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MapManagementService, decorators: [{
70
73
  type: Injectable
71
74
  }], ctorParameters: function () { return [{ type: i1.MapPostboyService }]; } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLW1hbmFnZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hcHMtY29tcG9uZW50cy9zcmMvbWFwL3NlcnZpY2VzL21hcC1tYW5hZ2VtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFHL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7O0FBSTdFLE1BQU0sT0FBTyxvQkFBb0I7SUFJL0IsWUFBb0IsT0FBMEI7UUFBMUIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFGdEMsV0FBTSxHQUFpRCxFQUFFLENBQUM7SUFFakIsQ0FBQztJQUVsRCxFQUFFO1FBQ0EsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFvQixpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM5RSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTztZQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBaUIsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3hFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRztnQkFBRSxPQUFPO1lBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQW1CLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzVFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFrQixlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDMUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHO2dCQUFFLE9BQU87WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDM0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBNEIseUJBQXlCLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDOUYsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPO1lBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFxQixrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNoRixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTztZQUN0QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztrSEF6RFUsb0JBQW9CO3NIQUFwQixvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hcCB9IGZyb20gJ29sJztcbmltcG9ydCB7IE1hcFBvc3Rib3lTZXJ2aWNlIH0gZnJvbSAnLi9tYXAtcG9zdGJveS5zZXJ2aWNlJztcbmltcG9ydCB7IEFkZExheWVyQ29tbWFuZCB9IGZyb20gJy4uL21lc3NhZ2VzL2NvbW1hbmRzL2FkZC1sYXllci5jb21tYW5kJztcbmltcG9ydCB7IFJlbW92ZUxheWVyQ29tbWFuZCB9IGZyb20gJy4uL21lc3NhZ2VzL2NvbW1hbmRzL3JlbW92ZS1sYXllci5jb21tYW5kJztcbmltcG9ydCB7IFZlY3RvciBhcyBMYXllciB9IGZyb20gJ29sL2xheWVyJztcbmltcG9ydCBWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5pbXBvcnQgeyBNYXBSZW5kZXJlZEV2ZW50IH0gZnJvbSAnLi4vbWVzc2FnZXMnO1xuaW1wb3J0IHsgUGxhY2VMYXllckZlYXR1cmVzQ29tbWFuZCB9IGZyb20gJy4uL21lc3NhZ2VzL2NvbW1hbmRzL3BsYWNlLWxheWVyLWZlYXR1cmVzLmNvbW1hbmQnO1xuaW1wb3J0IHsgQWRkVGlsZUNvbW1hbmQgfSBmcm9tICcuLi9tZXNzYWdlcy9jb21tYW5kcy9hZGQtdGlsZS5jb21tYW5kJztcbmltcG9ydCB7IFJlbW92ZVRpbGVDb21tYW5kIH0gZnJvbSAnLi4vbWVzc2FnZXMvY29tbWFuZHMvcmVtb3ZlLXRpbGUuY29tbWFuZCc7XG5pbXBvcnQgeyBJUG9zdGJveURlcGVuZGluZ1NlcnZpY2UgfSBmcm9tICdAYXJ0c3Rlc2gvcG9zdGJveSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNYXBNYW5hZ2VtZW50U2VydmljZSBpbXBsZW1lbnRzIElQb3N0Ym95RGVwZW5kaW5nU2VydmljZSB7XG4gIHByaXZhdGUgbWFwPzogTWFwO1xuICBwcml2YXRlIGxheWVyczogeyBbbmFtZTogc3RyaW5nXTogTGF5ZXI8VmVjdG9yU291cmNlPGFueT4+IH0gPSB7fTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvc3Rib3k6IE1hcFBvc3Rib3lTZXJ2aWNlKSB7fVxuXG4gIHVwKCk6IHZvaWQge1xuICAgIHRoaXMub2JzZXJ2ZU1hcFJlbmRlcigpO1xuICAgIHRoaXMub2JzZXJ2ZUFkZExheWVyKCk7XG4gICAgdGhpcy5vYnNlcnZlUmVtb3ZlTGF5ZXIoKTtcbiAgICB0aGlzLm9ic2VydmVQbGFjZUZlYXR1cmVzKCk7XG4gICAgdGhpcy5vYnNlcnZlQWRkVGlsZSgpO1xuICAgIHRoaXMub2JzZXJ2ZVJlbW92ZVRpbGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZVJlbW92ZVRpbGUoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YnNjcmliZTxSZW1vdmVUaWxlQ29tbWFuZD4oUmVtb3ZlVGlsZUNvbW1hbmQuSUQpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgaWYgKCF0aGlzLm1hcCkgcmV0dXJuO1xuICAgICAgdGhpcy5tYXAucmVtb3ZlTGF5ZXIoYy5sYXllcik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVBZGRUaWxlKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWJzY3JpYmU8QWRkVGlsZUNvbW1hbmQ+KEFkZFRpbGVDb21tYW5kLklEKS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgIGlmICghdGhpcy5tYXApIHJldHVybjtcbiAgICAgIHRoaXMubWFwLmFkZExheWVyKGMubGF5ZXIpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlTWFwUmVuZGVyKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWJzY3JpYmU8TWFwUmVuZGVyZWRFdmVudD4oTWFwUmVuZGVyZWRFdmVudC5JRCkuc3Vic2NyaWJlKChtKSA9PiB7XG4gICAgICB0aGlzLm1hcCA9IG0ubWFwO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlQWRkTGF5ZXIoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YnNjcmliZTxBZGRMYXllckNvbW1hbmQ+KEFkZExheWVyQ29tbWFuZC5JRCkuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICBpZiAoIXRoaXMubWFwKSByZXR1cm47XG4gICAgICB0aGlzLmxheWVyc1tjLmxheWVyLmdldCgnbmFtZScpXSA9IGMubGF5ZXI7XG4gICAgICB0aGlzLm1hcC5hZGRMYXllcihjLmxheWVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZVBsYWNlRmVhdHVyZXMoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YnNjcmliZTxQbGFjZUxheWVyRmVhdHVyZXNDb21tYW5kPihQbGFjZUxheWVyRmVhdHVyZXNDb21tYW5kLklEKS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgIGlmICghdGhpcy5sYXllcnNbYy5sYXllcl0pIHJldHVybjtcbiAgICAgIHRoaXMubGF5ZXJzW2MubGF5ZXJdPy5nZXRTb3VyY2UoKT8uY2xlYXIoKTtcbiAgICAgIHRoaXMubGF5ZXJzW2MubGF5ZXJdLmdldFNvdXJjZSgpPy5hZGRGZWF0dXJlcyhjLmZlYXR1cmVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZVJlbW92ZUxheWVyKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWJzY3JpYmU8UmVtb3ZlTGF5ZXJDb21tYW5kPihSZW1vdmVMYXllckNvbW1hbmQuSUQpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgaWYgKCF0aGlzLm1hcCkgcmV0dXJuO1xuICAgICAgZGVsZXRlIHRoaXMubGF5ZXJzW2MubGF5ZXIuZ2V0KCduYW1lJyldO1xuICAgICAgdGhpcy5tYXAucmVtb3ZlTGF5ZXIoYy5sYXllcik7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLW1hbmFnZW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hcHMtY29tcG9uZW50cy9zcmMvbWFwL3NlcnZpY2VzL21hcC1tYW5hZ2VtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFHL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7O0FBSzdFLE1BQU0sT0FBTyxvQkFBb0I7SUFJL0IsWUFBb0IsT0FBMEI7UUFBMUIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFGdEMsV0FBTSxHQUEyRCxFQUFFLENBQUM7SUFFM0IsQ0FBQztJQUVsRCxFQUFFO1FBQ0EsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFvQixpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM5RSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTztZQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBaUIsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3hFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRztnQkFBRSxPQUFPO1lBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQW1CLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzVFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFrQixlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDMUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHO2dCQUFFLE9BQU87WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDM0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBNEIseUJBQXlCLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDOUYsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPO1lBQ2xDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxDQUFFLE1BQWMsQ0FBQyxXQUFXLENBQUM7Z0JBQUUsTUFBTSxHQUFJLE1BQWMsRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUMxRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDaEIsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFxQixrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNoRixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTztZQUN0QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztrSEEzRFUsb0JBQW9CO3NIQUFwQixvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hcCB9IGZyb20gJ29sJztcbmltcG9ydCB7IE1hcFBvc3Rib3lTZXJ2aWNlIH0gZnJvbSAnLi9tYXAtcG9zdGJveS5zZXJ2aWNlJztcbmltcG9ydCB7IEFkZExheWVyQ29tbWFuZCB9IGZyb20gJy4uL21lc3NhZ2VzL2NvbW1hbmRzL2FkZC1sYXllci5jb21tYW5kJztcbmltcG9ydCB7IFJlbW92ZUxheWVyQ29tbWFuZCB9IGZyb20gJy4uL21lc3NhZ2VzL2NvbW1hbmRzL3JlbW92ZS1sYXllci5jb21tYW5kJztcbmltcG9ydCB7IFZlY3RvciBhcyBMYXllciB9IGZyb20gJ29sL2xheWVyJztcbmltcG9ydCBWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5pbXBvcnQgeyBNYXBSZW5kZXJlZEV2ZW50IH0gZnJvbSAnLi4vbWVzc2FnZXMnO1xuaW1wb3J0IHsgUGxhY2VMYXllckZlYXR1cmVzQ29tbWFuZCB9IGZyb20gJy4uL21lc3NhZ2VzL2NvbW1hbmRzL3BsYWNlLWxheWVyLWZlYXR1cmVzLmNvbW1hbmQnO1xuaW1wb3J0IHsgQWRkVGlsZUNvbW1hbmQgfSBmcm9tICcuLi9tZXNzYWdlcy9jb21tYW5kcy9hZGQtdGlsZS5jb21tYW5kJztcbmltcG9ydCB7IFJlbW92ZVRpbGVDb21tYW5kIH0gZnJvbSAnLi4vbWVzc2FnZXMvY29tbWFuZHMvcmVtb3ZlLXRpbGUuY29tbWFuZCc7XG5pbXBvcnQgeyBJUG9zdGJveURlcGVuZGluZ1NlcnZpY2UgfSBmcm9tICdAYXJ0c3Rlc2gvcG9zdGJveSc7XG5pbXBvcnQgQ2x1c3RlciBmcm9tICdvbC9zb3VyY2UvQ2x1c3Rlcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNYXBNYW5hZ2VtZW50U2VydmljZSBpbXBsZW1lbnRzIElQb3N0Ym95RGVwZW5kaW5nU2VydmljZSB7XG4gIHByaXZhdGUgbWFwPzogTWFwO1xuICBwcml2YXRlIGxheWVyczogeyBbbmFtZTogc3RyaW5nXTogTGF5ZXI8VmVjdG9yU291cmNlPGFueT4gfCBDbHVzdGVyPiB9ID0ge307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwb3N0Ym95OiBNYXBQb3N0Ym95U2VydmljZSkge31cblxuICB1cCgpOiB2b2lkIHtcbiAgICB0aGlzLm9ic2VydmVNYXBSZW5kZXIoKTtcbiAgICB0aGlzLm9ic2VydmVBZGRMYXllcigpO1xuICAgIHRoaXMub2JzZXJ2ZVJlbW92ZUxheWVyKCk7XG4gICAgdGhpcy5vYnNlcnZlUGxhY2VGZWF0dXJlcygpO1xuICAgIHRoaXMub2JzZXJ2ZUFkZFRpbGUoKTtcbiAgICB0aGlzLm9ic2VydmVSZW1vdmVUaWxlKCk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVSZW1vdmVUaWxlKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWJzY3JpYmU8UmVtb3ZlVGlsZUNvbW1hbmQ+KFJlbW92ZVRpbGVDb21tYW5kLklEKS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgIGlmICghdGhpcy5tYXApIHJldHVybjtcbiAgICAgIHRoaXMubWFwLnJlbW92ZUxheWVyKGMubGF5ZXIpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlQWRkVGlsZSgpIHtcbiAgICB0aGlzLnBvc3Rib3kuc3Vic2NyaWJlPEFkZFRpbGVDb21tYW5kPihBZGRUaWxlQ29tbWFuZC5JRCkuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICBpZiAoIXRoaXMubWFwKSByZXR1cm47XG4gICAgICB0aGlzLm1hcC5hZGRMYXllcihjLmxheWVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZU1hcFJlbmRlcigpIHtcbiAgICB0aGlzLnBvc3Rib3kuc3Vic2NyaWJlPE1hcFJlbmRlcmVkRXZlbnQ+KE1hcFJlbmRlcmVkRXZlbnQuSUQpLnN1YnNjcmliZSgobSkgPT4ge1xuICAgICAgdGhpcy5tYXAgPSBtLm1hcDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZUFkZExheWVyKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWJzY3JpYmU8QWRkTGF5ZXJDb21tYW5kPihBZGRMYXllckNvbW1hbmQuSUQpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgaWYgKCF0aGlzLm1hcCkgcmV0dXJuO1xuICAgICAgdGhpcy5sYXllcnNbYy5sYXllci5nZXQoJ25hbWUnKV0gPSBjLmxheWVyO1xuICAgICAgdGhpcy5tYXAuYWRkTGF5ZXIoYy5sYXllcik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVQbGFjZUZlYXR1cmVzKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWJzY3JpYmU8UGxhY2VMYXllckZlYXR1cmVzQ29tbWFuZD4oUGxhY2VMYXllckZlYXR1cmVzQ29tbWFuZC5JRCkuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICBpZiAoIXRoaXMubGF5ZXJzW2MubGF5ZXJdKSByZXR1cm47XG4gICAgICBsZXQgc291cmNlID0gdGhpcy5sYXllcnNbYy5sYXllcl0/LmdldFNvdXJjZSgpO1xuICAgICAgaWYgKCEhKHNvdXJjZSBhcyBhbnkpWydnZXRTb3VyY2UnXSkgc291cmNlID0gKHNvdXJjZSBhcyBhbnkpPy5nZXRTb3VyY2UoKTtcbiAgICAgIHNvdXJjZT8uY2xlYXIoKTtcbiAgICAgIHNvdXJjZT8uYWRkRmVhdHVyZXMoYy5mZWF0dXJlcyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVSZW1vdmVMYXllcigpIHtcbiAgICB0aGlzLnBvc3Rib3kuc3Vic2NyaWJlPFJlbW92ZUxheWVyQ29tbWFuZD4oUmVtb3ZlTGF5ZXJDb21tYW5kLklEKS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgIGlmICghdGhpcy5tYXApIHJldHVybjtcbiAgICAgIGRlbGV0ZSB0aGlzLmxheWVyc1tjLmxheWVyLmdldCgnbmFtZScpXTtcbiAgICAgIHRoaXMubWFwLnJlbW92ZUxheWVyKGMubGF5ZXIpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -8,15 +8,17 @@ import { RemoveTileCommand } from '../messages/commands/remove-tile.command';
8
8
  import { PostboyAbstractRegistrator } from '@artstesh/postboy';
9
9
  import { MapClickEvent } from '../messages/events/map-click.event';
10
10
  import { CloseTooltipCommand } from '../messages/commands/close-tooltip.command';
11
+ import { FitToFeaturesCommand } from '../messages/commands/fit-to-features.command';
11
12
  import * as i0 from "@angular/core";
12
13
  import * as i1 from "./map-postboy.service";
13
14
  import * as i2 from "./map-management.service";
14
15
  import * as i3 from "./map-state.service";
15
- import * as i4 from "./map-click.service";
16
+ import * as i4 from "./map-feature.service";
17
+ import * as i5 from "./map-click.service";
16
18
  export class MessageRegistratorService extends PostboyAbstractRegistrator {
17
- constructor(service, management, state, interaction) {
19
+ constructor(service, management, state, feature, interaction) {
18
20
  super(service);
19
- this.registerServices([management, state, interaction]);
21
+ this.registerServices([management, state, interaction, feature]);
20
22
  }
21
23
  _up() {
22
24
  this.registerReplay(MapRenderedEvent.ID);
@@ -27,11 +29,12 @@ export class MessageRegistratorService extends PostboyAbstractRegistrator {
27
29
  this.registerSubject(RemoveTileCommand.ID);
28
30
  this.registerSubject(MapClickEvent.ID);
29
31
  this.registerSubject(CloseTooltipCommand.ID);
32
+ this.registerSubject(FitToFeaturesCommand.ID);
30
33
  }
31
34
  }
32
- MessageRegistratorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MessageRegistratorService, deps: [{ token: i1.MapPostboyService }, { token: i2.MapManagementService }, { token: i3.MapStateService }, { token: i4.MapClickService }], target: i0.ɵɵFactoryTarget.Injectable });
35
+ MessageRegistratorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MessageRegistratorService, deps: [{ token: i1.MapPostboyService }, { token: i2.MapManagementService }, { token: i3.MapStateService }, { token: i4.MapFeatureService }, { token: i5.MapClickService }], target: i0.ɵɵFactoryTarget.Injectable });
33
36
  MessageRegistratorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MessageRegistratorService });
34
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MessageRegistratorService, decorators: [{
35
38
  type: Injectable
36
- }], ctorParameters: function () { return [{ type: i1.MapPostboyService }, { type: i2.MapManagementService }, { type: i3.MapStateService }, { type: i4.MapClickService }]; } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1yZWdpc3RyYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwcy1jb21wb25lbnRzL3NyYy9tYXAvc2VydmljZXMvbWVzc2FnZS1yZWdpc3RyYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7QUFHakYsTUFBTSxPQUFPLHlCQUEwQixTQUFRLDBCQUEwQjtJQUN2RSxZQUNFLE9BQTBCLEVBQzFCLFVBQWdDLEVBQ2hDLEtBQXNCLEVBQ3RCLFdBQTRCO1FBRTVCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ1MsR0FBRztRQUNYLElBQUksQ0FBQyxjQUFjLENBQW1CLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxjQUFjLENBQTRCLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxlQUFlLENBQWtCLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsZUFBZSxDQUFxQixrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsZUFBZSxDQUFpQixjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGVBQWUsQ0FBb0IsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLGVBQWUsQ0FBZ0IsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxlQUFlLENBQXNCLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7O3VIQW5CVSx5QkFBeUI7MkhBQXpCLHlCQUF5Qjs0RkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWFwUG9zdGJveVNlcnZpY2UgfSBmcm9tICcuL21hcC1wb3N0Ym95LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWFwUmVuZGVyZWRFdmVudCB9IGZyb20gJy4uL21lc3NhZ2VzJztcbmltcG9ydCB7IEFkZExheWVyQ29tbWFuZCB9IGZyb20gJy4uL21lc3NhZ2VzL2NvbW1hbmRzL2FkZC1sYXllci5jb21tYW5kJztcbmltcG9ydCB7IFBsYWNlTGF5ZXJGZWF0dXJlc0NvbW1hbmQgfSBmcm9tICcuLi9tZXNzYWdlcy9jb21tYW5kcy9wbGFjZS1sYXllci1mZWF0dXJlcy5jb21tYW5kJztcbmltcG9ydCB7IFJlbW92ZUxheWVyQ29tbWFuZCB9IGZyb20gJy4uL21lc3NhZ2VzL2NvbW1hbmRzL3JlbW92ZS1sYXllci5jb21tYW5kJztcbmltcG9ydCB7IEFkZFRpbGVDb21tYW5kIH0gZnJvbSAnLi4vbWVzc2FnZXMvY29tbWFuZHMvYWRkLXRpbGUuY29tbWFuZCc7XG5pbXBvcnQgeyBSZW1vdmVUaWxlQ29tbWFuZCB9IGZyb20gJy4uL21lc3NhZ2VzL2NvbW1hbmRzL3JlbW92ZS10aWxlLmNvbW1hbmQnO1xuaW1wb3J0IHsgUG9zdGJveUFic3RyYWN0UmVnaXN0cmF0b3IgfSBmcm9tICdAYXJ0c3Rlc2gvcG9zdGJveSc7XG5pbXBvcnQgeyBNYXBNYW5hZ2VtZW50U2VydmljZSB9IGZyb20gJy4vbWFwLW1hbmFnZW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBNYXBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL21hcC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1hcENsaWNrU2VydmljZSB9IGZyb20gJy4vbWFwLWNsaWNrLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFwQ2xpY2tFdmVudCB9IGZyb20gJy4uL21lc3NhZ2VzL2V2ZW50cy9tYXAtY2xpY2suZXZlbnQnO1xuaW1wb3J0IHsgQ2xvc2VUb29sdGlwQ29tbWFuZCB9IGZyb20gJy4uL21lc3NhZ2VzL2NvbW1hbmRzL2Nsb3NlLXRvb2x0aXAuY29tbWFuZCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNZXNzYWdlUmVnaXN0cmF0b3JTZXJ2aWNlIGV4dGVuZHMgUG9zdGJveUFic3RyYWN0UmVnaXN0cmF0b3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBzZXJ2aWNlOiBNYXBQb3N0Ym95U2VydmljZSxcbiAgICBtYW5hZ2VtZW50OiBNYXBNYW5hZ2VtZW50U2VydmljZSxcbiAgICBzdGF0ZTogTWFwU3RhdGVTZXJ2aWNlLFxuICAgIGludGVyYWN0aW9uOiBNYXBDbGlja1NlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKHNlcnZpY2UpO1xuICAgIHRoaXMucmVnaXN0ZXJTZXJ2aWNlcyhbbWFuYWdlbWVudCwgc3RhdGUsIGludGVyYWN0aW9uXSk7XG4gIH1cbiAgcHJvdGVjdGVkIF91cCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2lzdGVyUmVwbGF5PE1hcFJlbmRlcmVkRXZlbnQ+KE1hcFJlbmRlcmVkRXZlbnQuSUQpO1xuICAgIHRoaXMucmVnaXN0ZXJSZXBsYXk8UGxhY2VMYXllckZlYXR1cmVzQ29tbWFuZD4oUGxhY2VMYXllckZlYXR1cmVzQ29tbWFuZC5JRCk7XG4gICAgdGhpcy5yZWdpc3RlclN1YmplY3Q8QWRkTGF5ZXJDb21tYW5kPihBZGRMYXllckNvbW1hbmQuSUQpO1xuICAgIHRoaXMucmVnaXN0ZXJTdWJqZWN0PFJlbW92ZUxheWVyQ29tbWFuZD4oUmVtb3ZlTGF5ZXJDb21tYW5kLklEKTtcbiAgICB0aGlzLnJlZ2lzdGVyU3ViamVjdDxBZGRUaWxlQ29tbWFuZD4oQWRkVGlsZUNvbW1hbmQuSUQpO1xuICAgIHRoaXMucmVnaXN0ZXJTdWJqZWN0PFJlbW92ZVRpbGVDb21tYW5kPihSZW1vdmVUaWxlQ29tbWFuZC5JRCk7XG4gICAgdGhpcy5yZWdpc3RlclN1YmplY3Q8TWFwQ2xpY2tFdmVudD4oTWFwQ2xpY2tFdmVudC5JRCk7XG4gICAgdGhpcy5yZWdpc3RlclN1YmplY3Q8Q2xvc2VUb29sdGlwQ29tbWFuZD4oQ2xvc2VUb29sdGlwQ29tbWFuZC5JRCk7XG4gIH1cbn1cbiJdfQ==
39
+ }], ctorParameters: function () { return [{ type: i1.MapPostboyService }, { type: i2.MapManagementService }, { type: i3.MapStateService }, { type: i4.MapFeatureService }, { type: i5.MapClickService }]; } });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1yZWdpc3RyYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwcy1jb21wb25lbnRzL3NyYy9tYXAvc2VydmljZXMvbWVzc2FnZS1yZWdpc3RyYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7O0FBR3BGLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSwwQkFBMEI7SUFDdkUsWUFDRSxPQUEwQixFQUMxQixVQUFnQyxFQUNoQyxLQUFzQixFQUN0QixPQUEwQixFQUMxQixXQUE0QjtRQUU1QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDUyxHQUFHO1FBQ1gsSUFBSSxDQUFDLGNBQWMsQ0FBbUIsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGNBQWMsQ0FBNEIseUJBQXlCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLGVBQWUsQ0FBa0IsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxlQUFlLENBQXFCLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxlQUFlLENBQWlCLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFvQixpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsZUFBZSxDQUFnQixhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGVBQWUsQ0FBc0IsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLGVBQWUsQ0FBdUIsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQzs7dUhBckJVLHlCQUF5QjsySEFBekIseUJBQXlCOzRGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXBQb3N0Ym95U2VydmljZSB9IGZyb20gJy4vbWFwLXBvc3Rib3kuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYXBSZW5kZXJlZEV2ZW50IH0gZnJvbSAnLi4vbWVzc2FnZXMnO1xuaW1wb3J0IHsgQWRkTGF5ZXJDb21tYW5kIH0gZnJvbSAnLi4vbWVzc2FnZXMvY29tbWFuZHMvYWRkLWxheWVyLmNvbW1hbmQnO1xuaW1wb3J0IHsgUGxhY2VMYXllckZlYXR1cmVzQ29tbWFuZCB9IGZyb20gJy4uL21lc3NhZ2VzL2NvbW1hbmRzL3BsYWNlLWxheWVyLWZlYXR1cmVzLmNvbW1hbmQnO1xuaW1wb3J0IHsgUmVtb3ZlTGF5ZXJDb21tYW5kIH0gZnJvbSAnLi4vbWVzc2FnZXMvY29tbWFuZHMvcmVtb3ZlLWxheWVyLmNvbW1hbmQnO1xuaW1wb3J0IHsgQWRkVGlsZUNvbW1hbmQgfSBmcm9tICcuLi9tZXNzYWdlcy9jb21tYW5kcy9hZGQtdGlsZS5jb21tYW5kJztcbmltcG9ydCB7IFJlbW92ZVRpbGVDb21tYW5kIH0gZnJvbSAnLi4vbWVzc2FnZXMvY29tbWFuZHMvcmVtb3ZlLXRpbGUuY29tbWFuZCc7XG5pbXBvcnQgeyBQb3N0Ym95QWJzdHJhY3RSZWdpc3RyYXRvciB9IGZyb20gJ0BhcnRzdGVzaC9wb3N0Ym95JztcbmltcG9ydCB7IE1hcE1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9tYXAtbWFuYWdlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IE1hcFN0YXRlU2VydmljZSB9IGZyb20gJy4vbWFwLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFwQ2xpY2tTZXJ2aWNlIH0gZnJvbSAnLi9tYXAtY2xpY2suc2VydmljZSc7XG5pbXBvcnQgeyBNYXBDbGlja0V2ZW50IH0gZnJvbSAnLi4vbWVzc2FnZXMvZXZlbnRzL21hcC1jbGljay5ldmVudCc7XG5pbXBvcnQgeyBDbG9zZVRvb2x0aXBDb21tYW5kIH0gZnJvbSAnLi4vbWVzc2FnZXMvY29tbWFuZHMvY2xvc2UtdG9vbHRpcC5jb21tYW5kJztcbmltcG9ydCB7IE1hcEZlYXR1cmVTZXJ2aWNlIH0gZnJvbSAnLi9tYXAtZmVhdHVyZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZpdFRvRmVhdHVyZXNDb21tYW5kIH0gZnJvbSAnLi4vbWVzc2FnZXMvY29tbWFuZHMvZml0LXRvLWZlYXR1cmVzLmNvbW1hbmQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTWVzc2FnZVJlZ2lzdHJhdG9yU2VydmljZSBleHRlbmRzIFBvc3Rib3lBYnN0cmFjdFJlZ2lzdHJhdG9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2VydmljZTogTWFwUG9zdGJveVNlcnZpY2UsXG4gICAgbWFuYWdlbWVudDogTWFwTWFuYWdlbWVudFNlcnZpY2UsXG4gICAgc3RhdGU6IE1hcFN0YXRlU2VydmljZSxcbiAgICBmZWF0dXJlOiBNYXBGZWF0dXJlU2VydmljZSxcbiAgICBpbnRlcmFjdGlvbjogTWFwQ2xpY2tTZXJ2aWNlLFxuICApIHtcbiAgICBzdXBlcihzZXJ2aWNlKTtcbiAgICB0aGlzLnJlZ2lzdGVyU2VydmljZXMoW21hbmFnZW1lbnQsIHN0YXRlLCBpbnRlcmFjdGlvbiwgZmVhdHVyZV0pO1xuICB9XG4gIHByb3RlY3RlZCBfdXAoKTogdm9pZCB7XG4gICAgdGhpcy5yZWdpc3RlclJlcGxheTxNYXBSZW5kZXJlZEV2ZW50PihNYXBSZW5kZXJlZEV2ZW50LklEKTtcbiAgICB0aGlzLnJlZ2lzdGVyUmVwbGF5PFBsYWNlTGF5ZXJGZWF0dXJlc0NvbW1hbmQ+KFBsYWNlTGF5ZXJGZWF0dXJlc0NvbW1hbmQuSUQpO1xuICAgIHRoaXMucmVnaXN0ZXJTdWJqZWN0PEFkZExheWVyQ29tbWFuZD4oQWRkTGF5ZXJDb21tYW5kLklEKTtcbiAgICB0aGlzLnJlZ2lzdGVyU3ViamVjdDxSZW1vdmVMYXllckNvbW1hbmQ+KFJlbW92ZUxheWVyQ29tbWFuZC5JRCk7XG4gICAgdGhpcy5yZWdpc3RlclN1YmplY3Q8QWRkVGlsZUNvbW1hbmQ+KEFkZFRpbGVDb21tYW5kLklEKTtcbiAgICB0aGlzLnJlZ2lzdGVyU3ViamVjdDxSZW1vdmVUaWxlQ29tbWFuZD4oUmVtb3ZlVGlsZUNvbW1hbmQuSUQpO1xuICAgIHRoaXMucmVnaXN0ZXJTdWJqZWN0PE1hcENsaWNrRXZlbnQ+KE1hcENsaWNrRXZlbnQuSUQpO1xuICAgIHRoaXMucmVnaXN0ZXJTdWJqZWN0PENsb3NlVG9vbHRpcENvbW1hbmQ+KENsb3NlVG9vbHRpcENvbW1hbmQuSUQpO1xuICAgIHRoaXMucmVnaXN0ZXJTdWJqZWN0PEZpdFRvRmVhdHVyZXNDb21tYW5kPihGaXRUb0ZlYXR1cmVzQ29tbWFuZC5JRCk7XG4gIH1cbn1cbiJdfQ==
@@ -5,7 +5,7 @@ import { CommonModule } from '@angular/common';
5
5
  import { Feature } from 'ol';
6
6
  import { Point } from 'ol/geom';
7
7
  import { GeoJSON, WKT } from 'ol/format';
8
- import { getCenter } from 'ol/extent';
8
+ import { getCenter, createEmpty, extend } from 'ol/extent';
9
9
  import { useGeographic, get } from 'ol/proj';
10
10
  import { Subject } from 'rxjs';
11
11
  import { PostboyService, PostboyAbstractRegistrator } from '@artstesh/postboy';
@@ -17,8 +17,11 @@ import { filter, first } from 'rxjs/operators';
17
17
  import { XYZ, Vector } from 'ol/source';
18
18
  import { Vector as Vector$1 } from 'ol/layer';
19
19
  import Overlay from 'ol/Overlay';
20
+ import { bbox } from 'ol/loadingstrategy';
21
+ import { fromExtent } from 'ol/geom/Polygon';
22
+ import Cluster from 'ol/source/Cluster';
20
23
  import Style from 'ol/style/Style';
21
- import { Icon, Circle, Fill, Stroke } from 'ol/style';
24
+ import { Icon, Circle, Fill, Stroke, Text } from 'ol/style';
22
25
 
23
26
  class DestructibleComponent {
24
27
  constructor() {
@@ -122,6 +125,10 @@ class IdGenerator {
122
125
  }
123
126
  IdGenerator.collection = 'ABCDEFGHIJKLMNOPQRSTUVWXTZ0123456789'.split('');
124
127
 
128
+ class MapConstants {
129
+ }
130
+ MapConstants.FeatureInfo = 'f-info';
131
+
125
132
  class MarkerModel {
126
133
  constructor(lat, lng, id, info) {
127
134
  this.lat = lat;
@@ -137,7 +144,7 @@ class MarkerModel {
137
144
  const feature = new Feature(new Point([this.lng, this.lat]));
138
145
  feature.setId(this.id);
139
146
  if (this.info)
140
- feature.set('info', this.info);
147
+ feature.set(MapConstants.FeatureInfo, this.info);
141
148
  return feature;
142
149
  }
143
150
  }
@@ -191,10 +198,11 @@ class MapRenderedEvent extends GenericMessage {
191
198
  MapRenderedEvent.ID = 'b6121807-3b89-4cd3-82cf-089d2cefdc4f';
192
199
 
193
200
  class MapClickEvent extends GenericMessage {
194
- constructor(coordinates, entities) {
201
+ constructor(coordinates, entities, features) {
195
202
  super();
196
203
  this.coordinates = coordinates;
197
204
  this.entities = entities;
205
+ this.features = features;
198
206
  }
199
207
  get id() {
200
208
  return MapClickEvent.ID;
@@ -269,6 +277,18 @@ class RemoveTileCommand extends GenericMessage {
269
277
  }
270
278
  RemoveTileCommand.ID = 'c36ccc0b-5638-4819-b148-2de57a59a5b7';
271
279
 
280
+ class FitToFeaturesCommand extends GenericMessage {
281
+ constructor(features, zoomAfter = 0) {
282
+ super();
283
+ this.features = features;
284
+ this.zoomAfter = zoomAfter;
285
+ }
286
+ get id() {
287
+ return FitToFeaturesCommand.ID;
288
+ }
289
+ }
290
+ FitToFeaturesCommand.ID = '76cdc091-3793-4b6c-82f7-1e0334cf08a8';
291
+
272
292
  class MapPostboyService extends PostboyService {
273
293
  constructor() {
274
294
  super(...arguments);
@@ -323,11 +343,14 @@ class MapManagementService {
323
343
  }
324
344
  observePlaceFeatures() {
325
345
  this.postboy.subscribe(PlaceLayerFeaturesCommand.ID).subscribe((c) => {
326
- var _a, _b, _c;
346
+ var _a;
327
347
  if (!this.layers[c.layer])
328
348
  return;
329
- (_b = (_a = this.layers[c.layer]) === null || _a === void 0 ? void 0 : _a.getSource()) === null || _b === void 0 ? void 0 : _b.clear();
330
- (_c = this.layers[c.layer].getSource()) === null || _c === void 0 ? void 0 : _c.addFeatures(c.features);
349
+ let source = (_a = this.layers[c.layer]) === null || _a === void 0 ? void 0 : _a.getSource();
350
+ if (!!source['getSource'])
351
+ source = source === null || source === void 0 ? void 0 : source.getSource();
352
+ source === null || source === void 0 ? void 0 : source.clear();
353
+ source === null || source === void 0 ? void 0 : source.addFeatures(c.features);
331
354
  });
332
355
  }
333
356
  observeRemoveLayer() {
@@ -359,6 +382,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
359
382
  type: Injectable
360
383
  }], ctorParameters: function () { return [{ type: MapPostboyService }]; } });
361
384
 
385
+ class MapFeatureService {
386
+ constructor(postboy) {
387
+ this.postboy = postboy;
388
+ }
389
+ up() {
390
+ this.observeMapRender();
391
+ this.observeFitToFeatures();
392
+ }
393
+ observeMapRender() {
394
+ this.postboy.subscribe(MapRenderedEvent.ID).subscribe((m) => {
395
+ this.map = m.map;
396
+ });
397
+ }
398
+ observeFitToFeatures() {
399
+ this.postboy.subscribe(FitToFeaturesCommand.ID).subscribe((m) => {
400
+ this.fitToGeometries(m.features.map((f) => f.getGeometry()), m.zoomAfter);
401
+ });
402
+ }
403
+ fitToGeometries(geometries, zoomAfter) {
404
+ if (!(geometries === null || geometries === void 0 ? void 0 : geometries.length) || !this.map)
405
+ return;
406
+ const extent = createEmpty();
407
+ geometries.forEach((g) => extend(extent, g.getExtent()));
408
+ this.map.getView().fit(extent);
409
+ this.map.getView().setZoom(this.map.getView().getZoom() + zoomAfter);
410
+ }
411
+ }
412
+ MapFeatureService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MapFeatureService, deps: [{ token: MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
413
+ MapFeatureService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MapFeatureService });
414
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MapFeatureService, decorators: [{
415
+ type: Injectable
416
+ }], ctorParameters: function () { return [{ type: MapPostboyService }]; } });
417
+
362
418
  class MapClickService {
363
419
  constructor(postboy) {
364
420
  this.postboy = postboy;
@@ -377,7 +433,7 @@ class MapClickService {
377
433
  }
378
434
  onClick(ev) {
379
435
  var _a;
380
- const model = new MapClickEvent(ev.coordinate, {});
436
+ const model = new MapClickEvent(ev.coordinate, {}, {});
381
437
  (_a = this.map) === null || _a === void 0 ? void 0 : _a.forEachFeatureAtPixel(ev.pixel, (f, l) => {
382
438
  this.getFeatureCollectionWithInner([f])
383
439
  .filter((f) => f.getId() != null)
@@ -385,7 +441,10 @@ class MapClickService {
385
441
  let layerName = l.get('name');
386
442
  if (!model.entities[layerName])
387
443
  model.entities[layerName] = [];
388
- model.entities[layerName].push(f.getId());
444
+ if (!model.features[layerName])
445
+ model.features[layerName] = [];
446
+ model.entities[layerName].push(Object.assign({ id: fs.getId() }, fs.get(MapConstants.FeatureInfo)));
447
+ model.features[layerName].push(fs);
389
448
  });
390
449
  });
391
450
  return model;
@@ -406,9 +465,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
406
465
  }], ctorParameters: function () { return [{ type: MapPostboyService }]; } });
407
466
 
408
467
  class MessageRegistratorService extends PostboyAbstractRegistrator {
409
- constructor(service, management, state, interaction) {
468
+ constructor(service, management, state, feature, interaction) {
410
469
  super(service);
411
- this.registerServices([management, state, interaction]);
470
+ this.registerServices([management, state, interaction, feature]);
412
471
  }
413
472
  _up() {
414
473
  this.registerReplay(MapRenderedEvent.ID);
@@ -419,13 +478,14 @@ class MessageRegistratorService extends PostboyAbstractRegistrator {
419
478
  this.registerSubject(RemoveTileCommand.ID);
420
479
  this.registerSubject(MapClickEvent.ID);
421
480
  this.registerSubject(CloseTooltipCommand.ID);
481
+ this.registerSubject(FitToFeaturesCommand.ID);
422
482
  }
423
483
  }
424
- MessageRegistratorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MessageRegistratorService, deps: [{ token: MapPostboyService }, { token: MapManagementService }, { token: MapStateService }, { token: MapClickService }], target: i0.ɵɵFactoryTarget.Injectable });
484
+ MessageRegistratorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MessageRegistratorService, deps: [{ token: MapPostboyService }, { token: MapManagementService }, { token: MapStateService }, { token: MapFeatureService }, { token: MapClickService }], target: i0.ɵɵFactoryTarget.Injectable });
425
485
  MessageRegistratorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MessageRegistratorService });
426
486
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MessageRegistratorService, decorators: [{
427
487
  type: Injectable
428
- }], ctorParameters: function () { return [{ type: MapPostboyService }, { type: MapManagementService }, { type: MapStateService }, { type: MapClickService }]; } });
488
+ }], ctorParameters: function () { return [{ type: MapPostboyService }, { type: MapManagementService }, { type: MapStateService }, { type: MapFeatureService }, { type: MapClickService }]; } });
429
489
 
430
490
  class MapPlateFactory {
431
491
  build(settings) {
@@ -542,10 +602,10 @@ class MapPlateComponent extends DestructibleComponent {
542
602
  }
543
603
  }
544
604
  MapPlateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MapPlateComponent, deps: [{ token: i0.ElementRef }, { token: MapPostboyService }, { token: MapPlateFactory }, { token: MessageRegistratorService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
545
- MapPlateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MapPlateComponent, selector: "lib-map-plate", inputs: { settings: "settings" }, providers: [MessageRegistratorService, MapStateService, MapManagementService, MapClickService], 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"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: OsmTileLayerComponent, selector: "lib-osm-tile-layer", inputs: ["url", "map"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
605
+ MapPlateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MapPlateComponent, selector: "lib-map-plate", inputs: { settings: "settings" }, providers: [MessageRegistratorService, MapStateService, MapManagementService, MapClickService, MapFeatureService], 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"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: OsmTileLayerComponent, selector: "lib-osm-tile-layer", inputs: ["url", "map"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
546
606
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MapPlateComponent, decorators: [{
547
607
  type: Component,
548
- args: [{ selector: 'lib-map-plate', changeDetection: ChangeDetectionStrategy.OnPush, providers: [MessageRegistratorService, MapStateService, MapManagementService, MapClickService], 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"] }]
608
+ args: [{ selector: 'lib-map-plate', changeDetection: ChangeDetectionStrategy.OnPush, providers: [MessageRegistratorService, MapStateService, MapManagementService, MapClickService, MapFeatureService], 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"] }]
549
609
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: MapPostboyService }, { type: MapPlateFactory }, { type: MessageRegistratorService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { settings: [{
550
610
  type: Input
551
611
  }] } });
@@ -960,6 +1020,175 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
960
1020
  type: Input
961
1021
  }] } });
962
1022
 
1023
+ class ClusterLayerSettings {
1024
+ constructor() {
1025
+ this.name = IdGenerator.get();
1026
+ this.zIndex = 1;
1027
+ this.maxZoom = 19;
1028
+ this.minZoom = 0;
1029
+ this.distance = 20;
1030
+ this.bbox = false;
1031
+ }
1032
+ static copy(model) {
1033
+ const result = new ClusterLayerSettings();
1034
+ result.name = model.name;
1035
+ result.maxZoom = model.maxZoom;
1036
+ result.minZoom = model.minZoom;
1037
+ result.zIndex = model.zIndex;
1038
+ result.bbox = model.bbox;
1039
+ result.distance = model.distance;
1040
+ result.style = model.style;
1041
+ return result;
1042
+ }
1043
+ setZIndex(zIndex) {
1044
+ return ClusterLayerSettings.copy(Object.assign(Object.assign({}, this), { zIndex }));
1045
+ }
1046
+ setDistance(distance) {
1047
+ return ClusterLayerSettings.copy(Object.assign(Object.assign({}, this), { distance }));
1048
+ }
1049
+ setName(name) {
1050
+ return ClusterLayerSettings.copy(Object.assign(Object.assign({}, this), { name }));
1051
+ }
1052
+ setMaxZoom(maxZoom) {
1053
+ return ClusterLayerSettings.copy(Object.assign(Object.assign({}, this), { maxZoom }));
1054
+ }
1055
+ setMinZoom(minZoom) {
1056
+ return ClusterLayerSettings.copy(Object.assign(Object.assign({}, this), { minZoom }));
1057
+ }
1058
+ setBbox(bbox) {
1059
+ return ClusterLayerSettings.copy(Object.assign(Object.assign({}, this), { bbox }));
1060
+ }
1061
+ setStyle(style) {
1062
+ return ClusterLayerSettings.copy(Object.assign(Object.assign({}, this), { style }));
1063
+ }
1064
+ isSame(model) {
1065
+ if (this.maxZoom !== model.maxZoom)
1066
+ return false;
1067
+ if (this.minZoom !== model.minZoom)
1068
+ return false;
1069
+ if (this.zIndex !== model.zIndex)
1070
+ return false;
1071
+ if (this.name !== model.name)
1072
+ return false;
1073
+ if (this.distance !== model.distance)
1074
+ return false;
1075
+ if (this.bbox !== model.bbox)
1076
+ return false;
1077
+ if (this.style !== model.style)
1078
+ return false;
1079
+ return true;
1080
+ }
1081
+ }
1082
+
1083
+ class ClusterLayerManager {
1084
+ constructor(settings, layer, postboy) {
1085
+ this.settings = settings;
1086
+ this.layer = layer;
1087
+ this.postboy = postboy;
1088
+ this.observeClick();
1089
+ }
1090
+ observeClick() {
1091
+ this.postboy.subscribe(MapClickEvent.ID).subscribe((m) => {
1092
+ var _a, _b;
1093
+ if (((_b = (_a = m.features[this.settings.name]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 1) {
1094
+ this.postboy.fire(new FitToFeaturesCommand(m.features[this.settings.name], -1));
1095
+ }
1096
+ });
1097
+ }
1098
+ }
1099
+
1100
+ class ClusterLayerFactory {
1101
+ build(settings, postboy) {
1102
+ const source = new Vector({
1103
+ strategy: settings.bbox ? bbox : undefined,
1104
+ });
1105
+ const cluster = new Cluster({
1106
+ distance: settings.distance,
1107
+ source: source,
1108
+ geometryFunction: (feature) => {
1109
+ var _a;
1110
+ const geom = feature.getGeometry();
1111
+ if ((geom === null || geom === void 0 ? void 0 : geom.getType()) == 'Point') {
1112
+ return geom;
1113
+ }
1114
+ else if ((geom === null || geom === void 0 ? void 0 : geom.getType()) == 'Polygon') {
1115
+ return geom === null || geom === void 0 ? void 0 : geom.getInteriorPoint();
1116
+ }
1117
+ else if ((geom === null || geom === void 0 ? void 0 : geom.getType()) == 'MultiPolygon') {
1118
+ return (_a = fromExtent(geom.getExtent())) === null || _a === void 0 ? void 0 : _a.getInteriorPoint();
1119
+ }
1120
+ return undefined;
1121
+ },
1122
+ });
1123
+ const layer = new Vector$1({
1124
+ source: cluster,
1125
+ maxZoom: settings.maxZoom || undefined,
1126
+ minZoom: settings.minZoom || undefined,
1127
+ zIndex: settings.zIndex || 0,
1128
+ });
1129
+ layer.setStyle(this.styleFunc(settings));
1130
+ layer.set('name', settings.name);
1131
+ return new ClusterLayerManager(settings, layer, postboy);
1132
+ }
1133
+ styleFunc(settings) {
1134
+ return (feature) => {
1135
+ const features = feature.get('features');
1136
+ if (!settings.style)
1137
+ return undefined;
1138
+ return settings.style(features.map((f) => (Object.assign({ id: f.getId() }, f.get(MapConstants.FeatureInfo)))));
1139
+ };
1140
+ }
1141
+ }
1142
+ ClusterLayerFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ClusterLayerFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1143
+ ClusterLayerFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ClusterLayerFactory, providedIn: 'root' });
1144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ClusterLayerFactory, decorators: [{
1145
+ type: Injectable,
1146
+ args: [{
1147
+ providedIn: 'root',
1148
+ }]
1149
+ }] });
1150
+
1151
+ class ClusterLayerComponent extends DestructibleComponent {
1152
+ constructor(postboy, factory) {
1153
+ super();
1154
+ this.postboy = postboy;
1155
+ this.factory = factory;
1156
+ this.manager = null;
1157
+ this._settings = new ClusterLayerSettings();
1158
+ this.onDestroy = () => this.removeLayer();
1159
+ }
1160
+ ngOnInit() {
1161
+ this.postboy
1162
+ .subscribe(MapRenderedEvent.ID)
1163
+ .pipe(filter((m) => !!m), first())
1164
+ .subscribe((m) => this.initLayer());
1165
+ }
1166
+ set settings(value) {
1167
+ if (!value || this._settings.isSame(value))
1168
+ return;
1169
+ this._settings = value;
1170
+ this.initLayer();
1171
+ }
1172
+ initLayer() {
1173
+ this.removeLayer();
1174
+ this.manager = this.factory.build(this._settings, this.postboy);
1175
+ this.postboy.fire(new AddLayerCommand(this.manager.layer));
1176
+ }
1177
+ removeLayer() {
1178
+ var _a;
1179
+ if ((_a = this.manager) === null || _a === void 0 ? void 0 : _a.layer)
1180
+ this.postboy.fire(new RemoveLayerCommand(this.manager.layer));
1181
+ }
1182
+ }
1183
+ ClusterLayerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ClusterLayerComponent, deps: [{ token: MapPostboyService }, { token: ClusterLayerFactory }], target: i0.ɵɵFactoryTarget.Component });
1184
+ ClusterLayerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ClusterLayerComponent, selector: "lib-cluster-layer", inputs: { settings: "settings" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ClusterLayerComponent, decorators: [{
1186
+ type: Component,
1187
+ args: [{ selector: 'lib-cluster-layer', template: '', changeDetection: ChangeDetectionStrategy.OnPush }]
1188
+ }], ctorParameters: function () { return [{ type: MapPostboyService }, { type: ClusterLayerFactory }]; }, propDecorators: { settings: [{
1189
+ type: Input
1190
+ }] } });
1191
+
963
1192
  class MapModule {
964
1193
  }
965
1194
  MapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -970,12 +1199,14 @@ MapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.
970
1199
  FeatureLayerComponent,
971
1200
  MarkersComponent,
972
1201
  TooltipComponent,
973
- PolygonsComponent], imports: [CommonModule], exports: [MapPlateComponent,
1202
+ PolygonsComponent,
1203
+ ClusterLayerComponent], imports: [CommonModule], exports: [MapPlateComponent,
974
1204
  FeatureLayerComponent,
975
1205
  MarkersComponent,
976
1206
  TileLayerComponent,
977
1207
  TooltipComponent,
978
- PolygonsComponent] });
1208
+ PolygonsComponent,
1209
+ ClusterLayerComponent] });
979
1210
  MapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MapModule, imports: [CommonModule] });
980
1211
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MapModule, decorators: [{
981
1212
  type: NgModule,
@@ -990,6 +1221,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
990
1221
  MarkersComponent,
991
1222
  TooltipComponent,
992
1223
  PolygonsComponent,
1224
+ ClusterLayerComponent,
993
1225
  ],
994
1226
  exports: [
995
1227
  MapPlateComponent,
@@ -998,6 +1230,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
998
1230
  TileLayerComponent,
999
1231
  TooltipComponent,
1000
1232
  PolygonsComponent,
1233
+ ClusterLayerComponent,
1001
1234
  ],
1002
1235
  }]
1003
1236
  }] });
@@ -1023,6 +1256,10 @@ class MarkerStyleHelper {
1023
1256
  }),
1024
1257
  });
1025
1258
  }
1259
+ static withText(style, text) {
1260
+ style.setText(text);
1261
+ return style;
1262
+ }
1026
1263
  }
1027
1264
 
1028
1265
  class PolygonStyleHelper {
@@ -1039,6 +1276,19 @@ class PolygonStyleHelper {
1039
1276
  }
1040
1277
  }
1041
1278
 
1279
+ class TextStyleHelper {
1280
+ static get(text, font, color) {
1281
+ return new Text({
1282
+ text: text,
1283
+ font: font,
1284
+ textAlign: 'center',
1285
+ fill: new Fill({
1286
+ color: color,
1287
+ }),
1288
+ });
1289
+ }
1290
+ }
1291
+
1042
1292
  /*
1043
1293
  * Public API Surface of maps
1044
1294
  */
@@ -1047,5 +1297,5 @@ class PolygonStyleHelper {
1047
1297
  * Generated bundle index. Do not edit.
1048
1298
  */
1049
1299
 
1050
- export { CallbackMessage, CloseTooltipCommand, FeatureLayerComponent, FeatureLayerSettings, GenericMessage, MapClickEvent, MapLyrs, MapLyrsLabel, MapModule, MapPlateComponent, MapPostboyService, MapRenderedEvent, MapSettings, MarkerModel, MarkerStyleHelper, MarkersComponent, MessageRegistratorService, OsmTileLayerComponent, PolygonModel, PolygonStyleHelper, PolygonsComponent, TileLayerComponent, TileLayerSettings, TooltipComponent, TooltipSettings };
1300
+ export { CallbackMessage, CloseTooltipCommand, ClusterLayerComponent, ClusterLayerSettings, FeatureLayerComponent, FeatureLayerSettings, GenericMessage, MapClickEvent, MapLyrs, MapLyrsLabel, MapModule, MapPlateComponent, MapPostboyService, MapRenderedEvent, MapSettings, MarkerModel, MarkerStyleHelper, MarkersComponent, MessageRegistratorService, OsmTileLayerComponent, PolygonModel, PolygonStyleHelper, PolygonsComponent, TextStyleHelper, TileLayerComponent, TileLayerSettings, TooltipComponent, TooltipSettings };
1051
1301
  //# sourceMappingURL=maps-components-src-map.mjs.map