@igo2/integration 1.14.2 → 1.14.3

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 (211) hide show
  1. package/esm2020/igo2-integration.mjs +4 -4
  2. package/esm2020/lib/about/about-tool/about-tool.component.mjs +184 -184
  3. package/esm2020/lib/about/about-tool/index.mjs +1 -1
  4. package/esm2020/lib/about/about.module.mjs +54 -54
  5. package/esm2020/lib/about/index.mjs +1 -1
  6. package/esm2020/lib/analytics/analytics-listener.service.mjs +71 -71
  7. package/esm2020/lib/analytics/analytics.module.mjs +15 -15
  8. package/esm2020/lib/analytics/index.mjs +1 -1
  9. package/esm2020/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs +112 -112
  10. package/esm2020/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.mjs +28 -28
  11. package/esm2020/lib/catalog/catalog-library-tool/catalog-library-tool.component.mjs +88 -88
  12. package/esm2020/lib/catalog/catalog-library-tool/catalog-library-tool.module.mjs +28 -28
  13. package/esm2020/lib/catalog/catalog.module.mjs +23 -23
  14. package/esm2020/lib/catalog/catalog.state.mjs +53 -53
  15. package/esm2020/lib/catalog/index.mjs +5 -5
  16. package/esm2020/lib/context/context-editor-tool/context-editor-tool.component.mjs +33 -33
  17. package/esm2020/lib/context/context-manager-tool/context-manager-tool.component.mjs +43 -43
  18. package/esm2020/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.mjs +24 -24
  19. package/esm2020/lib/context/context-share-tool/context-share-tool.component.mjs +33 -33
  20. package/esm2020/lib/context/context.module.mjs +38 -38
  21. package/esm2020/lib/context/context.state.mjs +87 -87
  22. package/esm2020/lib/context/index.mjs +5 -5
  23. package/esm2020/lib/directions/directions-tool/directions-tool.component.mjs +86 -86
  24. package/esm2020/lib/directions/directions-tool/index.mjs +1 -1
  25. package/esm2020/lib/directions/directions.module.mjs +25 -25
  26. package/esm2020/lib/directions/directions.state.mjs +63 -63
  27. package/esm2020/lib/directions/index.mjs +2 -2
  28. package/esm2020/lib/draw/draw.module.mjs +20 -20
  29. package/esm2020/lib/draw/draw.state.mjs +39 -39
  30. package/esm2020/lib/draw/drawing-tool/drawing-tool.component.mjs +71 -71
  31. package/esm2020/lib/draw/index.mjs +2 -2
  32. package/esm2020/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.mjs +9 -9
  33. package/esm2020/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.mjs +43 -43
  34. package/esm2020/lib/filter/active-ogc-filter-tool/index.mjs +1 -1
  35. package/esm2020/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.mjs +9 -9
  36. package/esm2020/lib/filter/active-time-filter-tool/active-time-filter-tool.component.mjs +43 -43
  37. package/esm2020/lib/filter/active-time-filter-tool/index.mjs +1 -1
  38. package/esm2020/lib/filter/filter.module.mjs +50 -50
  39. package/esm2020/lib/filter/index.mjs +5 -5
  40. package/esm2020/lib/filter/ogc-filter-tool/index.mjs +1 -1
  41. package/esm2020/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs +24 -24
  42. package/esm2020/lib/filter/spatial-filter-tool/index.mjs +1 -1
  43. package/esm2020/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +534 -534
  44. package/esm2020/lib/filter/time-filter-tool/index.mjs +1 -1
  45. package/esm2020/lib/filter/time-filter-tool/time-filter-tool.component.mjs +24 -24
  46. package/esm2020/lib/import-export/import-export-tool/import-export-tool.component.mjs +136 -136
  47. package/esm2020/lib/import-export/import-export-tool/index.mjs +1 -1
  48. package/esm2020/lib/import-export/import-export.module.mjs +47 -47
  49. package/esm2020/lib/import-export/import-export.state.mjs +40 -40
  50. package/esm2020/lib/import-export/index.mjs +2 -2
  51. package/esm2020/lib/integration.module.mjs +71 -71
  52. package/esm2020/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.mjs +472 -472
  53. package/esm2020/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +88 -88
  54. package/esm2020/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +217 -217
  55. package/esm2020/lib/map/advanced-map-tool/index.mjs +1 -1
  56. package/esm2020/lib/map/index.mjs +8 -8
  57. package/esm2020/lib/map/layer-list-tool.state.mjs +41 -41
  58. package/esm2020/lib/map/map-details-tool/index.mjs +1 -1
  59. package/esm2020/lib/map/map-details-tool/map-details-tool.component.mjs +255 -255
  60. package/esm2020/lib/map/map-legend/index.mjs +1 -1
  61. package/esm2020/lib/map/map-legend/map-legend-tool.component.mjs +274 -274
  62. package/esm2020/lib/map/map-proximity-tool/index.mjs +1 -1
  63. package/esm2020/lib/map/map-proximity-tool/map-proximity-tool.component.mjs +205 -205
  64. package/esm2020/lib/map/map-proximity.state.mjs +162 -162
  65. package/esm2020/lib/map/map-tool/index.mjs +1 -1
  66. package/esm2020/lib/map/map-tool/map-tool.component.mjs +129 -129
  67. package/esm2020/lib/map/map-tools/index.mjs +1 -1
  68. package/esm2020/lib/map/map-tools/map-tools.component.mjs +477 -477
  69. package/esm2020/lib/map/map.module.mjs +140 -140
  70. package/esm2020/lib/map/map.state.mjs +46 -46
  71. package/esm2020/lib/measure/index.mjs +3 -3
  72. package/esm2020/lib/measure/measure.module.mjs +19 -19
  73. package/esm2020/lib/measure/measure.state.mjs +34 -34
  74. package/esm2020/lib/measure/measurer-tool/measurer-tool.component.mjs +44 -44
  75. package/esm2020/lib/measure/measurer-tool/measurer-tool.module.mjs +24 -24
  76. package/esm2020/lib/print/index.mjs +1 -1
  77. package/esm2020/lib/print/print-tool/index.mjs +1 -1
  78. package/esm2020/lib/print/print-tool/print-tool.component.mjs +32 -32
  79. package/esm2020/lib/print/print.module.mjs +25 -25
  80. package/esm2020/lib/search/index.mjs +6 -6
  81. package/esm2020/lib/search/query.state.mjs +33 -33
  82. package/esm2020/lib/search/search-bar/search-bar-binding.directive.mjs +60 -60
  83. package/esm2020/lib/search/search-bar/search-bar.module.mjs +21 -21
  84. package/esm2020/lib/search/search-results-tool/search-results-tool.component.mjs +592 -592
  85. package/esm2020/lib/search/search-results-tool/search-results-tool.module.mjs +64 -64
  86. package/esm2020/lib/search/search.module.mjs +23 -23
  87. package/esm2020/lib/search/search.state.mjs +106 -106
  88. package/esm2020/lib/storage/index.mjs +1 -1
  89. package/esm2020/lib/storage/storage.module.mjs +15 -15
  90. package/esm2020/lib/storage/storage.state.mjs +22 -22
  91. package/esm2020/lib/tool/index.mjs +1 -1
  92. package/esm2020/lib/tool/tool.module.mjs +15 -15
  93. package/esm2020/lib/tool/tool.state.mjs +51 -51
  94. package/esm2020/lib/workspace/index.mjs +3 -3
  95. package/esm2020/lib/workspace/shared/edition-actions.service.mjs +155 -155
  96. package/esm2020/lib/workspace/shared/feature-actions.service.mjs +143 -143
  97. package/esm2020/lib/workspace/shared/index.mjs +2 -2
  98. package/esm2020/lib/workspace/shared/wfs-actions.service.mjs +157 -157
  99. package/esm2020/lib/workspace/shared/workspace.utils.mjs +6 -6
  100. package/esm2020/lib/workspace/workspace-button/index.mjs +1 -1
  101. package/esm2020/lib/workspace/workspace-button/workspace-button.component.mjs +68 -68
  102. package/esm2020/lib/workspace/workspace.module.mjs +36 -36
  103. package/esm2020/lib/workspace/workspace.state.mjs +187 -187
  104. package/esm2020/public_api.mjs +34 -34
  105. package/fesm2015/igo2-integration.mjs +6450 -6450
  106. package/fesm2020/igo2-integration.mjs +6009 -6009
  107. package/index.d.ts +5 -5
  108. package/lib/about/about-tool/about-tool.component.d.ts +34 -34
  109. package/lib/about/about-tool/index.d.ts +1 -1
  110. package/lib/about/about.module.d.ts +16 -16
  111. package/lib/about/index.d.ts +1 -1
  112. package/lib/analytics/analytics-listener.service.d.ts +27 -27
  113. package/lib/analytics/analytics.module.d.ts +6 -6
  114. package/lib/analytics/index.d.ts +1 -1
  115. package/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.d.ts +57 -57
  116. package/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.d.ts +12 -12
  117. package/lib/catalog/catalog-library-tool/catalog-library-tool.component.d.ts +50 -50
  118. package/lib/catalog/catalog-library-tool/catalog-library-tool.module.d.ts +12 -12
  119. package/lib/catalog/catalog.module.d.ts +8 -8
  120. package/lib/catalog/catalog.state.d.ts +37 -37
  121. package/lib/catalog/index.d.ts +5 -5
  122. package/lib/context/context-editor-tool/context-editor-tool.component.d.ts +9 -9
  123. package/lib/context/context-manager-tool/context-manager-tool.component.d.ts +15 -15
  124. package/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.d.ts +5 -5
  125. package/lib/context/context-share-tool/context-share-tool.component.d.ts +13 -13
  126. package/lib/context/context.module.d.ts +11 -11
  127. package/lib/context/context.state.d.ts +37 -37
  128. package/lib/context/index.d.ts +5 -5
  129. package/lib/directions/directions-tool/directions-tool.component.d.ts +54 -54
  130. package/lib/directions/directions-tool/index.d.ts +1 -1
  131. package/lib/directions/directions.module.d.ts +10 -10
  132. package/lib/directions/directions.state.d.ts +28 -28
  133. package/lib/directions/index.d.ts +2 -2
  134. package/lib/draw/draw.module.d.ts +8 -8
  135. package/lib/draw/draw.state.d.ts +17 -17
  136. package/lib/draw/drawing-tool/drawing-tool.component.d.ts +31 -31
  137. package/lib/draw/index.d.ts +2 -2
  138. package/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.d.ts +2 -2
  139. package/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.d.ts +12 -12
  140. package/lib/filter/active-ogc-filter-tool/index.d.ts +1 -1
  141. package/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.d.ts +2 -2
  142. package/lib/filter/active-time-filter-tool/active-time-filter-tool.component.d.ts +12 -12
  143. package/lib/filter/active-time-filter-tool/index.d.ts +1 -1
  144. package/lib/filter/filter.module.d.ts +15 -15
  145. package/lib/filter/index.d.ts +5 -5
  146. package/lib/filter/ogc-filter-tool/index.d.ts +1 -1
  147. package/lib/filter/ogc-filter-tool/ogc-filter-tool.component.d.ts +6 -6
  148. package/lib/filter/spatial-filter-tool/index.d.ts +1 -1
  149. package/lib/filter/spatial-filter-tool/spatial-filter-tool.component.d.ts +82 -82
  150. package/lib/filter/time-filter-tool/index.d.ts +1 -1
  151. package/lib/filter/time-filter-tool/time-filter-tool.component.d.ts +6 -6
  152. package/lib/import-export/import-export-tool/import-export-tool.component.d.ts +31 -31
  153. package/lib/import-export/import-export-tool/index.d.ts +1 -1
  154. package/lib/import-export/import-export.module.d.ts +15 -15
  155. package/lib/import-export/import-export.state.d.ts +24 -24
  156. package/lib/import-export/index.d.ts +2 -2
  157. package/lib/integration.module.d.ts +20 -20
  158. package/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.d.ts +97 -97
  159. package/lib/map/advanced-map-tool/advanced-map-tool.component.d.ts +12 -12
  160. package/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.d.ts +65 -65
  161. package/lib/map/advanced-map-tool/index.d.ts +1 -1
  162. package/lib/map/index.d.ts +8 -8
  163. package/lib/map/layer-list-tool.state.d.ts +19 -19
  164. package/lib/map/map-details-tool/index.d.ts +1 -1
  165. package/lib/map/map-details-tool/map-details-tool.component.d.ts +38 -38
  166. package/lib/map/map-legend/index.d.ts +1 -1
  167. package/lib/map/map-legend/map-legend-tool.component.d.ts +40 -40
  168. package/lib/map/map-proximity-tool/index.d.ts +1 -1
  169. package/lib/map/map-proximity-tool/map-proximity-tool.component.d.ts +36 -36
  170. package/lib/map/map-proximity.state.d.ts +28 -28
  171. package/lib/map/map-tool/index.d.ts +1 -1
  172. package/lib/map/map-tool/map-tool.component.d.ts +27 -27
  173. package/lib/map/map-tools/index.d.ts +1 -1
  174. package/lib/map/map-tools/map-tools.component.d.ts +65 -65
  175. package/lib/map/map.module.d.ts +38 -38
  176. package/lib/map/map.state.d.ts +24 -24
  177. package/lib/measure/index.d.ts +3 -3
  178. package/lib/measure/measure.module.d.ts +7 -7
  179. package/lib/measure/measure.state.d.ts +16 -16
  180. package/lib/measure/measurer-tool/measurer-tool.component.d.ts +24 -24
  181. package/lib/measure/measurer-tool/measurer-tool.module.d.ts +11 -11
  182. package/lib/print/index.d.ts +1 -1
  183. package/lib/print/print-tool/index.d.ts +1 -1
  184. package/lib/print/print-tool/print-tool.component.d.ts +10 -10
  185. package/lib/print/print.module.d.ts +10 -10
  186. package/lib/search/index.d.ts +6 -6
  187. package/lib/search/query.state.d.ts +20 -20
  188. package/lib/search/search-bar/search-bar-binding.directive.d.ts +20 -20
  189. package/lib/search/search-bar/search-bar.module.d.ts +11 -11
  190. package/lib/search/search-results-tool/search-results-tool.component.d.ts +101 -101
  191. package/lib/search/search-results-tool/search-results-tool.module.d.ts +18 -18
  192. package/lib/search/search.module.d.ts +8 -8
  193. package/lib/search/search.state.d.ts +54 -54
  194. package/lib/storage/index.d.ts +1 -1
  195. package/lib/storage/storage.module.d.ts +6 -6
  196. package/lib/storage/storage.state.d.ts +12 -12
  197. package/lib/tool/index.d.ts +1 -1
  198. package/lib/tool/tool.module.d.ts +6 -6
  199. package/lib/tool/tool.state.d.ts +22 -22
  200. package/lib/workspace/index.d.ts +3 -3
  201. package/lib/workspace/shared/edition-actions.service.d.ts +26 -26
  202. package/lib/workspace/shared/feature-actions.service.d.ts +25 -25
  203. package/lib/workspace/shared/index.d.ts +2 -2
  204. package/lib/workspace/shared/wfs-actions.service.d.ts +27 -27
  205. package/lib/workspace/shared/workspace.utils.d.ts +2 -2
  206. package/lib/workspace/workspace-button/index.d.ts +1 -1
  207. package/lib/workspace/workspace-button/workspace-button.component.d.ts +21 -21
  208. package/lib/workspace/workspace.module.d.ts +12 -12
  209. package/lib/workspace/workspace.state.d.ts +63 -63
  210. package/package.json +3 -3
  211. package/public_api.d.ts +31 -31
@@ -1,478 +1,478 @@
1
- import { __decorate } from "tslib";
2
- import { Component, ChangeDetectionStrategy, Input, ViewChild } from '@angular/core';
3
- import { ToolComponent } from '@igo2/common';
4
- import { LayerListControlsEnum, sourceCanSearch, VectorLayer } from '@igo2/geo';
5
- import { BehaviorSubject, combineLatest } from 'rxjs';
6
- import { map, debounceTime } from 'rxjs/operators';
7
- import { ImportExportMode } from '../../import-export/import-export.state';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "../layer-list-tool.state";
10
- import * as i2 from "../../tool/tool.state";
11
- import * as i3 from "../map.state";
12
- import * as i4 from "@igo2/geo";
13
- import * as i5 from "../../import-export/import-export.state";
14
- import * as i6 from "@angular/common";
15
- import * as i7 from "@angular/material/tabs";
16
- import * as i8 from "@angular/material/list";
17
- import * as i9 from "@angular/material/core";
18
- import * as i10 from "@angular/material/icon";
19
- import * as i11 from "../../workspace/workspace-button/workspace-button.component";
20
- import * as i12 from "@ngx-translate/core";
21
- const _c0 = ["tabGroup"];
22
- function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_time_filter_button_2_Template(rf, ctx) { if (rf & 1) {
23
- const _r14 = i0.ɵɵgetCurrentView();
24
- i0.ɵɵelementStart(0, "igo-time-filter-button", 14);
25
- i0.ɵɵlistener("click", function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_time_filter_button_2_Template_igo_time_filter_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r13 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r13.activateTimeFilter()); });
26
- i0.ɵɵelementEnd();
27
- } if (rf & 2) {
28
- const layer_r9 = i0.ɵɵnextContext().layer;
29
- const ctx_r10 = i0.ɵɵnextContext(2);
30
- i0.ɵɵproperty("header", ctx_r10.timeButton)("layer", layer_r9);
31
- } }
32
- function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_ogc_filter_button_3_Template(rf, ctx) { if (rf & 1) {
33
- const _r17 = i0.ɵɵgetCurrentView();
34
- i0.ɵɵelementStart(0, "igo-ogc-filter-button", 14);
35
- i0.ɵɵlistener("click", function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_ogc_filter_button_3_Template_igo_ogc_filter_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r16.activateOgcFilter()); });
36
- i0.ɵɵelementEnd();
37
- } if (rf & 2) {
38
- const layer_r9 = i0.ɵɵnextContext().layer;
39
- const ctx_r11 = i0.ɵɵnextContext(2);
40
- i0.ɵɵproperty("header", ctx_r11.ogcButton)("layer", layer_r9);
41
- } }
42
- function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_export_button_4_Template(rf, ctx) { if (rf & 1) {
43
- const _r21 = i0.ɵɵgetCurrentView();
44
- i0.ɵɵelementStart(0, "igo-export-button", 15);
45
- i0.ɵɵlistener("click", function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_export_button_4_Template_igo_export_button_click_0_listener() { i0.ɵɵrestoreView(_r21); const layer_r9 = i0.ɵɵnextContext().layer; const ctx_r19 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r19.activateExport(layer_r9)); });
46
- i0.ɵɵelementEnd();
47
- } if (rf & 2) {
48
- const layer_r9 = i0.ɵɵnextContext().layer;
49
- i0.ɵɵproperty("layer", layer_r9);
50
- } }
51
- function MapToolsComponent_igo_layer_list_5_ng_template_1_Template(rf, ctx) { if (rf & 1) {
52
- i0.ɵɵelement(0, "igo-metadata-button", 10)(1, "igo-track-feature-button", 11);
53
- i0.ɵɵtemplate(2, MapToolsComponent_igo_layer_list_5_ng_template_1_igo_time_filter_button_2_Template, 1, 2, "igo-time-filter-button", 12);
54
- i0.ɵɵtemplate(3, MapToolsComponent_igo_layer_list_5_ng_template_1_igo_ogc_filter_button_3_Template, 1, 2, "igo-ogc-filter-button", 12);
55
- i0.ɵɵtemplate(4, MapToolsComponent_igo_layer_list_5_ng_template_1_igo_export_button_4_Template, 1, 1, "igo-export-button", 13);
56
- i0.ɵɵelement(5, "igo-workspace-button", 10);
57
- } if (rf & 2) {
58
- const layer_r9 = ctx.layer;
59
- const ctx_r8 = i0.ɵɵnextContext(2);
60
- i0.ɵɵproperty("layer", layer_r9);
61
- i0.ɵɵadvance(1);
62
- i0.ɵɵproperty("trackFeature", true)("layer", layer_r9);
63
- i0.ɵɵadvance(1);
64
- i0.ɵɵproperty("ngIf", ctx_r8.isTimeFilterButton(layer_r9));
65
- i0.ɵɵadvance(1);
66
- i0.ɵɵproperty("ngIf", ctx_r8.isOGCFilterButton(layer_r9));
67
- i0.ɵɵadvance(1);
68
- i0.ɵɵproperty("ngIf", ctx_r8.isExportButton(layer_r9));
69
- i0.ɵɵadvance(1);
70
- i0.ɵɵproperty("layer", layer_r9);
71
- } }
72
- function MapToolsComponent_igo_layer_list_5_Template(rf, ctx) { if (rf & 1) {
73
- const _r24 = i0.ɵɵgetCurrentView();
74
- i0.ɵɵelementStart(0, "igo-layer-list", 8);
75
- i0.ɵɵlistener("appliedFilterAndSort", function MapToolsComponent_igo_layer_list_5_Template_igo_layer_list_appliedFilterAndSort_0_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r23.onLayerListChange($event)); });
76
- i0.ɵɵtemplate(1, MapToolsComponent_igo_layer_list_5_ng_template_1_Template, 6, 7, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
77
- i0.ɵɵelementEnd();
78
- } if (rf & 2) {
79
- const ctx_r1 = i0.ɵɵnextContext();
80
- i0.ɵɵproperty("excludeBaseLayers", ctx_r1.excludeBaseLayers)("layerFilterAndSortOptions", ctx_r1.layerFilterAndSortOptions)("expandLegendOfVisibleLayers", ctx_r1.expandLegendOfVisibleLayers)("toggleLegendOnVisibilityChange", ctx_r1.toggleLegendOnVisibilityChange)("updateLegendOnResolutionChange", ctx_r1.updateLegendOnResolutionChange)("floatLabel", false)("queryBadge", ctx_r1.queryBadge)("map", ctx_r1.map);
81
- } }
82
- function MapToolsComponent_igo_layer_legend_list_9_Template(rf, ctx) { if (rf & 1) {
83
- const _r26 = i0.ɵɵgetCurrentView();
84
- i0.ɵɵelementStart(0, "igo-layer-legend-list", 16);
85
- i0.ɵɵlistener("allLegendsShown", function MapToolsComponent_igo_layer_legend_list_9_Template_igo_layer_legend_list_allLegendsShown_0_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r25 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r25.onShowAllLegends($event)); });
86
- i0.ɵɵpipe(1, "async");
87
- i0.ɵɵelementEnd();
88
- } if (rf & 2) {
89
- const ctx_r2 = i0.ɵɵnextContext();
90
- i0.ɵɵproperty("allowShowAllLegends", ctx_r2.allowShowAllLegends)("showAllLegendsValue", i0.ɵɵpipeBind1(1, 4, ctx_r2.showAllLegendsValue$))("excludeBaseLayers", ctx_r2.excludeBaseLayers)("updateLegendOnResolutionChange", ctx_r2.updateLegendOnResolutionChange);
91
- } }
92
- function MapToolsComponent_10_ng_template_0_Template(rf, ctx) { }
93
- function MapToolsComponent_10_Template(rf, ctx) { if (rf & 1) {
94
- i0.ɵɵtemplate(0, MapToolsComponent_10_ng_template_0_Template, 0, 0, "ng-template");
95
- } }
96
- function MapToolsComponent_p_12_Template(rf, ctx) { if (rf & 1) {
97
- i0.ɵɵelementStart(0, "p", 17);
98
- i0.ɵɵtext(1);
99
- i0.ɵɵpipe(2, "async");
100
- i0.ɵɵpipe(3, "translate");
101
- i0.ɵɵpipe(4, "translate");
102
- i0.ɵɵelementEnd();
103
- } if (rf & 2) {
104
- const ctx_r4 = i0.ɵɵnextContext();
105
- i0.ɵɵadvance(1);
106
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, ctx_r4.visibleLayers$).length ? i0.ɵɵpipeBind1(3, 3, "igo.integration.mapTool.noLayersInRange") : i0.ɵɵpipeBind1(4, 5, "igo.integration.mapTool.noLayersVisible"), " ");
107
- } }
108
- function MapToolsComponent_ng_template_15_mat_list_0_p_4_Template(rf, ctx) { if (rf & 1) {
109
- i0.ɵɵelementStart(0, "p", 17);
110
- i0.ɵɵtext(1);
111
- i0.ɵɵpipe(2, "translate");
112
- i0.ɵɵelementEnd();
113
- } if (rf & 2) {
114
- i0.ɵɵadvance(1);
115
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "igo.integration.mapTool.customize"), "");
116
- } }
117
- function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_5_Template(rf, ctx) { if (rf & 1) {
118
- const _r34 = i0.ɵɵgetCurrentView();
119
- i0.ɵɵelementStart(0, "mat-list-item")(1, "mat-icon", 19);
120
- i0.ɵɵnamespaceSVG();
121
- i0.ɵɵelementStart(2, "svg", 20);
122
- i0.ɵɵelement(3, "path", 21);
123
- i0.ɵɵelementEnd()();
124
- i0.ɵɵnamespaceHTML();
125
- i0.ɵɵelementStart(4, "h4", 22);
126
- i0.ɵɵlistener("click", function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_5_Template_h4_click_4_listener() { i0.ɵɵrestoreView(_r34); const ctx_r33 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r33.searchEmit()); });
127
- i0.ɵɵtext(5);
128
- i0.ɵɵpipe(6, "translate");
129
- i0.ɵɵelementEnd()();
130
- } if (rf & 2) {
131
- i0.ɵɵadvance(5);
132
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 1, "igo.integration.mapTool.search-tool"), " ");
133
- } }
134
- function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_6_Template(rf, ctx) { if (rf & 1) {
135
- const _r36 = i0.ɵɵgetCurrentView();
136
- i0.ɵɵelementStart(0, "mat-list-item")(1, "mat-icon", 19);
137
- i0.ɵɵnamespaceSVG();
138
- i0.ɵɵelementStart(2, "svg", 20);
139
- i0.ɵɵelement(3, "path", 23);
140
- i0.ɵɵelementEnd()();
141
- i0.ɵɵnamespaceHTML();
142
- i0.ɵɵelementStart(4, "h4", 24);
143
- i0.ɵɵlistener("click", function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_6_Template_h4_click_4_listener() { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r35.catalogEmit()); });
144
- i0.ɵɵtext(5);
145
- i0.ɵɵpipe(6, "translate");
146
- i0.ɵɵelementEnd()();
147
- } if (rf & 2) {
148
- i0.ɵɵadvance(5);
149
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 1, "igo.integration.mapTool.catalog-tool"), " ");
150
- } }
151
- function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_7_Template(rf, ctx) { if (rf & 1) {
152
- const _r38 = i0.ɵɵgetCurrentView();
153
- i0.ɵɵelementStart(0, "mat-list-item")(1, "mat-icon", 19);
154
- i0.ɵɵnamespaceSVG();
155
- i0.ɵɵelementStart(2, "svg", 20);
156
- i0.ɵɵelement(3, "path", 25);
157
- i0.ɵɵelementEnd()();
158
- i0.ɵɵnamespaceHTML();
159
- i0.ɵɵelementStart(4, "h4", 26);
160
- i0.ɵɵlistener("click", function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_7_Template_h4_click_4_listener() { i0.ɵɵrestoreView(_r38); const ctx_r37 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r37.contextEmit()); });
161
- i0.ɵɵtext(5);
162
- i0.ɵɵpipe(6, "translate");
163
- i0.ɵɵelementEnd()();
164
- } if (rf & 2) {
165
- i0.ɵɵadvance(5);
166
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 1, "igo.integration.mapTool.context-tool"), " ");
167
- } }
168
- function MapToolsComponent_ng_template_15_mat_list_0_Template(rf, ctx) { if (rf & 1) {
169
- i0.ɵɵelementStart(0, "mat-list")(1, "p", 17);
170
- i0.ɵɵtext(2);
171
- i0.ɵɵpipe(3, "translate");
172
- i0.ɵɵelementEnd();
173
- i0.ɵɵtemplate(4, MapToolsComponent_ng_template_15_mat_list_0_p_4_Template, 3, 3, "p", 6);
174
- i0.ɵɵtemplate(5, MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_5_Template, 7, 3, "mat-list-item", 18);
175
- i0.ɵɵtemplate(6, MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_6_Template, 7, 3, "mat-list-item", 18);
176
- i0.ɵɵtemplate(7, MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_7_Template, 7, 3, "mat-list-item", 18);
177
- i0.ɵɵelementEnd();
178
- } if (rf & 2) {
179
- const ctx_r28 = i0.ɵɵnextContext(2);
180
- i0.ɵɵadvance(2);
181
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 5, "igo.integration.mapTool.empty"), "");
182
- i0.ɵɵadvance(2);
183
- i0.ɵɵproperty("ngIf", ctx_r28.layerAdditionAllowed && (ctx_r28.searchToolInToolbar || ctx_r28.catalogToolInToolbar || ctx_r28.contextToolInToolbar));
184
- i0.ɵɵadvance(1);
185
- i0.ɵɵproperty("ngIf", ctx_r28.layerAdditionAllowed && ctx_r28.searchToolInToolbar);
186
- i0.ɵɵadvance(1);
187
- i0.ɵɵproperty("ngIf", ctx_r28.layerAdditionAllowed && ctx_r28.catalogToolInToolbar);
188
- i0.ɵɵadvance(1);
189
- i0.ɵɵproperty("ngIf", ctx_r28.layerAdditionAllowed && ctx_r28.contextToolInToolbar);
190
- } }
191
- function MapToolsComponent_ng_template_15_Template(rf, ctx) { if (rf & 1) {
192
- i0.ɵɵtemplate(0, MapToolsComponent_ng_template_15_mat_list_0_Template, 8, 7, "mat-list", 18);
193
- } if (rf & 2) {
194
- const ctx_r6 = i0.ɵɵnextContext();
195
- i0.ɵɵproperty("ngIf", ctx_r6.delayedShowEmptyMapContent);
196
- } }
197
- /**
198
- * Tool to browse a map's layers or to choose a different map
199
- */
200
- let MapToolsComponent = class MapToolsComponent {
201
- constructor(layerListToolState, toolState, mapState, searchSourceService, importExportState) {
202
- this.layerListToolState = layerListToolState;
203
- this.toolState = toolState;
204
- this.mapState = mapState;
205
- this.searchSourceService = searchSourceService;
206
- this.importExportState = importExportState;
207
- this.layers$ = new BehaviorSubject([]);
208
- this.showAllLegendsValue$ = new BehaviorSubject(false);
209
- this.delayedShowEmptyMapContent = false;
210
- this.allowShowAllLegends = false;
211
- this.showAllLegendsValue = false;
212
- this.toggleLegendOnVisibilityChange = false;
213
- this.expandLegendOfVisibleLayers = false;
214
- this.updateLegendOnResolutionChange = false;
215
- this.ogcButton = true;
216
- this.timeButton = true;
217
- this.layerAdditionAllowed = true;
218
- this._layerListControls = {};
219
- this.queryBadge = false;
220
- }
221
- get layerListControls() {
222
- return this._layerListControls;
223
- }
224
- set layerListControls(value) {
225
- const stateOptions = this.layerListToolState.getLayerListControls();
226
- const stateKeyword = stateOptions.keyword;
227
- const stateOnlyVisible = stateOptions.onlyVisible;
228
- const stateSortAlpha = stateOptions.sortAlpha;
229
- value.keyword = stateKeyword !== '' ? stateKeyword : value.keyword;
230
- value.onlyVisible =
231
- stateOnlyVisible !== undefined ? stateOnlyVisible : value.onlyVisible;
232
- value.sortAlpha =
233
- stateSortAlpha !== undefined ? stateSortAlpha : value.sortAlpha;
234
- value.onlyVisible =
235
- value.onlyVisible === undefined ? false : value.onlyVisible;
236
- value.sortAlpha = value.sortAlpha === undefined ? false : value.sortAlpha;
237
- this._layerListControls = value;
238
- }
239
- get map() {
240
- return this.mapState.map;
241
- }
242
- get visibleOrInRangeLayers$() {
243
- return this.layers$.pipe(map((layers) => layers.filter((layer) => layer.visible$.value && layer.isInResolutionsRange$.value)));
244
- }
245
- get visibleLayers$() {
246
- return this.layers$.pipe(map((layers) => layers.filter((layer) => layer.visible$.value)));
247
- }
248
- get excludeBaseLayers() {
249
- return this.layerListControls.excludeBaseLayers || false;
250
- }
251
- get layerFilterAndSortOptions() {
252
- const filterSortOptions = Object.assign({
253
- showToolbar: LayerListControlsEnum.default
254
- }, this.layerListControls);
255
- switch (this.layerListControls.showToolbar) {
256
- case LayerListControlsEnum.always:
257
- filterSortOptions.showToolbar = LayerListControlsEnum.always;
258
- break;
259
- case LayerListControlsEnum.never:
260
- filterSortOptions.showToolbar = LayerListControlsEnum.never;
261
- break;
262
- default:
263
- break;
264
- }
265
- return filterSortOptions;
266
- }
267
- get searchToolInToolbar() {
268
- return (this.toolState.toolbox.getToolbar().indexOf('searchResults') !== -1 &&
269
- this.searchSourceService
270
- .getSources()
271
- .filter(sourceCanSearch)
272
- .filter((s) => s.available && s.getType() === 'Layer').length > 0);
273
- }
274
- get catalogToolInToolbar() {
275
- return this.toolState.toolbox.getToolbar().indexOf('catalog') !== -1;
276
- }
277
- get contextToolInToolbar() {
278
- return this.toolState.toolbox.getToolbar().indexOf('contextManager') !== -1;
279
- }
280
- ngOnInit() {
281
- this.selectedTab();
282
- this.resolution$$ = combineLatest([
283
- this.map.layers$,
284
- this.map.viewController.resolution$
285
- ])
286
- .pipe(debounceTime(10))
287
- .subscribe((bunch) => {
288
- this.layers$.next(bunch[0].filter((layer) => layer.showInLayerList !== false &&
289
- (!this.excludeBaseLayers || !layer.baseLayer)));
290
- });
291
- if (this.allowShowAllLegends) {
292
- this.mapState.showAllLegendsValue =
293
- this.mapState.showAllLegendsValue !== undefined
294
- ? this.mapState.showAllLegendsValue
295
- : this.showAllLegendsValue || false;
296
- this.showAllLegendsValue$.next(this.mapState.showAllLegendsValue);
297
- }
298
- else {
299
- this.showAllLegendsValue$.next(false);
300
- }
301
- // prevent message to be shown too quickly. Waiting for layers
302
- setTimeout(() => (this.delayedShowEmptyMapContent = true), 250);
303
- }
304
- ngOnDestroy() {
305
- this.resolution$$.unsubscribe();
306
- if (this.visibleOrInRangeLayers$$) {
307
- this.visibleOrInRangeLayers$$.unsubscribe();
308
- }
309
- }
310
- onShowAllLegends(event) {
311
- this.mapState.showAllLegendsValue = event;
312
- this.showAllLegendsValue$.next(event);
313
- }
314
- selectedTab() {
315
- const userSelectedTab = this.layerListToolState.selectedTab$.value;
316
- if (userSelectedTab !== undefined) {
317
- this.layerListToolState.setSelectedTab(userSelectedTab);
318
- }
319
- else {
320
- if (this.selectedTabAtOpening === 'legend') {
321
- this.layerListToolState.setSelectedTab(1);
322
- }
323
- else {
324
- this.layerListToolState.setSelectedTab(0);
325
- }
326
- }
327
- }
328
- tabChanged(tab) {
329
- this.layerListToolState.setSelectedTab(tab.index);
330
- this.layers$.next(this.map.layers.filter((layer) => layer.showInLayerList !== false &&
331
- (!this.excludeBaseLayers || !layer.baseLayer)));
332
- }
333
- onLayerListChange(appliedFilters) {
334
- this.layerListToolState.setKeyword(appliedFilters.keyword);
335
- this.layerListToolState.setSortAlpha(appliedFilters.sortAlpha);
336
- this.layerListToolState.setOnlyVisible(appliedFilters.onlyVisible);
337
- }
338
- showAllLegend() {
339
- if (this.layers$.getValue().length === 0) {
340
- return false;
341
- }
342
- else if (this.layers$.getValue().length !== 0 &&
343
- this.allowShowAllLegends === false) {
344
- let visibleOrInRangeLayers;
345
- this.visibleOrInRangeLayers$$ = this.visibleOrInRangeLayers$.subscribe((value) => {
346
- value.length === 0
347
- ? (visibleOrInRangeLayers = false)
348
- : (visibleOrInRangeLayers = true);
349
- });
350
- if (visibleOrInRangeLayers === false) {
351
- return false;
352
- }
353
- }
354
- return true;
355
- }
356
- activateExport(layer) {
357
- let id = layer.id;
358
- if (layer.options.workspace?.workspaceId) {
359
- id = layer.options.workspace.workspaceId !== layer.id ? layer.options.workspace.workspaceId : layer.id;
360
- }
361
- this.importExportState.setsExportOptions({ layers: [id] });
362
- this.importExportState.setMode(ImportExportMode.export);
363
- this.toolState.toolbox.activateTool('importExport');
364
- }
365
- activateTimeFilter() {
366
- this.toolState.toolbox.activateTool('activeTimeFilter');
367
- }
368
- activateOgcFilter() {
369
- this.toolState.toolbox.activateTool('activeOgcFilter');
370
- }
371
- searchEmit() {
372
- this.toolState.toolbox.activateTool('searchResults');
373
- }
374
- catalogEmit() {
375
- this.toolState.toolbox.activateTool('catalog');
376
- }
377
- contextEmit() {
378
- this.toolState.toolbox.activateTool('contextManager');
379
- }
380
- isTimeFilterButton(layer) {
381
- const options = layer.dataSource.options;
382
- return this.timeButton && options.timeFilterable && options.timeFilter;
383
- }
384
- isOGCFilterButton(layer) {
385
- const options = layer.dataSource.options;
386
- return this.ogcButton && options.ogcFilters && options.ogcFilters.enabled &&
387
- (options.ogcFilters.pushButtons || options.ogcFilters.checkboxes || options.ogcFilters.radioButtons
388
- || options.ogcFilters.select || options.ogcFilters.autocomplete || options.ogcFilters.editable);
389
- }
390
- isExportButton(layer) {
391
- if ((layer instanceof VectorLayer && layer.exportable === true) ||
392
- (layer.dataSource.options.download && layer.dataSource.options.download.url) ||
393
- (layer.options.workspace?.enabled && layer.options.workspace?.workspaceId !== layer.id)) {
394
- return true;
395
- }
396
- return false;
397
- }
398
- };
399
- MapToolsComponent.ɵfac = function MapToolsComponent_Factory(t) { return new (t || MapToolsComponent)(i0.ɵɵdirectiveInject(i1.LayerListToolState), i0.ɵɵdirectiveInject(i2.ToolState), i0.ɵɵdirectiveInject(i3.MapState), i0.ɵɵdirectiveInject(i4.SearchSourceService), i0.ɵɵdirectiveInject(i5.ImportExportState)); };
400
- MapToolsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MapToolsComponent, selectors: [["igo-map-tools"]], viewQuery: function MapToolsComponent_Query(rf, ctx) { if (rf & 1) {
401
- i0.ɵɵviewQuery(_c0, 7);
402
- } if (rf & 2) {
403
- let _t;
404
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabGroup = _t.first);
405
- } }, inputs: { allowShowAllLegends: "allowShowAllLegends", showAllLegendsValue: "showAllLegendsValue", toggleLegendOnVisibilityChange: "toggleLegendOnVisibilityChange", expandLegendOfVisibleLayers: "expandLegendOfVisibleLayers", updateLegendOnResolutionChange: "updateLegendOnResolutionChange", selectedTabAtOpening: "selectedTabAtOpening", ogcButton: "ogcButton", timeButton: "timeButton", layerAdditionAllowed: "layerAdditionAllowed", layerListControls: "layerListControls", queryBadge: "queryBadge" }, decls: 17, vars: 23, consts: [[3, "selectedIndex", "selectedTabChange"], ["tabGroup", ""], [3, "label"], ["igoLayerListBinding", "", 3, "excludeBaseLayers", "layerFilterAndSortOptions", "expandLegendOfVisibleLayers", "toggleLegendOnVisibilityChange", "updateLegendOnResolutionChange", "floatLabel", "queryBadge", "map", "appliedFilterAndSort", 4, "ngIf", "ngIfElse"], ["igoLayerLegendListBinding", "", 3, "allowShowAllLegends", "showAllLegendsValue", "excludeBaseLayers", "updateLegendOnResolutionChange", "allLegendsShown", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["class", "map-empty mat-typography", 4, "ngIf"], ["emptyLayers", ""], ["igoLayerListBinding", "", 3, "excludeBaseLayers", "layerFilterAndSortOptions", "expandLegendOfVisibleLayers", "toggleLegendOnVisibilityChange", "updateLegendOnResolutionChange", "floatLabel", "queryBadge", "map", "appliedFilterAndSort"], ["igoLayerItemToolbar", ""], [3, "layer"], [3, "trackFeature", "layer"], [3, "header", "layer", "click", 4, "ngIf"], [3, "layer", "click", 4, "ngIf"], [3, "header", "layer", "click"], [3, "layer", "click"], ["igoLayerLegendListBinding", "", 3, "allowShowAllLegends", "showAllLegendsValue", "excludeBaseLayers", "updateLegendOnResolutionChange", "allLegendsShown"], [1, "map-empty", "mat-typography"], [4, "ngIf"], ["mat-list-icon", ""], ["viewBox", "0 0 24 24", "fit", "", "height", "100%", "width", "100%", "preserveAspectRatio", "xMidYMid meet", "focusable", "false"], ["d", "M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"], ["matLine", "", 1, "search-tool", "mat-typography", 3, "click"], ["d", "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z"], ["matLine", "", 1, "catalog-tool", "mat-typography", 3, "click"], ["d", "M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z"], ["matLine", "", 1, "context-tool", "mat-typography", 3, "click"]], template: function MapToolsComponent_Template(rf, ctx) { if (rf & 1) {
406
- i0.ɵɵelementStart(0, "mat-tab-group", 0, 1);
407
- i0.ɵɵlistener("selectedTabChange", function MapToolsComponent_Template_mat_tab_group_selectedTabChange_0_listener($event) { return ctx.tabChanged($event); });
408
- i0.ɵɵpipe(2, "async");
409
- i0.ɵɵelementStart(3, "mat-tab", 2);
410
- i0.ɵɵpipe(4, "translate");
411
- i0.ɵɵtemplate(5, MapToolsComponent_igo_layer_list_5_Template, 3, 8, "igo-layer-list", 3);
412
- i0.ɵɵpipe(6, "async");
413
- i0.ɵɵelementEnd();
414
- i0.ɵɵelementStart(7, "mat-tab", 2);
415
- i0.ɵɵpipe(8, "translate");
416
- i0.ɵɵtemplate(9, MapToolsComponent_igo_layer_legend_list_9_Template, 2, 6, "igo-layer-legend-list", 4);
417
- i0.ɵɵtemplate(10, MapToolsComponent_10_Template, 1, 0, null, 5);
418
- i0.ɵɵpipe(11, "async");
419
- i0.ɵɵtemplate(12, MapToolsComponent_p_12_Template, 5, 7, "p", 6);
420
- i0.ɵɵpipe(13, "async");
421
- i0.ɵɵpipe(14, "async");
422
- i0.ɵɵelementEnd();
423
- i0.ɵɵtemplate(15, MapToolsComponent_ng_template_15_Template, 1, 1, "ng-template", null, 7, i0.ɵɵtemplateRefExtractor);
424
- i0.ɵɵelementEnd();
425
- } if (rf & 2) {
426
- const _r5 = i0.ɵɵreference(16);
427
- i0.ɵɵproperty("selectedIndex", i0.ɵɵpipeBind1(2, 9, ctx.layerListToolState.selectedTab$));
428
- i0.ɵɵadvance(3);
429
- i0.ɵɵproperty("label", i0.ɵɵpipeBind1(4, 11, "igo.integration.tools.layers"));
430
- i0.ɵɵadvance(2);
431
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(6, 13, ctx.layers$).length !== 0)("ngIfElse", _r5);
432
- i0.ɵɵadvance(2);
433
- i0.ɵɵproperty("label", i0.ɵɵpipeBind1(8, 15, "igo.integration.tools.legend"));
434
- i0.ɵɵadvance(2);
435
- i0.ɵɵproperty("ngIf", ctx.showAllLegend());
436
- i0.ɵɵadvance(1);
437
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(11, 17, ctx.layers$).length !== 0)("ngIfElse", _r5);
438
- i0.ɵɵadvance(2);
439
- i0.ɵɵproperty("ngIf", !ctx.allowShowAllLegends && i0.ɵɵpipeBind1(13, 19, ctx.layers$).length !== 0 && i0.ɵɵpipeBind1(14, 21, ctx.visibleOrInRangeLayers$).length === 0);
440
- } }, dependencies: [i6.NgIf, i7.MatTabGroup, i7.MatTab, i8.MatList, i8.MatListItem, i9.MatLine, i8.MatListIconCssMatStyler, i10.MatIcon, i4.LayerListComponent, i4.LayerLegendListComponent, i4.LayerListBindingDirective, i4.LayerLegendListBindingDirective, i4.TrackFeatureButtonComponent, i4.MetadataButtonComponent, i4.ExportButtonComponent, i4.TimeFilterButtonComponent, i4.OgcFilterButtonComponent, i11.WorkspaceButtonComponent, i6.AsyncPipe, i12.TranslatePipe], styles: [".map-empty[_ngcontent-%COMP%], .search-tool[_ngcontent-%COMP%], .catalog-tool[_ngcontent-%COMP%], .context-tool[_ngcontent-%COMP%]{margin:10px}.map-empty[_ngcontent-%COMP%]{text-align:justify}.search-tool[_ngcontent-%COMP%], .catalog-tool[_ngcontent-%COMP%], .context-tool[_ngcontent-%COMP%]{cursor:pointer}mat-list[_ngcontent-%COMP%] mat-list-item[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{font-weight:700}mat-list-item[_ngcontent-%COMP%] .mat-list-text{font-size:smaller}mat-list.mat-list-base[_ngcontent-%COMP%] mat-list-item.mat-list-item[_ngcontent-%COMP%] div.mat-list-item-content div.mat-list-text{padding-left:5px}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 });
441
- MapToolsComponent = __decorate([
442
- ToolComponent({
443
- name: 'mapTools',
444
- title: 'igo.integration.tools.map',
445
- icon: 'map'
446
- })
447
- ], MapToolsComponent);
448
- export { MapToolsComponent };
449
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MapToolsComponent, [{
450
- type: Component,
451
- args: [{ selector: 'igo-map-tools', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-tab-group\n #tabGroup\n [selectedIndex]=\"layerListToolState.selectedTab$ | async\"\n (selectedTabChange)=\"tabChanged($event)\">\n\n <mat-tab [label]=\"'igo.integration.tools.layers' |\u00A0translate\">\n <igo-layer-list *ngIf=\"(layers$ | async).length !== 0; else emptyLayers\"\n igoLayerListBinding\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [layerFilterAndSortOptions]=\"layerFilterAndSortOptions\"\n [expandLegendOfVisibleLayers]=\"expandLegendOfVisibleLayers\"\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n [floatLabel]=\"false\"\n [queryBadge]=\"queryBadge\"\n [map]=\"map\"\n (appliedFilterAndSort)= onLayerListChange($event)>\n\n <ng-template #igoLayerItemToolbar let-layer=\"layer\">\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\n <igo-track-feature-button [trackFeature]=\"true\" [layer]=\"layer\"></igo-track-feature-button>\n <igo-time-filter-button *ngIf=\"isTimeFilterButton(layer)\" [header]=\"timeButton\" [layer]=\"layer\"\n (click)=\"activateTimeFilter()\"></igo-time-filter-button>\n <igo-ogc-filter-button *ngIf=\"isOGCFilterButton(layer)\" [header]=\"ogcButton\" [layer]=\"layer\"\n (click)=\"activateOgcFilter()\"></igo-ogc-filter-button>\n <igo-export-button *ngIf=\"isExportButton(layer)\" [layer]=\"layer\" (click)=\"activateExport(layer)\"></igo-export-button>\n <igo-workspace-button [layer]=\"layer\"></igo-workspace-button>\n </ng-template>\n </igo-layer-list>\n </mat-tab>\n\n <mat-tab [label]=\"'igo.integration.tools.legend' |\u00A0translate\">\n <igo-layer-legend-list *ngIf=\"showAllLegend()\"\n igoLayerLegendListBinding\n [allowShowAllLegends]=\"allowShowAllLegends\"\n [showAllLegendsValue]=\"(showAllLegendsValue$ | async)\"\n (allLegendsShown)=\"onShowAllLegends($event)\"\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\">\n </igo-layer-legend-list>\n <ng-template *ngIf=\"(layers$ | async).length !== 0; else emptyLayers\"></ng-template>\n\n <p class=\"map-empty mat-typography\"\n *ngIf=\"!allowShowAllLegends && (layers$ | async).length !== 0 && (visibleOrInRangeLayers$ | async).length === 0\">\n {{ ((visibleLayers$ | async).length) ? ('igo.integration.mapTool.noLayersInRange' | translate) : ('igo.integration.mapTool.noLayersVisible' | translate) }}\n </p>\n </mat-tab>\n\n <ng-template #emptyLayers>\n <mat-list *ngIf=\"delayedShowEmptyMapContent\">\n <p class=\"map-empty mat-typography\">\n {{'igo.integration.mapTool.empty' | translate}}</p>\n <p *ngIf=\"layerAdditionAllowed && (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\"\n class=\"map-empty mat-typography\">\n {{'igo.integration.mapTool.customize' | translate}}</p>\n\n <mat-list-item *ngIf=\"layerAdditionAllowed && searchToolInToolbar\">\n <mat-icon mat-list-icon> <svg viewBox='0 0 24 24' fit='' height='100%' width='100%'\n preserveAspectRatio='xMidYMid meet' focusable='false'>\n <path\n d='M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z'>\n </path>\n </svg></mat-icon>\n <h4 matLine class=\"search-tool mat-typography\" (click)=\"searchEmit()\">\n {{'igo.integration.mapTool.search-tool' | translate}}\n </h4>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && catalogToolInToolbar\">\n <mat-icon mat-list-icon> <svg viewBox='0 0 24 24' fit='' height='100%' width='100%'\n preserveAspectRatio='xMidYMid meet' focusable='false'>\n <path\n d='M17,14H19V17H22V19H19V22H17V19H14V17H17V14M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z'>\n </path>\n </svg></mat-icon>\n <h4 matLine class=\"catalog-tool mat-typography\" (click)=\"catalogEmit()\">\n {{'igo.integration.mapTool.catalog-tool' | translate}}\n </h4>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && contextToolInToolbar\">\n <mat-icon mat-list-icon> <svg viewBox='0 0 24 24' fit='' height='100%' width='100%'\n preserveAspectRatio='xMidYMid meet' focusable='false'>\n <path\n d='M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z'>\n </path>\n </svg></mat-icon>\n <h4 matLine class=\"context-tool mat-typography\" (click)=\"contextEmit()\">\n {{'igo.integration.mapTool.context-tool' | translate}}\n </h4>\n </mat-list-item>\n </mat-list>\n </ng-template>\n</mat-tab-group>\n", styles: [".map-empty,.search-tool,.catalog-tool,.context-tool{margin:10px}.map-empty{text-align:justify}.search-tool,.catalog-tool,.context-tool{cursor:pointer}mat-list mat-list-item h4{font-weight:700}mat-list-item ::ng-deep .mat-list-text{font-size:smaller}mat-list.mat-list-base mat-list-item.mat-list-item ::ng-deep div.mat-list-item-content div.mat-list-text{padding-left:5px}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"] }]
452
- }], function () { return [{ type: i1.LayerListToolState }, { type: i2.ToolState }, { type: i3.MapState }, { type: i4.SearchSourceService }, { type: i5.ImportExportState }]; }, { allowShowAllLegends: [{
453
- type: Input
454
- }], showAllLegendsValue: [{
455
- type: Input
456
- }], toggleLegendOnVisibilityChange: [{
457
- type: Input
458
- }], expandLegendOfVisibleLayers: [{
459
- type: Input
460
- }], updateLegendOnResolutionChange: [{
461
- type: Input
462
- }], selectedTabAtOpening: [{
463
- type: Input
464
- }], ogcButton: [{
465
- type: Input
466
- }], timeButton: [{
467
- type: Input
468
- }], layerAdditionAllowed: [{
469
- type: Input
470
- }], layerListControls: [{
471
- type: Input
472
- }], queryBadge: [{
473
- type: Input
474
- }], tabGroup: [{
475
- type: ViewChild,
476
- args: ['tabGroup', { static: true }]
477
- }] }); })();
1
+ import { __decorate } from "tslib";
2
+ import { Component, ChangeDetectionStrategy, Input, ViewChild } from '@angular/core';
3
+ import { ToolComponent } from '@igo2/common';
4
+ import { LayerListControlsEnum, sourceCanSearch, VectorLayer } from '@igo2/geo';
5
+ import { BehaviorSubject, combineLatest } from 'rxjs';
6
+ import { map, debounceTime } from 'rxjs/operators';
7
+ import { ImportExportMode } from '../../import-export/import-export.state';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../layer-list-tool.state";
10
+ import * as i2 from "../../tool/tool.state";
11
+ import * as i3 from "../map.state";
12
+ import * as i4 from "@igo2/geo";
13
+ import * as i5 from "../../import-export/import-export.state";
14
+ import * as i6 from "@angular/common";
15
+ import * as i7 from "@angular/material/tabs";
16
+ import * as i8 from "@angular/material/list";
17
+ import * as i9 from "@angular/material/core";
18
+ import * as i10 from "@angular/material/icon";
19
+ import * as i11 from "../../workspace/workspace-button/workspace-button.component";
20
+ import * as i12 from "@ngx-translate/core";
21
+ const _c0 = ["tabGroup"];
22
+ function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_time_filter_button_2_Template(rf, ctx) { if (rf & 1) {
23
+ const _r14 = i0.ɵɵgetCurrentView();
24
+ i0.ɵɵelementStart(0, "igo-time-filter-button", 14);
25
+ i0.ɵɵlistener("click", function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_time_filter_button_2_Template_igo_time_filter_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r13 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r13.activateTimeFilter()); });
26
+ i0.ɵɵelementEnd();
27
+ } if (rf & 2) {
28
+ const layer_r9 = i0.ɵɵnextContext().layer;
29
+ const ctx_r10 = i0.ɵɵnextContext(2);
30
+ i0.ɵɵproperty("header", ctx_r10.timeButton)("layer", layer_r9);
31
+ } }
32
+ function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_ogc_filter_button_3_Template(rf, ctx) { if (rf & 1) {
33
+ const _r17 = i0.ɵɵgetCurrentView();
34
+ i0.ɵɵelementStart(0, "igo-ogc-filter-button", 14);
35
+ i0.ɵɵlistener("click", function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_ogc_filter_button_3_Template_igo_ogc_filter_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r16.activateOgcFilter()); });
36
+ i0.ɵɵelementEnd();
37
+ } if (rf & 2) {
38
+ const layer_r9 = i0.ɵɵnextContext().layer;
39
+ const ctx_r11 = i0.ɵɵnextContext(2);
40
+ i0.ɵɵproperty("header", ctx_r11.ogcButton)("layer", layer_r9);
41
+ } }
42
+ function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_export_button_4_Template(rf, ctx) { if (rf & 1) {
43
+ const _r21 = i0.ɵɵgetCurrentView();
44
+ i0.ɵɵelementStart(0, "igo-export-button", 15);
45
+ i0.ɵɵlistener("click", function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_export_button_4_Template_igo_export_button_click_0_listener() { i0.ɵɵrestoreView(_r21); const layer_r9 = i0.ɵɵnextContext().layer; const ctx_r19 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r19.activateExport(layer_r9)); });
46
+ i0.ɵɵelementEnd();
47
+ } if (rf & 2) {
48
+ const layer_r9 = i0.ɵɵnextContext().layer;
49
+ i0.ɵɵproperty("layer", layer_r9);
50
+ } }
51
+ function MapToolsComponent_igo_layer_list_5_ng_template_1_Template(rf, ctx) { if (rf & 1) {
52
+ i0.ɵɵelement(0, "igo-metadata-button", 10)(1, "igo-track-feature-button", 11);
53
+ i0.ɵɵtemplate(2, MapToolsComponent_igo_layer_list_5_ng_template_1_igo_time_filter_button_2_Template, 1, 2, "igo-time-filter-button", 12);
54
+ i0.ɵɵtemplate(3, MapToolsComponent_igo_layer_list_5_ng_template_1_igo_ogc_filter_button_3_Template, 1, 2, "igo-ogc-filter-button", 12);
55
+ i0.ɵɵtemplate(4, MapToolsComponent_igo_layer_list_5_ng_template_1_igo_export_button_4_Template, 1, 1, "igo-export-button", 13);
56
+ i0.ɵɵelement(5, "igo-workspace-button", 10);
57
+ } if (rf & 2) {
58
+ const layer_r9 = ctx.layer;
59
+ const ctx_r8 = i0.ɵɵnextContext(2);
60
+ i0.ɵɵproperty("layer", layer_r9);
61
+ i0.ɵɵadvance(1);
62
+ i0.ɵɵproperty("trackFeature", true)("layer", layer_r9);
63
+ i0.ɵɵadvance(1);
64
+ i0.ɵɵproperty("ngIf", ctx_r8.isTimeFilterButton(layer_r9));
65
+ i0.ɵɵadvance(1);
66
+ i0.ɵɵproperty("ngIf", ctx_r8.isOGCFilterButton(layer_r9));
67
+ i0.ɵɵadvance(1);
68
+ i0.ɵɵproperty("ngIf", ctx_r8.isExportButton(layer_r9));
69
+ i0.ɵɵadvance(1);
70
+ i0.ɵɵproperty("layer", layer_r9);
71
+ } }
72
+ function MapToolsComponent_igo_layer_list_5_Template(rf, ctx) { if (rf & 1) {
73
+ const _r24 = i0.ɵɵgetCurrentView();
74
+ i0.ɵɵelementStart(0, "igo-layer-list", 8);
75
+ i0.ɵɵlistener("appliedFilterAndSort", function MapToolsComponent_igo_layer_list_5_Template_igo_layer_list_appliedFilterAndSort_0_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r23.onLayerListChange($event)); });
76
+ i0.ɵɵtemplate(1, MapToolsComponent_igo_layer_list_5_ng_template_1_Template, 6, 7, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
77
+ i0.ɵɵelementEnd();
78
+ } if (rf & 2) {
79
+ const ctx_r1 = i0.ɵɵnextContext();
80
+ i0.ɵɵproperty("excludeBaseLayers", ctx_r1.excludeBaseLayers)("layerFilterAndSortOptions", ctx_r1.layerFilterAndSortOptions)("expandLegendOfVisibleLayers", ctx_r1.expandLegendOfVisibleLayers)("toggleLegendOnVisibilityChange", ctx_r1.toggleLegendOnVisibilityChange)("updateLegendOnResolutionChange", ctx_r1.updateLegendOnResolutionChange)("floatLabel", false)("queryBadge", ctx_r1.queryBadge)("map", ctx_r1.map);
81
+ } }
82
+ function MapToolsComponent_igo_layer_legend_list_9_Template(rf, ctx) { if (rf & 1) {
83
+ const _r26 = i0.ɵɵgetCurrentView();
84
+ i0.ɵɵelementStart(0, "igo-layer-legend-list", 16);
85
+ i0.ɵɵlistener("allLegendsShown", function MapToolsComponent_igo_layer_legend_list_9_Template_igo_layer_legend_list_allLegendsShown_0_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r25 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r25.onShowAllLegends($event)); });
86
+ i0.ɵɵpipe(1, "async");
87
+ i0.ɵɵelementEnd();
88
+ } if (rf & 2) {
89
+ const ctx_r2 = i0.ɵɵnextContext();
90
+ i0.ɵɵproperty("allowShowAllLegends", ctx_r2.allowShowAllLegends)("showAllLegendsValue", i0.ɵɵpipeBind1(1, 4, ctx_r2.showAllLegendsValue$))("excludeBaseLayers", ctx_r2.excludeBaseLayers)("updateLegendOnResolutionChange", ctx_r2.updateLegendOnResolutionChange);
91
+ } }
92
+ function MapToolsComponent_10_ng_template_0_Template(rf, ctx) { }
93
+ function MapToolsComponent_10_Template(rf, ctx) { if (rf & 1) {
94
+ i0.ɵɵtemplate(0, MapToolsComponent_10_ng_template_0_Template, 0, 0, "ng-template");
95
+ } }
96
+ function MapToolsComponent_p_12_Template(rf, ctx) { if (rf & 1) {
97
+ i0.ɵɵelementStart(0, "p", 17);
98
+ i0.ɵɵtext(1);
99
+ i0.ɵɵpipe(2, "async");
100
+ i0.ɵɵpipe(3, "translate");
101
+ i0.ɵɵpipe(4, "translate");
102
+ i0.ɵɵelementEnd();
103
+ } if (rf & 2) {
104
+ const ctx_r4 = i0.ɵɵnextContext();
105
+ i0.ɵɵadvance(1);
106
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, ctx_r4.visibleLayers$).length ? i0.ɵɵpipeBind1(3, 3, "igo.integration.mapTool.noLayersInRange") : i0.ɵɵpipeBind1(4, 5, "igo.integration.mapTool.noLayersVisible"), " ");
107
+ } }
108
+ function MapToolsComponent_ng_template_15_mat_list_0_p_4_Template(rf, ctx) { if (rf & 1) {
109
+ i0.ɵɵelementStart(0, "p", 17);
110
+ i0.ɵɵtext(1);
111
+ i0.ɵɵpipe(2, "translate");
112
+ i0.ɵɵelementEnd();
113
+ } if (rf & 2) {
114
+ i0.ɵɵadvance(1);
115
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "igo.integration.mapTool.customize"), "");
116
+ } }
117
+ function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_5_Template(rf, ctx) { if (rf & 1) {
118
+ const _r34 = i0.ɵɵgetCurrentView();
119
+ i0.ɵɵelementStart(0, "mat-list-item")(1, "mat-icon", 19);
120
+ i0.ɵɵnamespaceSVG();
121
+ i0.ɵɵelementStart(2, "svg", 20);
122
+ i0.ɵɵelement(3, "path", 21);
123
+ i0.ɵɵelementEnd()();
124
+ i0.ɵɵnamespaceHTML();
125
+ i0.ɵɵelementStart(4, "h4", 22);
126
+ i0.ɵɵlistener("click", function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_5_Template_h4_click_4_listener() { i0.ɵɵrestoreView(_r34); const ctx_r33 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r33.searchEmit()); });
127
+ i0.ɵɵtext(5);
128
+ i0.ɵɵpipe(6, "translate");
129
+ i0.ɵɵelementEnd()();
130
+ } if (rf & 2) {
131
+ i0.ɵɵadvance(5);
132
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 1, "igo.integration.mapTool.search-tool"), " ");
133
+ } }
134
+ function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_6_Template(rf, ctx) { if (rf & 1) {
135
+ const _r36 = i0.ɵɵgetCurrentView();
136
+ i0.ɵɵelementStart(0, "mat-list-item")(1, "mat-icon", 19);
137
+ i0.ɵɵnamespaceSVG();
138
+ i0.ɵɵelementStart(2, "svg", 20);
139
+ i0.ɵɵelement(3, "path", 23);
140
+ i0.ɵɵelementEnd()();
141
+ i0.ɵɵnamespaceHTML();
142
+ i0.ɵɵelementStart(4, "h4", 24);
143
+ i0.ɵɵlistener("click", function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_6_Template_h4_click_4_listener() { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r35.catalogEmit()); });
144
+ i0.ɵɵtext(5);
145
+ i0.ɵɵpipe(6, "translate");
146
+ i0.ɵɵelementEnd()();
147
+ } if (rf & 2) {
148
+ i0.ɵɵadvance(5);
149
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 1, "igo.integration.mapTool.catalog-tool"), " ");
150
+ } }
151
+ function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_7_Template(rf, ctx) { if (rf & 1) {
152
+ const _r38 = i0.ɵɵgetCurrentView();
153
+ i0.ɵɵelementStart(0, "mat-list-item")(1, "mat-icon", 19);
154
+ i0.ɵɵnamespaceSVG();
155
+ i0.ɵɵelementStart(2, "svg", 20);
156
+ i0.ɵɵelement(3, "path", 25);
157
+ i0.ɵɵelementEnd()();
158
+ i0.ɵɵnamespaceHTML();
159
+ i0.ɵɵelementStart(4, "h4", 26);
160
+ i0.ɵɵlistener("click", function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_7_Template_h4_click_4_listener() { i0.ɵɵrestoreView(_r38); const ctx_r37 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r37.contextEmit()); });
161
+ i0.ɵɵtext(5);
162
+ i0.ɵɵpipe(6, "translate");
163
+ i0.ɵɵelementEnd()();
164
+ } if (rf & 2) {
165
+ i0.ɵɵadvance(5);
166
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 1, "igo.integration.mapTool.context-tool"), " ");
167
+ } }
168
+ function MapToolsComponent_ng_template_15_mat_list_0_Template(rf, ctx) { if (rf & 1) {
169
+ i0.ɵɵelementStart(0, "mat-list")(1, "p", 17);
170
+ i0.ɵɵtext(2);
171
+ i0.ɵɵpipe(3, "translate");
172
+ i0.ɵɵelementEnd();
173
+ i0.ɵɵtemplate(4, MapToolsComponent_ng_template_15_mat_list_0_p_4_Template, 3, 3, "p", 6);
174
+ i0.ɵɵtemplate(5, MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_5_Template, 7, 3, "mat-list-item", 18);
175
+ i0.ɵɵtemplate(6, MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_6_Template, 7, 3, "mat-list-item", 18);
176
+ i0.ɵɵtemplate(7, MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_7_Template, 7, 3, "mat-list-item", 18);
177
+ i0.ɵɵelementEnd();
178
+ } if (rf & 2) {
179
+ const ctx_r28 = i0.ɵɵnextContext(2);
180
+ i0.ɵɵadvance(2);
181
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 5, "igo.integration.mapTool.empty"), "");
182
+ i0.ɵɵadvance(2);
183
+ i0.ɵɵproperty("ngIf", ctx_r28.layerAdditionAllowed && (ctx_r28.searchToolInToolbar || ctx_r28.catalogToolInToolbar || ctx_r28.contextToolInToolbar));
184
+ i0.ɵɵadvance(1);
185
+ i0.ɵɵproperty("ngIf", ctx_r28.layerAdditionAllowed && ctx_r28.searchToolInToolbar);
186
+ i0.ɵɵadvance(1);
187
+ i0.ɵɵproperty("ngIf", ctx_r28.layerAdditionAllowed && ctx_r28.catalogToolInToolbar);
188
+ i0.ɵɵadvance(1);
189
+ i0.ɵɵproperty("ngIf", ctx_r28.layerAdditionAllowed && ctx_r28.contextToolInToolbar);
190
+ } }
191
+ function MapToolsComponent_ng_template_15_Template(rf, ctx) { if (rf & 1) {
192
+ i0.ɵɵtemplate(0, MapToolsComponent_ng_template_15_mat_list_0_Template, 8, 7, "mat-list", 18);
193
+ } if (rf & 2) {
194
+ const ctx_r6 = i0.ɵɵnextContext();
195
+ i0.ɵɵproperty("ngIf", ctx_r6.delayedShowEmptyMapContent);
196
+ } }
197
+ /**
198
+ * Tool to browse a map's layers or to choose a different map
199
+ */
200
+ let MapToolsComponent = class MapToolsComponent {
201
+ constructor(layerListToolState, toolState, mapState, searchSourceService, importExportState) {
202
+ this.layerListToolState = layerListToolState;
203
+ this.toolState = toolState;
204
+ this.mapState = mapState;
205
+ this.searchSourceService = searchSourceService;
206
+ this.importExportState = importExportState;
207
+ this.layers$ = new BehaviorSubject([]);
208
+ this.showAllLegendsValue$ = new BehaviorSubject(false);
209
+ this.delayedShowEmptyMapContent = false;
210
+ this.allowShowAllLegends = false;
211
+ this.showAllLegendsValue = false;
212
+ this.toggleLegendOnVisibilityChange = false;
213
+ this.expandLegendOfVisibleLayers = false;
214
+ this.updateLegendOnResolutionChange = false;
215
+ this.ogcButton = true;
216
+ this.timeButton = true;
217
+ this.layerAdditionAllowed = true;
218
+ this._layerListControls = {};
219
+ this.queryBadge = false;
220
+ }
221
+ get layerListControls() {
222
+ return this._layerListControls;
223
+ }
224
+ set layerListControls(value) {
225
+ const stateOptions = this.layerListToolState.getLayerListControls();
226
+ const stateKeyword = stateOptions.keyword;
227
+ const stateOnlyVisible = stateOptions.onlyVisible;
228
+ const stateSortAlpha = stateOptions.sortAlpha;
229
+ value.keyword = stateKeyword !== '' ? stateKeyword : value.keyword;
230
+ value.onlyVisible =
231
+ stateOnlyVisible !== undefined ? stateOnlyVisible : value.onlyVisible;
232
+ value.sortAlpha =
233
+ stateSortAlpha !== undefined ? stateSortAlpha : value.sortAlpha;
234
+ value.onlyVisible =
235
+ value.onlyVisible === undefined ? false : value.onlyVisible;
236
+ value.sortAlpha = value.sortAlpha === undefined ? false : value.sortAlpha;
237
+ this._layerListControls = value;
238
+ }
239
+ get map() {
240
+ return this.mapState.map;
241
+ }
242
+ get visibleOrInRangeLayers$() {
243
+ return this.layers$.pipe(map((layers) => layers.filter((layer) => layer.visible$.value && layer.isInResolutionsRange$.value)));
244
+ }
245
+ get visibleLayers$() {
246
+ return this.layers$.pipe(map((layers) => layers.filter((layer) => layer.visible$.value)));
247
+ }
248
+ get excludeBaseLayers() {
249
+ return this.layerListControls.excludeBaseLayers || false;
250
+ }
251
+ get layerFilterAndSortOptions() {
252
+ const filterSortOptions = Object.assign({
253
+ showToolbar: LayerListControlsEnum.default
254
+ }, this.layerListControls);
255
+ switch (this.layerListControls.showToolbar) {
256
+ case LayerListControlsEnum.always:
257
+ filterSortOptions.showToolbar = LayerListControlsEnum.always;
258
+ break;
259
+ case LayerListControlsEnum.never:
260
+ filterSortOptions.showToolbar = LayerListControlsEnum.never;
261
+ break;
262
+ default:
263
+ break;
264
+ }
265
+ return filterSortOptions;
266
+ }
267
+ get searchToolInToolbar() {
268
+ return (this.toolState.toolbox.getToolbar().indexOf('searchResults') !== -1 &&
269
+ this.searchSourceService
270
+ .getSources()
271
+ .filter(sourceCanSearch)
272
+ .filter((s) => s.available && s.getType() === 'Layer').length > 0);
273
+ }
274
+ get catalogToolInToolbar() {
275
+ return this.toolState.toolbox.getToolbar().indexOf('catalog') !== -1;
276
+ }
277
+ get contextToolInToolbar() {
278
+ return this.toolState.toolbox.getToolbar().indexOf('contextManager') !== -1;
279
+ }
280
+ ngOnInit() {
281
+ this.selectedTab();
282
+ this.resolution$$ = combineLatest([
283
+ this.map.layers$,
284
+ this.map.viewController.resolution$
285
+ ])
286
+ .pipe(debounceTime(10))
287
+ .subscribe((bunch) => {
288
+ this.layers$.next(bunch[0].filter((layer) => layer.showInLayerList !== false &&
289
+ (!this.excludeBaseLayers || !layer.baseLayer)));
290
+ });
291
+ if (this.allowShowAllLegends) {
292
+ this.mapState.showAllLegendsValue =
293
+ this.mapState.showAllLegendsValue !== undefined
294
+ ? this.mapState.showAllLegendsValue
295
+ : this.showAllLegendsValue || false;
296
+ this.showAllLegendsValue$.next(this.mapState.showAllLegendsValue);
297
+ }
298
+ else {
299
+ this.showAllLegendsValue$.next(false);
300
+ }
301
+ // prevent message to be shown too quickly. Waiting for layers
302
+ setTimeout(() => (this.delayedShowEmptyMapContent = true), 250);
303
+ }
304
+ ngOnDestroy() {
305
+ this.resolution$$.unsubscribe();
306
+ if (this.visibleOrInRangeLayers$$) {
307
+ this.visibleOrInRangeLayers$$.unsubscribe();
308
+ }
309
+ }
310
+ onShowAllLegends(event) {
311
+ this.mapState.showAllLegendsValue = event;
312
+ this.showAllLegendsValue$.next(event);
313
+ }
314
+ selectedTab() {
315
+ const userSelectedTab = this.layerListToolState.selectedTab$.value;
316
+ if (userSelectedTab !== undefined) {
317
+ this.layerListToolState.setSelectedTab(userSelectedTab);
318
+ }
319
+ else {
320
+ if (this.selectedTabAtOpening === 'legend') {
321
+ this.layerListToolState.setSelectedTab(1);
322
+ }
323
+ else {
324
+ this.layerListToolState.setSelectedTab(0);
325
+ }
326
+ }
327
+ }
328
+ tabChanged(tab) {
329
+ this.layerListToolState.setSelectedTab(tab.index);
330
+ this.layers$.next(this.map.layers.filter((layer) => layer.showInLayerList !== false &&
331
+ (!this.excludeBaseLayers || !layer.baseLayer)));
332
+ }
333
+ onLayerListChange(appliedFilters) {
334
+ this.layerListToolState.setKeyword(appliedFilters.keyword);
335
+ this.layerListToolState.setSortAlpha(appliedFilters.sortAlpha);
336
+ this.layerListToolState.setOnlyVisible(appliedFilters.onlyVisible);
337
+ }
338
+ showAllLegend() {
339
+ if (this.layers$.getValue().length === 0) {
340
+ return false;
341
+ }
342
+ else if (this.layers$.getValue().length !== 0 &&
343
+ this.allowShowAllLegends === false) {
344
+ let visibleOrInRangeLayers;
345
+ this.visibleOrInRangeLayers$$ = this.visibleOrInRangeLayers$.subscribe((value) => {
346
+ value.length === 0
347
+ ? (visibleOrInRangeLayers = false)
348
+ : (visibleOrInRangeLayers = true);
349
+ });
350
+ if (visibleOrInRangeLayers === false) {
351
+ return false;
352
+ }
353
+ }
354
+ return true;
355
+ }
356
+ activateExport(layer) {
357
+ let id = layer.id;
358
+ if (layer.options.workspace?.workspaceId) {
359
+ id = layer.options.workspace.workspaceId !== layer.id ? layer.options.workspace.workspaceId : layer.id;
360
+ }
361
+ this.importExportState.setsExportOptions({ layers: [id] });
362
+ this.importExportState.setMode(ImportExportMode.export);
363
+ this.toolState.toolbox.activateTool('importExport');
364
+ }
365
+ activateTimeFilter() {
366
+ this.toolState.toolbox.activateTool('activeTimeFilter');
367
+ }
368
+ activateOgcFilter() {
369
+ this.toolState.toolbox.activateTool('activeOgcFilter');
370
+ }
371
+ searchEmit() {
372
+ this.toolState.toolbox.activateTool('searchResults');
373
+ }
374
+ catalogEmit() {
375
+ this.toolState.toolbox.activateTool('catalog');
376
+ }
377
+ contextEmit() {
378
+ this.toolState.toolbox.activateTool('contextManager');
379
+ }
380
+ isTimeFilterButton(layer) {
381
+ const options = layer.dataSource.options;
382
+ return this.timeButton && options.timeFilterable && options.timeFilter;
383
+ }
384
+ isOGCFilterButton(layer) {
385
+ const options = layer.dataSource.options;
386
+ return this.ogcButton && options.ogcFilters && options.ogcFilters.enabled &&
387
+ (options.ogcFilters.pushButtons || options.ogcFilters.checkboxes || options.ogcFilters.radioButtons
388
+ || options.ogcFilters.select || options.ogcFilters.autocomplete || options.ogcFilters.editable);
389
+ }
390
+ isExportButton(layer) {
391
+ if ((layer instanceof VectorLayer && layer.exportable === true) ||
392
+ (layer.dataSource.options.download && layer.dataSource.options.download.url) ||
393
+ (layer.options.workspace?.enabled && layer.options.workspace?.workspaceId !== layer.id)) {
394
+ return true;
395
+ }
396
+ return false;
397
+ }
398
+ };
399
+ MapToolsComponent.ɵfac = function MapToolsComponent_Factory(t) { return new (t || MapToolsComponent)(i0.ɵɵdirectiveInject(i1.LayerListToolState), i0.ɵɵdirectiveInject(i2.ToolState), i0.ɵɵdirectiveInject(i3.MapState), i0.ɵɵdirectiveInject(i4.SearchSourceService), i0.ɵɵdirectiveInject(i5.ImportExportState)); };
400
+ MapToolsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MapToolsComponent, selectors: [["igo-map-tools"]], viewQuery: function MapToolsComponent_Query(rf, ctx) { if (rf & 1) {
401
+ i0.ɵɵviewQuery(_c0, 7);
402
+ } if (rf & 2) {
403
+ let _t;
404
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabGroup = _t.first);
405
+ } }, inputs: { allowShowAllLegends: "allowShowAllLegends", showAllLegendsValue: "showAllLegendsValue", toggleLegendOnVisibilityChange: "toggleLegendOnVisibilityChange", expandLegendOfVisibleLayers: "expandLegendOfVisibleLayers", updateLegendOnResolutionChange: "updateLegendOnResolutionChange", selectedTabAtOpening: "selectedTabAtOpening", ogcButton: "ogcButton", timeButton: "timeButton", layerAdditionAllowed: "layerAdditionAllowed", layerListControls: "layerListControls", queryBadge: "queryBadge" }, decls: 17, vars: 23, consts: [[3, "selectedIndex", "selectedTabChange"], ["tabGroup", ""], [3, "label"], ["igoLayerListBinding", "", 3, "excludeBaseLayers", "layerFilterAndSortOptions", "expandLegendOfVisibleLayers", "toggleLegendOnVisibilityChange", "updateLegendOnResolutionChange", "floatLabel", "queryBadge", "map", "appliedFilterAndSort", 4, "ngIf", "ngIfElse"], ["igoLayerLegendListBinding", "", 3, "allowShowAllLegends", "showAllLegendsValue", "excludeBaseLayers", "updateLegendOnResolutionChange", "allLegendsShown", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["class", "map-empty mat-typography", 4, "ngIf"], ["emptyLayers", ""], ["igoLayerListBinding", "", 3, "excludeBaseLayers", "layerFilterAndSortOptions", "expandLegendOfVisibleLayers", "toggleLegendOnVisibilityChange", "updateLegendOnResolutionChange", "floatLabel", "queryBadge", "map", "appliedFilterAndSort"], ["igoLayerItemToolbar", ""], [3, "layer"], [3, "trackFeature", "layer"], [3, "header", "layer", "click", 4, "ngIf"], [3, "layer", "click", 4, "ngIf"], [3, "header", "layer", "click"], [3, "layer", "click"], ["igoLayerLegendListBinding", "", 3, "allowShowAllLegends", "showAllLegendsValue", "excludeBaseLayers", "updateLegendOnResolutionChange", "allLegendsShown"], [1, "map-empty", "mat-typography"], [4, "ngIf"], ["mat-list-icon", ""], ["viewBox", "0 0 24 24", "fit", "", "height", "100%", "width", "100%", "preserveAspectRatio", "xMidYMid meet", "focusable", "false"], ["d", "M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"], ["matLine", "", 1, "search-tool", "mat-typography", 3, "click"], ["d", "M17,14H19V17H22V19H19V22H17V19H14V17H17V14M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z"], ["matLine", "", 1, "catalog-tool", "mat-typography", 3, "click"], ["d", "M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z"], ["matLine", "", 1, "context-tool", "mat-typography", 3, "click"]], template: function MapToolsComponent_Template(rf, ctx) { if (rf & 1) {
406
+ i0.ɵɵelementStart(0, "mat-tab-group", 0, 1);
407
+ i0.ɵɵlistener("selectedTabChange", function MapToolsComponent_Template_mat_tab_group_selectedTabChange_0_listener($event) { return ctx.tabChanged($event); });
408
+ i0.ɵɵpipe(2, "async");
409
+ i0.ɵɵelementStart(3, "mat-tab", 2);
410
+ i0.ɵɵpipe(4, "translate");
411
+ i0.ɵɵtemplate(5, MapToolsComponent_igo_layer_list_5_Template, 3, 8, "igo-layer-list", 3);
412
+ i0.ɵɵpipe(6, "async");
413
+ i0.ɵɵelementEnd();
414
+ i0.ɵɵelementStart(7, "mat-tab", 2);
415
+ i0.ɵɵpipe(8, "translate");
416
+ i0.ɵɵtemplate(9, MapToolsComponent_igo_layer_legend_list_9_Template, 2, 6, "igo-layer-legend-list", 4);
417
+ i0.ɵɵtemplate(10, MapToolsComponent_10_Template, 1, 0, null, 5);
418
+ i0.ɵɵpipe(11, "async");
419
+ i0.ɵɵtemplate(12, MapToolsComponent_p_12_Template, 5, 7, "p", 6);
420
+ i0.ɵɵpipe(13, "async");
421
+ i0.ɵɵpipe(14, "async");
422
+ i0.ɵɵelementEnd();
423
+ i0.ɵɵtemplate(15, MapToolsComponent_ng_template_15_Template, 1, 1, "ng-template", null, 7, i0.ɵɵtemplateRefExtractor);
424
+ i0.ɵɵelementEnd();
425
+ } if (rf & 2) {
426
+ const _r5 = i0.ɵɵreference(16);
427
+ i0.ɵɵproperty("selectedIndex", i0.ɵɵpipeBind1(2, 9, ctx.layerListToolState.selectedTab$));
428
+ i0.ɵɵadvance(3);
429
+ i0.ɵɵproperty("label", i0.ɵɵpipeBind1(4, 11, "igo.integration.tools.layers"));
430
+ i0.ɵɵadvance(2);
431
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(6, 13, ctx.layers$).length !== 0)("ngIfElse", _r5);
432
+ i0.ɵɵadvance(2);
433
+ i0.ɵɵproperty("label", i0.ɵɵpipeBind1(8, 15, "igo.integration.tools.legend"));
434
+ i0.ɵɵadvance(2);
435
+ i0.ɵɵproperty("ngIf", ctx.showAllLegend());
436
+ i0.ɵɵadvance(1);
437
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(11, 17, ctx.layers$).length !== 0)("ngIfElse", _r5);
438
+ i0.ɵɵadvance(2);
439
+ i0.ɵɵproperty("ngIf", !ctx.allowShowAllLegends && i0.ɵɵpipeBind1(13, 19, ctx.layers$).length !== 0 && i0.ɵɵpipeBind1(14, 21, ctx.visibleOrInRangeLayers$).length === 0);
440
+ } }, dependencies: [i6.NgIf, i7.MatTabGroup, i7.MatTab, i8.MatList, i8.MatListItem, i9.MatLine, i8.MatListIconCssMatStyler, i10.MatIcon, i4.LayerListComponent, i4.LayerLegendListComponent, i4.LayerListBindingDirective, i4.LayerLegendListBindingDirective, i4.TrackFeatureButtonComponent, i4.MetadataButtonComponent, i4.ExportButtonComponent, i4.TimeFilterButtonComponent, i4.OgcFilterButtonComponent, i11.WorkspaceButtonComponent, i6.AsyncPipe, i12.TranslatePipe], styles: [".map-empty[_ngcontent-%COMP%], .search-tool[_ngcontent-%COMP%], .catalog-tool[_ngcontent-%COMP%], .context-tool[_ngcontent-%COMP%]{margin:10px}.map-empty[_ngcontent-%COMP%]{text-align:justify}.search-tool[_ngcontent-%COMP%], .catalog-tool[_ngcontent-%COMP%], .context-tool[_ngcontent-%COMP%]{cursor:pointer}mat-list[_ngcontent-%COMP%] mat-list-item[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{font-weight:700}mat-list-item[_ngcontent-%COMP%] .mat-list-text{font-size:smaller}mat-list.mat-list-base[_ngcontent-%COMP%] mat-list-item.mat-list-item[_ngcontent-%COMP%] div.mat-list-item-content div.mat-list-text{padding-left:5px}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 });
441
+ MapToolsComponent = __decorate([
442
+ ToolComponent({
443
+ name: 'mapTools',
444
+ title: 'igo.integration.tools.map',
445
+ icon: 'map'
446
+ })
447
+ ], MapToolsComponent);
448
+ export { MapToolsComponent };
449
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MapToolsComponent, [{
450
+ type: Component,
451
+ args: [{ selector: 'igo-map-tools', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-tab-group\n #tabGroup\n [selectedIndex]=\"layerListToolState.selectedTab$ | async\"\n (selectedTabChange)=\"tabChanged($event)\">\n\n <mat-tab [label]=\"'igo.integration.tools.layers' |\u00A0translate\">\n <igo-layer-list *ngIf=\"(layers$ | async).length !== 0; else emptyLayers\"\n igoLayerListBinding\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [layerFilterAndSortOptions]=\"layerFilterAndSortOptions\"\n [expandLegendOfVisibleLayers]=\"expandLegendOfVisibleLayers\"\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n [floatLabel]=\"false\"\n [queryBadge]=\"queryBadge\"\n [map]=\"map\"\n (appliedFilterAndSort)= onLayerListChange($event)>\n\n <ng-template #igoLayerItemToolbar let-layer=\"layer\">\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\n <igo-track-feature-button [trackFeature]=\"true\" [layer]=\"layer\"></igo-track-feature-button>\n <igo-time-filter-button *ngIf=\"isTimeFilterButton(layer)\" [header]=\"timeButton\" [layer]=\"layer\"\n (click)=\"activateTimeFilter()\"></igo-time-filter-button>\n <igo-ogc-filter-button *ngIf=\"isOGCFilterButton(layer)\" [header]=\"ogcButton\" [layer]=\"layer\"\n (click)=\"activateOgcFilter()\"></igo-ogc-filter-button>\n <igo-export-button *ngIf=\"isExportButton(layer)\" [layer]=\"layer\" (click)=\"activateExport(layer)\"></igo-export-button>\n <igo-workspace-button [layer]=\"layer\"></igo-workspace-button>\n </ng-template>\n </igo-layer-list>\n </mat-tab>\n\n <mat-tab [label]=\"'igo.integration.tools.legend' |\u00A0translate\">\n <igo-layer-legend-list *ngIf=\"showAllLegend()\"\n igoLayerLegendListBinding\n [allowShowAllLegends]=\"allowShowAllLegends\"\n [showAllLegendsValue]=\"(showAllLegendsValue$ | async)\"\n (allLegendsShown)=\"onShowAllLegends($event)\"\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\">\n </igo-layer-legend-list>\n <ng-template *ngIf=\"(layers$ | async).length !== 0; else emptyLayers\"></ng-template>\n\n <p class=\"map-empty mat-typography\"\n *ngIf=\"!allowShowAllLegends && (layers$ | async).length !== 0 && (visibleOrInRangeLayers$ | async).length === 0\">\n {{ ((visibleLayers$ | async).length) ? ('igo.integration.mapTool.noLayersInRange' | translate) : ('igo.integration.mapTool.noLayersVisible' | translate) }}\n </p>\n </mat-tab>\n\n <ng-template #emptyLayers>\n <mat-list *ngIf=\"delayedShowEmptyMapContent\">\n <p class=\"map-empty mat-typography\">\n {{'igo.integration.mapTool.empty' | translate}}</p>\n <p *ngIf=\"layerAdditionAllowed && (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\"\n class=\"map-empty mat-typography\">\n {{'igo.integration.mapTool.customize' | translate}}</p>\n\n <mat-list-item *ngIf=\"layerAdditionAllowed && searchToolInToolbar\">\n <mat-icon mat-list-icon> <svg viewBox='0 0 24 24' fit='' height='100%' width='100%'\n preserveAspectRatio='xMidYMid meet' focusable='false'>\n <path\n d='M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z'>\n </path>\n </svg></mat-icon>\n <h4 matLine class=\"search-tool mat-typography\" (click)=\"searchEmit()\">\n {{'igo.integration.mapTool.search-tool' | translate}}\n </h4>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && catalogToolInToolbar\">\n <mat-icon mat-list-icon> <svg viewBox='0 0 24 24' fit='' height='100%' width='100%'\n preserveAspectRatio='xMidYMid meet' focusable='false'>\n <path\n d='M17,14H19V17H22V19H19V22H17V19H14V17H17V14M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z'>\n </path>\n </svg></mat-icon>\n <h4 matLine class=\"catalog-tool mat-typography\" (click)=\"catalogEmit()\">\n {{'igo.integration.mapTool.catalog-tool' | translate}}\n </h4>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && contextToolInToolbar\">\n <mat-icon mat-list-icon> <svg viewBox='0 0 24 24' fit='' height='100%' width='100%'\n preserveAspectRatio='xMidYMid meet' focusable='false'>\n <path\n d='M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z'>\n </path>\n </svg></mat-icon>\n <h4 matLine class=\"context-tool mat-typography\" (click)=\"contextEmit()\">\n {{'igo.integration.mapTool.context-tool' | translate}}\n </h4>\n </mat-list-item>\n </mat-list>\n </ng-template>\n</mat-tab-group>\n", styles: [".map-empty,.search-tool,.catalog-tool,.context-tool{margin:10px}.map-empty{text-align:justify}.search-tool,.catalog-tool,.context-tool{cursor:pointer}mat-list mat-list-item h4{font-weight:700}mat-list-item ::ng-deep .mat-list-text{font-size:smaller}mat-list.mat-list-base mat-list-item.mat-list-item ::ng-deep div.mat-list-item-content div.mat-list-text{padding-left:5px}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"] }]
452
+ }], function () { return [{ type: i1.LayerListToolState }, { type: i2.ToolState }, { type: i3.MapState }, { type: i4.SearchSourceService }, { type: i5.ImportExportState }]; }, { allowShowAllLegends: [{
453
+ type: Input
454
+ }], showAllLegendsValue: [{
455
+ type: Input
456
+ }], toggleLegendOnVisibilityChange: [{
457
+ type: Input
458
+ }], expandLegendOfVisibleLayers: [{
459
+ type: Input
460
+ }], updateLegendOnResolutionChange: [{
461
+ type: Input
462
+ }], selectedTabAtOpening: [{
463
+ type: Input
464
+ }], ogcButton: [{
465
+ type: Input
466
+ }], timeButton: [{
467
+ type: Input
468
+ }], layerAdditionAllowed: [{
469
+ type: Input
470
+ }], layerListControls: [{
471
+ type: Input
472
+ }], queryBadge: [{
473
+ type: Input
474
+ }], tabGroup: [{
475
+ type: ViewChild,
476
+ args: ['tabGroup', { static: true }]
477
+ }] }); })();
478
478
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXRvb2xzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC10b29scy9tYXAtdG9vbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXRvb2xzL21hcC10b29scy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsS0FBSyxFQUVMLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFDTCxxQkFBcUIsRUFJckIsZUFBZSxFQUdmLFdBQVcsRUFDWixNQUFNLFdBQVcsQ0FBQztBQU1uQixPQUFPLEVBQUUsZUFBZSxFQUE0QixhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEYsT0FBTyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQXFCLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDTnRGLGtEQUN1RDtJQUEvQixtT0FBUyxlQUFBLDRCQUFvQixDQUFBLElBQUM7SUFBQyxpQkFBeUI7Ozs7SUFEdEIsMkNBQXFCLG1CQUFBOzs7O0lBRS9FLGlEQUNzRDtJQUE5QixpT0FBUyxlQUFBLDJCQUFtQixDQUFBLElBQUM7SUFBQyxpQkFBd0I7Ozs7SUFEdEIsMENBQW9CLG1CQUFBOzs7O0lBRTVFLDZDQUFpRztJQUFoQyxvUUFBUyxlQUFBLGdDQUFxQixDQUFBLElBQUM7SUFBQyxpQkFBb0I7OztJQUFwRSxnQ0FBZTs7O0lBTmhFLDBDQUEyRCxtQ0FBQTtJQUUzRCx3SUFDZ0Y7SUFDaEYsc0lB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LGlCQUFnQjs7O1FBekZkLHlGQUF5RDtRQUdoRCxlQUFvRDtRQUFwRCw2RUFBb0Q7UUFDMUMsZUFBc0M7UUFBdEMsc0VBQXNDLGlCQUFBO1FBeUJoRCxlQUFvRDtRQUFwRCw2RUFBb0Q7UUFDbkMsZUFBcUI7UUFBckIsMENBQXFCO1FBUS9CLGVBQXNDO1FBQXRDLHVFQUFzQyxpQkFBQTtRQUdqRCxlQUE4RztRQUE5Ryx1S0FBOEc7O0FERHhHLGlCQUFpQjtJQVg3QixhQUFhLENBQUM7UUFDYixJQUFJLEVBQUUsVUFBVTtRQUNoQixLQUFLLEVBQUUsMkJBQTJCO1FBQ2xDLElBQUksRUFBRSxLQUFLO0tBQ1osQ0FBQztHQU9XLGlCQUFpQixDQStRN0I7U0EvUVksaUJBQWlCO3VGQUFqQixpQkFBaUI7Y0FON0IsU0FBUzsyQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU07c0xBVXRDLG1CQUFtQjtrQkFBM0IsS0FBSztZQUVHLG1CQUFtQjtrQkFBM0IsS0FBSztZQUVHLDhCQUE4QjtrQkFBdEMsS0FBSztZQUVHLDJCQUEyQjtrQkFBbkMsS0FBSztZQUVHLDhCQUE4QjtrQkFBdEMsS0FBSztZQUVHLG9CQUFvQjtrQkFBNUIsS0FBSztZQUVHLFNBQVM7a0JBQWpCLEtBQUs7WUFFRyxVQUFVO2tCQUFsQixLQUFLO1lBRUcsb0JBQW9CO2tCQUE1QixLQUFLO1lBR0YsaUJBQWlCO2tCQURwQixLQUFLO1lBNEJHLFVBQVU7a0JBQWxCLEtBQUs7WUEyQ21DLFFBQVE7a0JBQWhELFNBQVM7bUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgT25EZXN0cm95XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUb29sQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uJztcbmltcG9ydCB7XG4gIExheWVyTGlzdENvbnRyb2xzRW51bSxcbiAgTGF5ZXJMaXN0Q29udHJvbHNPcHRpb25zLFxuICBJZ29NYXAsXG4gIFNlYXJjaFNvdXJjZVNlcnZpY2UsXG4gIHNvdXJjZUNhblNlYXJjaCxcbiAgTGF5ZXIsXG4gIEV4cG9ydE9wdGlvbnMsXG4gIFZlY3RvckxheWVyXG59IGZyb20gJ0BpZ28yL2dlbyc7XG5cbmltcG9ydCB7IExheWVyTGlzdFRvb2xTdGF0ZSB9IGZyb20gJy4uL2xheWVyLWxpc3QtdG9vbC5zdGF0ZSc7XG5pbXBvcnQgeyBNYXRUYWJDaGFuZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHsgVG9vbFN0YXRlIH0gZnJvbSAnLi4vLi4vdG9vbC90b29sLnN0YXRlJztcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi4vbWFwLnN0YXRlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEltcG9ydEV4cG9ydE1vZGUsIEltcG9ydEV4cG9ydFN0YXRlIH0gZnJvbSAnLi4vLi4vaW1wb3J0LWV4cG9ydC9pbXBvcnQtZXhwb3J0LnN0YXRlJztcbi8qKlxuICogVG9vbCB0byBicm93c2UgYSBtYXAncyBsYXllcnMgb3IgdG8gY2hvb3NlIGEgZGlmZmVyZW50IG1hcFxuICovXG5AVG9vbENvbXBvbmVudCh7XG4gIG5hbWU6ICdtYXBUb29scycsXG4gIHRpdGxlOiAnaWdvLmludGVncmF0aW9uLnRvb2xzLm1hcCcsXG4gIGljb246ICdtYXAnXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLW1hcC10b29scycsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXAtdG9vbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXAtdG9vbHMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTWFwVG9vbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGxheWVycyQ6IEJlaGF2aW9yU3ViamVjdDxMYXllcltdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pO1xuICBzaG93QWxsTGVnZW5kc1ZhbHVlJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHJpdmF0ZSByZXNvbHV0aW9uJCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSB2aXNpYmxlT3JJblJhbmdlTGF5ZXJzJCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGRlbGF5ZWRTaG93RW1wdHlNYXBDb250ZW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgYWxsb3dTaG93QWxsTGVnZW5kczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNob3dBbGxMZWdlbmRzVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSB0b2dnbGVMZWdlbmRPblZpc2liaWxpdHlDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBleHBhbmRMZWdlbmRPZlZpc2libGVMYXllcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSB1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZWxlY3RlZFRhYkF0T3BlbmluZzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIG9nY0J1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgdGltZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgbGF5ZXJBZGRpdGlvbkFsbG93ZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBsYXllckxpc3RDb250cm9scygpOiBMYXllckxpc3RDb250cm9sc09wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLl9sYXllckxpc3RDb250cm9scztcbiAgfVxuICBzZXQgbGF5ZXJMaXN0Q29udHJvbHModmFsdWU6IExheWVyTGlzdENvbnRyb2xzT3B0aW9ucykge1xuICAgIGNvbnN0IHN0YXRlT3B0aW9ucyA9IHRoaXMubGF5ZXJMaXN0VG9vbFN0YXRlLmdldExheWVyTGlzdENvbnRyb2xzKCk7XG4gICAgY29uc3Qgc3RhdGVLZXl3b3JkID0gc3RhdGVPcHRpb25zLmtleXdvcmQ7XG4gICAgY29uc3Qgc3RhdGVPbmx5VmlzaWJsZSA9IHN0YXRlT3B0aW9ucy5vbmx5VmlzaWJsZTtcbiAgICBjb25zdCBzdGF0ZVNvcnRBbHBoYSA9IHN0YXRlT3B0aW9ucy5zb3J0QWxwaGE7XG5cbiAgICB2YWx1ZS5rZXl3b3JkID0gc3RhdGVLZXl3b3JkICE9PSAnJyA/IHN0YXRlS2V5d29yZCA6IHZhbHVlLmtleXdvcmQ7XG4gICAgdmFsdWUub25seVZpc2libGUgPVxuICAgICAgc3RhdGVPbmx5VmlzaWJsZSAhPT0gdW5kZWZpbmVkID8gc3RhdGVPbmx5VmlzaWJsZSA6IHZhbHVlLm9ubHlWaXNpYmxlO1xuICAgIHZhbHVlLnNvcnRBbHBoYSA9XG4gICAgICBzdGF0ZVNvcnRBbHBoYSAhPT0gdW5kZWZpbmVkID8gc3RhdGVTb3J0QWxwaGEgOiB2YWx1ZS5zb3J0QWxwaGE7XG5cbiAgICB2YWx1ZS5vbmx5VmlzaWJsZSA9XG4gICAgICB2YWx1ZS5vbmx5VmlzaWJsZSA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiB2YWx1ZS5vbmx5VmlzaWJsZTtcbiAgICB2YWx1ZS5zb3J0QWxwaGEgPSB2YWx1ZS5zb3J0QWxwaGEgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogdmFsdWUuc29ydEFscGhhO1xuXG4gICAgdGhpcy5fbGF5ZXJMaXN0Q29udHJvbHMgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF9sYXllckxpc3RDb250cm9scyA9IHt9O1xuXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcbiAgICByZXR1cm4gdGhpcy5tYXBTdGF0ZS5tYXA7XG4gIH1cblxuICBASW5wdXQoKSBxdWVyeUJhZGdlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZ2V0IHZpc2libGVPckluUmFuZ2VMYXllcnMkKCk6IE9ic2VydmFibGU8TGF5ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLmxheWVycyQucGlwZShcbiAgICAgIG1hcCgobGF5ZXJzKSA9PlxuICAgICAgICBsYXllcnMuZmlsdGVyKFxuICAgICAgICAgIChsYXllcikgPT4gbGF5ZXIudmlzaWJsZSQudmFsdWUgJiYgbGF5ZXIuaXNJblJlc29sdXRpb25zUmFuZ2UkLnZhbHVlXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgZ2V0IHZpc2libGVMYXllcnMkKCk6IE9ic2VydmFibGU8TGF5ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLmxheWVycyQucGlwZShcbiAgICAgIG1hcCgobGF5ZXJzKSA9PiBsYXllcnMuZmlsdGVyKChsYXllcikgPT4gbGF5ZXIudmlzaWJsZSQudmFsdWUpKVxuICAgICk7XG4gIH1cblxuICBnZXQgZXhjbHVkZUJhc2VMYXllcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGF5ZXJMaXN0Q29udHJvbHMuZXhjbHVkZUJhc2VMYXllcnMgfHwgZmFsc2U7XG4gIH1cblxuICBnZXQgbGF5ZXJGaWx0ZXJBbmRTb3J0T3B0aW9ucygpOiBMYXllckxpc3RDb250cm9sc09wdGlvbnMge1xuICAgIGNvbnN0IGZpbHRlclNvcnRPcHRpb25zID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgc2hvd1Rvb2xiYXI6IExheWVyTGlzdENvbnRyb2xzRW51bS5kZWZhdWx0XG4gICAgICB9LFxuICAgICAgdGhpcy5sYXllckxpc3RDb250cm9sc1xuICAgICk7XG5cbiAgICBzd2l0Y2ggKHRoaXMubGF5ZXJMaXN0Q29udHJvbHMuc2hvd1Rvb2xiYXIpIHtcbiAgICAgIGNhc2UgTGF5ZXJMaXN0Q29udHJvbHNFbnVtLmFsd2F5czpcbiAgICAgICAgZmlsdGVyU29ydE9wdGlvbnMuc2hvd1Rvb2xiYXIgPSBMYXllckxpc3RDb250cm9sc0VudW0uYWx3YXlzO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTGF5ZXJMaXN0Q29udHJvbHNFbnVtLm5ldmVyOlxuICAgICAgICBmaWx0ZXJTb3J0T3B0aW9ucy5zaG93VG9vbGJhciA9IExheWVyTGlzdENvbnRyb2xzRW51bS5uZXZlcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlclNvcnRPcHRpb25zO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgndGFiR3JvdXAnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJHcm91cDtcblxuICBnZXQgc2VhcmNoVG9vbEluVG9vbGJhcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5nZXRUb29sYmFyKCkuaW5kZXhPZignc2VhcmNoUmVzdWx0cycpICE9PSAtMSAmJlxuICAgICAgdGhpcy5zZWFyY2hTb3VyY2VTZXJ2aWNlXG4gICAgICAgIC5nZXRTb3VyY2VzKClcbiAgICAgICAgLmZpbHRlcihzb3VyY2VDYW5TZWFyY2gpXG4gICAgICAgIC5maWx0ZXIoKHMpID0+IHMuYXZhaWxhYmxlICYmIHMuZ2V0VHlwZSgpID09PSAnTGF5ZXInKS5sZW5ndGggPiAwXG4gICAgKTtcbiAgfVxuXG4gIGdldCBjYXRhbG9nVG9vbEluVG9vbGJhcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50b29sU3RhdGUudG9vbGJveC5nZXRUb29sYmFyKCkuaW5kZXhPZignY2F0YWxvZycpICE9PSAtMTtcbiAgfVxuXG4gIGdldCBjb250ZXh0VG9vbEluVG9vbGJhcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50b29sU3RhdGUudG9vbGJveC5nZXRUb29sYmFyKCkuaW5kZXhPZignY29udGV4dE1hbmFnZXInKSAhPT0gLTE7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbGF5ZXJMaXN0VG9vbFN0YXRlOiBMYXllckxpc3RUb29sU3RhdGUsXG4gICAgcHJpdmF0ZSB0b29sU3RhdGU6IFRvb2xTdGF0ZSxcbiAgICBwdWJsaWMgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICAgIHByaXZhdGUgc2VhcmNoU291cmNlU2VydmljZTogU2VhcmNoU291cmNlU2VydmljZSxcbiAgICBwcml2YXRlIGltcG9ydEV4cG9ydFN0YXRlOiBJbXBvcnRFeHBvcnRTdGF0ZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFRhYigpO1xuICAgIHRoaXMucmVzb2x1dGlvbiQkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLm1hcC5sYXllcnMkLFxuICAgICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiRcbiAgICBdKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwKSlcbiAgICAgIC5zdWJzY3JpYmUoKGJ1bmNoOiBbTGF5ZXJbXSwgbnVtYmVyXSkgPT4ge1xuICAgICAgICB0aGlzLmxheWVycyQubmV4dChcbiAgICAgICAgICBidW5jaFswXS5maWx0ZXIoXG4gICAgICAgICAgICAobGF5ZXIpID0+XG4gICAgICAgICAgICAgIGxheWVyLnNob3dJbkxheWVyTGlzdCAhPT0gZmFsc2UgJiZcbiAgICAgICAgICAgICAgKCF0aGlzLmV4Y2x1ZGVCYXNlTGF5ZXJzIHx8ICFsYXllci5iYXNlTGF5ZXIpXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5hbGxvd1Nob3dBbGxMZWdlbmRzKSB7XG4gICAgICB0aGlzLm1hcFN0YXRlLnNob3dBbGxMZWdlbmRzVmFsdWUgPVxuICAgICAgICB0aGlzLm1hcFN0YXRlLnNob3dBbGxMZWdlbmRzVmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gdGhpcy5tYXBTdGF0ZS5zaG93QWxsTGVnZW5kc1ZhbHVlXG4gICAgICAgICAgOiB0aGlzLnNob3dBbGxMZWdlbmRzVmFsdWUgfHwgZmFsc2U7XG4gICAgICB0aGlzLnNob3dBbGxMZWdlbmRzVmFsdWUkLm5leHQodGhpcy5tYXBTdGF0ZS5zaG93QWxsTGVnZW5kc1ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93QWxsTGVnZW5kc1ZhbHVlJC5uZXh0KGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyBwcmV2ZW50IG1lc3NhZ2UgdG8gYmUgc2hvd24gdG9vIHF1aWNrbHkuIFdhaXRpbmcgZm9yIGxheWVyc1xuICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMuZGVsYXllZFNob3dFbXB0eU1hcENvbnRlbnQgPSB0cnVlKSwgMjUwKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVzb2x1dGlvbiQkLnVuc3Vic2NyaWJlKCk7XG4gICAgaWYgKHRoaXMudmlzaWJsZU9ySW5SYW5nZUxheWVycyQkKSB7XG4gICAgICB0aGlzLnZpc2libGVPckluUmFuZ2VMYXllcnMkJC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uU2hvd0FsbExlZ2VuZHMoZXZlbnQpIHtcbiAgICB0aGlzLm1hcFN0YXRlLnNob3dBbGxMZWdlbmRzVmFsdWUgPSBldmVudDtcbiAgICB0aGlzLnNob3dBbGxMZWdlbmRzVmFsdWUkLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RlZFRhYigpIHtcbiAgICBjb25zdCB1c2VyU2VsZWN0ZWRUYWIgPSB0aGlzLmxheWVyTGlzdFRvb2xTdGF0ZS5zZWxlY3RlZFRhYiQudmFsdWU7XG4gICAgaWYgKHVzZXJTZWxlY3RlZFRhYiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmxheWVyTGlzdFRvb2xTdGF0ZS5zZXRTZWxlY3RlZFRhYih1c2VyU2VsZWN0ZWRUYWIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFRhYkF0T3BlbmluZyA9PT0gJ2xlZ2VuZCcpIHtcbiAgICAgICAgdGhpcy5sYXllckxpc3RUb29sU3RhdGUuc2V0U2VsZWN0ZWRUYWIoMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxheWVyTGlzdFRvb2xTdGF0ZS5zZXRTZWxlY3RlZFRhYigwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdGFiQ2hhbmdlZCh0YWI6IE1hdFRhYkNoYW5nZUV2ZW50KSB7XG4gICAgdGhpcy5sYXllckxpc3RUb29sU3RhdGUuc2V0U2VsZWN0ZWRUYWIodGFiLmluZGV4KTtcbiAgICB0aGlzLmxheWVycyQubmV4dChcbiAgICAgIHRoaXMubWFwLmxheWVycy5maWx0ZXIoXG4gICAgICAgIChsYXllcikgPT5cbiAgICAgICAgICBsYXllci5zaG93SW5MYXllckxpc3QgIT09IGZhbHNlICYmXG4gICAgICAgICAgKCF0aGlzLmV4Y2x1ZGVCYXNlTGF5ZXJzIHx8ICFsYXllci5iYXNlTGF5ZXIpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIG9uTGF5ZXJMaXN0Q2hhbmdlKGFwcGxpZWRGaWx0ZXJzOiBMYXllckxpc3RDb250cm9sc09wdGlvbnMpIHtcbiAgICB0aGlzLmxheWVyTGlzdFRvb2xTdGF0ZS5zZXRLZXl3b3JkKGFwcGxpZWRGaWx0ZXJzLmtleXdvcmQpO1xuICAgIHRoaXMubGF5ZXJMaXN0VG9vbFN0YXRlLnNldFNvcnRBbHBoYShhcHBsaWVkRmlsdGVycy5zb3J0QWxwaGEpO1xuICAgIHRoaXMubGF5ZXJMaXN0VG9vbFN0YXRlLnNldE9ubHlWaXNpYmxlKGFwcGxpZWRGaWx0ZXJzLm9ubHlWaXNpYmxlKTtcbiAgfVxuXG4gIHNob3dBbGxMZWdlbmQoKSB7XG4gICAgaWYgKHRoaXMubGF5ZXJzJC5nZXRWYWx1ZSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLmxheWVycyQuZ2V0VmFsdWUoKS5sZW5ndGggIT09IDAgJiZcbiAgICAgIHRoaXMuYWxsb3dTaG93QWxsTGVnZW5kcyA9PT0gZmFsc2VcbiAgICApIHtcbiAgICAgIGxldCB2aXNpYmxlT3JJblJhbmdlTGF5ZXJzO1xuICAgICAgdGhpcy52aXNpYmxlT3JJblJhbmdlTGF5ZXJzJCQgPSB0aGlzLnZpc2libGVPckluUmFuZ2VMYXllcnMkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgdmFsdWUubGVuZ3RoID09PSAwXG4gICAgICAgICAgPyAodmlzaWJsZU9ySW5SYW5nZUxheWVycyA9IGZhbHNlKVxuICAgICAgICAgIDogKHZpc2libGVPckluUmFuZ2VMYXllcnMgPSB0cnVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodmlzaWJsZU9ySW5SYW5nZUxheWVycyA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFjdGl2YXRlRXhwb3J0KGxheWVyOiBMYXllcikge1xuICAgIGxldCBpZCA9IGxheWVyLmlkO1xuICAgIGlmIChsYXllci5vcHRpb25zLndvcmtzcGFjZT8ud29ya3NwYWNlSWQpIHtcbiAgICAgIGlkID0gbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2Uud29ya3NwYWNlSWQgIT09IGxheWVyLmlkID8gbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2Uud29ya3NwYWNlSWQgOiBsYXllci5pZDtcbiAgICB9XG4gICAgdGhpcy5pbXBvcnRFeHBvcnRTdGF0ZS5zZXRzRXhwb3J0T3B0aW9ucyh7IGxheWVyczogW2lkXSB9IGFzIEV4cG9ydE9wdGlvbnMpO1xuICAgIHRoaXMuaW1wb3J0RXhwb3J0U3RhdGUuc2V0TW9kZShJbXBvcnRFeHBvcnRNb2RlLmV4cG9ydCk7XG4gICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5hY3RpdmF0ZVRvb2woJ2ltcG9ydEV4cG9ydCcpO1xuICB9XG5cbiAgYWN0aXZhdGVUaW1lRmlsdGVyKCkge1xuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdhY3RpdmVUaW1lRmlsdGVyJyk7XG4gIH1cblxuICBhY3RpdmF0ZU9nY0ZpbHRlcigpIHtcbiAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmFjdGl2YXRlVG9vbCgnYWN0aXZlT2djRmlsdGVyJyk7XG4gIH1cblxuICBzZWFyY2hFbWl0KCkge1xuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdzZWFyY2hSZXN1bHRzJyk7XG4gIH1cblxuICBjYXRhbG9nRW1pdCgpIHtcbiAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmFjdGl2YXRlVG9vbCgnY2F0YWxvZycpO1xuICB9XG5cbiAgY29udGV4dEVtaXQoKSB7XG4gICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5hY3RpdmF0ZVRvb2woJ2NvbnRleHRNYW5hZ2VyJyk7XG4gIH1cblxuICBpc1RpbWVGaWx0ZXJCdXR0b24obGF5ZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBvcHRpb25zID0gbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zO1xuICAgIHJldHVybiB0aGlzLnRpbWVCdXR0b24gJiYgb3B0aW9ucy50aW1lRmlsdGVyYWJsZSAmJiBvcHRpb25zLnRpbWVGaWx0ZXI7XG4gIH1cblxuICBpc09HQ0ZpbHRlckJ1dHRvbihsYXllcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBsYXllci5kYXRhU291cmNlLm9wdGlvbnM7XG4gICAgcmV0dXJuIHRoaXMub2djQnV0dG9uICYmIG9wdGlvbnMub2djRmlsdGVycyAmJiBvcHRpb25zLm9nY0ZpbHRlcnMuZW5hYmxlZCAmJlxuICAgIChvcHRpb25zLm9nY0ZpbHRlcnMucHVzaEJ1dHRvbnMgfHwgb3B0aW9ucy5vZ2NGaWx0ZXJzLmNoZWNrYm94ZXMgfHwgb3B0aW9ucy5vZ2NGaWx0ZXJzLnJhZGlvQnV0dG9uc1xuICAgICAgfHwgb3B0aW9ucy5vZ2NGaWx0ZXJzLnNlbGVjdCB8fCBvcHRpb25zLm9nY0ZpbHRlcnMuYXV0b2NvbXBsZXRlIHx8IG9wdGlvbnMub2djRmlsdGVycy5lZGl0YWJsZSk7XG4gIH1cblxuICBpc0V4cG9ydEJ1dHRvbihsYXllcjogTGF5ZXIpOiBib29sZWFuIHtcbiAgICBpZiAoXG4gICAgICAobGF5ZXIgaW5zdGFuY2VvZiBWZWN0b3JMYXllciAmJiBsYXllci5leHBvcnRhYmxlID09PSB0cnVlKSB8fFxuICAgICAgKGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5kb3dubG9hZCAmJiBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuZG93bmxvYWQudXJsKSB8fFxuICAgICAgKGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5lbmFibGVkICYmIGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy53b3Jrc3BhY2VJZCAhPT0gbGF5ZXIuaWQpKVxuICAgICAge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiPG1hdC10YWItZ3JvdXBcbiAgI3RhYkdyb3VwXG4gIFtzZWxlY3RlZEluZGV4XT1cImxheWVyTGlzdFRvb2xTdGF0ZS5zZWxlY3RlZFRhYiQgfCBhc3luY1wiXG4gIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJ0YWJDaGFuZ2VkKCRldmVudClcIj5cblxuICA8bWF0LXRhYiBbbGFiZWxdPVwiJ2lnby5pbnRlZ3JhdGlvbi50b29scy5sYXllcnMnIHzCoHRyYW5zbGF0ZVwiPlxuICAgIDxpZ28tbGF5ZXItbGlzdCAqbmdJZj1cIihsYXllcnMkIHwgYXN5bmMpLmxlbmd0aCAhPT0gMDsgZWxzZSBlbXB0eUxheWVyc1wiXG4gICAgICBpZ29MYXllckxpc3RCaW5kaW5nXG4gICAgICBbZXhjbHVkZUJhc2VMYXllcnNdPVwiZXhjbHVkZUJhc2VMYXllcnNcIlxuICAgICAgW2xheWVyRmlsdGVyQW5kU29ydE9wdGlvbnNdPVwibGF5ZXJGaWx0ZXJBbmRTb3J0T3B0aW9uc1wiXG4gICAgICBbZXhwYW5kTGVnZW5kT2ZWaXNpYmxlTGF5ZXJzXT1cImV4cGFuZExlZ2VuZE9mVmlzaWJsZUxheWVyc1wiXG4gICAgICBbdG9nZ2xlTGVnZW5kT25WaXNpYmlsaXR5Q2hhbmdlXT1cInRvZ2dsZUxlZ2VuZE9uVmlzaWJpbGl0eUNoYW5nZVwiXG4gICAgICBbdXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXT1cInVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZVwiXG4gICAgICBbZmxvYXRMYWJlbF09XCJmYWxzZVwiXG4gICAgICBbcXVlcnlCYWRnZV09XCJxdWVyeUJhZGdlXCJcbiAgICAgIFttYXBdPVwibWFwXCJcbiAgICAgIChhcHBsaWVkRmlsdGVyQW5kU29ydCk9IG9uTGF5ZXJMaXN0Q2hhbmdlKCRldmVudCk+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaWdvTGF5ZXJJdGVtVG9vbGJhciBsZXQtbGF5ZXI9XCJsYXllclwiPlxuICAgICAgICA8aWdvLW1ldGFkYXRhLWJ1dHRvbiBbbGF5ZXJdPVwibGF5ZXJcIj48L2lnby1tZXRhZGF0YS1idXR0b24+XG4gICAgICAgIDxpZ28tdHJhY2stZmVhdHVyZS1idXR0b24gW3RyYWNrRmVhdHVyZV09XCJ0cnVlXCIgW2xheWVyXT1cImxheWVyXCI+PC9pZ28tdHJhY2stZmVhdHVyZS1idXR0b24+XG4gICAgICAgIDxpZ28tdGltZS1maWx0ZXItYnV0dG9uICpuZ0lmPVwiaXNUaW1lRmlsdGVyQnV0dG9uKGxheWVyKVwiIFtoZWFkZXJdPVwidGltZUJ1dHRvblwiIFtsYXllcl09XCJsYXllclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVRpbWVGaWx0ZXIoKVwiPjwvaWdvLXRpbWUtZmlsdGVyLWJ1dHRvbj5cbiAgICAgICAgPGlnby1vZ2MtZmlsdGVyLWJ1dHRvbiAqbmdJZj1cImlzT0dDRmlsdGVyQnV0dG9uKGxheWVyKVwiIFtoZWFkZXJdPVwib2djQnV0dG9uXCIgW2xheWVyXT1cImxheWVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlT2djRmlsdGVyKClcIj48L2lnby1vZ2MtZmlsdGVyLWJ1dHRvbj5cbiAgICAgICAgPGlnby1leHBvcnQtYnV0dG9uICpuZ0lmPVwiaXNFeHBvcnRCdXR0b24obGF5ZXIpXCIgW2xheWVyXT1cImxheWVyXCIgKGNsaWNrKT1cImFjdGl2YXRlRXhwb3J0KGxheWVyKVwiPjwvaWdvLWV4cG9ydC1idXR0b24+XG4gICAgICAgIDxpZ28td29ya3NwYWNlLWJ1dHRvbiBbbGF5ZXJdPVwibGF5ZXJcIj48L2lnby13b3Jrc3BhY2UtYnV0dG9uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lnby1sYXllci1saXN0PlxuICA8L21hdC10YWI+XG5cbiAgPG1hdC10YWIgW2xhYmVsXT1cIidpZ28uaW50ZWdyYXRpb24udG9vbHMubGVnZW5kJyB8wqB0cmFuc2xhdGVcIj5cbiAgICA8aWdvLWxheWVyLWxlZ2VuZC1saXN0ICpuZ0lmPVwic2hvd0FsbExlZ2VuZCgpXCJcbiAgICAgIGlnb0xheWVyTGVnZW5kTGlzdEJpbmRpbmdcbiAgICAgIFthbGxvd1Nob3dBbGxMZWdlbmRzXT1cImFsbG93U2hvd0FsbExlZ2VuZHNcIlxuICAgICAgW3Nob3dBbGxMZWdlbmRzVmFsdWVdPVwiKHNob3dBbGxMZWdlbmRzVmFsdWUkIHwgYXN5bmMpXCJcbiAgICAgIChhbGxMZWdlbmRzU2hvd24pPVwib25TaG93QWxsTGVnZW5kcygkZXZlbnQpXCJcbiAgICAgIFtleGNsdWRlQmFzZUxheWVyc109XCJleGNsdWRlQmFzZUxheWVyc1wiXG4gICAgICBbdXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXT1cInVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZVwiPlxuICAgIDwvaWdvLWxheWVyLWxlZ2VuZC1saXN0PlxuICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIihsYXllcnMkIHwgYXN5bmMpLmxlbmd0aCAhPT0gMDsgZWxzZSBlbXB0eUxheWVyc1wiPjwvbmctdGVtcGxhdGU+XG5cbiAgICA8cCBjbGFzcz1cIm1hcC1lbXB0eSBtYXQtdHlwb2dyYXBoeVwiXG4gICAgICAqbmdJZj1cIiFhbGxvd1Nob3dBbGxMZWdlbmRzICYmIChsYXllcnMkIHwgYXN5bmMpLmxlbmd0aCAhPT0gMCAmJiAodmlzaWJsZU9ySW5SYW5nZUxheWVycyQgfCBhc3luYykubGVuZ3RoID09PSAwXCI+XG4gICAgICB7eyAoKHZpc2libGVMYXllcnMkIHwgYXN5bmMpLmxlbmd0aCkgPyAoJ2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLm5vTGF5ZXJzSW5SYW5nZScgfCB0cmFuc2xhdGUpIDogICgnaWdvLmludGVncmF0aW9uLm1hcFRvb2wubm9MYXllcnNWaXNpYmxlJyB8IHRyYW5zbGF0ZSkgfX1cbiAgICA8L3A+XG4gIDwvbWF0LXRhYj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlMYXllcnM+XG4gICAgICA8bWF0LWxpc3QgKm5nSWY9XCJkZWxheWVkU2hvd0VtcHR5TWFwQ29udGVudFwiPlxuICAgICAgICA8cCBjbGFzcz1cIm1hcC1lbXB0eSBtYXQtdHlwb2dyYXBoeVwiPlxuICAgICAgICAgIHt7J2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLmVtcHR5JyB8IHRyYW5zbGF0ZX19PC9wPlxuICAgICAgICA8cCAqbmdJZj1cImxheWVyQWRkaXRpb25BbGxvd2VkICYmIChzZWFyY2hUb29sSW5Ub29sYmFyIHx8IGNhdGFsb2dUb29sSW5Ub29sYmFyIHx8IGNvbnRleHRUb29sSW5Ub29sYmFyKVwiXG4gICAgICAgICAgY2xhc3M9XCJtYXAtZW1wdHkgbWF0LXR5cG9ncmFwaHlcIj5cbiAgICAgICAgICB7eydpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5jdXN0b21pemUnIHwgdHJhbnNsYXRlfX08L3A+XG5cbiAgICAgICAgPG1hdC1saXN0LWl0ZW0gKm5nSWY9XCJsYXllckFkZGl0aW9uQWxsb3dlZCAmJiBzZWFyY2hUb29sSW5Ub29sYmFyXCI+XG4gICAgICAgICAgPG1hdC1pY29uIG1hdC1saXN0LWljb24+IDxzdmcgdmlld0JveD0nMCAwIDI0IDI0JyBmaXQ9JycgaGVpZ2h0PScxMDAlJyB3aWR0aD0nMTAwJSdcbiAgICAgICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0neE1pZFlNaWQgbWVldCcgZm9jdXNhYmxlPSdmYWxzZSc+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD0nTTkuNSwzQTYuNSw2LjUgMCAwLDEgMTYsOS41QzE2LDExLjExIDE1LjQxLDEyLjU5IDE0LjQ0LDEzLjczTDE0LjcxLDE0SDE1LjVMMjAuNSwxOUwxOSwyMC41TDE0LDE1LjVWMTQuNzFMMTMuNzMsMTQuNDRDMTIuNTksMTUuNDEgMTEuMTEsMTYgOS41LDE2QTYuNSw2LjUgMCAwLDEgMyw5LjVBNi41LDYuNSAwIDAsMSA5LjUsM005LjUsNUM3LDUgNSw3IDUsOS41QzUsMTIgNywxNCA5LjUsMTRDMTIsMTQgMTQsMTIgMTQsOS41QzE0LDcgMTIsNSA5LjUsNVonPlxuICAgICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgICAgICA8L3N2Zz48L21hdC1pY29uPlxuICAgICAgICAgIDxoNCBtYXRMaW5lIGNsYXNzPVwic2VhcmNoLXRvb2wgbWF0LXR5cG9ncmFwaHlcIiAoY2xpY2spPVwic2VhcmNoRW1pdCgpXCI+XG4gICAgICAgICAgICB7eydpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5zZWFyY2gtdG9vbCcgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgIDwvaDQ+XG4gICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICAgICAgPG1hdC1saXN0LWl0ZW0gKm5nSWY9XCJsYXllckFkZGl0aW9uQWxsb3dlZCAmJiBjYXRhbG9nVG9vbEluVG9vbGJhclwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBtYXQtbGlzdC1pY29uPiA8c3ZnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZml0PScnIGhlaWdodD0nMTAwJScgd2lkdGg9JzEwMCUnXG4gICAgICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89J3hNaWRZTWlkIG1lZXQnIGZvY3VzYWJsZT0nZmFsc2UnPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9J00xNywxNEgxOVYxN0gyMlYxOUgxOVYyMkgxN1YxOUgxNFYxN0gxN1YxNE0xMSwxNkwyLDlMMTEsMkwyMCw5TDExLDE2TTExLDE4LjU0TDEyLDE3Ljc1VjE4QzEyLDE4LjcxIDEyLjEyLDE5LjM5IDEyLjM1LDIwTDExLDIxLjA3TDIsMTQuMDdMMy42MiwxMi44MUwxMSwxOC41NFonPlxuICAgICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgICAgICA8L3N2Zz48L21hdC1pY29uPlxuICAgICAgICAgIDxoNCBtYXRMaW5lIGNsYXNzPVwiY2F0YWxvZy10b29sIG1hdC10eXBvZ3JhcGh5XCIgKGNsaWNrKT1cImNhdGFsb2dFbWl0KClcIj5cbiAgICAgICAgICAgIHt7J2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLmNhdGFsb2ctdG9vbCcgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgIDwvaDQ+XG4gICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICAgICAgPG1hdC1saXN0LWl0ZW0gKm5nSWY9XCJsYXllckFkZGl0aW9uQWxsb3dlZCAmJiBjb250ZXh0VG9vbEluVG9vbGJhclwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBtYXQtbGlzdC1pY29uPiA8c3ZnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZml0PScnIGhlaWdodD0nMTAwJScgd2lkdGg9JzEwMCUnXG4gICAgICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89J3hNaWRZTWlkIG1lZXQnIGZvY3VzYWJsZT0nZmFsc2UnPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9J00xMiwxNy4yN0wxOC4xOCwyMUwxNi41NCwxMy45N0wyMiw5LjI0TDE0LjgxLDguNjJMMTIsMkw5LjE5LDguNjJMMiw5LjI0TDcuNDUsMTMuOTdMNS44MiwyMUwxMiwxNy4yN1onPlxuICAgICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgICAgICA8L3N2Zz48L21hdC1pY29uPlxuICAgICAgICAgIDxoNCBtYXRMaW5lIGNsYXNzPVwiY29udGV4dC10b29sIG1hdC10eXBvZ3JhcGh5XCIgKGNsaWNrKT1cImNvbnRleHRFbWl0KClcIj5cbiAgICAgICAgICAgIHt7J2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLmNvbnRleHQtdG9vbCcgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgIDwvaDQ+XG4gICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICAgIDwvbWF0LWxpc3Q+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbWF0LXRhYi1ncm91cD5cbiJdfQ==