geonetwork-ui 2.3.0-dev.376e0e90 → 2.3.0-dev.6e2b8bea
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/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +6 -2
- package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +72 -0
- package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +7 -3
- package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +12 -7
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +2 -1
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +52 -25
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +12 -49
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +6 -2
- package/esm2022/translations/de.json +2 -0
- package/esm2022/translations/en.json +2 -0
- package/esm2022/translations/es.json +2 -0
- package/esm2022/translations/fr.json +2 -0
- package/esm2022/translations/it.json +2 -0
- package/esm2022/translations/nl.json +2 -0
- package/esm2022/translations/pt.json +2 -0
- package/fesm2022/geonetwork-ui.mjs +2574 -2491
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts.map +1 -1
- package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +23 -0
- package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/feature-map.module.d.ts +2 -1
- package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
- package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts +2 -0
- package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
- package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +10 -5
- package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +1 -1
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +2 -3
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.ts +5 -1
- package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.css +0 -0
- package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html +36 -0
- package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +80 -0
- package/src/libs/feature/map/src/lib/feature-map.module.ts +2 -0
- package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +8 -0
- package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +5 -0
- package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +10 -3
- package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +60 -32
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +17 -61
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +5 -1
- package/translations/de.json +2 -0
- package/translations/en.json +2 -0
- package/translations/es.json +2 -0
- package/translations/fr.json +2 -0
- package/translations/it.json +2 -0
- package/translations/nl.json +2 -0
- package/translations/pt.json +2 -0
- package/translations/sk.json +2 -0
|
@@ -38,7 +38,11 @@ export class AddLayerRecordPreviewComponent extends RecordPreviewComponent {
|
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
40
|
else if (link.accessServiceProtocol === 'wmts') {
|
|
41
|
-
return
|
|
41
|
+
return of({
|
|
42
|
+
url: link.url.toString(),
|
|
43
|
+
type: MapContextLayerTypeEnum.WMTS,
|
|
44
|
+
name: link.name,
|
|
45
|
+
});
|
|
42
46
|
}
|
|
43
47
|
return throwError(() => 'protocol not supported');
|
|
44
48
|
}
|
|
@@ -52,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
52
56
|
type: Component,
|
|
53
57
|
args: [{ selector: 'gn-ui-add-layer-record-preview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"w-full flex flex-row rounded-sm\" [title]=\"record.abstract\">\n <gn-ui-thumbnail\n class=\"w-16 h-16 shrink-0 border-r border-gray-200 bg-gray-100\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n\n <div class=\"flex flex-col p-2 gap-2 overflow-hidden\">\n <h1 class=\"text-sm font-medium truncate\">\n {{ record.title }}\n </h1>\n <ng-container *ngFor=\"let link of mapLinks\">\n <gn-ui-button\n [type]=\"'outline'\"\n (buttonClick)=\"handleLinkClick(link)\"\n extraClass=\"!py-[8px] !px-[12px]\"\n >\n <div class=\"text-left text-[12px] line-clamp-2\">\n {{ getLinkLabel(link) }}\n </div>\n </gn-ui-button>\n </ng-container>\n </div>\n</div>\n" }]
|
|
54
58
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.LinkClassifierService }, { type: i2.MapFacade }, { type: i3.MapUtilsService }]; } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWxheWVyLXJlY29yZC1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9hZGQtbGF5ZXItZnJvbS1jYXRhbG9nL2FkZC1sYXllci1yZWNvcmQtcHJldmlldy9hZGQtbGF5ZXItcmVjb3JkLXByZXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL21hcC9zcmMvbGliL2FkZC1sYXllci1mcm9tLWNhdGFsb2cvYWRkLWxheWVyLXJlY29yZC1wcmV2aWV3L2FkZC1sYXllci1yZWNvcmQtcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUNoRixPQUFPLEVBQ0wsWUFBWSxFQUNaLHFCQUFxQixFQUNyQixTQUFTLEdBQ1YsTUFBTSwyQ0FBMkMsQ0FBQTtBQUNsRCxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUNuRCxPQUFPLEVBRUwsdUJBQXVCLEdBQ3hCLE1BQU0scUNBQXFDLENBQUE7Ozs7Ozs7O0FBWTVDLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSxzQkFBc0I7SUFDeEUsSUFBSSxRQUFRO1FBQ1YsT0FBUSxJQUFJLENBQUMsTUFBd0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDbEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FDN0IsQ0FBQTtJQUM1QixDQUFDO0lBRUQsWUFDWSxVQUFzQixFQUN4QixjQUFxQyxFQUNyQyxTQUFvQixFQUNwQixRQUF5QjtRQUVqQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7UUFMUCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQWlCO0lBR25DLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLElBQXlCO1FBQzdDLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFBO1FBQzNELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0lBRUQsZ0JBQWdCLENBQ2QsSUFBeUI7UUFFekIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVM7WUFDekIsT0FBTyxVQUFVLENBQ2YsR0FBRyxFQUFFLENBQUMsb0RBQW9ELENBQzNELENBQUE7UUFDSCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxLQUFLLEVBQUU7WUFDeEMsT0FBTyxFQUFFLENBQUM7Z0JBQ1IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFO2dCQUN4QixJQUFJLEVBQUUsdUJBQXVCLENBQUMsR0FBRztnQkFDakMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2FBQ2hCLENBQUMsQ0FBQTtTQUNIO2FBQU0sSUFBSSxJQUFJLENBQUMscUJBQXFCLEtBQUssTUFBTSxFQUFFO1lBQ2hELE9BQU8sRUFBRSxDQUFDO2dCQUNSLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRTtnQkFDeEIsSUFBSSxFQUFFLHVCQUF1QixDQUFDLElBQUk7Z0JBQ2xDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTthQUNoQixDQUFDLENBQUE7U0FDSDtRQUNELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUE7SUFDbkQsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUF5QjtRQUNwQyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMzQixDQUFDOzhHQTlDVSw4QkFBOEI7a0dBQTlCLDhCQUE4Qiw2RkMxQjNDLDh3QkF1QkE7OzJGREdhLDhCQUE4QjtrQkFOMUMsU0FBUzsrQkFDRSxnQ0FBZ0MsbUJBR3pCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFJlY29yZFByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMnXG5pbXBvcnQge1xuICBnZXRMaW5rTGFiZWwsXG4gIExpbmtDbGFzc2lmaWVyU2VydmljZSxcbiAgTGlua1VzYWdlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgTWFwVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBNYXBGYWNhZGUgfSBmcm9tICcuLi8uLi8rc3RhdGUvbWFwLmZhY2FkZSdcbmltcG9ydCB7XG4gIE1hcENvbnRleHRMYXllck1vZGVsLFxuICBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bSxcbn0gZnJvbSAnLi4vLi4vbWFwLWNvbnRleHQvbWFwLWNvbnRleHQubW9kZWwnXG5pbXBvcnQge1xuICBEYXRhc2V0RGlzdHJpYnV0aW9uLFxuICBEYXRhc2V0UmVjb3JkLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWFkZC1sYXllci1yZWNvcmQtcHJldmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtbGF5ZXItcmVjb3JkLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hZGQtbGF5ZXItcmVjb3JkLXByZXZpZXcuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQWRkTGF5ZXJSZWNvcmRQcmV2aWV3Q29tcG9uZW50IGV4dGVuZHMgUmVjb3JkUHJldmlld0NvbXBvbmVudCB7XG4gIGdldCBtYXBMaW5rcygpOiBEYXRhc2V0RGlzdHJpYnV0aW9uW10ge1xuICAgIHJldHVybiAodGhpcy5yZWNvcmQgYXMgRGF0YXNldFJlY29yZCkuZGlzdHJpYnV0aW9ucy5maWx0ZXIoKGxpbmspID0+XG4gICAgICB0aGlzLmxpbmtDbGFzc2lmaWVyLmhhc1VzYWdlKGxpbmssIExpbmtVc2FnZS5NQVBfQVBJKVxuICAgICkgYXMgRGF0YXNldERpc3RyaWJ1dGlvbltdXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGxpbmtDbGFzc2lmaWVyOiBMaW5rQ2xhc3NpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtYXBGYWNhZGU6IE1hcEZhY2FkZSxcbiAgICBwcml2YXRlIG1hcFV0aWxzOiBNYXBVdGlsc1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZilcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZUxpbmtDbGljayhsaW5rOiBEYXRhc2V0RGlzdHJpYnV0aW9uKSB7XG4gICAgY29uc3QgbGF5ZXIgPSBhd2FpdCB0aGlzLmdldExheWVyRnJvbUxpbmsobGluaykudG9Qcm9taXNlKClcbiAgICB0aGlzLm1hcEZhY2FkZS5hZGRMYXllcih7IC4uLmxheWVyLCB0aXRsZTogdGhpcy5yZWNvcmQudGl0bGUgfSlcbiAgfVxuXG4gIGdldExheWVyRnJvbUxpbmsoXG4gICAgbGluazogRGF0YXNldERpc3RyaWJ1dGlvblxuICApOiBPYnNlcnZhYmxlPE1hcENvbnRleHRMYXllck1vZGVsPiB7XG4gICAgaWYgKGxpbmsudHlwZSAhPT0gJ3NlcnZpY2UnKVxuICAgICAgcmV0dXJuIHRocm93RXJyb3IoXG4gICAgICAgICgpID0+ICdtYXAgbGF5ZXIgY291bGQgbm90IGJlIGJ1aWx0IGZvciB0aGlzIGRpc3RyaWJ1dGlvbidcbiAgICAgIClcbiAgICBpZiAobGluay5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgPT09ICd3bXMnKSB7XG4gICAgICByZXR1cm4gb2Yoe1xuICAgICAgICB1cmw6IGxpbmsudXJsLnRvU3RyaW5nKCksXG4gICAgICAgIHR5cGU6IE1hcENvbnRleHRMYXllclR5cGVFbnVtLldNUyxcbiAgICAgICAgbmFtZTogbGluay5uYW1lLFxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKGxpbmsuYWNjZXNzU2VydmljZVByb3RvY29sID09PSAnd210cycpIHtcbiAgICAgIHJldHVybiBvZih7XG4gICAgICAgIHVybDogbGluay51cmwudG9TdHJpbmcoKSxcbiAgICAgICAgdHlwZTogTWFwQ29udGV4dExheWVyVHlwZUVudW0uV01UUyxcbiAgICAgICAgbmFtZTogbGluay5uYW1lLFxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gJ3Byb3RvY29sIG5vdCBzdXBwb3J0ZWQnKVxuICB9XG5cbiAgZ2V0TGlua0xhYmVsKGxpbms6IERhdGFzZXREaXN0cmlidXRpb24pIHtcbiAgICByZXR1cm4gZ2V0TGlua0xhYmVsKGxpbmspXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3LWZ1bGwgZmxleCBmbGV4LXJvdyByb3VuZGVkLXNtXCIgW3RpdGxlXT1cInJlY29yZC5hYnN0cmFjdFwiPlxuICA8Z24tdWktdGh1bWJuYWlsXG4gICAgY2xhc3M9XCJ3LTE2IGgtMTYgc2hyaW5rLTAgYm9yZGVyLXIgYm9yZGVyLWdyYXktMjAwIGJnLWdyYXktMTAwXCJcbiAgICBbdGh1bWJuYWlsVXJsXT1cInJlY29yZC5vdmVydmlld3M/LlswXT8udXJsLnRvU3RyaW5nKClcIlxuICA+PC9nbi11aS10aHVtYm5haWw+XG5cbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgcC0yIGdhcC0yIG92ZXJmbG93LWhpZGRlblwiPlxuICAgIDxoMSBjbGFzcz1cInRleHQtc20gZm9udC1tZWRpdW0gdHJ1bmNhdGVcIj5cbiAgICAgIHt7IHJlY29yZC50aXRsZSB9fVxuICAgIDwvaDE+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGluayBvZiBtYXBMaW5rc1wiPlxuICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICBbdHlwZV09XCInb3V0bGluZSdcIlxuICAgICAgICAoYnV0dG9uQ2xpY2spPVwiaGFuZGxlTGlua0NsaWNrKGxpbmspXCJcbiAgICAgICAgZXh0cmFDbGFzcz1cIiFweS1bOHB4XSAhcHgtWzEycHhdXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGVmdCB0ZXh0LVsxMnB4XSBsaW5lLWNsYW1wLTJcIj5cbiAgICAgICAgICB7eyBnZXRMaW5rTGFiZWwobGluaykgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2duLXVpLWJ1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Component, Output, EventEmitter, Input, ChangeDetectorRef, } from '@angular/core';
|
|
2
|
+
import { OgcApiEndpoint } from '@camptocamp/ogc-client';
|
|
3
|
+
import { Subject, debounceTime } from 'rxjs';
|
|
4
|
+
import { MapContextLayerTypeEnum, } from '../map-context/map-context.model';
|
|
5
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
6
|
+
import { UiInputsModule } from '../../../../../../libs/ui/inputs/src';
|
|
7
|
+
import { CommonModule } from '@angular/common';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/common";
|
|
10
|
+
import * as i2 from "@ngx-translate/core";
|
|
11
|
+
import * as i3 from "../../../../../ui/inputs/src/lib/button/button.component";
|
|
12
|
+
import * as i4 from "../../../../../ui/inputs/src/lib/text-input/text-input.component";
|
|
13
|
+
export class AddLayerFromOgcApiComponent {
|
|
14
|
+
constructor(changeDetectorRef) {
|
|
15
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
16
|
+
this.layerAdded = new EventEmitter();
|
|
17
|
+
this.urlChange = new Subject();
|
|
18
|
+
this.layerUrl = '';
|
|
19
|
+
this.loading = false;
|
|
20
|
+
this.layers = [];
|
|
21
|
+
this.ogcEndpoint = null;
|
|
22
|
+
this.errorMessage = null;
|
|
23
|
+
}
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
this.urlChange.pipe(debounceTime(700)).subscribe(() => {
|
|
26
|
+
this.loadLayers();
|
|
27
|
+
this.changeDetectorRef.detectChanges(); // manually trigger change detection
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
async loadLayers() {
|
|
31
|
+
this.errorMessage = null;
|
|
32
|
+
try {
|
|
33
|
+
this.loading = true;
|
|
34
|
+
if (this.ogcUrl.trim() === '') {
|
|
35
|
+
this.layers = [];
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
this.ogcEndpoint = await new OgcApiEndpoint(this.ogcUrl);
|
|
39
|
+
// Currently only supports feature collections
|
|
40
|
+
this.layers = await this.ogcEndpoint.featureCollections;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
const err = error;
|
|
44
|
+
this.layers = [];
|
|
45
|
+
this.errorMessage = 'Error loading layers: ' + err.message;
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
this.loading = false;
|
|
49
|
+
this.changeDetectorRef.markForCheck();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async addLayer(layer) {
|
|
53
|
+
this.layerUrl = await this.ogcEndpoint.getCollectionItemsUrl(layer);
|
|
54
|
+
const layerToAdd = {
|
|
55
|
+
name: layer,
|
|
56
|
+
url: this.layerUrl,
|
|
57
|
+
type: MapContextLayerTypeEnum.OGCAPI,
|
|
58
|
+
};
|
|
59
|
+
this.layerAdded.emit({ ...layerToAdd, title: layer });
|
|
60
|
+
}
|
|
61
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
62
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromOgcApiComponent, isStandalone: true, selector: "gn-ui-add-layer-from-ogc-api", inputs: { ogcUrl: "ogcUrl" }, outputs: { layerAdded: "layerAdded" }, ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.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 }}\n </p>\n <gn-ui-button\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: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: i3.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i4.TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "hint", "required"], outputs: ["valueChange"] }] }); }
|
|
63
|
+
}
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, decorators: [{
|
|
65
|
+
type: Component,
|
|
66
|
+
args: [{ selector: 'gn-ui-add-layer-from-ogc-api', standalone: true, imports: [CommonModule, TranslateModule, UiInputsModule], template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.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 }}\n </p>\n <gn-ui-button\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" }]
|
|
67
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { ogcUrl: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], layerAdded: [{
|
|
70
|
+
type: Output
|
|
71
|
+
}] } });
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWxheWVyLWZyb20tb2djLWFwaS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbWFwL3NyYy9saWIvYWRkLWxheWVyLWZyb20tb2djLWFwaS9hZGQtbGF5ZXItZnJvbS1vZ2MtYXBpLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9hZGQtbGF5ZXItZnJvbS1vZ2MtYXBpL2FkZC1sYXllci1mcm9tLW9nYy1hcGkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxNQUFNLEVBQ04sWUFBWSxFQUVaLEtBQUssRUFDTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzVDLE9BQU8sRUFFTCx1QkFBdUIsR0FDeEIsTUFBTSxrQ0FBa0MsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTs7Ozs7O0FBVTlDLE1BQU0sT0FBTywyQkFBMkI7SUFXdEMsWUFBb0IsaUJBQW9DO1FBQXBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFUOUMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFZLENBQUE7UUFFbkQsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUE7UUFDakMsYUFBUSxHQUFHLEVBQUUsQ0FBQTtRQUNiLFlBQU8sR0FBRyxLQUFLLENBQUE7UUFDZixXQUFNLEdBQWEsRUFBRSxDQUFBO1FBQ3JCLGdCQUFXLEdBQW1CLElBQUksQ0FBQTtRQUNsQyxpQkFBWSxHQUFrQixJQUFJLENBQUE7SUFFeUIsQ0FBQztJQUU1RCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNwRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7WUFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFBLENBQUMsb0NBQW9DO1FBQzdFLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUE7UUFDeEIsSUFBSTtZQUNGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1lBQ25CLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFBO2dCQUNoQixPQUFNO2FBQ1A7WUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBRXhELDhDQUE4QztZQUM5QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQTtTQUN4RDtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsTUFBTSxHQUFHLEdBQUcsS0FBYyxDQUFBO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFBO1lBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsd0JBQXdCLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQTtTQUMzRDtnQkFBUztZQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO1lBQ3BCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtTQUN0QztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFbkUsTUFBTSxVQUFVLEdBQXlCO1lBQ3ZDLElBQUksRUFBRSxLQUFLO1lBQ1gsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ2xCLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1NBQ3JDLENBQUE7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBQ3ZELENBQUM7OEdBbkRVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLDZKQzNCeEMsMmpDQW9DQSx5RERYWSxZQUFZLCtQQUFFLGVBQWUsa09BQUUsY0FBYzs7MkZBRTVDLDJCQUEyQjtrQkFQdkMsU0FBUzsrQkFDRSw4QkFBOEIsY0FHNUIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxjQUFjLENBQUM7d0dBRy9DLE1BQU07c0JBQWQsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSW5wdXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgT2djQXBpRW5kcG9pbnQgfSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuaW1wb3J0IHsgU3ViamVjdCwgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcydcbmltcG9ydCB7XG4gIE1hcENvbnRleHRMYXllck1vZGVsLFxuICBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bSxcbn0gZnJvbSAnLi4vbWFwLWNvbnRleHQvbWFwLWNvbnRleHQubW9kZWwnXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgVWlJbnB1dHNNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBNYXBMYXllciB9IGZyb20gJy4uLytzdGF0ZS9tYXAubW9kZWxzJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1hZGQtbGF5ZXItZnJvbS1vZ2MtYXBpJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1sYXllci1mcm9tLW9nYy1hcGkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hZGQtbGF5ZXItZnJvbS1vZ2MtYXBpLmNvbXBvbmVudC5jc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBVaUlucHV0c01vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFkZExheWVyRnJvbU9nY0FwaUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG9nY1VybDogc3RyaW5nXG4gIEBPdXRwdXQoKSBsYXllckFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxNYXBMYXllcj4oKVxuXG4gIHVybENoYW5nZSA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKVxuICBsYXllclVybCA9ICcnXG4gIGxvYWRpbmcgPSBmYWxzZVxuICBsYXllcnM6IHN0cmluZ1tdID0gW11cbiAgb2djRW5kcG9pbnQ6IE9nY0FwaUVuZHBvaW50ID0gbnVsbFxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cmxDaGFuZ2UucGlwZShkZWJvdW5jZVRpbWUoNzAwKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubG9hZExheWVycygpXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKSAvLyBtYW51YWxseSB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25cbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgbG9hZExheWVycygpIHtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGxcbiAgICB0cnkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgICAgaWYgKHRoaXMub2djVXJsLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgdGhpcy5sYXllcnMgPSBbXVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHRoaXMub2djRW5kcG9pbnQgPSBhd2FpdCBuZXcgT2djQXBpRW5kcG9pbnQodGhpcy5vZ2NVcmwpXG5cbiAgICAgIC8vIEN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIGZlYXR1cmUgY29sbGVjdGlvbnNcbiAgICAgIHRoaXMubGF5ZXJzID0gYXdhaXQgdGhpcy5vZ2NFbmRwb2ludC5mZWF0dXJlQ29sbGVjdGlvbnNcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgZXJyID0gZXJyb3IgYXMgRXJyb3JcbiAgICAgIHRoaXMubGF5ZXJzID0gW11cbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ0Vycm9yIGxvYWRpbmcgbGF5ZXJzOiAnICsgZXJyLm1lc3NhZ2VcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKClcbiAgICB9XG4gIH1cblxuICBhc3luYyBhZGRMYXllcihsYXllcjogc3RyaW5nKSB7XG4gICAgdGhpcy5sYXllclVybCA9IGF3YWl0IHRoaXMub2djRW5kcG9pbnQuZ2V0Q29sbGVjdGlvbkl0ZW1zVXJsKGxheWVyKVxuXG4gICAgY29uc3QgbGF5ZXJUb0FkZDogTWFwQ29udGV4dExheWVyTW9kZWwgPSB7XG4gICAgICBuYW1lOiBsYXllcixcbiAgICAgIHVybDogdGhpcy5sYXllclVybCxcbiAgICAgIHR5cGU6IE1hcENvbnRleHRMYXllclR5cGVFbnVtLk9HQ0FQSSxcbiAgICB9XG4gICAgdGhpcy5sYXllckFkZGVkLmVtaXQoeyAuLi5sYXllclRvQWRkLCB0aXRsZTogbGF5ZXIgfSlcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG1iLTVcIj5cbiAgPGduLXVpLXRleHQtaW5wdXRcbiAgICBbKHZhbHVlKV09XCJvZ2NVcmxcIlxuICAgICh2YWx1ZUNoYW5nZSk9XCJ1cmxDaGFuZ2UubmV4dCgkZXZlbnQpXCJcbiAgICBbaGludF09XCInbWFwLm9nYy51cmxJbnB1dC5oaW50JyB8IHRyYW5zbGF0ZVwiXG4gICAgY2xhc3M9XCJ3LTk2XCJcbiAgPlxuICA8L2duLXVpLXRleHQtaW5wdXQ+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZVwiIGNsYXNzPVwidGV4dC1yZWQtNTAwIG10LTJcIj5cbiAge3sgZXJyb3JNZXNzYWdlIH19XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgPHAgY2xhc3M9XCJsb2FkaW5nLW1lc3NhZ2VcIiB0cmFuc2xhdGU+bWFwLmxvYWRpbmcuc2VydmljZTwvcD5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiIWxvYWRpbmcgJiYgbGF5ZXJzLmxlbmd0aCA+IDBcIj5cbiAgPGgyIGNsYXNzPVwiZm9udC1ib2xkXCIgdHJhbnNsYXRlPm1hcC5sYXllcnMuYXZhaWxhYmxlPC9oMj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGF5ZXIgb2YgbGF5ZXJzXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBteS0yIGxheWVyLWl0ZW0tdHJlZVwiPlxuICAgICAgPHAgY2xhc3M9XCJtYXgtdy14cyBvdmVyZmxvdy1oaWRkZW4gb3ZlcmZsb3ctZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXBcIj5cbiAgICAgICAge3sgbGF5ZXIgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgY2xhc3M9XCJsYXllci1hZGQtYnRuXCJcbiAgICAgICAgdHlwZT1cInByaW1hcnlcIlxuICAgICAgICAoYnV0dG9uQ2xpY2spPVwiYWRkTGF5ZXIobGF5ZXIpXCJcbiAgICAgICAgZXh0cmFDbGFzcz1cInRleHQtc20gIXB4LTIgIXB5LTFcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgPjxzcGFuIHRyYW5zbGF0ZT4gbWFwLmxheWVyLmFkZCA8L3NwYW4+PC9nbi11aS1idXR0b25cbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -25,6 +25,7 @@ import { AddLayerFromFileComponent } from './add-layer-from-file/add-layer-from-
|
|
|
25
25
|
import { AddLayerFromWfsComponent } from './add-layer-from-wfs/add-layer-from-wfs.component';
|
|
26
26
|
import { GeocodingComponent } from './geocoding/geocoding.component';
|
|
27
27
|
import { GEOCODING_PROVIDER } from './geocoding.service';
|
|
28
|
+
import { AddLayerFromOgcApiComponent } from './add-layer-from-ogc-api/add-layer-from-ogc-api.component';
|
|
28
29
|
import * as i0 from "@angular/core";
|
|
29
30
|
import * as i1 from "@ngrx/store";
|
|
30
31
|
import * as i2 from "@ngrx/effects";
|
|
@@ -46,7 +47,8 @@ export class FeatureMapModule {
|
|
|
46
47
|
MatTabsModule,
|
|
47
48
|
TranslateModule,
|
|
48
49
|
FeatureSearchModule, i1.StoreFeatureModule, i2.EffectsFeatureModule, UiElementsModule,
|
|
49
|
-
UiInputsModule
|
|
50
|
+
UiInputsModule,
|
|
51
|
+
AddLayerFromOgcApiComponent], exports: [MapContextComponent,
|
|
50
52
|
MapInstanceDirective,
|
|
51
53
|
LayersPanelComponent,
|
|
52
54
|
AddLayerFromCatalogComponent,
|
|
@@ -72,7 +74,8 @@ export class FeatureMapModule {
|
|
|
72
74
|
StoreModule.forFeature(fromMap.MAP_FEATURE_KEY, fromMap.mapReducer),
|
|
73
75
|
EffectsModule.forFeature([MapEffects]),
|
|
74
76
|
UiElementsModule,
|
|
75
|
-
UiInputsModule
|
|
77
|
+
UiInputsModule,
|
|
78
|
+
AddLayerFromOgcApiComponent] }); }
|
|
76
79
|
}
|
|
77
80
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureMapModule, decorators: [{
|
|
78
81
|
type: NgModule,
|
|
@@ -109,6 +112,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
109
112
|
EffectsModule.forFeature([MapEffects]),
|
|
110
113
|
UiElementsModule,
|
|
111
114
|
UiInputsModule,
|
|
115
|
+
AddLayerFromOgcApiComponent,
|
|
112
116
|
],
|
|
113
117
|
providers: [
|
|
114
118
|
{
|
|
@@ -123,4 +127,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
123
127
|
],
|
|
124
128
|
}]
|
|
125
129
|
}] });
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1tYXAubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL21hcC9zcmMvbGliL2ZlYXR1cmUtbWFwLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtDQUErQyxDQUFBO0FBQ25GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQTtBQUN4RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDN0MsT0FBTyxLQUFLLE9BQU8sTUFBTSxzQkFBc0IsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNC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dEMsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLDJCQUEyQjtxQkFDNUI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFFBQVEsRUFBRSxpQkFBaUI7eUJBQzVCO3dCQUNELFNBQVM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsUUFBUSxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFzQjt5QkFDNUQ7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBVaU1hcE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbWFwL3NyYydcbmltcG9ydCB7IGRlZmF1bHRNYXBPcHRpb25zLCBGRUFUVVJFX01BUF9PUFRJT05TIH0gZnJvbSAnLi9jb25zdGFudCdcbmltcG9ydCB7IE1hcEluc3RhbmNlRGlyZWN0aXZlIH0gZnJvbSAnLi9tYW5hZ2VyL21hcC1pbnN0YW5jZS5kaXJlY3RpdmUnXG5pbXBvcnQgeyBNYXBDb250ZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9tYXAtY29udGV4dC9jb21wb25lbnQvbWFwLWNvbnRleHQuY29tcG9uZW50J1xuaW1wb3J0IHsgTGF5ZXJzUGFuZWxDb21wb25lbnQgfSBmcm9tICcuL2xheWVycy1wYW5lbC9sYXllcnMtcGFuZWwuY29tcG9uZW50J1xuaW1wb3J0IHsgVWlMYXlvdXRNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9saWJzL3VpL2xheW91dC9zcmMnXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbidcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IEFkZExheWVyRnJvbUNhdGFsb2dDb21wb25lbnQgfSBmcm9tICcuL2FkZC1sYXllci1mcm9tLWNhdGFsb2cvYWRkLWxheWVyLWZyb20tY2F0YWxvZy5jb21wb25lbnQnXG5pbXBvcnQgeyBGZWF0dXJlU2VhcmNoTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL3NlYXJjaC9zcmMnXG5pbXBvcnQgeyBTdG9yZU1vZHVsZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJ1xuaW1wb3J0IHsgRWZmZWN0c01vZHVsZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnXG5pbXBvcnQgKiBhcyBmcm9tTWFwIGZyb20gJy4vK3N0YXRlL21hcC5yZWR1Y2VyJ1xuaW1wb3J0IHsgTWFwRWZmZWN0cyB9IGZyb20gJy4vK3N0YXRlL21hcC5lZmZlY3RzJ1xuaW1wb3J0IHsgTWFwRmFjYWRlIH0gZnJvbSAnLi8rc3RhdGUvbWFwLmZhY2FkZSdcbmltcG9ydCB7IE1hcENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vbWFwLWNvbnRhaW5lci9tYXAtY29udGFpbmVyLmNvbXBvbmVudCdcbmltcG9ydCB7IEFkZExheWVyUmVjb3JkUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4vYWRkLWxheWVyLWZyb20tY2F0YWxvZy9hZGQtbGF5ZXItcmVjb3JkLXByZXZpZXcvYWRkLWxheWVyLXJlY29yZC1wcmV2aWV3LmNvbXBvbmVudCdcbmltcG9ydCB7IFVpRWxlbWVudHNNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9saWJzL3VpL2VsZW1lbnRzL3NyYydcbmltcG9ydCB7IFVpSW5wdXRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHsgQWRkTGF5ZXJGcm9tV21zQ29tcG9uZW50IH0gZnJvbSAnLi9hZGQtbGF5ZXItZnJvbS13bXMvYWRkLWxheWVyLWZyb20td21zLmNvbXBvbmVudCdcbmltcG9ydCB7IEFkZExheWVyRnJvbUZpbGVDb21wb25lbnQgfSBmcm9tICcuL2FkZC1sYXllci1mcm9tLWZpbGUvYWRkLWxheWVyLWZyb20tZmlsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBBZGRMYXllckZyb21XZnNDb21wb25lbnQgfSBmcm9tICcuL2FkZC1sYXllci1mcm9tLXdmcy9hZGQtbGF5ZXItZnJvbS13ZnMuY29tcG9uZW50J1xuaW1wb3J0IHsgR2VvY29kaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9nZW9jb2RpbmcvZ2VvY29kaW5nLmNvbXBvbmVudCdcbmltcG9ydCB7IEdFT0NPRElOR19QUk9WSURFUiwgR2VvY29kaW5nUHJvdmlkZXIgfSBmcm9tICcuL2dlb2NvZGluZy5zZXJ2aWNlJ1xuaW1wb3J0IHsgQWRkTGF5ZXJGcm9tT2djQXBpQ29tcG9uZW50IH0gZnJvbSAnLi9hZGQtbGF5ZXItZnJvbS1vZ2MtYXBpL2FkZC1sYXllci1mcm9tLW9nYy1hcGkuY29tcG9uZW50J1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBNYXBDb250ZXh0Q29tcG9uZW50LFxuICAgIE1hcEluc3RhbmNlRGlyZWN0aXZlLFxuICAgIExheWVyc1BhbmVsQ29tcG9uZW50LFxuICAgIEFkZExheWVyRnJvbUNhdGFsb2dDb21wb25lbnQsXG4gICAgTWFwQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIEFkZExheWVyUmVjb3JkUHJldmlld0NvbXBvbmVudCxcbiAgICBBZGRMYXllckZyb21XbXNDb21wb25lbnQsXG4gICAgQWRkTGF5ZXJGcm9tRmlsZUNvbXBvbmVudCxcbiAgICBBZGRMYXllckZyb21XZnNDb21wb25lbnQsXG4gICAgR2VvY29kaW5nQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgTWFwQ29udGV4dENvbXBvbmVudCxcbiAgICBNYXBJbnN0YW5jZURpcmVjdGl2ZSxcbiAgICBMYXllcnNQYW5lbENvbXBvbmVudCxcbiAgICBBZGRMYXllckZyb21DYXRhbG9nQ29tcG9uZW50LFxuICAgIE1hcENvbnRhaW5lckNvbXBvbmVudCxcbiAgICBHZW9jb2RpbmdDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVWlNYXBNb2R1bGUsXG4gICAgVWlMYXlvdXRNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRUYWJzTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBGZWF0dXJlU2VhcmNoTW9kdWxlLFxuICAgIFN0b3JlTW9kdWxlLmZvckZlYXR1cmUoZnJvbU1hcC5NQVBfRkVBVFVSRV9LRVksIGZyb21NYXAubWFwUmVkdWNlciksXG4gICAgRWZmZWN0c01vZHVsZS5mb3JGZWF0dXJlKFtNYXBFZmZlY3RzXSksXG4gICAgVWlFbGVtZW50c01vZHVsZSxcbiAgICBVaUlucHV0c01vZHVsZSxcbiAgICBBZGRMYXllckZyb21PZ2NBcGlDb21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEZFQVRVUkVfTUFQX09QVElPTlMsXG4gICAgICB1c2VWYWx1ZTogZGVmYXVsdE1hcE9wdGlvbnMsXG4gICAgfSxcbiAgICBNYXBGYWNhZGUsXG4gICAge1xuICAgICAgcHJvdmlkZTogR0VPQ09ESU5HX1BST1ZJREVSLFxuICAgICAgdXNlVmFsdWU6IFsnZ2VvbmFtZXMnLCB7IG1heFJvd3M6IDUgfV0gYXMgR2VvY29kaW5nUHJvdmlkZXIsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmVhdHVyZU1hcE1vZHVsZSB7fVxuIl19
|
|
@@ -7,23 +7,28 @@ import * as i3 from "../../../../../ui/layout/src/lib/expandable-panel-button/ex
|
|
|
7
7
|
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
|
-
import * as i7 from "../add-layer-from-
|
|
11
|
-
import * as i8 from "../add-layer-from-
|
|
12
|
-
import * as i9 from "../add-layer-from-
|
|
13
|
-
import * as i10 from "../add-layer-from-
|
|
10
|
+
import * as i7 from "../add-layer-from-ogc-api/add-layer-from-ogc-api.component";
|
|
11
|
+
import * as i8 from "../add-layer-from-catalog/add-layer-from-catalog.component";
|
|
12
|
+
import * as i9 from "../add-layer-from-wms/add-layer-from-wms.component";
|
|
13
|
+
import * as i10 from "../add-layer-from-file/add-layer-from-file.component";
|
|
14
|
+
import * as i11 from "../add-layer-from-wfs/add-layer-from-wfs.component";
|
|
14
15
|
export class LayersPanelComponent {
|
|
15
16
|
constructor(mapFacade) {
|
|
16
17
|
this.mapFacade = mapFacade;
|
|
17
18
|
this.layers$ = this.mapFacade.layers$;
|
|
19
|
+
this.ogcUrl = '';
|
|
18
20
|
}
|
|
19
21
|
deleteLayer(index) {
|
|
20
22
|
this.mapFacade.removeLayer(index);
|
|
21
23
|
}
|
|
24
|
+
addLayer(layer) {
|
|
25
|
+
this.mapFacade.addLayer(layer);
|
|
26
|
+
}
|
|
22
27
|
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 }); }
|
|
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:
|
|
28
|
+
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.ogc.api' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-ogc-api\n [ogcUrl]=\"ogcUrl\"\n (layerAdded)=\"addLayer($event)\"\n ></gn-ui-add-layer-from-ogc-api>\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.AddLayerFromOgcApiComponent, selector: "gn-ui-add-layer-from-ogc-api", inputs: ["ogcUrl"], outputs: ["layerAdded"] }, { kind: "component", type: i8.AddLayerFromCatalogComponent, selector: "gn-ui-add-layer-from-catalog" }, { kind: "component", type: i9.AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms" }, { kind: "component", type: i10.AddLayerFromFileComponent, selector: "gn-ui-add-layer-from-file" }, { kind: "component", type: i11.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 }); }
|
|
24
29
|
}
|
|
25
30
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LayersPanelComponent, decorators: [{
|
|
26
31
|
type: Component,
|
|
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" }]
|
|
32
|
+
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.ogc.api' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-ogc-api\n [ogcUrl]=\"ogcUrl\"\n (layerAdded)=\"addLayer($event)\"\n ></gn-ui-add-layer-from-ogc-api>\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" }]
|
|
28
33
|
}], ctorParameters: function () { return [{ type: i1.MapFacade }]; } });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXJzLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9sYXllcnMtcGFuZWwvbGF5ZXJzLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9sYXllcnMtcGFuZWwvbGF5ZXJzLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFBOzs7Ozs7Ozs7Ozs7O0FBUWhELE1BQU0sT0FBTyxvQkFBb0I7SUFHL0IsWUFBb0IsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUZ4QyxZQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUE7UUFDaEMsV0FBTSxHQUFHLEVBQUUsQ0FBQTtJQUNnQyxDQUFDO0lBRTVDLFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBSztRQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hDLENBQUM7OEdBWFUsb0JBQW9CO2tHQUFwQixvQkFBb0IsMERDVGpDLG96RUErREE7OzJGRHREYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0Usb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hcEZhY2FkZSB9IGZyb20gJy4uLytzdGF0ZS9tYXAuZmFjYWRlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1sYXllcnMtcGFuZWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGF5ZXJzLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGF5ZXJzLXBhbmVsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBMYXllcnNQYW5lbENvbXBvbmVudCB7XG4gIGxheWVycyQgPSB0aGlzLm1hcEZhY2FkZS5sYXllcnMkXG4gIG9nY1VybCA9ICcnXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWFwRmFjYWRlOiBNYXBGYWNhZGUpIHt9XG5cbiAgZGVsZXRlTGF5ZXIoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMubWFwRmFjYWRlLnJlbW92ZUxheWVyKGluZGV4KVxuICB9XG5cbiAgYWRkTGF5ZXIobGF5ZXIpIHtcbiAgICB0aGlzLm1hcEZhY2FkZS5hZGRMYXllcihsYXllcilcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImJnLXdoaXRlIHJvdW5kZWQgc2hhZG93IHNoYWRvdy1sZyByZWxhdGl2ZSBoLWZ1bGwgdy1bNDAwcHhdIG92ZXJmbG93LWhpZGRlblwiXG4+XG4gIDxkaXYgY2xhc3M9XCJwLTMgYm9yZGVyLWIgYm9yZGVyLWdyYXktMzAwIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBtci0yXCI+bGF5ZXJzPC9tYXQtaWNvbj5cbiAgICA8c3BhbiB0cmFuc2xhdGU+bWFwLmxheWVycy5saXN0PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgcHgtNCBkaXZpZGUteSBkaXZpZGUteS1ncmF5LTUwXCI+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IGxheWVyIG9mIGxheWVycyQgfCBhc3luYzsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IHB5LTNcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgLW1sLTIgbXItMiBzaHJpbmstMFwiXG4gICAgICAgID5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvblxuICAgICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtci0yIGdyb3dcIj57eyBsYXllci50aXRsZSB9fTwvc3Bhbj5cbiAgICAgIDxhXG4gICAgICAgIGhyZWZcbiAgICAgICAgY2xhc3M9XCJ1bmRlcmxpbmUgdGV4dC1zbSB0ZXh0LXJlZC03MDAgaG92ZXI6dGV4dC1yZWQtOTAwXCJcbiAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUxheWVyKGluZGV4KVwiXG4gICAgICA+XG4gICAgICAgIGRlbGV0ZVxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGduLXVpLWV4cGFuZGFibGUtcGFuZWwtYnV0dG9uIFt0aXRsZVRlbXBsYXRlXT1cImFkZExheWVyVGl0bGVcIj5cbiAgICA8bWF0LXRhYi1ncm91cCBhbmltYXRpb25EdXJhdGlvbj1cIjIwMG1zXCIgY2xhc3M9XCJoLWZ1bGxcIj5cbiAgICAgIDxtYXQtdGFiIFtsYWJlbF09XCInbWFwLmFkZC5sYXllci5jYXRhbG9nJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XG4gICAgICAgICAgPGduLXVpLWFkZC1sYXllci1mcm9tLWNhdGFsb2c+PC9nbi11aS1hZGQtbGF5ZXItZnJvbS1jYXRhbG9nPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LXRhYj5cbiAgICAgIDxtYXQtdGFiIFtsYWJlbF09XCInbWFwLmFkZC5sYXllci53bXMnIHwgdHJhbnNsYXRlXCIgYm9keUNsYXNzPVwiaC1mdWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cbiAgICAgICAgICA8Z24tdWktYWRkLWxheWVyLWZyb20td21zPjwvZ24tdWktYWRkLWxheWVyLWZyb20td21zPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LXRhYj5cbiAgICAgIDxtYXQtdGFiIFtsYWJlbF09XCInbWFwLmFkZC5sYXllci53ZnMnIHwgdHJhbnNsYXRlXCIgYm9keUNsYXNzPVwiaC1mdWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cbiAgICAgICAgICA8Z24tdWktYWRkLWxheWVyLWZyb20td2ZzPjwvZ24tdWktYWRkLWxheWVyLWZyb20td2ZzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LXRhYj5cbiAgICAgIDxtYXQtdGFiIFtsYWJlbF09XCInbWFwLmFkZC5sYXllci5vZ2MuYXBpJyB8IHRyYW5zbGF0ZVwiIGJvZHlDbGFzcz1cImgtZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XG4gICAgICAgICAgPGduLXVpLWFkZC1sYXllci1mcm9tLW9nYy1hcGlcbiAgICAgICAgICAgIFtvZ2NVcmxdPVwib2djVXJsXCJcbiAgICAgICAgICAgIChsYXllckFkZGVkKT1cImFkZExheWVyKCRldmVudClcIlxuICAgICAgICAgID48L2duLXVpLWFkZC1sYXllci1mcm9tLW9nYy1hcGk+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdGFiPlxuICAgICAgPG1hdC10YWIgW2xhYmVsXT1cIidtYXAuYWRkLmxheWVyLmZpbGUnIHwgdHJhbnNsYXRlXCIgYm9keUNsYXNzPVwiaC1mdWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cbiAgICAgICAgICA8Z24tdWktYWRkLWxheWVyLWZyb20tZmlsZT48L2duLXVpLWFkZC1sYXllci1mcm9tLWZpbGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdGFiPlxuICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgPC9nbi11aS1leHBhbmRhYmxlLXBhbmVsLWJ1dHRvbj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2FkZExheWVyVGl0bGU+XG4gIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgbXItNFwiPmFkZF9jaXJjbGU8L21hdC1pY29uPlxuICA8c3BhbiB0cmFuc2xhdGU+bWFwLmFkZC5sYXllcjwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -5,5 +5,6 @@ export var MapContextLayerTypeEnum;
|
|
|
5
5
|
MapContextLayerTypeEnum["WMTS"] = "wmts";
|
|
6
6
|
MapContextLayerTypeEnum["WFS"] = "wfs";
|
|
7
7
|
MapContextLayerTypeEnum["GEOJSON"] = "geojson";
|
|
8
|
+
MapContextLayerTypeEnum["OGCAPI"] = "ogcapi";
|
|
8
9
|
})(MapContextLayerTypeEnum || (MapContextLayerTypeEnum = {}));
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbWFwL3NyYy9saWIvbWFwLWNvbnRleHQvbWFwLWNvbnRleHQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxDQUFOLElBQVksdUJBT1g7QUFQRCxXQUFZLHVCQUF1QjtJQUNqQyxzQ0FBVyxDQUFBO0lBQ1gsc0NBQVcsQ0FBQTtJQUNYLHdDQUFhLENBQUE7SUFDYixzQ0FBVyxDQUFBO0lBQ1gsOENBQW1CLENBQUE7SUFDbkIsNENBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQVBXLHVCQUF1QixLQUF2Qix1QkFBdUIsUUFPbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IENvb3JkaW5hdGUgfSBmcm9tICdvbC9jb29yZGluYXRlJ1xuaW1wb3J0IHR5cGUgeyBFeHRlbnQgfSBmcm9tICdvbC9leHRlbnQnXG5cbmV4cG9ydCBlbnVtIE1hcENvbnRleHRMYXllclR5cGVFbnVtIHtcbiAgWFlaID0gJ3h5eicsXG4gIFdNUyA9ICd3bXMnLFxuICBXTVRTID0gJ3dtdHMnLFxuICBXRlMgPSAnd2ZzJyxcbiAgR0VPSlNPTiA9ICdnZW9qc29uJyxcbiAgT0dDQVBJID0gJ29nY2FwaScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwQ29udGV4dE1vZGVsIHtcbiAgbGF5ZXJzOiBNYXBDb250ZXh0TGF5ZXJNb2RlbFtdXG4gIHZpZXc/OiBNYXBDb250ZXh0Vmlld01vZGVsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwQ29udGV4dExheWVyV21zTW9kZWwge1xuICB0eXBlOiAnd21zJ1xuICB1cmw6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBDb250ZXh0TGF5ZXJXbXRzTW9kZWwge1xuICB0eXBlOiAnd210cydcbiAgdXJsOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG59XG5cbmludGVyZmFjZSBNYXBDb250ZXh0TGF5ZXJXZnNNb2RlbCB7XG4gIHR5cGU6ICd3ZnMnXG4gIHVybDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcENvbnRleHRMYXllck9nY2FwaU1vZGVsIHtcbiAgdHlwZTogJ29nY2FwaSdcbiAgdXJsOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG59XG5cbmludGVyZmFjZSBMYXllclh5ek1vZGVsIHtcbiAgdHlwZTogJ3h5eidcbiAgbmFtZT86IHN0cmluZ1xufVxuaW50ZXJmYWNlIExheWVyWHl6TW9kZWxXaXRoVXJsIGV4dGVuZHMgTGF5ZXJYeXpNb2RlbCB7XG4gIHVybDogc3RyaW5nXG4gIHVybHM/OiBuZXZlclxufVxuaW50ZXJmYWNlIExheWVyWHl6TW9kZWxXaXRoVXJscyBleHRlbmRzIExheWVyWHl6TW9kZWwge1xuICB1cmxzOiBzdHJpbmdbXVxuICB1cmw/OiBuZXZlclxufVxuZXhwb3J0IHR5cGUgTWFwQ29udGV4dExheWVyWHl6TW9kZWwgPVxuICB8IExheWVyWHl6TW9kZWxXaXRoVXJsXG4gIHwgTGF5ZXJYeXpNb2RlbFdpdGhVcmxzXG5cbmludGVyZmFjZSBMYXllckdlb2pzb24ge1xuICB0eXBlOiAnZ2VvanNvbidcbn1cbmludGVyZmFjZSBMYXllckdlb2pzb25XaXRoVXJsIGV4dGVuZHMgTGF5ZXJHZW9qc29uIHtcbiAgdXJsOiBzdHJpbmdcbiAgZGF0YT86IG5ldmVyXG59XG5pbnRlcmZhY2UgTGF5ZXJHZW9qc29uV2l0aERhdGEgZXh0ZW5kcyBMYXllckdlb2pzb24ge1xuICBkYXRhOiBGZWF0dXJlQ29sbGVjdGlvbiB8IHN0cmluZ1xuICB1cmw/OiBuZXZlclxufVxuZXhwb3J0IHR5cGUgTWFwQ29udGV4dExheWVyR2VvanNvbk1vZGVsID1cbiAgfCBMYXllckdlb2pzb25XaXRoVXJsXG4gIHwgTGF5ZXJHZW9qc29uV2l0aERhdGFcblxuZXhwb3J0IHR5cGUgTWFwQ29udGV4dExheWVyTW9kZWwgPVxuICB8IE1hcENvbnRleHRMYXllcldtc01vZGVsXG4gIHwgTWFwQ29udGV4dExheWVyV210c01vZGVsXG4gIHwgTWFwQ29udGV4dExheWVyV2ZzTW9kZWxcbiAgfCBNYXBDb250ZXh0TGF5ZXJYeXpNb2RlbFxuICB8IE1hcENvbnRleHRMYXllckdlb2pzb25Nb2RlbFxuICB8IE1hcENvbnRleHRMYXllck9nY2FwaU1vZGVsXG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwQ29udGV4dFZpZXdNb2RlbCB7XG4gIGNlbnRlcj86IENvb3JkaW5hdGUgLy8gZXhwcmVzc2VkIGluIGxvbmcvbGF0IChFUFNHOjQzMjYpXG4gIHpvb20/OiBudW1iZXJcbiAgZXh0ZW50PzogRXh0ZW50IC8vIGV4cHJlc3NlZCBpbiBsb25nL2xhdCAoRVBTRzo0MzI2KVxuICBtYXhab29tPzogbnVtYmVyXG4gIG1heEV4dGVudD86IEV4dGVudCAvLyBleHByZXNzZWQgaW4gbG9uZy9sYXQgKEVQU0c6NDMyNilcbn1cbiJdfQ==
|
|
@@ -12,7 +12,7 @@ import { MapUtilsService } from '../utils/map-utils.service';
|
|
|
12
12
|
import { bbox as bboxStrategy } from 'ol/loadingstrategy';
|
|
13
13
|
import { fromLonLat } from 'ol/proj';
|
|
14
14
|
import WMTS from 'ol/source/WMTS';
|
|
15
|
-
import {
|
|
15
|
+
import { WfsEndpoint, WmtsEndpoint } from '@camptocamp/ogc-client';
|
|
16
16
|
import * as i0 from "@angular/core";
|
|
17
17
|
import * as i1 from "../utils/map-utils.service";
|
|
18
18
|
import * as i2 from "../style/map-style.service";
|
|
@@ -54,6 +54,14 @@ export class MapContextService {
|
|
|
54
54
|
const { type } = layerModel;
|
|
55
55
|
const style = this.styleService.styles.default;
|
|
56
56
|
switch (type) {
|
|
57
|
+
case MapContextLayerTypeEnum.OGCAPI:
|
|
58
|
+
return new VectorLayer({
|
|
59
|
+
source: new VectorSource({
|
|
60
|
+
format: new GeoJSON(),
|
|
61
|
+
url: layerModel.url,
|
|
62
|
+
}),
|
|
63
|
+
style,
|
|
64
|
+
});
|
|
57
65
|
case MapContextLayerTypeEnum.XYZ:
|
|
58
66
|
return new TileLayer({
|
|
59
67
|
source: new XYZ({
|
|
@@ -64,39 +72,58 @@ export class MapContextService {
|
|
|
64
72
|
case MapContextLayerTypeEnum.WMS:
|
|
65
73
|
return new TileLayer({
|
|
66
74
|
source: new TileWMS({
|
|
67
|
-
url:
|
|
75
|
+
url: layerModel.url,
|
|
68
76
|
params: { LAYERS: layerModel.name },
|
|
69
77
|
gutter: 20,
|
|
70
78
|
}),
|
|
71
79
|
});
|
|
72
|
-
case MapContextLayerTypeEnum.WMTS:
|
|
73
|
-
|
|
74
|
-
|
|
80
|
+
case MapContextLayerTypeEnum.WMTS: {
|
|
81
|
+
// TODO: isolate this in utils service
|
|
82
|
+
const olLayer = new TileLayer({});
|
|
83
|
+
const endpoint = new WmtsEndpoint(layerModel.url);
|
|
84
|
+
endpoint.isReady().then(async (endpoint) => {
|
|
85
|
+
const layerName = endpoint.getSingleLayerName() ?? layerModel.name;
|
|
86
|
+
const layer = endpoint.getLayerByName(layerName);
|
|
87
|
+
const matrixSet = layer.matrixSets[0];
|
|
88
|
+
const tileGrid = await endpoint.getOpenLayersTileGrid(layer.name);
|
|
89
|
+
const resourceUrl = layer.resourceLinks[0];
|
|
90
|
+
const dimensions = endpoint.getDefaultDimensions(layer.name);
|
|
91
|
+
olLayer.setSource(new WMTS({
|
|
92
|
+
layer: layer.name,
|
|
93
|
+
style: layer.defaultStyle,
|
|
94
|
+
matrixSet: matrixSet.identifier,
|
|
95
|
+
format: resourceUrl.format,
|
|
96
|
+
url: resourceUrl.url,
|
|
97
|
+
requestEncoding: resourceUrl.encoding,
|
|
98
|
+
tileGrid,
|
|
99
|
+
projection: matrixSet.crs,
|
|
100
|
+
dimensions,
|
|
101
|
+
}));
|
|
75
102
|
});
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
103
|
+
return olLayer;
|
|
104
|
+
}
|
|
105
|
+
case MapContextLayerTypeEnum.WFS: {
|
|
106
|
+
const olLayer = new VectorLayer({
|
|
107
|
+
style,
|
|
108
|
+
});
|
|
109
|
+
new WfsEndpoint(layerModel.url).isReady().then((endpoint) => {
|
|
110
|
+
const featureType = endpoint.getSingleFeatureTypeName() ?? layerModel.name;
|
|
111
|
+
olLayer.setSource(new VectorSource({
|
|
79
112
|
format: new GeoJSON(),
|
|
80
113
|
url: function (extent) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
'
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
urlObj.searchParams.set('request', 'GetFeature');
|
|
89
|
-
urlObj.searchParams.set('outputFormat', 'application/json');
|
|
90
|
-
urlObj.searchParams.set('typename', layerModel.name);
|
|
91
|
-
urlObj.searchParams.set('srsname', 'EPSG:3857');
|
|
92
|
-
urlObj.searchParams.set('bbox', `${extent.join(',')},EPSG:3857`);
|
|
93
|
-
urlObj.searchParams.set('maxFeatures', WFS_MAX_FEATURES.toString());
|
|
94
|
-
return urlObj.toString();
|
|
114
|
+
return endpoint.getFeatureUrl(featureType, {
|
|
115
|
+
maxFeatures: WFS_MAX_FEATURES,
|
|
116
|
+
asJson: true,
|
|
117
|
+
outputCrs: 'EPSG:3857',
|
|
118
|
+
extent,
|
|
119
|
+
extentCrs: 'EPSG:3857',
|
|
120
|
+
});
|
|
95
121
|
},
|
|
96
122
|
strategy: bboxStrategy,
|
|
97
|
-
})
|
|
98
|
-
style,
|
|
123
|
+
}));
|
|
99
124
|
});
|
|
125
|
+
return olLayer;
|
|
126
|
+
}
|
|
100
127
|
case MapContextLayerTypeEnum.GEOJSON: {
|
|
101
128
|
if ('url' in layerModel) {
|
|
102
129
|
return new VectorLayer({
|
|
@@ -218,4 +245,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
218
245
|
providedIn: 'root',
|
|
219
246
|
}]
|
|
220
247
|
}], ctorParameters: function () { return [{ type: i1.MapUtilsService }, { type: i2.MapStyleService }]; } });
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9tYXAtY29udGV4dC9tYXAtY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQzVELE9BQU8sRUFFTCx1QkFBdUIsR0FJeEIsTUFBTSxxQkFBcUIsQ0FBQTtBQUU1QixPQUFPLElBQUksTUFBTSxTQUFTLENBQUE7QUFFMUIsT0FBTyxXQUFXLE1BQU0saUJBQWlCLENBQUE7QUFDekMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUE7QUFDdkMsT0FBTyxTQUFTLE1BQU0sZUFBZSxDQUFBO0FBQ3JDLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQTtBQUMvQixPQUFPLFlBQVksTUFBTSxrQkFBa0IsQ0FBQTtBQUMzQyxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDNUQsT0FBTyxFQUFFLElBQUksSUFBSSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUd6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLGdCQUFnQixDQUFBO0FBQ2pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFBOzs7O0FBSTNFLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUE0QjtJQUNoRSxJQUFJLEVBQUUsdUJBQXVCLENBQUMsR0FBRztJQUNqQyxJQUFJLEVBQUU7UUFDSixxRUFBcUU7UUFDckUscUVBQXFFO1FBQ3JFLHFFQUFxRTtLQUN0RTtDQUNGLENBQUE7QUFFRCxNQUFN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LEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO2lCQUMvRCxDQUFBO1NBQ0o7SUFDSCxDQUFDOzhHQXpNVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBNYXBTdHlsZVNlcnZpY2UgfSBmcm9tICcuLi9zdHlsZS9tYXAtc3R5bGUuc2VydmljZSdcbmltcG9ydCB7XG4gIE1hcENvbnRleHRMYXllck1vZGVsLFxuICBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bSxcbiAgTWFwQ29udGV4dExheWVyWHl6TW9kZWwsXG4gIE1hcENvbnRleHRNb2RlbCxcbiAgTWFwQ29udGV4dFZpZXdNb2RlbCxcbn0gZnJvbSAnLi9tYXAtY29udGV4dC5tb2RlbCdcbmltcG9ydCBNYXAgZnJvbSAnb2wvTWFwJ1xuaW1wb3J0IFZpZXcgZnJvbSAnb2wvVmlldydcbmltcG9ydCBMYXllciBmcm9tICdvbC9sYXllci9CYXNlJ1xuaW1wb3J0IFZlY3RvckxheWVyIGZyb20gJ29sL2xheWVyL1ZlY3RvcidcbmltcG9ydCBUaWxlV01TIGZyb20gJ29sL3NvdXJjZS9UaWxlV01TJ1xuaW1wb3J0IFRpbGVMYXllciBmcm9tICdvbC9sYXllci9UaWxlJ1xuaW1wb3J0IFhZWiBmcm9tICdvbC9zb3VyY2UvWFlaJ1xuaW1wb3J0IFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJ1xuaW1wb3J0IEdlb0pTT04gZnJvbSAnb2wvZm9ybWF0L0dlb0pTT04nXG5pbXBvcnQgeyBNYXBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi91dGlscy9tYXAtdXRpbHMuc2VydmljZSdcbmltcG9ydCB7IGJib3ggYXMgYmJveFN0cmF0ZWd5IH0gZnJvbSAnb2wvbG9hZGluZ3N0cmF0ZWd5J1xuaW1wb3J0IHsgTGF5ZXJDb25maWcsIE1hcENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9hcHAtY29uZmlnL3NyYydcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IGZyb21Mb25MYXQgfSBmcm9tICdvbC9wcm9qJ1xuaW1wb3J0IFdNVFMgZnJvbSAnb2wvc291cmNlL1dNVFMnXG5pbXBvcnQgeyByZW1vdmVTZWFyY2hQYXJhbXMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbSdcbmltcG9ydCBGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0JBU0VMQVlFUl9DT05URVhUOiBNYXBDb250ZXh0TGF5ZXJYeXpNb2RlbCA9IHtcbiAgdHlwZTogTWFwQ29udGV4dExheWVyVHlwZUVudW0uWFlaLFxuICB1cmxzOiBbXG4gICAgYGh0dHBzOi8vYS5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vcmFzdGVydGlsZXMvdm95YWdlci97en0ve3h9L3t5fS5wbmdgLFxuICAgIGBodHRwczovL2IuYmFzZW1hcHMuY2FydG9jZG4uY29tL3Jhc3RlcnRpbGVzL3ZveWFnZXIve3p9L3t4fS97eX0ucG5nYCxcbiAgICBgaHR0cHM6Ly9jLmJhc2VtYXBzLmNhcnRvY2RuLmNvbS9yYXN0ZXJ0aWxlcy92b3lhZ2VyL3t6fS97eH0ve3l9LnBuZ2AsXG4gIF0sXG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1ZJRVc6IE1hcENvbnRleHRWaWV3TW9kZWwgPSB7XG4gIGNlbnRlcjogWzAsIDE1XSxcbiAgem9vbTogMixcbn1cblxuZXhwb3J0IGNvbnN0IFdGU19NQVhfRkVBVFVSRVMgPSAxMDAwMFxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTWFwQ29udGV4dFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1hcFV0aWxzOiBNYXBVdGlsc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdHlsZVNlcnZpY2U6IE1hcFN0eWxlU2VydmljZVxuICApIHt9XG5cbiAgcmVzZXRNYXBGcm9tQ29udGV4dChcbiAgICBtYXA6IE1hcCxcbiAgICBtYXBDb250ZXh0OiBNYXBDb250ZXh0TW9kZWwsXG4gICAgbWFwQ29uZmlnPzogTWFwQ29uZmlnXG4gICk6IE1hcCB7XG4gICAgaWYgKG1hcENvbmZpZykge1xuICAgICAgbWFwQ29udGV4dCA9IHRoaXMubWVyZ2VNYXBDb25maWdXaXRoQ29udGV4dChtYXBDb250ZXh0LCBtYXBDb25maWcpXG4gICAgfSBlbHNlIHtcbiAgICAgIG1hcENvbnRleHQubGF5ZXJzID0gdGhpcy5hZGREZWZhdWx0QmFzZWxheWVyQ29udGV4dChtYXBDb250ZXh0LmxheWVycylcbiAgICB9XG4gICAgaWYgKFxuICAgICAgIW1hcENvbnRleHQudmlldz8uZXh0ZW50ICYmXG4gICAgICAoIW1hcENvbnRleHQudmlldz8uY2VudGVyIHx8ICFtYXBDb250ZXh0LnZpZXc/Lnpvb20pXG4gICAgKSB7XG4gICAgICBtYXBDb250ZXh0LnZpZXcgPSB0aGlzLmdldEZhbGxiYWNrVmlldyhtYXBDb25maWcpXG4gICAgfVxuICAgIG1hcC5zZXRWaWV3KHRoaXMuY3JlYXRlVmlldyhtYXBDb250ZXh0LnZpZXcsIG1hcCkpXG4gICAgbWFwLmdldExheWVycygpLmNsZWFyKClcbiAgICBtYXBDb250ZXh0LmxheWVycy5mb3JFYWNoKChsYXllcikgPT4gbWFwLmFkZExheWVyKHRoaXMuY3JlYXRlTGF5ZXIobGF5ZXIpKSlcbiAgICByZXR1cm4gbWFwXG4gIH1cblxuICBjcmVhdGVMYXllcihsYXllck1vZGVsOiBNYXBDb250ZXh0TGF5ZXJNb2RlbCk6IExheWVyIHtcbiAgICBjb25zdCB7IHR5cGUgfSA9IGxheWVyTW9kZWxcbiAgICBjb25zdCBzdHlsZSA9IHRoaXMuc3R5bGVTZXJ2aWNlLnN0eWxlcy5kZWZhdWx0XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLlhZWjpcbiAgICAgICAgcmV0dXJuIG5ldyBUaWxlTGF5ZXIoe1xuICAgICAgICAgIHNvdXJjZTogbmV3IFhZWih7XG4gICAgICAgICAgICB1cmw6ICd1cmwnIGluIGxheWVyTW9kZWwgPyBsYXllck1vZGVsLnVybCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVybHM6ICd1cmxzJyBpbiBsYXllck1vZGVsID8gbGF5ZXJNb2RlbC51cmxzIDogdW5kZWZpbmVkLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KVxuICAgICAgY2FzZSBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bS5XTVM6XG4gICAgICAgIHJldHVybiBuZXcgVGlsZUxheWVyKHtcbiAgICAgICAgICBzb3VyY2U6IG5ldyBUaWxlV01TKHtcbiAgICAgICAgICAgIHVybDogcmVtb3ZlU2VhcmNoUGFyYW1zKGxheWVyTW9kZWwudXJsLCBbJ3JlcXVlc3QnLCAnc2VydmljZSddKSxcbiAgICAgICAgICAgIHBhcmFtczogeyBMQVlFUlM6IGxheWVyTW9kZWwubmFtZSB9LFxuICAgICAgICAgICAgZ3V0dGVyOiAyMCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSlcbiAgICAgIGNhc2UgTWFwQ29udGV4dExheWVyVHlwZUVudW0uV01UUzpcbiAgICAgICAgcmV0dXJuIG5ldyBUaWxlTGF5ZXIoe1xuICAgICAgICAgIHNvdXJjZTogbmV3IFdNVFMobGF5ZXJNb2RlbC5vcHRpb25zKSxcbiAgICAgICAgfSlcbiAgICAgIGNhc2UgTWFwQ29udGV4dExheWVyVHlwZUVudW0uV0ZTOlxuICAgICAgICByZXR1cm4gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3JTb3VyY2Uoe1xuICAgICAgICAgICAgZm9ybWF0OiBuZXcgR2VvSlNPTigpLFxuICAgICAgICAgICAgdXJsOiBmdW5jdGlvbiAoZXh0ZW50KSB7XG4gICAgICAgICAgICAgIGNvbnN0IHVybE9iaiA9IG5ldyBVUkwoXG4gICAgICAgICAgICAgICAgcmVtb3ZlU2VhcmNoUGFyYW1zKGxheWVyTW9kZWwudXJsLCBbXG4gICAgICAgICAgICAgICAgICAnc2VydmljZScsXG4gICAgICAgICAgICAgICAgICAndmVyc2lvbicsXG4gICAgICAgICAgICAgICAgICAncmVxdWVzdCcsXG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB1cmxPYmouc2VhcmNoUGFyYW1zLnNldCgnc2VydmljZScsICdXRlMnKVxuICAgICAgICAgICAgICB1cmxPYmouc2VhcmNoUGFyYW1zLnNldCgndmVyc2lvbicsICcxLjEuMCcpXG4gICAgICAgICAgICAgIHVybE9iai5zZWFyY2hQYXJhbXMuc2V0KCdyZXF1ZXN0JywgJ0dldEZlYXR1cmUnKVxuICAgICAgICAgICAgICB1cmxPYmouc2VhcmNoUGFyYW1zLnNldCgnb3V0cHV0Rm9ybWF0JywgJ2FwcGxpY2F0aW9uL2pzb24nKVxuICAgICAgICAgICAgICB1cmxPYmouc2VhcmNoUGFyYW1zLnNldCgndHlwZW5hbWUnLCBsYXllck1vZGVsLm5hbWUpXG4gICAgICAgICAgICAgIHVybE9iai5zZWFyY2hQYXJhbXMuc2V0KCdzcnNuYW1lJywgJ0VQU0c6Mzg1NycpXG4gICAgICAgICAgICAgIHVybE9iai5zZWFyY2hQYXJhbXMuc2V0KCdiYm94JywgYCR7ZXh0ZW50LmpvaW4oJywnKX0sRVBTRzozODU3YClcbiAgICAgICAgICAgICAgdXJsT2JqLnNlYXJjaFBhcmFtcy5zZXQoXG4gICAgICAgICAgICAgICAgJ21heEZlYXR1cmVzJyxcbiAgICAgICAgICAgICAgICBXRlNfTUFYX0ZFQVRVUkVTLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICByZXR1cm4gdXJsT2JqLnRvU3RyaW5nKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdHJhdGVneTogYmJveFN0cmF0ZWd5LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHN0eWxlLFxuICAgICAgICB9KVxuICAgICAgY2FzZSBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bS5HRU9KU09OOiB7XG4gICAgICAgIGlmICgndXJsJyBpbiBsYXllck1vZGVsKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBWZWN0b3JMYXllcih7XG4gICAgICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3JTb3VyY2Uoe1xuICAgICAgICAgICAgICBmb3JtYXQ6IG5ldyBHZW9KU09OKCksXG4gICAgICAgICAgICAgIHVybDogbGF5ZXJNb2RlbC51cmwsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN0eWxlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IGdlb2pzb24gPSBsYXllck1vZGVsLmRhdGFcbiAgICAgICAgICBpZiAodHlwZW9mIGdlb2pzb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBnZW9qc29uID0gSlNPTi5wYXJzZShnZW9qc29uKVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0EgbGF5ZXIgY291bGQgbm90IGJlIGNyZWF0ZWQnLCBsYXllck1vZGVsLCBlKVxuICAgICAgICAgICAgICBnZW9qc29uID0geyB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLCBmZWF0dXJlczogW10gfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBmZWF0dXJlcyA9IHRoaXMubWFwVXRpbHMucmVhZEZlYXR1cmVDb2xsZWN0aW9uKFxuICAgICAgICAgICAgZ2VvanNvbiBhcyBGZWF0dXJlQ29sbGVjdGlvblxuICAgICAgICAgICkgYXMgRmVhdHVyZTxHZW9tZXRyeT5bXVxuICAgICAgICAgIHJldHVybiBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICAgICAgc291cmNlOiBuZXcgVmVjdG9yU291cmNlKHtcbiAgICAgICAgICAgICAgZmVhdHVyZXMsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN0eWxlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGxheWVyIHR5cGU6ICR7bGF5ZXJNb2RlbC50eXBlfWApXG4gICAgfVxuICB9XG5cbiAgY3JlYXRlVmlldyh2aWV3TW9kZWw6IE1hcENvbnRleHRWaWV3TW9kZWwsIG1hcD86IE1hcCk6IFZpZXcge1xuICAgIGNvbnN0IHsgY2VudGVyOiBjZW50ZXJJblZpZXdQcm9qLCB6b29tLCBtYXhab29tLCBtYXhFeHRlbnQgfSA9IHZpZXdNb2RlbFxuICAgIGNvbnN0IGNlbnRlciA9IGNlbnRlckluVmlld1Byb2pcbiAgICAgID8gZnJvbUxvbkxhdChjZW50ZXJJblZpZXdQcm9qLCAnRVBTRzozODU3JylcbiAgICAgIDogWzAsIDBdXG4gICAgY29uc3QgdmlldyA9IG5ldyBWaWV3KHtcbiAgICAgIGNlbnRlcixcbiAgICAgIHpvb20sXG4gICAgICBtYXhab29tLFxuICAgICAgZXh0ZW50OiBtYXhFeHRlbnQsXG4gICAgICBtdWx0aVdvcmxkOiBmYWxzZSxcbiAgICAgIGNvbnN0cmFpblJlc29sdXRpb246IHRydWUsXG4gICAgfSlcbiAgICBpZiAodmlld01vZGVsLmV4dGVudCAmJiBtYXApIHtcbiAgICAgIHZpZXcuZml0KHZpZXdNb2RlbC5leHRlbnQsIHtcbiAgICAgICAgc2l6ZTogbWFwLmdldFNpemUoKSxcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiB2aWV3XG4gIH1cblxuICBhZGREZWZhdWx0QmFzZWxheWVyQ29udGV4dChcbiAgICBsYXllcnM6IE1hcENvbnRleHRMYXllck1vZGVsW11cbiAgKTogTWFwQ29udGV4dExheWVyTW9kZWxbXSB7XG4gICAgcmV0dXJuIGxheWVycy5pbmNsdWRlcyhERUZBVUxUX0JBU0VMQVlFUl9DT05URVhUKVxuICAgICAgPyBsYXllcnNcbiAgICAgIDogW0RFRkFVTFRfQkFTRUxBWUVSX0NPTlRFWFQsIC4uLmxheWVyc11cbiAgfVxuXG4gIG1lcmdlTWFwQ29uZmlnV2l0aENvbnRleHQoXG4gICAgbWFwQ29udGV4dDogTWFwQ29udGV4dE1vZGVsLFxuICAgIG1hcENvbmZpZzogTWFwQ29uZmlnXG4gICk6IE1hcENvbnRleHRNb2RlbCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm1hcENvbnRleHQsXG4gICAgICB2aWV3OiB7XG4gICAgICAgIC4uLm1hcENvbnRleHQudmlldyxcbiAgICAgICAgLi4uKG1hcENvbmZpZy5NQVhfWk9PTSAmJiB7XG4gICAgICAgICAgbWF4Wm9vbTogbWFwQ29uZmlnLk1BWF9aT09NLFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uKG1hcENvbmZpZy5NQVhfRVhURU5UICYmIHtcbiAgICAgICAgICBtYXhFeHRlbnQ6IG1hcENvbmZpZy5NQVhfRVhURU5ULFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgICBsYXllcnM6IFtcbiAgICAgICAgLi4uKG1hcENvbmZpZy5ET19OT1RfVVNFX0RFRkFVTFRfQkFTRU1BUFxuICAgICAgICAgID8gW11cbiAgICAgICAgICA6IFtERUZBVUxUX0JBU0VMQVlFUl9DT05URVhUXSksXG4gICAgICAgIC4uLm1hcENvbmZpZy5NQVBfTEFZRVJTLm1hcCh0aGlzLmdldENvbnRleHRMYXllckZyb21Db25maWcpLFxuICAgICAgICAuLi5tYXBDb250ZXh0LmxheWVycyxcbiAgICAgIF0sXG4gICAgfVxuICB9XG5cbiAgZ2V0RmFsbGJhY2tWaWV3KG1hcENvbmZpZzogTWFwQ29uZmlnKTogTWFwQ29udGV4dFZpZXdNb2RlbCB7XG4gICAgcmV0dXJuIG1hcENvbmZpZz8uTUFYX0VYVEVOVFxuICAgICAgPyB7IGV4dGVudDogbWFwQ29uZmlnLk1BWF9FWFRFTlQgfVxuICAgICAgOiBERUZBVUxUX1ZJRVdcbiAgfVxuXG4gIGdldENvbnRleHRMYXllckZyb21Db25maWcoY29uZmlnOiBMYXllckNvbmZpZyk6IE1hcENvbnRleHRMYXllck1vZGVsIHtcbiAgICBzd2l0Y2ggKGNvbmZpZy5UWVBFKSB7XG4gICAgICBjYXNlICd3bXMnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6ICd3bXMnLFxuICAgICAgICAgIHVybDogY29uZmlnLlVSTCxcbiAgICAgICAgICBuYW1lOiBjb25maWcuTkFNRSxcbiAgICAgICAgfVxuICAgICAgY2FzZSAnd2ZzJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiAnd2ZzJyxcbiAgICAgICAgICB1cmw6IGNvbmZpZy5VUkwsXG4gICAgICAgICAgbmFtZTogY29uZmlnLk5BTUUsXG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ3h5eic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogY29uZmlnLlRZUEUsXG4gICAgICAgICAgdXJsOiBjb25maWcuVVJMLFxuICAgICAgICAgIG5hbWU6IGNvbmZpZy5OQU1FLFxuICAgICAgICB9XG4gICAgICBjYXNlICdnZW9qc29uJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBjb25maWcuVFlQRSxcbiAgICAgICAgICAuLi4oY29uZmlnLkRBVEEgPyB7IGRhdGE6IGNvbmZpZy5EQVRBIH0gOiB7IHVybDogY29uZmlnLlVSTCB9KSxcbiAgICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjL2xpYi9tYXAtY29udGV4dC9tYXAtY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQzVELE9BQU8sRUFFTCx1QkFBdUIsR0FJeEIsTUFBTSxxQkFBcUIsQ0FBQTtBQUU1QixPQUFPLElBQUksTUFBTSxTQUFTLENBQUE7QUFFMUIsT0FBTyxXQUFXLE1BQU0saUJBQWlCLENBQUE7QUFDekMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUE7QUFDdkMsT0FBTyxTQUFTLE1BQU0sZUFBZSxDQUFBO0FBQ3JDLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQTtBQUMvQixPQUFPLFlBQVksTUFBTSxrQkFBa0IsQ0FBQTtBQUMzQyxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDNUQsT0FBTyxFQUFFLElBQUksSUFBSSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUd6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLGdCQUFnQixDQUFBO0FBR2pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7Ozs7QUFFbEUsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQTRCO0lBQ2hFLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxHQUFHO0lBQ2pDLElBQUksRUFBRTtRQUNKLHFFQUFxRTtRQUNyRSxxRUFBcUU7UUFDckUscUVBQXFFO0tBQ3RFO0NBQ0YsQ0FBQTtB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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTWFwU3R5bGVTZXJ2aWNlIH0gZnJvbSAnLi4vc3R5bGUvbWFwLXN0eWxlLnNlcnZpY2UnXG5pbXBvcnQge1xuICBNYXBDb250ZXh0TGF5ZXJNb2RlbCxcbiAgTWFwQ29udGV4dExheWVyVHlwZUVudW0sXG4gIE1hcENvbnRleHRMYXllclh5ek1vZGVsLFxuICBNYXBDb250ZXh0TW9kZWwsXG4gIE1hcENvbnRleHRWaWV3TW9kZWwsXG59IGZyb20gJy4vbWFwLWNvbnRleHQubW9kZWwnXG5pbXBvcnQgTWFwIGZyb20gJ29sL01hcCdcbmltcG9ydCBWaWV3IGZyb20gJ29sL1ZpZXcnXG5pbXBvcnQgTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvQmFzZSdcbmltcG9ydCBWZWN0b3JMYXllciBmcm9tICdvbC9sYXllci9WZWN0b3InXG5pbXBvcnQgVGlsZVdNUyBmcm9tICdvbC9zb3VyY2UvVGlsZVdNUydcbmltcG9ydCBUaWxlTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvVGlsZSdcbmltcG9ydCBYWVogZnJvbSAnb2wvc291cmNlL1hZWidcbmltcG9ydCBWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3RvcidcbmltcG9ydCBHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJ1xuaW1wb3J0IHsgTWFwVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvbWFwLXV0aWxzLnNlcnZpY2UnXG5pbXBvcnQgeyBiYm94IGFzIGJib3hTdHJhdGVneSB9IGZyb20gJ29sL2xvYWRpbmdzdHJhdGVneSdcbmltcG9ydCB7IExheWVyQ29uZmlnLCBNYXBDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvYXBwLWNvbmZpZy9zcmMnXG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJ2dlb2pzb24nXG5pbXBvcnQgeyBmcm9tTG9uTGF0IH0gZnJvbSAnb2wvcHJvaidcbmltcG9ydCBXTVRTIGZyb20gJ29sL3NvdXJjZS9XTVRTJ1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tJ1xuaW1wb3J0IEZlYXR1cmUgZnJvbSAnb2wvRmVhdHVyZSdcbmltcG9ydCB7IFdmc0VuZHBvaW50LCBXbXRzRW5kcG9pbnQgfSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CQVNFTEFZRVJfQ09OVEVYVDogTWFwQ29udGV4dExheWVyWHl6TW9kZWwgPSB7XG4gIHR5cGU6IE1hcENvbnRleHRMYXllclR5cGVFbnVtLlhZWixcbiAgdXJsczogW1xuICAgIGBodHRwczovL2EuYmFzZW1hcHMuY2FydG9jZG4uY29tL3Jhc3RlcnRpbGVzL3ZveWFnZXIve3p9L3t4fS97eX0ucG5nYCxcbiAgICBgaHR0cHM6Ly9iLmJhc2VtYXBzLmNhcnRvY2RuLmNvbS9yYXN0ZXJ0aWxlcy92b3lhZ2VyL3t6fS97eH0ve3l9LnBuZ2AsXG4gICAgYGh0dHBzOi8vYy5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vcmFzdGVydGlsZXMvdm95YWdlci97en0ve3h9L3t5fS5wbmdgLFxuICBdLFxufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9WSUVXOiBNYXBDb250ZXh0Vmlld01vZGVsID0ge1xuICBjZW50ZXI6IFswLCAxNV0sXG4gIHpvb206IDIsXG59XG5cbmV4cG9ydCBjb25zdCBXRlNfTUFYX0ZFQVRVUkVTID0gMTAwMDBcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1hcENvbnRleHRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtYXBVdGlsczogTWFwVXRpbHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3R5bGVTZXJ2aWNlOiBNYXBTdHlsZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHJlc2V0TWFwRnJvbUNvbnRleHQoXG4gICAgbWFwOiBNYXAsXG4gICAgbWFwQ29udGV4dDogTWFwQ29udGV4dE1vZGVsLFxuICAgIG1hcENvbmZpZz86IE1hcENvbmZpZ1xuICApOiBNYXAge1xuICAgIGlmIChtYXBDb25maWcpIHtcbiAgICAgIG1hcENvbnRleHQgPSB0aGlzLm1lcmdlTWFwQ29uZmlnV2l0aENvbnRleHQobWFwQ29udGV4dCwgbWFwQ29uZmlnKVxuICAgIH0gZWxzZSB7XG4gICAgICBtYXBDb250ZXh0LmxheWVycyA9IHRoaXMuYWRkRGVmYXVsdEJhc2VsYXllckNvbnRleHQobWFwQ29udGV4dC5sYXllcnMpXG4gICAgfVxuICAgIGlmIChcbiAgICAgICFtYXBDb250ZXh0LnZpZXc/LmV4dGVudCAmJlxuICAgICAgKCFtYXBDb250ZXh0LnZpZXc/LmNlbnRlciB8fCAhbWFwQ29udGV4dC52aWV3Py56b29tKVxuICAgICkge1xuICAgICAgbWFwQ29udGV4dC52aWV3ID0gdGhpcy5nZXRGYWxsYmFja1ZpZXcobWFwQ29uZmlnKVxuICAgIH1cbiAgICBtYXAuc2V0Vmlldyh0aGlzLmNyZWF0ZVZpZXcobWFwQ29udGV4dC52aWV3LCBtYXApKVxuICAgIG1hcC5nZXRMYXllcnMoKS5jbGVhcigpXG4gICAgbWFwQ29udGV4dC5sYXllcnMuZm9yRWFjaCgobGF5ZXIpID0+IG1hcC5hZGRMYXllcih0aGlzLmNyZWF0ZUxheWVyKGxheWVyKSkpXG4gICAgcmV0dXJuIG1hcFxuICB9XG5cbiAgY3JlYXRlTGF5ZXIobGF5ZXJNb2RlbDogTWFwQ29udGV4dExheWVyTW9kZWwpOiBMYXllciB7XG4gICAgY29uc3QgeyB0eXBlIH0gPSBsYXllck1vZGVsXG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLnN0eWxlU2VydmljZS5zdHlsZXMuZGVmYXVsdFxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bS5PR0NBUEk6XG4gICAgICAgIHJldHVybiBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgICAgIHNvdXJjZTogbmV3IFZlY3RvclNvdXJjZSh7XG4gICAgICAgICAgICBmb3JtYXQ6IG5ldyBHZW9KU09OKCksXG4gICAgICAgICAgICB1cmw6IGxheWVyTW9kZWwudXJsLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHN0eWxlLFxuICAgICAgICB9KVxuXG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLlhZWjpcbiAgICAgICAgcmV0dXJuIG5ldyBUaWxlTGF5ZXIoe1xuICAgICAgICAgIHNvdXJjZTogbmV3IFhZWih7XG4gICAgICAgICAgICB1cmw6ICd1cmwnIGluIGxheWVyTW9kZWwgPyBsYXllck1vZGVsLnVybCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVybHM6ICd1cmxzJyBpbiBsYXllck1vZGVsID8gbGF5ZXJNb2RlbC51cmxzIDogdW5kZWZpbmVkLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KVxuICAgICAgY2FzZSBNYXBDb250ZXh0TGF5ZXJUeXBlRW51bS5XTVM6XG4gICAgICAgIHJldHVybiBuZXcgVGlsZUxheWVyKHtcbiAgICAgICAgICBzb3VyY2U6IG5ldyBUaWxlV01TKHtcbiAgICAgICAgICAgIHVybDogbGF5ZXJNb2RlbC51cmwsXG4gICAgICAgICAgICBwYXJhbXM6IHsgTEFZRVJTOiBsYXllck1vZGVsLm5hbWUgfSxcbiAgICAgICAgICAgIGd1dHRlcjogMjAsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pXG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLldNVFM6IHtcbiAgICAgICAgLy8gVE9ETzogaXNvbGF0ZSB0aGlzIGluIHV0aWxzIHNlcnZpY2VcbiAgICAgICAgY29uc3Qgb2xMYXllciA9IG5ldyBUaWxlTGF5ZXIoe30pXG4gICAgICAgIGNvbnN0IGVuZHBvaW50ID0gbmV3IFdtdHNFbmRwb2ludChsYXllck1vZGVsLnVybClcbiAgICAgICAgZW5kcG9pbnQuaXNSZWFkeSgpLnRoZW4oYXN5bmMgKGVuZHBvaW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgbGF5ZXJOYW1lID0gZW5kcG9pbnQuZ2V0U2luZ2xlTGF5ZXJOYW1lKCkgPz8gbGF5ZXJNb2RlbC5uYW1lXG4gICAgICAgICAgY29uc3QgbGF5ZXIgPSBlbmRwb2ludC5nZXRMYXllckJ5TmFtZShsYXllck5hbWUpXG4gICAgICAgICAgY29uc3QgbWF0cml4U2V0ID0gbGF5ZXIubWF0cml4U2V0c1swXVxuICAgICAgICAgIGNvbnN0IHRpbGVHcmlkID0gYXdhaXQgZW5kcG9pbnQuZ2V0T3BlbkxheWVyc1RpbGVHcmlkKGxheWVyLm5hbWUpXG4gICAgICAgICAgY29uc3QgcmVzb3VyY2VVcmwgPSBsYXllci5yZXNvdXJjZUxpbmtzWzBdXG4gICAgICAgICAgY29uc3QgZGltZW5zaW9ucyA9IGVuZHBvaW50LmdldERlZmF1bHREaW1lbnNpb25zKGxheWVyLm5hbWUpXG4gICAgICAgICAgb2xMYXllci5zZXRTb3VyY2UoXG4gICAgICAgICAgICBuZXcgV01UUyh7XG4gICAgICAgICAgICAgIGxheWVyOiBsYXllci5uYW1lLFxuICAgICAgICAgICAgICBzdHlsZTogbGF5ZXIuZGVmYXVsdFN0eWxlLFxuICAgICAgICAgICAgICBtYXRyaXhTZXQ6IG1hdHJpeFNldC5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICBmb3JtYXQ6IHJlc291cmNlVXJsLmZvcm1hdCxcbiAgICAgICAgICAgICAgdXJsOiByZXNvdXJjZVVybC51cmwsXG4gICAgICAgICAgICAgIHJlcXVlc3RFbmNvZGluZzogcmVzb3VyY2VVcmwuZW5jb2RpbmcsXG4gICAgICAgICAgICAgIHRpbGVHcmlkLFxuICAgICAgICAgICAgICBwcm9qZWN0aW9uOiBtYXRyaXhTZXQuY3JzLFxuICAgICAgICAgICAgICBkaW1lbnNpb25zLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBvbExheWVyXG4gICAgICB9XG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLldGUzoge1xuICAgICAgICBjb25zdCBvbExheWVyID0gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgICBzdHlsZSxcbiAgICAgICAgfSlcbiAgICAgICAgbmV3IFdmc0VuZHBvaW50KGxheWVyTW9kZWwudXJsKS5pc1JlYWR5KCkudGhlbigoZW5kcG9pbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBmZWF0dXJlVHlwZSA9XG4gICAgICAgICAgICBlbmRwb2ludC5nZXRTaW5nbGVGZWF0dXJlVHlwZU5hbWUoKSA/PyBsYXllck1vZGVsLm5hbWVcbiAgICAgICAgICBvbExheWVyLnNldFNvdXJjZShcbiAgICAgICAgICAgIG5ldyBWZWN0b3JTb3VyY2Uoe1xuICAgICAgICAgICAgICBmb3JtYXQ6IG5ldyBHZW9KU09OKCksXG4gICAgICAgICAgICAgIHVybDogZnVuY3Rpb24gKGV4dGVudDogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZW5kcG9pbnQuZ2V0RmVhdHVyZVVybChmZWF0dXJlVHlwZSwge1xuICAgICAgICAgICAgICAgICAgbWF4RmVhdHVyZXM6IFdGU19NQVhfRkVBVFVSRVMsXG4gICAgICAgICAgICAgICAgICBhc0pzb246IHRydWUsXG4gICAgICAgICAgICAgICAgICBvdXRwdXRDcnM6ICdFUFNHOjM4NTcnLFxuICAgICAgICAgICAgICAgICAgZXh0ZW50LFxuICAgICAgICAgICAgICAgICAgZXh0ZW50Q3JzOiAnRVBTRzozODU3JyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBzdHJhdGVneTogYmJveFN0cmF0ZWd5LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBvbExheWVyXG4gICAgICB9XG4gICAgICBjYXNlIE1hcENvbnRleHRMYXllclR5cGVFbnVtLkdFT0pTT046IHtcbiAgICAgICAgaWYgKCd1cmwnIGluIGxheWVyTW9kZWwpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgICAgIHNvdXJjZTogbmV3IFZlY3RvclNvdXJjZSh7XG4gICAgICAgICAgICAgIGZvcm1hdDogbmV3IEdlb0pTT04oKSxcbiAgICAgICAgICAgICAgdXJsOiBsYXllck1vZGVsLnVybCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc3R5bGUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgZ2VvanNvbiA9IGxheWVyTW9kZWwuZGF0YVxuICAgICAgICAgIGlmICh0eXBlb2YgZ2VvanNvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGdlb2pzb24gPSBKU09OLnBhcnNlKGdlb2pzb24pXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybignQSBsYXllciBjb3VsZCBub3QgYmUgY3JlYXRlZCcsIGxheWVyTW9kZWwsIGUpXG4gICAgICAgICAgICAgIGdlb2pzb24gPSB7IHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsIGZlYXR1cmVzOiBbXSB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGZlYXR1cmVzID0gdGhpcy5tYXBVdGlscy5yZWFkRmVhdHVyZUNvbGxlY3Rpb24oXG4gICAgICAgICAgICBnZW9qc29uIGFzIEZlYXR1cmVDb2xsZWN0aW9uXG4gICAgICAgICAgKSBhcyBGZWF0dXJlPEdlb21ldHJ5PltdXG4gICAgICAgICAgcmV0dXJuIG5ldyBWZWN0b3JMYXllcih7XG4gICAgICAgICAgICBzb3VyY2U6IG5ldyBWZWN0b3JTb3VyY2Uoe1xuICAgICAgICAgICAgICBmZWF0dXJlcyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc3R5bGUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgbGF5ZXIgdHlwZTogJHtsYXllck1vZGVsLnR5cGV9YClcbiAgICB9XG4gIH1cblxuICBjcmVhdGVWaWV3KHZpZXdNb2RlbDogTWFwQ29udGV4dFZpZXdNb2RlbCwgbWFwPzogTWFwKTogVmlldyB7XG4gICAgY29uc3QgeyBjZW50ZXI6IGNlbnRlckluVmlld1Byb2osIHpvb20sIG1heFpvb20sIG1heEV4dGVudCB9ID0gdmlld01vZGVsXG4gICAgY29uc3QgY2VudGVyID0gY2VudGVySW5WaWV3UHJvalxuICAgICAgPyBmcm9tTG9uTGF0KGNlbnRlckluVmlld1Byb2osICdFUFNHOjM4NTcnKVxuICAgICAgOiBbMCwgMF1cbiAgICBjb25zdCB2aWV3ID0gbmV3IFZpZXcoe1xuICAgICAgY2VudGVyLFxuICAgICAgem9vbSxcbiAgICAgIG1heFpvb20sXG4gICAgICBleHRlbnQ6IG1heEV4dGVudCxcbiAgICAgIG11bHRpV29ybGQ6IGZhbHNlLFxuICAgICAgY29uc3RyYWluUmVzb2x1dGlvbjogdHJ1ZSxcbiAgICB9KVxuICAgIGlmICh2aWV3TW9kZWwuZXh0ZW50ICYmIG1hcCkge1xuICAgICAgdmlldy5maXQodmlld01vZGVsLmV4dGVudCwge1xuICAgICAgICBzaXplOiBtYXAuZ2V0U2l6ZSgpLFxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHZpZXdcbiAgfVxuXG4gIGFkZERlZmF1bHRCYXNlbGF5ZXJDb250ZXh0KFxuICAgIGxheWVyczogTWFwQ29udGV4dExheWVyTW9kZWxbXVxuICApOiBNYXBDb250ZXh0TGF5ZXJNb2RlbFtdIHtcbiAgICByZXR1cm4gbGF5ZXJzLmluY2x1ZGVzKERFRkFVTFRfQkFTRUxBWUVSX0NPTlRFWFQpXG4gICAgICA/IGxheWVyc1xuICAgICAgOiBbREVGQVVMVF9CQVNFTEFZRVJfQ09OVEVYVCwgLi4ubGF5ZXJzXVxuICB9XG5cbiAgbWVyZ2VNYXBDb25maWdXaXRoQ29udGV4dChcbiAgICBtYXBDb250ZXh0OiBNYXBDb250ZXh0TW9kZWwsXG4gICAgbWFwQ29uZmlnOiBNYXBDb25maWdcbiAgKTogTWFwQ29udGV4dE1vZGVsIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ubWFwQ29udGV4dCxcbiAgICAgIHZpZXc6IHtcbiAgICAgICAgLi4ubWFwQ29udGV4dC52aWV3LFxuICAgICAgICAuLi4obWFwQ29uZmlnLk1BWF9aT09NICYmIHtcbiAgICAgICAgICBtYXhab29tOiBtYXBDb25maWcuTUFYX1pPT00sXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4obWFwQ29uZmlnLk1BWF9FWFRFTlQgJiYge1xuICAgICAgICAgIG1heEV4dGVudDogbWFwQ29uZmlnLk1BWF9FWFRFTlQsXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICAgIGxheWVyczogW1xuICAgICAgICAuLi4obWFwQ29uZmlnLkRPX05PVF9VU0VfREVGQVVMVF9CQVNFTUFQXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogW0RFRkFVTFRfQkFTRUxBWUVSX0NPTlRFWFRdKSxcbiAgICAgICAgLi4ubWFwQ29uZmlnLk1BUF9MQVlFUlMubWFwKHRoaXMuZ2V0Q29udGV4dExheWVyRnJvbUNvbmZpZyksXG4gICAgICAgIC4uLm1hcENvbnRleHQubGF5ZXJzLFxuICAgICAgXSxcbiAgICB9XG4gIH1cblxuICBnZXRGYWxsYmFja1ZpZXcobWFwQ29uZmlnOiBNYXBDb25maWcpOiBNYXBDb250ZXh0Vmlld01vZGVsIHtcbiAgICByZXR1cm4gbWFwQ29uZmlnPy5NQVhfRVhURU5UXG4gICAgICA/IHsgZXh0ZW50OiBtYXBDb25maWcuTUFYX0VYVEVOVCB9XG4gICAgICA6IERFRkFVTFRfVklFV1xuICB9XG5cbiAgZ2V0Q29udGV4dExheWVyRnJvbUNvbmZpZyhjb25maWc6IExheWVyQ29uZmlnKTogTWFwQ29udGV4dExheWVyTW9kZWwge1xuICAgIHN3aXRjaCAoY29uZmlnLlRZUEUpIHtcbiAgICAgIGNhc2UgJ3dtcyc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ3dtcycsXG4gICAgICAgICAgdXJsOiBjb25maWcuVVJMLFxuICAgICAgICAgIG5hbWU6IGNvbmZpZy5OQU1FLFxuICAgICAgICB9XG4gICAgICBjYXNlICd3ZnMnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6ICd3ZnMnLFxuICAgICAgICAgIHVybDogY29uZmlnLlVSTCxcbiAgICAgICAgICBuYW1lOiBjb25maWcuTkFNRSxcbiAgICAgICAgfVxuICAgICAgY2FzZSAneHl6JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBjb25maWcuVFlQRSxcbiAgICAgICAgICB1cmw6IGNvbmZpZy5VUkwsXG4gICAgICAgICAgbmFtZTogY29uZmlnLk5BTUUsXG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ2dlb2pzb24nOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IGNvbmZpZy5UWVBFLFxuICAgICAgICAgIC4uLihjb25maWcuREFUQSA/IHsgZGF0YTogY29uZmlnLkRBVEEgfSA6IHsgdXJsOiBjb25maWcuVVJMIH0pLFxuICAgICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|