@igo2/integration 1.12.0 → 1.13.0-alpha.1

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 (160) hide show
  1. package/{esm2015/igo2-integration.js → esm2020/igo2-integration.mjs} +0 -0
  2. package/esm2020/lib/about/about-tool/about-tool.component.mjs +185 -0
  3. package/{esm2015/lib/about/about-tool/index.js → esm2020/lib/about/about-tool/index.mjs} +0 -0
  4. package/{esm2015/lib/about/about.module.js → esm2020/lib/about/about.module.mjs} +9 -11
  5. package/{esm2015/lib/about/index.js → esm2020/lib/about/index.mjs} +0 -0
  6. package/{esm2015/lib/analytics/analytics-listener.service.js → esm2020/lib/analytics/analytics-listener.service.mjs} +0 -0
  7. package/{esm2015/lib/analytics/analytics.module.js → esm2020/lib/analytics/analytics.module.mjs} +2 -2
  8. package/{esm2015/lib/analytics/index.js → esm2020/lib/analytics/index.mjs} +0 -0
  9. package/{esm2015/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.js → esm2020/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs} +3 -7
  10. package/{esm2015/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.js → esm2020/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.mjs} +3 -5
  11. package/{esm2015/lib/catalog/catalog-library-tool/catalog-library-tool.component.js → esm2020/lib/catalog/catalog-library-tool/catalog-library-tool.component.mjs} +3 -7
  12. package/{esm2015/lib/catalog/catalog-library-tool/catalog-library-tool.module.js → esm2020/lib/catalog/catalog-library-tool/catalog-library-tool.module.mjs} +3 -5
  13. package/{esm2015/lib/catalog/catalog.module.js → esm2020/lib/catalog/catalog.module.mjs} +2 -2
  14. package/{esm2015/lib/catalog/catalog.state.js → esm2020/lib/catalog/catalog.state.mjs} +0 -0
  15. package/{esm2015/lib/catalog/index.js → esm2020/lib/catalog/index.mjs} +0 -0
  16. package/{esm2015/lib/context/context-editor-tool/context-editor-tool.component.js → esm2020/lib/context/context-editor-tool/context-editor-tool.component.mjs} +3 -6
  17. package/{esm2015/lib/context/context-manager-tool/context-manager-tool.component.js → esm2020/lib/context/context-manager-tool/context-manager-tool.component.mjs} +3 -6
  18. package/{esm2015/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.js → esm2020/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.mjs} +3 -6
  19. package/{esm2015/lib/context/context-share-tool/context-share-tool.component.js → esm2020/lib/context/context-share-tool/context-share-tool.component.mjs} +3 -6
  20. package/{esm2015/lib/context/context.module.js → esm2020/lib/context/context.module.mjs} +2 -2
  21. package/{esm2015/lib/context/context.state.js → esm2020/lib/context/context.state.mjs} +0 -0
  22. package/{esm2015/lib/context/index.js → esm2020/lib/context/index.mjs} +0 -0
  23. package/{esm2015/lib/directions/directions-tool/directions-tool.component.js → esm2020/lib/directions/directions-tool/directions-tool.component.mjs} +3 -6
  24. package/{esm2015/lib/directions/directions-tool/index.js → esm2020/lib/directions/directions-tool/index.mjs} +0 -0
  25. package/{esm2015/lib/directions/directions.module.js → esm2020/lib/directions/directions.module.mjs} +2 -2
  26. package/esm2020/lib/directions/directions.state.mjs +64 -0
  27. package/{esm2015/lib/directions/index.js → esm2020/lib/directions/index.mjs} +0 -0
  28. package/{esm2015/lib/draw/draw.module.js → esm2020/lib/draw/draw.module.mjs} +2 -2
  29. package/{esm2015/lib/draw/draw.state.js → esm2020/lib/draw/draw.state.mjs} +0 -0
  30. package/{esm2015/lib/draw/drawing-tool/drawing-tool.component.js → esm2020/lib/draw/drawing-tool/drawing-tool.component.mjs} +3 -7
  31. package/{esm2015/lib/draw/index.js → esm2020/lib/draw/index.mjs} +0 -0
  32. package/{esm2015/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.js → esm2020/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.mjs} +0 -0
  33. package/{esm2015/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.js → esm2020/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.mjs} +3 -7
  34. package/{esm2015/lib/filter/active-ogc-filter-tool/index.js → esm2020/lib/filter/active-ogc-filter-tool/index.mjs} +0 -0
  35. package/{esm2015/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.js → esm2020/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.mjs} +0 -0
  36. package/{esm2015/lib/filter/active-time-filter-tool/active-time-filter-tool.component.js → esm2020/lib/filter/active-time-filter-tool/active-time-filter-tool.component.mjs} +3 -7
  37. package/{esm2015/lib/filter/active-time-filter-tool/index.js → esm2020/lib/filter/active-time-filter-tool/index.mjs} +0 -0
  38. package/{esm2015/lib/filter/filter.module.js → esm2020/lib/filter/filter.module.mjs} +2 -2
  39. package/{esm2015/lib/filter/index.js → esm2020/lib/filter/index.mjs} +0 -0
  40. package/{esm2015/lib/filter/ogc-filter-tool/index.js → esm2020/lib/filter/ogc-filter-tool/index.mjs} +0 -0
  41. package/{esm2015/lib/filter/ogc-filter-tool/ogc-filter-tool.component.js → esm2020/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs} +3 -6
  42. package/{esm2015/lib/filter/spatial-filter-tool/index.js → esm2020/lib/filter/spatial-filter-tool/index.mjs} +0 -0
  43. package/esm2020/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +535 -0
  44. package/{esm2015/lib/filter/time-filter-tool/index.js → esm2020/lib/filter/time-filter-tool/index.mjs} +0 -0
  45. package/{esm2015/lib/filter/time-filter-tool/time-filter-tool.component.js → esm2020/lib/filter/time-filter-tool/time-filter-tool.component.mjs} +3 -6
  46. package/esm2020/lib/import-export/import-export-tool/import-export-tool.component.mjs +137 -0
  47. package/{esm2015/lib/import-export/import-export-tool/index.js → esm2020/lib/import-export/import-export-tool/index.mjs} +0 -0
  48. package/{esm2015/lib/import-export/import-export.module.js → esm2020/lib/import-export/import-export.module.mjs} +7 -9
  49. package/{esm2015/lib/import-export/import-export.state.js → esm2020/lib/import-export/import-export.state.mjs} +0 -0
  50. package/{esm2015/lib/import-export/index.js → esm2020/lib/import-export/index.mjs} +0 -0
  51. package/{esm2015/lib/integration.module.js → esm2020/lib/integration.module.mjs} +2 -2
  52. package/{esm2015/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.js → esm2020/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.mjs} +14 -22
  53. package/esm2020/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +89 -0
  54. package/esm2020/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +218 -0
  55. package/{esm2015/lib/map/advanced-map-tool/index.js → esm2020/lib/map/advanced-map-tool/index.mjs} +0 -0
  56. package/{esm2015/lib/map/index.js → esm2020/lib/map/index.mjs} +0 -0
  57. package/{esm2015/lib/map/layer-list-tool.state.js → esm2020/lib/map/layer-list-tool.state.mjs} +0 -0
  58. package/{esm2015/lib/map/map-details-tool/index.js → esm2020/lib/map/map-details-tool/index.mjs} +0 -0
  59. package/esm2020/lib/map/map-details-tool/map-details-tool.component.mjs +256 -0
  60. package/{esm2015/lib/map/map-legend/index.js → esm2020/lib/map/map-legend/index.mjs} +0 -0
  61. package/esm2020/lib/map/map-legend/map-legend-tool.component.mjs +275 -0
  62. package/{esm2015/lib/map/map-proximity-tool/index.js → esm2020/lib/map/map-proximity-tool/index.mjs} +0 -0
  63. package/esm2020/lib/map/map-proximity-tool/map-proximity-tool.component.mjs +206 -0
  64. package/{esm2015/lib/map/map-proximity.state.js → esm2020/lib/map/map-proximity.state.mjs} +10 -11
  65. package/{esm2015/lib/map/map-tool/index.js → esm2020/lib/map/map-tool/index.mjs} +0 -0
  66. package/esm2020/lib/map/map-tool/map-tool.component.mjs +130 -0
  67. package/{esm2015/lib/map/map-tools/index.js → esm2020/lib/map/map-tools/index.mjs} +0 -0
  68. package/esm2020/lib/map/map-tools/map-tools.component.mjs +478 -0
  69. package/esm2020/lib/map/map.module.mjs +141 -0
  70. package/esm2020/lib/map/map.state.mjs +47 -0
  71. package/{esm2015/lib/measure/index.js → esm2020/lib/measure/index.mjs} +0 -0
  72. package/{esm2015/lib/measure/measure.module.js → esm2020/lib/measure/measure.module.mjs} +2 -2
  73. package/{esm2015/lib/measure/measure.state.js → esm2020/lib/measure/measure.state.mjs} +0 -0
  74. package/{esm2015/lib/measure/measurer-tool/measurer-tool.component.js → esm2020/lib/measure/measurer-tool/measurer-tool.component.mjs} +3 -7
  75. package/{esm2015/lib/measure/measurer-tool/measurer-tool.module.js → esm2020/lib/measure/measurer-tool/measurer-tool.module.mjs} +2 -4
  76. package/{esm2015/lib/print/index.js → esm2020/lib/print/index.mjs} +0 -0
  77. package/{esm2015/lib/print/print-tool/index.js → esm2020/lib/print/print-tool/index.mjs} +0 -0
  78. package/{esm2015/lib/print/print-tool/print-tool.component.js → esm2020/lib/print/print-tool/print-tool.component.mjs} +3 -6
  79. package/{esm2015/lib/print/print.module.js → esm2020/lib/print/print.module.mjs} +2 -2
  80. package/{esm2015/lib/search/index.js → esm2020/lib/search/index.mjs} +0 -0
  81. package/{esm2015/lib/search/query.state.js → esm2020/lib/search/query.state.mjs} +0 -0
  82. package/{esm2015/lib/search/search-bar/search-bar-binding.directive.js → esm2020/lib/search/search-bar/search-bar-binding.directive.mjs} +0 -0
  83. package/{esm2015/lib/search/search-bar/search-bar.module.js → esm2020/lib/search/search-bar/search-bar.module.mjs} +2 -2
  84. package/esm2020/lib/search/search-results-tool/search-results-tool.component.mjs +577 -0
  85. package/{esm2015/lib/search/search-results-tool/search-results-tool.module.js → esm2020/lib/search/search-results-tool/search-results-tool.module.mjs} +13 -15
  86. package/{esm2015/lib/search/search.module.js → esm2020/lib/search/search.module.mjs} +2 -2
  87. package/{esm2015/lib/search/search.state.js → esm2020/lib/search/search.state.mjs} +0 -0
  88. package/{esm2015/lib/storage/index.js → esm2020/lib/storage/index.mjs} +0 -0
  89. package/{esm2015/lib/storage/storage.module.js → esm2020/lib/storage/storage.module.mjs} +2 -2
  90. package/{esm2015/lib/storage/storage.state.js → esm2020/lib/storage/storage.state.mjs} +0 -0
  91. package/{esm2015/lib/tool/index.js → esm2020/lib/tool/index.mjs} +0 -0
  92. package/{esm2015/lib/tool/tool.module.js → esm2020/lib/tool/tool.module.mjs} +2 -2
  93. package/{esm2015/lib/tool/tool.state.js → esm2020/lib/tool/tool.state.mjs} +0 -0
  94. package/{esm2015/lib/workspace/index.js → esm2020/lib/workspace/index.mjs} +0 -0
  95. package/esm2020/lib/workspace/shared/edition-actions.service.mjs +156 -0
  96. package/{esm2015/lib/workspace/shared/feature-actions.service.js → esm2020/lib/workspace/shared/feature-actions.service.mjs} +0 -0
  97. package/{esm2015/lib/workspace/shared/index.js → esm2020/lib/workspace/shared/index.mjs} +0 -0
  98. package/esm2020/lib/workspace/shared/wfs-actions.service.mjs +158 -0
  99. package/{esm2015/lib/workspace/shared/workspace.utils.js → esm2020/lib/workspace/shared/workspace.utils.mjs} +0 -0
  100. package/{esm2015/lib/workspace/workspace-button/index.js → esm2020/lib/workspace/workspace-button/index.mjs} +0 -0
  101. package/esm2020/lib/workspace/workspace-button/workspace-button.component.mjs +69 -0
  102. package/{esm2015/lib/workspace/workspace.module.js → esm2020/lib/workspace/workspace.module.mjs} +6 -8
  103. package/esm2020/lib/workspace/workspace.state.mjs +188 -0
  104. package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
  105. package/fesm2015/igo2-integration.mjs +6606 -0
  106. package/fesm2015/igo2-integration.mjs.map +1 -0
  107. package/{fesm2015/igo2-integration.js → fesm2020/igo2-integration.mjs} +336 -565
  108. package/fesm2020/igo2-integration.mjs.map +1 -0
  109. package/{igo2-integration.d.ts → index.d.ts} +0 -0
  110. package/lib/about/about-tool/about-tool.component.d.ts +1 -1
  111. package/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.d.ts +1 -1
  112. package/lib/catalog/catalog-library-tool/catalog-library-tool.component.d.ts +1 -1
  113. package/lib/context/context-editor-tool/context-editor-tool.component.d.ts +1 -1
  114. package/lib/context/context-manager-tool/context-manager-tool.component.d.ts +1 -1
  115. package/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.d.ts +1 -1
  116. package/lib/context/context-share-tool/context-share-tool.component.d.ts +1 -1
  117. package/lib/directions/directions-tool/directions-tool.component.d.ts +1 -1
  118. package/lib/draw/drawing-tool/drawing-tool.component.d.ts +1 -1
  119. package/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.d.ts +1 -1
  120. package/lib/filter/active-time-filter-tool/active-time-filter-tool.component.d.ts +1 -1
  121. package/lib/filter/ogc-filter-tool/ogc-filter-tool.component.d.ts +1 -1
  122. package/lib/filter/spatial-filter-tool/spatial-filter-tool.component.d.ts +3 -1
  123. package/lib/filter/time-filter-tool/time-filter-tool.component.d.ts +1 -1
  124. package/lib/import-export/import-export-tool/import-export-tool.component.d.ts +1 -1
  125. package/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.d.ts +1 -1
  126. package/lib/map/advanced-map-tool/advanced-map-tool.component.d.ts +1 -1
  127. package/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.d.ts +1 -1
  128. package/lib/map/map-details-tool/map-details-tool.component.d.ts +1 -1
  129. package/lib/map/map-legend/map-legend-tool.component.d.ts +1 -1
  130. package/lib/map/map-proximity-tool/map-proximity-tool.component.d.ts +1 -1
  131. package/lib/map/map-tool/map-tool.component.d.ts +1 -1
  132. package/lib/map/map-tools/map-tools.component.d.ts +1 -1
  133. package/lib/map/map.state.d.ts +3 -2
  134. package/lib/measure/measurer-tool/measurer-tool.component.d.ts +1 -1
  135. package/lib/print/print-tool/print-tool.component.d.ts +1 -1
  136. package/lib/search/search-bar/search-bar-binding.directive.d.ts +1 -1
  137. package/lib/search/search-results-tool/search-results-tool.component.d.ts +1 -1
  138. package/lib/workspace/workspace-button/workspace-button.component.d.ts +1 -1
  139. package/package.json +24 -11
  140. package/bundles/igo2-integration.umd.js +0 -7861
  141. package/bundles/igo2-integration.umd.js.map +0 -1
  142. package/esm2015/lib/about/about-tool/about-tool.component.js +0 -190
  143. package/esm2015/lib/directions/directions.state.js +0 -66
  144. package/esm2015/lib/filter/spatial-filter-tool/spatial-filter-tool.component.js +0 -544
  145. package/esm2015/lib/import-export/import-export-tool/import-export-tool.component.js +0 -145
  146. package/esm2015/lib/map/advanced-map-tool/advanced-map-tool.component.js +0 -99
  147. package/esm2015/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.js +0 -234
  148. package/esm2015/lib/map/map-details-tool/map-details-tool.component.js +0 -274
  149. package/esm2015/lib/map/map-legend/map-legend-tool.component.js +0 -289
  150. package/esm2015/lib/map/map-proximity-tool/map-proximity-tool.component.js +0 -221
  151. package/esm2015/lib/map/map-tool/map-tool.component.js +0 -142
  152. package/esm2015/lib/map/map-tools/map-tools.component.js +0 -496
  153. package/esm2015/lib/map/map.module.js +0 -143
  154. package/esm2015/lib/map/map.state.js +0 -46
  155. package/esm2015/lib/search/search-results-tool/search-results-tool.component.js +0 -598
  156. package/esm2015/lib/workspace/shared/edition-actions.service.js +0 -157
  157. package/esm2015/lib/workspace/shared/wfs-actions.service.js +0 -159
  158. package/esm2015/lib/workspace/workspace-button/workspace-button.component.js +0 -74
  159. package/esm2015/lib/workspace/workspace.state.js +0 -190
  160. package/fesm2015/igo2-integration.js.map +0 -1
@@ -0,0 +1,206 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, ViewChild } from '@angular/core';
3
+ import { ToolComponent } from '@igo2/common';
4
+ import { NumberUtils, Clipboard } from '@igo2/utils';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../map.state";
7
+ import * as i2 from "../map-proximity.state";
8
+ import * as i3 from "@igo2/core";
9
+ import * as i4 from "@angular/forms";
10
+ import * as i5 from "@angular/material/form-field";
11
+ import * as i6 from "@angular/material/input";
12
+ import * as i7 from "@angular/common";
13
+ import * as i8 from "@angular/material/icon";
14
+ import * as i9 from "@angular/material/radio";
15
+ import * as i10 from "@angular/material/button";
16
+ import * as i11 from "@igo2/common";
17
+ import * as i12 from "@ngx-translate/core";
18
+ const _c0 = ["table"];
19
+ function MapProximityToolComponent_mat_form_field_3_Template(rf, ctx) { if (rf & 1) {
20
+ i0.ɵɵelementStart(0, "mat-form-field", 14);
21
+ i0.ɵɵelement(1, "textarea", 15, 16);
22
+ i0.ɵɵpipe(3, "translate");
23
+ i0.ɵɵelementEnd();
24
+ } if (rf & 2) {
25
+ const coord_r4 = ctx.ngIf;
26
+ i0.ɵɵadvance(1);
27
+ i0.ɵɵproperty("placeholder", i0.ɵɵpipeBind1(3, 2, "igo.integration.map-proximity-tool.lon"))("value", coord_r4[0]);
28
+ } }
29
+ function MapProximityToolComponent_mat_form_field_5_Template(rf, ctx) { if (rf & 1) {
30
+ i0.ɵɵelementStart(0, "mat-form-field", 17);
31
+ i0.ɵɵelement(1, "textarea", 15, 16);
32
+ i0.ɵɵpipe(3, "translate");
33
+ i0.ɵɵelementEnd();
34
+ } if (rf & 2) {
35
+ const coord2_r6 = ctx.ngIf;
36
+ i0.ɵɵadvance(1);
37
+ i0.ɵɵproperty("placeholder", i0.ɵɵpipeBind1(3, 2, "igo.integration.map-proximity-tool.lat"))("value", coord2_r6[1]);
38
+ } }
39
+ function MapProximityToolComponent_button_7_Template(rf, ctx) { if (rf & 1) {
40
+ const _r9 = i0.ɵɵgetCurrentView();
41
+ i0.ɵɵelementStart(0, "button", 18);
42
+ i0.ɵɵlistener("click", function MapProximityToolComponent_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r8 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r8.copyTextToClipboard()); });
43
+ i0.ɵɵelement(1, "mat-icon", 19);
44
+ i0.ɵɵelementEnd();
45
+ } }
46
+ let MapProximityToolComponent = class MapProximityToolComponent {
47
+ constructor(mapState, mapProximityState, languageService, messageService) {
48
+ this.mapState = mapState;
49
+ this.mapProximityState = mapProximityState;
50
+ this.languageService = languageService;
51
+ this.messageService = messageService;
52
+ this.subs$$ = [];
53
+ /**
54
+ * Table template
55
+ * @internal
56
+ */
57
+ this.tableTemplate = {
58
+ selection: true,
59
+ selectMany: false,
60
+ selectionCheckbox: false,
61
+ sort: true,
62
+ columns: [
63
+ {
64
+ name: 'element',
65
+ title: this.languageService.translate.instant('igo.integration.map-proximity-tool.feature'),
66
+ valueAccessor: (localFeature) => {
67
+ return localFeature.properties.element;
68
+ }
69
+ },
70
+ {
71
+ name: 'distance',
72
+ title: this.languageService.translate.instant('igo.integration.map-proximity-tool.distance'),
73
+ valueAccessor: (localFeature) => {
74
+ return `${NumberUtils.roundToNDecimal(localFeature.properties.distance, 1)}m`;
75
+ }
76
+ }
77
+ ]
78
+ };
79
+ }
80
+ get maxDistance() {
81
+ return this.mapProximityState.proximityRadiusValue$.value;
82
+ }
83
+ set maxDistance(value) {
84
+ this.mapProximityState.proximityRadiusValue$.next(value);
85
+ }
86
+ get map() {
87
+ return this.mapState.map;
88
+ }
89
+ ngOnInit() {
90
+ this.mapProximityState.enabled$.next(true);
91
+ this.userDefinedFollowPosition = this.map.geolocationController.followPosition === true;
92
+ this.userDefinedMapCenter = this.map.mapCenter$.value === true;
93
+ this.subs$$.push(this.mapProximityState.proximitylocationType$.subscribe(v => {
94
+ this.map.mapCenter$.next(v !== 'geolocation');
95
+ if (v === 'geolocation') {
96
+ this.map.geolocationController.followPosition = true;
97
+ }
98
+ else {
99
+ this.map.geolocationController.followPosition = false;
100
+ }
101
+ }));
102
+ }
103
+ ngOnDestroy() {
104
+ this.mapProximityState.enabled$.next(false);
105
+ this.map.mapCenter$.next(this.userDefinedMapCenter);
106
+ this.subs$$.map(s => s.unsubscribe());
107
+ this.map.geolocationController.followPosition = this.userDefinedFollowPosition;
108
+ }
109
+ onLocationTypeChange(e) {
110
+ this.mapProximityState.proximitylocationType$.next(e.value);
111
+ }
112
+ /**
113
+ * Copy the coordinates to a clipboard
114
+ */
115
+ copyTextToClipboard() {
116
+ const successful = Clipboard.copy(this.mapProximityState.currentPositionCoordinate$?.value.toString());
117
+ if (successful) {
118
+ const translate = this.languageService.translate;
119
+ const title = translate.instant('igo.integration.map-proximity-tool.copyTitle');
120
+ const msg = translate.instant('igo.integration.map-proximity-tool.copyMsg');
121
+ this.messageService.success(msg, title);
122
+ }
123
+ }
124
+ };
125
+ MapProximityToolComponent.ɵfac = function MapProximityToolComponent_Factory(t) { return new (t || MapProximityToolComponent)(i0.ɵɵdirectiveInject(i1.MapState), i0.ɵɵdirectiveInject(i2.MapProximityState), i0.ɵɵdirectiveInject(i3.LanguageService), i0.ɵɵdirectiveInject(i3.MessageService)); };
126
+ MapProximityToolComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MapProximityToolComponent, selectors: [["igo-map-proximity-tool"]], viewQuery: function MapProximityToolComponent_Query(rf, ctx) { if (rf & 1) {
127
+ i0.ɵɵviewQuery(_c0, 7);
128
+ } if (rf & 2) {
129
+ let _t;
130
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.table = _t.first);
131
+ } }, decls: 31, vars: 35, consts: [[1, "table-compact", 3, "store", "template"], ["table", ""], ["class", "coordinates", 4, "ngIf"], ["class", "coordinates2", 4, "ngIf"], ["mat-icon-button", "", 3, "click", 4, "ngIf"], [1, "title-container"], [1, "title", "mat-typography"], [1, "igo-input-container", "mat-typography"], [3, "change"], ["value", "geolocation", 3, "checked"], ["value", "mapCenter", 3, "checked"], [1, "radius-unit"], ["appearance", "outline", "floatLabel", "always", 1, "measure-field"], ["type", "number", "pattern", "[0-9]*", "matInput", "", 3, "ngModel", "placeholder", "ngModelChange"], [1, "coordinates"], ["matInput", "", "readonly", "", "rows", "1", 3, "placeholder", "value"], ["textArea", ""], [1, "coordinates2"], ["mat-icon-button", "", 3, "click"], ["svgIcon", "content-copy"]], template: function MapProximityToolComponent_Template(rf, ctx) { if (rf & 1) {
132
+ i0.ɵɵelement(0, "igo-entity-table", 0, 1)(2, "br");
133
+ i0.ɵɵtemplate(3, MapProximityToolComponent_mat_form_field_3_Template, 4, 4, "mat-form-field", 2);
134
+ i0.ɵɵpipe(4, "async");
135
+ i0.ɵɵtemplate(5, MapProximityToolComponent_mat_form_field_5_Template, 4, 4, "mat-form-field", 3);
136
+ i0.ɵɵpipe(6, "async");
137
+ i0.ɵɵtemplate(7, MapProximityToolComponent_button_7_Template, 2, 0, "button", 4);
138
+ i0.ɵɵpipe(8, "async");
139
+ i0.ɵɵpipe(9, "async");
140
+ i0.ɵɵelementStart(10, "div", 5)(11, "mat-label", 6);
141
+ i0.ɵɵtext(12);
142
+ i0.ɵɵpipe(13, "translate");
143
+ i0.ɵɵelementEnd()();
144
+ i0.ɵɵelementStart(14, "div", 7)(15, "mat-radio-group", 8);
145
+ i0.ɵɵlistener("change", function MapProximityToolComponent_Template_mat_radio_group_change_15_listener($event) { return ctx.onLocationTypeChange($event); });
146
+ i0.ɵɵelementStart(16, "mat-radio-button", 9);
147
+ i0.ɵɵpipe(17, "async");
148
+ i0.ɵɵtext(18);
149
+ i0.ɵɵpipe(19, "translate");
150
+ i0.ɵɵelementEnd();
151
+ i0.ɵɵelementStart(20, "mat-radio-button", 10);
152
+ i0.ɵɵpipe(21, "async");
153
+ i0.ɵɵtext(22);
154
+ i0.ɵɵpipe(23, "translate");
155
+ i0.ɵɵelementEnd()()();
156
+ i0.ɵɵelementStart(24, "div", 11)(25, "mat-form-field", 12)(26, "mat-label");
157
+ i0.ɵɵtext(27);
158
+ i0.ɵɵpipe(28, "translate");
159
+ i0.ɵɵelementEnd();
160
+ i0.ɵɵelementStart(29, "input", 13);
161
+ i0.ɵɵlistener("ngModelChange", function MapProximityToolComponent_Template_input_ngModelChange_29_listener($event) { return ctx.maxDistance = $event; });
162
+ i0.ɵɵpipe(30, "translate");
163
+ i0.ɵɵelementEnd()()();
164
+ } if (rf & 2) {
165
+ i0.ɵɵproperty("store", ctx.mapProximityState.proximityFeatureStore)("template", ctx.tableTemplate);
166
+ i0.ɵɵadvance(3);
167
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(4, 13, ctx.mapProximityState.currentPositionCoordinate$));
168
+ i0.ɵɵadvance(2);
169
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(6, 15, ctx.mapProximityState.currentPositionCoordinate$));
170
+ i0.ɵɵadvance(2);
171
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(8, 17, ctx.mapProximityState.currentPositionCoordinate$) && i0.ɵɵpipeBind1(9, 19, ctx.mapProximityState.currentPositionCoordinate$).length);
172
+ i0.ɵɵadvance(5);
173
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(13, 21, "igo.integration.map-proximity-tool.method"));
174
+ i0.ɵɵadvance(4);
175
+ i0.ɵɵproperty("checked", i0.ɵɵpipeBind1(17, 23, ctx.mapProximityState.proximitylocationType$) === "geolocation");
176
+ i0.ɵɵadvance(2);
177
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(19, 25, "igo.integration.map-proximity-tool.geolocation"));
178
+ i0.ɵɵadvance(2);
179
+ i0.ɵɵproperty("checked", i0.ɵɵpipeBind1(21, 27, ctx.mapProximityState.proximitylocationType$) === "mapCenter");
180
+ i0.ɵɵadvance(2);
181
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(23, 29, "igo.integration.map-proximity-tool.mapCenter"));
182
+ i0.ɵɵadvance(5);
183
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(28, 31, "igo.integration.map-proximity-tool.radiusM"));
184
+ i0.ɵɵadvance(2);
185
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(30, 33, "igo.integration.map-proximity-tool.radiusM"));
186
+ i0.ɵɵproperty("ngModel", ctx.maxDistance);
187
+ } }, dependencies: [i4.DefaultValueAccessor, i4.NumberValueAccessor, i4.NgControlStatus, i4.PatternValidator, i4.NgModel, i5.MatFormField, i5.MatLabel, i6.MatInput, i7.NgIf, i8.MatIcon, i9.MatRadioGroup, i9.MatRadioButton, i10.MatButton, i11.EntityTableComponent, i7.AsyncPipe, i12.TranslatePipe], styles: [".table-compact[_ngcontent-%COMP%]{height:auto}.table-compact[_ngcontent-%COMP%] .mat-header-cell.mat-column-selectionCheckbox{width:52px}textarea[_ngcontent-%COMP%]{resize:none}mat-form-field[_ngcontent-%COMP%]{padding:10px 15px}mat-form-field.coordinates[_ngcontent-%COMP%]{width:110px}mat-form-field.coordinates2[_ngcontent-%COMP%]{width:100px;padding:0 10px 0 3px}mat-form-field.igo-input-container[_ngcontent-%COMP%]{width:60%;padding:0 15px}.radius-unit[_ngcontent-%COMP%]{display:flex;width:90%;margin-left:2px;padding:5px}.radius-field[_ngcontent-%COMP%]{display:flex;flex-flow:column nowrap;width:60%}.title-container[_ngcontent-%COMP%]{padding:10px}.title[_ngcontent-%COMP%]{margin-left:5px;font-size:medium;font-size:initial}.mat-radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding-top:10px}.mat-radio-button[_ngcontent-%COMP%]{display:inline-flex;position:relative;margin-left:16px;margin-top:10px}"] });
188
+ MapProximityToolComponent = __decorate([
189
+ ToolComponent({
190
+ name: 'map-proximity',
191
+ title: 'igo.integration.tools.closestFeature',
192
+ icon: 'radius'
193
+ })
194
+ /**
195
+ * Tool to handle the advanced map tools
196
+ */
197
+ ], MapProximityToolComponent);
198
+ export { MapProximityToolComponent };
199
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MapProximityToolComponent, [{
200
+ type: Component,
201
+ args: [{ selector: 'igo-map-proximity-tool', template: "<igo-entity-table #table class=\"table-compact\" [store]=\"mapProximityState.proximityFeatureStore\" [template]=\"tableTemplate\"></igo-entity-table>\r\n<br>\r\n<mat-form-field *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord\" class=\"coordinates\">\r\n <textarea #textArea matInput readonly rows=\"1\"\r\n [placeholder]=\"'igo.integration.map-proximity-tool.lon' | translate\"\r\n [value]=\"coord[0]\"></textarea>\r\n</mat-form-field>\r\n<mat-form-field *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord2\" class=\"coordinates2\">\r\n <textarea #textArea matInput readonly rows=\"1\"\r\n [placeholder]=\"'igo.integration.map-proximity-tool.lat' | translate\"\r\n [value]=\"coord2[1]\"></textarea>\r\n</mat-form-field>\r\n\r\n<button *ngIf=\"(mapProximityState.currentPositionCoordinate$ | async) && (mapProximityState.currentPositionCoordinate$ | async).length\" mat-icon-button\r\n (click)=\"copyTextToClipboard()\">\r\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\r\n</button>\r\n<div class=\"title-container\">\r\n <mat-label class=\"title mat-typography\">{{'igo.integration.map-proximity-tool.method' | translate}}</mat-label>\r\n</div>\r\n<div class=\"igo-input-container mat-typography\">\r\n <mat-radio-group (change)=\"onLocationTypeChange($event)\">\r\n <mat-radio-button [checked]=\"(mapProximityState.proximitylocationType$|async)==='geolocation'\" value=\"geolocation\">{{'igo.integration.map-proximity-tool.geolocation' | translate}}</mat-radio-button>\r\n <mat-radio-button [checked]=\"(mapProximityState.proximitylocationType$|async)==='mapCenter'\" value=\"mapCenter\">{{'igo.integration.map-proximity-tool.mapCenter' | translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n</div>\r\n\r\n<div class=\"radius-unit\"> \r\n \r\n <mat-form-field appearance=\"outline\" class=\"measure-field\" floatLabel=\"always\">\r\n <mat-label>{{'igo.integration.map-proximity-tool.radiusM' | translate}}</mat-label>\r\n <input type=\"number\" pattern=\"[0-9]*\" [(ngModel)]=\"maxDistance\" matInput placeholder=\"{{'igo.integration.map-proximity-tool.radiusM' | translate}}\">\r\n </mat-form-field>\r\n\r\n \r\n</div>", styles: [".table-compact{height:auto}.table-compact ::ng-deep .mat-header-cell.mat-column-selectionCheckbox{width:52px}textarea{resize:none}mat-form-field{padding:10px 15px}mat-form-field.coordinates{width:110px}mat-form-field.coordinates2{width:100px;padding:0 10px 0 3px}mat-form-field.igo-input-container{width:60%;padding:0 15px}.radius-unit{display:flex;width:90%;margin-left:2px;padding:5px}.radius-field{display:flex;flex-flow:column nowrap;width:60%}.title-container{padding:10px}.title{margin-left:5px;font-size:medium;font-size:initial}.mat-radio-group{display:flex;flex-direction:column;padding-top:10px}.mat-radio-button{display:inline-flex;position:relative;margin-left:16px;margin-top:10px}\n"] }]
202
+ }], function () { return [{ type: i1.MapState }, { type: i2.MapProximityState }, { type: i3.LanguageService }, { type: i3.MessageService }]; }, { table: [{
203
+ type: ViewChild,
204
+ args: ['table', { static: true }]
205
+ }] }); })();
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHktdG9vbC9tYXAtcHJveGltaXR5LXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXByb3hpbWl0eS10b29sL21hcC1wcm94aW1pdHktdG9vbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFBNkMsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBR3hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0lDSHJELDBDQUEwRztJQUN4RyxtQ0FFZ0M7O0lBQ2xDLGlCQUFpQjs7O0lBRmIsZUFBb0U7SUFBcEUsNEZBQW9FLHNCQUFBOzs7SUFHeEUsMENBQTRHO0lBQzFHLG1DQUVpQzs7SUFDbkMsaUJBQWlCOzs7SUFGYixlQUFvRTtJQUFwRSw0RkFBb0UsdUJBQUE7Ozs7SUFJeEUsa0NBQ2tDO0lBQWhDLHlLQUFTLGVBQUEsNEJBQXFCLENBQUEsSUFBQztJQUMvQiwrQkFBNEM7SUFDOUMsaUJBQVM7O0lEUUkseUJBQXlCLFNBQXpCLHlCQUF5QjtJQTRDcEMsWUFDUyxRQUFrQixFQUNsQixpQkFBb0MsRUFDbkMsZUFBZ0MsRUFDaEMsY0FBOEI7UUFIL0IsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ25DLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUE5Q2hDLFdB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O1FBQTNELDhGQUEyRDtRQU1uRSxlQUE2SDtRQUE3SCxnTEFBNkg7UUFLNUYsZUFBMkQ7UUFBM0QseUZBQTJEO1FBSS9FLGVBQTRFO1FBQTVFLGdIQUE0RTtRQUFxQixlQUFnRTtRQUFoRSw4RkFBZ0U7UUFDakssZUFBMEU7UUFBMUUsOEdBQTBFO1FBQW1CLGVBQThEO1FBQTlELDRGQUE4RDtRQU9sSyxlQUE0RDtRQUE1RCwwRkFBNEQ7UUFDRSxlQUEwRTtRQUExRSw2R0FBMEU7UUFBN0cseUNBQXlCOztBRFB0RCx5QkFBeUI7SUFmckMsYUFBYSxDQUFDO1FBQ2IsSUFBSSxFQUFFLGVBQWU7UUFDckIsS0FBSyxFQUFFLHNDQUFzQztRQUM3QyxJQUFJLEVBQUUsUUFBUTtLQUNmLENBQUM7SUFFRjs7T0FFRztHQU9VLHlCQUF5QixDQTRGckM7U0E1RlkseUJBQXlCO3VGQUF6Qix5QkFBeUI7Y0FOckMsU0FBUzsyQkFDRSx3QkFBd0I7c0pBUUksS0FBSztrQkFBMUMsU0FBUzttQkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFJhZGlvQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xyXG5pbXBvcnQgeyBFbnRpdHlUYWJsZUNvbXBvbmVudCwgRW50aXR5VGFibGVUZW1wbGF0ZSwgVG9vbENvbXBvbmVudCB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IHsgRmVhdHVyZSwgSWdvTWFwIH0gZnJvbSAnQGlnbzIvZ2VvJztcclxuaW1wb3J0IHsgTnVtYmVyVXRpbHMsIENsaXBib2FyZCB9IGZyb20gJ0BpZ28yL3V0aWxzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE1hcFByb3hpbWl0eVN0YXRlIH0gZnJvbSAnLi4vbWFwLXByb3hpbWl0eS5zdGF0ZSc7XHJcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi4vbWFwLnN0YXRlJztcclxuQFRvb2xDb21wb25lbnQoe1xyXG4gIG5hbWU6ICdtYXAtcHJveGltaXR5JyxcclxuICB0aXRsZTogJ2lnby5pbnRlZ3JhdGlvbi50b29scy5jbG9zZXN0RmVhdHVyZScsXHJcbiAgaWNvbjogJ3JhZGl1cydcclxufSlcclxuXHJcbi8qKlxyXG4gKiBUb29sIHRvIGhhbmRsZSB0aGUgYWR2YW5jZWQgbWFwIHRvb2xzXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1tYXAtcHJveGltaXR5LXRvb2wnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXAtcHJveGltaXR5LXRvb2wuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21hcC1wcm94aW1pdHktdG9vbC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgTWFwUHJveGltaXR5VG9vbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgcHJpdmF0ZSBzdWJzJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgQFZpZXdDaGlsZCgndGFibGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJsZTogRW50aXR5VGFibGVDb21wb25lbnQ7XHJcblxyXG4gIGdldCBtYXhEaXN0YW5jZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm1hcFByb3hpbWl0eVN0YXRlLnByb3hpbWl0eVJhZGl1c1ZhbHVlJC52YWx1ZTtcclxuICB9XHJcbiAgc2V0IG1heERpc3RhbmNlKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMubWFwUHJveGltaXR5U3RhdGUucHJveGltaXR5UmFkaXVzVmFsdWUkLm5leHQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xyXG4gICAgcmV0dXJuIHRoaXMubWFwU3RhdGUubWFwO1xyXG4gIH1cclxuICBwdWJsaWMgdXNlckRlZmluZWRNYXBDZW50ZXI6IGJvb2xlYW47XHJcbiAgcHVibGljIHVzZXJEZWZpbmVkRm9sbG93UG9zaXRpb246IGJvb2xlYW47XHJcbiAgLyoqXHJcbiAgICogVGFibGUgdGVtcGxhdGVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwdWJsaWMgdGFibGVUZW1wbGF0ZTogRW50aXR5VGFibGVUZW1wbGF0ZSA9IHtcclxuICAgIHNlbGVjdGlvbjogdHJ1ZSxcclxuICAgIHNlbGVjdE1hbnk6IGZhbHNlLFxyXG4gICAgc2VsZWN0aW9uQ2hlY2tib3g6IGZhbHNlLFxyXG4gICAgc29ydDogdHJ1ZSxcclxuICAgIGNvbHVtbnM6IFtcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdlbGVtZW50JyxcclxuICAgICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wuZmVhdHVyZScpLFxyXG4gICAgICAgIHZhbHVlQWNjZXNzb3I6IChsb2NhbEZlYXR1cmU6IEZlYXR1cmUpID0+IHtcclxuICAgICAgICAgIHJldHVybiBsb2NhbEZlYXR1cmUucHJvcGVydGllcy5lbGVtZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdkaXN0YW5jZScsXHJcbiAgICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLmRpc3RhbmNlJyksXHJcbiAgICAgICAgdmFsdWVBY2Nlc3NvcjogKGxvY2FsRmVhdHVyZTogRmVhdHVyZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGAke051bWJlclV0aWxzLnJvdW5kVG9ORGVjaW1hbChsb2NhbEZlYXR1cmUucHJvcGVydGllcy5kaXN0YW5jZSwgMSl9bWA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgbWFwU3RhdGU6IE1hcFN0YXRlLFxyXG4gICAgcHVibGljIG1hcFByb3hpbWl0eVN0YXRlOiBNYXBQcm94aW1pdHlTdGF0ZSxcclxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1hcFByb3hpbWl0eVN0YXRlLmVuYWJsZWQkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLnVzZXJEZWZpbmVkRm9sbG93UG9zaXRpb24gPSB0aGlzLm1hcC5nZW9sb2NhdGlvbkNvbnRyb2xsZXIuZm9sbG93UG9zaXRpb24gPT09IHRydWU7XHJcbiAgICB0aGlzLnVzZXJEZWZpbmVkTWFwQ2VudGVyID0gdGhpcy5tYXAubWFwQ2VudGVyJC52YWx1ZSA9PT0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnN1YnMkJC5wdXNoKHRoaXMubWFwUHJveGltaXR5U3RhdGUucHJveGltaXR5bG9jYXRpb25UeXBlJC5zdWJzY3JpYmUodiA9PiB7XHJcbiAgICAgIHRoaXMubWFwLm1hcENlbnRlciQubmV4dCh2ICE9PSAnZ2VvbG9jYXRpb24nKTtcclxuICAgICAgaWYgKHYgPT09ICdnZW9sb2NhdGlvbicpIHtcclxuICAgICAgICB0aGlzLm1hcC5nZW9sb2NhdGlvbkNvbnRyb2xsZXIuZm9sbG93UG9zaXRpb24gPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlci5mb2xsb3dQb3NpdGlvbiA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubWFwUHJveGltaXR5U3RhdGUuZW5hYmxlZCQubmV4dChmYWxzZSk7XHJcbiAgICB0aGlzLm1hcC5tYXBDZW50ZXIkLm5leHQodGhpcy51c2VyRGVmaW5lZE1hcENlbnRlcik7XHJcbiAgICB0aGlzLnN1YnMkJC5tYXAocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLmZvbGxvd1Bvc2l0aW9uID0gdGhpcy51c2VyRGVmaW5lZEZvbGxvd1Bvc2l0aW9uO1xyXG4gIH1cclxuXHJcbiAgb25Mb2NhdGlvblR5cGVDaGFuZ2UoZTogTWF0UmFkaW9DaGFuZ2UpIHtcclxuICAgIHRoaXMubWFwUHJveGltaXR5U3RhdGUucHJveGltaXR5bG9jYXRpb25UeXBlJC5uZXh0KGUudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29weSB0aGUgY29vcmRpbmF0ZXMgdG8gYSBjbGlwYm9hcmRcclxuICAgKi9cclxuICBjb3B5VGV4dFRvQ2xpcGJvYXJkKCk6IHZvaWQge1xyXG5cclxuICAgIGNvbnN0IHN1Y2Nlc3NmdWwgPSBDbGlwYm9hcmQuY29weSh0aGlzLm1hcFByb3hpbWl0eVN0YXRlLmN1cnJlbnRQb3NpdGlvbkNvb3JkaW5hdGUkPy52YWx1ZS50b1N0cmluZygpKTtcclxuICAgIGlmIChzdWNjZXNzZnVsKSB7XHJcbiAgICAgIGNvbnN0IHRyYW5zbGF0ZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZTtcclxuICAgICAgY29uc3QgdGl0bGUgPSB0cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5jb3B5VGl0bGUnXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IG1zZyA9IHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLmNvcHlNc2cnKTtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKG1zZywgdGl0bGUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8aWdvLWVudGl0eS10YWJsZSAjdGFibGUgY2xhc3M9XCJ0YWJsZS1jb21wYWN0XCIgW3N0b3JlXT1cIm1hcFByb3hpbWl0eVN0YXRlLnByb3hpbWl0eUZlYXR1cmVTdG9yZVwiIFt0ZW1wbGF0ZV09XCJ0YWJsZVRlbXBsYXRlXCI+PC9pZ28tZW50aXR5LXRhYmxlPlxyXG48YnI+XHJcbjxtYXQtZm9ybS1maWVsZCAqbmdJZj1cIm1hcFByb3hpbWl0eVN0YXRlLmN1cnJlbnRQb3NpdGlvbkNvb3JkaW5hdGUkIHwgYXN5bmMgYXMgY29vcmRcIiBjbGFzcz1cImNvb3JkaW5hdGVzXCI+XHJcbiAgPHRleHRhcmVhICN0ZXh0QXJlYSBtYXRJbnB1dCByZWFkb25seSByb3dzPVwiMVwiXHJcbiAgICBbcGxhY2Vob2xkZXJdPVwiJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wubG9uJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICBbdmFsdWVdPVwiY29vcmRbMF1cIj48L3RleHRhcmVhPlxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG48bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJtYXBQcm94aW1pdHlTdGF0ZS5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJCB8IGFzeW5jIGFzIGNvb3JkMlwiIGNsYXNzPVwiY29vcmRpbmF0ZXMyXCI+XHJcbiAgPHRleHRhcmVhICN0ZXh0QXJlYSBtYXRJbnB1dCByZWFkb25seSByb3dzPVwiMVwiXHJcbiAgICBbcGxhY2Vob2xkZXJdPVwiJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wubGF0JyB8IHRyYW5zbGF0ZVwiXHJcbiAgICBbdmFsdWVdPVwiY29vcmQyWzFdXCI+PC90ZXh0YXJlYT5cclxuPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbjxidXR0b24gKm5nSWY9XCIobWFwUHJveGltaXR5U3RhdGUuY3VycmVudFBvc2l0aW9uQ29vcmRpbmF0ZSQgfCBhc3luYykgJiYgKG1hcFByb3hpbWl0eVN0YXRlLmN1cnJlbnRQb3NpdGlvbkNvb3JkaW5hdGUkIHwgYXN5bmMpLmxlbmd0aFwiIG1hdC1pY29uLWJ1dHRvblxyXG4gIChjbGljayk9XCJjb3B5VGV4dFRvQ2xpcGJvYXJkKClcIj5cclxuICA8bWF0LWljb24gc3ZnSWNvbj1cImNvbnRlbnQtY29weVwiPjwvbWF0LWljb24+XHJcbjwvYnV0dG9uPlxyXG48ZGl2IGNsYXNzPVwidGl0bGUtY29udGFpbmVyXCI+XHJcbiAgPG1hdC1sYWJlbCBjbGFzcz1cInRpdGxlIG1hdC10eXBvZ3JhcGh5XCI+e3snaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5tZXRob2QnIHwgdHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJpZ28taW5wdXQtY29udGFpbmVyIG1hdC10eXBvZ3JhcGh5XCI+XHJcbiAgPG1hdC1yYWRpby1ncm91cCAoY2hhbmdlKT1cIm9uTG9jYXRpb25UeXBlQ2hhbmdlKCRldmVudClcIj5cclxuICAgIDxtYXQtcmFkaW8tYnV0dG9uIFtjaGVja2VkXT1cIihtYXBQcm94aW1pdHlTdGF0ZS5wcm94aW1pdHlsb2NhdGlvblR5cGUkfGFzeW5jKT09PSdnZW9sb2NhdGlvbidcIiB2YWx1ZT1cImdlb2xvY2F0aW9uXCI+e3snaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5nZW9sb2NhdGlvbicgfCB0cmFuc2xhdGV9fTwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgIDxtYXQtcmFkaW8tYnV0dG9uIFtjaGVja2VkXT1cIihtYXBQcm94aW1pdHlTdGF0ZS5wcm94aW1pdHlsb2NhdGlvblR5cGUkfGFzeW5jKT09PSdtYXBDZW50ZXInXCIgdmFsdWU9XCJtYXBDZW50ZXJcIj57eydpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLm1hcENlbnRlcicgfCB0cmFuc2xhdGV9fTwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICA8L21hdC1yYWRpby1ncm91cD5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwicmFkaXVzLXVuaXRcIj4gXHJcbiAgXHJcbiAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJtZWFzdXJlLWZpZWxkXCIgZmxvYXRMYWJlbD1cImFsd2F5c1wiPlxyXG4gICAgPG1hdC1sYWJlbD57eydpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLnJhZGl1c00nIHwgdHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgcGF0dGVybj1cIlswLTldKlwiIFsobmdNb2RlbCldPVwibWF4RGlzdGFuY2VcIiBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cInt7J2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wucmFkaXVzTScgfCB0cmFuc2xhdGV9fVwiPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgXHJcbjwvZGl2PiJdfQ==
@@ -115,23 +115,22 @@ export class MapProximityState {
115
115
  type: FEATURE,
116
116
  geometry,
117
117
  projection: projection.getCode(),
118
- properties: Object.assign(Object.assign({}, feature.properties), {
119
- id: featureId,
120
- element: title,
121
- distance,
122
- coordFromCalculatedDistance,
123
- layerSrcId: layer.id,
124
- layerSrcTitle: layer.title
125
- }),
118
+ properties: { ...feature.properties, ...{
119
+ id: featureId,
120
+ element: title,
121
+ distance,
122
+ coordFromCalculatedDistance,
123
+ layerSrcId: layer.id,
124
+ layerSrcTitle: layer.title
125
+ } },
126
126
  meta: {
127
127
  id: featureId
128
128
  }
129
129
  });
130
130
  }
131
131
  getQueryTitle(feature, layer) {
132
- var _a, _b;
133
132
  let title;
134
- if ((_b = (_a = layer.options) === null || _a === void 0 ? void 0 : _a.source) === null || _b === void 0 ? void 0 : _b.options) {
133
+ if (layer.options?.source?.options) {
135
134
  const dataSourceOptions = layer.options.source
136
135
  .options;
137
136
  if (dataSourceOptions.queryTitle) {
@@ -161,4 +160,4 @@ MapProximityState.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MapPro
161
160
  providedIn: 'root'
162
161
  }]
163
162
  }], function () { return [{ type: i1.MapState }]; }, null); })();
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHkuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLGFBQWEsRUFBRSx1QkFBdUIsRUFBcUMsT0FBTyxFQUFFLFlBQVksRUFDakcsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHOUMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFDeEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuQyxPQUFPLGFBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUc1QyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQzs7O0FBQ2xDOztHQUVHO0FBSUgsTUFBTSxPQUFPLGlCQUFpQjtJQWE1QixZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBWC9CLGFBQVEsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDekUsMEJBQXFCLEdBQTRCLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLDJCQUFzQixHQUE0QixJQUFJLGVBQWUsQ0FBUyxhQUFhLENBQUMsQ0FBQztRQUM3RiwwQkFBcUIsR0FBMEIsSUFBSSxZQUFZLENBQVUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztR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O1NBQ3REO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOztrRkEzSlUsaUJBQWlCO3VFQUFqQixpQkFBaUIsV0FBakIsaUJBQWlCLG1CQUZoQixNQUFNO3VGQUVQLGlCQUFpQjtjQUg3QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIEZlYXR1cmVTdG9yZSwgRmVhdHVyZSwgSWdvTWFwLFxyXG4gIGZlYXR1cmVGcm9tT2wsIG1lYXN1cmVPbEdlb21ldHJ5TGVuZ3RoLCBMYXllciwgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMsIEZFQVRVUkUsIHJvdW5kQ29vcmRUbywgUXVlcnlhYmxlRGF0YVNvdXJjZSwgTWFwR2VvbG9jYXRpb25TdGF0ZVxyXG59IGZyb20gJ0BpZ28yL2dlbyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgaW50ZXJ2YWwsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi4vbWFwL21hcC5zdGF0ZSc7XHJcblxyXG5pbXBvcnQgR2VvSlNPTiBmcm9tICdvbC9mb3JtYXQvR2VvSlNPTic7XHJcbmltcG9ydCB7IHV1aWQgfSBmcm9tICdAaWdvMi91dGlscyc7XHJcblxyXG5pbXBvcnQgb2xMYXllclZlY3RvciBmcm9tICdvbC9sYXllci9WZWN0b3InO1xyXG5pbXBvcnQgb2xWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XHJcbmltcG9ydCBHZW9tZXRyeSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuaW1wb3J0IG9sTGluZVN0cmluZyBmcm9tICdvbC9nZW9tL0xpbmVTdHJpbmcnO1xyXG5pbXBvcnQgKiBhcyBvbFByb2ogZnJvbSAnb2wvcHJvaic7XHJcbi8qKlxyXG4gKiBTZXJ2aWNlIHRoYXQgaG9sZHMgdGhlIHN0YXRlIG9mIHRoZSBkaXJlY3Rpb24gbW9kdWxlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXBQcm94aW1pdHlTdGF0ZSB7XHJcblxyXG4gIHB1YmxpYyBlbmFibGVkJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHVibGljIHByb3hpbWl0eVJhZGl1c1ZhbHVlJDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMzApO1xyXG4gIHB1YmxpYyBwcm94aW1pdHlsb2NhdGlvblR5cGUkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignZ2VvbG9jYXRpb24nKTtcclxuICBwdWJsaWMgcHJveGltaXR5RmVhdHVyZVN0b3JlOiBGZWF0dXJlU3RvcmU8RmVhdHVyZT4gPSBuZXcgRmVhdHVyZVN0b3JlPEZlYXR1cmU+KFtdLCB7IG1hcDogdGhpcy5tYXBTdGF0ZS5tYXAgfSk7XHJcbiAgcHJpdmF0ZSBzdWJzJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHVibGljIGN1cnJlbnRQb3NpdGlvbkNvb3JkaW5hdGUkOiBCZWhhdmlvclN1YmplY3Q8W251bWJlciwgbnVtYmVyXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHVuZGVmaW5lZCk7XHJcblxyXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcclxuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlKSB7XHJcblxyXG4gICAgdGhpcy5tYXBTdGF0ZS5tYXAub2wub25jZSgncmVuZGVyY29tcGxldGUnLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaWJlUHJveGltaXR5TW9uaXRvcigpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc3Vic2NyaWJlUHJveGltaXR5TW9uaXRvcigpIHtcclxuICAgIHRoaXMuc3VicyQkLnB1c2goY29tYmluZUxhdGVzdChbXHJcbiAgICAgIHRoaXMuZW5hYmxlZCQsXHJcbiAgICAgIHRoaXMucHJveGltaXR5bG9jYXRpb25UeXBlJCxcclxuICAgICAgdGhpcy5wcm94aW1pdHlSYWRpdXNWYWx1ZSQsXHJcbiAgICAgIGludGVydmFsKDUwMDApLFxyXG4gICAgICB0aGlzLm1hcC5nZW9sb2NhdGlvbkNvbnRyb2xsZXIucG9zaXRpb24kXHJcbiAgICBdKVxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoNzUwKSlcclxuICAgICAgLnN1YnNjcmliZSgoYnVuY2g6IFtib29sZWFuLCBzdHJpbmcsIG51bWJlciwgbnVtYmVyLCBNYXBHZW9sb2NhdGlvblN0YXRlXSkgPT4ge1xyXG4gICAgICAgIHRoaXMucHJveGltaXR5RmVhdHVyZVN0b3JlLmNsZWFyKCk7XHJcbiAgICAgICAgY29uc3QgZW5hYmxlZCA9IGJ1bmNoWzBdO1xyXG4gICAgICAgIGNvbnN0IGxheWVycyA9IHRoaXMubWFwLmxheWVycztcclxuICAgICAgICBjb25zdCBjdXJyZW50UG9zID0gdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLnBvc2l0aW9uJC52YWx1ZTtcclxuICAgICAgICBjb25zdCBsb2NhdGlvblR5cGUgPSBidW5jaFsxXTtcclxuICAgICAgICBjb25zdCBwcm94aW1pdHlSYWRpdXNWYWx1ZSA9IGJ1bmNoWzJdO1xyXG5cclxuICAgICAgICBpZiAoIWVuYWJsZWQpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBsZXQgY29vcmQ6IG51bWJlcltdO1xyXG4gICAgICAgIGlmIChsb2NhdGlvblR5cGUgPT09ICdnZW9sb2NhdGlvbicpIHtcclxuICAgICAgICAgIGlmICghY3VycmVudFBvcyB8fCAhY3VycmVudFBvcy5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgY29vcmQgPSBvbFByb2oudHJhbnNmb3JtKGN1cnJlbnRQb3MucG9zaXRpb24sIGN1cnJlbnRQb3MucHJvamVjdGlvbiwgdGhpcy5tYXAucHJvamVjdGlvbik7XHJcbiAgICAgICAgICB0aGlzLm1hcC5tYXBDZW50ZXIkLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb29yZCA9IHRoaXMubWFwLnZpZXdDb250cm9sbGVyLmdldENlbnRlcigpOztcclxuICAgICAgICAgIHRoaXMubWFwLm1hcENlbnRlciQubmV4dCh0cnVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGNvb3JkTG9uTGF0ID0gb2xQcm9qLnRyYW5zZm9ybShjb29yZCwgdGhpcy5tYXAucHJvamVjdGlvbiwgJ0VQU0c6NDI2OScpO1xyXG4gICAgICAgIGNvbnN0IHJvdW5kZWRDb29yZExvbkxhdCA9IHJvdW5kQ29vcmRUbyhjb29yZExvbkxhdCBhcyBbbnVtYmVyLCBudW1iZXJdLCA2KTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRQb3NpdGlvbkNvb3JkaW5hdGUkLm5leHQocm91bmRlZENvb3JkTG9uTGF0KTtcclxuXHJcbiAgICAgICAgY29uc3QgbGF5ZXJzVG9Nb25pdG9yID0gbGF5ZXJzXHJcbiAgICAgICAgICAuZmlsdGVyKGxheWVyID0+XHJcbiAgICAgICAgICAgIGxheWVyLm9sIGluc3RhbmNlb2Ygb2xMYXllclZlY3RvciAmJlxyXG4gICAgICAgICAgICAobGF5ZXIuZGF0YVNvdXJjZSBhcyBRdWVyeWFibGVEYXRhU291cmNlKS5vcHRpb25zLnF1ZXJ5YWJsZSAmJlxyXG4gICAgICAgICAgICBsYXllci52aXNpYmxlICYmXHJcbiAgICAgICAgICAgIGxheWVyLmlzSW5SZXNvbHV0aW9uc1JhbmdlKTtcclxuXHJcbiAgICAgICAgbGF5ZXJzVG9Nb25pdG9yLm1hcChsYXllclRvTW9uaXRvciA9PiB7XHJcbiAgICAgICAgICBjb25zdCBsYXllclNvdXJjZSA9IGxheWVyVG9Nb25pdG9yLm9sLmdldFNvdXJjZSgpIGFzIG9sVmVjdG9yU291cmNlPEdlb21ldHJ5PjtcclxuXHJcbiAgICAgICAgICAvLyBNb3N0bHkgZm9yIHBvbHlnb24gZmVhdHVyZXMuXHJcbiAgICAgICAgICBjb25zdCBvbEZlYXR1cmVzQXRDb29yZGluYXRlID0gbGF5ZXJTb3VyY2UuZ2V0RmVhdHVyZXNBdENvb3JkaW5hdGUoY29vcmQpO1xyXG4gICAgICAgICAgaWYgKG9sRmVhdHVyZXNBdENvb3JkaW5hdGUgJiYgb2xGZWF0dXJlc0F0Q29vcmRpbmF0ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgb2xGZWF0dXJlc0F0Q29vcmRpbmF0ZS5tYXAob2xGZWF0dXJlQXRDb29yZGluYXRlID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlQXRUaGlzUG9zaXRpb24gPSBmZWF0dXJlRnJvbU9sKG9sRmVhdHVyZUF0Q29vcmRpbmF0ZSwgdGhpcy5tYXAucHJvamVjdGlvbik7XHJcbiAgICAgICAgICAgICAgbGV0IHRpdGxlID0gdGhpcy5nZXRRdWVyeVRpdGxlKGZlYXR1cmVBdFRoaXNQb3NpdGlvbiwgbGF5ZXJUb01vbml0b3IpO1xyXG4gICAgICAgICAgICAgIC8vIHRvZG8gaGFuZGxlIGltcG9ydGVkIGxheWVycyB3aXRob3V0IHF1ZXJ5dGl0bGU/IHByb21wdCB0aXRsZSBvciBkZXRlY3QgZmlyc3QgY29sdW1uP1xyXG4gICAgICAgICAgICAgIHRoaXMuYWRkRmVhdHVyZVRvU3RvcmUobGF5ZXJUb01vbml0b3IsIGNvb3JkLCBmZWF0dXJlQXRUaGlzUG9zaXRpb24sIHRpdGxlLCAwKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBjb21wdXRlIHByb3hpbWl0eSBmb3IgcmVtYWluaW5nIHNvdXJjZXNcclxuICAgICAgICAgICAgY29uc3QgY2xvc2VzdE9sRmVhdHVyZSA9IGxheWVyU291cmNlLmdldENsb3Nlc3RGZWF0dXJlVG9Db29yZGluYXRlKGNvb3JkKTtcclxuICAgICAgICAgICAgaWYgKGNsb3Nlc3RPbEZlYXR1cmUpIHtcclxuICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0T2xHZW9tID0gY2xvc2VzdE9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RGZWF0dXJlID0gZmVhdHVyZUZyb21PbChjbG9zZXN0T2xGZWF0dXJlLCB0aGlzLm1hcC5wcm9qZWN0aW9uKTtcclxuICAgICAgICAgICAgICBjb25zdCBnZW9tZXRyeUNsb3Nlc3RQb2ludCA9IGNsb3Nlc3RPbEdlb20uZ2V0Q2xvc2VzdFBvaW50KGNvb3JkKTtcclxuICAgICAgICAgICAgICBjb25zdCBsaW5lYmV0d2VlbiA9IG5ldyBvbExpbmVTdHJpbmcoW2Nvb3JkLCBnZW9tZXRyeUNsb3Nlc3RQb2ludF0pO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxpbmVMZW5ndGggPSBtZWFzdXJlT2xHZW9tZXRyeUxlbmd0aChsaW5lYmV0d2VlbiwgJ0VQU0c6Mzg1NycpO1xyXG4gICAgICAgICAgICAgIGlmIChsaW5lTGVuZ3RoIDw9IHByb3hpbWl0eVJhZGl1c1ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSB0aGlzLmdldFF1ZXJ5VGl0bGUoY2xvc2VzdEZlYXR1cmUsIGxheWVyVG9Nb25pdG9yKTtcclxuICAgICAgICAgICAgICAgIC8vIHRvZG8gaGFuZGxlIGltcG9ydGVkIGxheWVycyB3aXRob3V0IHF1ZXJ5dGl0bGU/IHByb21wdCB0aXRsZSBvciBkZXRlY3QgZmlyc3QgY29sdW1uP1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRGZWF0dXJlVG9TdG9yZShsYXllclRvTW9uaXRvciwgY29vcmQsIGNsb3Nlc3RGZWF0dXJlLCB0aXRsZSwgbGluZUxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAqIEFkZCBhIGZlYXR1cmUgd2l0aCBwcm94aW1pdHkgcHJvcGVydGllcyB0byB0aGUgc3RvcmVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICAgICBwcml2YXRlIGFkZEZlYXR1cmVUb1N0b3JlKGxheWVyOiBMYXllciwgY29vcmRGcm9tQ2FsY3VsYXRlZERpc3RhbmNlLCBmZWF0dXJlOiBGZWF0dXJlLCB0aXRsZSwgZGlzdGFuY2UpIHtcclxuICAgICAgY29uc3QgZmVhdHVyZUlkID0gdXVpZCgpO1xyXG4gICAgICBjb25zdCBwcm9qZWN0aW9uID0gdGhpcy5tYXAub2wuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKTtcclxuICAgICAgY29uc3Qgb2xHZW9tZXRyeSA9IGZlYXR1cmUub2wuZ2V0R2VvbWV0cnkoKSBhcyBHZW9tZXRyeTtcclxuICAgICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgR2VvSlNPTigpLndyaXRlR2VvbWV0cnlPYmplY3Qob2xHZW9tZXRyeSwge1xyXG4gICAgICAgIGZlYXR1cmVQcm9qZWN0aW9uOiBwcm9qZWN0aW9uLFxyXG4gICAgICAgIGRhdGFQcm9qZWN0aW9uOiBwcm9qZWN0aW9uXHJcbiAgICAgIH0pIGFzIGFueTtcclxuICAgICAgdGhpcy5wcm94aW1pdHlGZWF0dXJlU3RvcmUudXBkYXRlKHtcclxuICAgICAgICB0eXBlOiBGRUFUVVJFLFxyXG4gICAgICAgIGdlb21ldHJ5LFxyXG4gICAgICAgIHByb2plY3Rpb246IHByb2plY3Rpb24uZ2V0Q29kZSgpLFxyXG4gICAgICAgIHByb3BlcnRpZXM6IHsuLi5mZWF0dXJlLnByb3BlcnRpZXMsLi4ue1xyXG4gICAgICAgICAgaWQ6IGZlYXR1cmVJZCxcclxuICAgICAgICAgIGVsZW1lbnQ6IHRpdGxlLFxyXG4gICAgICAgICAgZGlzdGFuY2UsXHJcbiAgICAgICAgICBjb29yZEZyb21DYWxjdWxhdGVkRGlzdGFuY2UsXHJcbiAgICAgICAgICBsYXllclNyY0lkOiBsYXllci5pZCxcclxuICAgICAgICAgIGxheWVyU3JjVGl0bGU6IGxheWVyLnRpdGxlXHJcbiAgICAgICAgfX0sXHJcbiAgICAgICAgbWV0YToge1xyXG4gICAgICAgICAgaWQ6IGZlYXR1cmVJZFxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIGdldFF1ZXJ5VGl0bGUoZmVhdHVyZTogRmVhdHVyZSwgbGF5ZXI6IExheWVyKTogc3RyaW5nIHtcclxuICAgIGxldCB0aXRsZTtcclxuICAgIGlmIChsYXllci5vcHRpb25zPy5zb3VyY2U/Lm9wdGlvbnMpIHtcclxuICAgICAgY29uc3QgZGF0YVNvdXJjZU9wdGlvbnMgPSBsYXllci5vcHRpb25zLnNvdXJjZVxyXG4gICAgICAgIC5vcHRpb25zIGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zO1xyXG4gICAgICBpZiAoZGF0YVNvdXJjZU9wdGlvbnMucXVlcnlUaXRsZSkge1xyXG4gICAgICAgIHRpdGxlID0gdGhpcy5nZXRMYWJlbE1hdGNoKGZlYXR1cmUsIGRhdGFTb3VyY2VPcHRpb25zLnF1ZXJ5VGl0bGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGl0bGU7XHJcbiAgfVxyXG5cclxuICBnZXRMYWJlbE1hdGNoKGZlYXR1cmU6IEZlYXR1cmUsIGxhYmVsTWF0Y2gpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxhYmVsID0gbGFiZWxNYXRjaDtcclxuICAgIGNvbnN0IGxhYmVsVG9HZXQgPSBBcnJheS5mcm9tKGxhYmVsTWF0Y2gubWF0Y2hBbGwoL1xcJFxceyhbXlxce1xcfV0rKVxcfS9nKSk7XHJcblxyXG4gICAgbGFiZWxUb0dldC5mb3JFYWNoKHYgPT4ge1xyXG4gICAgICBsYWJlbCA9IGxhYmVsLnJlcGxhY2UodlswXSwgZmVhdHVyZS5wcm9wZXJ0aWVzW3ZbMV1dKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIE5vdGhpbmcgZG9uZT8gY2hlY2sgZmVhdHVyZSdzIGF0dHJpYnV0ZVxyXG4gICAgaWYgKGxhYmVsVG9HZXQubGVuZ3RoID09PSAwICYmIGxhYmVsID09PSBsYWJlbE1hdGNoKSB7XHJcbiAgICAgIGxhYmVsID0gZmVhdHVyZS5wcm9wZXJ0aWVzW2xhYmVsTWF0Y2hdIHx8IGxhYmVsTWF0Y2g7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbGFiZWw7XHJcbiAgfVxyXG59XHJcbiJdfQ==
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHkuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLGFBQWEsRUFBRSx1QkFBdUIsRUFBcUMsT0FBTyxFQUFFLFlBQVksRUFDakcsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHOUMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFDeEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuQyxPQUFPLGFBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUc1QyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQzs7O0FBQ2xDOztHQUVHO0FBSUgsTUFBTSxPQUFPLGlCQUFpQjtJQWE1QixZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBWC9CLGFBQVEsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDekUsMEJBQXFCLEdBQTRCLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLDJCQUFzQixHQUE0QixJQUFJLGVBQWUsQ0FBUyxhQUFhLENBQUMsQ0FBQztRQUM3RiwwQkFBcUIsR0FBMEIsSUFBSSxZQUFZLENBQVUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztR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QUM7U0FDdEQ7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7O2tGQTNKVSxpQkFBaUI7dUVBQWpCLGlCQUFpQixXQUFqQixpQkFBaUIsbUJBRmhCLE1BQU07dUZBRVAsaUJBQWlCO2NBSDdCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgRmVhdHVyZVN0b3JlLCBGZWF0dXJlLCBJZ29NYXAsXHJcbiAgZmVhdHVyZUZyb21PbCwgbWVhc3VyZU9sR2VvbWV0cnlMZW5ndGgsIExheWVyLCBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucywgRkVBVFVSRSwgcm91bmRDb29yZFRvLCBRdWVyeWFibGVEYXRhU291cmNlLCBNYXBHZW9sb2NhdGlvblN0YXRlXHJcbn0gZnJvbSAnQGlnbzIvZ2VvJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBpbnRlcnZhbCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTWFwU3RhdGUgfSBmcm9tICcuLi9tYXAvbWFwLnN0YXRlJztcclxuXHJcbmltcG9ydCBHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJztcclxuaW1wb3J0IHsgdXVpZCB9IGZyb20gJ0BpZ28yL3V0aWxzJztcclxuXHJcbmltcG9ydCBvbExheWVyVmVjdG9yIGZyb20gJ29sL2xheWVyL1ZlY3Rvcic7XHJcbmltcG9ydCBvbFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcclxuaW1wb3J0IEdlb21ldHJ5IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xyXG5pbXBvcnQgb2xMaW5lU3RyaW5nIGZyb20gJ29sL2dlb20vTGluZVN0cmluZyc7XHJcbmltcG9ydCAqIGFzIG9sUHJvaiBmcm9tICdvbC9wcm9qJztcclxuLyoqXHJcbiAqIFNlcnZpY2UgdGhhdCBob2xkcyB0aGUgc3RhdGUgb2YgdGhlIGRpcmVjdGlvbiBtb2R1bGVcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hcFByb3hpbWl0eVN0YXRlIHtcclxuXHJcbiAgcHVibGljIGVuYWJsZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBwdWJsaWMgcHJveGltaXR5UmFkaXVzVmFsdWUkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigzMCk7XHJcbiAgcHVibGljIHByb3hpbWl0eWxvY2F0aW9uVHlwZSQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCdnZW9sb2NhdGlvbicpO1xyXG4gIHB1YmxpYyBwcm94aW1pdHlGZWF0dXJlU3RvcmU6IEZlYXR1cmVTdG9yZTxGZWF0dXJlPiA9IG5ldyBGZWF0dXJlU3RvcmU8RmVhdHVyZT4oW10sIHsgbWFwOiB0aGlzLm1hcFN0YXRlLm1hcCB9KTtcclxuICBwcml2YXRlIHN1YnMkJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwdWJsaWMgY3VycmVudFBvc2l0aW9uQ29vcmRpbmF0ZSQ6IEJlaGF2aW9yU3ViamVjdDxbbnVtYmVyLCBudW1iZXJdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodW5kZWZpbmVkKTtcclxuXHJcbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xyXG4gICAgcmV0dXJuIHRoaXMubWFwU3RhdGUubWFwO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtYXBTdGF0ZTogTWFwU3RhdGUpIHtcclxuXHJcbiAgICB0aGlzLm1hcFN0YXRlLm1hcC5vbC5vbmNlKCdyZW5kZXJjb21wbGV0ZScsICgpID0+IHtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVQcm94aW1pdHlNb25pdG9yKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBzdWJzY3JpYmVQcm94aW1pdHlNb25pdG9yKCkge1xyXG4gICAgdGhpcy5zdWJzJCQucHVzaChjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgdGhpcy5lbmFibGVkJCxcclxuICAgICAgdGhpcy5wcm94aW1pdHlsb2NhdGlvblR5cGUkLFxyXG4gICAgICB0aGlzLnByb3hpbWl0eVJhZGl1c1ZhbHVlJCxcclxuICAgICAgaW50ZXJ2YWwoNTAwMCksXHJcbiAgICAgIHRoaXMubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlci5wb3NpdGlvbiRcclxuICAgIF0pXHJcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSg3NTApKVxyXG4gICAgICAuc3Vic2NyaWJlKChidW5jaDogW2Jvb2xlYW4sIHN0cmluZywgbnVtYmVyLCBudW1iZXIsIE1hcEdlb2xvY2F0aW9uU3RhdGVdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wcm94aW1pdHlGZWF0dXJlU3RvcmUuY2xlYXIoKTtcclxuICAgICAgICBjb25zdCBlbmFibGVkID0gYnVuY2hbMF07XHJcbiAgICAgICAgY29uc3QgbGF5ZXJzID0gdGhpcy5tYXAubGF5ZXJzO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRQb3MgPSB0aGlzLm1hcC5nZW9sb2NhdGlvbkNvbnRyb2xsZXIucG9zaXRpb24kLnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGxvY2F0aW9uVHlwZSA9IGJ1bmNoWzFdO1xyXG4gICAgICAgIGNvbnN0IHByb3hpbWl0eVJhZGl1c1ZhbHVlID0gYnVuY2hbMl07XHJcblxyXG4gICAgICAgIGlmICghZW5hYmxlZCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIGxldCBjb29yZDogbnVtYmVyW107XHJcbiAgICAgICAgaWYgKGxvY2F0aW9uVHlwZSA9PT0gJ2dlb2xvY2F0aW9uJykge1xyXG4gICAgICAgICAgaWYgKCFjdXJyZW50UG9zIHx8ICFjdXJyZW50UG9zLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb29yZCA9IG9sUHJvai50cmFuc2Zvcm0oY3VycmVudFBvcy5wb3NpdGlvbiwgY3VycmVudFBvcy5wcm9qZWN0aW9uLCB0aGlzLm1hcC5wcm9qZWN0aW9uKTtcclxuICAgICAgICAgIHRoaXMubWFwLm1hcENlbnRlciQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvb3JkID0gdGhpcy5tYXAudmlld0NvbnRyb2xsZXIuZ2V0Q2VudGVyKCk7O1xyXG4gICAgICAgICAgdGhpcy5tYXAubWFwQ2VudGVyJC5uZXh0KHRydWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY29vcmRMb25MYXQgPSBvbFByb2oudHJhbnNmb3JtKGNvb3JkLCB0aGlzLm1hcC5wcm9qZWN0aW9uLCAnRVBTRzo0MjY5Jyk7XHJcbiAgICAgICAgY29uc3Qgcm91bmRlZENvb3JkTG9uTGF0ID0gcm91bmRDb29yZFRvKGNvb3JkTG9uTGF0IGFzIFtudW1iZXIsIG51bWJlcl0sIDYpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBvc2l0aW9uQ29vcmRpbmF0ZSQubmV4dChyb3VuZGVkQ29vcmRMb25MYXQpO1xyXG5cclxuICAgICAgICBjb25zdCBsYXllcnNUb01vbml0b3IgPSBsYXllcnNcclxuICAgICAgICAgIC5maWx0ZXIobGF5ZXIgPT5cclxuICAgICAgICAgICAgbGF5ZXIub2wgaW5zdGFuY2VvZiBvbExheWVyVmVjdG9yICYmXHJcbiAgICAgICAgICAgIChsYXllci5kYXRhU291cmNlIGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2UpLm9wdGlvbnMucXVlcnlhYmxlICYmXHJcbiAgICAgICAgICAgIGxheWVyLnZpc2libGUgJiZcclxuICAgICAgICAgICAgbGF5ZXIuaXNJblJlc29sdXRpb25zUmFuZ2UpO1xyXG5cclxuICAgICAgICBsYXllcnNUb01vbml0b3IubWFwKGxheWVyVG9Nb25pdG9yID0+IHtcclxuICAgICAgICAgIGNvbnN0IGxheWVyU291cmNlID0gbGF5ZXJUb01vbml0b3Iub2wuZ2V0U291cmNlKCkgYXMgb2xWZWN0b3JTb3VyY2U8R2VvbWV0cnk+O1xyXG5cclxuICAgICAgICAgIC8vIE1vc3RseSBmb3IgcG9seWdvbiBmZWF0dXJlcy5cclxuICAgICAgICAgIGNvbnN0IG9sRmVhdHVyZXNBdENvb3JkaW5hdGUgPSBsYXllclNvdXJjZS5nZXRGZWF0dXJlc0F0Q29vcmRpbmF0ZShjb29yZCk7XHJcbiAgICAgICAgICBpZiAob2xGZWF0dXJlc0F0Q29vcmRpbmF0ZSAmJiBvbEZlYXR1cmVzQXRDb29yZGluYXRlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBvbEZlYXR1cmVzQXRDb29yZGluYXRlLm1hcChvbEZlYXR1cmVBdENvb3JkaW5hdGUgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVBdFRoaXNQb3NpdGlvbiA9IGZlYXR1cmVGcm9tT2wob2xGZWF0dXJlQXRDb29yZGluYXRlLCB0aGlzLm1hcC5wcm9qZWN0aW9uKTtcclxuICAgICAgICAgICAgICBsZXQgdGl0bGUgPSB0aGlzLmdldFF1ZXJ5VGl0bGUoZmVhdHVyZUF0VGhpc1Bvc2l0aW9uLCBsYXllclRvTW9uaXRvcik7XHJcbiAgICAgICAgICAgICAgLy8gdG9kbyBoYW5kbGUgaW1wb3J0ZWQgbGF5ZXJzIHdpdGhvdXQgcXVlcnl0aXRsZT8gcHJvbXB0IHRpdGxlIG9yIGRldGVjdCBmaXJzdCBjb2x1bW4/XHJcbiAgICAgICAgICAgICAgdGhpcy5hZGRGZWF0dXJlVG9TdG9yZShsYXllclRvTW9uaXRvciwgY29vcmQsIGZlYXR1cmVBdFRoaXNQb3NpdGlvbiwgdGl0bGUsIDApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIGNvbXB1dGUgcHJveGltaXR5IGZvciByZW1haW5pbmcgc291cmNlc1xyXG4gICAgICAgICAgICBjb25zdCBjbG9zZXN0T2xGZWF0dXJlID0gbGF5ZXJTb3VyY2UuZ2V0Q2xvc2VzdEZlYXR1cmVUb0Nvb3JkaW5hdGUoY29vcmQpO1xyXG4gICAgICAgICAgICBpZiAoY2xvc2VzdE9sRmVhdHVyZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RPbEdlb20gPSBjbG9zZXN0T2xGZWF0dXJlLmdldEdlb21ldHJ5KCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdEZlYXR1cmUgPSBmZWF0dXJlRnJvbU9sKGNsb3Nlc3RPbEZlYXR1cmUsIHRoaXMubWFwLnByb2plY3Rpb24pO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGdlb21ldHJ5Q2xvc2VzdFBvaW50ID0gY2xvc2VzdE9sR2VvbS5nZXRDbG9zZXN0UG9pbnQoY29vcmQpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxpbmViZXR3ZWVuID0gbmV3IG9sTGluZVN0cmluZyhbY29vcmQsIGdlb21ldHJ5Q2xvc2VzdFBvaW50XSk7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGluZUxlbmd0aCA9IG1lYXN1cmVPbEdlb21ldHJ5TGVuZ3RoKGxpbmViZXR3ZWVuLCAnRVBTRzozODU3Jyk7XHJcbiAgICAgICAgICAgICAgaWYgKGxpbmVMZW5ndGggPD0gcHJveGltaXR5UmFkaXVzVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IHRoaXMuZ2V0UXVlcnlUaXRsZShjbG9zZXN0RmVhdHVyZSwgbGF5ZXJUb01vbml0b3IpO1xyXG4gICAgICAgICAgICAgICAgLy8gdG9kbyBoYW5kbGUgaW1wb3J0ZWQgbGF5ZXJzIHdpdGhvdXQgcXVlcnl0aXRsZT8gcHJvbXB0IHRpdGxlIG9yIGRldGVjdCBmaXJzdCBjb2x1bW4/XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEZlYXR1cmVUb1N0b3JlKGxheWVyVG9Nb25pdG9yLCBjb29yZCwgY2xvc2VzdEZlYXR1cmUsIHRpdGxlLCBsaW5lTGVuZ3RoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0pKTtcclxuICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICogQWRkIGEgZmVhdHVyZSB3aXRoIHByb3hpbWl0eSBwcm9wZXJ0aWVzIHRvIHRoZSBzdG9yZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gICAgIHByaXZhdGUgYWRkRmVhdHVyZVRvU3RvcmUobGF5ZXI6IExheWVyLCBjb29yZEZyb21DYWxjdWxhdGVkRGlzdGFuY2UsIGZlYXR1cmU6IEZlYXR1cmUsIHRpdGxlLCBkaXN0YW5jZSkge1xyXG4gICAgICBjb25zdCBmZWF0dXJlSWQgPSB1dWlkKCk7XHJcbiAgICAgIGNvbnN0IHByb2plY3Rpb24gPSB0aGlzLm1hcC5vbC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpO1xyXG4gICAgICBjb25zdCBvbEdlb21ldHJ5ID0gZmVhdHVyZS5vbC5nZXRHZW9tZXRyeSgpIGFzIEdlb21ldHJ5O1xyXG4gICAgICBjb25zdCBnZW9tZXRyeSA9IG5ldyBHZW9KU09OKCkud3JpdGVHZW9tZXRyeU9iamVjdChvbEdlb21ldHJ5LCB7XHJcbiAgICAgICAgZmVhdHVyZVByb2plY3Rpb246IHByb2plY3Rpb24sXHJcbiAgICAgICAgZGF0YVByb2plY3Rpb246IHByb2plY3Rpb25cclxuICAgICAgfSkgYXMgYW55O1xyXG4gICAgICB0aGlzLnByb3hpbWl0eUZlYXR1cmVTdG9yZS51cGRhdGUoe1xyXG4gICAgICAgIHR5cGU6IEZFQVRVUkUsXHJcbiAgICAgICAgZ2VvbWV0cnksXHJcbiAgICAgICAgcHJvamVjdGlvbjogcHJvamVjdGlvbi5nZXRDb2RlKCksXHJcbiAgICAgICAgcHJvcGVydGllczogey4uLmZlYXR1cmUucHJvcGVydGllcywuLi57XHJcbiAgICAgICAgICBpZDogZmVhdHVyZUlkLFxyXG4gICAgICAgICAgZWxlbWVudDogdGl0bGUsXHJcbiAgICAgICAgICBkaXN0YW5jZSxcclxuICAgICAgICAgIGNvb3JkRnJvbUNhbGN1bGF0ZWREaXN0YW5jZSxcclxuICAgICAgICAgIGxheWVyU3JjSWQ6IGxheWVyLmlkLFxyXG4gICAgICAgICAgbGF5ZXJTcmNUaXRsZTogbGF5ZXIudGl0bGVcclxuICAgICAgICB9fSxcclxuICAgICAgICBtZXRhOiB7XHJcbiAgICAgICAgICBpZDogZmVhdHVyZUlkXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgZ2V0UXVlcnlUaXRsZShmZWF0dXJlOiBGZWF0dXJlLCBsYXllcjogTGF5ZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRpdGxlO1xyXG4gICAgaWYgKGxheWVyLm9wdGlvbnM/LnNvdXJjZT8ub3B0aW9ucykge1xyXG4gICAgICBjb25zdCBkYXRhU291cmNlT3B0aW9ucyA9IGxheWVyLm9wdGlvbnMuc291cmNlXHJcbiAgICAgICAgLm9wdGlvbnMgYXMgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnM7XHJcbiAgICAgIGlmIChkYXRhU291cmNlT3B0aW9ucy5xdWVyeVRpdGxlKSB7XHJcbiAgICAgICAgdGl0bGUgPSB0aGlzLmdldExhYmVsTWF0Y2goZmVhdHVyZSwgZGF0YVNvdXJjZU9wdGlvbnMucXVlcnlUaXRsZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aXRsZTtcclxuICB9XHJcblxyXG4gIGdldExhYmVsTWF0Y2goZmVhdHVyZTogRmVhdHVyZSwgbGFiZWxNYXRjaCk6IHN0cmluZyB7XHJcbiAgICBsZXQgbGFiZWwgPSBsYWJlbE1hdGNoO1xyXG4gICAgY29uc3QgbGFiZWxUb0dldCA9IEFycmF5LmZyb20obGFiZWxNYXRjaC5tYXRjaEFsbCgvXFwkXFx7KFteXFx7XFx9XSspXFx9L2cpKTtcclxuXHJcbiAgICBsYWJlbFRvR2V0LmZvckVhY2godiA9PiB7XHJcbiAgICAgIGxhYmVsID0gbGFiZWwucmVwbGFjZSh2WzBdLCBmZWF0dXJlLnByb3BlcnRpZXNbdlsxXV0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gTm90aGluZyBkb25lPyBjaGVjayBmZWF0dXJlJ3MgYXR0cmlidXRlXHJcbiAgICBpZiAobGFiZWxUb0dldC5sZW5ndGggPT09IDAgJiYgbGFiZWwgPT09IGxhYmVsTWF0Y2gpIHtcclxuICAgICAgbGFiZWwgPSBmZWF0dXJlLnByb3BlcnRpZXNbbGFiZWxNYXRjaF0gfHwgbGFiZWxNYXRjaDtcclxuICAgIH1cclxuICAgIHJldHVybiBsYWJlbDtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,130 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
3
+ import { ToolComponent } from '@igo2/common';
4
+ import { LayerListControlsEnum } from '@igo2/geo';
5
+ import { ImportExportMode } from '../../import-export/import-export.state';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "./../map.state";
8
+ import * as i2 from "../../tool/tool.state";
9
+ import * as i3 from "../../import-export/import-export.state";
10
+ import * as i4 from "@angular/material/tabs";
11
+ import * as i5 from "@igo2/geo";
12
+ import * as i6 from "@igo2/context";
13
+ import * as i7 from "../../workspace/workspace-button/workspace-button.component";
14
+ import * as i8 from "@ngx-translate/core";
15
+ function MapToolComponent_ng_template_4_Template(rf, ctx) { if (rf & 1) {
16
+ const _r4 = i0.ɵɵgetCurrentView();
17
+ i0.ɵɵelement(0, "igo-workspace-button", 4);
18
+ i0.ɵɵelementStart(1, "igo-export-button", 5);
19
+ i0.ɵɵlistener("click", function MapToolComponent_ng_template_4_Template_igo_export_button_click_1_listener() { const restoredCtx = i0.ɵɵrestoreView(_r4); const layer_r2 = restoredCtx.layer; const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.activateExport(layer_r2)); });
20
+ i0.ɵɵelementEnd();
21
+ i0.ɵɵelement(2, "igo-ogc-filter-button", 6)(3, "igo-time-filter-button", 6)(4, "igo-track-feature-button", 7)(5, "igo-metadata-button", 4);
22
+ } if (rf & 2) {
23
+ const layer_r2 = ctx.layer;
24
+ const ctx_r1 = i0.ɵɵnextContext();
25
+ i0.ɵɵproperty("layer", layer_r2);
26
+ i0.ɵɵadvance(1);
27
+ i0.ɵɵproperty("layer", layer_r2);
28
+ i0.ɵɵadvance(1);
29
+ i0.ɵɵproperty("header", ctx_r1.ogcButton)("layer", layer_r2);
30
+ i0.ɵɵadvance(1);
31
+ i0.ɵɵproperty("header", ctx_r1.timeButton)("layer", layer_r2);
32
+ i0.ɵɵadvance(1);
33
+ i0.ɵɵproperty("trackFeature", true)("layer", layer_r2);
34
+ i0.ɵɵadvance(1);
35
+ i0.ɵɵproperty("layer", layer_r2);
36
+ } }
37
+ /**
38
+ * Tool to browse a map's layers or to choose a different map
39
+ */
40
+ let MapToolComponent = class MapToolComponent {
41
+ constructor(mapState, toolState, importExportState) {
42
+ this.mapState = mapState;
43
+ this.toolState = toolState;
44
+ this.importExportState = importExportState;
45
+ this.toggleLegendOnVisibilityChange = false;
46
+ this.expandLegendOfVisibleLayers = false;
47
+ this.updateLegendOnResolutionChange = false;
48
+ this.ogcButton = true;
49
+ this.timeButton = true;
50
+ this.layerListControls = {};
51
+ this.queryBadge = false;
52
+ }
53
+ get map() {
54
+ return this.mapState.map;
55
+ }
56
+ get excludeBaseLayers() {
57
+ return this.layerListControls.excludeBaseLayers || false;
58
+ }
59
+ get layerFilterAndSortOptions() {
60
+ const filterSortOptions = Object.assign({
61
+ showToolbar: LayerListControlsEnum.default
62
+ }, this.layerListControls);
63
+ switch (this.layerListControls.showToolbar) {
64
+ case LayerListControlsEnum.always:
65
+ filterSortOptions.showToolbar = LayerListControlsEnum.always;
66
+ break;
67
+ case LayerListControlsEnum.never:
68
+ filterSortOptions.showToolbar = LayerListControlsEnum.never;
69
+ break;
70
+ default:
71
+ break;
72
+ }
73
+ return filterSortOptions;
74
+ }
75
+ activateExport(layer) {
76
+ let id = layer.id;
77
+ if (layer.options.workspace?.workspaceId) {
78
+ id = layer.options.workspace.workspaceId !== layer.id ? layer.options.workspace.workspaceId : layer.id;
79
+ }
80
+ this.importExportState.setsExportOptions({ layers: [id] });
81
+ this.importExportState.setMode(ImportExportMode.export);
82
+ this.toolState.toolbox.activateTool('importExport');
83
+ }
84
+ };
85
+ MapToolComponent.ɵfac = function MapToolComponent_Factory(t) { return new (t || MapToolComponent)(i0.ɵɵdirectiveInject(i1.MapState), i0.ɵɵdirectiveInject(i2.ToolState), i0.ɵɵdirectiveInject(i3.ImportExportState)); };
86
+ MapToolComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MapToolComponent, selectors: [["igo-map-tool"]], inputs: { toggleLegendOnVisibilityChange: "toggleLegendOnVisibilityChange", expandLegendOfVisibleLayers: "expandLegendOfVisibleLayers", updateLegendOnResolutionChange: "updateLegendOnResolutionChange", ogcButton: "ogcButton", timeButton: "timeButton", layerListControls: "layerListControls", queryBadge: "queryBadge" }, decls: 9, vars: 14, consts: [[3, "label"], ["igoLayerListBinding", "", 3, "map", "excludeBaseLayers", "layerFilterAndSortOptions", "expandLegendOfVisibleLayers", "toggleLegendOnVisibilityChange", "updateLegendOnResolutionChange", "floatLabel", "queryBadge"], ["igoLayerItemToolbar", ""], ["igoContextListBinding", ""], [3, "layer"], [3, "layer", "click"], [3, "header", "layer"], [3, "trackFeature", "layer"]], template: function MapToolComponent_Template(rf, ctx) { if (rf & 1) {
87
+ i0.ɵɵelementStart(0, "mat-tab-group")(1, "mat-tab", 0);
88
+ i0.ɵɵpipe(2, "translate");
89
+ i0.ɵɵelementStart(3, "igo-layer-list", 1);
90
+ i0.ɵɵtemplate(4, MapToolComponent_ng_template_4_Template, 6, 9, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
91
+ i0.ɵɵelementEnd()();
92
+ i0.ɵɵelementStart(6, "mat-tab", 0);
93
+ i0.ɵɵpipe(7, "translate");
94
+ i0.ɵɵelement(8, "igo-context-list", 3);
95
+ i0.ɵɵelementEnd()();
96
+ } if (rf & 2) {
97
+ i0.ɵɵadvance(1);
98
+ i0.ɵɵproperty("label", i0.ɵɵpipeBind1(2, 10, "igo.integration.tools.map"));
99
+ i0.ɵɵadvance(2);
100
+ i0.ɵɵproperty("map", ctx.map)("excludeBaseLayers", ctx.excludeBaseLayers)("layerFilterAndSortOptions", ctx.layerFilterAndSortOptions)("expandLegendOfVisibleLayers", ctx.expandLegendOfVisibleLayers)("toggleLegendOnVisibilityChange", ctx.toggleLegendOnVisibilityChange)("updateLegendOnResolutionChange", ctx.updateLegendOnResolutionChange)("floatLabel", false)("queryBadge", ctx.queryBadge);
101
+ i0.ɵɵadvance(3);
102
+ i0.ɵɵproperty("label", i0.ɵɵpipeBind1(7, 12, "igo.integration.tools.contexts"));
103
+ } }, dependencies: [i4.MatTabGroup, i4.MatTab, i5.LayerListComponent, i5.LayerListBindingDirective, i5.TrackFeatureButtonComponent, i5.MetadataButtonComponent, i5.ExportButtonComponent, i5.TimeFilterButtonComponent, i5.OgcFilterButtonComponent, i6.ContextListComponent, i6.ContextListBindingDirective, i7.WorkspaceButtonComponent, i8.TranslatePipe], styles: ["mat-tab-group[_ngcontent-%COMP%], mat-tab-group[_ngcontent-%COMP%] .mat-tab-body-wrapper{height:100%;overflow:hidden}[_nghost-%COMP%] .mat-tab-body-content{overflow:hidden}"], changeDetection: 0 });
104
+ MapToolComponent = __decorate([
105
+ ToolComponent({
106
+ name: 'map',
107
+ title: 'igo.integration.tools.map',
108
+ icon: 'map'
109
+ })
110
+ ], MapToolComponent);
111
+ export { MapToolComponent };
112
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MapToolComponent, [{
113
+ type: Component,
114
+ args: [{ selector: 'igo-map-tool', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-tab-group>\r\n\r\n <mat-tab [label]=\"'igo.integration.tools.map' |\u00A0translate\">\r\n <igo-layer-list\r\n [map]=\"map\"\r\n igoLayerListBinding\r\n [excludeBaseLayers]=\"excludeBaseLayers\"\r\n [layerFilterAndSortOptions]=\"layerFilterAndSortOptions\"\r\n [expandLegendOfVisibleLayers]=\"expandLegendOfVisibleLayers\"\r\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n [floatLabel]=\"false\"\r\n [queryBadge]=\"queryBadge\">\r\n\r\n <ng-template #igoLayerItemToolbar let-layer=\"layer\">\r\n <!-- <igo-download-button [layer]=\"layer\"></igo-download-button> -->\r\n <igo-workspace-button [layer]=\"layer\"></igo-workspace-button>\r\n <igo-export-button [layer]=\"layer\" (click)=\"activateExport(layer)\"></igo-export-button>\r\n <igo-ogc-filter-button [header]=\"ogcButton\" [layer]=\"layer\"></igo-ogc-filter-button>\r\n <igo-time-filter-button [header]=\"timeButton\" [layer]=\"layer\"></igo-time-filter-button>\r\n <igo-track-feature-button [trackFeature]=\"true\" [layer]=\"layer\"></igo-track-feature-button>\r\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\r\n </ng-template>\r\n\r\n </igo-layer-list>\r\n </mat-tab>\r\n\r\n <mat-tab [label]=\"'igo.integration.tools.contexts' |\u00A0translate\">\r\n <igo-context-list igoContextListBinding></igo-context-list>\r\n </mat-tab>\r\n\r\n</mat-tab-group>\r\n", styles: ["mat-tab-group,mat-tab-group ::ng-deep .mat-tab-body-wrapper{height:100%;overflow:hidden}:host ::ng-deep .mat-tab-body-content{overflow:hidden}\n"] }]
115
+ }], function () { return [{ type: i1.MapState }, { type: i2.ToolState }, { type: i3.ImportExportState }]; }, { toggleLegendOnVisibilityChange: [{
116
+ type: Input
117
+ }], expandLegendOfVisibleLayers: [{
118
+ type: Input
119
+ }], updateLegendOnResolutionChange: [{
120
+ type: Input
121
+ }], ogcButton: [{
122
+ type: Input
123
+ }], timeButton: [{
124
+ type: Input
125
+ }], layerListControls: [{
126
+ type: Input
127
+ }], queryBadge: [{
128
+ type: Input
129
+ }] }); })();
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXRvb2wvbWFwLXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXRvb2wvbWFwLXRvb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUNMLHFCQUFxQixFQUt0QixNQUFNLFdBQVcsQ0FBQztBQUVuQixPQUFPLEVBQUUsZ0JBQWdCLEVBQXFCLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7OztJQ0t0RiwwQ0FBNkQ7SUFDN0QsNENBQW1FO0lBQWhDLHdPQUFTLGVBQUEsK0JBQXFCLENBQUEsSUFBQztJQUFDLGlCQUFvQjtJQUN2RiwyQ0FBb0YsZ0NBQUEsa0NBQUEsNkJBQUE7Ozs7SUFGOUQsZ0NBQWU7SUFDbEIsZUFBZTtJQUFmLGdDQUFlO0lBQ1gsZUFBb0I7SUFBcEIseUNBQW9CLG1CQUFBO0lBQ25CLGVBQXFCO0lBQXJCLDBDQUFxQixtQkFBQTtJQUNuQixlQUFxQjtJQUFyQixtQ0FBcUIsbUJBQUE7SUFDMUIsZUFBZTtJQUFmLGdDQUFlOztBRFA1Qzs7R0FFRztJQVlVLGdCQUFnQixTQUFoQixnQkFBZ0I7SUE0QzNCLFlBQ1UsUUFBa0IsRUFDbEIsU0FBb0IsRUFDcEIsaUJBQW9DO1FBRnBDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBOUNyQyxtQ0FB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RyxVQUFVO2tCQUFsQixLQUFLO1lBRUcsaUJBQWlCO2tCQUF6QixLQUFLO1lBRUcsVUFBVTtrQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBUb29sQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBMYXllckxpc3RDb250cm9sc0VudW0sXHJcbiAgTGF5ZXJMaXN0Q29udHJvbHNPcHRpb25zLFxyXG4gIElnb01hcCxcclxuICBFeHBvcnRPcHRpb25zLFxyXG4gIExheWVyXHJcbn0gZnJvbSAnQGlnbzIvZ2VvJztcclxuaW1wb3J0IHsgTWFwU3RhdGUgfSBmcm9tICcuLy4uL21hcC5zdGF0ZSc7XHJcbmltcG9ydCB7IEltcG9ydEV4cG9ydE1vZGUsIEltcG9ydEV4cG9ydFN0YXRlIH0gZnJvbSAnLi4vLi4vaW1wb3J0LWV4cG9ydC9pbXBvcnQtZXhwb3J0LnN0YXRlJztcclxuaW1wb3J0IHsgVG9vbFN0YXRlIH0gZnJvbSAnLi4vLi4vdG9vbC90b29sLnN0YXRlJztcclxuXHJcbi8qKlxyXG4gKiBUb29sIHRvIGJyb3dzZSBhIG1hcCdzIGxheWVycyBvciB0byBjaG9vc2UgYSBkaWZmZXJlbnQgbWFwXHJcbiAqL1xyXG5AVG9vbENvbXBvbmVudCh7XHJcbiAgbmFtZTogJ21hcCcsXHJcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMubWFwJyxcclxuICBpY29uOiAnbWFwJ1xyXG59KVxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1tYXAtdG9vbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC10b29sLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tYXAtdG9vbC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXBUb29sQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSB0b2dnbGVMZWdlbmRPblZpc2liaWxpdHlDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgZXhwYW5kTGVnZW5kT2ZWaXNpYmxlTGF5ZXJzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBvZ2NCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSB0aW1lQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgbGF5ZXJMaXN0Q29udHJvbHM6IExheWVyTGlzdENvbnRyb2xzT3B0aW9ucyA9IHt9O1xyXG5cclxuICBASW5wdXQoKSBxdWVyeUJhZGdlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcclxuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcclxuICB9XHJcblxyXG4gIGdldCBleGNsdWRlQmFzZUxheWVycygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmxheWVyTGlzdENvbnRyb2xzLmV4Y2x1ZGVCYXNlTGF5ZXJzIHx8IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxheWVyRmlsdGVyQW5kU29ydE9wdGlvbnMoKTogYW55IHtcclxuICAgIGNvbnN0IGZpbHRlclNvcnRPcHRpb25zID0gT2JqZWN0LmFzc2lnbihcclxuICAgICAge1xyXG4gICAgICAgIHNob3dUb29sYmFyOiBMYXllckxpc3RDb250cm9sc0VudW0uZGVmYXVsdFxyXG4gICAgICB9LFxyXG4gICAgICB0aGlzLmxheWVyTGlzdENvbnRyb2xzXHJcbiAgICApO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5sYXllckxpc3RDb250cm9scy5zaG93VG9vbGJhcikge1xyXG4gICAgICBjYXNlIExheWVyTGlzdENvbnRyb2xzRW51bS5hbHdheXM6XHJcbiAgICAgICAgZmlsdGVyU29ydE9wdGlvbnMuc2hvd1Rvb2xiYXIgPSBMYXllckxpc3RDb250cm9sc0VudW0uYWx3YXlzO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExheWVyTGlzdENvbnRyb2xzRW51bS5uZXZlcjpcclxuICAgICAgICBmaWx0ZXJTb3J0T3B0aW9ucy5zaG93VG9vbGJhciA9IExheWVyTGlzdENvbnRyb2xzRW51bS5uZXZlcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBmaWx0ZXJTb3J0T3B0aW9ucztcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtYXBTdGF0ZTogTWFwU3RhdGUsXHJcbiAgICBwcml2YXRlIHRvb2xTdGF0ZTogVG9vbFN0YXRlLFxyXG4gICAgcHJpdmF0ZSBpbXBvcnRFeHBvcnRTdGF0ZTogSW1wb3J0RXhwb3J0U3RhdGVcclxuICApIHt9XHJcblxyXG4gIGFjdGl2YXRlRXhwb3J0KGxheWVyOiBMYXllcikge1xyXG4gICAgbGV0IGlkID0gbGF5ZXIuaWQ7XHJcbiAgICBpZiAobGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LndvcmtzcGFjZUlkKSB7XHJcbiAgICAgIGlkID0gbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2Uud29ya3NwYWNlSWQgIT09IGxheWVyLmlkID8gbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2Uud29ya3NwYWNlSWQgOiBsYXllci5pZDtcclxuICAgIH1cclxuICAgIHRoaXMuaW1wb3J0RXhwb3J0U3RhdGUuc2V0c0V4cG9ydE9wdGlvbnMoeyBsYXllcnM6IFtpZF0gfSBhcyBFeHBvcnRPcHRpb25zKTtcclxuICAgIHRoaXMuaW1wb3J0RXhwb3J0U3RhdGUuc2V0TW9kZShJbXBvcnRFeHBvcnRNb2RlLmV4cG9ydCk7XHJcbiAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmFjdGl2YXRlVG9vbCgnaW1wb3J0RXhwb3J0Jyk7XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtdGFiLWdyb3VwPlxyXG5cclxuICA8bWF0LXRhYiBbbGFiZWxdPVwiJ2lnby5pbnRlZ3JhdGlvbi50b29scy5tYXAnIHzCoHRyYW5zbGF0ZVwiPlxyXG4gICAgPGlnby1sYXllci1saXN0XHJcbiAgICAgIFttYXBdPVwibWFwXCJcclxuICAgICAgaWdvTGF5ZXJMaXN0QmluZGluZ1xyXG4gICAgICBbZXhjbHVkZUJhc2VMYXllcnNdPVwiZXhjbHVkZUJhc2VMYXllcnNcIlxyXG4gICAgICBbbGF5ZXJGaWx0ZXJBbmRTb3J0T3B0aW9uc109XCJsYXllckZpbHRlckFuZFNvcnRPcHRpb25zXCJcclxuICAgICAgW2V4cGFuZExlZ2VuZE9mVmlzaWJsZUxheWVyc109XCJleHBhbmRMZWdlbmRPZlZpc2libGVMYXllcnNcIlxyXG4gICAgICBbdG9nZ2xlTGVnZW5kT25WaXNpYmlsaXR5Q2hhbmdlXT1cInRvZ2dsZUxlZ2VuZE9uVmlzaWJpbGl0eUNoYW5nZVwiXHJcbiAgICAgIFt1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2VdPVwidXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXCJcclxuICAgICAgW2Zsb2F0TGFiZWxdPVwiZmFsc2VcIlxyXG4gICAgICBbcXVlcnlCYWRnZV09XCJxdWVyeUJhZGdlXCI+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgI2lnb0xheWVySXRlbVRvb2xiYXIgbGV0LWxheWVyPVwibGF5ZXJcIj5cclxuICAgICAgICA8IS0tIDxpZ28tZG93bmxvYWQtYnV0dG9uIFtsYXllcl09XCJsYXllclwiPjwvaWdvLWRvd25sb2FkLWJ1dHRvbj4gLS0+XHJcbiAgICAgICAgPGlnby13b3Jrc3BhY2UtYnV0dG9uIFtsYXllcl09XCJsYXllclwiPjwvaWdvLXdvcmtzcGFjZS1idXR0b24+XHJcbiAgICAgICAgPGlnby1leHBvcnQtYnV0dG9uIFtsYXllcl09XCJsYXllclwiIChjbGljayk9XCJhY3RpdmF0ZUV4cG9ydChsYXllcilcIj48L2lnby1leHBvcnQtYnV0dG9uPlxyXG4gICAgICAgIDxpZ28tb2djLWZpbHRlci1idXR0b24gW2hlYWRlcl09XCJvZ2NCdXR0b25cIiBbbGF5ZXJdPVwibGF5ZXJcIj48L2lnby1vZ2MtZmlsdGVyLWJ1dHRvbj5cclxuICAgICAgICA8aWdvLXRpbWUtZmlsdGVyLWJ1dHRvbiBbaGVhZGVyXT1cInRpbWVCdXR0b25cIiBbbGF5ZXJdPVwibGF5ZXJcIj48L2lnby10aW1lLWZpbHRlci1idXR0b24+XHJcbiAgICAgICAgPGlnby10cmFjay1mZWF0dXJlLWJ1dHRvbiBbdHJhY2tGZWF0dXJlXT1cInRydWVcIiBbbGF5ZXJdPVwibGF5ZXJcIj48L2lnby10cmFjay1mZWF0dXJlLWJ1dHRvbj5cclxuICAgICAgICA8aWdvLW1ldGFkYXRhLWJ1dHRvbiBbbGF5ZXJdPVwibGF5ZXJcIj48L2lnby1tZXRhZGF0YS1idXR0b24+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPC9pZ28tbGF5ZXItbGlzdD5cclxuICA8L21hdC10YWI+XHJcblxyXG4gIDxtYXQtdGFiIFtsYWJlbF09XCInaWdvLmludGVncmF0aW9uLnRvb2xzLmNvbnRleHRzJyB8wqB0cmFuc2xhdGVcIj5cclxuICAgIDxpZ28tY29udGV4dC1saXN0IGlnb0NvbnRleHRMaXN0QmluZGluZz48L2lnby1jb250ZXh0LWxpc3Q+XHJcbiAgPC9tYXQtdGFiPlxyXG5cclxuPC9tYXQtdGFiLWdyb3VwPlxyXG4iXX0=