geonetwork-ui 2.1.0 → 2.2.0-dev.0da04556
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/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +2 -1
- package/esm2022/libs/api/repository/src/index.mjs +2 -1
- package/esm2022/libs/api/repository/src/lib/gn4/index.mjs +3 -1
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/feature/auth/src/lib/feature-auth.module.mjs +2 -2
- package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +2 -2
- package/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +4 -15
- package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +5 -4
- package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +5 -3
- package/esm2022/libs/feature/map/src/index.mjs +2 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +106 -0
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +64 -0
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +63 -0
- package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +17 -3
- package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +76 -0
- package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +6 -3
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +3 -1
- package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +9 -6
- package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +2 -2
- package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +1 -1
- package/esm2022/libs/feature/search/src/lib/state/effects.mjs +3 -3
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +2 -2
- package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +4 -4
- package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +1 -1
- package/esm2022/libs/ui/elements/src/index.mjs +4 -1
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +27 -0
- package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +17 -0
- package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +10 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +12 -6
- package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +7 -3
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +15 -3
- package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +19 -40
- package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +6 -3
- package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +45 -0
- package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +2 -2
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +8 -3
- package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +2 -2
- package/esm2022/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/record-table/record-table.component.mjs +3 -3
- package/esm2022/libs/util/app-config/src/lib/app-config.mjs +5 -1
- package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
- package/esm2022/libs/util/i18n/src/index.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +29 -13
- package/esm2022/libs/util/shared/src/lib/services/theme.service.mjs +8 -1
- package/esm2022/libs/util/shared/src/lib/utils/fuzzy-filter.mjs +27 -0
- package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
- package/esm2022/translations/de.json +102 -84
- package/esm2022/translations/en.json +40 -22
- package/esm2022/translations/es.json +18 -0
- package/esm2022/translations/fr.json +26 -8
- package/esm2022/translations/it.json +27 -6
- package/esm2022/translations/nl.json +18 -0
- package/esm2022/translations/pt.json +18 -0
- package/fesm2022/geonetwork-ui.mjs +801 -257
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +1 -1
- package/libs/api/repository/src/index.d.ts +1 -0
- package/libs/api/repository/src/index.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/index.d.ts +2 -0
- package/libs/api/repository/src/lib/gn4/index.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +1 -0
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts +0 -1
- package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +2 -2
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts +15 -2
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +1 -1
- package/libs/feature/map/src/index.d.ts +1 -0
- package/libs/feature/map/src/index.d.ts.map +1 -1
- package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts +22 -0
- package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +22 -0
- package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts +22 -0
- package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/feature-map.module.d.ts +16 -12
- package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
- package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +20 -0
- package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -0
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
- package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +3 -2
- package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/state/effects.d.ts +1 -1
- package/libs/feature/search/src/lib/state/effects.d.ts.map +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.d.ts +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
- package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +1 -1
- package/libs/ui/elements/src/index.d.ts +3 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts +10 -0
- package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts +8 -0
- package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.d.ts +1 -0
- package/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +1 -0
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +3 -2
- package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +13 -11
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/button/button.component.d.ts +2 -4
- package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts +13 -0
- package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/form-field/form-field.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +18 -17
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/model.d.ts +2 -0
- package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
- package/libs/util/i18n/src/index.d.ts +1 -0
- package/libs/util/i18n/src/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/links/link-utils.d.ts +19 -7
- package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
- package/libs/util/shared/src/lib/services/theme.service.d.ts +1 -0
- package/libs/util/shared/src/lib/services/theme.service.d.ts.map +1 -1
- package/libs/util/shared/src/lib/utils/fuzzy-filter.d.ts +9 -0
- package/libs/util/shared/src/lib/utils/fuzzy-filter.d.ts.map +1 -0
- package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
- package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
- package/package.json +11 -6
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +1 -0
- package/src/libs/api/repository/src/index.ts +1 -0
- package/src/libs/api/repository/src/lib/gn4/index.ts +2 -0
- package/src/libs/common/domain/src/lib/index.ts +2 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +1 -0
- package/src/libs/feature/auth/src/lib/feature-auth.module.ts +1 -1
- package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +1 -1
- package/src/libs/feature/catalog/src/lib/organisations/organisations.component.ts +3 -17
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +8 -5
- package/src/libs/feature/editor/src/lib/record-form/record-form.component.ts +2 -1
- package/src/libs/feature/map/src/index.ts +1 -0
- package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.css +0 -0
- package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +21 -0
- package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +107 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.css +0 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.html +37 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +64 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.css +0 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.html +55 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +63 -0
- package/src/libs/feature/map/src/lib/feature-map.module.ts +9 -0
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.css +0 -0
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.html +39 -0
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +83 -0
- package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +9 -3
- package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +6 -0
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +12 -4
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -4
- package/src/libs/feature/search/src/lib/feature-search.module.ts +1 -1
- package/src/libs/feature/search/src/lib/state/effects.ts +1 -1
- package/src/libs/feature/search/src/lib/utils/service/fields.ts +1 -1
- package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -0
- package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.ts +1 -1
- package/src/libs/ui/elements/src/index.ts +3 -0
- package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +4 -1
- package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.css +0 -0
- package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +29 -0
- package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.ts +15 -0
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +264 -0
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.html +1 -0
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +16 -0
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +93 -27
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.ts +7 -0
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +4 -0
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +59 -32
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +5 -0
- package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
- package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +4 -0
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +7 -0
- package/src/libs/ui/inputs/src/lib/button/button.component.css +1 -1
- package/src/libs/ui/inputs/src/lib/button/button.component.ts +22 -42
- package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts +7 -4
- package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +47 -0
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +8 -3
- package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.css +1 -0
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -0
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +1 -1
- package/src/libs/ui/search/src/lib/record-table/record-table.component.html +2 -2
- package/src/libs/util/app-config/src/lib/app-config.ts +4 -0
- package/src/libs/util/app-config/src/lib/model.ts +2 -0
- package/src/libs/util/i18n/src/index.ts +1 -0
- package/src/libs/util/shared/src/lib/links/link-utils.ts +34 -11
- package/src/libs/util/shared/src/lib/services/theme.service.ts +9 -0
- package/src/libs/util/shared/src/lib/utils/fuzzy-filter.ts +32 -0
- package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
- package/tailwind.base.css +31 -1
- package/translations/de.json +102 -84
- package/translations/en.json +40 -22
- package/translations/es.json +18 -0
- package/translations/fr.json +26 -8
- package/translations/it.json +27 -6
- package/translations/nl.json +18 -0
- package/translations/pt.json +18 -0
- package/translations/sk.json +18 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Component } from '@angular/core';
|
|
2
|
+
import { WfsEndpoint } from '@camptocamp/ogc-client';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { MapContextLayerTypeEnum, } from '../map-context/map-context.model';
|
|
5
|
+
import { MapFacade } from '../+state/map.facade';
|
|
6
|
+
import { debounceTime } from 'rxjs/operators';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../+state/map.facade";
|
|
9
|
+
import * as i2 from "@angular/common";
|
|
10
|
+
import * as i3 from "@ngx-translate/core";
|
|
11
|
+
import * as i4 from "../../../../../ui/inputs/src/lib/button/button.component";
|
|
12
|
+
import * as i5 from "../../../../../ui/inputs/src/lib/text-input/text-input.component";
|
|
13
|
+
export class AddLayerFromWfsComponent {
|
|
14
|
+
constructor(mapFacade, changeDetectorRef) {
|
|
15
|
+
this.mapFacade = mapFacade;
|
|
16
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
17
|
+
this.wfsUrl = '';
|
|
18
|
+
this.loading = false;
|
|
19
|
+
this.layers = [];
|
|
20
|
+
this.wfsEndpoint = null;
|
|
21
|
+
this.urlChange = new Subject();
|
|
22
|
+
this.errorMessage = null;
|
|
23
|
+
}
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
this.urlChange.pipe(debounceTime(700)).subscribe(() => this.loadLayers());
|
|
26
|
+
}
|
|
27
|
+
async loadLayers() {
|
|
28
|
+
this.errorMessage = null;
|
|
29
|
+
try {
|
|
30
|
+
this.loading = true;
|
|
31
|
+
if (this.wfsUrl.trim() === '') {
|
|
32
|
+
this.layers = [];
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
this.wfsEndpoint = await new WfsEndpoint(this.wfsUrl).isReady();
|
|
36
|
+
this.layers = this.wfsEndpoint.getFeatureTypes();
|
|
37
|
+
console.log(this.layers);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
const err = error;
|
|
41
|
+
this.layers = [];
|
|
42
|
+
this.errorMessage = 'Error loading layers: ' + err.message;
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
this.loading = false;
|
|
46
|
+
this.changeDetectorRef.markForCheck();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
addLayer(layer) {
|
|
50
|
+
const layerToAdd = {
|
|
51
|
+
name: layer.name,
|
|
52
|
+
url: this.wfsUrl.toString(),
|
|
53
|
+
type: MapContextLayerTypeEnum.WFS,
|
|
54
|
+
};
|
|
55
|
+
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
|
|
56
|
+
}
|
|
57
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWfsComponent, deps: [{ token: i1.MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
58
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wfsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wfs.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i4.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i5.TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
|
|
59
|
+
}
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWfsComponent, decorators: [{
|
|
61
|
+
type: Component,
|
|
62
|
+
args: [{ selector: 'gn-ui-add-layer-from-wfs', template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wfsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wfs.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n" }]
|
|
63
|
+
}], ctorParameters: function () { return [{ type: i1.MapFacade }, { type: i0.ChangeDetectorRef }]; } });
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWxheWVyLWZyb20td2ZzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9hZGQtbGF5ZXItZnJvbS13ZnMvYWRkLWxheWVyLWZyb20td2ZzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9hZGQtbGF5ZXItZnJvbS13ZnMvYWRkLWxheWVyLWZyb20td2ZzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUE7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFFTCx1QkFBdUIsR0FDeEIsTUFBTSxrQ0FBa0MsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFBOzs7Ozs7O0FBTzdDLE1BQU0sT0FBTyx3QkFBd0I7SUFRbkMsWUFDVSxTQUFvQixFQUNwQixpQkFBb0M7UUFEcEMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBVDlDLFdBQU0sR0FBRyxFQUFFLENBQUE7UUFDWCxZQUFPLEdBQUcsS0FBSyxDQUFBO1FBQ2YsV0FBTSxHQUEwQixFQUFFLENBQUE7UUFDbEMsZ0JBQVcsR0FBdUIsSUFBSSxDQUFBO1FBQ3RDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFBO1FBQ2pDLGlCQUFZLEdBQWtCLElBQUksQ0FBQTtJQUsvQixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQTtJQUMzRSxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtRQUN4QixJQUFJO1lBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7WUFFbkIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7Z0JBQ2hCLE9BQU07YUFDUDtZQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUE7WUFDL0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFBO1lBQ2hELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQ3pCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxNQUFNLEdBQUcsR0FBRyxLQUFjLENBQUE7WUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7WUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyx3QkFBd0IsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFBO1NBQzNEO2dCQUFTO1lBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7WUFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFBO1NBQ3RDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUEwQjtRQUNqQyxNQUFNLFVBQVUsR0FBeUI7WUFDdkMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUMzQixJQUFJLEVBQUUsdUJBQXVCLENBQUMsR0FBRztTQUNsQyxDQUFBO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDaEUsQ0FBQzs4R0EvQ1Usd0JBQXdCO2tHQUF4Qix3QkFBd0IsZ0VDZnJDLCtsQ0FxQ0E7OzJGRHRCYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFdmc0VuZHBvaW50LCBXZnNGZWF0dXJlVHlwZUJyaWVmIH0gZnJvbSAnQGNhbXB0b2NhbXAvb2djLWNsaWVudCdcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHtcbiAgTWFwQ29udGV4dExheWVyTW9kZWwsXG4gIE1hcENvbnRleHRMYXllclR5cGVFbnVtLFxufSBmcm9tICcuLi9tYXAtY29udGV4dC9tYXAtY29udGV4dC5tb2RlbCdcbmltcG9ydCB7IE1hcEZhY2FkZSB9IGZyb20gJy4uLytzdGF0ZS9tYXAuZmFjYWRlJ1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWFkZC1sYXllci1mcm9tLXdmcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtbGF5ZXItZnJvbS13ZnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hZGQtbGF5ZXItZnJvbS13ZnMuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBBZGRMYXllckZyb21XZnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICB3ZnNVcmwgPSAnJ1xuICBsb2FkaW5nID0gZmFsc2VcbiAgbGF5ZXJzOiBXZnNGZWF0dXJlVHlwZUJyaWVmW10gPSBbXVxuICB3ZnNFbmRwb2ludDogV2ZzRW5kcG9pbnQgfCBudWxsID0gbnVsbFxuICB1cmxDaGFuZ2UgPSBuZXcgU3ViamVjdDxzdHJpbmc+KClcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFwRmFjYWRlOiBNYXBGYWNhZGUsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudXJsQ2hhbmdlLnBpcGUoZGVib3VuY2VUaW1lKDcwMCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmxvYWRMYXllcnMoKSlcbiAgfVxuXG4gIGFzeW5jIGxvYWRMYXllcnMoKSB7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWVcblxuICAgICAgaWYgKHRoaXMud2ZzVXJsLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgdGhpcy5sYXllcnMgPSBbXVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgdGhpcy53ZnNFbmRwb2ludCA9IGF3YWl0IG5ldyBXZnNFbmRwb2ludCh0aGlzLndmc1VybCkuaXNSZWFkeSgpXG4gICAgICB0aGlzLmxheWVycyA9IHRoaXMud2ZzRW5kcG9pbnQuZ2V0RmVhdHVyZVR5cGVzKClcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMubGF5ZXJzKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBlcnIgPSBlcnJvciBhcyBFcnJvclxuICAgICAgdGhpcy5sYXllcnMgPSBbXVxuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnRXJyb3IgbG9hZGluZyBsYXllcnM6ICcgKyBlcnIubWVzc2FnZVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKVxuICAgIH1cbiAgfVxuXG4gIGFkZExheWVyKGxheWVyOiBXZnNGZWF0dXJlVHlwZUJyaWVmKSB7XG4gICAgY29uc3QgbGF5ZXJUb0FkZDogTWFwQ29udGV4dExheWVyTW9kZWwgPSB7XG4gICAgICBuYW1lOiBsYXllci5uYW1lLFxuICAgICAgdXJsOiB0aGlzLndmc1VybC50b1N0cmluZygpLFxuICAgICAgdHlwZTogTWFwQ29udGV4dExheWVyVHlwZUVudW0uV0ZTLFxuICAgIH1cbiAgICB0aGlzLm1hcEZhY2FkZS5hZGRMYXllcih7IC4uLmxheWVyVG9BZGQsIHRpdGxlOiBsYXllci50aXRsZSB9KVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgbWItNVwiPlxuICA8Z24tdWktdGV4dC1pbnB1dFxuICAgIFsodmFsdWUpXT1cIndmc1VybFwiXG4gICAgKHZhbHVlQ2hhbmdlKT1cInVybENoYW5nZS5uZXh0KCRldmVudClcIlxuICAgIFtoaW50XT1cIidtYXAud2ZzLnVybElucHV0LmhpbnQnIHwgdHJhbnNsYXRlXCJcbiAgICBjbGFzcz1cInctOTZcIlxuICA+XG4gIDwvZ24tdWktdGV4dC1pbnB1dD5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCIgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgbXQtMlwiPlxuICB7eyBlcnJvck1lc3NhZ2UgfX1cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwibG9hZGluZ1wiPlxuICA8cCBjbGFzcz1cImxvYWRpbmctbWVzc2FnZVwiIHRyYW5zbGF0ZT5tYXAubG9hZGluZy5zZXJ2aWNlPC9wPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiBsYXllcnMubGVuZ3RoID4gMFwiPlxuICA8aDIgY2xhc3M9XCJmb250LWJvbGRcIiB0cmFuc2xhdGU+bWFwLmxheWVycy5hdmFpbGFibGU8L2gyPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsYXllciBvZiBsYXllcnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG15LTIgbGF5ZXItaXRlbS10cmVlXCI+XG4gICAgICA8cCBjbGFzcz1cIm1heC13LXhzIG92ZXJmbG93LWhpZGRlbiBvdmVyZmxvdy1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxuICAgICAgICB7eyBsYXllci50aXRsZSB9fVxuICAgICAgPC9wPlxuICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICAqbmdJZj1cImxheWVyLm5hbWVcIlxuICAgICAgICBjbGFzcz1cImxheWVyLWFkZC1idG5cIlxuICAgICAgICB0eXBlPVwicHJpbWFyeVwiXG4gICAgICAgIChidXR0b25DbGljayk9XCJhZGRMYXllcihsYXllcilcIlxuICAgICAgICBleHRyYUNsYXNzPVwidGV4dC1zbSAhcHgtMiAhcHktMVwiXG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICA+PHNwYW4gdHJhbnNsYXRlPiBtYXAubGF5ZXIuYWRkIDwvc3Bhbj48L2duLXVpLWJ1dHRvblxuICAgICAgPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Component, ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { WmsEndpoint } from '@camptocamp/ogc-client';
|
|
3
|
+
import { MapFacade } from '../+state/map.facade';
|
|
4
|
+
import { MapContextLayerTypeEnum, } from '../map-context/map-context.model';
|
|
5
|
+
import { Subject } from 'rxjs';
|
|
6
|
+
import { debounceTime } from 'rxjs/operators';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../+state/map.facade";
|
|
9
|
+
import * as i2 from "@angular/common";
|
|
10
|
+
import * as i3 from "@ngx-translate/core";
|
|
11
|
+
import * as i4 from "../../../../../ui/inputs/src/lib/button/button.component";
|
|
12
|
+
import * as i5 from "../../../../../ui/inputs/src/lib/text-input/text-input.component";
|
|
13
|
+
export class AddLayerFromWmsComponent {
|
|
14
|
+
constructor(mapFacade, changeDetectorRef) {
|
|
15
|
+
this.mapFacade = mapFacade;
|
|
16
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
17
|
+
this.wmsUrl = '';
|
|
18
|
+
this.loading = false;
|
|
19
|
+
this.layers = [];
|
|
20
|
+
this.wmsEndpoint = null;
|
|
21
|
+
this.urlChange = new Subject();
|
|
22
|
+
this.errorMessage = null;
|
|
23
|
+
}
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
this.urlChange.pipe(debounceTime(700)).subscribe(() => this.loadLayers());
|
|
26
|
+
}
|
|
27
|
+
async loadLayers() {
|
|
28
|
+
this.errorMessage = null;
|
|
29
|
+
try {
|
|
30
|
+
this.loading = true;
|
|
31
|
+
if (this.wmsUrl.trim() === '') {
|
|
32
|
+
this.layers = [];
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
this.wmsEndpoint = await new WmsEndpoint(this.wmsUrl).isReady();
|
|
36
|
+
this.layers = this.wmsEndpoint.getLayers();
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
const err = error;
|
|
40
|
+
this.layers = [];
|
|
41
|
+
this.errorMessage = 'Error loading layers: ' + err.message;
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
this.loading = false;
|
|
45
|
+
this.changeDetectorRef.markForCheck();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
addLayer(layer) {
|
|
49
|
+
const layerToAdd = {
|
|
50
|
+
name: layer.name,
|
|
51
|
+
url: this.wmsUrl.toString(),
|
|
52
|
+
type: MapContextLayerTypeEnum.WMS,
|
|
53
|
+
};
|
|
54
|
+
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
|
|
55
|
+
}
|
|
56
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWmsComponent, deps: [{ token: i1.MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
57
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wmsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wms.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container\n *ngFor=\"let layer of layers\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: layer\n }\"\n ></ng-container>\n</div>\n\n<ng-template #layerTreeItem let-layer=\"layer\">\n <div class=\"flex items-center justify-between layer-tree-item my-2\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n <div *ngIf=\"layer.children?.length > 0\" class=\"ml-4\">\n <ng-container\n *ngFor=\"let child of layer.children\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: child\n }\"\n >\n </ng-container>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i4.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i5.TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
|
|
58
|
+
}
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWmsComponent, decorators: [{
|
|
60
|
+
type: Component,
|
|
61
|
+
args: [{ selector: 'gn-ui-add-layer-from-wms', template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wmsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wms.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container\n *ngFor=\"let layer of layers\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: layer\n }\"\n ></ng-container>\n</div>\n\n<ng-template #layerTreeItem let-layer=\"layer\">\n <div class=\"flex items-center justify-between layer-tree-item my-2\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n <div *ngIf=\"layer.children?.length > 0\" class=\"ml-4\">\n <ng-container\n *ngFor=\"let child of layer.children\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: child\n }\"\n >\n </ng-container>\n </div>\n</ng-template>\n" }]
|
|
62
|
+
}], ctorParameters: function () { return [{ type: i1.MapFacade }, { type: i0.ChangeDetectorRef }]; } });
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWxheWVyLWZyb20td21zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9hZGQtbGF5ZXItZnJvbS13bXMvYWRkLWxheWVyLWZyb20td21zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9hZGQtbGF5ZXItZnJvbS13bXMvYWRkLWxheWVyLWZyb20td21zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQVUsTUFBTSxlQUFlLENBQUE7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBbUIsTUFBTSx3QkFBd0IsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDaEQsT0FBTyxFQUVMLHVCQUF1QixHQUN4QixNQUFNLGtDQUFrQyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFBOzs7Ozs7O0FBTzdDLE1BQU0sT0FBTyx3QkFBd0I7SUFRbkMsWUFDVSxTQUFvQixFQUNwQixpQkFBb0M7UUFEcEMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBVDlDLFdBQU0sR0FBRyxFQUFFLENBQUE7UUFDWCxZQUFPLEdBQUcsS0FBSyxDQUFBO1FBQ2YsV0FBTSxHQUFzQixFQUFFLENBQUE7UUFDOUIsZ0JBQVcsR0FBdUIsSUFBSSxDQUFBO1FBQ3RDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFBO1FBQ2pDLGlCQUFZLEdBQWtCLElBQUksQ0FBQTtJQUsvQixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQTtJQUMzRSxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtRQUN4QixJQUFJO1lBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7WUFFbkIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7Z0JBQ2hCLE9BQU07YUFDUDtZQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUE7WUFDL0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFBO1NBQzNDO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxNQUFNLEdBQUcsR0FBRyxLQUFjLENBQUE7WUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7WUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyx3QkFBd0IsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFBO1NBQzNEO2dCQUFTO1lBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7WUFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFBO1NBQ3RDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFzQjtRQUM3QixNQUFNLFVBQVUsR0FBeUI7WUFDdkMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUMzQixJQUFJLEVBQUUsdUJBQXVCLENBQUMsR0FBRztTQUNsQyxDQUFBO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDaEUsQ0FBQzs4R0E5Q1Usd0JBQXdCO2tHQUF4Qix3QkFBd0IsZ0VDZnJDLDRnREF1REE7OzJGRHhDYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3RvclJlZiwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFdtc0VuZHBvaW50LCBXbXNMYXllclN1bW1hcnkgfSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuaW1wb3J0IHsgTWFwRmFjYWRlIH0gZnJvbSAnLi4vK3N0YXRlL21hcC5mYWNhZGUnXG5pbXBvcnQge1xuICBNYXBDb250ZXh0TGF5ZXJNb2RlbCxcbiAgTWFwQ29udGV4dExheWVyVHlwZUVudW0sXG59IGZyb20gJy4uL21hcC1jb250ZXh0L21hcC1jb250ZXh0Lm1vZGVsJ1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktYWRkLWxheWVyLWZyb20td21zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1sYXllci1mcm9tLXdtcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FkZC1sYXllci1mcm9tLXdtcy5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFkZExheWVyRnJvbVdtc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHdtc1VybCA9ICcnXG4gIGxvYWRpbmcgPSBmYWxzZVxuICBsYXllcnM6IFdtc0xheWVyU3VtbWFyeVtdID0gW11cbiAgd21zRW5kcG9pbnQ6IFdtc0VuZHBvaW50IHwgbnVsbCA9IG51bGxcbiAgdXJsQ2hhbmdlID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nIHwgbnVsbCA9IG51bGxcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1hcEZhY2FkZTogTWFwRmFjYWRlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnVybENoYW5nZS5waXBlKGRlYm91bmNlVGltZSg3MDApKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5sb2FkTGF5ZXJzKCkpXG4gIH1cblxuICBhc3luYyBsb2FkTGF5ZXJzKCkge1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gbnVsbFxuICAgIHRyeSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXG5cbiAgICAgIGlmICh0aGlzLndtc1VybC50cmltKCkgPT09ICcnKSB7XG4gICAgICAgIHRoaXMubGF5ZXJzID0gW11cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHRoaXMud21zRW5kcG9pbnQgPSBhd2FpdCBuZXcgV21zRW5kcG9pbnQodGhpcy53bXNVcmwpLmlzUmVhZHkoKVxuICAgICAgdGhpcy5sYXllcnMgPSB0aGlzLndtc0VuZHBvaW50LmdldExheWVycygpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IGVyciA9IGVycm9yIGFzIEVycm9yXG4gICAgICB0aGlzLmxheWVycyA9IFtdXG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdFcnJvciBsb2FkaW5nIGxheWVyczogJyArIGVyci5tZXNzYWdlXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpXG4gICAgfVxuICB9XG5cbiAgYWRkTGF5ZXIobGF5ZXI6IFdtc0xheWVyU3VtbWFyeSkge1xuICAgIGNvbnN0IGxheWVyVG9BZGQ6IE1hcENvbnRleHRMYXllck1vZGVsID0ge1xuICAgICAgbmFtZTogbGF5ZXIubmFtZSxcbiAgICAgIHVybDogdGhpcy53bXNVcmwudG9TdHJpbmcoKSxcbiAgICAgIHR5cGU6IE1hcENvbnRleHRMYXllclR5cGVFbnVtLldNUyxcbiAgICB9XG4gICAgdGhpcy5tYXBGYWNhZGUuYWRkTGF5ZXIoeyAuLi5sYXllclRvQWRkLCB0aXRsZTogbGF5ZXIudGl0bGUgfSlcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG1iLTVcIj5cbiAgPGduLXVpLXRleHQtaW5wdXRcbiAgICBbKHZhbHVlKV09XCJ3bXNVcmxcIlxuICAgICh2YWx1ZUNoYW5nZSk9XCJ1cmxDaGFuZ2UubmV4dCgkZXZlbnQpXCJcbiAgICBbaGludF09XCInbWFwLndtcy51cmxJbnB1dC5oaW50JyB8IHRyYW5zbGF0ZVwiXG4gICAgY2xhc3M9XCJ3LTk2XCJcbiAgPlxuICA8L2duLXVpLXRleHQtaW5wdXQ+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZVwiIGNsYXNzPVwidGV4dC1yZWQtNTAwIG10LTJcIj5cbiAge3sgZXJyb3JNZXNzYWdlIH19XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgPHAgY2xhc3M9XCJsb2FkaW5nLW1lc3NhZ2VcIiB0cmFuc2xhdGU+bWFwLmxvYWRpbmcuc2VydmljZTwvcD5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiIWxvYWRpbmcgJiYgbGF5ZXJzLmxlbmd0aCA+IDBcIj5cbiAgPGgyIGNsYXNzPVwiZm9udC1ib2xkXCIgdHJhbnNsYXRlPm1hcC5sYXllcnMuYXZhaWxhYmxlPC9oMj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0Zvcj1cImxldCBsYXllciBvZiBsYXllcnNcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxheWVyVHJlZUl0ZW1cIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICBsYXllcjogbGF5ZXJcbiAgICB9XCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbGF5ZXJUcmVlSXRlbSBsZXQtbGF5ZXI9XCJsYXllclwiPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGxheWVyLXRyZWUtaXRlbSBteS0yXCI+XG4gICAgPHAgY2xhc3M9XCJtYXgtdy14cyBvdmVyZmxvdy1oaWRkZW4gb3ZlcmZsb3ctZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXBcIj5cbiAgICAgIHt7IGxheWVyLnRpdGxlIH19XG4gICAgPC9wPlxuICAgIDxnbi11aS1idXR0b25cbiAgICAgICpuZ0lmPVwibGF5ZXIubmFtZVwiXG4gICAgICBjbGFzcz1cImxheWVyLWFkZC1idG5cIlxuICAgICAgdHlwZT1cInByaW1hcnlcIlxuICAgICAgKGJ1dHRvbkNsaWNrKT1cImFkZExheWVyKGxheWVyKVwiXG4gICAgICBleHRyYUNsYXNzPVwidGV4dC1zbSAhcHgtMiAhcHktMVwiXG4gICAgICB0cmFuc2xhdGVcbiAgICAgID48c3BhbiB0cmFuc2xhdGU+IG1hcC5sYXllci5hZGQgPC9zcGFuPjwvZ24tdWktYnV0dG9uXG4gICAgPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImxheWVyLmNoaWxkcmVuPy5sZW5ndGggPiAwXCIgY2xhc3M9XCJtbC00XCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGxheWVyLmNoaWxkcmVuXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxheWVyVHJlZUl0ZW1cIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgbGF5ZXI6IGNoaWxkXG4gICAgICB9XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -20,6 +20,10 @@ import { MapContainerComponent } from './map-container/map-container.component';
|
|
|
20
20
|
import { AddLayerRecordPreviewComponent } from './add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component';
|
|
21
21
|
import { UiElementsModule } from '../../../../../libs/ui/elements/src';
|
|
22
22
|
import { UiInputsModule } from '../../../../../libs/ui/inputs/src';
|
|
23
|
+
import { AddLayerFromWmsComponent } from './add-layer-from-wms/add-layer-from-wms.component';
|
|
24
|
+
import { AddLayerFromFileComponent } from './add-layer-from-file/add-layer-from-file.component';
|
|
25
|
+
import { AddLayerFromWfsComponent } from './add-layer-from-wfs/add-layer-from-wfs.component';
|
|
26
|
+
import { GeocodingComponent } from './geocoding/geocoding.component';
|
|
23
27
|
import * as i0 from "@angular/core";
|
|
24
28
|
import * as i1 from "@ngrx/store";
|
|
25
29
|
import * as i2 from "@ngrx/effects";
|
|
@@ -30,7 +34,11 @@ export class FeatureMapModule {
|
|
|
30
34
|
LayersPanelComponent,
|
|
31
35
|
AddLayerFromCatalogComponent,
|
|
32
36
|
MapContainerComponent,
|
|
33
|
-
AddLayerRecordPreviewComponent
|
|
37
|
+
AddLayerRecordPreviewComponent,
|
|
38
|
+
AddLayerFromWmsComponent,
|
|
39
|
+
AddLayerFromFileComponent,
|
|
40
|
+
AddLayerFromWfsComponent,
|
|
41
|
+
GeocodingComponent], imports: [CommonModule,
|
|
34
42
|
UiMapModule,
|
|
35
43
|
UiLayoutModule,
|
|
36
44
|
MatIconModule,
|
|
@@ -41,7 +49,8 @@ export class FeatureMapModule {
|
|
|
41
49
|
MapInstanceDirective,
|
|
42
50
|
LayersPanelComponent,
|
|
43
51
|
AddLayerFromCatalogComponent,
|
|
44
|
-
MapContainerComponent
|
|
52
|
+
MapContainerComponent,
|
|
53
|
+
GeocodingComponent] }); }
|
|
45
54
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureMapModule, providers: [
|
|
46
55
|
{
|
|
47
56
|
provide: FEATURE_MAP_OPTIONS,
|
|
@@ -70,6 +79,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
70
79
|
AddLayerFromCatalogComponent,
|
|
71
80
|
MapContainerComponent,
|
|
72
81
|
AddLayerRecordPreviewComponent,
|
|
82
|
+
AddLayerFromWmsComponent,
|
|
83
|
+
AddLayerFromFileComponent,
|
|
84
|
+
AddLayerFromWfsComponent,
|
|
85
|
+
GeocodingComponent,
|
|
73
86
|
],
|
|
74
87
|
exports: [
|
|
75
88
|
MapContextComponent,
|
|
@@ -77,6 +90,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
77
90
|
LayersPanelComponent,
|
|
78
91
|
AddLayerFromCatalogComponent,
|
|
79
92
|
MapContainerComponent,
|
|
93
|
+
GeocodingComponent,
|
|
80
94
|
],
|
|
81
95
|
imports: [
|
|
82
96
|
CommonModule,
|
|
@@ -100,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
100
114
|
],
|
|
101
115
|
}]
|
|
102
116
|
}] });
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1tYXAubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL21hcC9zcmMvbGliL2ZlYXR1cmUtbWFwLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtDQUErQyxDQUFBO0FBQ25GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQTtBQUN4RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDN0MsT0FBTyxLQUFLLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQy9FLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHNGQUFzRixDQUFBO0FBQ3JJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFBO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQTtBQUM1RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQTtBQUMvRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQTtBQUM1RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTs7OztBQTRDcEUsTUFBTSxPQUFPLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsaUJBeEN6QixtQkFBbUI7WUFDbkIsb0JBQW9CO1lBQ3BCLG9CQUFvQjtZQUNwQiw0QkFBNEI7WUFDNUIscUJBQXFCO1lBQ3JCLDhCQUE4QjtZQUM5Qix3QkFBd0I7WUFDeEIseUJBQXlCO1lBQ3pCLHdCQUF3QjtZQUN4QixrQkFBa0IsYUFXbEIsWUFBWTtZQUNaLFdBQVc7WUFDWCxjQUFjO1lBQ2QsYUFBYTtZQUNiLGFBQWE7WUFDYixlQUFlO1lBQ2YsbUJBQW1CLGtEQUduQixnQkFBZ0I7WUFDaEIsY0FBYyxhQWxCZCxtQkFBbUI7WUFDbkIsb0JBQW9CO1lBQ3BCLG9CQUFvQjtZQUNwQiw0QkFBNEI7WUFDNUIscUJBQXFCO1lBQ3JCLGtCQUFrQjsrR0F1QlQsZ0JBQWdCLGFBUmhCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLG1CQUFtQjtnQkFDNUIsUUFBUSxFQUFFLGlCQUFpQjthQUM1QjtZQUNELFNBQVM7U0FDVixZQWxCQyxZQUFZO1lBQ1osV0FBVztZQUNYLGNBQWM7WUFDZCxhQUFhO1lBQ2IsYUFBYTtZQUNiLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIsV0FBVyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFDbkUsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RDLGdCQUFnQjtZQUNoQixjQUFjOzsyRkFVTCxnQkFBZ0I7a0JBMUM1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3dCQUNwQiw0QkFBNEI7d0JBQzVCLHFCQUFxQjt3QkFDckIsOEJBQThCO3dCQUM5Qix3QkFBd0I7d0JBQ3hCLHlCQUF5Qjt3QkFDekIsd0JBQXdCO3dCQUN4QixrQkFBa0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRTt3QkFDUCxtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3dCQUNwQiw0QkFBNEI7d0JBQzVCLHFCQUFxQjt3QkFDckIsa0JBQWtCO3FCQUNuQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQzt3QkFDbkUsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUN0QyxnQkFBZ0I7d0JBQ2hCLGNBQWM7cUJBQ2Y7b0JBQ0QsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFFBQVEsRUFBRSxpQkFBaUI7eUJBQzVCO3dCQUNELFNBQVM7cUJBQ1Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBVaU1hcE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbWFwL3NyYydcbmltcG9ydCB7IGRlZmF1bHRNYXBPcHRpb25zLCBGRUFUVVJFX01BUF9PUFRJT05TIH0gZnJvbSAnLi9jb25zdGFudCdcbmltcG9ydCB7IE1hcEluc3RhbmNlRGlyZWN0aXZlIH0gZnJvbSAnLi9tYW5hZ2VyL21hcC1pbnN0YW5jZS5kaXJlY3RpdmUnXG5pbXBvcnQgeyBNYXBDb250ZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9tYXAtY29udGV4dC9jb21wb25lbnQvbWFwLWNvbnRleHQuY29tcG9uZW50J1xuaW1wb3J0IHsgTGF5ZXJzUGFuZWxDb21wb25lbnQgfSBmcm9tICcuL2xheWVycy1wYW5lbC9sYXllcnMtcGFuZWwuY29tcG9uZW50J1xuaW1wb3J0IHsgVWlMYXlvdXRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9saWJzL3VpL2xheW91dC9zcmMnXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbidcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IEFkZExheWVyRnJvbUNhdGFsb2dDb21wb25lbnQgfSBmcm9tICcuL2FkZC1sYXllci1mcm9tLWNhdGFsb2cvYWRkLWxheWVyLWZyb20tY2F0YWxvZy5jb21wb25lbnQnXG5pbXBvcnQgeyBGZWF0dXJlU2VhcmNoTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL3NlYXJjaC9zcmMnXG5pbXBvcnQgeyBTdG9yZU1vZHVsZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJ1xuaW1wb3J0IHsgRWZmZWN0c01vZHVsZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnXG5pbXBvcnQgKiBhcyBmcm9tTWFwIGZyb20gJy4vK3N0YXRlL21hcC5yZWR1Y2VyJ1xuaW1wb3J0IHsgTWFwRWZmZWN0cyB9IGZyb20gJy4vK3N0YXRlL21hcC5lZmZlY3RzJ1xuaW1wb3J0IHsgTWFwRmFjYWRlIH0gZnJvbSAnLi8rc3RhdGUvbWFwLmZhY2FkZSdcbmltcG9ydCB7IE1hcENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vbWFwLWNvbnRhaW5lci9tYXAtY29udGFpbmVyLmNvbXBvbmVudCdcbmltcG9ydCB7IEFkZExheWVyUmVjb3JkUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4vYWRkLWxheWVyLWZyb20tY2F0YWxvZy9hZGQtbGF5ZXItcmVjb3JkLXByZXZpZXcvYWRkLWxheWVyLXJlY29yZC1wcmV2aWV3LmNvbXBvbmVudCdcbmltcG9ydCB7IFVpRWxlbWVudHNNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9saWJzL3VpL2VsZW1lbnRzL3NyYydcbmltcG9ydCB7IFVpSW5wdXRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHsgQWRkTGF5ZXJGcm9tV21zQ29tcG9uZW50IH0gZnJvbSAnLi9hZGQtbGF5ZXItZnJvbS13bXMvYWRkLWxheWVyLWZyb20td21zLmNvbXBvbmVudCdcbmltcG9ydCB7IEFkZExheWVyRnJvbUZpbGVDb21wb25lbnQgfSBmcm9tICcuL2FkZC1sYXllci1mcm9tLWZpbGUvYWRkLWxheWVyLWZyb20tZmlsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBBZGRMYXllckZyb21XZnNDb21wb25lbnQgfSBmcm9tICcuL2FkZC1sYXllci1mcm9tLXdmcy9hZGQtbGF5ZXItZnJvbS13ZnMuY29tcG9uZW50J1xuaW1wb3J0IHsgR2VvY29kaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9nZW9jb2RpbmcvZ2VvY29kaW5nLmNvbXBvbmVudCdcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgTWFwQ29udGV4dENvbXBvbmVudCxcbiAgICBNYXBJbnN0YW5jZURpcmVjdGl2ZSxcbiAgICBMYXllcnNQYW5lbENvbXBvbmVudCxcbiAgICBBZGRMYXllckZyb21DYXRhbG9nQ29tcG9uZW50LFxuICAgIE1hcENvbnRhaW5lckNvbXBvbmVudCxcbiAgICBBZGRMYXllclJlY29yZFByZXZpZXdDb21wb25lbnQsXG4gICAgQWRkTGF5ZXJGcm9tV21zQ29tcG9uZW50LFxuICAgIEFkZExheWVyRnJvbUZpbGVDb21wb25lbnQsXG4gICAgQWRkTGF5ZXJGcm9tV2ZzQ29tcG9uZW50LFxuICAgIEdlb2NvZGluZ0NvbXBvbmVudCxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIE1hcENvbnRleHRDb21wb25lbnQsXG4gICAgTWFwSW5zdGFuY2VEaXJlY3RpdmUsXG4gICAgTGF5ZXJzUGFuZWxDb21wb25lbnQsXG4gICAgQWRkTGF5ZXJGcm9tQ2F0YWxvZ0NvbXBvbmVudCxcbiAgICBNYXBDb250YWluZXJDb21wb25lbnQsXG4gICAgR2VvY29kaW5nQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFVpTWFwTW9kdWxlLFxuICAgIFVpTGF5b3V0TW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0VGFic01vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgRmVhdHVyZVNlYXJjaE1vZHVsZSxcbiAgICBTdG9yZU1vZHVsZS5mb3JGZWF0dXJlKGZyb21NYXAuTUFQX0ZFQVRVUkVfS0VZLCBmcm9tTWFwLm1hcFJlZHVjZXIpLFxuICAgIEVmZmVjdHNNb2R1bGUuZm9yRmVhdHVyZShbTWFwRWZmZWN0c10pLFxuICAgIFVpRWxlbWVudHNNb2R1bGUsXG4gICAgVWlJbnB1dHNNb2R1bGUsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEZFQVRVUkVfTUFQX09QVElPTlMsXG4gICAgICB1c2VWYWx1ZTogZGVmYXVsdE1hcE9wdGlvbnMsXG4gICAgfSxcbiAgICBNYXBGYWNhZGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZlYXR1cmVNYXBNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { queryGeoadmin } from '@geospatial-sdk/geocoding';
|
|
3
|
+
import { catchError, from, Subject, takeUntil } from 'rxjs';
|
|
4
|
+
import { debounceTime, switchMap } from 'rxjs/operators';
|
|
5
|
+
import { MapManagerService } from '../manager/map-manager.service';
|
|
6
|
+
import { fromLonLat } from 'ol/proj';
|
|
7
|
+
import { Polygon } from 'ol/geom';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../manager/map-manager.service";
|
|
10
|
+
import * as i2 from "@angular/common";
|
|
11
|
+
import * as i3 from "../../../../../ui/inputs/src/lib/search-input/search-input.component";
|
|
12
|
+
import * as i4 from "@ngx-translate/core";
|
|
13
|
+
export class GeocodingComponent {
|
|
14
|
+
constructor(mapManager) {
|
|
15
|
+
this.mapManager = mapManager;
|
|
16
|
+
this.searchText = '';
|
|
17
|
+
this.results = [];
|
|
18
|
+
this.searchTextChanged = new Subject();
|
|
19
|
+
this.destroy$ = new Subject();
|
|
20
|
+
this.searchTextChanged
|
|
21
|
+
.pipe(debounceTime(300), switchMap((searchText) => {
|
|
22
|
+
const options = {
|
|
23
|
+
origins: ['zipcode', 'gg25', 'address'],
|
|
24
|
+
limit: 6,
|
|
25
|
+
};
|
|
26
|
+
return from(queryGeoadmin(searchText, options)).pipe(catchError((error) => {
|
|
27
|
+
console.error(error);
|
|
28
|
+
return [];
|
|
29
|
+
}));
|
|
30
|
+
}), takeUntil(this.destroy$))
|
|
31
|
+
.subscribe((results) => {
|
|
32
|
+
this.results = results;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
ngOnDestroy() {
|
|
36
|
+
this.destroy$.next();
|
|
37
|
+
this.destroy$.complete();
|
|
38
|
+
}
|
|
39
|
+
onSearchChange(searchText) {
|
|
40
|
+
if (!searchText) {
|
|
41
|
+
this.clearSearch();
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
this.searchTextChanged.next(searchText);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
clearSearch() {
|
|
49
|
+
this.searchText = '';
|
|
50
|
+
this.results = [];
|
|
51
|
+
}
|
|
52
|
+
zoomToLocation(result) {
|
|
53
|
+
const map = this.mapManager.map;
|
|
54
|
+
const view = map.getView();
|
|
55
|
+
const geometry = result.geom;
|
|
56
|
+
const polygonCoords = geometry.coordinates;
|
|
57
|
+
const transformedCoords = polygonCoords[0].map((coord) => fromLonLat(coord));
|
|
58
|
+
const polygon = new Polygon([transformedCoords]);
|
|
59
|
+
view.fit(polygon, {
|
|
60
|
+
duration: 100,
|
|
61
|
+
maxZoom: 12,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
onEnterPress() {
|
|
65
|
+
if (this.results && this.results.length > 0) {
|
|
66
|
+
this.zoomToLocation(this.results[0]);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingComponent, deps: [{ token: i1.MapManagerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
70
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: GeocodingComponent, selector: "gn-ui-geocoding", ngImport: i0, template: "<gn-ui-search-input\n [(value)]=\"searchText\"\n (valueChange)=\"onSearchChange($event)\"\n (keyup.enter)=\"onEnterPress()\"\n [placeholder]=\"'map.geocoding.placeholder' | translate\"\n>\n</gn-ui-search-input>\n<ul\n class=\"bg-gray-50 border border-gray-200 w-full mt-2 shadow-sm rounded-lg\"\n *ngIf=\"results && results.length\"\n>\n <li\n *ngFor=\"let result of results\"\n (click)=\"zoomToLocation(result)\"\n class=\"flex items-center pl-8 pr-4 py-2 border-b border-gray-200 relative cursor-pointer hover:bg-blue-100 hover:text-gray-800 transition duration-300 ease-in-out\"\n >\n <svg\n class=\"stroke-current text-blue-500 absolute w-5 h-5 left-3 top-3\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z\"\n />\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M15 11a3 3 0 11-6 0 3 3 0 016 0z\"\n />\n </svg>\n <span class=\"font-sans font-semibold ml-4\">{{ result.label }}</span>\n </li>\n</ul>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.SearchInputComponent, selector: "gn-ui-search-input", inputs: ["value", "placeholder"], outputs: ["valueChange"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
71
|
+
}
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingComponent, decorators: [{
|
|
73
|
+
type: Component,
|
|
74
|
+
args: [{ selector: 'gn-ui-geocoding', template: "<gn-ui-search-input\n [(value)]=\"searchText\"\n (valueChange)=\"onSearchChange($event)\"\n (keyup.enter)=\"onEnterPress()\"\n [placeholder]=\"'map.geocoding.placeholder' | translate\"\n>\n</gn-ui-search-input>\n<ul\n class=\"bg-gray-50 border border-gray-200 w-full mt-2 shadow-sm rounded-lg\"\n *ngIf=\"results && results.length\"\n>\n <li\n *ngFor=\"let result of results\"\n (click)=\"zoomToLocation(result)\"\n class=\"flex items-center pl-8 pr-4 py-2 border-b border-gray-200 relative cursor-pointer hover:bg-blue-100 hover:text-gray-800 transition duration-300 ease-in-out\"\n >\n <svg\n class=\"stroke-current text-blue-500 absolute w-5 h-5 left-3 top-3\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z\"\n />\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M15 11a3 3 0 11-6 0 3 3 0 016 0z\"\n />\n </svg>\n <span class=\"font-sans font-semibold ml-4\">{{ result.label }}</span>\n </li>\n</ul>\n" }]
|
|
75
|
+
}], ctorParameters: function () { return [{ type: i1.MapManagerService }]; } });
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvY29kaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9nZW9jb2RpbmcvZ2VvY29kaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9nZW9jb2RpbmcvZ2VvY29kaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUE7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBbUIsTUFBTSwyQkFBMkIsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUNwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBOzs7Ozs7QUFPakMsTUFBTSxPQUFPLGtCQUFrQjtJQU03QixZQUFvQixVQUE2QjtRQUE3QixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUxqRCxlQUFVLEdBQUcsRUFBRSxDQUFBO1FBQ2YsWUFBTyxHQUFVLEVBQUUsQ0FBQTtRQUNuQixzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFBO1FBQ3pDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFBO1FBRzVCLElBQUksQ0FBQyxpQkFBaUI7YUFDbkIsSUFBSSxDQUNILFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDdkIsTUFBTSxPQUFPLEdBQW9CO2dCQUMvQixPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQztnQkFDdkMsS0FBSyxFQUFFLENBQUM7YUFDVCxDQUFBO1lBQ0QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbEQsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ3BCLE9BQU8sRUFBRSxDQUFBO1lBQ1gsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ3pCO2FBQ0EsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7UUFDeEIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBRUQsY0FBYyxDQUFDLFVBQWtCO1FBQy9CLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7WUFDbEIsT0FBTTtTQUNQO2FBQU07WUFDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1NBQ3hDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQTtRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQTtJQUNuQixDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQU07UUFDbkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUE7UUFDL0IsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQzFCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUE7UUFFNUIsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQTtRQUMxQyxNQUFNLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBRTVFLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFBO1FBRWhELElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFO1lBQ2hCLFFBQVEsRUFBRSxHQUFHO1lBQ2IsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDckM7SUFDSCxDQUFDOzhHQXBFVSxrQkFBa0I7a0dBQWxCLGtCQUFrQix1RENiL0Isa3lDQXVDQTs7MkZEMUJhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBxdWVyeUdlb2FkbWluLCBHZW9hZG1pbk9wdGlvbnMgfSBmcm9tICdAZ2Vvc3BhdGlhbC1zZGsvZ2VvY29kaW5nJ1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZnJvbSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBNYXBNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL21hbmFnZXIvbWFwLW1hbmFnZXIuc2VydmljZSdcbmltcG9ydCB7IGZyb21Mb25MYXQgfSBmcm9tICdvbC9wcm9qJ1xuaW1wb3J0IHsgUG9seWdvbiB9IGZyb20gJ29sL2dlb20nXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWdlb2NvZGluZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9nZW9jb2RpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9nZW9jb2RpbmcuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHZW9jb2RpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBzZWFyY2hUZXh0ID0gJydcbiAgcmVzdWx0czogYW55W10gPSBbXVxuICBzZWFyY2hUZXh0Q2hhbmdlZCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKVxuICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1hcE1hbmFnZXI6IE1hcE1hbmFnZXJTZXJ2aWNlKSB7XG4gICAgdGhpcy5zZWFyY2hUZXh0Q2hhbmdlZFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxuICAgICAgICBzd2l0Y2hNYXAoKHNlYXJjaFRleHQpID0+IHtcbiAgICAgICAgICBjb25zdCBvcHRpb25zOiBHZW9hZG1pbk9wdGlvbnMgPSB7XG4gICAgICAgICAgICBvcmlnaW5zOiBbJ3ppcGNvZGUnLCAnZ2cyNScsICdhZGRyZXNzJ10sXG4gICAgICAgICAgICBsaW1pdDogNixcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZyb20ocXVlcnlHZW9hZG1pbihzZWFyY2hUZXh0LCBvcHRpb25zKSkucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICAgICAgICAgIHJldHVybiBbXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdHMpID0+IHtcbiAgICAgICAgdGhpcy5yZXN1bHRzID0gcmVzdWx0c1xuICAgICAgfSlcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpXG4gIH1cblxuICBvblNlYXJjaENoYW5nZShzZWFyY2hUZXh0OiBzdHJpbmcpIHtcbiAgICBpZiAoIXNlYXJjaFRleHQpIHtcbiAgICAgIHRoaXMuY2xlYXJTZWFyY2goKVxuICAgICAgcmV0dXJuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dENoYW5nZWQubmV4dChzZWFyY2hUZXh0KVxuICAgIH1cbiAgfVxuXG4gIGNsZWFyU2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnXG4gICAgdGhpcy5yZXN1bHRzID0gW11cbiAgfVxuXG4gIHpvb21Ub0xvY2F0aW9uKHJlc3VsdCkge1xuICAgIGNvbnN0IG1hcCA9IHRoaXMubWFwTWFuYWdlci5tYXBcbiAgICBjb25zdCB2aWV3ID0gbWFwLmdldFZpZXcoKVxuICAgIGNvbnN0IGdlb21ldHJ5ID0gcmVzdWx0Lmdlb21cblxuICAgIGNvbnN0IHBvbHlnb25Db29yZHMgPSBnZW9tZXRyeS5jb29yZGluYXRlc1xuICAgIGNvbnN0IHRyYW5zZm9ybWVkQ29vcmRzID0gcG9seWdvbkNvb3Jkc1swXS5tYXAoKGNvb3JkKSA9PiBmcm9tTG9uTGF0KGNvb3JkKSlcblxuICAgIGNvbnN0IHBvbHlnb24gPSBuZXcgUG9seWdvbihbdHJhbnNmb3JtZWRDb29yZHNdKVxuXG4gICAgdmlldy5maXQocG9seWdvbiwge1xuICAgICAgZHVyYXRpb246IDEwMCxcbiAgICAgIG1heFpvb206IDEyLFxuICAgIH0pXG4gIH1cblxuICBvbkVudGVyUHJlc3MoKSB7XG4gICAgaWYgKHRoaXMucmVzdWx0cyAmJiB0aGlzLnJlc3VsdHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy56b29tVG9Mb2NhdGlvbih0aGlzLnJlc3VsdHNbMF0pXG4gICAgfVxuICB9XG59XG4iLCI8Z24tdWktc2VhcmNoLWlucHV0XG4gIFsodmFsdWUpXT1cInNlYXJjaFRleHRcIlxuICAodmFsdWVDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoJGV2ZW50KVwiXG4gIChrZXl1cC5lbnRlcik9XCJvbkVudGVyUHJlc3MoKVwiXG4gIFtwbGFjZWhvbGRlcl09XCInbWFwLmdlb2NvZGluZy5wbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuPlxuPC9nbi11aS1zZWFyY2gtaW5wdXQ+XG48dWxcbiAgY2xhc3M9XCJiZy1ncmF5LTUwIGJvcmRlciBib3JkZXItZ3JheS0yMDAgdy1mdWxsIG10LTIgc2hhZG93LXNtIHJvdW5kZWQtbGdcIlxuICAqbmdJZj1cInJlc3VsdHMgJiYgcmVzdWx0cy5sZW5ndGhcIlxuPlxuICA8bGlcbiAgICAqbmdGb3I9XCJsZXQgcmVzdWx0IG9mIHJlc3VsdHNcIlxuICAgIChjbGljayk9XCJ6b29tVG9Mb2NhdGlvbihyZXN1bHQpXCJcbiAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHBsLTggcHItNCBweS0yIGJvcmRlci1iIGJvcmRlci1ncmF5LTIwMCByZWxhdGl2ZSBjdXJzb3ItcG9pbnRlciBob3ZlcjpiZy1ibHVlLTEwMCBob3Zlcjp0ZXh0LWdyYXktODAwIHRyYW5zaXRpb24gZHVyYXRpb24tMzAwIGVhc2UtaW4tb3V0XCJcbiAgPlxuICAgIDxzdmdcbiAgICAgIGNsYXNzPVwic3Ryb2tlLWN1cnJlbnQgdGV4dC1ibHVlLTUwMCBhYnNvbHV0ZSB3LTUgaC01IGxlZnQtMyB0b3AtM1wiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgZD1cIk0xNy42NTcgMTYuNjU3TDEzLjQxNCAyMC45YTEuOTk4IDEuOTk4IDAgMDEtMi44MjcgMGwtNC4yNDQtNC4yNDNhOCA4IDAgMTExMS4zMTQgMHpcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICBkPVwiTTE1IDExYTMgMyAwIDExLTYgMCAzIDMgMCAwMTYgMHpcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgICA8c3BhbiBjbGFzcz1cImZvbnQtc2FucyBmb250LXNlbWlib2xkIG1sLTRcIj57eyByZXN1bHQubGFiZWwgfX08L3NwYW4+XG4gIDwvbGk+XG48L3VsPlxuIl19
|
|
@@ -8,6 +8,9 @@ import * as i4 from "@angular/material/icon";
|
|
|
8
8
|
import * as i5 from "@angular/material/tabs";
|
|
9
9
|
import * as i6 from "@ngx-translate/core";
|
|
10
10
|
import * as i7 from "../add-layer-from-catalog/add-layer-from-catalog.component";
|
|
11
|
+
import * as i8 from "../add-layer-from-wms/add-layer-from-wms.component";
|
|
12
|
+
import * as i9 from "../add-layer-from-file/add-layer-from-file.component";
|
|
13
|
+
import * as i10 from "../add-layer-from-wfs/add-layer-from-wfs.component";
|
|
11
14
|
export class LayersPanelComponent {
|
|
12
15
|
constructor(mapFacade) {
|
|
13
16
|
this.mapFacade = mapFacade;
|
|
@@ -17,10 +20,10 @@ export class LayersPanelComponent {
|
|
|
17
20
|
this.mapFacade.removeLayer(index);
|
|
18
21
|
}
|
|
19
22
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LayersPanelComponent, deps: [{ token: i1.MapFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LayersPanelComponent, selector: "gn-ui-layers-panel", ngImport: i0, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3
|
|
23
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LayersPanelComponent, selector: "gn-ui-layers-panel", ngImport: i0, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.ExpandablePanelButtonComponent, selector: "gn-ui-expandable-panel-button", inputs: ["titleTemplate", "collapsed"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i6.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i7.AddLayerFromCatalogComponent, selector: "gn-ui-add-layer-from-catalog" }, { kind: "component", type: i8.AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms" }, { kind: "component", type: i9.AddLayerFromFileComponent, selector: "gn-ui-add-layer-from-file" }, { kind: "component", type: i10.AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
21
24
|
}
|
|
22
25
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LayersPanelComponent, decorators: [{
|
|
23
26
|
type: Component,
|
|
24
|
-
args: [{ selector: 'gn-ui-layers-panel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3
|
|
27
|
+
args: [{ selector: 'gn-ui-layers-panel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n" }]
|
|
25
28
|
}], ctorParameters: function () { return [{ type: i1.MapFacade }]; } });
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXJzLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9sYXllcnMtcGFuZWwvbGF5ZXJzLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9sYXllcnMtcGFuZWwvbGF5ZXJzLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFBOzs7Ozs7Ozs7Ozs7QUFRaEQsTUFBTSxPQUFPLG9CQUFvQjtJQUUvQixZQUFvQixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBRHhDLFlBQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQTtJQUNXLENBQUM7SUFFNUMsV0FBVyxDQUFDLEtBQWE7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDbkMsQ0FBQzs4R0FOVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiwwRENUakMsMC9EQXVEQTs7MkZEOUNhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTWFwRmFjYWRlIH0gZnJvbSAnLi4vK3N0YXRlL21hcC5mYWNhZGUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWxheWVycy1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sYXllcnMtcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sYXllcnMtcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIExheWVyc1BhbmVsQ29tcG9uZW50IHtcbiAgbGF5ZXJzJCA9IHRoaXMubWFwRmFjYWRlLmxheWVycyRcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtYXBGYWNhZGU6IE1hcEZhY2FkZSkge31cblxuICBkZWxldGVMYXllcihpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5tYXBGYWNhZGUucmVtb3ZlTGF5ZXIoaW5kZXgpXG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJiZy13aGl0ZSByb3VuZGVkIHNoYWRvdyBzaGFkb3ctbGcgcmVsYXRpdmUgaC1mdWxsIHctWzQwMHB4XSBvdmVyZmxvdy1oaWRkZW5cIlxuPlxuICA8ZGl2IGNsYXNzPVwicC0zIGJvcmRlci1iIGJvcmRlci1ncmF5LTMwMCBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgbXItMlwiPmxheWVyczwvbWF0LWljb24+XG4gICAgPHNwYW4gdHJhbnNsYXRlPm1hcC5sYXllcnMubGlzdDwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHB4LTQgZGl2aWRlLXkgZGl2aWRlLXktZ3JheS01MFwiPlxuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj1cImxldCBsYXllciBvZiBsYXllcnMkIHwgYXN5bmM7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBweS0zXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIC1tbC0yIG1yLTIgc2hyaW5rLTBcIlxuICAgICAgICA+Y2hldnJvbl9yaWdodDwvbWF0LWljb25cbiAgICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwibXItMiBncm93XCI+e3sgbGF5ZXIudGl0bGUgfX08L3NwYW4+XG4gICAgICA8YVxuICAgICAgICBocmVmXG4gICAgICAgIGNsYXNzPVwidW5kZXJsaW5lIHRleHQtc20gdGV4dC1yZWQtNzAwIGhvdmVyOnRleHQtcmVkLTkwMFwiXG4gICAgICAgIChjbGljayk9XCJkZWxldGVMYXllcihpbmRleClcIlxuICAgICAgPlxuICAgICAgICBkZWxldGVcbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxnbi11aS1leHBhbmRhYmxlLXBhbmVsLWJ1dHRvbiBbdGl0bGVUZW1wbGF0ZV09XCJhZGRMYXllclRpdGxlXCI+XG4gICAgPG1hdC10YWItZ3JvdXAgYW5pbWF0aW9uRHVyYXRpb249XCIyMDBtc1wiIGNsYXNzPVwiaC1mdWxsXCI+XG4gICAgICA8bWF0LXRhYiBbbGFiZWxdPVwiJ21hcC5hZGQubGF5ZXIuY2F0YWxvZycgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxuICAgICAgICAgIDxnbi11aS1hZGQtbGF5ZXItZnJvbS1jYXRhbG9nPjwvZ24tdWktYWRkLWxheWVyLWZyb20tY2F0YWxvZz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgICA8bWF0LXRhYiBbbGFiZWxdPVwiJ21hcC5hZGQubGF5ZXIud21zJyB8IHRyYW5zbGF0ZVwiIGJvZHlDbGFzcz1cImgtZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XG4gICAgICAgICAgPGduLXVpLWFkZC1sYXllci1mcm9tLXdtcz48L2duLXVpLWFkZC1sYXllci1mcm9tLXdtcz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgICA8bWF0LXRhYiBbbGFiZWxdPVwiJ21hcC5hZGQubGF5ZXIud2ZzJyB8IHRyYW5zbGF0ZVwiIGJvZHlDbGFzcz1cImgtZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XG4gICAgICAgICAgPGduLXVpLWFkZC1sYXllci1mcm9tLXdmcz48L2duLXVpLWFkZC1sYXllci1mcm9tLXdmcz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgICA8bWF0LXRhYiBbbGFiZWxdPVwiJ21hcC5hZGQubGF5ZXIuZmlsZScgfCB0cmFuc2xhdGVcIiBib2R5Q2xhc3M9XCJoLWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxuICAgICAgICAgIDxnbi11aS1hZGQtbGF5ZXItZnJvbS1maWxlPjwvZ24tdWktYWRkLWxheWVyLWZyb20tZmlsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgPC9tYXQtdGFiLWdyb3VwPlxuICA8L2duLXVpLWV4cGFuZGFibGUtcGFuZWwtYnV0dG9uPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjYWRkTGF5ZXJUaXRsZT5cbiAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBtci00XCI+YWRkX2NpcmNsZTwvbWF0LWljb24+XG4gIDxzcGFuIHRyYW5zbGF0ZT5tYXAuYWRkLmxheWVyPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -28,6 +28,7 @@ export const DEFAULT_VIEW = {
|
|
|
28
28
|
center: [0, 15],
|
|
29
29
|
zoom: 2,
|
|
30
30
|
};
|
|
31
|
+
export const WFS_MAX_FEATURES = 10000;
|
|
31
32
|
export class MapContextService {
|
|
32
33
|
constructor(mapUtils, styleService) {
|
|
33
34
|
this.mapUtils = mapUtils;
|
|
@@ -86,6 +87,7 @@ export class MapContextService {
|
|
|
86
87
|
urlObj.searchParams.set('typename', layerModel.name);
|
|
87
88
|
urlObj.searchParams.set('srsname', 'EPSG:3857');
|
|
88
89
|
urlObj.searchParams.set('bbox', `${extent.join(',')},EPSG:3857`);
|
|
90
|
+
urlObj.searchParams.set('maxFeatures', WFS_MAX_FEATURES.toString());
|
|
89
91
|
return urlObj.toString();
|
|
90
92
|
},
|
|
91
93
|
strategy: bboxStrategy,
|
|
@@ -208,4 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
208
210
|
providedIn: 'root',
|
|
209
211
|
}]
|
|
210
212
|
}], ctorParameters: function () { return [{ type: i1.MapUtilsService }, { type: i2.MapStyleService }]; } });
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9tYXAtY29udGV4dC9tYXAtY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQzVELE9BQU8sRUFFTCx1QkFBdUIsR0FJeEIsTUFBTSxxQkFBcUIsQ0FBQTtBQUU1QixPQUFPLElBQUksTUFBTSxTQUFTLENBQUE7QUFFMUIsT0FBTyxXQUFXLE1BQU0saUJBQWlCLENBQUE7QUFDekMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUE7QUFDdkMsT0FBTyxTQUFTLE1BQU0sZUFBZSxDQUFBO0FBQ3JDLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQTtBQUMvQixPQUFPLFlBQVksTUFBTSxrQkFBa0IsQ0FBQTtBQUMzQyxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDNUQsT0FBTyxFQUFFLElBQUksSUFBSSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUd6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLGdCQUFnQixDQUFBO0FBQ2pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFBOzs7O0FBSTNFLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUE0QjtJQUNoRSxJQUFJLEVBQUUsdUJBQXVCLENBQUMsR0FBRztJQUNqQyxJQUFJLEVBQUU7UUFDSixxRUFBcUU7UUFDckUscUVBQXFFO1FBQ3JFLHFFQUFxRTtLQUN0RTtDQUNGLENBQUE7QUFFRCxNQUFN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SUFDbEIsQ0FBQztJQUVELHlCQUF5QixDQUFDLE1BQW1CO1FBQzNDLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRTtZQUNuQixLQUFLLEtBQUs7Z0JBQ1IsT0FBTztvQkFDTCxJQUFJLEVBQUUsS0FBSztvQkFDWCxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7b0JBQ2YsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2lCQUNsQixDQUFBO1lBQ0gsS0FBSyxLQUFLO2dCQUNSLE9BQU87b0JBQ0wsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHO29CQUNmLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtpQkFDbEIsQ0FBQTtZQUNILEtBQUssS0FBSztnQkFDUixPQUFPO29CQUNMLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtvQkFDakIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHO29CQUNmLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtpQkFDbEIsQ0FBQTtZQUNILEtBQUssU0FBUztnQkFDWixPQUFPO29CQUNMLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtvQkFDakIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO2lCQUMvRCxDQUFBO1NBQ0o7SUFDSCxDQUFDOzhHQTNMVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBNYXBTdHlsZVNlcnZpY2UgfSBmcm9tICcuLi9zdHlsZS9tYXAtc3R5bGUuc2VydmljZSdcbmltcG9ydCB7XG4gIE1hcENvbnRleHRMYXllck1vZGVsLFxuICBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bSxcbiAgTWFwQ29udGV4dExheWVyWHl6TW9kZWwsXG4gIE1hcENvbnRleHRNb2RlbCxcbiAgTWFwQ29udGV4dFZpZXdNb2RlbCxcbn0gZnJvbSAnLi9tYXAtY29udGV4dC5tb2RlbCdcbmltcG9ydCBNYXAgZnJvbSAnb2wvTWFwJ1xuaW1wb3J0IFZpZXcgZnJvbSAnb2wvVmlldydcbmltcG9ydCBMYXllciBmcm9tICdvbC9sYXllci9CYXNlJ1xuaW1wb3J0IFZlY3RvckxheWVyIGZyb20gJ29sL2xheWVyL1ZlY3RvcidcbmltcG9ydCBUaWxlV01TIGZyb20gJ29sL3NvdXJjZS9UaWxlV01TJ1xuaW1wb3J0IFRpbGVMYXllciBmcm9tICdvbC9sYXllci9UaWxlJ1xuaW1wb3J0IFhZWiBmcm9tICdvbC9zb3VyY2UvWFlaJ1xuaW1wb3J0IFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJ1xuaW1wb3J0IEdlb0pTT04gZnJvbSAnb2wvZm9ybWF0L0dlb0pTT04nXG5pbXBvcnQgeyBNYXBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi91dGlscy9tYXAtdXRpbHMuc2VydmljZSdcbmltcG9ydCB7IGJib3ggYXMgYmJveFN0cmF0ZWd5IH0gZnJvbSAnb2wvbG9hZGluZ3N0cmF0ZWd5J1xuaW1wb3J0IHsgTGF5ZXJDb25maWcsIE1hcENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9hcHAtY29uZmlnL3NyYydcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IGZyb21Mb25MYXQgfSBmcm9tICdvbC9wcm9qJ1xuaW1wb3J0IFdNVFMgZnJvbSAnb2wvc291cmNlL1dNVFMnXG5pbXBvcnQgeyByZW1vdmVTZWFyY2hQYXJhbXMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbSdcbmltcG9ydCBGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0JBU0VMQVlFUl9DT05URVhUOiBNYXBDb250ZXh0TGF5ZXJYeXpNb2RlbCA9IHtcbiAgdHlwZTogTWFwQ29udGV4dExheWVyVHlwZUVudW0uWFlaLFxuICB1cmxzOiBbXG4gICAgYGh0dHBzOi8vYS5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vcmFzdGVydGlsZXMvdm95YWdlci97en0ve3h9L3t5fS5wbmdgLFxuICAgIGBodHRwczovL2IuYmFzZW1hcHMuY2FydG9jZG4uY29tL3Jhc3RlcnRpbGVzL3ZveWFnZXIve3p9L3t4fS97eX0ucG5nYCxcbiAgICBgaHR0cHM6Ly9jLmJhc2VtYXBzLmNhcnRvY2RuLmNvbS9yYXN0ZXJ0aWxlcy92b3lhZ2VyL3t6fS97eH0ve3l9LnBuZ2AsXG4gIF0sXG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1ZJRVc6IE1hcENvbnRleHRWaWV3TW9kZWwgPSB7XG4gIGNlbnRlcjogWzAsIDE1XSxcbiAgem9vbTogMixcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1hcENvbnRleHRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtYXBVdGlsczogTWFwVXRpbHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3R5bGVTZXJ2aWNlOiBNYXBTdHlsZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHJlc2V0TWFwRnJvbUNvbnRleHQoXG4gICAgbWFwOiBNYXAsXG4gICAgbWFwQ29udGV4dDogTWFwQ29udGV4dE1vZGVsLFxuICAgIG1hcENvbmZpZz86IE1hcENvbmZpZ1xuICApOiBNYXAge1xuICAgIGlmIChtYXBDb25maWcpIHtcbiAgICAgIG1hcENvbnRleHQgPSB0aGlzLm1lcmdlTWFwQ29uZmlnV2l0aENvbnRleHQobWFwQ29udGV4dCwgbWFwQ29uZmlnKVxuICAgIH1cbiAgICBpZiAoXG4gICAgICAhbWFwQ29udGV4dC52aWV3Py5leHRlbnQgJiZcbiAgICAgICghbWFwQ29udGV4dC52aWV3Py5jZW50ZXIgfHwgIW1hcENvbnRleHQudmlldz8uem9vbSlcbiAgICApIHtcbiAgICAgIG1hcENvbnRleHQudmlldyA9IHRoaXMuZ2V0RmFsbGJhY2tWaWV3KG1hcENvbmZpZylcbiAgICB9XG4gICAgbWFwLnNldFZpZXcodGhpcy5jcmVhdGVWaWV3KG1hcENvbnRleHQudmlldywgbWFwKSlcbiAgICBtYXAuZ2V0TGF5ZXJzKCkuY2xlYXIoKVxuICAgIG1hcENvbnRleHQubGF5ZXJzLmZvckVhY2goKGxheWVyKSA9PiBtYXAuYWRkTGF5ZXIodGhpcy5jcmVhdGVMYXllcihsYXllcikpKVxuICAgIHJldHVybiBtYXBcbiAgfVxuXG4gIGNyZWF0ZUxheWVyKGxheWVyTW9kZWw6IE1hcENvbnRleHRMYXllck1vZGVsKTogTGF5ZXIge1xuICAgIGNvbnN0IHsgdHlwZSB9ID0gbGF5ZXJNb2RlbFxuICAgIGNvbnN0IHN0eWxlID0gdGhpcy5zdHlsZVNlcnZpY2Uuc3R5bGVzLmRlZmF1bHRcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgTWFwQ29udGV4dExheWVyVHlwZUVudW0uWFlaOlxuICAgICAgICByZXR1cm4gbmV3IFRpbGVMYXllcih7XG4gICAgICAgICAgc291cmNlOiBuZXcgWFlaKHtcbiAgICAgICAgICAgIHVybDogJ3VybCcgaW4gbGF5ZXJNb2RlbCA/IGxheWVyTW9kZWwudXJsIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdXJsczogJ3VybHMnIGluIGxheWVyTW9kZWwgPyBsYXllck1vZGVsLnVybHMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pXG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLldNUzpcbiAgICAgICAgcmV0dXJuIG5ldyBUaWxlTGF5ZXIoe1xuICAgICAgICAgIHNvdXJjZTogbmV3IFRpbGVXTVMoe1xuICAgICAgICAgICAgdXJsOiByZW1vdmVTZWFyY2hQYXJhbXMobGF5ZXJNb2RlbC51cmwsIFsncmVxdWVzdCcsICdzZXJ2aWNlJ10pLFxuICAgICAgICAgICAgcGFyYW1zOiB7IExBWUVSUzogbGF5ZXJNb2RlbC5uYW1lIH0sXG4gICAgICAgICAgICBndXR0ZXI6IDIwLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KVxuICAgICAgY2FzZSBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bS5XTVRTOlxuICAgICAgICByZXR1cm4gbmV3IFRpbGVMYXllcih7XG4gICAgICAgICAgc291cmNlOiBuZXcgV01UUyhsYXllck1vZGVsLm9wdGlvbnMpLFxuICAgICAgICB9KVxuICAgICAgY2FzZSBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bS5XRlM6XG4gICAgICAgIHJldHVybiBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICAgIHNvdXJjZTogbmV3IFZlY3RvclNvdXJjZSh7XG4gICAgICAgICAgICBmb3JtYXQ6IG5ldyBHZW9KU09OKCksXG4gICAgICAgICAgICB1cmw6IGZ1bmN0aW9uIChleHRlbnQpIHtcbiAgICAgICAgICAgICAgY29uc3QgdXJsT2JqID0gbmV3IFVSTChcbiAgICAgICAgICAgICAgICByZW1vdmVTZWFyY2hQYXJhbXMobGF5ZXJNb2RlbC51cmwsIFtcbiAgICAgICAgICAgICAgICAgICdzZXJ2aWNlJyxcbiAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJyxcbiAgICAgICAgICAgICAgICAgICdyZXF1ZXN0JyxcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHVybE9iai5zZWFyY2hQYXJhbXMuc2V0KCdzZXJ2aWNlJywgJ1dGUycpXG4gICAgICAgICAgICAgIHVybE9iai5zZWFyY2hQYXJhbXMuc2V0KCd2ZXJzaW9uJywgJzEuMS4wJylcbiAgICAgICAgICAgICAgdXJsT2JqLnNlYXJjaFBhcmFtcy5zZXQoJ3JlcXVlc3QnLCAnR2V0RmVhdHVyZScpXG4gICAgICAgICAgICAgIHVybE9iai5zZWFyY2hQYXJhbXMuc2V0KCdvdXRwdXRGb3JtYXQnLCAnYXBwbGljYXRpb24vanNvbicpXG4gICAgICAgICAgICAgIHVybE9iai5zZWFyY2hQYXJhbXMuc2V0KCd0eXBlbmFtZScsIGxheWVyTW9kZWwubmFtZSlcbiAgICAgICAgICAgICAgdXJsT2JqLnNlYXJjaFBhcmFtcy5zZXQoJ3Nyc25hbWUnLCAnRVBTRzozODU3JylcbiAgICAgICAgICAgICAgdXJsT2JqLnNlYXJjaFBhcmFtcy5zZXQoJ2Jib3gnLCBgJHtleHRlbnQuam9pbignLCcpfSxFUFNHOjM4NTdgKVxuICAgICAgICAgICAgICByZXR1cm4gdXJsT2JqLnRvU3RyaW5nKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdHJhdGVneTogYmJveFN0cmF0ZWd5LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHN0eWxlLFxuICAgICAgICB9KVxuICAgICAgY2FzZSBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bS5HRU9KU09OOiB7XG4gICAgICAgIGlmICgndXJsJyBpbiBsYXllck1vZGVsKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBWZWN0b3JMYXllcih7XG4gICAgICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3JTb3VyY2Uoe1xuICAgICAgICAgICAgICBmb3JtYXQ6IG5ldyBHZW9KU09OKCksXG4gICAgICAgICAgICAgIHVybDogbGF5ZXJNb2RlbC51cmwsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN0eWxlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IGdlb2pzb24gPSBsYXllck1vZGVsLmRhdGFcbiAgICAgICAgICBpZiAodHlwZW9mIGdlb2pzb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBnZW9qc29uID0gSlNPTi5wYXJzZShnZW9qc29uKVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0EgbGF5ZXIgY291bGQgbm90IGJlIGNyZWF0ZWQnLCBsYXllck1vZGVsLCBlKVxuICAgICAgICAgICAgICBnZW9qc29uID0geyB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLCBmZWF0dXJlczogW10gfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBmZWF0dXJlcyA9IHRoaXMubWFwVXRpbHMucmVhZEZlYXR1cmVDb2xsZWN0aW9uKFxuICAgICAgICAgICAgZ2VvanNvbiBhcyBGZWF0dXJlQ29sbGVjdGlvblxuICAgICAgICAgICkgYXMgRmVhdHVyZTxHZW9tZXRyeT5bXVxuICAgICAgICAgIHJldHVybiBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICAgICAgc291cmNlOiBuZXcgVmVjdG9yU291cmNlKHtcbiAgICAgICAgICAgICAgZmVhdHVyZXMsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN0eWxlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGxheWVyIHR5cGU6ICR7bGF5ZXJNb2RlbC50eXBlfWApXG4gICAgfVxuICB9XG5cbiAgY3JlYXRlVmlldyh2aWV3TW9kZWw6IE1hcENvbnRleHRWaWV3TW9kZWwsIG1hcD86IE1hcCk6IFZpZXcge1xuICAgIGNvbnN0IHsgY2VudGVyOiBjZW50ZXJJblZpZXdQcm9qLCB6b29tLCBtYXhab29tLCBtYXhFeHRlbnQgfSA9IHZpZXdNb2RlbFxuICAgIGNvbnN0IGNlbnRlciA9IGNlbnRlckluVmlld1Byb2pcbiAgICAgID8gZnJvbUxvbkxhdChjZW50ZXJJblZpZXdQcm9qLCAnRVBTRzozODU3JylcbiAgICAgIDogWzAsIDBdXG4gICAgY29uc3QgdmlldyA9IG5ldyBWaWV3KHtcbiAgICAgIGNlbnRlcixcbiAgICAgIHpvb20sXG4gICAgICBtYXhab29tLFxuICAgICAgZXh0ZW50OiBtYXhFeHRlbnQsXG4gICAgICBtdWx0aVdvcmxkOiBmYWxzZSxcbiAgICAgIGNvbnN0cmFpblJlc29sdXRpb246IHRydWUsXG4gICAgfSlcbiAgICBpZiAodmlld01vZGVsLmV4dGVudCAmJiBtYXApIHtcbiAgICAgIHZpZXcuZml0KHZpZXdNb2RlbC5leHRlbnQsIHtcbiAgICAgICAgc2l6ZTogbWFwLmdldFNpemUoKSxcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiB2aWV3XG4gIH1cblxuICBtZXJnZU1hcENvbmZpZ1dpdGhDb250ZXh0KFxuICAgIG1hcENvbnRleHQ6IE1hcENvbnRleHRNb2RlbCxcbiAgICBtYXBDb25maWc6IE1hcENvbmZpZ1xuICApOiBNYXBDb250ZXh0TW9kZWwge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5tYXBDb250ZXh0LFxuICAgICAgdmlldzoge1xuICAgICAgICAuLi5tYXBDb250ZXh0LnZpZXcsXG4gICAgICAgIC4uLihtYXBDb25maWcuTUFYX1pPT00gJiYge1xuICAgICAgICAgIG1heFpvb206IG1hcENvbmZpZy5NQVhfWk9PTSxcbiAgICAgICAgfSksXG4gICAgICAgIC4uLihtYXBDb25maWcuTUFYX0VYVEVOVCAmJiB7XG4gICAgICAgICAgbWF4RXh0ZW50OiBtYXBDb25maWcuTUFYX0VYVEVOVCxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgICAgbGF5ZXJzOiBbXG4gICAgICAgIC4uLihtYXBDb25maWcuRE9fTk9UX1VTRV9ERUZBVUxUX0JBU0VNQVBcbiAgICAgICAgICA/IFtdXG4gICAgICAgICAgOiBbREVGQVVMVF9CQVNFTEFZRVJfQ09OVEVYVF0pLFxuICAgICAgICAuLi5tYXBDb25maWcuTUFQX0xBWUVSUy5tYXAodGhpcy5nZXRDb250ZXh0TGF5ZXJGcm9tQ29uZmlnKSxcbiAgICAgICAgLi4ubWFwQ29udGV4dC5sYXllcnMsXG4gICAgICBdLFxuICAgIH1cbiAgfVxuXG4gIGdldEZhbGxiYWNrVmlldyhtYXBDb25maWc6IE1hcENvbmZpZyk6IE1hcENvbnRleHRWaWV3TW9kZWwge1xuICAgIHJldHVybiBtYXBDb25maWc/Lk1BWF9FWFRFTlRcbiAgICAgID8geyBleHRlbnQ6IG1hcENvbmZpZy5NQVhfRVhURU5UIH1cbiAgICAgIDogREVGQVVMVF9WSUVXXG4gIH1cblxuICBnZXRDb250ZXh0TGF5ZXJGcm9tQ29uZmlnKGNvbmZpZzogTGF5ZXJDb25maWcpOiBNYXBDb250ZXh0TGF5ZXJNb2RlbCB7XG4gICAgc3dpdGNoIChjb25maWcuVFlQRSkge1xuICAgICAgY2FzZSAnd21zJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAnd21zJyxcbiAgICAgICAgICB1cmw6IGNvbmZpZy5VUkwsXG4gICAgICAgICAgbmFtZTogY29uZmlnLk5BTUUsXG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ3dmcyc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3dmcycsXG4gICAgICAgICAgdXJsOiBjb25maWcuVVJMLFxuICAgICAgICAgIG5hbWU6IGNvbmZpZy5OQU1FLFxuICAgICAgICB9XG4gICAgICBjYXNlICd4eXonOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IGNvbmZpZy5UWVBFLFxuICAgICAgICAgIHVybDogY29uZmlnLlVSTCxcbiAgICAgICAgICBuYW1lOiBjb25maWcuTkFNRSxcbiAgICAgICAgfVxuICAgICAgY2FzZSAnZ2VvanNvbic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogY29uZmlnLlRZUEUsXG4gICAgICAgICAgLi4uKGNvbmZpZy5EQVRBID8geyBkYXRhOiBjb25maWcuREFUQSB9IDogeyB1cmw6IGNvbmZpZy5VUkwgfSksXG4gICAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9tYXAtY29udGV4dC9tYXAtY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQzVELE9BQU8sRUFFTCx1QkFBdUIsR0FJeEIsTUFBTSxxQkFBcUIsQ0FBQTtBQUU1QixPQUFPLElBQUksTUFBTSxTQUFTLENBQUE7QUFFMUIsT0FBTyxXQUFXLE1BQU0saUJBQWlCLENBQUE7QUFDekMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUE7QUFDdkMsT0FBTyxTQUFTLE1BQU0sZUFBZSxDQUFBO0FBQ3JDLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQTtBQUMvQixPQUFPLFlBQVksTUFBTSxrQkFBa0IsQ0FBQTtBQUMzQyxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDNUQsT0FBTyxFQUFFLElBQUksSUFBSSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUd6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLGdCQUFnQixDQUFBO0FBQ2pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFBOzs7O0FBSTNFLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUE0QjtJQUNoRSxJQUFJLEVBQUUsdUJBQXVCLENBQUMsR0FBRztJQUNqQyxJQUFJLEVBQUU7UUFDSixxRUFBcUU7UUFDckUscUVBQXFFO1FBQ3JFLHFFQUFxRTtLQUN0RTtDQUNGLENBQUE7QUFFRCxNQUFN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OlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBNYXBTdHlsZVNlcnZpY2UgfSBmcm9tICcuLi9zdHlsZS9tYXAtc3R5bGUuc2VydmljZSdcbmltcG9ydCB7XG4gIE1hcENvbnRleHRMYXllck1vZGVsLFxuICBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bSxcbiAgTWFwQ29udGV4dExheWVyWHl6TW9kZWwsXG4gIE1hcENvbnRleHRNb2RlbCxcbiAgTWFwQ29udGV4dFZpZXdNb2RlbCxcbn0gZnJvbSAnLi9tYXAtY29udGV4dC5tb2RlbCdcbmltcG9ydCBNYXAgZnJvbSAnb2wvTWFwJ1xuaW1wb3J0IFZpZXcgZnJvbSAnb2wvVmlldydcbmltcG9ydCBMYXllciBmcm9tICdvbC9sYXllci9CYXNlJ1xuaW1wb3J0IFZlY3RvckxheWVyIGZyb20gJ29sL2xheWVyL1ZlY3RvcidcbmltcG9ydCBUaWxlV01TIGZyb20gJ29sL3NvdXJjZS9UaWxlV01TJ1xuaW1wb3J0IFRpbGVMYXllciBmcm9tICdvbC9sYXllci9UaWxlJ1xuaW1wb3J0IFhZWiBmcm9tICdvbC9zb3VyY2UvWFlaJ1xuaW1wb3J0IFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJ1xuaW1wb3J0IEdlb0pTT04gZnJvbSAnb2wvZm9ybWF0L0dlb0pTT04nXG5pbXBvcnQgeyBNYXBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi91dGlscy9tYXAtdXRpbHMuc2VydmljZSdcbmltcG9ydCB7IGJib3ggYXMgYmJveFN0cmF0ZWd5IH0gZnJvbSAnb2wvbG9hZGluZ3N0cmF0ZWd5J1xuaW1wb3J0IHsgTGF5ZXJDb25maWcsIE1hcENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9hcHAtY29uZmlnL3NyYydcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IGZyb21Mb25MYXQgfSBmcm9tICdvbC9wcm9qJ1xuaW1wb3J0IFdNVFMgZnJvbSAnb2wvc291cmNlL1dNVFMnXG5pbXBvcnQgeyByZW1vdmVTZWFyY2hQYXJhbXMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbSdcbmltcG9ydCBGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0JBU0VMQVlFUl9DT05URVhUOiBNYXBDb250ZXh0TGF5ZXJYeXpNb2RlbCA9IHtcbiAgdHlwZTogTWFwQ29udGV4dExheWVyVHlwZUVudW0uWFlaLFxuICB1cmxzOiBbXG4gICAgYGh0dHBzOi8vYS5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vcmFzdGVydGlsZXMvdm95YWdlci97en0ve3h9L3t5fS5wbmdgLFxuICAgIGBodHRwczovL2IuYmFzZW1hcHMuY2FydG9jZG4uY29tL3Jhc3RlcnRpbGVzL3ZveWFnZXIve3p9L3t4fS97eX0ucG5nYCxcbiAgICBgaHR0cHM6Ly9jLmJhc2VtYXBzLmNhcnRvY2RuLmNvbS9yYXN0ZXJ0aWxlcy92b3lhZ2VyL3t6fS97eH0ve3l9LnBuZ2AsXG4gIF0sXG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1ZJRVc6IE1hcENvbnRleHRWaWV3TW9kZWwgPSB7XG4gIGNlbnRlcjogWzAsIDE1XSxcbiAgem9vbTogMixcbn1cblxuZXhwb3J0IGNvbnN0IFdGU19NQVhfRkVBVFVSRVMgPSAxMDAwMFxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTWFwQ29udGV4dFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1hcFV0aWxzOiBNYXBVdGlsc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdHlsZVNlcnZpY2U6IE1hcFN0eWxlU2VydmljZVxuICApIHt9XG5cbiAgcmVzZXRNYXBGcm9tQ29udGV4dChcbiAgICBtYXA6IE1hcCxcbiAgICBtYXBDb250ZXh0OiBNYXBDb250ZXh0TW9kZWwsXG4gICAgbWFwQ29uZmlnPzogTWFwQ29uZmlnXG4gICk6IE1hcCB7XG4gICAgaWYgKG1hcENvbmZpZykge1xuICAgICAgbWFwQ29udGV4dCA9IHRoaXMubWVyZ2VNYXBDb25maWdXaXRoQ29udGV4dChtYXBDb250ZXh0LCBtYXBDb25maWcpXG4gICAgfVxuICAgIGlmIChcbiAgICAgICFtYXBDb250ZXh0LnZpZXc/LmV4dGVudCAmJlxuICAgICAgKCFtYXBDb250ZXh0LnZpZXc/LmNlbnRlciB8fCAhbWFwQ29udGV4dC52aWV3Py56b29tKVxuICAgICkge1xuICAgICAgbWFwQ29udGV4dC52aWV3ID0gdGhpcy5nZXRGYWxsYmFja1ZpZXcobWFwQ29uZmlnKVxuICAgIH1cbiAgICBtYXAuc2V0Vmlldyh0aGlzLmNyZWF0ZVZpZXcobWFwQ29udGV4dC52aWV3LCBtYXApKVxuICAgIG1hcC5nZXRMYXllcnMoKS5jbGVhcigpXG4gICAgbWFwQ29udGV4dC5sYXllcnMuZm9yRWFjaCgobGF5ZXIpID0+IG1hcC5hZGRMYXllcih0aGlzLmNyZWF0ZUxheWVyKGxheWVyKSkpXG4gICAgcmV0dXJuIG1hcFxuICB9XG5cbiAgY3JlYXRlTGF5ZXIobGF5ZXJNb2RlbDogTWFwQ29udGV4dExheWVyTW9kZWwpOiBMYXllciB7XG4gICAgY29uc3QgeyB0eXBlIH0gPSBsYXllck1vZGVsXG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLnN0eWxlU2VydmljZS5zdHlsZXMuZGVmYXVsdFxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bS5YWVo6XG4gICAgICAgIHJldHVybiBuZXcgVGlsZUxheWVyKHtcbiAgICAgICAgICBzb3VyY2U6IG5ldyBYWVooe1xuICAgICAgICAgICAgdXJsOiAndXJsJyBpbiBsYXllck1vZGVsID8gbGF5ZXJNb2RlbC51cmwgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB1cmxzOiAndXJscycgaW4gbGF5ZXJNb2RlbCA/IGxheWVyTW9kZWwudXJscyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSlcbiAgICAgIGNhc2UgTWFwQ29udGV4dExheWVyVHlwZUVudW0uV01TOlxuICAgICAgICByZXR1cm4gbmV3IFRpbGVMYXllcih7XG4gICAgICAgICAgc291cmNlOiBuZXcgVGlsZVdNUyh7XG4gICAgICAgICAgICB1cmw6IHJlbW92ZVNlYXJjaFBhcmFtcyhsYXllck1vZGVsLnVybCwgWydyZXF1ZXN0JywgJ3NlcnZpY2UnXSksXG4gICAgICAgICAgICBwYXJhbXM6IHsgTEFZRVJTOiBsYXllck1vZGVsLm5hbWUgfSxcbiAgICAgICAgICAgIGd1dHRlcjogMjAsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pXG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLldNVFM6XG4gICAgICAgIHJldHVybiBuZXcgVGlsZUxheWVyKHtcbiAgICAgICAgICBzb3VyY2U6IG5ldyBXTVRTKGxheWVyTW9kZWwub3B0aW9ucyksXG4gICAgICAgIH0pXG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLldGUzpcbiAgICAgICAgcmV0dXJuIG5ldyBWZWN0b3JMYXllcih7XG4gICAgICAgICAgc291cmNlOiBuZXcgVmVjdG9yU291cmNlKHtcbiAgICAgICAgICAgIGZvcm1hdDogbmV3IEdlb0pTT04oKSxcbiAgICAgICAgICAgIHVybDogZnVuY3Rpb24gKGV4dGVudCkge1xuICAgICAgICAgICAgICBjb25zdCB1cmxPYmogPSBuZXcgVVJMKFxuICAgICAgICAgICAgICAgIHJlbW92ZVNlYXJjaFBhcmFtcyhsYXllck1vZGVsLnVybCwgW1xuICAgICAgICAgICAgICAgICAgJ3NlcnZpY2UnLFxuICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nLFxuICAgICAgICAgICAgICAgICAgJ3JlcXVlc3QnLFxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgdXJsT2JqLnNlYXJjaFBhcmFtcy5zZXQoJ3NlcnZpY2UnLCAnV0ZTJylcbiAgICAgICAgICAgICAgdXJsT2JqLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCAnMS4xLjAnKVxuICAgICAgICAgICAgICB1cmxPYmouc2VhcmNoUGFyYW1zLnNldCgncmVxdWVzdCcsICdHZXRGZWF0dXJlJylcbiAgICAgICAgICAgICAgdXJsT2JqLnNlYXJjaFBhcmFtcy5zZXQoJ291dHB1dEZvcm1hdCcsICdhcHBsaWNhdGlvbi9qc29uJylcbiAgICAgICAgICAgICAgdXJsT2JqLnNlYXJjaFBhcmFtcy5zZXQoJ3R5cGVuYW1lJywgbGF5ZXJNb2RlbC5uYW1lKVxuICAgICAgICAgICAgICB1cmxPYmouc2VhcmNoUGFyYW1zLnNldCgnc3JzbmFtZScsICdFUFNHOjM4NTcnKVxuICAgICAgICAgICAgICB1cmxPYmouc2VhcmNoUGFyYW1zLnNldCgnYmJveCcsIGAke2V4dGVudC5qb2luKCcsJyl9LEVQU0c6Mzg1N2ApXG4gICAgICAgICAgICAgIHVybE9iai5zZWFyY2hQYXJhbXMuc2V0KFxuICAgICAgICAgICAgICAgICdtYXhGZWF0dXJlcycsXG4gICAgICAgICAgICAgICAgV0ZTX01BWF9GRUFUVVJFUy50b1N0cmluZygpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgcmV0dXJuIHVybE9iai50b1N0cmluZygpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RyYXRlZ3k6IGJib3hTdHJhdGVneSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBzdHlsZSxcbiAgICAgICAgfSlcbiAgICAgIGNhc2UgTWFwQ29udGV4dExheWVyVHlwZUVudW0uR0VPSlNPTjoge1xuICAgICAgICBpZiAoJ3VybCcgaW4gbGF5ZXJNb2RlbCkge1xuICAgICAgICAgIHJldHVybiBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICAgICAgc291cmNlOiBuZXcgVmVjdG9yU291cmNlKHtcbiAgICAgICAgICAgICAgZm9ybWF0OiBuZXcgR2VvSlNPTigpLFxuICAgICAgICAgICAgICB1cmw6IGxheWVyTW9kZWwudXJsLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzdHlsZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBnZW9qc29uID0gbGF5ZXJNb2RlbC5kYXRhXG4gICAgICAgICAgaWYgKHR5cGVvZiBnZW9qc29uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgZ2VvanNvbiA9IEpTT04ucGFyc2UoZ2VvanNvbilcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdBIGxheWVyIGNvdWxkIG5vdCBiZSBjcmVhdGVkJywgbGF5ZXJNb2RlbCwgZSlcbiAgICAgICAgICAgICAgZ2VvanNvbiA9IHsgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJywgZmVhdHVyZXM6IFtdIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZmVhdHVyZXMgPSB0aGlzLm1hcFV0aWxzLnJlYWRGZWF0dXJlQ29sbGVjdGlvbihcbiAgICAgICAgICAgIGdlb2pzb24gYXMgRmVhdHVyZUNvbGxlY3Rpb25cbiAgICAgICAgICApIGFzIEZlYXR1cmU8R2VvbWV0cnk+W11cbiAgICAgICAgICByZXR1cm4gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgICAgIHNvdXJjZTogbmV3IFZlY3RvclNvdXJjZSh7XG4gICAgICAgICAgICAgIGZlYXR1cmVzLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzdHlsZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBsYXllciB0eXBlOiAke2xheWVyTW9kZWwudHlwZX1gKVxuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZVZpZXcodmlld01vZGVsOiBNYXBDb250ZXh0Vmlld01vZGVsLCBtYXA/OiBNYXApOiBWaWV3IHtcbiAgICBjb25zdCB7IGNlbnRlcjogY2VudGVySW5WaWV3UHJvaiwgem9vbSwgbWF4Wm9vbSwgbWF4RXh0ZW50IH0gPSB2aWV3TW9kZWxcbiAgICBjb25zdCBjZW50ZXIgPSBjZW50ZXJJblZpZXdQcm9qXG4gICAgICA/IGZyb21Mb25MYXQoY2VudGVySW5WaWV3UHJvaiwgJ0VQU0c6Mzg1NycpXG4gICAgICA6IFswLCAwXVxuICAgIGNvbnN0IHZpZXcgPSBuZXcgVmlldyh7XG4gICAgICBjZW50ZXIsXG4gICAgICB6b29tLFxuICAgICAgbWF4Wm9vbSxcbiAgICAgIGV4dGVudDogbWF4RXh0ZW50LFxuICAgICAgbXVsdGlXb3JsZDogZmFsc2UsXG4gICAgICBjb25zdHJhaW5SZXNvbHV0aW9uOiB0cnVlLFxuICAgIH0pXG4gICAgaWYgKHZpZXdNb2RlbC5leHRlbnQgJiYgbWFwKSB7XG4gICAgICB2aWV3LmZpdCh2aWV3TW9kZWwuZXh0ZW50LCB7XG4gICAgICAgIHNpemU6IG1hcC5nZXRTaXplKCksXG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gdmlld1xuICB9XG5cbiAgbWVyZ2VNYXBDb25maWdXaXRoQ29udGV4dChcbiAgICBtYXBDb250ZXh0OiBNYXBDb250ZXh0TW9kZWwsXG4gICAgbWFwQ29uZmlnOiBNYXBDb25maWdcbiAgKTogTWFwQ29udGV4dE1vZGVsIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ubWFwQ29udGV4dCxcbiAgICAgIHZpZXc6IHtcbiAgICAgICAgLi4ubWFwQ29udGV4dC52aWV3LFxuICAgICAgICAuLi4obWFwQ29uZmlnLk1BWF9aT09NICYmIHtcbiAgICAgICAgICBtYXhab29tOiBtYXBDb25maWcuTUFYX1pPT00sXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4obWFwQ29uZmlnLk1BWF9FWFRFTlQgJiYge1xuICAgICAgICAgIG1heEV4dGVudDogbWFwQ29uZmlnLk1BWF9FWFRFTlQsXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICAgIGxheWVyczogW1xuICAgICAgICAuLi4obWFwQ29uZmlnLkRPX05PVF9VU0VfREVGQVVMVF9CQVNFTUFQXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogW0RFRkFVTFRfQkFTRUxBWUVSX0NPTlRFWFRdKSxcbiAgICAgICAgLi4ubWFwQ29uZmlnLk1BUF9MQVlFUlMubWFwKHRoaXMuZ2V0Q29udGV4dExheWVyRnJvbUNvbmZpZyksXG4gICAgICAgIC4uLm1hcENvbnRleHQubGF5ZXJzLFxuICAgICAgXSxcbiAgICB9XG4gIH1cblxuICBnZXRGYWxsYmFja1ZpZXcobWFwQ29uZmlnOiBNYXBDb25maWcpOiBNYXBDb250ZXh0Vmlld01vZGVsIHtcbiAgICByZXR1cm4gbWFwQ29uZmlnPy5NQVhfRVhURU5UXG4gICAgICA/IHsgZXh0ZW50OiBtYXBDb25maWcuTUFYX0VYVEVOVCB9XG4gICAgICA6IERFRkFVTFRfVklFV1xuICB9XG5cbiAgZ2V0Q29udGV4dExheWVyRnJvbUNvbmZpZyhjb25maWc6IExheWVyQ29uZmlnKTogTWFwQ29udGV4dExheWVyTW9kZWwge1xuICAgIHN3aXRjaCAoY29uZmlnLlRZUEUpIHtcbiAgICAgIGNhc2UgJ3dtcyc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3dtcycsXG4gICAgICAgICAgdXJsOiBjb25maWcuVVJMLFxuICAgICAgICAgIG5hbWU6IGNvbmZpZy5OQU1FLFxuICAgICAgICB9XG4gICAgICBjYXNlICd3ZnMnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6ICd3ZnMnLFxuICAgICAgICAgIHVybDogY29uZmlnLlVSTCxcbiAgICAgICAgICBuYW1lOiBjb25maWcuTkFNRSxcbiAgICAgICAgfVxuICAgICAgY2FzZSAneHl6JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBjb25maWcuVFlQRSxcbiAgICAgICAgICB1cmw6IGNvbmZpZy5VUkwsXG4gICAgICAgICAgbmFtZTogY29uZmlnLk5BTUUsXG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ2dlb2pzb24nOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IGNvbmZpZy5UWVBFLFxuICAgICAgICAgIC4uLihjb25maWcuREFUQSA/IHsgZGF0YTogY29uZmlnLkRBVEEgfSA6IHsgdXJsOiBjb25maWcuVVJMIH0pLFxuICAgICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|