@igo2/integration 18.0.0-next.9 → 18.0.1-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/igo2-integration.mjs +555 -466
- package/fesm2022/igo2-integration.mjs.map +1 -1
- package/lib/directions/directions-tool/directions-tool.component.d.ts +3 -3
- package/lib/directions/directions.state.d.ts +2 -2
- package/lib/filter/spatial-filter-tool/spatial-filter-tool.component.d.ts +4 -6
- package/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.d.ts +5 -6
- package/lib/map/map-details-tool/map-details-tool.component.d.ts +12 -4
- package/lib/map/map-legend/map-legend-tool.component.d.ts +4 -4
- package/lib/map/map-proximity.state.d.ts +4 -3
- package/lib/map/map-tool/map-tool.component.d.ts +14 -3
- package/lib/map/map-tools/map-tools.component.d.ts +15 -6
- package/lib/workspace/workspace-button/workspace-button.component.d.ts +4 -4
- package/package.json +8 -10
- package/esm2022/igo2-integration.mjs +0 -5
- package/esm2022/lib/about/about-tool/about-tool.component.mjs +0 -152
- package/esm2022/lib/about/about-tool/index.mjs +0 -2
- package/esm2022/lib/about/about.module.mjs +0 -26
- package/esm2022/lib/about/index.mjs +0 -2
- package/esm2022/lib/analytics/analytics-listener.service.mjs +0 -145
- package/esm2022/lib/analytics/index.mjs +0 -2
- package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs +0 -113
- package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.mjs +0 -19
- package/esm2022/lib/catalog/catalog-library-tool/catalog-library-tool.component.mjs +0 -110
- package/esm2022/lib/catalog/catalog-library-tool/catalog-library-tool.module.mjs +0 -19
- package/esm2022/lib/catalog/catalog.module.mjs +0 -19
- package/esm2022/lib/catalog/catalog.state.mjs +0 -58
- package/esm2022/lib/catalog/index.mjs +0 -6
- package/esm2022/lib/context/context-editor-tool/context-editor-tool.component.mjs +0 -33
- package/esm2022/lib/context/context-manager-tool/context-manager-tool.component.mjs +0 -46
- package/esm2022/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.mjs +0 -23
- package/esm2022/lib/context/context-share-tool/context-share-tool.component.mjs +0 -40
- package/esm2022/lib/context/context.directive.mjs +0 -11
- package/esm2022/lib/context/context.module.mjs +0 -23
- package/esm2022/lib/context/context.state.mjs +0 -96
- package/esm2022/lib/context/index.mjs +0 -7
- package/esm2022/lib/directions/directions-tool/directions-tool.component.mjs +0 -121
- package/esm2022/lib/directions/directions-tool/index.mjs +0 -2
- package/esm2022/lib/directions/directions.module.mjs +0 -25
- package/esm2022/lib/directions/directions.state.mjs +0 -69
- package/esm2022/lib/directions/index.mjs +0 -3
- package/esm2022/lib/draw/draw.module.mjs +0 -18
- package/esm2022/lib/draw/draw.state.mjs +0 -43
- package/esm2022/lib/draw/drawing-tool/drawing-tool.component.mjs +0 -72
- package/esm2022/lib/draw/drawing-tool/drawing-tool.module.mjs +0 -19
- package/esm2022/lib/draw/index.mjs +0 -4
- package/esm2022/lib/environment/environment.interface.mjs +0 -2
- package/esm2022/lib/environment/index.mjs +0 -2
- package/esm2022/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.mjs +0 -10
- package/esm2022/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.mjs +0 -43
- package/esm2022/lib/filter/active-ogc-filter-tool/index.mjs +0 -2
- package/esm2022/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.mjs +0 -10
- package/esm2022/lib/filter/active-time-filter-tool/active-time-filter-tool.component.mjs +0 -43
- package/esm2022/lib/filter/active-time-filter-tool/index.mjs +0 -2
- package/esm2022/lib/filter/filter.module.mjs +0 -53
- package/esm2022/lib/filter/index.mjs +0 -18
- package/esm2022/lib/filter/ogc-filter-tool/index.mjs +0 -2
- package/esm2022/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs +0 -22
- package/esm2022/lib/filter/spatial-filter-tool/index.mjs +0 -2
- package/esm2022/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +0 -589
- package/esm2022/lib/filter/time-filter-tool/index.mjs +0 -2
- package/esm2022/lib/filter/time-filter-tool/time-filter-tool.component.mjs +0 -22
- package/esm2022/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.mjs +0 -184
- package/esm2022/lib/geometry-form/data-issue-reporter-tool/index.mjs +0 -2
- package/esm2022/lib/geometry-form/geometry-form.module.mjs +0 -37
- package/esm2022/lib/geometry-form/index.mjs +0 -2
- package/esm2022/lib/import-export/import-export-tool/import-export-tool.component.mjs +0 -113
- package/esm2022/lib/import-export/import-export-tool/index.mjs +0 -2
- package/esm2022/lib/import-export/import-export.module.mjs +0 -25
- package/esm2022/lib/import-export/import-export.state.mjs +0 -39
- package/esm2022/lib/import-export/index.mjs +0 -3
- package/esm2022/lib/integration.module.mjs +0 -70
- package/esm2022/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.mjs +0 -446
- package/esm2022/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +0 -60
- package/esm2022/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +0 -157
- package/esm2022/lib/map/advanced-map-tool/index.mjs +0 -2
- package/esm2022/lib/map/index.mjs +0 -10
- package/esm2022/lib/map/layer-list-tool.state.mjs +0 -40
- package/esm2022/lib/map/map-details-tool/index.mjs +0 -2
- package/esm2022/lib/map/map-details-tool/map-details-tool.component.mjs +0 -161
- package/esm2022/lib/map/map-legend/index.mjs +0 -2
- package/esm2022/lib/map/map-legend/map-legend-tool.component.mjs +0 -165
- package/esm2022/lib/map/map-proximity-tool/index.mjs +0 -2
- package/esm2022/lib/map/map-proximity-tool/map-proximity-tool.component.mjs +0 -152
- package/esm2022/lib/map/map-proximity.state.mjs +0 -180
- package/esm2022/lib/map/map-tool/index.mjs +0 -2
- package/esm2022/lib/map/map-tool/map-tool.component.mjs +0 -116
- package/esm2022/lib/map/map-tools/index.mjs +0 -2
- package/esm2022/lib/map/map-tools/map-tools.component.mjs +0 -317
- package/esm2022/lib/map/map.directive.mjs +0 -15
- package/esm2022/lib/map/map.module.mjs +0 -59
- package/esm2022/lib/map/map.state.mjs +0 -58
- package/esm2022/lib/measure/index.mjs +0 -4
- package/esm2022/lib/measure/measure.module.mjs +0 -18
- package/esm2022/lib/measure/measure.state.mjs +0 -40
- package/esm2022/lib/measure/measurer-tool/measurer-tool.component.mjs +0 -51
- package/esm2022/lib/measure/measurer-tool/measurer-tool.module.mjs +0 -19
- package/esm2022/lib/print/index.mjs +0 -2
- package/esm2022/lib/print/print-tool/index.mjs +0 -2
- package/esm2022/lib/print/print-tool/print-tool.component.mjs +0 -32
- package/esm2022/lib/print/print.module.mjs +0 -25
- package/esm2022/lib/search/index.mjs +0 -7
- package/esm2022/lib/search/query.state.mjs +0 -48
- package/esm2022/lib/search/search-bar/search-bar-binding.directive.mjs +0 -71
- package/esm2022/lib/search/search-bar/search-bar.module.mjs +0 -19
- package/esm2022/lib/search/search-results-tool/search-results-tool.component.mjs +0 -557
- package/esm2022/lib/search/search-results-tool/search-results-tool.module.mjs +0 -19
- package/esm2022/lib/search/search.module.mjs +0 -20
- package/esm2022/lib/search/search.state.mjs +0 -155
- package/esm2022/lib/storage/index.mjs +0 -2
- package/esm2022/lib/storage/storage.state.mjs +0 -25
- package/esm2022/lib/tool/index.mjs +0 -2
- package/esm2022/lib/tool/tool.state.mjs +0 -56
- package/esm2022/lib/workspace/index.mjs +0 -4
- package/esm2022/lib/workspace/shared/edition-actions.service.mjs +0 -75
- package/esm2022/lib/workspace/shared/feature-actions.service.mjs +0 -65
- package/esm2022/lib/workspace/shared/index.mjs +0 -3
- package/esm2022/lib/workspace/shared/wfs-actions.service.mjs +0 -77
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +0 -166
- package/esm2022/lib/workspace/workspace-button/index.mjs +0 -2
- package/esm2022/lib/workspace/workspace-button/workspace-button.component.mjs +0 -71
- package/esm2022/lib/workspace/workspace.module.mjs +0 -19
- package/esm2022/lib/workspace/workspace.state.mjs +0 -205
- package/esm2022/public_api.mjs +0 -35
|
@@ -1,317 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { AsyncPipe, NgIf } from '@angular/common';
|
|
3
|
-
import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';
|
|
4
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
-
import { MatListModule } from '@angular/material/list';
|
|
6
|
-
import { MatTabsModule } from '@angular/material/tabs';
|
|
7
|
-
import { ToolComponent } from '@igo2/common/tool';
|
|
8
|
-
import { IgoLanguageModule } from '@igo2/core/language';
|
|
9
|
-
import { ExportButtonComponent, LayerLegendListBindingDirective, LayerLegendListComponent, LayerListBindingDirective, LayerListComponent, LayerListControlsEnum, MetadataButtonComponent, OgcFilterButtonComponent, SearchSourceService, StyleModalLayerButtonComponent, TimeFilterButtonComponent, TrackFeatureButtonComponent, VectorLayer, sourceCanSearch } from '@igo2/geo';
|
|
10
|
-
import { BehaviorSubject, combineLatest } from 'rxjs';
|
|
11
|
-
import { debounceTime, map } from 'rxjs/operators';
|
|
12
|
-
import { ImportExportMode, ImportExportState } from '../../import-export/import-export.state';
|
|
13
|
-
import { ToolState } from '../../tool/tool.state';
|
|
14
|
-
import { WorkspaceButtonComponent } from '../../workspace/workspace-button/workspace-button.component';
|
|
15
|
-
import { LayerListToolState } from '../layer-list-tool.state';
|
|
16
|
-
import { MapState } from '../map.state';
|
|
17
|
-
import * as i0 from "@angular/core";
|
|
18
|
-
import * as i1 from "../layer-list-tool.state";
|
|
19
|
-
import * as i2 from "../../tool/tool.state";
|
|
20
|
-
import * as i3 from "../map.state";
|
|
21
|
-
import * as i4 from "@igo2/geo";
|
|
22
|
-
import * as i5 from "../../import-export/import-export.state";
|
|
23
|
-
import * as i6 from "@angular/material/tabs";
|
|
24
|
-
import * as i7 from "@angular/material/list";
|
|
25
|
-
import * as i8 from "@angular/material/icon";
|
|
26
|
-
import * as i9 from "@ngx-translate/core";
|
|
27
|
-
/**
|
|
28
|
-
* Tool to browse a map's layers or to choose a different map
|
|
29
|
-
*/
|
|
30
|
-
let MapToolsComponent = class MapToolsComponent {
|
|
31
|
-
layerListToolState;
|
|
32
|
-
toolState;
|
|
33
|
-
mapState;
|
|
34
|
-
searchSourceService;
|
|
35
|
-
importExportState;
|
|
36
|
-
layers$ = new BehaviorSubject([]);
|
|
37
|
-
showAllLegendsValue$ = new BehaviorSubject(false);
|
|
38
|
-
resolution$$;
|
|
39
|
-
visibleOrInRangeLayers$$;
|
|
40
|
-
delayedShowEmptyMapContent = false;
|
|
41
|
-
allowShowAllLegends = false;
|
|
42
|
-
showAllLegendsValue = false;
|
|
43
|
-
toggleLegendOnVisibilityChange = false;
|
|
44
|
-
expandLegendOfVisibleLayers = false;
|
|
45
|
-
updateLegendOnResolutionChange = false;
|
|
46
|
-
selectedTabAtOpening;
|
|
47
|
-
ogcButton = true;
|
|
48
|
-
timeButton = true;
|
|
49
|
-
layerAdditionAllowed = true;
|
|
50
|
-
get layerListControls() {
|
|
51
|
-
return this._layerListControls;
|
|
52
|
-
}
|
|
53
|
-
set layerListControls(value) {
|
|
54
|
-
const stateOptions = this.layerListToolState.getLayerListControls();
|
|
55
|
-
const stateKeyword = stateOptions.keyword;
|
|
56
|
-
const stateOnlyVisible = stateOptions.onlyVisible;
|
|
57
|
-
const stateSortAlpha = stateOptions.sortAlpha;
|
|
58
|
-
value.keyword = stateKeyword !== '' ? stateKeyword : value.keyword;
|
|
59
|
-
value.onlyVisible =
|
|
60
|
-
stateOnlyVisible !== undefined ? stateOnlyVisible : value.onlyVisible;
|
|
61
|
-
value.sortAlpha =
|
|
62
|
-
stateSortAlpha !== undefined ? stateSortAlpha : value.sortAlpha;
|
|
63
|
-
value.onlyVisible =
|
|
64
|
-
value.onlyVisible === undefined ? false : value.onlyVisible;
|
|
65
|
-
value.sortAlpha = value.sortAlpha === undefined ? false : value.sortAlpha;
|
|
66
|
-
this._layerListControls = value;
|
|
67
|
-
}
|
|
68
|
-
_layerListControls = {};
|
|
69
|
-
get map() {
|
|
70
|
-
return this.mapState.map;
|
|
71
|
-
}
|
|
72
|
-
queryBadge = false;
|
|
73
|
-
get visibleOrInRangeLayers$() {
|
|
74
|
-
return this.layers$.pipe(map((layers) => layers.filter((layer) => layer.visible$.value && layer.isInResolutionsRange$.value)));
|
|
75
|
-
}
|
|
76
|
-
get visibleLayers$() {
|
|
77
|
-
return this.layers$.pipe(map((layers) => layers.filter((layer) => layer.visible$.value)));
|
|
78
|
-
}
|
|
79
|
-
get excludeBaseLayers() {
|
|
80
|
-
return this.layerListControls.excludeBaseLayers || false;
|
|
81
|
-
}
|
|
82
|
-
get layerFilterAndSortOptions() {
|
|
83
|
-
const filterSortOptions = Object.assign({
|
|
84
|
-
showToolbar: LayerListControlsEnum.default
|
|
85
|
-
}, this.layerListControls);
|
|
86
|
-
switch (this.layerListControls.showToolbar) {
|
|
87
|
-
case LayerListControlsEnum.always:
|
|
88
|
-
filterSortOptions.showToolbar = LayerListControlsEnum.always;
|
|
89
|
-
break;
|
|
90
|
-
case LayerListControlsEnum.never:
|
|
91
|
-
filterSortOptions.showToolbar = LayerListControlsEnum.never;
|
|
92
|
-
break;
|
|
93
|
-
default:
|
|
94
|
-
break;
|
|
95
|
-
}
|
|
96
|
-
return filterSortOptions;
|
|
97
|
-
}
|
|
98
|
-
tabGroup;
|
|
99
|
-
get searchToolInToolbar() {
|
|
100
|
-
return (this.toolState.toolbox.getToolbar().indexOf('searchResults') !== -1 &&
|
|
101
|
-
this.searchSourceService
|
|
102
|
-
.getSources()
|
|
103
|
-
.filter(sourceCanSearch)
|
|
104
|
-
.filter((s) => s.available && s.getType() === 'Layer').length > 0);
|
|
105
|
-
}
|
|
106
|
-
get catalogToolInToolbar() {
|
|
107
|
-
return this.toolState.toolbox.getToolbar().indexOf('catalog') !== -1;
|
|
108
|
-
}
|
|
109
|
-
get contextToolInToolbar() {
|
|
110
|
-
return this.toolState.toolbox.getToolbar().indexOf('contextManager') !== -1;
|
|
111
|
-
}
|
|
112
|
-
constructor(layerListToolState, toolState, mapState, searchSourceService, importExportState) {
|
|
113
|
-
this.layerListToolState = layerListToolState;
|
|
114
|
-
this.toolState = toolState;
|
|
115
|
-
this.mapState = mapState;
|
|
116
|
-
this.searchSourceService = searchSourceService;
|
|
117
|
-
this.importExportState = importExportState;
|
|
118
|
-
}
|
|
119
|
-
ngOnInit() {
|
|
120
|
-
this.selectedTab();
|
|
121
|
-
this.resolution$$ = combineLatest([
|
|
122
|
-
this.map.layers$,
|
|
123
|
-
this.map.viewController.resolution$
|
|
124
|
-
])
|
|
125
|
-
.pipe(debounceTime(10))
|
|
126
|
-
.subscribe((bunch) => {
|
|
127
|
-
this.layers$.next(bunch[0].filter((layer) => layer.showInLayerList !== false &&
|
|
128
|
-
(!this.excludeBaseLayers || !layer.baseLayer)));
|
|
129
|
-
});
|
|
130
|
-
if (this.allowShowAllLegends) {
|
|
131
|
-
this.mapState.showAllLegendsValue =
|
|
132
|
-
this.mapState.showAllLegendsValue !== undefined
|
|
133
|
-
? this.mapState.showAllLegendsValue
|
|
134
|
-
: this.showAllLegendsValue || false;
|
|
135
|
-
this.showAllLegendsValue$.next(this.mapState.showAllLegendsValue);
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
this.showAllLegendsValue$.next(false);
|
|
139
|
-
}
|
|
140
|
-
// prevent message to be shown too quickly. Waiting for layers
|
|
141
|
-
setTimeout(() => (this.delayedShowEmptyMapContent = true), 250);
|
|
142
|
-
}
|
|
143
|
-
ngOnDestroy() {
|
|
144
|
-
this.resolution$$.unsubscribe();
|
|
145
|
-
if (this.visibleOrInRangeLayers$$) {
|
|
146
|
-
this.visibleOrInRangeLayers$$.unsubscribe();
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
onShowAllLegends(event) {
|
|
150
|
-
this.mapState.showAllLegendsValue = event;
|
|
151
|
-
this.showAllLegendsValue$.next(event);
|
|
152
|
-
}
|
|
153
|
-
selectedTab() {
|
|
154
|
-
const userSelectedTab = this.layerListToolState.selectedTab$.value;
|
|
155
|
-
if (userSelectedTab !== undefined) {
|
|
156
|
-
this.layerListToolState.setSelectedTab(userSelectedTab);
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
if (this.selectedTabAtOpening === 'legend') {
|
|
160
|
-
this.layerListToolState.setSelectedTab(1);
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
this.layerListToolState.setSelectedTab(0);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
tabChanged(tab) {
|
|
168
|
-
this.layerListToolState.setSelectedTab(tab.index);
|
|
169
|
-
this.layers$.next(this.map.layers.filter((layer) => layer.showInLayerList !== false &&
|
|
170
|
-
(!this.excludeBaseLayers || !layer.baseLayer)));
|
|
171
|
-
}
|
|
172
|
-
onLayerListChange(appliedFilters) {
|
|
173
|
-
this.layerListToolState.setKeyword(appliedFilters.keyword);
|
|
174
|
-
this.layerListToolState.setSortAlpha(appliedFilters.sortAlpha);
|
|
175
|
-
this.layerListToolState.setOnlyVisible(appliedFilters.onlyVisible);
|
|
176
|
-
}
|
|
177
|
-
showAllLegend() {
|
|
178
|
-
if (this.layers$.getValue().length === 0) {
|
|
179
|
-
return false;
|
|
180
|
-
}
|
|
181
|
-
else if (this.layers$.getValue().length !== 0 &&
|
|
182
|
-
this.allowShowAllLegends === false) {
|
|
183
|
-
let visibleOrInRangeLayers;
|
|
184
|
-
this.visibleOrInRangeLayers$$ = this.visibleOrInRangeLayers$.subscribe((value) => {
|
|
185
|
-
visibleOrInRangeLayers = value.length === 0 ? false : true;
|
|
186
|
-
});
|
|
187
|
-
if (visibleOrInRangeLayers === false) {
|
|
188
|
-
return false;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
return true;
|
|
192
|
-
}
|
|
193
|
-
activateExport(layer) {
|
|
194
|
-
let id = layer.id;
|
|
195
|
-
if (layer.options.workspace?.workspaceId) {
|
|
196
|
-
id =
|
|
197
|
-
layer.options.workspace.workspaceId !== layer.id
|
|
198
|
-
? layer.options.workspace.workspaceId
|
|
199
|
-
: layer.id;
|
|
200
|
-
}
|
|
201
|
-
this.importExportState.setsExportOptions({ layers: [id] });
|
|
202
|
-
this.importExportState.setMode(ImportExportMode.export);
|
|
203
|
-
this.toolState.toolbox.activateTool('importExport');
|
|
204
|
-
}
|
|
205
|
-
activateTimeFilter() {
|
|
206
|
-
this.toolState.toolbox.activateTool('activeTimeFilter');
|
|
207
|
-
}
|
|
208
|
-
activateOgcFilter() {
|
|
209
|
-
this.toolState.toolbox.activateTool('activeOgcFilter');
|
|
210
|
-
}
|
|
211
|
-
searchEmit() {
|
|
212
|
-
this.toolState.toolbox.activateTool('searchResults');
|
|
213
|
-
}
|
|
214
|
-
catalogEmit() {
|
|
215
|
-
this.toolState.toolbox.activateTool('catalog');
|
|
216
|
-
}
|
|
217
|
-
contextEmit() {
|
|
218
|
-
this.toolState.toolbox.activateTool('contextManager');
|
|
219
|
-
}
|
|
220
|
-
isTimeFilterButton(layer) {
|
|
221
|
-
const options = layer.dataSource.options;
|
|
222
|
-
return this.timeButton && options.timeFilterable && options.timeFilter;
|
|
223
|
-
}
|
|
224
|
-
isOGCFilterButton(layer) {
|
|
225
|
-
const options = layer.dataSource.options;
|
|
226
|
-
return (this.ogcButton &&
|
|
227
|
-
options.ogcFilters &&
|
|
228
|
-
options.ogcFilters.enabled &&
|
|
229
|
-
(options.ogcFilters.pushButtons ||
|
|
230
|
-
options.ogcFilters.checkboxes ||
|
|
231
|
-
options.ogcFilters.radioButtons ||
|
|
232
|
-
options.ogcFilters.select ||
|
|
233
|
-
options.ogcFilters.autocomplete ||
|
|
234
|
-
options.ogcFilters.editable));
|
|
235
|
-
}
|
|
236
|
-
isExportButton(layer) {
|
|
237
|
-
if ((layer instanceof VectorLayer && layer.exportable === true) ||
|
|
238
|
-
(layer.dataSource.options.download &&
|
|
239
|
-
layer.dataSource.options.download.url) ||
|
|
240
|
-
(layer.options.workspace?.enabled &&
|
|
241
|
-
layer.options.workspace?.workspaceId !== layer.id)) {
|
|
242
|
-
return true;
|
|
243
|
-
}
|
|
244
|
-
return false;
|
|
245
|
-
}
|
|
246
|
-
isStyleEditButton(layer) {
|
|
247
|
-
if (layer instanceof VectorLayer) {
|
|
248
|
-
if (layer.options?.igoStyle?.editable) {
|
|
249
|
-
return true;
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
return false;
|
|
253
|
-
}
|
|
254
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapToolsComponent, deps: [{ token: i1.LayerListToolState }, { token: i2.ToolState }, { token: i3.MapState }, { token: i4.SearchSourceService }, { token: i5.ImportExportState }], target: i0.ɵɵFactoryTarget.Component });
|
|
255
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapToolsComponent, isStandalone: true, selector: "igo-map-tools", inputs: { allowShowAllLegends: "allowShowAllLegends", showAllLegendsValue: "showAllLegendsValue", toggleLegendOnVisibilityChange: "toggleLegendOnVisibilityChange", expandLegendOfVisibleLayers: "expandLegendOfVisibleLayers", updateLegendOnResolutionChange: "updateLegendOnResolutionChange", selectedTabAtOpening: "selectedTabAtOpening", ogcButton: "ogcButton", timeButton: "timeButton", layerAdditionAllowed: "layerAdditionAllowed", layerListControls: "layerListControls", queryBadge: "queryBadge" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabGroup"], descendants: true, static: true }], ngImport: i0, template: "<mat-tab-group\n #tabGroup\n [selectedIndex]=\"layerListToolState.selectedTab$ | async\"\n (selectedTabChange)=\"tabChanged($event)\"\n>\n <mat-tab [label]=\"'igo.integration.tools.layers' | translate\">\n <igo-layer-list\n *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 [queryBadge]=\"queryBadge\"\n [map]=\"map\"\n (appliedFilterAndSort)=\"onLayerListChange($event)\"\n >\n <ng-template #igoLayerItemToolbar let-layer=\"layer\">\n <igo-style-modal-layer-button\n *ngIf=\"isStyleEditButton(layer)\"\n [layer]=\"layer\"\n ></igo-style-modal-layer-button>\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\n <igo-track-feature-button\n [trackFeature]=\"true\"\n [layer]=\"layer\"\n ></igo-track-feature-button>\n <igo-time-filter-button\n *ngIf=\"isTimeFilterButton(layer)\"\n [header]=\"timeButton\"\n [layer]=\"layer\"\n (click)=\"activateTimeFilter()\"\n ></igo-time-filter-button>\n <igo-ogc-filter-button\n *ngIf=\"isOGCFilterButton(layer)\"\n [header]=\"ogcButton\"\n [layer]=\"layer\"\n (click)=\"activateOgcFilter()\"\n ></igo-ogc-filter-button>\n <igo-export-button\n *ngIf=\"isExportButton(layer)\"\n [layer]=\"layer\"\n (click)=\"activateExport(layer)\"\n ></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' | translate\">\n <igo-layer-legend-list\n *ngIf=\"showAllLegend()\"\n igoLayerLegendListBinding\n [allowShowAllLegends]=\"allowShowAllLegends\"\n [showAllLegendsValue]=\"showAllLegendsValue$ | async\"\n (allLegendsShown)=\"onShowAllLegends($event)\"\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n >\n </igo-layer-legend-list>\n <ng-template\n *ngIf=\"(layers$ | async).length !== 0; else emptyLayers\"\n ></ng-template>\n\n <p\n class=\"map-empty mat-typography\"\n *ngIf=\"\n !allowShowAllLegends &&\n (layers$ | async).length !== 0 &&\n (visibleOrInRangeLayers$ | async).length === 0\n \"\n >\n {{\n (visibleLayers$ | async).length\n ? ('igo.integration.mapTool.noLayersInRange' | translate)\n : ('igo.integration.mapTool.noLayersVisible' | translate)\n }}\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 }}\n </p>\n <p\n *ngIf=\"\n layerAdditionAllowed &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n \"\n class=\"map-empty mat-typography\"\n >\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n\n <mat-list-item *ngIf=\"layerAdditionAllowed && searchToolInToolbar\">\n <mat-icon matListItemIcon>search</mat-icon>\n <span\n matListItemTitle\n class=\"search-tool mat-typography\"\n (click)=\"searchEmit()\"\n >\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && catalogToolInToolbar\">\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span\n matListItemTitle\n class=\"catalog-tool mat-typography\"\n (click)=\"catalogEmit()\"\n >\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && contextToolInToolbar\">\n <mat-icon matListItemIcon>star</mat-icon>\n <span\n matListItemTitle\n class=\"context-tool mat-typography\"\n (click)=\"contextEmit()\"\n >\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n </mat-list>\n </ng-template>\n</mat-tab-group>\n", styles: [":host mat-tab-group{height:100%}:host ::ng-deep .mat-mdc-tab-body-wrapper{flex:1}:host ::ng-deep .mat-tab-body{margin-top:8px}:host ::ng-deep .mat-mdc-tab-body-content{overflow:hidden}:host .map-empty,:host .search-tool,:host .catalog-tool,:host .context-tool{margin:10px}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host mat-list.mat-mdc-list-base mat-list-item.mat-mdc-list-item ::ng-deep div.mdc-list-item__content div.mdc-list-item__primary-text{padding-left:5px}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i6.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i6.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LayerListComponent, selector: "igo-layer-list", inputs: ["layersAreAllVisible", "ogcButton", "timeButton", "map", "layers", "floatLabel", "layerFilterAndSortOptions", "excludeBaseLayers", "toggleLegendOnVisibilityChange", "expandLegendOfVisibleLayers", "updateLegendOnResolutionChange", "queryBadge"], outputs: ["appliedFilterAndSort"] }, { kind: "directive", type: LayerListBindingDirective, selector: "[igoLayerListBinding]" }, { kind: "component", type: StyleModalLayerButtonComponent, selector: "igo-style-modal-layer-button", inputs: ["layer"] }, { kind: "component", type: MetadataButtonComponent, selector: "igo-metadata-button", inputs: ["layer", "color"] }, { kind: "component", type: TrackFeatureButtonComponent, selector: "igo-track-feature-button", inputs: ["layer", "trackFeature"] }, { kind: "component", type: TimeFilterButtonComponent, selector: "igo-time-filter-button", inputs: ["layer", "map", "color", "header"] }, { kind: "component", type: OgcFilterButtonComponent, selector: "igo-ogc-filter-button", inputs: ["layer", "map", "color", "header"] }, { kind: "component", type: ExportButtonComponent, selector: "igo-export-button", inputs: ["layer", "color"] }, { kind: "component", type: WorkspaceButtonComponent, selector: "igo-workspace-button", inputs: ["layer", "color"] }, { kind: "component", type: LayerLegendListComponent, selector: "igo-layer-legend-list", inputs: ["layers", "excludeBaseLayers", "updateLegendOnResolutionChange", "allowShowAllLegends", "showAllLegendsValue"], outputs: ["allLegendsShown"] }, { kind: "directive", type: LayerLegendListBindingDirective, selector: "[igoLayerLegendListBinding]" }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i7.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i7.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i7.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i7.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
256
|
-
};
|
|
257
|
-
MapToolsComponent = __decorate([
|
|
258
|
-
ToolComponent({
|
|
259
|
-
name: 'mapTools',
|
|
260
|
-
title: 'igo.integration.tools.map',
|
|
261
|
-
icon: 'map'
|
|
262
|
-
}),
|
|
263
|
-
__metadata("design:paramtypes", [LayerListToolState,
|
|
264
|
-
ToolState,
|
|
265
|
-
MapState,
|
|
266
|
-
SearchSourceService,
|
|
267
|
-
ImportExportState])
|
|
268
|
-
], MapToolsComponent);
|
|
269
|
-
export { MapToolsComponent };
|
|
270
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapToolsComponent, decorators: [{
|
|
271
|
-
type: Component,
|
|
272
|
-
args: [{ selector: 'igo-map-tools', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
273
|
-
MatTabsModule,
|
|
274
|
-
NgIf,
|
|
275
|
-
LayerListComponent,
|
|
276
|
-
LayerListBindingDirective,
|
|
277
|
-
StyleModalLayerButtonComponent,
|
|
278
|
-
MetadataButtonComponent,
|
|
279
|
-
TrackFeatureButtonComponent,
|
|
280
|
-
TimeFilterButtonComponent,
|
|
281
|
-
OgcFilterButtonComponent,
|
|
282
|
-
ExportButtonComponent,
|
|
283
|
-
WorkspaceButtonComponent,
|
|
284
|
-
LayerLegendListComponent,
|
|
285
|
-
LayerLegendListBindingDirective,
|
|
286
|
-
MatListModule,
|
|
287
|
-
MatIconModule,
|
|
288
|
-
AsyncPipe,
|
|
289
|
-
IgoLanguageModule
|
|
290
|
-
], template: "<mat-tab-group\n #tabGroup\n [selectedIndex]=\"layerListToolState.selectedTab$ | async\"\n (selectedTabChange)=\"tabChanged($event)\"\n>\n <mat-tab [label]=\"'igo.integration.tools.layers' | translate\">\n <igo-layer-list\n *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 [queryBadge]=\"queryBadge\"\n [map]=\"map\"\n (appliedFilterAndSort)=\"onLayerListChange($event)\"\n >\n <ng-template #igoLayerItemToolbar let-layer=\"layer\">\n <igo-style-modal-layer-button\n *ngIf=\"isStyleEditButton(layer)\"\n [layer]=\"layer\"\n ></igo-style-modal-layer-button>\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\n <igo-track-feature-button\n [trackFeature]=\"true\"\n [layer]=\"layer\"\n ></igo-track-feature-button>\n <igo-time-filter-button\n *ngIf=\"isTimeFilterButton(layer)\"\n [header]=\"timeButton\"\n [layer]=\"layer\"\n (click)=\"activateTimeFilter()\"\n ></igo-time-filter-button>\n <igo-ogc-filter-button\n *ngIf=\"isOGCFilterButton(layer)\"\n [header]=\"ogcButton\"\n [layer]=\"layer\"\n (click)=\"activateOgcFilter()\"\n ></igo-ogc-filter-button>\n <igo-export-button\n *ngIf=\"isExportButton(layer)\"\n [layer]=\"layer\"\n (click)=\"activateExport(layer)\"\n ></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' | translate\">\n <igo-layer-legend-list\n *ngIf=\"showAllLegend()\"\n igoLayerLegendListBinding\n [allowShowAllLegends]=\"allowShowAllLegends\"\n [showAllLegendsValue]=\"showAllLegendsValue$ | async\"\n (allLegendsShown)=\"onShowAllLegends($event)\"\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n >\n </igo-layer-legend-list>\n <ng-template\n *ngIf=\"(layers$ | async).length !== 0; else emptyLayers\"\n ></ng-template>\n\n <p\n class=\"map-empty mat-typography\"\n *ngIf=\"\n !allowShowAllLegends &&\n (layers$ | async).length !== 0 &&\n (visibleOrInRangeLayers$ | async).length === 0\n \"\n >\n {{\n (visibleLayers$ | async).length\n ? ('igo.integration.mapTool.noLayersInRange' | translate)\n : ('igo.integration.mapTool.noLayersVisible' | translate)\n }}\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 }}\n </p>\n <p\n *ngIf=\"\n layerAdditionAllowed &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n \"\n class=\"map-empty mat-typography\"\n >\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n\n <mat-list-item *ngIf=\"layerAdditionAllowed && searchToolInToolbar\">\n <mat-icon matListItemIcon>search</mat-icon>\n <span\n matListItemTitle\n class=\"search-tool mat-typography\"\n (click)=\"searchEmit()\"\n >\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && catalogToolInToolbar\">\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span\n matListItemTitle\n class=\"catalog-tool mat-typography\"\n (click)=\"catalogEmit()\"\n >\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && contextToolInToolbar\">\n <mat-icon matListItemIcon>star</mat-icon>\n <span\n matListItemTitle\n class=\"context-tool mat-typography\"\n (click)=\"contextEmit()\"\n >\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n </mat-list>\n </ng-template>\n</mat-tab-group>\n", styles: [":host mat-tab-group{height:100%}:host ::ng-deep .mat-mdc-tab-body-wrapper{flex:1}:host ::ng-deep .mat-tab-body{margin-top:8px}:host ::ng-deep .mat-mdc-tab-body-content{overflow:hidden}:host .map-empty,:host .search-tool,:host .catalog-tool,:host .context-tool{margin:10px}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host mat-list.mat-mdc-list-base mat-list-item.mat-mdc-list-item ::ng-deep div.mdc-list-item__content div.mdc-list-item__primary-text{padding-left:5px}\n"] }]
|
|
291
|
-
}], ctorParameters: () => [{ type: i1.LayerListToolState }, { type: i2.ToolState }, { type: i3.MapState }, { type: i4.SearchSourceService }, { type: i5.ImportExportState }], propDecorators: { allowShowAllLegends: [{
|
|
292
|
-
type: Input
|
|
293
|
-
}], showAllLegendsValue: [{
|
|
294
|
-
type: Input
|
|
295
|
-
}], toggleLegendOnVisibilityChange: [{
|
|
296
|
-
type: Input
|
|
297
|
-
}], expandLegendOfVisibleLayers: [{
|
|
298
|
-
type: Input
|
|
299
|
-
}], updateLegendOnResolutionChange: [{
|
|
300
|
-
type: Input
|
|
301
|
-
}], selectedTabAtOpening: [{
|
|
302
|
-
type: Input
|
|
303
|
-
}], ogcButton: [{
|
|
304
|
-
type: Input
|
|
305
|
-
}], timeButton: [{
|
|
306
|
-
type: Input
|
|
307
|
-
}], layerAdditionAllowed: [{
|
|
308
|
-
type: Input
|
|
309
|
-
}], layerListControls: [{
|
|
310
|
-
type: Input
|
|
311
|
-
}], queryBadge: [{
|
|
312
|
-
type: Input
|
|
313
|
-
}], tabGroup: [{
|
|
314
|
-
type: ViewChild,
|
|
315
|
-
args: ['tabGroup', { static: true }]
|
|
316
|
-
}] } });
|
|
317
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXRvb2xzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC10b29scy9tYXAtdG9vbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXRvb2xzL21hcC10b29scy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBR0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFxQixhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUNMLHFCQUFxQixFQUlyQiwrQkFBK0IsRUFDL0Isd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QixrQkFBa0IsRUFDbEIscUJBQXFCLEVBRXJCLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ25CLDhCQUE4QixFQUM5Qix5QkFBeUIsRUFDekIsMkJBQTJCLEVBQzNCLFdBQVcsRUFDWCxlQUFlLEVBQ2hCLE1BQU0sV0FBVyxDQUFDO0FBRW5CLE9BQU8sRUFBRSxlQUFlLEVBQTRCLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFF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RyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFHRixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBNEJHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBMkNtQyxRQUFRO3NCQUFoRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBNYXRUYWJDaGFuZ2VFdmVudCwgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuXG5pbXBvcnQgeyBUb29sQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uL3Rvb2wnO1xuaW1wb3J0IHsgSWdvTGFuZ3VhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7XG4gIEV4cG9ydEJ1dHRvbkNvbXBvbmVudCxcbiAgRXhwb3J0T3B0aW9ucyxcbiAgSWdvTWFwLFxuICBMYXllcixcbiAgTGF5ZXJMZWdlbmRMaXN0QmluZGluZ0RpcmVjdGl2ZSxcbiAgTGF5ZXJMZWdlbmRMaXN0Q29tcG9uZW50LFxuICBMYXllckxpc3RCaW5kaW5nRGlyZWN0aXZlLFxuICBMYXllckxpc3RDb21wb25lbnQsXG4gIExheWVyTGlzdENvbnRyb2xzRW51bSxcbiAgTGF5ZXJMaXN0Q29udHJvbHNPcHRpb25zLFxuICBNZXRhZGF0YUJ1dHRvbkNvbXBvbmVudCxcbiAgT2djRmlsdGVyQnV0dG9uQ29tcG9uZW50LFxuICBTZWFyY2hTb3VyY2VTZXJ2aWNlLFxuICBTdHlsZU1vZGFsTGF5ZXJCdXR0b25Db21wb25lbnQsXG4gIFRpbWVGaWx0ZXJCdXR0b25Db21wb25lbnQsXG4gIFRyYWNrRmVhdHVyZUJ1dHRvbkNvbXBvbmVudCxcbiAgVmVjdG9yTGF5ZXIsXG4gIHNvdXJjZUNhblNlYXJjaFxufSBmcm9tICdAaWdvMi9nZW8nO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIEltcG9ydEV4cG9ydE1vZGUsXG4gIEltcG9ydEV4cG9ydFN0YXRlXG59IGZyb20gJy4uLy4uL2ltcG9ydC1leHBvcnQvaW1wb3J0LWV4cG9ydC5zdGF0ZSc7XG5pbXBvcnQgeyBUb29sU3RhdGUgfSBmcm9tICcuLi8uLi90b29sL3Rvb2wuc3RhdGUnO1xuaW1wb3J0IHsgV29ya3NwYWNlQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vd29ya3NwYWNlL3dvcmtzcGFjZS1idXR0b24vd29ya3NwYWNlLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGF5ZXJMaXN0VG9vbFN0YXRlIH0gZnJvbSAnLi4vbGF5ZXItbGlzdC10b29sLnN0YXRlJztcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi4vbWFwLnN0YXRlJztcblxuLyoqXG4gKiBUb29sIHRvIGJyb3dzZSBhIG1hcCdzIGxheWVycyBvciB0byBjaG9vc2UgYSBkaWZmZXJlbnQgbWFwXG4gKi9cbkBUb29sQ29tcG9uZW50KHtcbiAgbmFtZTogJ21hcFRvb2xzJyxcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMubWFwJyxcbiAgaWNvbjogJ21hcCdcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tbWFwLXRvb2xzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC10b29scy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hcC10b29scy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdFRhYnNNb2R1bGUsXG4gICAgTmdJZixcbiAgICBMYXllckxpc3RDb21wb25lbnQsXG4gICAgTGF5ZXJMaXN0QmluZGluZ0RpcmVjdGl2ZSxcbiAgICBTdHlsZU1vZGFsTGF5ZXJCdXR0b25Db21wb25lbnQsXG4gICAgTWV0YWRhdGFCdXR0b25Db21wb25lbnQsXG4gICAgVHJhY2tGZWF0dXJlQnV0dG9uQ29tcG9uZW50LFxuICAgIFRpbWVGaWx0ZXJCdXR0b25Db21wb25lbnQsXG4gICAgT2djRmlsdGVyQnV0dG9uQ29tcG9uZW50LFxuICAgIEV4cG9ydEJ1dHRvbkNvbXBvbmVudCxcbiAgICBXb3Jrc3BhY2VCdXR0b25Db21wb25lbnQsXG4gICAgTGF5ZXJMZWdlbmRMaXN0Q29tcG9uZW50LFxuICAgIExheWVyTGVnZW5kTGlzdEJpbmRpbmdEaXJlY3RpdmUsXG4gICAgTWF0TGlzdE1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBJZ29MYW5ndWFnZU1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE1hcFRvb2xzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBsYXllcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMYXllcltdPihbXSk7XG4gIHNob3dBbGxMZWdlbmRzVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSByZXNvbHV0aW9uJCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSB2aXNpYmxlT3JJblJhbmdlTGF5ZXJzJCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGRlbGF5ZWRTaG93RW1wdHlNYXBDb250ZW50ID0gZmFsc2U7XG5cbiAgQElucHV0KCkgYWxsb3dTaG93QWxsTGVnZW5kcyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNob3dBbGxMZWdlbmRzVmFsdWUgPSBmYWxzZTtcblxuICBASW5wdXQoKSB0b2dnbGVMZWdlbmRPblZpc2liaWxpdHlDaGFuZ2UgPSBmYWxzZTtcblxuICBASW5wdXQoKSBleHBhbmRMZWdlbmRPZlZpc2libGVMYXllcnMgPSBmYWxzZTtcblxuICBASW5wdXQoKSB1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2UgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZWxlY3RlZFRhYkF0T3BlbmluZzogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIG9nY0J1dHRvbiA9IHRydWU7XG5cbiAgQElucHV0KCkgdGltZUJ1dHRvbiA9IHRydWU7XG5cbiAgQElucHV0KCkgbGF5ZXJBZGRpdGlvbkFsbG93ZWQgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBsYXllckxpc3RDb250cm9scygpOiBMYXllckxpc3RDb250cm9sc09wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLl9sYXllckxpc3RDb250cm9scztcbiAgfVxuICBzZXQgbGF5ZXJMaXN0Q29udHJvbHModmFsdWU6IExheWVyTGlzdENvbnRyb2xzT3B0aW9ucykge1xuICAgIGNvbnN0IHN0YXRlT3B0aW9ucyA9IHRoaXMubGF5ZXJMaXN0VG9vbFN0YXRlLmdldExheWVyTGlzdENvbnRyb2xzKCk7XG4gICAgY29uc3Qgc3RhdGVLZXl3b3JkID0gc3RhdGVPcHRpb25zLmtleXdvcmQ7XG4gICAgY29uc3Qgc3RhdGVPbmx5VmlzaWJsZSA9IHN0YXRlT3B0aW9ucy5vbmx5VmlzaWJsZTtcbiAgICBjb25zdCBzdGF0ZVNvcnRBbHBoYSA9IHN0YXRlT3B0aW9ucy5zb3J0QWxwaGE7XG5cbiAgICB2YWx1ZS5rZXl3b3JkID0gc3RhdGVLZXl3b3JkICE9PSAnJyA/IHN0YXRlS2V5d29yZCA6IHZhbHVlLmtleXdvcmQ7XG4gICAgdmFsdWUub25seVZpc2libGUgPVxuICAgICAgc3RhdGVPbmx5VmlzaWJsZSAhPT0gdW5kZWZpbmVkID8gc3RhdGVPbmx5VmlzaWJsZSA6IHZhbHVlLm9ubHlWaXNpYmxlO1xuICAgIHZhbHVlLnNvcnRBbHBoYSA9XG4gICAgICBzdGF0ZVNvcnRBbHBoYSAhPT0gdW5kZWZpbmVkID8gc3RhdGVTb3J0QWxwaGEgOiB2YWx1ZS5zb3J0QWxwaGE7XG5cbiAgICB2YWx1ZS5vbmx5VmlzaWJsZSA9XG4gICAgICB2YWx1ZS5vbmx5VmlzaWJsZSA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiB2YWx1ZS5vbmx5VmlzaWJsZTtcbiAgICB2YWx1ZS5zb3J0QWxwaGEgPSB2YWx1ZS5zb3J0QWxwaGEgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogdmFsdWUuc29ydEFscGhhO1xuXG4gICAgdGhpcy5fbGF5ZXJMaXN0Q29udHJvbHMgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF9sYXllckxpc3RDb250cm9scyA9IHt9O1xuXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcbiAgICByZXR1cm4gdGhpcy5tYXBTdGF0ZS5tYXA7XG4gIH1cblxuICBASW5wdXQoKSBxdWVyeUJhZGdlID0gZmFsc2U7XG5cbiAgZ2V0IHZpc2libGVPckluUmFuZ2VMYXllcnMkKCk6IE9ic2VydmFibGU8TGF5ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLmxheWVycyQucGlwZShcbiAgICAgIG1hcCgobGF5ZXJzKSA9PlxuICAgICAgICBsYXllcnMuZmlsdGVyKFxuICAgICAgICAgIChsYXllcikgPT4gbGF5ZXIudmlzaWJsZSQudmFsdWUgJiYgbGF5ZXIuaXNJblJlc29sdXRpb25zUmFuZ2UkLnZhbHVlXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgZ2V0IHZpc2libGVMYXllcnMkKCk6IE9ic2VydmFibGU8TGF5ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLmxheWVycyQucGlwZShcbiAgICAgIG1hcCgobGF5ZXJzKSA9PiBsYXllcnMuZmlsdGVyKChsYXllcikgPT4gbGF5ZXIudmlzaWJsZSQudmFsdWUpKVxuICAgICk7XG4gIH1cblxuICBnZXQgZXhjbHVkZUJhc2VMYXllcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGF5ZXJMaXN0Q29udHJvbHMuZXhjbHVkZUJhc2VMYXllcnMgfHwgZmFsc2U7XG4gIH1cblxuICBnZXQgbGF5ZXJGaWx0ZXJBbmRTb3J0T3B0aW9ucygpOiBMYXllckxpc3RDb250cm9sc09wdGlvbnMge1xuICAgIGNvbnN0IGZpbHRlclNvcnRPcHRpb25zID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgc2hvd1Rvb2xiYXI6IExheWVyTGlzdENvbnRyb2xzRW51bS5kZWZhdWx0XG4gICAgICB9LFxuICAgICAgdGhpcy5sYXllckxpc3RDb250cm9sc1xuICAgICk7XG5cbiAgICBzd2l0Y2ggKHRoaXMubGF5ZXJMaXN0Q29udHJvbHMuc2hvd1Rvb2xiYXIpIHtcbiAgICAgIGNhc2UgTGF5ZXJMaXN0Q29udHJvbHNFbnVtLmFsd2F5czpcbiAgICAgICAgZmlsdGVyU29ydE9wdGlvbnMuc2hvd1Rvb2xiYXIgPSBMYXllckxpc3RDb250cm9sc0VudW0uYWx3YXlzO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTGF5ZXJMaXN0Q29udHJvbHNFbnVtLm5ldmVyOlxuICAgICAgICBmaWx0ZXJTb3J0T3B0aW9ucy5zaG93VG9vbGJhciA9IExheWVyTGlzdENvbnRyb2xzRW51bS5uZXZlcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlclNvcnRPcHRpb25zO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgndGFiR3JvdXAnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJHcm91cDtcblxuICBnZXQgc2VhcmNoVG9vbEluVG9vbGJhcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5nZXRUb29sYmFyKCkuaW5kZXhPZignc2VhcmNoUmVzdWx0cycpICE9PSAtMSAmJlxuICAgICAgdGhpcy5zZWFyY2hTb3VyY2VTZXJ2aWNlXG4gICAgICAgIC5nZXRTb3VyY2VzKClcbiAgICAgICAgLmZpbHRlcihzb3VyY2VDYW5TZWFyY2gpXG4gICAgICAgIC5maWx0ZXIoKHMpID0+IHMuYXZhaWxhYmxlICYmIHMuZ2V0VHlwZSgpID09PSAnTGF5ZXInKS5sZW5ndGggPiAwXG4gICAgKTtcbiAgfVxuXG4gIGdldCBjYXRhbG9nVG9vbEluVG9vbGJhcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50b29sU3RhdGUudG9vbGJveC5nZXRUb29sYmFyKCkuaW5kZXhPZignY2F0YWxvZycpICE9PSAtMTtcbiAgfVxuXG4gIGdldCBjb250ZXh0VG9vbEluVG9vbGJhcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50b29sU3RhdGUudG9vbGJveC5nZXRUb29sYmFyKCkuaW5kZXhPZignY29udGV4dE1hbmFnZXInKSAhPT0gLTE7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbGF5ZXJMaXN0VG9vbFN0YXRlOiBMYXllckxpc3RUb29sU3RhdGUsXG4gICAgcHJpdmF0ZSB0b29sU3RhdGU6IFRvb2xTdGF0ZSxcbiAgICBwdWJsaWMgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICAgIHByaXZhdGUgc2VhcmNoU291cmNlU2VydmljZTogU2VhcmNoU291cmNlU2VydmljZSxcbiAgICBwcml2YXRlIGltcG9ydEV4cG9ydFN0YXRlOiBJbXBvcnRFeHBvcnRTdGF0ZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFRhYigpO1xuICAgIHRoaXMucmVzb2x1dGlvbiQkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLm1hcC5sYXllcnMkLFxuICAgICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiRcbiAgICBdKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwKSlcbiAgICAgIC5zdWJzY3JpYmUoKGJ1bmNoOiBbTGF5ZXJbXSwgbnVtYmVyXSkgPT4ge1xuICAgICAgICB0aGlzLmxheWVycyQubmV4dChcbiAgICAgICAgICBidW5jaFswXS5maWx0ZXIoXG4gICAgICAgICAgICAobGF5ZXIpID0+XG4gICAgICAgICAgICAgIGxheWVyLnNob3dJbkxheWVyTGlzdCAhPT0gZmFsc2UgJiZcbiAgICAgICAgICAgICAgKCF0aGlzLmV4Y2x1ZGVCYXNlTGF5ZXJzIHx8ICFsYXllci5iYXNlTGF5ZXIpXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5hbGxvd1Nob3dBbGxMZWdlbmRzKSB7XG4gICAgICB0aGlzLm1hcFN0YXRlLnNob3dBbGxMZWdlbmRzVmFsdWUgPVxuICAgICAgICB0aGlzLm1hcFN0YXRlLnNob3dBbGxMZWdlbmRzVmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gdGhpcy5tYXBTdGF0ZS5zaG93QWxsTGVnZW5kc1ZhbHVlXG4gICAgICAgICAgOiB0aGlzLnNob3dBbGxMZWdlbmRzVmFsdWUgfHwgZmFsc2U7XG4gICAgICB0aGlzLnNob3dBbGxMZWdlbmRzVmFsdWUkLm5leHQodGhpcy5tYXBTdGF0ZS5zaG93QWxsTGVnZW5kc1ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93QWxsTGVnZW5kc1ZhbHVlJC5uZXh0KGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyBwcmV2ZW50IG1lc3NhZ2UgdG8gYmUgc2hvd24gdG9vIHF1aWNrbHkuIFdhaXRpbmcgZm9yIGxheWVyc1xuICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMuZGVsYXllZFNob3dFbXB0eU1hcENvbnRlbnQgPSB0cnVlKSwgMjUwKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVzb2x1dGlvbiQkLnVuc3Vic2NyaWJlKCk7XG4gICAgaWYgKHRoaXMudmlzaWJsZU9ySW5SYW5nZUxheWVycyQkKSB7XG4gICAgICB0aGlzLnZpc2libGVPckluUmFuZ2VMYXllcnMkJC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uU2hvd0FsbExlZ2VuZHMoZXZlbnQpIHtcbiAgICB0aGlzLm1hcFN0YXRlLnNob3dBbGxMZWdlbmRzVmFsdWUgPSBldmVudDtcbiAgICB0aGlzLnNob3dBbGxMZWdlbmRzVmFsdWUkLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RlZFRhYigpIHtcbiAgICBjb25zdCB1c2VyU2VsZWN0ZWRUYWIgPSB0aGlzLmxheWVyTGlzdFRvb2xTdGF0ZS5zZWxlY3RlZFRhYiQudmFsdWU7XG4gICAgaWYgKHVzZXJTZWxlY3RlZFRhYiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmxheWVyTGlzdFRvb2xTdGF0ZS5zZXRTZWxlY3RlZFRhYih1c2VyU2VsZWN0ZWRUYWIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFRhYkF0T3BlbmluZyA9PT0gJ2xlZ2VuZCcpIHtcbiAgICAgICAgdGhpcy5sYXllckxpc3RUb29sU3RhdGUuc2V0U2VsZWN0ZWRUYWIoMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxheWVyTGlzdFRvb2xTdGF0ZS5zZXRTZWxlY3RlZFRhYigwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdGFiQ2hhbmdlZCh0YWI6IE1hdFRhYkNoYW5nZUV2ZW50KSB7XG4gICAgdGhpcy5sYXllckxpc3RUb29sU3RhdGUuc2V0U2VsZWN0ZWRUYWIodGFiLmluZGV4KTtcbiAgICB0aGlzLmxheWVycyQubmV4dChcbiAgICAgIHRoaXMubWFwLmxheWVycy5maWx0ZXIoXG4gICAgICAgIChsYXllcikgPT5cbiAgICAgICAgICBsYXllci5zaG93SW5MYXllckxpc3QgIT09IGZhbHNlICYmXG4gICAgICAgICAgKCF0aGlzLmV4Y2x1ZGVCYXNlTGF5ZXJzIHx8ICFsYXllci5iYXNlTGF5ZXIpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIG9uTGF5ZXJMaXN0Q2hhbmdlKGFwcGxpZWRGaWx0ZXJzOiBMYXllckxpc3RDb250cm9sc09wdGlvbnMpIHtcbiAgICB0aGlzLmxheWVyTGlzdFRvb2xTdGF0ZS5zZXRLZXl3b3JkKGFwcGxpZWRGaWx0ZXJzLmtleXdvcmQpO1xuICAgIHRoaXMubGF5ZXJMaXN0VG9vbFN0YXRlLnNldFNvcnRBbHBoYShhcHBsaWVkRmlsdGVycy5zb3J0QWxwaGEpO1xuICAgIHRoaXMubGF5ZXJMaXN0VG9vbFN0YXRlLnNldE9ubHlWaXNpYmxlKGFwcGxpZWRGaWx0ZXJzLm9ubHlWaXNpYmxlKTtcbiAgfVxuXG4gIHNob3dBbGxMZWdlbmQoKSB7XG4gICAgaWYgKHRoaXMubGF5ZXJzJC5nZXRWYWx1ZSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLmxheWVycyQuZ2V0VmFsdWUoKS5sZW5ndGggIT09IDAgJiZcbiAgICAgIHRoaXMuYWxsb3dTaG93QWxsTGVnZW5kcyA9PT0gZmFsc2VcbiAgICApIHtcbiAgICAgIGxldCB2aXNpYmxlT3JJblJhbmdlTGF5ZXJzO1xuICAgICAgdGhpcy52aXNpYmxlT3JJblJhbmdlTGF5ZXJzJCQgPSB0aGlzLnZpc2libGVPckluUmFuZ2VMYXllcnMkLnN1YnNjcmliZShcbiAgICAgICAgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdmlzaWJsZU9ySW5SYW5nZUxheWVycyA9IHZhbHVlLmxlbmd0aCA9PT0gMCA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgaWYgKHZpc2libGVPckluUmFuZ2VMYXllcnMgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhY3RpdmF0ZUV4cG9ydChsYXllcjogTGF5ZXIpIHtcbiAgICBsZXQgaWQgPSBsYXllci5pZDtcbiAgICBpZiAobGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LndvcmtzcGFjZUlkKSB7XG4gICAgICBpZCA9XG4gICAgICAgIGxheWVyLm9wdGlvbnMud29ya3NwYWNlLndvcmtzcGFjZUlkICE9PSBsYXllci5pZFxuICAgICAgICAgID8gbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2Uud29ya3NwYWNlSWRcbiAgICAgICAgICA6IGxheWVyLmlkO1xuICAgIH1cbiAgICB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLnNldHNFeHBvcnRPcHRpb25zKHsgbGF5ZXJzOiBbaWRdIH0gYXMgRXhwb3J0T3B0aW9ucyk7XG4gICAgdGhpcy5pbXBvcnRFeHBvcnRTdGF0ZS5zZXRNb2RlKEltcG9ydEV4cG9ydE1vZGUuZXhwb3J0KTtcbiAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmFjdGl2YXRlVG9vbCgnaW1wb3J0RXhwb3J0Jyk7XG4gIH1cblxuICBhY3RpdmF0ZVRpbWVGaWx0ZXIoKSB7XG4gICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5hY3RpdmF0ZVRvb2woJ2FjdGl2ZVRpbWVGaWx0ZXInKTtcbiAgfVxuXG4gIGFjdGl2YXRlT2djRmlsdGVyKCkge1xuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdhY3RpdmVPZ2NGaWx0ZXInKTtcbiAgfVxuXG4gIHNlYXJjaEVtaXQoKSB7XG4gICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5hY3RpdmF0ZVRvb2woJ3NlYXJjaFJlc3VsdHMnKTtcbiAgfVxuXG4gIGNhdGFsb2dFbWl0KCkge1xuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdjYXRhbG9nJyk7XG4gIH1cblxuICBjb250ZXh0RW1pdCgpIHtcbiAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmFjdGl2YXRlVG9vbCgnY29udGV4dE1hbmFnZXInKTtcbiAgfVxuXG4gIGlzVGltZUZpbHRlckJ1dHRvbihsYXllcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBsYXllci5kYXRhU291cmNlLm9wdGlvbnM7XG4gICAgcmV0dXJuIHRoaXMudGltZUJ1dHRvbiAmJiBvcHRpb25zLnRpbWVGaWx0ZXJhYmxlICYmIG9wdGlvbnMudGltZUZpbHRlcjtcbiAgfVxuXG4gIGlzT0dDRmlsdGVyQnV0dG9uKGxheWVyKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucztcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5vZ2NCdXR0b24gJiZcbiAgICAgIG9wdGlvbnMub2djRmlsdGVycyAmJlxuICAgICAgb3B0aW9ucy5vZ2NGaWx0ZXJzLmVuYWJsZWQgJiZcbiAgICAgIChvcHRpb25zLm9nY0ZpbHRlcnMucHVzaEJ1dHRvbnMgfHxcbiAgICAgICAgb3B0aW9ucy5vZ2NGaWx0ZXJzLmNoZWNrYm94ZXMgfHxcbiAgICAgICAgb3B0aW9ucy5vZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucyB8fFxuICAgICAgICBvcHRpb25zLm9nY0ZpbHRlcnMuc2VsZWN0IHx8XG4gICAgICAgIG9wdGlvbnMub2djRmlsdGVycy5hdXRvY29tcGxldGUgfHxcbiAgICAgICAgb3B0aW9ucy5vZ2NGaWx0ZXJzLmVkaXRhYmxlKVxuICAgICk7XG4gIH1cblxuICBpc0V4cG9ydEJ1dHRvbihsYXllcjogTGF5ZXIpOiBib29sZWFuIHtcbiAgICBpZiAoXG4gICAgICAobGF5ZXIgaW5zdGFuY2VvZiBWZWN0b3JMYXllciAmJiBsYXllci5leHBvcnRhYmxlID09PSB0cnVlKSB8fFxuICAgICAgKGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5kb3dubG9hZCAmJlxuICAgICAgICBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuZG93bmxvYWQudXJsKSB8fFxuICAgICAgKGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5lbmFibGVkICYmXG4gICAgICAgIGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy53b3Jrc3BhY2VJZCAhPT0gbGF5ZXIuaWQpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNTdHlsZUVkaXRCdXR0b24obGF5ZXI6IExheWVyKTogYm9vbGVhbiB7XG4gICAgaWYgKGxheWVyIGluc3RhbmNlb2YgVmVjdG9yTGF5ZXIpIHtcbiAgICAgIGlmICgobGF5ZXIgYXMgVmVjdG9yTGF5ZXIpLm9wdGlvbnM/Lmlnb1N0eWxlPy5lZGl0YWJsZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCI8bWF0LXRhYi1ncm91cFxuICAjdGFiR3JvdXBcbiAgW3NlbGVjdGVkSW5kZXhdPVwibGF5ZXJMaXN0VG9vbFN0YXRlLnNlbGVjdGVkVGFiJCB8IGFzeW5jXCJcbiAgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cInRhYkNoYW5nZWQoJGV2ZW50KVwiXG4+XG4gIDxtYXQtdGFiIFtsYWJlbF09XCInaWdvLmludGVncmF0aW9uLnRvb2xzLmxheWVycycgfCB0cmFuc2xhdGVcIj5cbiAgICA8aWdvLWxheWVyLWxpc3RcbiAgICAgICpuZ0lmPVwiKGxheWVycyQgfCBhc3luYykubGVuZ3RoICE9PSAwOyBlbHNlIGVtcHR5TGF5ZXJzXCJcbiAgICAgIGlnb0xheWVyTGlzdEJpbmRpbmdcbiAgICAgIFtleGNsdWRlQmFzZUxheWVyc109XCJleGNsdWRlQmFzZUxheWVyc1wiXG4gICAgICBbbGF5ZXJGaWx0ZXJBbmRTb3J0T3B0aW9uc109XCJsYXllckZpbHRlckFuZFNvcnRPcHRpb25zXCJcbiAgICAgIFtleHBhbmRMZWdlbmRPZlZpc2libGVMYXllcnNdPVwiZXhwYW5kTGVnZW5kT2ZWaXNpYmxlTGF5ZXJzXCJcbiAgICAgIFt0b2dnbGVMZWdlbmRPblZpc2liaWxpdHlDaGFuZ2VdPVwidG9nZ2xlTGVnZW5kT25WaXNpYmlsaXR5Q2hhbmdlXCJcbiAgICAgIFt1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2VdPVwidXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXCJcbiAgICAgIFtxdWVyeUJhZGdlXT1cInF1ZXJ5QmFkZ2VcIlxuICAgICAgW21hcF09XCJtYXBcIlxuICAgICAgKGFwcGxpZWRGaWx0ZXJBbmRTb3J0KT1cIm9uTGF5ZXJMaXN0Q2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjaWdvTGF5ZXJJdGVtVG9vbGJhciBsZXQtbGF5ZXI9XCJsYXllclwiPlxuICAgICAgICA8aWdvLXN0eWxlLW1vZGFsLWxheWVyLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiaXNTdHlsZUVkaXRCdXR0b24obGF5ZXIpXCJcbiAgICAgICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxuICAgICAgICA+PC9pZ28tc3R5bGUtbW9kYWwtbGF5ZXItYnV0dG9uPlxuICAgICAgICA8aWdvLW1ldGFkYXRhLWJ1dHRvbiBbbGF5ZXJdPVwibGF5ZXJcIj48L2lnby1tZXRhZGF0YS1idXR0b24+XG4gICAgICAgIDxpZ28tdHJhY2stZmVhdHVyZS1idXR0b25cbiAgICAgICAgICBbdHJhY2tGZWF0dXJlXT1cInRydWVcIlxuICAgICAgICAgIFtsYXllcl09XCJsYXllclwiXG4gICAgICAgID48L2lnby10cmFjay1mZWF0dXJlLWJ1dHRvbj5cbiAgICAgICAgPGlnby10aW1lLWZpbHRlci1idXR0b25cbiAgICAgICAgICAqbmdJZj1cImlzVGltZUZpbHRlckJ1dHRvbihsYXllcilcIlxuICAgICAgICAgIFtoZWFkZXJdPVwidGltZUJ1dHRvblwiXG4gICAgICAgICAgW2xheWVyXT1cImxheWVyXCJcbiAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVUaW1lRmlsdGVyKClcIlxuICAgICAgICA+PC9pZ28tdGltZS1maWx0ZXItYnV0dG9uPlxuICAgICAgICA8aWdvLW9nYy1maWx0ZXItYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJpc09HQ0ZpbHRlckJ1dHRvbihsYXllcilcIlxuICAgICAgICAgIFtoZWFkZXJdPVwib2djQnV0dG9uXCJcbiAgICAgICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxuICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZU9nY0ZpbHRlcigpXCJcbiAgICAgICAgPjwvaWdvLW9nYy1maWx0ZXItYnV0dG9uPlxuICAgICAgICA8aWdvLWV4cG9ydC1idXR0b25cbiAgICAgICAgICAqbmdJZj1cImlzRXhwb3J0QnV0dG9uKGxheWVyKVwiXG4gICAgICAgICAgW2xheWVyXT1cImxheWVyXCJcbiAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVFeHBvcnQobGF5ZXIpXCJcbiAgICAgICAgPjwvaWdvLWV4cG9ydC1idXR0b24+XG4gICAgICAgIDxpZ28td29ya3NwYWNlLWJ1dHRvbiBbbGF5ZXJdPVwibGF5ZXJcIj48L2lnby13b3Jrc3BhY2UtYnV0dG9uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lnby1sYXllci1saXN0PlxuICA8L21hdC10YWI+XG5cbiAgPG1hdC10YWIgW2xhYmVsXT1cIidpZ28uaW50ZWdyYXRpb24udG9vbHMubGVnZW5kJyB8IHRyYW5zbGF0ZVwiPlxuICAgIDxpZ28tbGF5ZXItbGVnZW5kLWxpc3RcbiAgICAgICpuZ0lmPVwic2hvd0FsbExlZ2VuZCgpXCJcbiAgICAgIGlnb0xheWVyTGVnZW5kTGlzdEJpbmRpbmdcbiAgICAgIFthbGxvd1Nob3dBbGxMZWdlbmRzXT1cImFsbG93U2hvd0FsbExlZ2VuZHNcIlxuICAgICAgW3Nob3dBbGxMZWdlbmRzVmFsdWVdPVwic2hvd0FsbExlZ2VuZHNWYWx1ZSQgfCBhc3luY1wiXG4gICAgICAoYWxsTGVnZW5kc1Nob3duKT1cIm9uU2hvd0FsbExlZ2VuZHMoJGV2ZW50KVwiXG4gICAgICBbZXhjbHVkZUJhc2VMYXllcnNdPVwiZXhjbHVkZUJhc2VMYXllcnNcIlxuICAgICAgW3VwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZV09XCJ1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2VcIlxuICAgID5cbiAgICA8L2lnby1sYXllci1sZWdlbmQtbGlzdD5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICpuZ0lmPVwiKGxheWVycyQgfCBhc3luYykubGVuZ3RoICE9PSAwOyBlbHNlIGVtcHR5TGF5ZXJzXCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cblxuICAgIDxwXG4gICAgICBjbGFzcz1cIm1hcC1lbXB0eSBtYXQtdHlwb2dyYXBoeVwiXG4gICAgICAqbmdJZj1cIlxuICAgICAgICAhYWxsb3dTaG93QWxsTGVnZW5kcyAmJlxuICAgICAgICAobGF5ZXJzJCB8IGFzeW5jKS5sZW5ndGggIT09IDAgJiZcbiAgICAgICAgKHZpc2libGVPckluUmFuZ2VMYXllcnMkIHwgYXN5bmMpLmxlbmd0aCA9PT0gMFxuICAgICAgXCJcbiAgICA+XG4gICAgICB7e1xuICAgICAgICAodmlzaWJsZUxheWVycyQgfCBhc3luYykubGVuZ3RoXG4gICAgICAgICAgPyAoJ2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLm5vTGF5ZXJzSW5SYW5nZScgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgOiAoJ2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLm5vTGF5ZXJzVmlzaWJsZScgfCB0cmFuc2xhdGUpXG4gICAgICB9fVxuICAgIDwvcD5cbiAgPC9tYXQtdGFiPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZW1wdHlMYXllcnM+XG4gICAgPG1hdC1saXN0ICpuZ0lmPVwiZGVsYXllZFNob3dFbXB0eU1hcENvbnRlbnRcIj5cbiAgICAgIDxwIGNsYXNzPVwibWFwLWVtcHR5IG1hdC10eXBvZ3JhcGh5XCI+XG4gICAgICAgIHt7ICdpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5lbXB0eScgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxwXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgbGF5ZXJBZGRpdGlvbkFsbG93ZWQgJiZcbiAgICAgICAgICAoc2VhcmNoVG9vbEluVG9vbGJhciB8fCBjYXRhbG9nVG9vbEluVG9vbGJhciB8fCBjb250ZXh0VG9vbEluVG9vbGJhcilcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJtYXAtZW1wdHkgbWF0LXR5cG9ncmFwaHlcIlxuICAgICAgPlxuICAgICAgICB7eyAnaWdvLmludGVncmF0aW9uLm1hcFRvb2wuY3VzdG9taXplJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9wPlxuXG4gICAgICA8bWF0LWxpc3QtaXRlbSAqbmdJZj1cImxheWVyQWRkaXRpb25BbGxvd2VkICYmIHNlYXJjaFRvb2xJblRvb2xiYXJcIj5cbiAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbj5zZWFyY2g8L21hdC1pY29uPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIG1hdExpc3RJdGVtVGl0bGVcbiAgICAgICAgICBjbGFzcz1cInNlYXJjaC10b29sIG1hdC10eXBvZ3JhcGh5XCJcbiAgICAgICAgICAoY2xpY2spPVwic2VhcmNoRW1pdCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5zZWFyY2gtdG9vbCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgICAgPG1hdC1saXN0LWl0ZW0gKm5nSWY9XCJsYXllckFkZGl0aW9uQWxsb3dlZCAmJiBjYXRhbG9nVG9vbEluVG9vbGJhclwiPlxuICAgICAgICA8bWF0LWljb24gbWF0TGlzdEl0ZW1JY29uPmxpYnJhcnlfYWRkPC9tYXQtaWNvbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBtYXRMaXN0SXRlbVRpdGxlXG4gICAgICAgICAgY2xhc3M9XCJjYXRhbG9nLXRvb2wgbWF0LXR5cG9ncmFwaHlcIlxuICAgICAgICAgIChjbGljayk9XCJjYXRhbG9nRW1pdCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5jYXRhbG9nLXRvb2wnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICAgIDxtYXQtbGlzdC1pdGVtICpuZ0lmPVwibGF5ZXJBZGRpdGlvbkFsbG93ZWQgJiYgY29udGV4dFRvb2xJblRvb2xiYXJcIj5cbiAgICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbj5zdGFyPC9tYXQtaWNvbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBtYXRMaXN0SXRlbVRpdGxlXG4gICAgICAgICAgY2xhc3M9XCJjb250ZXh0LXRvb2wgbWF0LXR5cG9ncmFwaHlcIlxuICAgICAgICAgIChjbGljayk9XCJjb250ZXh0RW1pdCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5jb250ZXh0LXRvb2wnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICA8L21hdC1saXN0PlxuICA8L25nLXRlbXBsYXRlPlxuPC9tYXQtdGFiLWdyb3VwPlxuIl19
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { AdvancedMapToolComponent } from './advanced-map-tool';
|
|
2
|
-
import { MapDetailsToolComponent } from './map-details-tool';
|
|
3
|
-
import { MapLegendToolComponent } from './map-legend';
|
|
4
|
-
import { MapProximityToolComponent } from './map-proximity-tool';
|
|
5
|
-
import { MapToolComponent } from './map-tool';
|
|
6
|
-
import { MapToolsComponent } from './map-tools';
|
|
7
|
-
export const INTEGRATION_MAP_DIRECTIVES = [
|
|
8
|
-
AdvancedMapToolComponent,
|
|
9
|
-
MapProximityToolComponent,
|
|
10
|
-
MapToolComponent,
|
|
11
|
-
MapToolsComponent,
|
|
12
|
-
MapDetailsToolComponent,
|
|
13
|
-
MapLegendToolComponent
|
|
14
|
-
];
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFaEQsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUc7SUFDeEMsd0JBQXdCO0lBQ3hCLHlCQUF5QjtJQUN6QixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLHVCQUF1QjtJQUN2QixzQkFBc0I7Q0FDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWR2YW5jZWRNYXBUb29sQ29tcG9uZW50IH0gZnJvbSAnLi9hZHZhbmNlZC1tYXAtdG9vbCc7XG5pbXBvcnQgeyBNYXBEZXRhaWxzVG9vbENvbXBvbmVudCB9IGZyb20gJy4vbWFwLWRldGFpbHMtdG9vbCc7XG5pbXBvcnQgeyBNYXBMZWdlbmRUb29sQ29tcG9uZW50IH0gZnJvbSAnLi9tYXAtbGVnZW5kJztcbmltcG9ydCB7IE1hcFByb3hpbWl0eVRvb2xDb21wb25lbnQgfSBmcm9tICcuL21hcC1wcm94aW1pdHktdG9vbCc7XG5pbXBvcnQgeyBNYXBUb29sQ29tcG9uZW50IH0gZnJvbSAnLi9tYXAtdG9vbCc7XG5pbXBvcnQgeyBNYXBUb29sc0NvbXBvbmVudCB9IGZyb20gJy4vbWFwLXRvb2xzJztcblxuZXhwb3J0IGNvbnN0IElOVEVHUkFUSU9OX01BUF9ESVJFQ1RJVkVTID0gW1xuICBBZHZhbmNlZE1hcFRvb2xDb21wb25lbnQsXG4gIE1hcFByb3hpbWl0eVRvb2xDb21wb25lbnQsXG4gIE1hcFRvb2xDb21wb25lbnQsXG4gIE1hcFRvb2xzQ29tcG9uZW50LFxuICBNYXBEZXRhaWxzVG9vbENvbXBvbmVudCxcbiAgTWFwTGVnZW5kVG9vbENvbXBvbmVudFxuXSBhcyBjb25zdDtcbiJdfQ==
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { AdvancedMapToolComponent } from './advanced-map-tool/advanced-map-tool.component';
|
|
3
|
-
import { MapDetailsToolComponent } from './map-details-tool/map-details-tool.component';
|
|
4
|
-
import { MapLegendToolComponent } from './map-legend/map-legend-tool.component';
|
|
5
|
-
import { MapProximityToolComponent } from './map-proximity-tool/map-proximity-tool.component';
|
|
6
|
-
import { MapToolComponent } from './map-tool/map-tool.component';
|
|
7
|
-
import { MapToolsComponent } from './map-tools/map-tools.component';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
/**
|
|
10
|
-
* @deprecated import the ImportExportToolComponent directly or INTEGRATION_MAP_DIRECTIVES for the set
|
|
11
|
-
*/
|
|
12
|
-
export class IgoAppMapModule {
|
|
13
|
-
static forRoot() {
|
|
14
|
-
return {
|
|
15
|
-
ngModule: IgoAppMapModule,
|
|
16
|
-
providers: []
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoAppMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
20
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: IgoAppMapModule, imports: [AdvancedMapToolComponent,
|
|
21
|
-
MapProximityToolComponent,
|
|
22
|
-
MapToolComponent,
|
|
23
|
-
MapToolsComponent,
|
|
24
|
-
MapDetailsToolComponent,
|
|
25
|
-
MapLegendToolComponent], exports: [AdvancedMapToolComponent,
|
|
26
|
-
MapProximityToolComponent,
|
|
27
|
-
MapToolComponent,
|
|
28
|
-
MapToolsComponent,
|
|
29
|
-
MapDetailsToolComponent,
|
|
30
|
-
MapLegendToolComponent] });
|
|
31
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoAppMapModule, imports: [AdvancedMapToolComponent,
|
|
32
|
-
MapProximityToolComponent,
|
|
33
|
-
MapToolComponent,
|
|
34
|
-
MapToolsComponent,
|
|
35
|
-
MapDetailsToolComponent,
|
|
36
|
-
MapLegendToolComponent] });
|
|
37
|
-
}
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoAppMapModule, decorators: [{
|
|
39
|
-
type: NgModule,
|
|
40
|
-
args: [{
|
|
41
|
-
imports: [
|
|
42
|
-
AdvancedMapToolComponent,
|
|
43
|
-
MapProximityToolComponent,
|
|
44
|
-
MapToolComponent,
|
|
45
|
-
MapToolsComponent,
|
|
46
|
-
MapDetailsToolComponent,
|
|
47
|
-
MapLegendToolComponent
|
|
48
|
-
],
|
|
49
|
-
exports: [
|
|
50
|
-
AdvancedMapToolComponent,
|
|
51
|
-
MapProximityToolComponent,
|
|
52
|
-
MapToolComponent,
|
|
53
|
-
MapToolsComponent,
|
|
54
|
-
MapDetailsToolComponent,
|
|
55
|
-
MapLegendToolComponent
|
|
56
|
-
]
|
|
57
|
-
}]
|
|
58
|
-
}] });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDM0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDOUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBRXBFOztHQUVHO0FBbUJILE1BQU0sT0FBTyxlQUFlO0lBQzFCLE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxlQUFlO1lBQ3pCLFNBQVMsRUFBRSxFQUFFO1NBQ2QsQ0FBQztJQUNKLENBQUM7d0dBTlUsZUFBZTt5R0FBZixlQUFlLFlBaEJ4Qix3QkFBd0I7WUFDeEIseUJBQXlCO1lBQ3pCLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsdUJBQXVCO1lBQ3ZCLHNCQUFzQixhQUd0Qix3QkFBd0I7WUFDeEIseUJBQXlCO1lBQ3pCLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsdUJBQXVCO1lBQ3ZCLHNCQUFzQjt5R0FHYixlQUFlLFlBaEJ4Qix3QkFBd0I7WUFDeEIseUJBQXlCO1lBQ3pCLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsdUJBQXVCO1lBQ3ZCLHNCQUFzQjs7NEZBV2IsZUFBZTtrQkFsQjNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6QixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2QixzQkFBc0I7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRTt3QkFDUCx3QkFBd0I7d0JBQ3hCLHlCQUF5Qjt3QkFDekIsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLHVCQUF1Qjt3QkFDdkIsc0JBQXNCO3FCQUN2QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFkdmFuY2VkTWFwVG9vbENvbXBvbmVudCB9IGZyb20gJy4vYWR2YW5jZWQtbWFwLXRvb2wvYWR2YW5jZWQtbWFwLXRvb2wuY29tcG9uZW50JztcbmltcG9ydCB7IE1hcERldGFpbHNUb29sQ29tcG9uZW50IH0gZnJvbSAnLi9tYXAtZGV0YWlscy10b29sL21hcC1kZXRhaWxzLXRvb2wuY29tcG9uZW50JztcbmltcG9ydCB7IE1hcExlZ2VuZFRvb2xDb21wb25lbnQgfSBmcm9tICcuL21hcC1sZWdlbmQvbWFwLWxlZ2VuZC10b29sLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXBQcm94aW1pdHlUb29sQ29tcG9uZW50IH0gZnJvbSAnLi9tYXAtcHJveGltaXR5LXRvb2wvbWFwLXByb3hpbWl0eS10b29sLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXBUb29sQ29tcG9uZW50IH0gZnJvbSAnLi9tYXAtdG9vbC9tYXAtdG9vbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWFwVG9vbHNDb21wb25lbnQgfSBmcm9tICcuL21hcC10b29scy9tYXAtdG9vbHMuY29tcG9uZW50JztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBpbXBvcnQgdGhlIEltcG9ydEV4cG9ydFRvb2xDb21wb25lbnQgZGlyZWN0bHkgb3IgSU5URUdSQVRJT05fTUFQX0RJUkVDVElWRVMgZm9yIHRoZSBzZXRcbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIEFkdmFuY2VkTWFwVG9vbENvbXBvbmVudCxcbiAgICBNYXBQcm94aW1pdHlUb29sQ29tcG9uZW50LFxuICAgIE1hcFRvb2xDb21wb25lbnQsXG4gICAgTWFwVG9vbHNDb21wb25lbnQsXG4gICAgTWFwRGV0YWlsc1Rvb2xDb21wb25lbnQsXG4gICAgTWFwTGVnZW5kVG9vbENvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQWR2YW5jZWRNYXBUb29sQ29tcG9uZW50LFxuICAgIE1hcFByb3hpbWl0eVRvb2xDb21wb25lbnQsXG4gICAgTWFwVG9vbENvbXBvbmVudCxcbiAgICBNYXBUb29sc0NvbXBvbmVudCxcbiAgICBNYXBEZXRhaWxzVG9vbENvbXBvbmVudCxcbiAgICBNYXBMZWdlbmRUb29sQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSWdvQXBwTWFwTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxJZ29BcHBNYXBNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IElnb0FwcE1hcE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW11cbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { ConfigService } from '@igo2/core/config';
|
|
3
|
-
import { StorageService } from '@igo2/core/storage';
|
|
4
|
-
import { IgoMap, MapService, ProjectionService } from '@igo2/geo';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@igo2/geo";
|
|
7
|
-
import * as i2 from "@igo2/core/storage";
|
|
8
|
-
import * as i3 from "@igo2/core/config";
|
|
9
|
-
// import { BehaviorSubject } from 'rxjs';
|
|
10
|
-
/**
|
|
11
|
-
* Service that holds the state of the map module
|
|
12
|
-
*/
|
|
13
|
-
export class MapState {
|
|
14
|
-
mapService;
|
|
15
|
-
projectionService;
|
|
16
|
-
storageService;
|
|
17
|
-
configService;
|
|
18
|
-
// public mapCenter$ = new BehaviorSubject<boolean>(false);
|
|
19
|
-
get showAllLegendsValue() {
|
|
20
|
-
return this._legendToolShowAll;
|
|
21
|
-
}
|
|
22
|
-
set showAllLegendsValue(value) {
|
|
23
|
-
this._legendToolShowAll = value;
|
|
24
|
-
}
|
|
25
|
-
_legendToolShowAll;
|
|
26
|
-
/**
|
|
27
|
-
* Active map
|
|
28
|
-
*/
|
|
29
|
-
get map() {
|
|
30
|
-
return this._map;
|
|
31
|
-
}
|
|
32
|
-
_map;
|
|
33
|
-
constructor(mapService, projectionService, // Don't remove this or it'll never be injected,
|
|
34
|
-
storageService, configService) {
|
|
35
|
-
this.mapService = mapService;
|
|
36
|
-
this.projectionService = projectionService;
|
|
37
|
-
this.storageService = storageService;
|
|
38
|
-
this.configService = configService;
|
|
39
|
-
this._map = new IgoMap({
|
|
40
|
-
controls: {
|
|
41
|
-
scaleLine: true,
|
|
42
|
-
attribution: {
|
|
43
|
-
collapsed: true
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}, this.storageService, this.configService);
|
|
47
|
-
this.mapService.setMap(this.map);
|
|
48
|
-
}
|
|
49
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapState, deps: [{ token: i1.MapService }, { token: i1.ProjectionService }, { token: i2.StorageService }, { token: i3.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
50
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapState, providedIn: 'root' });
|
|
51
|
-
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapState, decorators: [{
|
|
53
|
-
type: Injectable,
|
|
54
|
-
args: [{
|
|
55
|
-
providedIn: 'root'
|
|
56
|
-
}]
|
|
57
|
-
}], ctorParameters: () => [{ type: i1.MapService }, { type: i1.ProjectionService }, { type: i2.StorageService }, { type: i3.ConfigService }] });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7QUFFbEUsMENBQTBDO0FBRTFDOztHQUVHO0FBSUgsTUFBTSxPQUFPLFFBQVE7SUFvQlQ7SUFDQTtJQUNBO0lBQ0E7SUF0QlYsMkRBQTJEO0lBQzNELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLG1CQUFtQixDQUFDLEtBQUs7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUNsQyxDQUFDO0lBQ08sa0JBQWtCLENBQVU7SUFFcEM7O09BRUc7SUFDSCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUNPLElBQUksQ0FBUztJQUVyQixZQUNVLFVBQXNCLEVBQ3RCLGlCQUFvQyxFQUFFLGdEQUFnRDtJQUN0RixjQUE4QixFQUM5QixhQUE0QjtRQUg1QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRXBDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxNQUFNLENBQ3BCO1lBQ0UsUUFBUSxFQUFFO2dCQUNSLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFdBQVcsRUFBRTtvQkFDWCxTQUFTLEVBQUUsSUFBSTtpQkFDaEI7YUFDRjtTQUNGLEVBQ0QsSUFBSSxDQUFDLGNBQWMsRUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FDbkIsQ0FBQztRQUVGLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO3dHQXZDVSxRQUFROzRHQUFSLFFBQVEsY0FGUCxNQUFNOzs0RkFFUCxRQUFRO2tCQUhwQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvY29uZmlnJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9zdG9yYWdlJztcbmltcG9ydCB7IElnb01hcCwgTWFwU2VydmljZSwgUHJvamVjdGlvblNlcnZpY2UgfSBmcm9tICdAaWdvMi9nZW8nO1xuXG4vLyBpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBTZXJ2aWNlIHRoYXQgaG9sZHMgdGhlIHN0YXRlIG9mIHRoZSBtYXAgbW9kdWxlXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1hcFN0YXRlIHtcbiAgLy8gcHVibGljIG1hcENlbnRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgZ2V0IHNob3dBbGxMZWdlbmRzVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2xlZ2VuZFRvb2xTaG93QWxsO1xuICB9XG5cbiAgc2V0IHNob3dBbGxMZWdlbmRzVmFsdWUodmFsdWUpIHtcbiAgICB0aGlzLl9sZWdlbmRUb29sU2hvd0FsbCA9IHZhbHVlO1xuICB9XG4gIHByaXZhdGUgX2xlZ2VuZFRvb2xTaG93QWxsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBY3RpdmUgbWFwXG4gICAqL1xuICBnZXQgbWFwKCk6IElnb01hcCB7XG4gICAgcmV0dXJuIHRoaXMuX21hcDtcbiAgfVxuICBwcml2YXRlIF9tYXA6IElnb01hcDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1hcFNlcnZpY2U6IE1hcFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9qZWN0aW9uU2VydmljZTogUHJvamVjdGlvblNlcnZpY2UsIC8vIERvbid0IHJlbW92ZSB0aGlzIG9yIGl0J2xsIG5ldmVyIGJlIGluamVjdGVkLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZVxuICApIHtcbiAgICB0aGlzLl9tYXAgPSBuZXcgSWdvTWFwKFxuICAgICAge1xuICAgICAgICBjb250cm9sczoge1xuICAgICAgICAgIHNjYWxlTGluZTogdHJ1ZSxcbiAgICAgICAgICBhdHRyaWJ1dGlvbjoge1xuICAgICAgICAgICAgY29sbGFwc2VkOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZSxcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZVxuICAgICk7XG5cbiAgICB0aGlzLm1hcFNlcnZpY2Uuc2V0TWFwKHRoaXMubWFwKTtcbiAgfVxufVxuIl19
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export * from './measure.state';
|
|
2
|
-
export * from './measurer-tool/measurer-tool.component';
|
|
3
|
-
export * from './measurer-tool/measurer-tool.module';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL21lYXN1cmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsc0NBQXNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21lYXN1cmUuc3RhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9tZWFzdXJlci10b29sL21lYXN1cmVyLXRvb2wuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbWVhc3VyZXItdG9vbC9tZWFzdXJlci10b29sLm1vZHVsZSc7XG4iXX0=
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { IgoAppMeasurerToolModule } from './measurer-tool/measurer-tool.module';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* @deprecated import the MeasurerToolComponent directly
|
|
6
|
-
*/
|
|
7
|
-
export class IgoAppMeasureModule {
|
|
8
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoAppMeasureModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: IgoAppMeasureModule, exports: [IgoAppMeasurerToolModule] });
|
|
10
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoAppMeasureModule, imports: [IgoAppMeasurerToolModule] });
|
|
11
|
-
}
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoAppMeasureModule, decorators: [{
|
|
13
|
-
type: NgModule,
|
|
14
|
-
args: [{
|
|
15
|
-
exports: [IgoAppMeasurerToolModule]
|
|
16
|
-
}]
|
|
17
|
-
}] });
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL21lYXN1cmUvbWVhc3VyZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFFaEY7O0dBRUc7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO3dHQUFuQixtQkFBbUI7eUdBQW5CLG1CQUFtQixZQUZwQix3QkFBd0I7eUdBRXZCLG1CQUFtQixZQUZwQix3QkFBd0I7OzRGQUV2QixtQkFBbUI7a0JBSC9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsd0JBQXdCLENBQUM7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSWdvQXBwTWVhc3VyZXJUb29sTW9kdWxlIH0gZnJvbSAnLi9tZWFzdXJlci10b29sL21lYXN1cmVyLXRvb2wubW9kdWxlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBpbXBvcnQgdGhlIE1lYXN1cmVyVG9vbENvbXBvbmVudCBkaXJlY3RseVxuICovXG5ATmdNb2R1bGUoe1xuICBleHBvcnRzOiBbSWdvQXBwTWVhc3VyZXJUb29sTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ29BcHBNZWFzdXJlTW9kdWxlIHt9XG4iXX0=
|