@igo2/integration 1.15.5 → 1.15.6

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 (213) 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 +126 -126
  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 +83 -83
  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 +38 -38
  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 +140 -140
  47. package/esm2020/lib/import-export/import-export-tool/index.mjs +1 -1
  48. package/esm2020/lib/import-export/import-export.module.mjs +50 -50
  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 +471 -471
  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 +202 -202
  64. package/esm2020/lib/map/map-proximity.state.mjs +166 -166
  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 +494 -494
  69. package/esm2020/lib/map/map.module.mjs +143 -143
  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 +34 -42
  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 +131 -131
  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 +6553 -6558
  106. package/fesm2015/igo2-integration.mjs.map +1 -1
  107. package/fesm2020/igo2-integration.mjs +6109 -6114
  108. package/fesm2020/igo2-integration.mjs.map +1 -1
  109. package/index.d.ts +5 -5
  110. package/lib/about/about-tool/about-tool.component.d.ts +34 -34
  111. package/lib/about/about-tool/index.d.ts +1 -1
  112. package/lib/about/about.module.d.ts +16 -16
  113. package/lib/about/index.d.ts +1 -1
  114. package/lib/analytics/analytics-listener.service.d.ts +33 -33
  115. package/lib/analytics/analytics.module.d.ts +6 -6
  116. package/lib/analytics/index.d.ts +1 -1
  117. package/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.d.ts +57 -57
  118. package/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.d.ts +12 -12
  119. package/lib/catalog/catalog-library-tool/catalog-library-tool.component.d.ts +50 -50
  120. package/lib/catalog/catalog-library-tool/catalog-library-tool.module.d.ts +12 -12
  121. package/lib/catalog/catalog.module.d.ts +8 -8
  122. package/lib/catalog/catalog.state.d.ts +37 -37
  123. package/lib/catalog/index.d.ts +5 -5
  124. package/lib/context/context-editor-tool/context-editor-tool.component.d.ts +9 -9
  125. package/lib/context/context-manager-tool/context-manager-tool.component.d.ts +15 -15
  126. package/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.d.ts +5 -5
  127. package/lib/context/context-share-tool/context-share-tool.component.d.ts +13 -13
  128. package/lib/context/context.module.d.ts +11 -11
  129. package/lib/context/context.state.d.ts +37 -37
  130. package/lib/context/index.d.ts +5 -5
  131. package/lib/directions/directions-tool/directions-tool.component.d.ts +54 -54
  132. package/lib/directions/directions-tool/index.d.ts +1 -1
  133. package/lib/directions/directions.module.d.ts +10 -10
  134. package/lib/directions/directions.state.d.ts +28 -28
  135. package/lib/directions/index.d.ts +2 -2
  136. package/lib/draw/draw.module.d.ts +8 -8
  137. package/lib/draw/draw.state.d.ts +16 -16
  138. package/lib/draw/drawing-tool/drawing-tool.component.d.ts +31 -31
  139. package/lib/draw/index.d.ts +2 -2
  140. package/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.d.ts +2 -2
  141. package/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.d.ts +12 -12
  142. package/lib/filter/active-ogc-filter-tool/index.d.ts +1 -1
  143. package/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.d.ts +2 -2
  144. package/lib/filter/active-time-filter-tool/active-time-filter-tool.component.d.ts +12 -12
  145. package/lib/filter/active-time-filter-tool/index.d.ts +1 -1
  146. package/lib/filter/filter.module.d.ts +15 -15
  147. package/lib/filter/index.d.ts +5 -5
  148. package/lib/filter/ogc-filter-tool/index.d.ts +1 -1
  149. package/lib/filter/ogc-filter-tool/ogc-filter-tool.component.d.ts +6 -6
  150. package/lib/filter/spatial-filter-tool/index.d.ts +1 -1
  151. package/lib/filter/spatial-filter-tool/spatial-filter-tool.component.d.ts +82 -82
  152. package/lib/filter/time-filter-tool/index.d.ts +1 -1
  153. package/lib/filter/time-filter-tool/time-filter-tool.component.d.ts +6 -6
  154. package/lib/import-export/import-export-tool/import-export-tool.component.d.ts +33 -33
  155. package/lib/import-export/import-export-tool/index.d.ts +1 -1
  156. package/lib/import-export/import-export.module.d.ts +15 -15
  157. package/lib/import-export/import-export.state.d.ts +24 -24
  158. package/lib/import-export/index.d.ts +2 -2
  159. package/lib/integration.module.d.ts +20 -20
  160. package/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.d.ts +97 -97
  161. package/lib/map/advanced-map-tool/advanced-map-tool.component.d.ts +12 -12
  162. package/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.d.ts +65 -65
  163. package/lib/map/advanced-map-tool/index.d.ts +1 -1
  164. package/lib/map/index.d.ts +8 -8
  165. package/lib/map/layer-list-tool.state.d.ts +19 -19
  166. package/lib/map/map-details-tool/index.d.ts +1 -1
  167. package/lib/map/map-details-tool/map-details-tool.component.d.ts +38 -38
  168. package/lib/map/map-legend/index.d.ts +1 -1
  169. package/lib/map/map-legend/map-legend-tool.component.d.ts +40 -40
  170. package/lib/map/map-proximity-tool/index.d.ts +1 -1
  171. package/lib/map/map-proximity-tool/map-proximity-tool.component.d.ts +36 -36
  172. package/lib/map/map-proximity.state.d.ts +31 -31
  173. package/lib/map/map-tool/index.d.ts +1 -1
  174. package/lib/map/map-tool/map-tool.component.d.ts +27 -27
  175. package/lib/map/map-tools/index.d.ts +1 -1
  176. package/lib/map/map-tools/map-tools.component.d.ts +66 -66
  177. package/lib/map/map.module.d.ts +38 -38
  178. package/lib/map/map.state.d.ts +24 -24
  179. package/lib/measure/index.d.ts +3 -3
  180. package/lib/measure/measure.module.d.ts +7 -7
  181. package/lib/measure/measure.state.d.ts +16 -16
  182. package/lib/measure/measurer-tool/measurer-tool.component.d.ts +24 -24
  183. package/lib/measure/measurer-tool/measurer-tool.module.d.ts +11 -11
  184. package/lib/print/index.d.ts +1 -1
  185. package/lib/print/print-tool/index.d.ts +1 -1
  186. package/lib/print/print-tool/print-tool.component.d.ts +10 -10
  187. package/lib/print/print.module.d.ts +10 -10
  188. package/lib/search/index.d.ts +6 -6
  189. package/lib/search/query.state.d.ts +20 -24
  190. package/lib/search/search-bar/search-bar-binding.directive.d.ts +20 -20
  191. package/lib/search/search-bar/search-bar.module.d.ts +11 -11
  192. package/lib/search/search-results-tool/search-results-tool.component.d.ts +100 -100
  193. package/lib/search/search-results-tool/search-results-tool.module.d.ts +18 -18
  194. package/lib/search/search.module.d.ts +8 -8
  195. package/lib/search/search.state.d.ts +60 -60
  196. package/lib/storage/index.d.ts +1 -1
  197. package/lib/storage/storage.module.d.ts +6 -6
  198. package/lib/storage/storage.state.d.ts +12 -12
  199. package/lib/tool/index.d.ts +1 -1
  200. package/lib/tool/tool.module.d.ts +6 -6
  201. package/lib/tool/tool.state.d.ts +22 -22
  202. package/lib/workspace/index.d.ts +3 -3
  203. package/lib/workspace/shared/edition-actions.service.d.ts +26 -26
  204. package/lib/workspace/shared/feature-actions.service.d.ts +25 -25
  205. package/lib/workspace/shared/index.d.ts +2 -2
  206. package/lib/workspace/shared/wfs-actions.service.d.ts +27 -27
  207. package/lib/workspace/shared/workspace.utils.d.ts +2 -2
  208. package/lib/workspace/workspace-button/index.d.ts +1 -1
  209. package/lib/workspace/workspace-button/workspace-button.component.d.ts +21 -21
  210. package/lib/workspace/workspace.module.d.ts +12 -12
  211. package/lib/workspace/workspace.state.d.ts +63 -63
  212. package/package.json +3 -3
  213. package/public_api.d.ts +31 -31
@@ -1,495 +1,495 @@
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_style_modal_layer_button_0_Template(rf, ctx) { if (rf & 1) {
23
- i0.ɵɵelement(0, "igo-style-modal-layer-button", 11);
24
- } if (rf & 2) {
25
- const layer_r9 = i0.ɵɵnextContext().layer;
26
- i0.ɵɵproperty("layer", layer_r9);
27
- } }
28
- function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_time_filter_button_3_Template(rf, ctx) { if (rf & 1) {
29
- const _r16 = i0.ɵɵgetCurrentView();
30
- i0.ɵɵelementStart(0, "igo-time-filter-button", 15);
31
- i0.ɵɵlistener("click", function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_time_filter_button_3_Template_igo_time_filter_button_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r15 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r15.activateTimeFilter()); });
32
- i0.ɵɵelementEnd();
33
- } if (rf & 2) {
34
- const layer_r9 = i0.ɵɵnextContext().layer;
35
- const ctx_r11 = i0.ɵɵnextContext(2);
36
- i0.ɵɵproperty("header", ctx_r11.timeButton)("layer", layer_r9);
37
- } }
38
- function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_ogc_filter_button_4_Template(rf, ctx) { if (rf & 1) {
39
- const _r19 = i0.ɵɵgetCurrentView();
40
- i0.ɵɵelementStart(0, "igo-ogc-filter-button", 15);
41
- i0.ɵɵlistener("click", function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_ogc_filter_button_4_Template_igo_ogc_filter_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r18.activateOgcFilter()); });
42
- i0.ɵɵelementEnd();
43
- } if (rf & 2) {
44
- const layer_r9 = i0.ɵɵnextContext().layer;
45
- const ctx_r12 = i0.ɵɵnextContext(2);
46
- i0.ɵɵproperty("header", ctx_r12.ogcButton)("layer", layer_r9);
47
- } }
48
- function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_export_button_5_Template(rf, ctx) { if (rf & 1) {
49
- const _r23 = i0.ɵɵgetCurrentView();
50
- i0.ɵɵelementStart(0, "igo-export-button", 16);
51
- i0.ɵɵlistener("click", function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_export_button_5_Template_igo_export_button_click_0_listener() { i0.ɵɵrestoreView(_r23); const layer_r9 = i0.ɵɵnextContext().layer; const ctx_r21 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r21.activateExport(layer_r9)); });
52
- i0.ɵɵelementEnd();
53
- } if (rf & 2) {
54
- const layer_r9 = i0.ɵɵnextContext().layer;
55
- i0.ɵɵproperty("layer", layer_r9);
56
- } }
57
- function MapToolsComponent_igo_layer_list_5_ng_template_1_Template(rf, ctx) { if (rf & 1) {
58
- i0.ɵɵtemplate(0, MapToolsComponent_igo_layer_list_5_ng_template_1_igo_style_modal_layer_button_0_Template, 1, 1, "igo-style-modal-layer-button", 10);
59
- i0.ɵɵelement(1, "igo-metadata-button", 11)(2, "igo-track-feature-button", 12);
60
- i0.ɵɵtemplate(3, MapToolsComponent_igo_layer_list_5_ng_template_1_igo_time_filter_button_3_Template, 1, 2, "igo-time-filter-button", 13);
61
- i0.ɵɵtemplate(4, MapToolsComponent_igo_layer_list_5_ng_template_1_igo_ogc_filter_button_4_Template, 1, 2, "igo-ogc-filter-button", 13);
62
- i0.ɵɵtemplate(5, MapToolsComponent_igo_layer_list_5_ng_template_1_igo_export_button_5_Template, 1, 1, "igo-export-button", 14);
63
- i0.ɵɵelement(6, "igo-workspace-button", 11);
64
- } if (rf & 2) {
65
- const layer_r9 = ctx.layer;
66
- const ctx_r8 = i0.ɵɵnextContext(2);
67
- i0.ɵɵproperty("ngIf", ctx_r8.isStyleEditButton(layer_r9));
68
- i0.ɵɵadvance(1);
69
- i0.ɵɵproperty("layer", layer_r9);
70
- i0.ɵɵadvance(1);
71
- i0.ɵɵproperty("trackFeature", true)("layer", layer_r9);
72
- i0.ɵɵadvance(1);
73
- i0.ɵɵproperty("ngIf", ctx_r8.isTimeFilterButton(layer_r9));
74
- i0.ɵɵadvance(1);
75
- i0.ɵɵproperty("ngIf", ctx_r8.isOGCFilterButton(layer_r9));
76
- i0.ɵɵadvance(1);
77
- i0.ɵɵproperty("ngIf", ctx_r8.isExportButton(layer_r9));
78
- i0.ɵɵadvance(1);
79
- i0.ɵɵproperty("layer", layer_r9);
80
- } }
81
- function MapToolsComponent_igo_layer_list_5_Template(rf, ctx) { if (rf & 1) {
82
- const _r26 = i0.ɵɵgetCurrentView();
83
- i0.ɵɵelementStart(0, "igo-layer-list", 8);
84
- i0.ɵɵlistener("appliedFilterAndSort", function MapToolsComponent_igo_layer_list_5_Template_igo_layer_list_appliedFilterAndSort_0_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r25 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r25.onLayerListChange($event)); });
85
- i0.ɵɵtemplate(1, MapToolsComponent_igo_layer_list_5_ng_template_1_Template, 7, 8, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
86
- i0.ɵɵelementEnd();
87
- } if (rf & 2) {
88
- const ctx_r1 = i0.ɵɵnextContext();
89
- 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);
90
- } }
91
- function MapToolsComponent_igo_layer_legend_list_9_Template(rf, ctx) { if (rf & 1) {
92
- const _r28 = i0.ɵɵgetCurrentView();
93
- i0.ɵɵelementStart(0, "igo-layer-legend-list", 17);
94
- i0.ɵɵlistener("allLegendsShown", function MapToolsComponent_igo_layer_legend_list_9_Template_igo_layer_legend_list_allLegendsShown_0_listener($event) { i0.ɵɵrestoreView(_r28); const ctx_r27 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r27.onShowAllLegends($event)); });
95
- i0.ɵɵpipe(1, "async");
96
- i0.ɵɵelementEnd();
97
- } if (rf & 2) {
98
- const ctx_r2 = i0.ɵɵnextContext();
99
- i0.ɵɵproperty("allowShowAllLegends", ctx_r2.allowShowAllLegends)("showAllLegendsValue", i0.ɵɵpipeBind1(1, 4, ctx_r2.showAllLegendsValue$))("excludeBaseLayers", ctx_r2.excludeBaseLayers)("updateLegendOnResolutionChange", ctx_r2.updateLegendOnResolutionChange);
100
- } }
101
- function MapToolsComponent_10_ng_template_0_Template(rf, ctx) { }
102
- function MapToolsComponent_10_Template(rf, ctx) { if (rf & 1) {
103
- i0.ɵɵtemplate(0, MapToolsComponent_10_ng_template_0_Template, 0, 0, "ng-template");
104
- } }
105
- function MapToolsComponent_p_12_Template(rf, ctx) { if (rf & 1) {
106
- i0.ɵɵelementStart(0, "p", 18);
107
- i0.ɵɵtext(1);
108
- i0.ɵɵpipe(2, "async");
109
- i0.ɵɵpipe(3, "translate");
110
- i0.ɵɵpipe(4, "translate");
111
- i0.ɵɵelementEnd();
112
- } if (rf & 2) {
113
- const ctx_r4 = i0.ɵɵnextContext();
114
- i0.ɵɵadvance(1);
115
- 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"), " ");
116
- } }
117
- function MapToolsComponent_ng_template_15_mat_list_0_p_4_Template(rf, ctx) { if (rf & 1) {
118
- i0.ɵɵelementStart(0, "p", 18);
119
- i0.ɵɵtext(1);
120
- i0.ɵɵpipe(2, "translate");
121
- i0.ɵɵelementEnd();
122
- } if (rf & 2) {
123
- i0.ɵɵadvance(1);
124
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "igo.integration.mapTool.customize"), "");
125
- } }
126
- function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_5_Template(rf, ctx) { if (rf & 1) {
127
- const _r36 = i0.ɵɵgetCurrentView();
128
- i0.ɵɵelementStart(0, "mat-list-item")(1, "mat-icon", 20);
129
- i0.ɵɵnamespaceSVG();
130
- i0.ɵɵelementStart(2, "svg", 21);
131
- i0.ɵɵelement(3, "path", 22);
132
- i0.ɵɵelementEnd()();
133
- i0.ɵɵnamespaceHTML();
134
- i0.ɵɵelementStart(4, "h4", 23);
135
- i0.ɵɵlistener("click", function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_5_Template_h4_click_4_listener() { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r35.searchEmit()); });
136
- i0.ɵɵtext(5);
137
- i0.ɵɵpipe(6, "translate");
138
- i0.ɵɵelementEnd()();
139
- } if (rf & 2) {
140
- i0.ɵɵadvance(5);
141
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 1, "igo.integration.mapTool.search-tool"), " ");
142
- } }
143
- function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_6_Template(rf, ctx) { if (rf & 1) {
144
- const _r38 = i0.ɵɵgetCurrentView();
145
- i0.ɵɵelementStart(0, "mat-list-item")(1, "mat-icon", 20);
146
- i0.ɵɵnamespaceSVG();
147
- i0.ɵɵelementStart(2, "svg", 21);
148
- i0.ɵɵelement(3, "path", 24);
149
- i0.ɵɵelementEnd()();
150
- i0.ɵɵnamespaceHTML();
151
- i0.ɵɵelementStart(4, "h4", 25);
152
- i0.ɵɵlistener("click", function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_6_Template_h4_click_4_listener() { i0.ɵɵrestoreView(_r38); const ctx_r37 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r37.catalogEmit()); });
153
- i0.ɵɵtext(5);
154
- i0.ɵɵpipe(6, "translate");
155
- i0.ɵɵelementEnd()();
156
- } if (rf & 2) {
157
- i0.ɵɵadvance(5);
158
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 1, "igo.integration.mapTool.catalog-tool"), " ");
159
- } }
160
- function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_7_Template(rf, ctx) { if (rf & 1) {
161
- const _r40 = i0.ɵɵgetCurrentView();
162
- i0.ɵɵelementStart(0, "mat-list-item")(1, "mat-icon", 20);
163
- i0.ɵɵnamespaceSVG();
164
- i0.ɵɵelementStart(2, "svg", 21);
165
- i0.ɵɵelement(3, "path", 26);
166
- i0.ɵɵelementEnd()();
167
- i0.ɵɵnamespaceHTML();
168
- i0.ɵɵelementStart(4, "h4", 27);
169
- i0.ɵɵlistener("click", function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_7_Template_h4_click_4_listener() { i0.ɵɵrestoreView(_r40); const ctx_r39 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r39.contextEmit()); });
170
- i0.ɵɵtext(5);
171
- i0.ɵɵpipe(6, "translate");
172
- i0.ɵɵelementEnd()();
173
- } if (rf & 2) {
174
- i0.ɵɵadvance(5);
175
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 1, "igo.integration.mapTool.context-tool"), " ");
176
- } }
177
- function MapToolsComponent_ng_template_15_mat_list_0_Template(rf, ctx) { if (rf & 1) {
178
- i0.ɵɵelementStart(0, "mat-list")(1, "p", 18);
179
- i0.ɵɵtext(2);
180
- i0.ɵɵpipe(3, "translate");
181
- i0.ɵɵelementEnd();
182
- i0.ɵɵtemplate(4, MapToolsComponent_ng_template_15_mat_list_0_p_4_Template, 3, 3, "p", 6);
183
- i0.ɵɵtemplate(5, MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_5_Template, 7, 3, "mat-list-item", 19);
184
- i0.ɵɵtemplate(6, MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_6_Template, 7, 3, "mat-list-item", 19);
185
- i0.ɵɵtemplate(7, MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_7_Template, 7, 3, "mat-list-item", 19);
186
- i0.ɵɵelementEnd();
187
- } if (rf & 2) {
188
- const ctx_r30 = i0.ɵɵnextContext(2);
189
- i0.ɵɵadvance(2);
190
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 5, "igo.integration.mapTool.empty"), "");
191
- i0.ɵɵadvance(2);
192
- i0.ɵɵproperty("ngIf", ctx_r30.layerAdditionAllowed && (ctx_r30.searchToolInToolbar || ctx_r30.catalogToolInToolbar || ctx_r30.contextToolInToolbar));
193
- i0.ɵɵadvance(1);
194
- i0.ɵɵproperty("ngIf", ctx_r30.layerAdditionAllowed && ctx_r30.searchToolInToolbar);
195
- i0.ɵɵadvance(1);
196
- i0.ɵɵproperty("ngIf", ctx_r30.layerAdditionAllowed && ctx_r30.catalogToolInToolbar);
197
- i0.ɵɵadvance(1);
198
- i0.ɵɵproperty("ngIf", ctx_r30.layerAdditionAllowed && ctx_r30.contextToolInToolbar);
199
- } }
200
- function MapToolsComponent_ng_template_15_Template(rf, ctx) { if (rf & 1) {
201
- i0.ɵɵtemplate(0, MapToolsComponent_ng_template_15_mat_list_0_Template, 8, 7, "mat-list", 19);
202
- } if (rf & 2) {
203
- const ctx_r6 = i0.ɵɵnextContext();
204
- i0.ɵɵproperty("ngIf", ctx_r6.delayedShowEmptyMapContent);
205
- } }
206
- /**
207
- * Tool to browse a map's layers or to choose a different map
208
- */
209
- let MapToolsComponent = class MapToolsComponent {
210
- constructor(layerListToolState, toolState, mapState, searchSourceService, importExportState) {
211
- this.layerListToolState = layerListToolState;
212
- this.toolState = toolState;
213
- this.mapState = mapState;
214
- this.searchSourceService = searchSourceService;
215
- this.importExportState = importExportState;
216
- this.layers$ = new BehaviorSubject([]);
217
- this.showAllLegendsValue$ = new BehaviorSubject(false);
218
- this.delayedShowEmptyMapContent = false;
219
- this.allowShowAllLegends = false;
220
- this.showAllLegendsValue = false;
221
- this.toggleLegendOnVisibilityChange = false;
222
- this.expandLegendOfVisibleLayers = false;
223
- this.updateLegendOnResolutionChange = false;
224
- this.ogcButton = true;
225
- this.timeButton = true;
226
- this.layerAdditionAllowed = true;
227
- this._layerListControls = {};
228
- this.queryBadge = false;
229
- }
230
- get layerListControls() {
231
- return this._layerListControls;
232
- }
233
- set layerListControls(value) {
234
- const stateOptions = this.layerListToolState.getLayerListControls();
235
- const stateKeyword = stateOptions.keyword;
236
- const stateOnlyVisible = stateOptions.onlyVisible;
237
- const stateSortAlpha = stateOptions.sortAlpha;
238
- value.keyword = stateKeyword !== '' ? stateKeyword : value.keyword;
239
- value.onlyVisible =
240
- stateOnlyVisible !== undefined ? stateOnlyVisible : value.onlyVisible;
241
- value.sortAlpha =
242
- stateSortAlpha !== undefined ? stateSortAlpha : value.sortAlpha;
243
- value.onlyVisible =
244
- value.onlyVisible === undefined ? false : value.onlyVisible;
245
- value.sortAlpha = value.sortAlpha === undefined ? false : value.sortAlpha;
246
- this._layerListControls = value;
247
- }
248
- get map() {
249
- return this.mapState.map;
250
- }
251
- get visibleOrInRangeLayers$() {
252
- return this.layers$.pipe(map((layers) => layers.filter((layer) => layer.visible$.value && layer.isInResolutionsRange$.value)));
253
- }
254
- get visibleLayers$() {
255
- return this.layers$.pipe(map((layers) => layers.filter((layer) => layer.visible$.value)));
256
- }
257
- get excludeBaseLayers() {
258
- return this.layerListControls.excludeBaseLayers || false;
259
- }
260
- get layerFilterAndSortOptions() {
261
- const filterSortOptions = Object.assign({
262
- showToolbar: LayerListControlsEnum.default
263
- }, this.layerListControls);
264
- switch (this.layerListControls.showToolbar) {
265
- case LayerListControlsEnum.always:
266
- filterSortOptions.showToolbar = LayerListControlsEnum.always;
267
- break;
268
- case LayerListControlsEnum.never:
269
- filterSortOptions.showToolbar = LayerListControlsEnum.never;
270
- break;
271
- default:
272
- break;
273
- }
274
- return filterSortOptions;
275
- }
276
- get searchToolInToolbar() {
277
- return (this.toolState.toolbox.getToolbar().indexOf('searchResults') !== -1 &&
278
- this.searchSourceService
279
- .getSources()
280
- .filter(sourceCanSearch)
281
- .filter((s) => s.available && s.getType() === 'Layer').length > 0);
282
- }
283
- get catalogToolInToolbar() {
284
- return this.toolState.toolbox.getToolbar().indexOf('catalog') !== -1;
285
- }
286
- get contextToolInToolbar() {
287
- return this.toolState.toolbox.getToolbar().indexOf('contextManager') !== -1;
288
- }
289
- ngOnInit() {
290
- this.selectedTab();
291
- this.resolution$$ = combineLatest([
292
- this.map.layers$,
293
- this.map.viewController.resolution$
294
- ])
295
- .pipe(debounceTime(10))
296
- .subscribe((bunch) => {
297
- this.layers$.next(bunch[0].filter((layer) => layer.showInLayerList !== false &&
298
- (!this.excludeBaseLayers || !layer.baseLayer)));
299
- });
300
- if (this.allowShowAllLegends) {
301
- this.mapState.showAllLegendsValue =
302
- this.mapState.showAllLegendsValue !== undefined
303
- ? this.mapState.showAllLegendsValue
304
- : this.showAllLegendsValue || false;
305
- this.showAllLegendsValue$.next(this.mapState.showAllLegendsValue);
306
- }
307
- else {
308
- this.showAllLegendsValue$.next(false);
309
- }
310
- // prevent message to be shown too quickly. Waiting for layers
311
- setTimeout(() => (this.delayedShowEmptyMapContent = true), 250);
312
- }
313
- ngOnDestroy() {
314
- this.resolution$$.unsubscribe();
315
- if (this.visibleOrInRangeLayers$$) {
316
- this.visibleOrInRangeLayers$$.unsubscribe();
317
- }
318
- }
319
- onShowAllLegends(event) {
320
- this.mapState.showAllLegendsValue = event;
321
- this.showAllLegendsValue$.next(event);
322
- }
323
- selectedTab() {
324
- const userSelectedTab = this.layerListToolState.selectedTab$.value;
325
- if (userSelectedTab !== undefined) {
326
- this.layerListToolState.setSelectedTab(userSelectedTab);
327
- }
328
- else {
329
- if (this.selectedTabAtOpening === 'legend') {
330
- this.layerListToolState.setSelectedTab(1);
331
- }
332
- else {
333
- this.layerListToolState.setSelectedTab(0);
334
- }
335
- }
336
- }
337
- tabChanged(tab) {
338
- this.layerListToolState.setSelectedTab(tab.index);
339
- this.layers$.next(this.map.layers.filter((layer) => layer.showInLayerList !== false &&
340
- (!this.excludeBaseLayers || !layer.baseLayer)));
341
- }
342
- onLayerListChange(appliedFilters) {
343
- this.layerListToolState.setKeyword(appliedFilters.keyword);
344
- this.layerListToolState.setSortAlpha(appliedFilters.sortAlpha);
345
- this.layerListToolState.setOnlyVisible(appliedFilters.onlyVisible);
346
- }
347
- showAllLegend() {
348
- if (this.layers$.getValue().length === 0) {
349
- return false;
350
- }
351
- else if (this.layers$.getValue().length !== 0 &&
352
- this.allowShowAllLegends === false) {
353
- let visibleOrInRangeLayers;
354
- this.visibleOrInRangeLayers$$ = this.visibleOrInRangeLayers$.subscribe((value) => {
355
- value.length === 0
356
- ? (visibleOrInRangeLayers = false)
357
- : (visibleOrInRangeLayers = true);
358
- });
359
- if (visibleOrInRangeLayers === false) {
360
- return false;
361
- }
362
- }
363
- return true;
364
- }
365
- activateExport(layer) {
366
- let id = layer.id;
367
- if (layer.options.workspace?.workspaceId) {
368
- id = layer.options.workspace.workspaceId !== layer.id ? layer.options.workspace.workspaceId : layer.id;
369
- }
370
- this.importExportState.setsExportOptions({ layers: [id] });
371
- this.importExportState.setMode(ImportExportMode.export);
372
- this.toolState.toolbox.activateTool('importExport');
373
- }
374
- activateTimeFilter() {
375
- this.toolState.toolbox.activateTool('activeTimeFilter');
376
- }
377
- activateOgcFilter() {
378
- this.toolState.toolbox.activateTool('activeOgcFilter');
379
- }
380
- searchEmit() {
381
- this.toolState.toolbox.activateTool('searchResults');
382
- }
383
- catalogEmit() {
384
- this.toolState.toolbox.activateTool('catalog');
385
- }
386
- contextEmit() {
387
- this.toolState.toolbox.activateTool('contextManager');
388
- }
389
- isTimeFilterButton(layer) {
390
- const options = layer.dataSource.options;
391
- return this.timeButton && options.timeFilterable && options.timeFilter;
392
- }
393
- isOGCFilterButton(layer) {
394
- const options = layer.dataSource.options;
395
- return this.ogcButton && options.ogcFilters && options.ogcFilters.enabled &&
396
- (options.ogcFilters.pushButtons || options.ogcFilters.checkboxes || options.ogcFilters.radioButtons
397
- || options.ogcFilters.select || options.ogcFilters.autocomplete || options.ogcFilters.editable);
398
- }
399
- isExportButton(layer) {
400
- if ((layer instanceof VectorLayer && layer.exportable === true) ||
401
- (layer.dataSource.options.download && layer.dataSource.options.download.url) ||
402
- (layer.options.workspace?.enabled && layer.options.workspace?.workspaceId !== layer.id)) {
403
- return true;
404
- }
405
- return false;
406
- }
407
- isStyleEditButton(layer) {
408
- if (layer instanceof VectorLayer) {
409
- if (layer.options?.igoStyle?.editable) {
410
- return true;
411
- }
412
- }
413
- return false;
414
- }
415
- };
416
- 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)); };
417
- MapToolsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MapToolsComponent, selectors: [["igo-map-tools"]], viewQuery: function MapToolsComponent_Query(rf, ctx) { if (rf & 1) {
418
- i0.ɵɵviewQuery(_c0, 7);
419
- } if (rf & 2) {
420
- let _t;
421
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabGroup = _t.first);
422
- } }, 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", 4, "ngIf"], [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) {
423
- i0.ɵɵelementStart(0, "mat-tab-group", 0, 1);
424
- i0.ɵɵlistener("selectedTabChange", function MapToolsComponent_Template_mat_tab_group_selectedTabChange_0_listener($event) { return ctx.tabChanged($event); });
425
- i0.ɵɵpipe(2, "async");
426
- i0.ɵɵelementStart(3, "mat-tab", 2);
427
- i0.ɵɵpipe(4, "translate");
428
- i0.ɵɵtemplate(5, MapToolsComponent_igo_layer_list_5_Template, 3, 8, "igo-layer-list", 3);
429
- i0.ɵɵpipe(6, "async");
430
- i0.ɵɵelementEnd();
431
- i0.ɵɵelementStart(7, "mat-tab", 2);
432
- i0.ɵɵpipe(8, "translate");
433
- i0.ɵɵtemplate(9, MapToolsComponent_igo_layer_legend_list_9_Template, 2, 6, "igo-layer-legend-list", 4);
434
- i0.ɵɵtemplate(10, MapToolsComponent_10_Template, 1, 0, null, 5);
435
- i0.ɵɵpipe(11, "async");
436
- i0.ɵɵtemplate(12, MapToolsComponent_p_12_Template, 5, 7, "p", 6);
437
- i0.ɵɵpipe(13, "async");
438
- i0.ɵɵpipe(14, "async");
439
- i0.ɵɵelementEnd();
440
- i0.ɵɵtemplate(15, MapToolsComponent_ng_template_15_Template, 1, 1, "ng-template", null, 7, i0.ɵɵtemplateRefExtractor);
441
- i0.ɵɵelementEnd();
442
- } if (rf & 2) {
443
- const _r5 = i0.ɵɵreference(16);
444
- i0.ɵɵproperty("selectedIndex", i0.ɵɵpipeBind1(2, 9, ctx.layerListToolState.selectedTab$));
445
- i0.ɵɵadvance(3);
446
- i0.ɵɵproperty("label", i0.ɵɵpipeBind1(4, 11, "igo.integration.tools.layers"));
447
- i0.ɵɵadvance(2);
448
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(6, 13, ctx.layers$).length !== 0)("ngIfElse", _r5);
449
- i0.ɵɵadvance(2);
450
- i0.ɵɵproperty("label", i0.ɵɵpipeBind1(8, 15, "igo.integration.tools.legend"));
451
- i0.ɵɵadvance(2);
452
- i0.ɵɵproperty("ngIf", ctx.showAllLegend());
453
- i0.ɵɵadvance(1);
454
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(11, 17, ctx.layers$).length !== 0)("ngIfElse", _r5);
455
- i0.ɵɵadvance(2);
456
- i0.ɵɵproperty("ngIf", !ctx.allowShowAllLegends && i0.ɵɵpipeBind1(13, 19, ctx.layers$).length !== 0 && i0.ɵɵpipeBind1(14, 21, ctx.visibleOrInRangeLayers$).length === 0);
457
- } }, 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.StyleModalLayerButtonComponent, 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 });
458
- MapToolsComponent = __decorate([
459
- ToolComponent({
460
- name: 'mapTools',
461
- title: 'igo.integration.tools.map',
462
- icon: 'map'
463
- })
464
- ], MapToolsComponent);
465
- export { MapToolsComponent };
466
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MapToolsComponent, [{
467
- type: Component,
468
- 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-style-modal-layer-button *ngIf=\"isStyleEditButton(layer)\" [layer]=\"layer\"></igo-style-modal-layer-button>\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"] }]
469
- }], function () { return [{ type: i1.LayerListToolState }, { type: i2.ToolState }, { type: i3.MapState }, { type: i4.SearchSourceService }, { type: i5.ImportExportState }]; }, { allowShowAllLegends: [{
470
- type: Input
471
- }], showAllLegendsValue: [{
472
- type: Input
473
- }], toggleLegendOnVisibilityChange: [{
474
- type: Input
475
- }], expandLegendOfVisibleLayers: [{
476
- type: Input
477
- }], updateLegendOnResolutionChange: [{
478
- type: Input
479
- }], selectedTabAtOpening: [{
480
- type: Input
481
- }], ogcButton: [{
482
- type: Input
483
- }], timeButton: [{
484
- type: Input
485
- }], layerAdditionAllowed: [{
486
- type: Input
487
- }], layerListControls: [{
488
- type: Input
489
- }], queryBadge: [{
490
- type: Input
491
- }], tabGroup: [{
492
- type: ViewChild,
493
- args: ['tabGroup', { static: true }]
494
- }] }); })();
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_style_modal_layer_button_0_Template(rf, ctx) { if (rf & 1) {
23
+ i0.ɵɵelement(0, "igo-style-modal-layer-button", 11);
24
+ } if (rf & 2) {
25
+ const layer_r9 = i0.ɵɵnextContext().layer;
26
+ i0.ɵɵproperty("layer", layer_r9);
27
+ } }
28
+ function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_time_filter_button_3_Template(rf, ctx) { if (rf & 1) {
29
+ const _r16 = i0.ɵɵgetCurrentView();
30
+ i0.ɵɵelementStart(0, "igo-time-filter-button", 15);
31
+ i0.ɵɵlistener("click", function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_time_filter_button_3_Template_igo_time_filter_button_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r15 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r15.activateTimeFilter()); });
32
+ i0.ɵɵelementEnd();
33
+ } if (rf & 2) {
34
+ const layer_r9 = i0.ɵɵnextContext().layer;
35
+ const ctx_r11 = i0.ɵɵnextContext(2);
36
+ i0.ɵɵproperty("header", ctx_r11.timeButton)("layer", layer_r9);
37
+ } }
38
+ function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_ogc_filter_button_4_Template(rf, ctx) { if (rf & 1) {
39
+ const _r19 = i0.ɵɵgetCurrentView();
40
+ i0.ɵɵelementStart(0, "igo-ogc-filter-button", 15);
41
+ i0.ɵɵlistener("click", function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_ogc_filter_button_4_Template_igo_ogc_filter_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r18.activateOgcFilter()); });
42
+ i0.ɵɵelementEnd();
43
+ } if (rf & 2) {
44
+ const layer_r9 = i0.ɵɵnextContext().layer;
45
+ const ctx_r12 = i0.ɵɵnextContext(2);
46
+ i0.ɵɵproperty("header", ctx_r12.ogcButton)("layer", layer_r9);
47
+ } }
48
+ function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_export_button_5_Template(rf, ctx) { if (rf & 1) {
49
+ const _r23 = i0.ɵɵgetCurrentView();
50
+ i0.ɵɵelementStart(0, "igo-export-button", 16);
51
+ i0.ɵɵlistener("click", function MapToolsComponent_igo_layer_list_5_ng_template_1_igo_export_button_5_Template_igo_export_button_click_0_listener() { i0.ɵɵrestoreView(_r23); const layer_r9 = i0.ɵɵnextContext().layer; const ctx_r21 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r21.activateExport(layer_r9)); });
52
+ i0.ɵɵelementEnd();
53
+ } if (rf & 2) {
54
+ const layer_r9 = i0.ɵɵnextContext().layer;
55
+ i0.ɵɵproperty("layer", layer_r9);
56
+ } }
57
+ function MapToolsComponent_igo_layer_list_5_ng_template_1_Template(rf, ctx) { if (rf & 1) {
58
+ i0.ɵɵtemplate(0, MapToolsComponent_igo_layer_list_5_ng_template_1_igo_style_modal_layer_button_0_Template, 1, 1, "igo-style-modal-layer-button", 10);
59
+ i0.ɵɵelement(1, "igo-metadata-button", 11)(2, "igo-track-feature-button", 12);
60
+ i0.ɵɵtemplate(3, MapToolsComponent_igo_layer_list_5_ng_template_1_igo_time_filter_button_3_Template, 1, 2, "igo-time-filter-button", 13);
61
+ i0.ɵɵtemplate(4, MapToolsComponent_igo_layer_list_5_ng_template_1_igo_ogc_filter_button_4_Template, 1, 2, "igo-ogc-filter-button", 13);
62
+ i0.ɵɵtemplate(5, MapToolsComponent_igo_layer_list_5_ng_template_1_igo_export_button_5_Template, 1, 1, "igo-export-button", 14);
63
+ i0.ɵɵelement(6, "igo-workspace-button", 11);
64
+ } if (rf & 2) {
65
+ const layer_r9 = ctx.layer;
66
+ const ctx_r8 = i0.ɵɵnextContext(2);
67
+ i0.ɵɵproperty("ngIf", ctx_r8.isStyleEditButton(layer_r9));
68
+ i0.ɵɵadvance(1);
69
+ i0.ɵɵproperty("layer", layer_r9);
70
+ i0.ɵɵadvance(1);
71
+ i0.ɵɵproperty("trackFeature", true)("layer", layer_r9);
72
+ i0.ɵɵadvance(1);
73
+ i0.ɵɵproperty("ngIf", ctx_r8.isTimeFilterButton(layer_r9));
74
+ i0.ɵɵadvance(1);
75
+ i0.ɵɵproperty("ngIf", ctx_r8.isOGCFilterButton(layer_r9));
76
+ i0.ɵɵadvance(1);
77
+ i0.ɵɵproperty("ngIf", ctx_r8.isExportButton(layer_r9));
78
+ i0.ɵɵadvance(1);
79
+ i0.ɵɵproperty("layer", layer_r9);
80
+ } }
81
+ function MapToolsComponent_igo_layer_list_5_Template(rf, ctx) { if (rf & 1) {
82
+ const _r26 = i0.ɵɵgetCurrentView();
83
+ i0.ɵɵelementStart(0, "igo-layer-list", 8);
84
+ i0.ɵɵlistener("appliedFilterAndSort", function MapToolsComponent_igo_layer_list_5_Template_igo_layer_list_appliedFilterAndSort_0_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r25 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r25.onLayerListChange($event)); });
85
+ i0.ɵɵtemplate(1, MapToolsComponent_igo_layer_list_5_ng_template_1_Template, 7, 8, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
86
+ i0.ɵɵelementEnd();
87
+ } if (rf & 2) {
88
+ const ctx_r1 = i0.ɵɵnextContext();
89
+ 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);
90
+ } }
91
+ function MapToolsComponent_igo_layer_legend_list_9_Template(rf, ctx) { if (rf & 1) {
92
+ const _r28 = i0.ɵɵgetCurrentView();
93
+ i0.ɵɵelementStart(0, "igo-layer-legend-list", 17);
94
+ i0.ɵɵlistener("allLegendsShown", function MapToolsComponent_igo_layer_legend_list_9_Template_igo_layer_legend_list_allLegendsShown_0_listener($event) { i0.ɵɵrestoreView(_r28); const ctx_r27 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r27.onShowAllLegends($event)); });
95
+ i0.ɵɵpipe(1, "async");
96
+ i0.ɵɵelementEnd();
97
+ } if (rf & 2) {
98
+ const ctx_r2 = i0.ɵɵnextContext();
99
+ i0.ɵɵproperty("allowShowAllLegends", ctx_r2.allowShowAllLegends)("showAllLegendsValue", i0.ɵɵpipeBind1(1, 4, ctx_r2.showAllLegendsValue$))("excludeBaseLayers", ctx_r2.excludeBaseLayers)("updateLegendOnResolutionChange", ctx_r2.updateLegendOnResolutionChange);
100
+ } }
101
+ function MapToolsComponent_10_ng_template_0_Template(rf, ctx) { }
102
+ function MapToolsComponent_10_Template(rf, ctx) { if (rf & 1) {
103
+ i0.ɵɵtemplate(0, MapToolsComponent_10_ng_template_0_Template, 0, 0, "ng-template");
104
+ } }
105
+ function MapToolsComponent_p_12_Template(rf, ctx) { if (rf & 1) {
106
+ i0.ɵɵelementStart(0, "p", 18);
107
+ i0.ɵɵtext(1);
108
+ i0.ɵɵpipe(2, "async");
109
+ i0.ɵɵpipe(3, "translate");
110
+ i0.ɵɵpipe(4, "translate");
111
+ i0.ɵɵelementEnd();
112
+ } if (rf & 2) {
113
+ const ctx_r4 = i0.ɵɵnextContext();
114
+ i0.ɵɵadvance(1);
115
+ 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"), " ");
116
+ } }
117
+ function MapToolsComponent_ng_template_15_mat_list_0_p_4_Template(rf, ctx) { if (rf & 1) {
118
+ i0.ɵɵelementStart(0, "p", 18);
119
+ i0.ɵɵtext(1);
120
+ i0.ɵɵpipe(2, "translate");
121
+ i0.ɵɵelementEnd();
122
+ } if (rf & 2) {
123
+ i0.ɵɵadvance(1);
124
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "igo.integration.mapTool.customize"), "");
125
+ } }
126
+ function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_5_Template(rf, ctx) { if (rf & 1) {
127
+ const _r36 = i0.ɵɵgetCurrentView();
128
+ i0.ɵɵelementStart(0, "mat-list-item")(1, "mat-icon", 20);
129
+ i0.ɵɵnamespaceSVG();
130
+ i0.ɵɵelementStart(2, "svg", 21);
131
+ i0.ɵɵelement(3, "path", 22);
132
+ i0.ɵɵelementEnd()();
133
+ i0.ɵɵnamespaceHTML();
134
+ i0.ɵɵelementStart(4, "h4", 23);
135
+ i0.ɵɵlistener("click", function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_5_Template_h4_click_4_listener() { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r35.searchEmit()); });
136
+ i0.ɵɵtext(5);
137
+ i0.ɵɵpipe(6, "translate");
138
+ i0.ɵɵelementEnd()();
139
+ } if (rf & 2) {
140
+ i0.ɵɵadvance(5);
141
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 1, "igo.integration.mapTool.search-tool"), " ");
142
+ } }
143
+ function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_6_Template(rf, ctx) { if (rf & 1) {
144
+ const _r38 = i0.ɵɵgetCurrentView();
145
+ i0.ɵɵelementStart(0, "mat-list-item")(1, "mat-icon", 20);
146
+ i0.ɵɵnamespaceSVG();
147
+ i0.ɵɵelementStart(2, "svg", 21);
148
+ i0.ɵɵelement(3, "path", 24);
149
+ i0.ɵɵelementEnd()();
150
+ i0.ɵɵnamespaceHTML();
151
+ i0.ɵɵelementStart(4, "h4", 25);
152
+ i0.ɵɵlistener("click", function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_6_Template_h4_click_4_listener() { i0.ɵɵrestoreView(_r38); const ctx_r37 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r37.catalogEmit()); });
153
+ i0.ɵɵtext(5);
154
+ i0.ɵɵpipe(6, "translate");
155
+ i0.ɵɵelementEnd()();
156
+ } if (rf & 2) {
157
+ i0.ɵɵadvance(5);
158
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 1, "igo.integration.mapTool.catalog-tool"), " ");
159
+ } }
160
+ function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_7_Template(rf, ctx) { if (rf & 1) {
161
+ const _r40 = i0.ɵɵgetCurrentView();
162
+ i0.ɵɵelementStart(0, "mat-list-item")(1, "mat-icon", 20);
163
+ i0.ɵɵnamespaceSVG();
164
+ i0.ɵɵelementStart(2, "svg", 21);
165
+ i0.ɵɵelement(3, "path", 26);
166
+ i0.ɵɵelementEnd()();
167
+ i0.ɵɵnamespaceHTML();
168
+ i0.ɵɵelementStart(4, "h4", 27);
169
+ i0.ɵɵlistener("click", function MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_7_Template_h4_click_4_listener() { i0.ɵɵrestoreView(_r40); const ctx_r39 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r39.contextEmit()); });
170
+ i0.ɵɵtext(5);
171
+ i0.ɵɵpipe(6, "translate");
172
+ i0.ɵɵelementEnd()();
173
+ } if (rf & 2) {
174
+ i0.ɵɵadvance(5);
175
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 1, "igo.integration.mapTool.context-tool"), " ");
176
+ } }
177
+ function MapToolsComponent_ng_template_15_mat_list_0_Template(rf, ctx) { if (rf & 1) {
178
+ i0.ɵɵelementStart(0, "mat-list")(1, "p", 18);
179
+ i0.ɵɵtext(2);
180
+ i0.ɵɵpipe(3, "translate");
181
+ i0.ɵɵelementEnd();
182
+ i0.ɵɵtemplate(4, MapToolsComponent_ng_template_15_mat_list_0_p_4_Template, 3, 3, "p", 6);
183
+ i0.ɵɵtemplate(5, MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_5_Template, 7, 3, "mat-list-item", 19);
184
+ i0.ɵɵtemplate(6, MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_6_Template, 7, 3, "mat-list-item", 19);
185
+ i0.ɵɵtemplate(7, MapToolsComponent_ng_template_15_mat_list_0_mat_list_item_7_Template, 7, 3, "mat-list-item", 19);
186
+ i0.ɵɵelementEnd();
187
+ } if (rf & 2) {
188
+ const ctx_r30 = i0.ɵɵnextContext(2);
189
+ i0.ɵɵadvance(2);
190
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 5, "igo.integration.mapTool.empty"), "");
191
+ i0.ɵɵadvance(2);
192
+ i0.ɵɵproperty("ngIf", ctx_r30.layerAdditionAllowed && (ctx_r30.searchToolInToolbar || ctx_r30.catalogToolInToolbar || ctx_r30.contextToolInToolbar));
193
+ i0.ɵɵadvance(1);
194
+ i0.ɵɵproperty("ngIf", ctx_r30.layerAdditionAllowed && ctx_r30.searchToolInToolbar);
195
+ i0.ɵɵadvance(1);
196
+ i0.ɵɵproperty("ngIf", ctx_r30.layerAdditionAllowed && ctx_r30.catalogToolInToolbar);
197
+ i0.ɵɵadvance(1);
198
+ i0.ɵɵproperty("ngIf", ctx_r30.layerAdditionAllowed && ctx_r30.contextToolInToolbar);
199
+ } }
200
+ function MapToolsComponent_ng_template_15_Template(rf, ctx) { if (rf & 1) {
201
+ i0.ɵɵtemplate(0, MapToolsComponent_ng_template_15_mat_list_0_Template, 8, 7, "mat-list", 19);
202
+ } if (rf & 2) {
203
+ const ctx_r6 = i0.ɵɵnextContext();
204
+ i0.ɵɵproperty("ngIf", ctx_r6.delayedShowEmptyMapContent);
205
+ } }
206
+ /**
207
+ * Tool to browse a map's layers or to choose a different map
208
+ */
209
+ let MapToolsComponent = class MapToolsComponent {
210
+ constructor(layerListToolState, toolState, mapState, searchSourceService, importExportState) {
211
+ this.layerListToolState = layerListToolState;
212
+ this.toolState = toolState;
213
+ this.mapState = mapState;
214
+ this.searchSourceService = searchSourceService;
215
+ this.importExportState = importExportState;
216
+ this.layers$ = new BehaviorSubject([]);
217
+ this.showAllLegendsValue$ = new BehaviorSubject(false);
218
+ this.delayedShowEmptyMapContent = false;
219
+ this.allowShowAllLegends = false;
220
+ this.showAllLegendsValue = false;
221
+ this.toggleLegendOnVisibilityChange = false;
222
+ this.expandLegendOfVisibleLayers = false;
223
+ this.updateLegendOnResolutionChange = false;
224
+ this.ogcButton = true;
225
+ this.timeButton = true;
226
+ this.layerAdditionAllowed = true;
227
+ this._layerListControls = {};
228
+ this.queryBadge = false;
229
+ }
230
+ get layerListControls() {
231
+ return this._layerListControls;
232
+ }
233
+ set layerListControls(value) {
234
+ const stateOptions = this.layerListToolState.getLayerListControls();
235
+ const stateKeyword = stateOptions.keyword;
236
+ const stateOnlyVisible = stateOptions.onlyVisible;
237
+ const stateSortAlpha = stateOptions.sortAlpha;
238
+ value.keyword = stateKeyword !== '' ? stateKeyword : value.keyword;
239
+ value.onlyVisible =
240
+ stateOnlyVisible !== undefined ? stateOnlyVisible : value.onlyVisible;
241
+ value.sortAlpha =
242
+ stateSortAlpha !== undefined ? stateSortAlpha : value.sortAlpha;
243
+ value.onlyVisible =
244
+ value.onlyVisible === undefined ? false : value.onlyVisible;
245
+ value.sortAlpha = value.sortAlpha === undefined ? false : value.sortAlpha;
246
+ this._layerListControls = value;
247
+ }
248
+ get map() {
249
+ return this.mapState.map;
250
+ }
251
+ get visibleOrInRangeLayers$() {
252
+ return this.layers$.pipe(map((layers) => layers.filter((layer) => layer.visible$.value && layer.isInResolutionsRange$.value)));
253
+ }
254
+ get visibleLayers$() {
255
+ return this.layers$.pipe(map((layers) => layers.filter((layer) => layer.visible$.value)));
256
+ }
257
+ get excludeBaseLayers() {
258
+ return this.layerListControls.excludeBaseLayers || false;
259
+ }
260
+ get layerFilterAndSortOptions() {
261
+ const filterSortOptions = Object.assign({
262
+ showToolbar: LayerListControlsEnum.default
263
+ }, this.layerListControls);
264
+ switch (this.layerListControls.showToolbar) {
265
+ case LayerListControlsEnum.always:
266
+ filterSortOptions.showToolbar = LayerListControlsEnum.always;
267
+ break;
268
+ case LayerListControlsEnum.never:
269
+ filterSortOptions.showToolbar = LayerListControlsEnum.never;
270
+ break;
271
+ default:
272
+ break;
273
+ }
274
+ return filterSortOptions;
275
+ }
276
+ get searchToolInToolbar() {
277
+ return (this.toolState.toolbox.getToolbar().indexOf('searchResults') !== -1 &&
278
+ this.searchSourceService
279
+ .getSources()
280
+ .filter(sourceCanSearch)
281
+ .filter((s) => s.available && s.getType() === 'Layer').length > 0);
282
+ }
283
+ get catalogToolInToolbar() {
284
+ return this.toolState.toolbox.getToolbar().indexOf('catalog') !== -1;
285
+ }
286
+ get contextToolInToolbar() {
287
+ return this.toolState.toolbox.getToolbar().indexOf('contextManager') !== -1;
288
+ }
289
+ ngOnInit() {
290
+ this.selectedTab();
291
+ this.resolution$$ = combineLatest([
292
+ this.map.layers$,
293
+ this.map.viewController.resolution$
294
+ ])
295
+ .pipe(debounceTime(10))
296
+ .subscribe((bunch) => {
297
+ this.layers$.next(bunch[0].filter((layer) => layer.showInLayerList !== false &&
298
+ (!this.excludeBaseLayers || !layer.baseLayer)));
299
+ });
300
+ if (this.allowShowAllLegends) {
301
+ this.mapState.showAllLegendsValue =
302
+ this.mapState.showAllLegendsValue !== undefined
303
+ ? this.mapState.showAllLegendsValue
304
+ : this.showAllLegendsValue || false;
305
+ this.showAllLegendsValue$.next(this.mapState.showAllLegendsValue);
306
+ }
307
+ else {
308
+ this.showAllLegendsValue$.next(false);
309
+ }
310
+ // prevent message to be shown too quickly. Waiting for layers
311
+ setTimeout(() => (this.delayedShowEmptyMapContent = true), 250);
312
+ }
313
+ ngOnDestroy() {
314
+ this.resolution$$.unsubscribe();
315
+ if (this.visibleOrInRangeLayers$$) {
316
+ this.visibleOrInRangeLayers$$.unsubscribe();
317
+ }
318
+ }
319
+ onShowAllLegends(event) {
320
+ this.mapState.showAllLegendsValue = event;
321
+ this.showAllLegendsValue$.next(event);
322
+ }
323
+ selectedTab() {
324
+ const userSelectedTab = this.layerListToolState.selectedTab$.value;
325
+ if (userSelectedTab !== undefined) {
326
+ this.layerListToolState.setSelectedTab(userSelectedTab);
327
+ }
328
+ else {
329
+ if (this.selectedTabAtOpening === 'legend') {
330
+ this.layerListToolState.setSelectedTab(1);
331
+ }
332
+ else {
333
+ this.layerListToolState.setSelectedTab(0);
334
+ }
335
+ }
336
+ }
337
+ tabChanged(tab) {
338
+ this.layerListToolState.setSelectedTab(tab.index);
339
+ this.layers$.next(this.map.layers.filter((layer) => layer.showInLayerList !== false &&
340
+ (!this.excludeBaseLayers || !layer.baseLayer)));
341
+ }
342
+ onLayerListChange(appliedFilters) {
343
+ this.layerListToolState.setKeyword(appliedFilters.keyword);
344
+ this.layerListToolState.setSortAlpha(appliedFilters.sortAlpha);
345
+ this.layerListToolState.setOnlyVisible(appliedFilters.onlyVisible);
346
+ }
347
+ showAllLegend() {
348
+ if (this.layers$.getValue().length === 0) {
349
+ return false;
350
+ }
351
+ else if (this.layers$.getValue().length !== 0 &&
352
+ this.allowShowAllLegends === false) {
353
+ let visibleOrInRangeLayers;
354
+ this.visibleOrInRangeLayers$$ = this.visibleOrInRangeLayers$.subscribe((value) => {
355
+ value.length === 0
356
+ ? (visibleOrInRangeLayers = false)
357
+ : (visibleOrInRangeLayers = true);
358
+ });
359
+ if (visibleOrInRangeLayers === false) {
360
+ return false;
361
+ }
362
+ }
363
+ return true;
364
+ }
365
+ activateExport(layer) {
366
+ let id = layer.id;
367
+ if (layer.options.workspace?.workspaceId) {
368
+ id = layer.options.workspace.workspaceId !== layer.id ? layer.options.workspace.workspaceId : layer.id;
369
+ }
370
+ this.importExportState.setsExportOptions({ layers: [id] });
371
+ this.importExportState.setMode(ImportExportMode.export);
372
+ this.toolState.toolbox.activateTool('importExport');
373
+ }
374
+ activateTimeFilter() {
375
+ this.toolState.toolbox.activateTool('activeTimeFilter');
376
+ }
377
+ activateOgcFilter() {
378
+ this.toolState.toolbox.activateTool('activeOgcFilter');
379
+ }
380
+ searchEmit() {
381
+ this.toolState.toolbox.activateTool('searchResults');
382
+ }
383
+ catalogEmit() {
384
+ this.toolState.toolbox.activateTool('catalog');
385
+ }
386
+ contextEmit() {
387
+ this.toolState.toolbox.activateTool('contextManager');
388
+ }
389
+ isTimeFilterButton(layer) {
390
+ const options = layer.dataSource.options;
391
+ return this.timeButton && options.timeFilterable && options.timeFilter;
392
+ }
393
+ isOGCFilterButton(layer) {
394
+ const options = layer.dataSource.options;
395
+ return this.ogcButton && options.ogcFilters && options.ogcFilters.enabled &&
396
+ (options.ogcFilters.pushButtons || options.ogcFilters.checkboxes || options.ogcFilters.radioButtons
397
+ || options.ogcFilters.select || options.ogcFilters.autocomplete || options.ogcFilters.editable);
398
+ }
399
+ isExportButton(layer) {
400
+ if ((layer instanceof VectorLayer && layer.exportable === true) ||
401
+ (layer.dataSource.options.download && layer.dataSource.options.download.url) ||
402
+ (layer.options.workspace?.enabled && layer.options.workspace?.workspaceId !== layer.id)) {
403
+ return true;
404
+ }
405
+ return false;
406
+ }
407
+ isStyleEditButton(layer) {
408
+ if (layer instanceof VectorLayer) {
409
+ if (layer.options?.igoStyle?.editable) {
410
+ return true;
411
+ }
412
+ }
413
+ return false;
414
+ }
415
+ };
416
+ 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)); };
417
+ MapToolsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MapToolsComponent, selectors: [["igo-map-tools"]], viewQuery: function MapToolsComponent_Query(rf, ctx) { if (rf & 1) {
418
+ i0.ɵɵviewQuery(_c0, 7);
419
+ } if (rf & 2) {
420
+ let _t;
421
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabGroup = _t.first);
422
+ } }, 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", 4, "ngIf"], [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) {
423
+ i0.ɵɵelementStart(0, "mat-tab-group", 0, 1);
424
+ i0.ɵɵlistener("selectedTabChange", function MapToolsComponent_Template_mat_tab_group_selectedTabChange_0_listener($event) { return ctx.tabChanged($event); });
425
+ i0.ɵɵpipe(2, "async");
426
+ i0.ɵɵelementStart(3, "mat-tab", 2);
427
+ i0.ɵɵpipe(4, "translate");
428
+ i0.ɵɵtemplate(5, MapToolsComponent_igo_layer_list_5_Template, 3, 8, "igo-layer-list", 3);
429
+ i0.ɵɵpipe(6, "async");
430
+ i0.ɵɵelementEnd();
431
+ i0.ɵɵelementStart(7, "mat-tab", 2);
432
+ i0.ɵɵpipe(8, "translate");
433
+ i0.ɵɵtemplate(9, MapToolsComponent_igo_layer_legend_list_9_Template, 2, 6, "igo-layer-legend-list", 4);
434
+ i0.ɵɵtemplate(10, MapToolsComponent_10_Template, 1, 0, null, 5);
435
+ i0.ɵɵpipe(11, "async");
436
+ i0.ɵɵtemplate(12, MapToolsComponent_p_12_Template, 5, 7, "p", 6);
437
+ i0.ɵɵpipe(13, "async");
438
+ i0.ɵɵpipe(14, "async");
439
+ i0.ɵɵelementEnd();
440
+ i0.ɵɵtemplate(15, MapToolsComponent_ng_template_15_Template, 1, 1, "ng-template", null, 7, i0.ɵɵtemplateRefExtractor);
441
+ i0.ɵɵelementEnd();
442
+ } if (rf & 2) {
443
+ const _r5 = i0.ɵɵreference(16);
444
+ i0.ɵɵproperty("selectedIndex", i0.ɵɵpipeBind1(2, 9, ctx.layerListToolState.selectedTab$));
445
+ i0.ɵɵadvance(3);
446
+ i0.ɵɵproperty("label", i0.ɵɵpipeBind1(4, 11, "igo.integration.tools.layers"));
447
+ i0.ɵɵadvance(2);
448
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(6, 13, ctx.layers$).length !== 0)("ngIfElse", _r5);
449
+ i0.ɵɵadvance(2);
450
+ i0.ɵɵproperty("label", i0.ɵɵpipeBind1(8, 15, "igo.integration.tools.legend"));
451
+ i0.ɵɵadvance(2);
452
+ i0.ɵɵproperty("ngIf", ctx.showAllLegend());
453
+ i0.ɵɵadvance(1);
454
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(11, 17, ctx.layers$).length !== 0)("ngIfElse", _r5);
455
+ i0.ɵɵadvance(2);
456
+ i0.ɵɵproperty("ngIf", !ctx.allowShowAllLegends && i0.ɵɵpipeBind1(13, 19, ctx.layers$).length !== 0 && i0.ɵɵpipeBind1(14, 21, ctx.visibleOrInRangeLayers$).length === 0);
457
+ } }, 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.StyleModalLayerButtonComponent, 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 });
458
+ MapToolsComponent = __decorate([
459
+ ToolComponent({
460
+ name: 'mapTools',
461
+ title: 'igo.integration.tools.map',
462
+ icon: 'map'
463
+ })
464
+ ], MapToolsComponent);
465
+ export { MapToolsComponent };
466
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MapToolsComponent, [{
467
+ type: Component,
468
+ 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-style-modal-layer-button *ngIf=\"isStyleEditButton(layer)\" [layer]=\"layer\"></igo-style-modal-layer-button>\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"] }]
469
+ }], function () { return [{ type: i1.LayerListToolState }, { type: i2.ToolState }, { type: i3.MapState }, { type: i4.SearchSourceService }, { type: i5.ImportExportState }]; }, { allowShowAllLegends: [{
470
+ type: Input
471
+ }], showAllLegendsValue: [{
472
+ type: Input
473
+ }], toggleLegendOnVisibilityChange: [{
474
+ type: Input
475
+ }], expandLegendOfVisibleLayers: [{
476
+ type: Input
477
+ }], updateLegendOnResolutionChange: [{
478
+ type: Input
479
+ }], selectedTabAtOpening: [{
480
+ type: Input
481
+ }], ogcButton: [{
482
+ type: Input
483
+ }], timeButton: [{
484
+ type: Input
485
+ }], layerAdditionAllowed: [{
486
+ type: Input
487
+ }], layerListControls: [{
488
+ type: Input
489
+ }], queryBadge: [{
490
+ type: Input
491
+ }], tabGroup: [{
492
+ type: ViewChild,
493
+ args: ['tabGroup', { static: true }]
494
+ }] }); })();
495
495
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXRvb2xzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC10b29scy9tYXAtdG9vbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXRvb2xzL21hcC10b29scy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsS0FBSyxFQUVMLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFDTCxxQkFBcUIsRUFJckIsZUFBZSxFQUdmLFdBQVcsRUFDWixNQUFNLFdBQVcsQ0FBQztBQU1uQixPQUFPLEVBQUUsZUFBZSxFQUE0QixhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEYsT0FBTyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQXFCLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNSdEYsbURBQThHOzs7SUFBL0MsZ0NBQWU7Ozs7SUFHOUUsa0RBQ3VEO0lBQS9CLG1PQUFTLGVBQUEsNEJBQW9CLENBQUEsSUFBQztJQUFDLGlCQUF5Qjs7OztJQUR0QiwyQ0FBcUIsbUJBQUE7Ozs7SUFFL0UsaURBQ3NEO0lBQTlCLGlPQUFTLGVBQUEsMkJBQW1CLENBQUEsSUFBQztJQUFDLGlCQUF3Qjs7OztJQUR0QiwwQ0FBb0IsbUJBQUE7Ozs7SUFFNUUsNkNBQWlHO0lBQWhDLG9RQUFTLGVBQUEsZ0NBQXFCLENBQUEsSUFBQztJQUFDLGlCQUFvQjs7O0lBQXBFLGdDQUFlOzs7SUFQaEUsb0pBQThH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QUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVG9vbENvbXBvbmVudCB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XG5pbXBvcnQge1xuICBMYXllckxpc3RDb250cm9sc0VudW0sXG4gIExheWVyTGlzdENvbnRyb2xzT3B0aW9ucyxcbiAgSWdvTWFwLFxuICBTZWFyY2hTb3VyY2VTZXJ2aWNlLFxuICBzb3VyY2VDYW5TZWFyY2gsXG4gIExheWVyLFxuICBFeHBvcnRPcHRpb25zLFxuICBWZWN0b3JMYXllclxufSBmcm9tICdAaWdvMi9nZW8nO1xuXG5pbXBvcnQgeyBMYXllckxpc3RUb29sU3RhdGUgfSBmcm9tICcuLi9sYXllci1saXN0LXRvb2wuc3RhdGUnO1xuaW1wb3J0IHsgTWF0VGFiQ2hhbmdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IFRvb2xTdGF0ZSB9IGZyb20gJy4uLy4uL3Rvb2wvdG9vbC5zdGF0ZSc7XG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4uL21hcC5zdGF0ZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJbXBvcnRFeHBvcnRNb2RlLCBJbXBvcnRFeHBvcnRTdGF0ZSB9IGZyb20gJy4uLy4uL2ltcG9ydC1leHBvcnQvaW1wb3J0LWV4cG9ydC5zdGF0ZSc7XG4vKipcbiAqIFRvb2wgdG8gYnJvd3NlIGEgbWFwJ3MgbGF5ZXJzIG9yIHRvIGNob29zZSBhIGRpZmZlcmVudCBtYXBcbiAqL1xuQFRvb2xDb21wb25lbnQoe1xuICBuYW1lOiAnbWFwVG9vbHMnLFxuICB0aXRsZTogJ2lnby5pbnRlZ3JhdGlvbi50b29scy5tYXAnLFxuICBpY29uOiAnbWFwJ1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1tYXAtdG9vbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFwLXRvb2xzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWFwLXRvb2xzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1hcFRvb2xzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBsYXllcnMkOiBCZWhhdmlvclN1YmplY3Q8TGF5ZXJbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcbiAgc2hvd0FsbExlZ2VuZHNWYWx1ZSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHByaXZhdGUgcmVzb2x1dGlvbiQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgdmlzaWJsZU9ySW5SYW5nZUxheWVycyQkOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBkZWxheWVkU2hvd0VtcHR5TWFwQ29udGVudDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGFsbG93U2hvd0FsbExlZ2VuZHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBzaG93QWxsTGVnZW5kc1ZhbHVlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgdG9nZ2xlTGVnZW5kT25WaXNpYmlsaXR5Q2hhbmdlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgZXhwYW5kTGVnZW5kT2ZWaXNpYmxlTGF5ZXJzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgdXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2VsZWN0ZWRUYWJBdE9wZW5pbmc6IHN0cmluZztcblxuICBASW5wdXQoKSBvZ2NCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIHRpbWVCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIGxheWVyQWRkaXRpb25BbGxvd2VkOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBnZXQgbGF5ZXJMaXN0Q29udHJvbHMoKTogTGF5ZXJMaXN0Q29udHJvbHNPcHRpb25zIHtcbiAgICByZXR1cm4gdGhpcy5fbGF5ZXJMaXN0Q29udHJvbHM7XG4gIH1cbiAgc2V0IGxheWVyTGlzdENvbnRyb2xzKHZhbHVlOiBMYXllckxpc3RDb250cm9sc09wdGlvbnMpIHtcbiAgICBjb25zdCBzdGF0ZU9wdGlvbnMgPSB0aGlzLmxheWVyTGlzdFRvb2xTdGF0ZS5nZXRMYXllckxpc3RDb250cm9scygpO1xuICAgIGNvbnN0IHN0YXRlS2V5d29yZCA9IHN0YXRlT3B0aW9ucy5rZXl3b3JkO1xuICAgIGNvbnN0IHN0YXRlT25seVZpc2libGUgPSBzdGF0ZU9wdGlvbnMub25seVZpc2libGU7XG4gICAgY29uc3Qgc3RhdGVTb3J0QWxwaGEgPSBzdGF0ZU9wdGlvbnMuc29ydEFscGhhO1xuXG4gICAgdmFsdWUua2V5d29yZCA9IHN0YXRlS2V5d29yZCAhPT0gJycgPyBzdGF0ZUtleXdvcmQgOiB2YWx1ZS5rZXl3b3JkO1xuICAgIHZhbHVlLm9ubHlWaXNpYmxlID1cbiAgICAgIHN0YXRlT25seVZpc2libGUgIT09IHVuZGVmaW5lZCA/IHN0YXRlT25seVZpc2libGUgOiB2YWx1ZS5vbmx5VmlzaWJsZTtcbiAgICB2YWx1ZS5zb3J0QWxwaGEgPVxuICAgICAgc3RhdGVTb3J0QWxwaGEgIT09IHVuZGVmaW5lZCA/IHN0YXRlU29ydEFscGhhIDogdmFsdWUuc29ydEFscGhhO1xuXG4gICAgdmFsdWUub25seVZpc2libGUgPVxuICAgICAgdmFsdWUub25seVZpc2libGUgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogdmFsdWUub25seVZpc2libGU7XG4gICAgdmFsdWUuc29ydEFscGhhID0gdmFsdWUuc29ydEFscGhhID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IHZhbHVlLnNvcnRBbHBoYTtcblxuICAgIHRoaXMuX2xheWVyTGlzdENvbnRyb2xzID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfbGF5ZXJMaXN0Q29udHJvbHMgPSB7fTtcblxuICBnZXQgbWFwKCk6IElnb01hcCB7XG4gICAgcmV0dXJuIHRoaXMubWFwU3RhdGUubWFwO1xuICB9XG5cbiAgQElucHV0KCkgcXVlcnlCYWRnZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGdldCB2aXNpYmxlT3JJblJhbmdlTGF5ZXJzJCgpOiBPYnNlcnZhYmxlPExheWVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5sYXllcnMkLnBpcGUoXG4gICAgICBtYXAoKGxheWVycykgPT5cbiAgICAgICAgbGF5ZXJzLmZpbHRlcihcbiAgICAgICAgICAobGF5ZXIpID0+IGxheWVyLnZpc2libGUkLnZhbHVlICYmIGxheWVyLmlzSW5SZXNvbHV0aW9uc1JhbmdlJC52YWx1ZVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlTGF5ZXJzJCgpOiBPYnNlcnZhYmxlPExheWVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5sYXllcnMkLnBpcGUoXG4gICAgICBtYXAoKGxheWVycykgPT4gbGF5ZXJzLmZpbHRlcigobGF5ZXIpID0+IGxheWVyLnZpc2libGUkLnZhbHVlKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0IGV4Y2x1ZGVCYXNlTGF5ZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxheWVyTGlzdENvbnRyb2xzLmV4Y2x1ZGVCYXNlTGF5ZXJzIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGxheWVyRmlsdGVyQW5kU29ydE9wdGlvbnMoKTogTGF5ZXJMaXN0Q29udHJvbHNPcHRpb25zIHtcbiAgICBjb25zdCBmaWx0ZXJTb3J0T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7XG4gICAgICAgIHNob3dUb29sYmFyOiBMYXllckxpc3RDb250cm9sc0VudW0uZGVmYXVsdFxuICAgICAgfSxcbiAgICAgIHRoaXMubGF5ZXJMaXN0Q29udHJvbHNcbiAgICApO1xuXG4gICAgc3dpdGNoICh0aGlzLmxheWVyTGlzdENvbnRyb2xzLnNob3dUb29sYmFyKSB7XG4gICAgICBjYXNlIExheWVyTGlzdENvbnRyb2xzRW51bS5hbHdheXM6XG4gICAgICAgIGZpbHRlclNvcnRPcHRpb25zLnNob3dUb29sYmFyID0gTGF5ZXJMaXN0Q29udHJvbHNFbnVtLmFsd2F5cztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExheWVyTGlzdENvbnRyb2xzRW51bS5uZXZlcjpcbiAgICAgICAgZmlsdGVyU29ydE9wdGlvbnMuc2hvd1Rvb2xiYXIgPSBMYXllckxpc3RDb250cm9sc0VudW0ubmV2ZXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJTb3J0T3B0aW9ucztcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ3RhYkdyb3VwJywgeyBzdGF0aWM6IHRydWUgfSkgdGFiR3JvdXA7XG5cbiAgZ2V0IHNlYXJjaFRvb2xJblRvb2xiYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guZ2V0VG9vbGJhcigpLmluZGV4T2YoJ3NlYXJjaFJlc3VsdHMnKSAhPT0gLTEgJiZcbiAgICAgIHRoaXMuc2VhcmNoU291cmNlU2VydmljZVxuICAgICAgICAuZ2V0U291cmNlcygpXG4gICAgICAgIC5maWx0ZXIoc291cmNlQ2FuU2VhcmNoKVxuICAgICAgICAuZmlsdGVyKChzKSA9PiBzLmF2YWlsYWJsZSAmJiBzLmdldFR5cGUoKSA9PT0gJ0xheWVyJykubGVuZ3RoID4gMFxuICAgICk7XG4gIH1cblxuICBnZXQgY2F0YWxvZ1Rvb2xJblRvb2xiYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9vbFN0YXRlLnRvb2xib3guZ2V0VG9vbGJhcigpLmluZGV4T2YoJ2NhdGFsb2cnKSAhPT0gLTE7XG4gIH1cblxuICBnZXQgY29udGV4dFRvb2xJblRvb2xiYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9vbFN0YXRlLnRvb2xib3guZ2V0VG9vbGJhcigpLmluZGV4T2YoJ2NvbnRleHRNYW5hZ2VyJykgIT09IC0xO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGxheWVyTGlzdFRvb2xTdGF0ZTogTGF5ZXJMaXN0VG9vbFN0YXRlLFxuICAgIHByaXZhdGUgdG9vbFN0YXRlOiBUb29sU3RhdGUsXG4gICAgcHVibGljIG1hcFN0YXRlOiBNYXBTdGF0ZSxcbiAgICBwcml2YXRlIHNlYXJjaFNvdXJjZVNlcnZpY2U6IFNlYXJjaFNvdXJjZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbXBvcnRFeHBvcnRTdGF0ZTogSW1wb3J0RXhwb3J0U3RhdGVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRUYWIoKTtcbiAgICB0aGlzLnJlc29sdXRpb24kJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5tYXAubGF5ZXJzJCxcbiAgICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kXG4gICAgXSlcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMCkpXG4gICAgICAuc3Vic2NyaWJlKChidW5jaDogW0xheWVyW10sIG51bWJlcl0pID0+IHtcbiAgICAgICAgdGhpcy5sYXllcnMkLm5leHQoXG4gICAgICAgICAgYnVuY2hbMF0uZmlsdGVyKFxuICAgICAgICAgICAgKGxheWVyKSA9PlxuICAgICAgICAgICAgICBsYXllci5zaG93SW5MYXllckxpc3QgIT09IGZhbHNlICYmXG4gICAgICAgICAgICAgICghdGhpcy5leGNsdWRlQmFzZUxheWVycyB8fCAhbGF5ZXIuYmFzZUxheWVyKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuYWxsb3dTaG93QWxsTGVnZW5kcykge1xuICAgICAgdGhpcy5tYXBTdGF0ZS5zaG93QWxsTGVnZW5kc1ZhbHVlID1cbiAgICAgICAgdGhpcy5tYXBTdGF0ZS5zaG93QWxsTGVnZW5kc1ZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHRoaXMubWFwU3RhdGUuc2hvd0FsbExlZ2VuZHNWYWx1ZVxuICAgICAgICAgIDogdGhpcy5zaG93QWxsTGVnZW5kc1ZhbHVlIHx8IGZhbHNlO1xuICAgICAgdGhpcy5zaG93QWxsTGVnZW5kc1ZhbHVlJC5uZXh0KHRoaXMubWFwU3RhdGUuc2hvd0FsbExlZ2VuZHNWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd0FsbExlZ2VuZHNWYWx1ZSQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgLy8gcHJldmVudCBtZXNzYWdlIHRvIGJlIHNob3duIHRvbyBxdWlja2x5LiBXYWl0aW5nIGZvciBsYXllcnNcbiAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLmRlbGF5ZWRTaG93RW1wdHlNYXBDb250ZW50ID0gdHJ1ZSksIDI1MCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc29sdXRpb24kJC51bnN1YnNjcmliZSgpO1xuICAgIGlmICh0aGlzLnZpc2libGVPckluUmFuZ2VMYXllcnMkJCkge1xuICAgICAgdGhpcy52aXNpYmxlT3JJblJhbmdlTGF5ZXJzJCQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBvblNob3dBbGxMZWdlbmRzKGV2ZW50KSB7XG4gICAgdGhpcy5tYXBTdGF0ZS5zaG93QWxsTGVnZW5kc1ZhbHVlID0gZXZlbnQ7XG4gICAgdGhpcy5zaG93QWxsTGVnZW5kc1ZhbHVlJC5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0ZWRUYWIoKSB7XG4gICAgY29uc3QgdXNlclNlbGVjdGVkVGFiID0gdGhpcy5sYXllckxpc3RUb29sU3RhdGUuc2VsZWN0ZWRUYWIkLnZhbHVlO1xuICAgIGlmICh1c2VyU2VsZWN0ZWRUYWIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5sYXllckxpc3RUb29sU3RhdGUuc2V0U2VsZWN0ZWRUYWIodXNlclNlbGVjdGVkVGFiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUYWJBdE9wZW5pbmcgPT09ICdsZWdlbmQnKSB7XG4gICAgICAgIHRoaXMubGF5ZXJMaXN0VG9vbFN0YXRlLnNldFNlbGVjdGVkVGFiKDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sYXllckxpc3RUb29sU3RhdGUuc2V0U2VsZWN0ZWRUYWIoMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRhYkNoYW5nZWQodGFiOiBNYXRUYWJDaGFuZ2VFdmVudCkge1xuICAgIHRoaXMubGF5ZXJMaXN0VG9vbFN0YXRlLnNldFNlbGVjdGVkVGFiKHRhYi5pbmRleCk7XG4gICAgdGhpcy5sYXllcnMkLm5leHQoXG4gICAgICB0aGlzLm1hcC5sYXllcnMuZmlsdGVyKFxuICAgICAgICAobGF5ZXIpID0+XG4gICAgICAgICAgbGF5ZXIuc2hvd0luTGF5ZXJMaXN0ICE9PSBmYWxzZSAmJlxuICAgICAgICAgICghdGhpcy5leGNsdWRlQmFzZUxheWVycyB8fCAhbGF5ZXIuYmFzZUxheWVyKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBvbkxheWVyTGlzdENoYW5nZShhcHBsaWVkRmlsdGVyczogTGF5ZXJMaXN0Q29udHJvbHNPcHRpb25zKSB7XG4gICAgdGhpcy5sYXllckxpc3RUb29sU3RhdGUuc2V0S2V5d29yZChhcHBsaWVkRmlsdGVycy5rZXl3b3JkKTtcbiAgICB0aGlzLmxheWVyTGlzdFRvb2xTdGF0ZS5zZXRTb3J0QWxwaGEoYXBwbGllZEZpbHRlcnMuc29ydEFscGhhKTtcbiAgICB0aGlzLmxheWVyTGlzdFRvb2xTdGF0ZS5zZXRPbmx5VmlzaWJsZShhcHBsaWVkRmlsdGVycy5vbmx5VmlzaWJsZSk7XG4gIH1cblxuICBzaG93QWxsTGVnZW5kKCkge1xuICAgIGlmICh0aGlzLmxheWVycyQuZ2V0VmFsdWUoKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5sYXllcnMkLmdldFZhbHVlKCkubGVuZ3RoICE9PSAwICYmXG4gICAgICB0aGlzLmFsbG93U2hvd0FsbExlZ2VuZHMgPT09IGZhbHNlXG4gICAgKSB7XG4gICAgICBsZXQgdmlzaWJsZU9ySW5SYW5nZUxheWVycztcbiAgICAgIHRoaXMudmlzaWJsZU9ySW5SYW5nZUxheWVycyQkID0gdGhpcy52aXNpYmxlT3JJblJhbmdlTGF5ZXJzJC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHZhbHVlLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gKHZpc2libGVPckluUmFuZ2VMYXllcnMgPSBmYWxzZSlcbiAgICAgICAgICA6ICh2aXNpYmxlT3JJblJhbmdlTGF5ZXJzID0gdHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHZpc2libGVPckluUmFuZ2VMYXllcnMgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhY3RpdmF0ZUV4cG9ydChsYXllcjogTGF5ZXIpIHtcbiAgICBsZXQgaWQgPSBsYXllci5pZDtcbiAgICBpZiAobGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LndvcmtzcGFjZUlkKSB7XG4gICAgICBpZCA9IGxheWVyLm9wdGlvbnMud29ya3NwYWNlLndvcmtzcGFjZUlkICE9PSBsYXllci5pZCA/IGxheWVyLm9wdGlvbnMud29ya3NwYWNlLndvcmtzcGFjZUlkIDogbGF5ZXIuaWQ7XG4gICAgfVxuICAgIHRoaXMuaW1wb3J0RXhwb3J0U3RhdGUuc2V0c0V4cG9ydE9wdGlvbnMoeyBsYXllcnM6IFtpZF0gfSBhcyBFeHBvcnRPcHRpb25zKTtcbiAgICB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLnNldE1vZGUoSW1wb3J0RXhwb3J0TW9kZS5leHBvcnQpO1xuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdpbXBvcnRFeHBvcnQnKTtcbiAgfVxuXG4gIGFjdGl2YXRlVGltZUZpbHRlcigpIHtcbiAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmFjdGl2YXRlVG9vbCgnYWN0aXZlVGltZUZpbHRlcicpO1xuICB9XG5cbiAgYWN0aXZhdGVPZ2NGaWx0ZXIoKSB7XG4gICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5hY3RpdmF0ZVRvb2woJ2FjdGl2ZU9nY0ZpbHRlcicpO1xuICB9XG5cbiAgc2VhcmNoRW1pdCgpIHtcbiAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmFjdGl2YXRlVG9vbCgnc2VhcmNoUmVzdWx0cycpO1xuICB9XG5cbiAgY2F0YWxvZ0VtaXQoKSB7XG4gICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5hY3RpdmF0ZVRvb2woJ2NhdGFsb2cnKTtcbiAgfVxuXG4gIGNvbnRleHRFbWl0KCkge1xuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdjb250ZXh0TWFuYWdlcicpO1xuICB9XG5cbiAgaXNUaW1lRmlsdGVyQnV0dG9uKGxheWVyKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucztcbiAgICByZXR1cm4gdGhpcy50aW1lQnV0dG9uICYmIG9wdGlvbnMudGltZUZpbHRlcmFibGUgJiYgb3B0aW9ucy50aW1lRmlsdGVyO1xuICB9XG5cbiAgaXNPR0NGaWx0ZXJCdXR0b24obGF5ZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBvcHRpb25zID0gbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zO1xuICAgIHJldHVybiB0aGlzLm9nY0J1dHRvbiAmJiBvcHRpb25zLm9nY0ZpbHRlcnMgJiYgb3B0aW9ucy5vZ2NGaWx0ZXJzLmVuYWJsZWQgJiZcbiAgICAob3B0aW9ucy5vZ2NGaWx0ZXJzLnB1c2hCdXR0b25zIHx8IG9wdGlvbnMub2djRmlsdGVycy5jaGVja2JveGVzIHx8IG9wdGlvbnMub2djRmlsdGVycy5yYWRpb0J1dHRvbnNcbiAgICAgIHx8IG9wdGlvbnMub2djRmlsdGVycy5zZWxlY3QgfHwgb3B0aW9ucy5vZ2NGaWx0ZXJzLmF1dG9jb21wbGV0ZSB8fCBvcHRpb25zLm9nY0ZpbHRlcnMuZWRpdGFibGUpO1xuICB9XG5cbiAgaXNFeHBvcnRCdXR0b24obGF5ZXI6IExheWVyKTogYm9vbGVhbiB7XG4gICAgaWYgKFxuICAgICAgKGxheWVyIGluc3RhbmNlb2YgVmVjdG9yTGF5ZXIgJiYgbGF5ZXIuZXhwb3J0YWJsZSA9PT0gdHJ1ZSkgfHxcbiAgICAgIChsYXllci5kYXRhU291cmNlLm9wdGlvbnMuZG93bmxvYWQgJiYgbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmRvd25sb2FkLnVybCkgfHxcbiAgICAgIChsYXllci5vcHRpb25zLndvcmtzcGFjZT8uZW5hYmxlZCAmJiBsYXllci5vcHRpb25zLndvcmtzcGFjZT8ud29ya3NwYWNlSWQgIT09IGxheWVyLmlkKSlcbiAgICAgIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpc1N0eWxlRWRpdEJ1dHRvbihsYXllcjogTGF5ZXIpOiBib29sZWFuIHtcbiAgICBpZiAobGF5ZXIgaW5zdGFuY2VvZiBWZWN0b3JMYXllcikge1xuICAgICAgaWYgKChsYXllciBhcyBWZWN0b3JMYXllcikub3B0aW9ucz8uaWdvU3R5bGU/LmVkaXRhYmxlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiPG1hdC10YWItZ3JvdXBcbiAgI3RhYkdyb3VwXG4gIFtzZWxlY3RlZEluZGV4XT1cImxheWVyTGlzdFRvb2xTdGF0ZS5zZWxlY3RlZFRhYiQgfCBhc3luY1wiXG4gIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJ0YWJDaGFuZ2VkKCRldmVudClcIj5cblxuICA8bWF0LXRhYiBbbGFiZWxdPVwiJ2lnby5pbnRlZ3JhdGlvbi50b29scy5sYXllcnMnIHzCoHRyYW5zbGF0ZVwiPlxuICAgIDxpZ28tbGF5ZXItbGlzdCAqbmdJZj1cIihsYXllcnMkIHwgYXN5bmMpLmxlbmd0aCAhPT0gMDsgZWxzZSBlbXB0eUxheWVyc1wiXG4gICAgICBpZ29MYXllckxpc3RCaW5kaW5nXG4gICAgICBbZXhjbHVkZUJhc2VMYXllcnNdPVwiZXhjbHVkZUJhc2VMYXllcnNcIlxuICAgICAgW2xheWVyRmlsdGVyQW5kU29ydE9wdGlvbnNdPVwibGF5ZXJGaWx0ZXJBbmRTb3J0T3B0aW9uc1wiXG4gICAgICBbZXhwYW5kTGVnZW5kT2ZWaXNpYmxlTGF5ZXJzXT1cImV4cGFuZExlZ2VuZE9mVmlzaWJsZUxheWVyc1wiXG4gICAgICBbdG9nZ2xlTGVnZW5kT25WaXNpYmlsaXR5Q2hhbmdlXT1cInRvZ2dsZUxlZ2VuZE9uVmlzaWJpbGl0eUNoYW5nZVwiXG4gICAgICBbdXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXT1cInVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZVwiXG4gICAgICBbZmxvYXRMYWJlbF09XCJmYWxzZVwiXG4gICAgICBbcXVlcnlCYWRnZV09XCJxdWVyeUJhZGdlXCJcbiAgICAgIFttYXBdPVwibWFwXCJcbiAgICAgIChhcHBsaWVkRmlsdGVyQW5kU29ydCk9XCJvbkxheWVyTGlzdENoYW5nZSgkZXZlbnQpXCI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaWdvTGF5ZXJJdGVtVG9vbGJhciBsZXQtbGF5ZXI9XCJsYXllclwiPlxuICAgICAgICA8aWdvLXN0eWxlLW1vZGFsLWxheWVyLWJ1dHRvbiAqbmdJZj1cImlzU3R5bGVFZGl0QnV0dG9uKGxheWVyKVwiIFtsYXllcl09XCJsYXllclwiPjwvaWdvLXN0eWxlLW1vZGFsLWxheWVyLWJ1dHRvbj5cbiAgICAgICAgPGlnby1tZXRhZGF0YS1idXR0b24gW2xheWVyXT1cImxheWVyXCI+PC9pZ28tbWV0YWRhdGEtYnV0dG9uPlxuICAgICAgICA8aWdvLXRyYWNrLWZlYXR1cmUtYnV0dG9uIFt0cmFja0ZlYXR1cmVdPVwidHJ1ZVwiIFtsYXllcl09XCJsYXllclwiPjwvaWdvLXRyYWNrLWZlYXR1cmUtYnV0dG9uPlxuICAgICAgICA8aWdvLXRpbWUtZmlsdGVyLWJ1dHRvbiAqbmdJZj1cImlzVGltZUZpbHRlckJ1dHRvbihsYXllcilcIiBbaGVhZGVyXT1cInRpbWVCdXR0b25cIiBbbGF5ZXJdPVwibGF5ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVUaW1lRmlsdGVyKClcIj48L2lnby10aW1lLWZpbHRlci1idXR0b24+XG4gICAgICAgIDxpZ28tb2djLWZpbHRlci1idXR0b24gKm5nSWY9XCJpc09HQ0ZpbHRlckJ1dHRvbihsYXllcilcIiBbaGVhZGVyXT1cIm9nY0J1dHRvblwiIFtsYXllcl09XCJsYXllclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZU9nY0ZpbHRlcigpXCI+PC9pZ28tb2djLWZpbHRlci1idXR0b24+XG4gICAgICAgIDxpZ28tZXhwb3J0LWJ1dHRvbiAqbmdJZj1cImlzRXhwb3J0QnV0dG9uKGxheWVyKVwiIFtsYXllcl09XCJsYXllclwiIChjbGljayk9XCJhY3RpdmF0ZUV4cG9ydChsYXllcilcIj48L2lnby1leHBvcnQtYnV0dG9uPlxuICAgICAgICA8aWdvLXdvcmtzcGFjZS1idXR0b24gW2xheWVyXT1cImxheWVyXCI+PC9pZ28td29ya3NwYWNlLWJ1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pZ28tbGF5ZXItbGlzdD5cbiAgPC9tYXQtdGFiPlxuXG4gIDxtYXQtdGFiIFtsYWJlbF09XCInaWdvLmludGVncmF0aW9uLnRvb2xzLmxlZ2VuZCcgfMKgdHJhbnNsYXRlXCI+XG4gICAgPGlnby1sYXllci1sZWdlbmQtbGlzdCAqbmdJZj1cInNob3dBbGxMZWdlbmQoKVwiXG4gICAgICBpZ29MYXllckxlZ2VuZExpc3RCaW5kaW5nXG4gICAgICBbYWxsb3dTaG93QWxsTGVnZW5kc109XCJhbGxvd1Nob3dBbGxMZWdlbmRzXCJcbiAgICAgIFtzaG93QWxsTGVnZW5kc1ZhbHVlXT1cIihzaG93QWxsTGVnZW5kc1ZhbHVlJCB8IGFzeW5jKVwiXG4gICAgICAoYWxsTGVnZW5kc1Nob3duKT1cIm9uU2hvd0FsbExlZ2VuZHMoJGV2ZW50KVwiXG4gICAgICBbZXhjbHVkZUJhc2VMYXllcnNdPVwiZXhjbHVkZUJhc2VMYXllcnNcIlxuICAgICAgW3VwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZV09XCJ1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2VcIj5cbiAgICA8L2lnby1sYXllci1sZWdlbmQtbGlzdD5cbiAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCIobGF5ZXJzJCB8IGFzeW5jKS5sZW5ndGggIT09IDA7IGVsc2UgZW1wdHlMYXllcnNcIj48L25nLXRlbXBsYXRlPlxuXG4gICAgPHAgY2xhc3M9XCJtYXAtZW1wdHkgbWF0LXR5cG9ncmFwaHlcIlxuICAgICAgKm5nSWY9XCIhYWxsb3dTaG93QWxsTGVnZW5kcyAmJiAobGF5ZXJzJCB8IGFzeW5jKS5sZW5ndGggIT09IDAgJiYgKHZpc2libGVPckluUmFuZ2VMYXllcnMkIHwgYXN5bmMpLmxlbmd0aCA9PT0gMFwiPlxuICAgICAge3sgKCh2aXNpYmxlTGF5ZXJzJCB8IGFzeW5jKS5sZW5ndGgpID8gKCdpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5ub0xheWVyc0luUmFuZ2UnIHwgdHJhbnNsYXRlKSA6ICAoJ2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLm5vTGF5ZXJzVmlzaWJsZScgfCB0cmFuc2xhdGUpIH19XG4gICAgPC9wPlxuICA8L21hdC10YWI+XG5cbiAgICA8bmctdGVtcGxhdGUgI2VtcHR5TGF5ZXJzPlxuICAgICAgPG1hdC1saXN0ICpuZ0lmPVwiZGVsYXllZFNob3dFbXB0eU1hcENvbnRlbnRcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJtYXAtZW1wdHkgbWF0LXR5cG9ncmFwaHlcIj5cbiAgICAgICAgICB7eydpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5lbXB0eScgfCB0cmFuc2xhdGV9fTwvcD5cbiAgICAgICAgPHAgKm5nSWY9XCJsYXllckFkZGl0aW9uQWxsb3dlZCAmJiAoc2VhcmNoVG9vbEluVG9vbGJhciB8fCBjYXRhbG9nVG9vbEluVG9vbGJhciB8fCBjb250ZXh0VG9vbEluVG9vbGJhcilcIlxuICAgICAgICAgIGNsYXNzPVwibWFwLWVtcHR5IG1hdC10eXBvZ3JhcGh5XCI+XG4gICAgICAgICAge3snaWdvLmludGVncmF0aW9uLm1hcFRvb2wuY3VzdG9taXplJyB8IHRyYW5zbGF0ZX19PC9wPlxuXG4gICAgICAgIDxtYXQtbGlzdC1pdGVtICpuZ0lmPVwibGF5ZXJBZGRpdGlvbkFsbG93ZWQgJiYgc2VhcmNoVG9vbEluVG9vbGJhclwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBtYXQtbGlzdC1pY29uPiA8c3ZnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZml0PScnIGhlaWdodD0nMTAwJScgd2lkdGg9JzEwMCUnXG4gICAgICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89J3hNaWRZTWlkIG1lZXQnIGZvY3VzYWJsZT0nZmFsc2UnPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9J005LjUsM0E2LjUsNi41IDAgMCwxIDE2LDkuNUMxNiwxMS4xMSAxNS40MSwxMi41OSAxNC40NCwxMy43M0wxNC43MSwxNEgxNS41TDIwLjUsMTlMMTksMjAuNUwxNCwxNS41VjE0LjcxTDEzLjczLDE0LjQ0QzEyLjU5LDE1LjQxIDExLjExLDE2IDkuNSwxNkE2LjUsNi41IDAgMCwxIDMsOS41QTYuNSw2LjUgMCAwLDEgOS41LDNNOS41LDVDNyw1IDUsNyA1LDkuNUM1LDEyIDcsMTQgOS41LDE0QzEyLDE0IDE0LDEyIDE0LDkuNUMxNCw3IDEyLDUgOS41LDVaJz5cbiAgICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgICAgPC9zdmc+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8aDQgbWF0TGluZSBjbGFzcz1cInNlYXJjaC10b29sIG1hdC10eXBvZ3JhcGh5XCIgKGNsaWNrKT1cInNlYXJjaEVtaXQoKVwiPlxuICAgICAgICAgICAge3snaWdvLmludGVncmF0aW9uLm1hcFRvb2wuc2VhcmNoLXRvb2wnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICA8L2g0PlxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICAgIDxtYXQtbGlzdC1pdGVtICpuZ0lmPVwibGF5ZXJBZGRpdGlvbkFsbG93ZWQgJiYgY2F0YWxvZ1Rvb2xJblRvb2xiYXJcIj5cbiAgICAgICAgICA8bWF0LWljb24gbWF0LWxpc3QtaWNvbj4gPHN2ZyB2aWV3Qm94PScwIDAgMjQgMjQnIGZpdD0nJyBoZWlnaHQ9JzEwMCUnIHdpZHRoPScxMDAlJ1xuICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSd4TWlkWU1pZCBtZWV0JyBmb2N1c2FibGU9J2ZhbHNlJz5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPSdNMTcsMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNMTEsMTZMMiw5TDExLDJMMjAsOUwxMSwxNk0xMSwxOC41NEwxMiwxNy43NVYxOEMxMiwxOC43MSAxMi4xMiwxOS4zOSAxMi4zNSwyMEwxMSwyMS4wN0wyLDE0LjA3TDMuNjIsMTIuODFMMTEsMTguNTRaJz5cbiAgICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgICAgPC9zdmc+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8aDQgbWF0TGluZSBjbGFzcz1cImNhdGFsb2ctdG9vbCBtYXQtdHlwb2dyYXBoeVwiIChjbGljayk9XCJjYXRhbG9nRW1pdCgpXCI+XG4gICAgICAgICAgICB7eydpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5jYXRhbG9nLXRvb2wnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICA8L2g0PlxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICAgIDxtYXQtbGlzdC1pdGVtICpuZ0lmPVwibGF5ZXJBZGRpdGlvbkFsbG93ZWQgJiYgY29udGV4dFRvb2xJblRvb2xiYXJcIj5cbiAgICAgICAgICA8bWF0LWljb24gbWF0LWxpc3QtaWNvbj4gPHN2ZyB2aWV3Qm94PScwIDAgMjQgMjQnIGZpdD0nJyBoZWlnaHQ9JzEwMCUnIHdpZHRoPScxMDAlJ1xuICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSd4TWlkWU1pZCBtZWV0JyBmb2N1c2FibGU9J2ZhbHNlJz5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPSdNMTIsMTcuMjdMMTguMTgsMjFMMTYuNTQsMTMuOTdMMjIsOS4yNEwxNC44MSw4LjYyTDEyLDJMOS4xOSw4LjYyTDIsOS4yNEw3LjQ1LDEzLjk3TDUuODIsMjFMMTIsMTcuMjdaJz5cbiAgICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgICAgPC9zdmc+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8aDQgbWF0TGluZSBjbGFzcz1cImNvbnRleHQtdG9vbCBtYXQtdHlwb2dyYXBoeVwiIChjbGljayk9XCJjb250ZXh0RW1pdCgpXCI+XG4gICAgICAgICAgICB7eydpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5jb250ZXh0LXRvb2wnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICA8L2g0PlxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICA8L21hdC1saXN0PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L21hdC10YWItZ3JvdXA+XG4iXX0=