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