@igo2/geo 1.14.1 → 1.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/esm2020/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +7 -5
  2. package/esm2020/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +59 -21
  3. package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +7 -7
  4. package/esm2020/lib/import-export/shared/export.service.mjs +3 -3
  5. package/esm2020/lib/map/baselayers-switcher/mini-basemap.component.mjs +16 -7
  6. package/esm2020/lib/map/shared/map.utils.mjs +2 -1
  7. package/esm2020/lib/print/print/print.component.mjs +15 -12
  8. package/esm2020/lib/print/print-form/print-form.component.mjs +46 -23
  9. package/esm2020/lib/print/shared/print.service.mjs +96 -23
  10. package/esm2020/lib/query/shared/query.interfaces.mjs +1 -1
  11. package/esm2020/lib/query/shared/query.service.mjs +142 -28
  12. package/esm2020/lib/search/search-bar/search-bar.component.mjs +27 -8
  13. package/esm2020/lib/search/search-results/save-feature-dialog.component.mjs +118 -0
  14. package/esm2020/lib/search/search-results/search-results-add-button.component.mjs +207 -29
  15. package/esm2020/lib/search/search-results/search-results-item.component.mjs +2 -2
  16. package/esm2020/lib/search/search-results/search-results.component.mjs +1 -1
  17. package/esm2020/lib/search/search-results/search-results.module.mjs +32 -5
  18. package/esm2020/lib/search/search-settings/search-settings.component.mjs +33 -9
  19. package/esm2020/lib/search/shared/search.service.mjs +10 -7
  20. package/esm2020/lib/search/shared/sources/coordinates.mjs +17 -11
  21. package/esm2020/lib/search/shared/sources/icherche.mjs +7 -7
  22. package/esm2020/lib/search/shared/sources/ilayer.mjs +4 -4
  23. package/esm2020/lib/search/shared/sources/source.mjs +1 -1
  24. package/fesm2015/igo2-geo.mjs +990 -361
  25. package/fesm2015/igo2-geo.mjs.map +1 -1
  26. package/fesm2020/igo2-geo.mjs +966 -360
  27. package/fesm2020/igo2-geo.mjs.map +1 -1
  28. package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +3 -1
  29. package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +9 -2
  30. package/lib/import-export/shared/export.service.d.ts +1 -1
  31. package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +7 -4
  32. package/lib/map/shared/map.utils.d.ts +1 -0
  33. package/lib/print/shared/print.service.d.ts +10 -1
  34. package/lib/query/shared/query.interfaces.d.ts +8 -1
  35. package/lib/query/shared/query.service.d.ts +5 -3
  36. package/lib/search/search-bar/search-bar.component.d.ts +12 -2
  37. package/lib/search/search-results/save-feature-dialog.component.d.ts +32 -0
  38. package/lib/search/search-results/search-results-add-button.component.d.ts +20 -2
  39. package/lib/search/search-results/search-results-item.component.d.ts +0 -1
  40. package/lib/search/search-results/search-results.module.d.ts +17 -10
  41. package/lib/search/search-settings/search-settings.component.d.ts +7 -1
  42. package/lib/search/shared/search.service.d.ts +3 -1
  43. package/lib/search/shared/sources/coordinates.d.ts +1 -1
  44. package/lib/search/shared/sources/source.d.ts +1 -1
  45. package/package.json +4 -4
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, Component, ChangeDetectionStrategy, Input, ViewEncapsulation, Inject, NgModule, Optional, Directive, EventEmitter, Self, Output, HostListener, ViewChildren, ContentChild, ViewChild, Pipe, InjectionToken, APP_INITIALIZER, Injector } from '@angular/core';
3
- import * as i1$1 from '@angular/common';
3
+ import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i7$1 from '@angular/material/badge';
6
6
  import { MatBadgeModule } from '@angular/material/badge';
@@ -12,15 +12,15 @@ import * as i4 from '@angular/material/tooltip';
12
12
  import { MatTooltipModule } from '@angular/material/tooltip';
13
13
  import * as i5$1 from '@igo2/common';
14
14
  import { getEntityId, getEntityTitle, getEntityProperty, getEntityRevision, getEntityIcon, EntityStore, EntityStoreStrategy, EntityStoreWatcher, SecureImagePipe, EntityTableColumnRenderer, IgoListModule, IgoCollapsibleModule, IgoImageModule, IgoPanelModule, IgoMatBadgeIconModule, IgoCustomHtmlModule, IgoEntityTableModule, IgoKeyValueModule, IgoFormModule, IgoFormFieldComponent, DOMService, EntityStoreFilterSelectionStrategy, IgoEntityModule, IgoDOMModule, DragAndDropDirective, IgoSpinnerModule, IgoDrapDropModule, IgoConfirmDialogModule, getEntityTitleHtml, EntityStoreFilterCustomFuncStrategy, IgoStopPropagationModule, IgoFlexibleModule, WidgetService, Workspace, ActionStore, IgoWidgetModule } from '@igo2/common';
15
- import * as i3 from '@angular/material/button';
15
+ import * as i3$1 from '@angular/material/button';
16
16
  import { MatButtonModule } from '@angular/material/button';
17
17
  import * as i2$1 from '@igo2/core';
18
18
  import { IgoLanguageModule, ConfigService, Media, StorageScope, IgoMessageModule, LanguageService, StorageService } from '@igo2/core';
19
- import * as i1 from '@angular/material/dialog';
19
+ import * as i3 from '@angular/material/dialog';
20
20
  import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
21
21
  import * as i7 from '@ngx-translate/core';
22
- import { BehaviorSubject, combineLatest, of, Observable, forkJoin, Subject, interval, skipWhile as skipWhile$1, zip, EMPTY, ReplaySubject, timer, fromEvent, Subscription, throwError } from 'rxjs';
23
- import { map, concatMap, first, catchError, skipWhile, debounceTime, skip, distinctUntilChanged, switchMap, take, mergeMap, debounce, takeUntil } from 'rxjs/operators';
22
+ import { BehaviorSubject, combineLatest, of, Observable, forkJoin, Subject, interval, skipWhile as skipWhile$1, zip, EMPTY, ReplaySubject, timer, fromEvent, Subscription, throwError, take as take$1 } from 'rxjs';
23
+ import { map, concatMap, first, catchError, skipWhile, debounceTime, skip, distinctUntilChanged, switchMap, take, mergeMap, debounce, takeUntil, startWith } from 'rxjs/operators';
24
24
  import { Watcher, uuid, SubjectStatus, NumberUtils, ObjectUtils, userAgent, Clipboard, downloadContent, strEnum, ChangeUtils } from '@igo2/utils';
25
25
  import olMap from 'ol/Map';
26
26
  import olView from 'ol/View';
@@ -64,7 +64,7 @@ import olFormatOSMXML from 'ol/format/OSMXML';
64
64
  import olSourceOSM from 'ol/source/OSM';
65
65
  import olSourceXYZ from 'ol/source/XYZ';
66
66
  import * as OlLoadingStrategy from 'ol/loadingstrategy';
67
- import * as i1$2 from '@angular/common/http';
67
+ import * as i1$1 from '@angular/common/http';
68
68
  import { HttpParams, HttpClient, HttpHeaders } from '@angular/common/http';
69
69
  import olSourceImageWMS from 'ol/source/ImageWMS';
70
70
  import olSourceWMTS from 'ol/source/WMTS';
@@ -96,7 +96,7 @@ import RenderFeature from 'ol/render/Feature';
96
96
  import NoSleep from 'nosleep.js';
97
97
  import { trigger, state, style, transition, animate } from '@angular/animations';
98
98
  import { stylefunction } from 'ol-mapbox-style';
99
- import * as i1$3 from 'ngx-indexed-db';
99
+ import * as i1$2 from 'ngx-indexed-db';
100
100
  import { DBMode } from 'ngx-indexed-db';
101
101
  import { bearingToAzimuth, lineString } from '@turf/helpers';
102
102
  import striptags from 'striptags';
@@ -160,7 +160,7 @@ import { saveAs } from 'file-saver';
160
160
  import jsPDF from 'jspdf';
161
161
  import html2canvas from 'html2canvas';
162
162
  import JSZip from 'jszip';
163
- import * as i3$1 from '@angular/cdk/drag-drop';
163
+ import * as i3$2 from '@angular/cdk/drag-drop';
164
164
  import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
165
165
  import pointOnFeature from '@turf/point-on-feature';
166
166
  import Collection from 'ol/Collection';
@@ -261,16 +261,16 @@ class MetadataButtonComponent {
261
261
  return this.layer.options;
262
262
  }
263
263
  }
264
- MetadataButtonComponent.ɵfac = function MetadataButtonComponent_Factory(t) { return new (t || MetadataButtonComponent)(i0.ɵɵdirectiveInject(MetadataService), i0.ɵɵdirectiveInject(i1.MatDialog)); };
264
+ MetadataButtonComponent.ɵfac = function MetadataButtonComponent_Factory(t) { return new (t || MetadataButtonComponent)(i0.ɵɵdirectiveInject(MetadataService), i0.ɵɵdirectiveInject(i3.MatDialog)); };
265
265
  MetadataButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MetadataButtonComponent, selectors: [["igo-metadata-button"]], inputs: { layer: "layer", color: "color" }, decls: 1, vars: 1, consts: [["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "color", "click", 4, "ngIf"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "color", "click"], ["svgIcon", "information-outline"]], template: function MetadataButtonComponent_Template(rf, ctx) { if (rf & 1) {
266
266
  i0.ɵɵtemplate(0, MetadataButtonComponent_button_0_Template, 3, 4, "button", 0);
267
267
  } if (rf & 2) {
268
268
  i0.ɵɵproperty("ngIf", ctx.options && ctx.options.metadata && ctx.options.metadata.url || ctx.options && ctx.options.metadata && ctx.options.metadata.abstract);
269
- } }, dependencies: [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i7.TranslatePipe], changeDetection: 0 });
269
+ } }, dependencies: [i1.NgIf, i2.MatIcon, i3$1.MatButton, i4.MatTooltip, i7.TranslatePipe], changeDetection: 0 });
270
270
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MetadataButtonComponent, [{
271
271
  type: Component,
272
272
  args: [{ selector: 'igo-metadata-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngIf=\"(options && options.metadata && options.metadata.url) || (options && options.metadata && options.metadata.abstract)\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.metadata.show' | translate\"\n [color]=\"color\"\n (click)=\"openMetadata(options.metadata)\">\n <mat-icon svgIcon=\"information-outline\"></mat-icon>\n</button>\n" }]
273
- }], function () { return [{ type: MetadataService }, { type: i1.MatDialog }]; }, { layer: [{
273
+ }], function () { return [{ type: MetadataService }, { type: i3.MatDialog }]; }, { layer: [{
274
274
  type: Input
275
275
  }], color: [{
276
276
  type: Input
@@ -297,7 +297,7 @@ MetadataAbstractComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: M
297
297
  i0.ɵɵproperty("ngIf", ctx.data.type !== "arcgisrest");
298
298
  i0.ɵɵadvance(1);
299
299
  i0.ɵɵproperty("ngIf", ctx.data.type === "arcgisrest");
300
- } }, dependencies: [i1$1.NgIf, i3.MatButton, i1.MatDialogClose, i1.MatDialogTitle, i1.MatDialogContent], styles: [".close-button{top:5px;right:5px;padding:7px;line-height:10px;position:absolute!important;min-width:auto}mat-dialog-container{position:relative}\n"], encapsulation: 2 });
300
+ } }, dependencies: [i1.NgIf, i3$1.MatButton, i3.MatDialogClose, i3.MatDialogTitle, i3.MatDialogContent], styles: [".close-button{top:5px;right:5px;padding:7px;line-height:10px;position:absolute!important;min-width:auto}mat-dialog-container{position:relative}\n"], encapsulation: 2 });
301
301
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MetadataAbstractComponent, [{
302
302
  type: Component,
303
303
  args: [{ selector: 'igo-metadata-abstract', encapsulation: ViewEncapsulation.None, template: "<h2 mat-dialog-title>{{ data.layerTitle }}</h2>\n<button class=\"close-button\" mat-button mat-dialog-close>X</button>\n<mat-dialog-content *ngIf=\"data.type !== 'arcgisrest'\" class=\"mat-typography\">\n <h3>{{ data.abstract }}</h3>\n</mat-dialog-content>\n<mat-dialog-content *ngIf=\"data.type === 'arcgisrest'\" class=\"mat-typography\">\n <h3 [innerHTML]=\"data.abstract\"></h3>\n</mat-dialog-content>\n", styles: [".close-button{top:5px;right:5px;padding:7px;line-height:10px;position:absolute!important;min-width:auto}mat-dialog-container{position:relative}\n"] }]
@@ -1104,6 +1104,7 @@ function roundCoordToString(coord, decimal = 3) {
1104
1104
  * and for the current UTM zone and MTM zone.
1105
1105
  * @param lonLat [number, number] array of the coordinate to transform.
1106
1106
  * @param projections Projection[] Array of destination projection.
1107
+ * @param reverseCoords To reverse coords from latLon to lonLat (search option)
1107
1108
  * @returns Returns an array of converted coordinates.
1108
1109
  */
1109
1110
  function lonLatConversion(lonLat, projections) {
@@ -2866,14 +2867,14 @@ class WFSService extends DataService {
2866
2867
  return sourceFields;
2867
2868
  }
2868
2869
  }
2869
- WFSService.ɵfac = function WFSService_Factory(t) { return new (t || WFSService)(i0.ɵɵinject(i1$2.HttpClient)); };
2870
+ WFSService.ɵfac = function WFSService_Factory(t) { return new (t || WFSService)(i0.ɵɵinject(i1$1.HttpClient)); };
2870
2871
  WFSService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: WFSService, factory: WFSService.ɵfac, providedIn: 'root' });
2871
2872
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WFSService, [{
2872
2873
  type: Injectable,
2873
2874
  args: [{
2874
2875
  providedIn: 'root'
2875
2876
  }]
2876
- }], function () { return [{ type: i1$2.HttpClient }]; }, null); })();
2877
+ }], function () { return [{ type: i1$1.HttpClient }]; }, null); })();
2877
2878
 
2878
2879
  var QueryFormat;
2879
2880
  (function (QueryFormat) {
@@ -4347,7 +4348,7 @@ class CapabilitiesService {
4347
4348
  return legendOptions;
4348
4349
  }
4349
4350
  }
4350
- CapabilitiesService.ɵfac = function CapabilitiesService_Factory(t) { return new (t || CapabilitiesService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(MapService)); };
4351
+ CapabilitiesService.ɵfac = function CapabilitiesService_Factory(t) { return new (t || CapabilitiesService)(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(MapService)); };
4351
4352
  CapabilitiesService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CapabilitiesService, factory: CapabilitiesService.ɵfac, providedIn: 'root' });
4352
4353
  __decorate([
4353
4354
  Cacheable({
@@ -4374,7 +4375,7 @@ __decorate([
4374
4375
  args: [{
4375
4376
  providedIn: 'root'
4376
4377
  }]
4377
- }], function () { return [{ type: i1$2.HttpClient }, { type: MapService }]; }, { getArcgisOptions: [], getImageArcgisOptions: [], getTileArcgisOptions: [], getCapabilities: [] }); })();
4378
+ }], function () { return [{ type: i1$1.HttpClient }, { type: MapService }]; }, { getArcgisOptions: [], getImageArcgisOptions: [], getTileArcgisOptions: [], getCapabilities: [] }); })();
4378
4379
 
4379
4380
  class OptionsService {
4380
4381
  }
@@ -4724,14 +4725,14 @@ class OptionsApiService extends OptionsService {
4724
4725
  }));
4725
4726
  }
4726
4727
  }
4727
- OptionsApiService.ɵfac = function OptionsApiService_Factory(t) { return new (t || OptionsApiService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject('options')); };
4728
+ OptionsApiService.ɵfac = function OptionsApiService_Factory(t) { return new (t || OptionsApiService)(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject('options')); };
4728
4729
  OptionsApiService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: OptionsApiService, factory: OptionsApiService.ɵfac, providedIn: 'root' });
4729
4730
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OptionsApiService, [{
4730
4731
  type: Injectable,
4731
4732
  args: [{
4732
4733
  providedIn: 'root'
4733
4734
  }]
4734
- }], function () { return [{ type: i1$2.HttpClient }, { type: undefined, decorators: [{
4735
+ }], function () { return [{ type: i1$1.HttpClient }, { type: undefined, decorators: [{
4735
4736
  type: Inject,
4736
4737
  args: ['options']
4737
4738
  }] }]; }, null); })();
@@ -8293,7 +8294,7 @@ class IgoMap {
8293
8294
  }
8294
8295
  }
8295
8296
 
8296
- const _c0$m = ["*"];
8297
+ const _c0$n = ["*"];
8297
8298
  class MapBrowserComponent {
8298
8299
  constructor(activityService) {
8299
8300
  this.activityService = activityService;
@@ -8339,7 +8340,7 @@ class MapBrowserComponent {
8339
8340
  }
8340
8341
  }
8341
8342
  MapBrowserComponent.ɵfac = function MapBrowserComponent_Factory(t) { return new (t || MapBrowserComponent)(i0.ɵɵdirectiveInject(i2$1.ActivityService)); };
8342
- MapBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MapBrowserComponent, selectors: [["igo-map-browser"]], inputs: { map: "map", view: "view" }, ngContentSelectors: _c0$m, decls: 2, vars: 1, consts: [[1, "igo-map-browser-target", 3, "id"]], template: function MapBrowserComponent_Template(rf, ctx) { if (rf & 1) {
8343
+ MapBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MapBrowserComponent, selectors: [["igo-map-browser"]], inputs: { map: "map", view: "view" }, ngContentSelectors: _c0$n, decls: 2, vars: 1, consts: [[1, "igo-map-browser-target", 3, "id"]], template: function MapBrowserComponent_Template(rf, ctx) { if (rf & 1) {
8343
8344
  i0.ɵɵprojectionDef();
8344
8345
  i0.ɵɵelement(0, "div", 0);
8345
8346
  i0.ɵɵprojection(1);
@@ -9158,7 +9159,7 @@ function computeProjectionsConstraints(projectionsLimitations) {
9158
9159
  return projectionsConstraints;
9159
9160
  }
9160
9161
 
9161
- const _c0$l = function (a0) { return { zoom: a0 }; };
9162
+ const _c0$m = function (a0) { return { zoom: a0 }; };
9162
9163
  class ZoomButtonComponent {
9163
9164
  constructor() { }
9164
9165
  get zoom() { return this.map.viewController.getZoom(); }
@@ -9179,10 +9180,10 @@ ZoomButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ZoomBut
9179
9180
  i0.ɵɵelementEnd()();
9180
9181
  } if (rf & 2) {
9181
9182
  i0.ɵɵadvance(1);
9182
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind2(2, 6, "igo.geo.mapButtons.zoomIn", i0.ɵɵpureFunction1(12, _c0$l, ctx.zoom + 1)))("color", ctx.color)("disabled", ctx.zoom >= ctx.maxZoom);
9183
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind2(2, 6, "igo.geo.mapButtons.zoomIn", i0.ɵɵpureFunction1(12, _c0$m, ctx.zoom + 1)))("color", ctx.color)("disabled", ctx.zoom >= ctx.maxZoom);
9183
9184
  i0.ɵɵadvance(3);
9184
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind2(5, 9, "igo.geo.mapButtons.zoomOut", i0.ɵɵpureFunction1(14, _c0$l, ctx.zoom - 1)))("color", ctx.color)("disabled", ctx.zoom <= ctx.minZoom);
9185
- } }, dependencies: [i2.MatIcon, i3.MatButton, i4.MatTooltip, i7.TranslatePipe], styles: [".igo-zoom-button-container[_ngcontent-%COMP%]{width:40px}.igo-zoom-button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{background-color:#fff}.igo-zoom-button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover{background-color:#efefef}.igo-zoom-button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:first-child{margin-bottom:2px}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}"] });
9185
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind2(5, 9, "igo.geo.mapButtons.zoomOut", i0.ɵɵpureFunction1(14, _c0$m, ctx.zoom - 1)))("color", ctx.color)("disabled", ctx.zoom <= ctx.minZoom);
9186
+ } }, dependencies: [i2.MatIcon, i3$1.MatButton, i4.MatTooltip, i7.TranslatePipe], styles: [".igo-zoom-button-container[_ngcontent-%COMP%]{width:40px}.igo-zoom-button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{background-color:#fff}.igo-zoom-button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover{background-color:#efefef}.igo-zoom-button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:first-child{margin-bottom:2px}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}"] });
9186
9187
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ZoomButtonComponent, [{
9187
9188
  type: Component,
9188
9189
  args: [{ selector: 'igo-zoom-button', template: "<div class=\"igo-zoom-button-container\">\n <button\n mat-icon-button\n [matTooltip]=\"'igo.geo.mapButtons.zoomIn' | translate: {zoom: zoom + 1}\"\n matTooltipPosition=\"left\"\n [color]=\"color\"\n [disabled]=\"zoom >= maxZoom\"\n (click)=\"map.viewController.zoomIn()\">\n <mat-icon svgIcon=\"plus\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n [matTooltip]=\"'igo.geo.mapButtons.zoomOut' | translate: {zoom: zoom - 1}\"\n matTooltipPosition=\"left\"\n [color]=\"color\"\n [disabled]=\"zoom <= minZoom\"\n (click)=\"map.viewController.zoomOut()\">\n <mat-icon svgIcon=\"minus\"></mat-icon>\n </button>\n</div>\n", styles: [".igo-zoom-button-container{width:40px}.igo-zoom-button-container button{background-color:#fff}.igo-zoom-button-container button:hover{background-color:#efefef}.igo-zoom-button-container button:first-child{margin-bottom:2px}button,:host ::ng-deep button .mat-button-ripple-round{border-radius:0}\n"] }]
@@ -9236,7 +9237,7 @@ MenuButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuBut
9236
9237
  i0.ɵɵelementEnd();
9237
9238
  } if (rf & 2) {
9238
9239
  i0.ɵɵproperty("ngClass", ctx.menuButtonClass)("matTooltip", i0.ɵɵpipeBind1(1, 2, ctx.sidenavOpened ? "menu.close" : "menu.open"));
9239
- } }, dependencies: [i1$1.NgClass, i2.MatIcon, i3.MatButton, i4.MatTooltip, i7.TranslatePipe], styles: ["#menu-button[_ngcontent-%COMP%]{background-color:#fff;border-radius:0;left:5px;top:5px}#menu-button.menu-button-reverse-color[_ngcontent-%COMP%]{height:40px;border-radius:0;height:45px;width:48px;left:0px;top:3px}#menu-button.menu-button-reverse-color-close[_ngcontent-%COMP%]{border-radius:0;left:5px;top:5px}mat-icon.disabled[_ngcontent-%COMP%]{color:#00000061}#menu-button[_ngcontent-%COMP%] div.mat-button-ripple-round{border-radius:0}"] });
9240
+ } }, dependencies: [i1.NgClass, i2.MatIcon, i3$1.MatButton, i4.MatTooltip, i7.TranslatePipe], styles: ["#menu-button[_ngcontent-%COMP%]{background-color:#fff;border-radius:0;left:5px;top:5px}#menu-button.menu-button-reverse-color[_ngcontent-%COMP%]{height:40px;border-radius:0;height:45px;width:48px;left:0px;top:3px}#menu-button.menu-button-reverse-color-close[_ngcontent-%COMP%]{border-radius:0;left:5px;top:5px}mat-icon.disabled[_ngcontent-%COMP%]{color:#00000061}#menu-button[_ngcontent-%COMP%] div.mat-button-ripple-round{border-radius:0}"] });
9240
9241
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MenuButtonComponent, [{
9241
9242
  type: Component,
9242
9243
  args: [{ selector: 'igo-menu-button', template: "<button\n mat-icon-button\n id= \"menu-button\"\n [ngClass]=\"menuButtonClass\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"(sidenavOpened ? 'menu.close' : 'menu.open') | translate\"\n (click)=\"onToggleSidenavClick()\">\n <mat-icon svgIcon=\"menu\"></mat-icon>\n</button>\n", styles: ["#menu-button{background-color:#fff;border-radius:0;left:5px;top:5px}#menu-button.menu-button-reverse-color{height:40px;border-radius:0;height:45px;width:48px;left:0px;top:3px}#menu-button.menu-button-reverse-color-close{border-radius:0;left:5px;top:5px}mat-icon.disabled{color:#00000061}#menu-button ::ng-deep div.mat-button-ripple-round{border-radius:0}\n"] }]
@@ -9306,7 +9307,7 @@ GeolocateButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Ge
9306
9307
  i0.ɵɵtemplate(0, GeolocateButtonComponent_div_0_Template, 6, 9, "div", 0);
9307
9308
  } if (rf & 2) {
9308
9309
  i0.ɵɵproperty("ngIf", ctx.map.geolocationController);
9309
- } }, dependencies: [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".igo-geolocate-button-container[_ngcontent-%COMP%]{width:40px;background-color:#fff}.igo-geolocate-button-container[_ngcontent-%COMP%]:hover{background-color:#efefef}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}"] });
9310
+ } }, dependencies: [i1.NgIf, i2.MatIcon, i3$1.MatButton, i4.MatTooltip, i1.AsyncPipe, i7.TranslatePipe], styles: [".igo-geolocate-button-container[_ngcontent-%COMP%]{width:40px;background-color:#fff}.igo-geolocate-button-container[_ngcontent-%COMP%]:hover{background-color:#efefef}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}"] });
9310
9311
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GeolocateButtonComponent, [{
9311
9312
  type: Component,
9312
9313
  args: [{ selector: 'igo-geolocate-button', template: "<div class=\"igo-geolocate-button-container\" *ngIf=\"map.geolocationController\">\n <button\n mat-icon-button\n [matTooltip]=\"map.geolocationController.tracking ? ('igo.geo.mapButtons.geolocateInactive' | translate) :('igo.geo.mapButtons.geolocate' | translate)\"\n matTooltipPosition=\"left\"\n [color]=\"color\"\n (click)=\"onGeolocationClick()\">\n <mat-icon svgIcon=\"{{icon$ | async}}\"></mat-icon>\n </button>\n</div>\n", styles: [".igo-geolocate-button-container{width:40px;background-color:#fff}.igo-geolocate-button-container:hover{background-color:#efefef}button,:host ::ng-deep button .mat-button-ripple-round{border-radius:0}\n"] }]
@@ -9355,7 +9356,7 @@ HomeExtentButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: H
9355
9356
  } if (rf & 2) {
9356
9357
  i0.ɵɵadvance(1);
9357
9358
  i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(2, 2, "igo.geo.mapButtons.home-extent"))("color", ctx.color);
9358
- } }, dependencies: [i2.MatIcon, i3.MatButton, i4.MatTooltip, i7.TranslatePipe], styles: ["@charset \"UTF-8\";.igo-home-extent-button-container[_ngcontent-%COMP%]{width:40px;background-color:#fff}\\a0[_ngcontent-%COMP%] .igo-home-extent-button-container[_ngcontent-%COMP%]:hover{background-color:#efefef}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}"] });
9359
+ } }, dependencies: [i2.MatIcon, i3$1.MatButton, i4.MatTooltip, i7.TranslatePipe], styles: ["@charset \"UTF-8\";.igo-home-extent-button-container[_ngcontent-%COMP%]{width:40px;background-color:#fff}\\a0[_ngcontent-%COMP%] .igo-home-extent-button-container[_ngcontent-%COMP%]:hover{background-color:#efefef}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}"] });
9359
9360
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HomeExtentButtonComponent, [{
9360
9361
  type: Component,
9361
9362
  args: [{ selector: 'igo-home-extent-button', template: "<div class=\"igo-home-extent-button-container\"><button\r\n \u00A0 \u00A0 mat-icon-button\r\n \u00A0 \u00A0 [matTooltip]=\"'igo.geo.mapButtons.home-extent' | translate\"\r\n matTooltipPosition=\"left\"\r\n \u00A0 \u00A0 [color]=\"color\"\r\n \u00A0 \u00A0 (click)=\"onToggleClick()\"><mat-icon svgIcon = \"home-map-marker\"></mat-icon></button></div>\r\n", styles: ["@charset \"UTF-8\";.igo-home-extent-button-container{width:40px;background-color:#fff}\\a0 .igo-home-extent-button-container:hover{background-color:#efefef}button,:host ::ng-deep button .mat-button-ripple-round{border-radius:0}\n"] }]
@@ -9371,7 +9372,7 @@ HomeExtentButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: H
9371
9372
  type: Input
9372
9373
  }] }); })();
9373
9374
 
9374
- const _c0$k = function (a0) { return [a0]; };
9375
+ const _c0$l = function (a0) { return [a0]; };
9375
9376
  function OfflineButtonComponent_div_0_Template(rf, ctx) { if (rf & 1) {
9376
9377
  const _r2 = i0.ɵɵgetCurrentView();
9377
9378
  i0.ɵɵelementStart(0, "div", 1)(1, "div")(2, "button", 2);
@@ -9383,7 +9384,7 @@ function OfflineButtonComponent_div_0_Template(rf, ctx) { if (rf & 1) {
9383
9384
  } if (rf & 2) {
9384
9385
  const ctx_r0 = i0.ɵɵnextContext();
9385
9386
  i0.ɵɵadvance(2);
9386
- i0.ɵɵproperty("matTooltip", ctx_r0.checked ? i0.ɵɵpipeBind1(3, 3, "igo.geo.mapButtons.online") : i0.ɵɵpipeBind1(4, 5, "igo.geo.mapButtons.offline"))("ngClass", i0.ɵɵpureFunction1(7, _c0$k, ctx_r0.btnStyle))("color", ctx_r0.checked ? ctx_r0.color : i0.ɵɵpureFunction1(9, _c0$k, ctx_r0.colorOff));
9387
+ i0.ɵɵproperty("matTooltip", ctx_r0.checked ? i0.ɵɵpipeBind1(3, 3, "igo.geo.mapButtons.online") : i0.ɵɵpipeBind1(4, 5, "igo.geo.mapButtons.offline"))("ngClass", i0.ɵɵpureFunction1(7, _c0$l, ctx_r0.btnStyle))("color", ctx_r0.checked ? ctx_r0.color : i0.ɵɵpureFunction1(9, _c0$l, ctx_r0.colorOff));
9387
9388
  } }
9388
9389
  class OfflineButtonComponent {
9389
9390
  constructor(config) {
@@ -9425,7 +9426,7 @@ OfflineButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Offl
9425
9426
  i0.ɵɵtemplate(0, OfflineButtonComponent_div_0_Template, 6, 11, "div", 0);
9426
9427
  } if (rf & 2) {
9427
9428
  i0.ɵɵproperty("ngIf", ctx.visible);
9428
- } }, dependencies: [i1$1.NgClass, i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i7.TranslatePipe], styles: [".baseStyle[_ngcontent-%COMP%]{width:40px;background-color:#fff}.baseStyle[_ngcontent-%COMP%]:hover{background-color:#efefef}.toggleStyle[_ngcontent-%COMP%]{width:40px;background-color:#b9b9b9}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}"] });
9429
+ } }, dependencies: [i1.NgClass, i1.NgIf, i2.MatIcon, i3$1.MatButton, i4.MatTooltip, i7.TranslatePipe], styles: [".baseStyle[_ngcontent-%COMP%]{width:40px;background-color:#fff}.baseStyle[_ngcontent-%COMP%]:hover{background-color:#efefef}.toggleStyle[_ngcontent-%COMP%]{width:40px;background-color:#b9b9b9}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}"] });
9429
9430
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OfflineButtonComponent, [{
9430
9431
  type: Component,
9431
9432
  args: [{ selector: 'igo-offline-button', template: "<div *ngIf=\"visible\" class=\"igo-user-button-container\">\n <div>\n <button\n mat-icon-button\n [matTooltip]=\"checked ? ('igo.geo.mapButtons.online' | translate): ('igo.geo.mapButtons.offline' | translate)\"\n matTooltipPosition=\"left\"\n [ngClass]=\"[btnStyle]\"\n [color]=\"checked ? color : [colorOff]\"\n (click)=\"onToggle()\"\n (click)=\"map.onOfflineToggle(check)\">\n <mat-icon svgIcon=\"wifi-strength-off\"></mat-icon>\n </button>\n </div>\n</div>", styles: [".baseStyle{width:40px;background-color:#fff}.baseStyle:hover{background-color:#efefef}.toggleStyle{width:40px;background-color:#b9b9b9}button,:host ::ng-deep button .mat-button-ripple-round{border-radius:0}\n"] }]
@@ -9530,7 +9531,7 @@ WakeLockButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Wak
9530
9531
  i0.ɵɵtemplate(0, WakeLockButtonComponent_div_0_Template, 7, 9, "div", 0);
9531
9532
  } if (rf & 2) {
9532
9533
  i0.ɵɵproperty("ngIf", ctx.visible);
9533
- } }, dependencies: [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".igo-wake-lock-button-container[_ngcontent-%COMP%]{width:40px;background-color:#fff}.igo-wake-lock-button-container[_ngcontent-%COMP%]:hover{background-color:#efefef}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}"] });
9534
+ } }, dependencies: [i1.NgIf, i2.MatIcon, i3$1.MatButton, i4.MatTooltip, i1.AsyncPipe, i7.TranslatePipe], styles: [".igo-wake-lock-button-container[_ngcontent-%COMP%]{width:40px;background-color:#fff}.igo-wake-lock-button-container[_ngcontent-%COMP%]:hover{background-color:#efefef}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}"] });
9534
9535
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WakeLockButtonComponent, [{
9535
9536
  type: Component,
9536
9537
  args: [{ selector: 'igo-wake-lock-button', template: "<div *ngIf=\"visible\" class=\"igo-wake-lock-button-container\">\n <div>\n <button \n [color]=\"color\"\n mat-icon-button\n [matTooltip]=\"enabled ? ('igo.geo.mapButtons.preventSreenLock' | translate): ('igo.geo.mapButtons.letScreenLock' | translate)\"\n matTooltipPosition=\"left\"\n (click)=\"toggleWakeLock()\">\n <mat-icon svgIcon=\"{{icon$ | async}}\"></mat-icon>\n </button>\n </div>\n</div>", styles: [".igo-wake-lock-button-container{width:40px;background-color:#fff}.igo-wake-lock-button-container:hover{background-color:#efefef}button,:host ::ng-deep button .mat-button-ripple-round{border-radius:0}\n"] }]
@@ -9579,7 +9580,7 @@ function BaseLayersSwitcherComponent_div_0_igo_mini_basemap_2_Template(rf, ctx)
9579
9580
  const ctx_r2 = i0.ɵɵnextContext(2);
9580
9581
  i0.ɵɵproperty("map", ctx_r2.map)("baseLayer", baseLayer_r3)("title", ctx_r2.baseLayers.length > 2 && !ctx_r2.expand ? i0.ɵɵpipeBind1(1, 5, "igo.geo.baselayersSwitcher.title") : baseLayer_r3.title)("display", ctx_r2.expand || i_r4 === 0 && !ctx_r2.useStaticIcon)("disabled", !ctx_r2.expand && ctx_r2.baseLayers.length > 1);
9581
9582
  } }
9582
- const _c0$j = function (a0) { return { "container-expand": a0 }; };
9583
+ const _c0$k = function (a0) { return { "container-expand": a0 }; };
9583
9584
  function BaseLayersSwitcherComponent_div_0_Template(rf, ctx) { if (rf & 1) {
9584
9585
  const _r6 = i0.ɵɵgetCurrentView();
9585
9586
  i0.ɵɵelementStart(0, "div", 1);
@@ -9591,7 +9592,7 @@ function BaseLayersSwitcherComponent_div_0_Template(rf, ctx) { if (rf & 1) {
9591
9592
  i0.ɵɵelementEnd()();
9592
9593
  } if (rf & 2) {
9593
9594
  const ctx_r0 = i0.ɵɵnextContext();
9594
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(4, _c0$j, ctx_r0.expand))("@baseLayerSwitcherState", ctx_r0.expand ? "expand" : ctx_r0.useStaticIcon ? "collapseIcon" : "collapseMap");
9595
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(4, _c0$k, ctx_r0.expand))("@baseLayerSwitcherState", ctx_r0.expand ? "expand" : ctx_r0.useStaticIcon ? "collapseIcon" : "collapseMap");
9595
9596
  i0.ɵɵadvance(1);
9596
9597
  i0.ɵɵproperty("ngIf", ctx_r0.useStaticIcon && !ctx_r0.expand && ctx_r0.showButton);
9597
9598
  i0.ɵɵadvance(1);
@@ -9804,14 +9805,14 @@ class GeoDBService {
9804
9805
  return this._newData;
9805
9806
  }
9806
9807
  }
9807
- GeoDBService.ɵfac = function GeoDBService_Factory(t) { return new (t || GeoDBService)(i0.ɵɵinject(i1$3.NgxIndexedDBService), i0.ɵɵinject(i2$1.CompressionService)); };
9808
+ GeoDBService.ɵfac = function GeoDBService_Factory(t) { return new (t || GeoDBService)(i0.ɵɵinject(i1$2.NgxIndexedDBService), i0.ɵɵinject(i2$1.CompressionService)); };
9808
9809
  GeoDBService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: GeoDBService, factory: GeoDBService.ɵfac, providedIn: 'root' });
9809
9810
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GeoDBService, [{
9810
9811
  type: Injectable,
9811
9812
  args: [{
9812
9813
  providedIn: 'root'
9813
9814
  }]
9814
- }], function () { return [{ type: i1$3.NgxIndexedDBService }, { type: i2$1.CompressionService }]; }, null); })();
9815
+ }], function () { return [{ type: i1$2.NgxIndexedDBService }, { type: i2$1.CompressionService }]; }, null); })();
9815
9816
 
9816
9817
  var ResponseType;
9817
9818
  (function (ResponseType) {
@@ -9865,14 +9866,14 @@ class GeoNetworkService {
9865
9866
  return this.networkOnline && window.navigator.onLine;
9866
9867
  }
9867
9868
  }
9868
- GeoNetworkService.ɵfac = function GeoNetworkService_Factory(t) { return new (t || GeoNetworkService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(GeoDBService), i0.ɵɵinject(i2$1.NetworkService)); };
9869
+ GeoNetworkService.ɵfac = function GeoNetworkService_Factory(t) { return new (t || GeoNetworkService)(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(GeoDBService), i0.ɵɵinject(i2$1.NetworkService)); };
9869
9870
  GeoNetworkService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: GeoNetworkService, factory: GeoNetworkService.ɵfac, providedIn: 'root' });
9870
9871
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GeoNetworkService, [{
9871
9872
  type: Injectable,
9872
9873
  args: [{
9873
9874
  providedIn: 'root'
9874
9875
  }]
9875
- }], function () { return [{ type: i1$2.HttpClient }, { type: GeoDBService }, { type: i2$1.NetworkService }]; }, null); })();
9876
+ }], function () { return [{ type: i1$1.HttpClient }, { type: GeoDBService }, { type: i2$1.NetworkService }]; }, null); })();
9876
9877
 
9877
9878
  class LayerService {
9878
9879
  constructor(http, styleService, dataSourceService, geoNetwork, messageService, languageService, authInterceptor) {
@@ -10034,14 +10035,14 @@ class LayerService {
10034
10035
  }
10035
10036
  }
10036
10037
  }
10037
- LayerService.ɵfac = function LayerService_Factory(t) { return new (t || LayerService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(StyleService), i0.ɵɵinject(DataSourceService), i0.ɵɵinject(GeoNetworkService), i0.ɵɵinject(i2$1.MessageService), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i6.AuthInterceptor, 8)); };
10038
+ LayerService.ɵfac = function LayerService_Factory(t) { return new (t || LayerService)(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(StyleService), i0.ɵɵinject(DataSourceService), i0.ɵɵinject(GeoNetworkService), i0.ɵɵinject(i2$1.MessageService), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i6.AuthInterceptor, 8)); };
10038
10039
  LayerService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LayerService, factory: LayerService.ɵfac, providedIn: 'root' });
10039
10040
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayerService, [{
10040
10041
  type: Injectable,
10041
10042
  args: [{
10042
10043
  providedIn: 'root'
10043
10044
  }]
10044
- }], function () { return [{ type: i1$2.HttpClient }, { type: StyleService }, { type: DataSourceService }, { type: GeoNetworkService }, { type: i2$1.MessageService }, { type: i2$1.LanguageService }, { type: i6.AuthInterceptor, decorators: [{
10045
+ }], function () { return [{ type: i1$1.HttpClient }, { type: StyleService }, { type: DataSourceService }, { type: GeoNetworkService }, { type: i2$1.MessageService }, { type: i2$1.LanguageService }, { type: i6.AuthInterceptor, decorators: [{
10045
10046
  type: Optional
10046
10047
  }] }]; }, null); })();
10047
10048
 
@@ -10069,14 +10070,23 @@ function MiniBaseMapComponent_div_1_Template(rf, ctx) { if (rf & 1) {
10069
10070
  i0.ɵɵproperty("ngIf", ctx_r0.title);
10070
10071
  } }
10071
10072
  class MiniBaseMapComponent {
10072
- constructor(layerService, appRef) {
10073
+ constructor(layerService, appRef, cdRef) {
10073
10074
  this.layerService = layerService;
10074
10075
  this.appRef = appRef;
10076
+ this.cdRef = cdRef;
10075
10077
  this.basemap = new IgoMap({
10076
10078
  controls: {},
10077
10079
  interactions: false
10078
10080
  });
10079
10081
  }
10082
+ get display() {
10083
+ return this._display;
10084
+ }
10085
+ set display(value) {
10086
+ this._display = value;
10087
+ this.cdRef.detectChanges();
10088
+ this.basemap.ol.getView().changed();
10089
+ }
10080
10090
  get baseLayer() {
10081
10091
  return this._baseLayer;
10082
10092
  }
@@ -10150,8 +10160,8 @@ class MiniBaseMapComponent {
10150
10160
  }
10151
10161
  }
10152
10162
  }
10153
- MiniBaseMapComponent.ɵfac = function MiniBaseMapComponent_Factory(t) { return new (t || MiniBaseMapComponent)(i0.ɵɵdirectiveInject(LayerService), i0.ɵɵdirectiveInject(i0.ApplicationRef)); };
10154
- MiniBaseMapComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MiniBaseMapComponent, selectors: [["igo-mini-basemap"]], inputs: { map: "map", disabled: "disabled", display: "display", title: "title", baseLayer: "baseLayer" }, decls: 2, vars: 1, consts: [[1, "igo-mini-basemap-container"], [3, "click", 4, "ngIf"], [3, "click"], [3, "map"], ["class", "igo-mini-basemap-title", 4, "ngIf"], [1, "igo-mini-basemap-title"]], template: function MiniBaseMapComponent_Template(rf, ctx) { if (rf & 1) {
10163
+ MiniBaseMapComponent.ɵfac = function MiniBaseMapComponent_Factory(t) { return new (t || MiniBaseMapComponent)(i0.ɵɵdirectiveInject(LayerService), i0.ɵɵdirectiveInject(i0.ApplicationRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
10164
+ MiniBaseMapComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MiniBaseMapComponent, selectors: [["igo-mini-basemap"]], inputs: { map: "map", disabled: "disabled", title: "title", display: "display", baseLayer: "baseLayer" }, decls: 2, vars: 1, consts: [[1, "igo-mini-basemap-container"], [3, "click", 4, "ngIf"], [3, "click"], [3, "map"], ["class", "igo-mini-basemap-title", 4, "ngIf"], [1, "igo-mini-basemap-title"]], template: function MiniBaseMapComponent_Template(rf, ctx) { if (rf & 1) {
10155
10165
  i0.ɵɵelementStart(0, "div", 0);
10156
10166
  i0.ɵɵtemplate(1, MiniBaseMapComponent_div_1_Template, 3, 2, "div", 1);
10157
10167
  i0.ɵɵelementEnd();
@@ -10162,19 +10172,19 @@ MiniBaseMapComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MiniBa
10162
10172
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MiniBaseMapComponent, [{
10163
10173
  type: Component,
10164
10174
  args: [{ selector: 'igo-mini-basemap', template: "<div class=\"igo-mini-basemap-container\">\n\n <div *ngIf=\"display\" (click)=\"changeBaseLayer(baseLayer)\">\n <igo-map-browser [map]=\"basemap\"></igo-map-browser>\n <div *ngIf='title' class='igo-mini-basemap-title'> {{title}} </div>\n </div>\n\n</div>\n", styles: [".igo-mini-basemap-container{width:80px;height:80px;background-color:#ffffff03;border:2px solid white;box-shadow:0 1px 4px #0000004d;cursor:pointer;margin-top:5px}.igo-mini-basemap-container:hover .igo-mini-basemap-title{color:#000;text-shadow:0 0 5px white}.igo-mini-basemap-container>div{width:100%;height:100%}.igo-mini-basemap-title{position:relative;top:-76px;height:76px;width:76px;text-align:center;vertical-align:bottom;color:#fff;text-shadow:0 0 5px black;white-space:normal;display:flex;align-items:flex-end;justify-content:center}\n"] }]
10165
- }], function () { return [{ type: LayerService }, { type: i0.ApplicationRef }]; }, { map: [{
10175
+ }], function () { return [{ type: LayerService }, { type: i0.ApplicationRef }, { type: i0.ChangeDetectorRef }]; }, { map: [{
10166
10176
  type: Input
10167
10177
  }], disabled: [{
10168
10178
  type: Input
10169
- }], display: [{
10170
- type: Input
10171
10179
  }], title: [{
10172
10180
  type: Input
10181
+ }], display: [{
10182
+ type: Input
10173
10183
  }], baseLayer: [{
10174
10184
  type: Input
10175
10185
  }] }); })();
10176
10186
 
10177
- const _c0$i = function (a0, a1) { return { azimuth: a0, rotation: a1 }; };
10187
+ const _c0$j = function (a0, a1) { return { azimuth: a0, rotation: a1 }; };
10178
10188
  function RotationButtonComponent_div_0_Template(rf, ctx) { if (rf & 1) {
10179
10189
  const _r2 = i0.ɵɵgetCurrentView();
10180
10190
  i0.ɵɵelementStart(0, "div", 1);
@@ -10189,7 +10199,7 @@ function RotationButtonComponent_div_0_Template(rf, ctx) { if (rf & 1) {
10189
10199
  i0.ɵɵelementEnd()();
10190
10200
  } if (rf & 2) {
10191
10201
  const ctx_r0 = i0.ɵɵnextContext();
10192
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 4, ctx_r0.rotated$) ? i0.ɵɵpipeBind2(2, 6, "igo.geo.mapButtons.resetRotation", i0.ɵɵpureFunction2(15, _c0$i, ctx_r0.azimuthRounded, ctx_r0.rotationRounded)) : i0.ɵɵpipeBind1(3, 9, "igo.geo.mapButtons.tipRotation"));
10202
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 4, ctx_r0.rotated$) ? i0.ɵɵpipeBind2(2, 6, "igo.geo.mapButtons.resetRotation", i0.ɵɵpureFunction2(15, _c0$j, ctx_r0.azimuthRounded, ctx_r0.rotationRounded)) : i0.ɵɵpipeBind1(3, 9, "igo.geo.mapButtons.tipRotation"));
10193
10203
  i0.ɵɵadvance(4);
10194
10204
  i0.ɵɵproperty("color", ctx_r0.color)("disabled", i0.ɵɵpipeBind1(5, 11, ctx_r0.rotated$) === false);
10195
10205
  i0.ɵɵadvance(2);
@@ -10223,7 +10233,7 @@ RotationButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Rot
10223
10233
  i0.ɵɵpipe(1, "async");
10224
10234
  } if (rf & 2) {
10225
10235
  i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 1, ctx.rotated$) && !ctx.showIfNoRotation || ctx.showIfNoRotation);
10226
- } }, dependencies: [i1$1.NgIf, i1$1.NgStyle, i2.MatIcon, i3.MatButton, i4.MatTooltip, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".igo-rotation-button-container[_ngcontent-%COMP%]{width:40px;background-color:#fff}.igo-rotation-button-container[_ngcontent-%COMP%]:hover{background-color:#efefef}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){button[_ngcontent-%COMP%]:disabled, [_nghost-%COMP%] button .mat-button-ripple-round:disabled{display:none}}"] });
10236
+ } }, dependencies: [i1.NgIf, i1.NgStyle, i2.MatIcon, i3$1.MatButton, i4.MatTooltip, i1.AsyncPipe, i7.TranslatePipe], styles: [".igo-rotation-button-container[_ngcontent-%COMP%]{width:40px;background-color:#fff}.igo-rotation-button-container[_ngcontent-%COMP%]:hover{background-color:#efefef}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){button[_ngcontent-%COMP%]:disabled, [_nghost-%COMP%] button .mat-button-ripple-round:disabled{display:none}}"] });
10227
10237
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RotationButtonComponent, [{
10228
10238
  type: Component,
10229
10239
  args: [{ selector: 'igo-rotation-button', template: "<div *ngIf=\"((rotated$ | async) && !showIfNoRotation) || showIfNoRotation\" class=\"igo-rotation-button-container\"\n [matTooltip]=\"(rotated$ | async) ? ('igo.geo.mapButtons.resetRotation' | translate: {azimuth: azimuthRounded, rotation: rotationRounded}): ('igo.geo.mapButtons.tipRotation' | translate)\"\n matTooltipPosition=\"left\">\n <button mat-icon-button matTooltipPosition=\"left\" [color]=\"color\" [disabled]=\"(rotated$ | async) === false\"\n (click)=\"map.viewController.resetRotation()\">\n <mat-icon [ngStyle]=\"currentStyle$ | async\" svgIcon=\"navigation\">\n </mat-icon>\n </button>\n</div>\n", styles: [".igo-rotation-button-container{width:40px;background-color:#fff}.igo-rotation-button-container:hover{background-color:#efefef}button,:host ::ng-deep button .mat-button-ripple-round{border-radius:0}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){button:disabled,:host ::ng-deep button .mat-button-ripple-round:disabled{display:none}}\n"] }]
@@ -10492,7 +10502,7 @@ InfoSectionComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: InfoSe
10492
10502
  i0.ɵɵtemplate(0, InfoSectionComponent_div_0_Template, 3, 1, "div", 0);
10493
10503
  } if (rf & 2) {
10494
10504
  i0.ɵɵproperty("ngIf", ctx.infoContent && ctx.infoContent.length);
10495
- } }, dependencies: [i1$1.NgIf], styles: [".infoSection[_ngcontent-%COMP%]{border-radius:10px;background-color:#6e6e6e66;padding:2.5px;position:absolute;text-align:center;top:5px;left:50%;text-shadow:0 0 5px white,0 0 10px white,0 0 15px white}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.infoSection[_ngcontent-%COMP%]{top:50px;left:10%}}"] });
10505
+ } }, dependencies: [i1.NgIf], styles: [".infoSection[_ngcontent-%COMP%]{border-radius:10px;background-color:#6e6e6e66;padding:2.5px;position:absolute;text-align:center;top:5px;left:50%;text-shadow:0 0 5px white,0 0 10px white,0 0 15px white}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.infoSection[_ngcontent-%COMP%]{top:50px;left:10%}}"] });
10496
10506
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoSectionComponent, [{
10497
10507
  type: Component,
10498
10508
  args: [{ selector: 'igo-info-section', template: "<div *ngIf=\"infoContent && infoContent.length\" class=\"infoSection\">\n <pre>{{infoContent}}</pre>\n</div>", styles: [".infoSection{border-radius:10px;background-color:#6e6e6e66;padding:2.5px;position:absolute;text-align:center;top:5px;left:50%;text-shadow:0 0 5px white,0 0 10px white,0 0 15px white}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.infoSection{top:50px;left:10%}}\n"] }]
@@ -10626,29 +10636,119 @@ class QueryService {
10626
10636
  this.messageService.remove(id);
10627
10637
  });
10628
10638
  }
10629
- return layers
10630
- .filter((layer) => layer.visible && layer.isInResolutionsRange)
10639
+ const newLayers = layers.filter((layer) => layer.visible && layer.isInResolutionsRange)
10631
10640
  .map((layer) => this.queryLayer(layer, options));
10641
+ // the directive accept array in this format [observable, observable...]
10642
+ // if we use multiple 'url' in queryUrl so the result => this form [observable, observable, [observable, observable]]
10643
+ // so we need to flat the array
10644
+ let flatArray = [].concat.apply([], newLayers);
10645
+ return flatArray;
10632
10646
  }
10633
10647
  queryLayer(layer, options) {
10634
10648
  const url = this.getQueryUrl(layer.dataSource, options, false, layer.map.viewController.getExtent());
10635
10649
  if (!url) {
10636
10650
  return of([]);
10637
10651
  }
10638
- if (layer.dataSource.options.queryFormat ===
10639
- QueryFormat.HTMLGML2) {
10640
- const urlGml = this.getQueryUrl(layer.dataSource, options, true);
10641
- return this.http.get(urlGml, { responseType: 'text' }).pipe(mergeMap(gmlRes => {
10642
- const mergedGML = this.mergeGML(gmlRes, url, layer);
10643
- const imposedGeom = mergedGML[0];
10644
- const imposedProperties = mergedGML[1];
10645
- return this.http
10646
- .get(url, { responseType: 'text' })
10647
- .pipe(map(res => this.extractData(res, layer, options, url, imposedGeom, imposedProperties)));
10648
- }));
10652
+ const resolution = layer.map.viewController.getResolution();
10653
+ const scale = layer.map.viewController.getScale();
10654
+ if (layer.dataSource.options.queryFormat === QueryFormat.HTMLGML2) {
10655
+ if (typeof url === 'string') {
10656
+ const urlGml = this.getQueryUrl(layer.dataSource, options, true);
10657
+ return this.http.get(urlGml, { responseType: 'text' }).pipe(mergeMap(gmlRes => {
10658
+ const mergedGML = this.mergeGML(gmlRes, url, layer);
10659
+ const imposedGeom = mergedGML[0];
10660
+ const imposedProperties = mergedGML[1];
10661
+ return this.http
10662
+ .get(url, { responseType: 'text' })
10663
+ .pipe(map(res => this.extractData(res, layer, options, url, imposedGeom, imposedProperties)));
10664
+ }));
10665
+ }
10666
+ const urlGmls = this.getQueryUrl(layer.dataSource, options, true);
10667
+ let observables = [];
10668
+ for (let i = 0; i < urlGmls.length; i++) {
10669
+ const element = urlGmls[i];
10670
+ if (this.checkScaleAndResolution(resolution, scale, element)) {
10671
+ observables.push(this.requestDataForHTMLGML2(element.url, url[i].url, layer, options));
10672
+ }
10673
+ }
10674
+ return observables;
10675
+ }
10676
+ else {
10677
+ if (typeof url === 'string') {
10678
+ const request = this.http.get(url, { responseType: 'text' });
10679
+ return request.pipe(map(res => this.extractData(res, layer, options, url)));
10680
+ }
10681
+ let observables = [];
10682
+ for (let i = 0; i < url.length; i++) {
10683
+ const element = url[i];
10684
+ if (this.checkScaleAndResolution(resolution, scale, element)) {
10685
+ const request = this.http.get(element.url, { responseType: 'text' });
10686
+ observables.push(request.pipe(map(res => this.extractData(res, layer, options, element.url))));
10687
+ }
10688
+ }
10689
+ return observables;
10690
+ }
10691
+ }
10692
+ requestDataForHTMLGML2(urlGml, url, layer, options) {
10693
+ return this.http.get(urlGml, { responseType: 'text' }).pipe(mergeMap(gmlRes => {
10694
+ const mergedGML = this.mergeGML(gmlRes, url, layer);
10695
+ const imposedGeom = mergedGML[0];
10696
+ const imposedProperties = mergedGML[1];
10697
+ return this.http
10698
+ .get(url, { responseType: 'text' })
10699
+ .pipe(map(res => this.extractData(res, layer, options, url, imposedGeom, imposedProperties)));
10700
+ }));
10701
+ }
10702
+ checkScaleAndResolution(resolution, scale, element) {
10703
+ let checkScale;
10704
+ let checkResolution;
10705
+ if (!element.minResolution && !element.maxResolution && !element.minScale && !element.maxScale) {
10706
+ return true;
10707
+ }
10708
+ else {
10709
+ /******************* checking Resolution *******************/
10710
+ if (element.minResolution && element.maxResolution) {
10711
+ // if "minResolution" and "maxResolution" exists check if resoltion is between
10712
+ if ((resolution >= element.minResolution) && (resolution <= element.maxResolution)) {
10713
+ checkResolution = true;
10714
+ }
10715
+ }
10716
+ else {
10717
+ // check if "minResolution" or "maxResolution" exists
10718
+ if (element.minResolution && resolution >= element.minResolution) {
10719
+ checkResolution = true;
10720
+ }
10721
+ if (element.maxResolution && resolution <= element.maxResolution) {
10722
+ checkResolution = true;
10723
+ }
10724
+ }
10725
+ /******************* checking Scale *******************/
10726
+ if (element.minScale && element.maxScale) {
10727
+ // if "minScale" and "maxScale" exists check if scale is between
10728
+ if ((scale > element.minScale) && (scale < element.maxScale)) {
10729
+ checkScale = true;
10730
+ }
10731
+ }
10732
+ else {
10733
+ // check if "minScale" or "maxScale" exists
10734
+ if (element.maxScale && scale <= element.maxScale) {
10735
+ checkScale = true;
10736
+ }
10737
+ if (element.minScale && scale >= element.minScale) {
10738
+ checkScale = true;
10739
+ }
10740
+ }
10741
+ /******************* result of checking *******************/
10742
+ if (checkScale === true && checkResolution === true) {
10743
+ return true;
10744
+ }
10745
+ else if ((checkResolution === true && !checkScale) || (checkScale === true && !checkResolution)) {
10746
+ return true;
10747
+ }
10748
+ else {
10749
+ return false;
10750
+ }
10649
10751
  }
10650
- const request = this.http.get(url, { responseType: 'text' });
10651
- return request.pipe(map(res => this.extractData(res, layer, options, url)));
10652
10752
  }
10653
10753
  mergeGML(gmlRes, url, layer) {
10654
10754
  const parser = new olFormatGML2();
@@ -10741,18 +10841,22 @@ class QueryService {
10741
10841
  type: olmline.getType(),
10742
10842
  coordinates: olmline.getCoordinates()
10743
10843
  };
10844
+ break;
10744
10845
  case 'Point':
10745
10846
  returnGeometry = olmpts;
10847
+ break;
10746
10848
  case 'Polygon':
10747
10849
  returnGeometry = {
10748
10850
  type: olmpoly.getType(),
10749
10851
  coordinates: olmpoly.getCoordinates()
10750
10852
  };
10853
+ break;
10751
10854
  case 'MultiPolygon':
10752
10855
  returnGeometry = {
10753
10856
  type: olmpoly.getType(),
10754
10857
  coordinates: olmpoly.getCoordinates()
10755
10858
  };
10859
+ break;
10756
10860
  }
10757
10861
  const imposedProperties = {};
10758
10862
  if (queryTileField) {
@@ -11054,7 +11158,7 @@ class QueryService {
11054
11158
  }
11055
11159
  getQueryUrl(datasource, options, forceGML2 = false, mapExtent) {
11056
11160
  let url;
11057
- if (datasource.options.queryUrl) {
11161
+ if (datasource.options.queryUrls) {
11058
11162
  return this.getCustomQueryUrl(datasource, options, mapExtent);
11059
11163
  }
11060
11164
  switch (datasource.constructor) {
@@ -11191,26 +11295,46 @@ class QueryService {
11191
11295
  */
11192
11296
  getCustomQueryUrl(datasource, options, mapExtent) {
11193
11297
  const extent = olextent.getForViewAndSize(options.coordinates, options.resolution, 0, [101, 101]);
11194
- let url = datasource.options.queryUrl.replace(/\{bbox\}/g, extent.join(','))
11195
- .replace(/\{xmin\}/g, mapExtent[0].toString())
11196
- .replace(/\{ymin\}/g, mapExtent[1].toString())
11197
- .replace(/\{xmax\}/g, mapExtent[2].toString())
11198
- .replace(/\{ymax\}/g, mapExtent[3].toString())
11199
- .replace(/\{x\}/g, options.coordinates[0].toString())
11200
- .replace(/\{y\}/g, options.coordinates[1].toString())
11201
- .replace(/\{resolution\}/g, options.resolution.toString())
11202
- .replace(/\{srid\}/g, options.projection.replace('EPSG:', ''));
11203
- return url;
11298
+ return datasource.options.queryUrls.map(item => {
11299
+ let data = {
11300
+ url: item.url.replace(/\{bbox\}/g, extent.join(','))
11301
+ .replace(/\{x\}/g, options.coordinates[0].toString())
11302
+ .replace(/\{y\}/g, options.coordinates[1].toString())
11303
+ .replace(/\{resolution\}/g, options.resolution.toString())
11304
+ .replace(/\{srid\}/g, options.projection.replace('EPSG:', ''))
11305
+ };
11306
+ // if the queryFormat changed to "QueryFormat.HTMLGML2": mapExtent will be undefined
11307
+ // we need to check "mapExtent" befor replace variables in the url
11308
+ if (mapExtent) {
11309
+ data.url.replace(/\{xmin\}/g, mapExtent[0].toString())
11310
+ .replace(/\{ymin\}/g, mapExtent[1].toString())
11311
+ .replace(/\{xmax\}/g, mapExtent[2].toString())
11312
+ .replace(/\{ymax\}/g, mapExtent[3].toString());
11313
+ }
11314
+ if (item.maxResolution) {
11315
+ data.maxResolution = item.maxResolution;
11316
+ }
11317
+ if (item.minResolution) {
11318
+ data.minResolution = item.minResolution;
11319
+ }
11320
+ if (item.minScale) {
11321
+ data.minScale = item.minScale;
11322
+ }
11323
+ if (item.maxScale) {
11324
+ data.maxScale = item.maxScale;
11325
+ }
11326
+ return data;
11327
+ });
11204
11328
  }
11205
11329
  }
11206
- QueryService.ɵfac = function QueryService_Factory(t) { return new (t || QueryService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i2$1.MessageService), i0.ɵɵinject(i2$1.LanguageService)); };
11330
+ QueryService.ɵfac = function QueryService_Factory(t) { return new (t || QueryService)(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(i2$1.MessageService), i0.ɵɵinject(i2$1.LanguageService)); };
11207
11331
  QueryService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: QueryService, factory: QueryService.ɵfac, providedIn: 'root' });
11208
11332
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(QueryService, [{
11209
11333
  type: Injectable,
11210
11334
  args: [{
11211
11335
  providedIn: 'root'
11212
11336
  }]
11213
- }], function () { return [{ type: i1$2.HttpClient }, { type: i2$1.MessageService }, { type: i2$1.LanguageService }]; }, null); })();
11337
+ }], function () { return [{ type: i1$1.HttpClient }, { type: i2$1.MessageService }, { type: i2$1.LanguageService }]; }, null); })();
11214
11338
 
11215
11339
  /**
11216
11340
  * Whether a layer is queryable
@@ -12384,14 +12508,14 @@ class CatalogService {
12384
12508
  return layersQueryFormat;
12385
12509
  }
12386
12510
  }
12387
- CatalogService.ɵfac = function CatalogService_Factory(t) { return new (t || CatalogService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i2$1.ConfigService), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.MessageService), i0.ɵɵinject(CapabilitiesService)); };
12511
+ CatalogService.ɵfac = function CatalogService_Factory(t) { return new (t || CatalogService)(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(i2$1.ConfigService), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.MessageService), i0.ɵɵinject(CapabilitiesService)); };
12388
12512
  CatalogService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CatalogService, factory: CatalogService.ɵfac, providedIn: 'root' });
12389
12513
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CatalogService, [{
12390
12514
  type: Injectable,
12391
12515
  args: [{
12392
12516
  providedIn: 'root'
12393
12517
  }]
12394
- }], function () { return [{ type: i1$2.HttpClient }, { type: i2$1.ConfigService }, { type: i2$1.LanguageService }, { type: i2$1.MessageService }, { type: CapabilitiesService }]; }, null); })();
12518
+ }], function () { return [{ type: i1$1.HttpClient }, { type: i2$1.ConfigService }, { type: i2$1.LanguageService }, { type: i2$1.MessageService }, { type: CapabilitiesService }]; }, null); })();
12395
12519
 
12396
12520
  function CatalogBrowserComponent_ng_template_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
12397
12521
  const _r5 = i0.ɵɵgetCurrentView();
@@ -12405,7 +12529,7 @@ function CatalogBrowserComponent_ng_template_1_ng_container_0_Template(rf, ctx)
12405
12529
  const item_r1 = i0.ɵɵnextContext().$implicit;
12406
12530
  const ctx_r2 = i0.ɵɵnextContext();
12407
12531
  i0.ɵɵadvance(1);
12408
- i0.ɵɵproperty("catalog", ctx_r2.catalog)("group", item_r1)("state", ctx_r2.store.state)("resolution", i0.ɵɵpipeBind1(2, 7, ctx_r2.resolution$))("catalogAllowLegend", ctx_r2.catalogAllowLegend)("collapsed", ctx_r2.store.count === 1 ? false : true)("toggleCollapsed", ctx_r2.toggleCollapsedGroup);
12532
+ i0.ɵɵproperty("catalog", ctx_r2.catalog)("group", item_r1)("map", ctx_r2.map)("state", ctx_r2.store.state)("resolution", i0.ɵɵpipeBind1(2, 8, ctx_r2.resolution$))("catalogAllowLegend", ctx_r2.catalogAllowLegend)("collapsed", ctx_r2.store.count === 1 ? false : true)("toggleCollapsed", ctx_r2.toggleCollapsedGroup);
12409
12533
  } }
12410
12534
  function CatalogBrowserComponent_ng_template_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
12411
12535
  const _r9 = i0.ɵɵgetCurrentView();
@@ -12419,11 +12543,11 @@ function CatalogBrowserComponent_ng_template_1_ng_container_1_Template(rf, ctx)
12419
12543
  const item_r1 = i0.ɵɵnextContext().$implicit;
12420
12544
  const ctx_r3 = i0.ɵɵnextContext();
12421
12545
  i0.ɵɵadvance(1);
12422
- i0.ɵɵproperty("layer", item_r1)("resolution", i0.ɵɵpipeBind1(2, 4, ctx_r3.resolution$))("catalogAllowLegend", ctx_r3.catalogAllowLegend)("added", ctx_r3.store.state.get(item_r1).added);
12546
+ i0.ɵɵproperty("layer", item_r1)("map", ctx_r3.map)("resolution", i0.ɵɵpipeBind1(2, 5, ctx_r3.resolution$))("catalogAllowLegend", ctx_r3.catalogAllowLegend)("added", ctx_r3.store.state.get(item_r1).added);
12423
12547
  } }
12424
12548
  function CatalogBrowserComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
12425
- i0.ɵɵtemplate(0, CatalogBrowserComponent_ng_template_1_ng_container_0_Template, 3, 9, "ng-container", 2);
12426
- i0.ɵɵtemplate(1, CatalogBrowserComponent_ng_template_1_ng_container_1_Template, 3, 6, "ng-container", 2);
12549
+ i0.ɵɵtemplate(0, CatalogBrowserComponent_ng_template_1_ng_container_0_Template, 3, 10, "ng-container", 2);
12550
+ i0.ɵɵtemplate(1, CatalogBrowserComponent_ng_template_1_ng_container_1_Template, 3, 7, "ng-container", 2);
12427
12551
  } if (rf & 2) {
12428
12552
  const item_r1 = ctx.$implicit;
12429
12553
  const ctx_r0 = i0.ɵɵnextContext();
@@ -12609,7 +12733,7 @@ class CatalogBrowserComponent {
12609
12733
  }
12610
12734
  }
12611
12735
  CatalogBrowserComponent.ɵfac = function CatalogBrowserComponent_Factory(t) { return new (t || CatalogBrowserComponent)(i0.ɵɵdirectiveInject(LayerService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
12612
- CatalogBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CatalogBrowserComponent, selectors: [["igo-catalog-browser"]], inputs: { catalogAllowLegend: "catalogAllowLegend", catalog: "catalog", store: "store", map: "map", toggleCollapsedGroup: "toggleCollapsedGroup" }, decls: 3, vars: 5, consts: [[3, "navigation", "selection"], ["ngFor", "", 3, "ngForOf"], [4, "ngIf"], [3, "catalog", "group", "state", "resolution", "catalogAllowLegend", "collapsed", "toggleCollapsed", "addedChange", "layerAddedChange"], ["igoListItem", "", 3, "layer", "resolution", "catalogAllowLegend", "added", "addedChange"]], template: function CatalogBrowserComponent_Template(rf, ctx) { if (rf & 1) {
12736
+ CatalogBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CatalogBrowserComponent, selectors: [["igo-catalog-browser"]], inputs: { catalogAllowLegend: "catalogAllowLegend", catalog: "catalog", store: "store", map: "map", toggleCollapsedGroup: "toggleCollapsedGroup" }, decls: 3, vars: 5, consts: [[3, "navigation", "selection"], ["ngFor", "", 3, "ngForOf"], [4, "ngIf"], [3, "catalog", "group", "map", "state", "resolution", "catalogAllowLegend", "collapsed", "toggleCollapsed", "addedChange", "layerAddedChange"], ["igoListItem", "", 3, "layer", "map", "resolution", "catalogAllowLegend", "added", "addedChange"]], template: function CatalogBrowserComponent_Template(rf, ctx) { if (rf & 1) {
12613
12737
  i0.ɵɵelementStart(0, "igo-list", 0);
12614
12738
  i0.ɵɵtemplate(1, CatalogBrowserComponent_ng_template_1_Template, 2, 2, "ng-template", 1);
12615
12739
  i0.ɵɵpipe(2, "async");
@@ -12621,7 +12745,7 @@ CatalogBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Cat
12621
12745
  } }, encapsulation: 2, changeDetection: 0 });
12622
12746
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CatalogBrowserComponent, [{
12623
12747
  type: Component,
12624
- args: [{ selector: 'igo-catalog-browser', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-list [navigation]=\"false\" [selection]=\"false\">\n <ng-template ngFor let-item [ngForOf]=\"store.view.all$() | async\">\n <ng-container *ngIf=\"isGroup(item)\">\n <igo-catalog-browser-group\n [catalog]=\"catalog\"\n [group]=\"item\"\n [state]=\"store.state\"\n [resolution]=\"resolution$ | async\"\n [catalogAllowLegend]=\"catalogAllowLegend\"\n [collapsed]=\"(store.count === 1) ? false : true\"\n [toggleCollapsed]=\"toggleCollapsedGroup\"\n (addedChange)=\"onGroupAddedChange($event)\"\n (layerAddedChange)=\"onLayerAddedChange($event)\">\n </igo-catalog-browser-group>\n </ng-container>\n\n <ng-container *ngIf=\"isLayer(item)\">\n <igo-catalog-browser-layer\n igoListItem\n [layer]=\"item\"\n [resolution]=\"resolution$ | async\"\n [catalogAllowLegend]=\"catalogAllowLegend\"\n [added]=\"store.state.get(item).added\"\n (addedChange)=\"onLayerAddedChange($event)\">\n </igo-catalog-browser-layer>\n </ng-container>\n </ng-template>\n</igo-list>\n" }]
12748
+ args: [{ selector: 'igo-catalog-browser', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-list [navigation]=\"false\" [selection]=\"false\">\n <ng-template ngFor let-item [ngForOf]=\"store.view.all$() | async\">\n <ng-container *ngIf=\"isGroup(item)\">\n <igo-catalog-browser-group\n [catalog]=\"catalog\"\n [group]=\"item\"\n [map]=\"map\"\n [state]=\"store.state\"\n [resolution]=\"resolution$ | async\"\n [catalogAllowLegend]=\"catalogAllowLegend\"\n [collapsed]=\"(store.count === 1) ? false : true\"\n [toggleCollapsed]=\"toggleCollapsedGroup\"\n (addedChange)=\"onGroupAddedChange($event)\"\n (layerAddedChange)=\"onLayerAddedChange($event)\">\n </igo-catalog-browser-group>\n </ng-container>\n\n <ng-container *ngIf=\"isLayer(item)\">\n <igo-catalog-browser-layer\n igoListItem\n [layer]=\"item\"\n [map]=\"map\"\n [resolution]=\"resolution$ | async\"\n [catalogAllowLegend]=\"catalogAllowLegend\"\n [added]=\"store.state.get(item).added\"\n (addedChange)=\"onLayerAddedChange($event)\">\n </igo-catalog-browser-layer>\n </ng-container>\n </ng-template>\n</igo-list>\n" }]
12625
12749
  }], function () { return [{ type: LayerService }, { type: i0.ChangeDetectorRef }]; }, { catalogAllowLegend: [{
12626
12750
  type: Input
12627
12751
  }], catalog: [{
@@ -12634,7 +12758,7 @@ CatalogBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Cat
12634
12758
  type: Input
12635
12759
  }] }); })();
12636
12760
 
12637
- const _c0$h = ["renderedLegend"];
12761
+ const _c0$i = ["renderedLegend"];
12638
12762
  function LayerLegendComponent_ng_container_0_ng_container_1_ng_container_1_div_2_mat_list_item_1_Template(rf, ctx) { if (rf & 1) {
12639
12763
  const _r15 = i0.ɵɵgetCurrentView();
12640
12764
  i0.ɵɵelementStart(0, "mat-list-item")(1, "mat-icon", 7);
@@ -12979,9 +13103,9 @@ class LayerLegendComponent {
12979
13103
  this.imagesHeight[id] = elemRef.height;
12980
13104
  }
12981
13105
  }
12982
- LayerLegendComponent.ɵfac = function LayerLegendComponent_Factory(t) { return new (t || LayerLegendComponent)(i0.ɵɵdirectiveInject(CapabilitiesService), i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i2$1.ConfigService), i0.ɵɵdirectiveInject(i1$2.HttpClient), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
13106
+ LayerLegendComponent.ɵfac = function LayerLegendComponent_Factory(t) { return new (t || LayerLegendComponent)(i0.ɵɵdirectiveInject(CapabilitiesService), i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i2$1.ConfigService), i0.ɵɵdirectiveInject(i1$1.HttpClient), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
12983
13107
  LayerLegendComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LayerLegendComponent, selectors: [["igo-layer-legend"]], viewQuery: function LayerLegendComponent_Query(rf, ctx) { if (rf & 1) {
12984
- i0.ɵɵviewQuery(_c0$h, 5);
13108
+ i0.ɵɵviewQuery(_c0$i, 5);
12985
13109
  } if (rf & 2) {
12986
13110
  let _t;
12987
13111
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.renderedLegends = _t);
@@ -12990,11 +13114,11 @@ LayerLegendComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LayerL
12990
13114
  i0.ɵɵpipe(1, "async");
12991
13115
  } if (rf & 2) {
12992
13116
  i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 1, ctx.legendItems$));
12993
- } }, dependencies: [i13.MatFormField, i2$2.NgControlStatus, i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i1$1.NgStyle, i2$2.NgModel, i2.MatIcon, i15.MatSelect, i9.MatOption, i4.MatTooltip, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i5$1.CollapseDirective, i5$1.ImageErrorDirective, i1$1.AsyncPipe, i7.TranslatePipe, i5$1.SanitizeHtmlPipe], styles: [".igo-layer-legend.with-title[_ngcontent-%COMP%]{padding-left:18px}img[_ngcontent-%COMP%]:after{content:\" \";position:relative;height:17px;float:left;width:17px;top:-3px;right:19px;background-color:#fff;border:3px solid #f3f3f3;border-radius:50%;-webkit-animation:2s linear infinite spin;animation:2s linear infinite spin}@-moz-document url-prefix(){img:after{margin-left:19px}}@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}"], changeDetection: 0 });
13117
+ } }, dependencies: [i13.MatFormField, i2$2.NgControlStatus, i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgStyle, i2$2.NgModel, i2.MatIcon, i15.MatSelect, i9.MatOption, i4.MatTooltip, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i5$1.CollapseDirective, i5$1.ImageErrorDirective, i1.AsyncPipe, i7.TranslatePipe, i5$1.SanitizeHtmlPipe], styles: [".igo-layer-legend.with-title[_ngcontent-%COMP%]{padding-left:18px}img[_ngcontent-%COMP%]:after{content:\" \";position:relative;height:17px;float:left;width:17px;top:-3px;right:19px;background-color:#fff;border:3px solid #f3f3f3;border-radius:50%;-webkit-animation:2s linear infinite spin;animation:2s linear infinite spin}@-moz-document url-prefix(){img:after{margin-left:19px}}@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}"], changeDetection: 0 });
12994
13118
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayerLegendComponent, [{
12995
13119
  type: Component,
12996
13120
  args: [{ selector: 'igo-layer-legend', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"legendItems$ | async as items\">\n <ng-container *ngIf=\"items.length; else noItems\">\n <ng-container *ngFor=\"let item of items.slice().reverse()\" #renderedLegends>\n <div *ngIf=\"getLegend; else noItems\">\n <mat-list-item *ngIf=\"item.title\">\n <mat-icon\n id=\"legend-toggle\"\n class=\"igo-chevron\"\n mat-list-avatar\n igoCollapse\n [target]=\"legend\"\n [collapsed]=\"(item.collapsed)\"\n (toggle)=\"toggleLegendItem($event, item)\"\n svgIcon=\"chevron-up\">\n </mat-icon>\n <h4 matLine>{{computeItemTitle(item) | async}} </h4>\n </mat-list-item>\n <div #legend class=\"igo-layer-legend\" [ngClass]=\"{'with-title': item.title}\">\n <div *ngIf=\"currentStyle !== undefined\">\n <mat-form-field>\n <mat-select tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" [(ngModel)]=\"currentStyle\"\n (selectionChange)=\"onChangeStyle()\">\n <mat-option *ngFor=\"let style of styles\" [value]=\"style.name\">{{style.title}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div *ngIf=\"!(item.collapsed)\">\n <div *ngIf=\"item.url\">\n <img igoImageError *ngIf=\"item.imgGraphValue\" hideError=\"true\" #renderedLegend id=\"{{item.title}}\" (load)=\"onLoadImage(item.title)\"\n [src]=\"item.imgGraphValue\"\n alt=\"{{'igo.geo.layer.legend.loadingLegendText' | translate}}\">\n <small *ngIf=\"imagesHeight[item.title]<16\">\n {{'igo.geo.layer.legend.noLegendScale' | translate}}\n </small>\n </div>\n <div\n [ngStyle]=\"item.style\"\n [innerHTML]=\"item.html | sanitizeHtml\"\n *ngIf=\"item.html\">\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-template #noItems>\n <small>\n {{'igo.geo.layer.legend.noLegendText' | translate}}\n </small>\n </ng-template>\n\n</ng-container>\n", styles: [".igo-layer-legend.with-title{padding-left:18px}img:after{content:\" \";position:relative;height:17px;float:left;width:17px;top:-3px;right:19px;background-color:#fff;border:3px solid #f3f3f3;border-radius:50%;-webkit-animation:2s linear infinite spin;animation:2s linear infinite spin}@-moz-document url-prefix(){img:after{margin-left:19px}}@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
12997
- }], function () { return [{ type: CapabilitiesService }, { type: i2$1.LanguageService }, { type: i2$1.ConfigService }, { type: i1$2.HttpClient }, { type: i0.ChangeDetectorRef }]; }, { updateLegendOnResolutionChange: [{
13121
+ }], function () { return [{ type: CapabilitiesService }, { type: i2$1.LanguageService }, { type: i2$1.ConfigService }, { type: i1$1.HttpClient }, { type: i0.ChangeDetectorRef }]; }, { updateLegendOnResolutionChange: [{
12998
13122
  type: Input
12999
13123
  }], renderedLegends: [{
13000
13124
  type: ViewChildren,
@@ -13023,7 +13147,7 @@ function CatalogBrowserLayerComponent_button_4_Template(rf, ctx) { if (rf & 1) {
13023
13147
  i0.ɵɵadvance(1);
13024
13148
  i0.ɵɵproperty("ngIf", ctx_r1.layer.externalProvider);
13025
13149
  } }
13026
- function CatalogBrowserLayerComponent_igo_layer_legend_13_Template(rf, ctx) { if (rf & 1) {
13150
+ function CatalogBrowserLayerComponent_igo_layer_legend_19_Template(rf, ctx) { if (rf & 1) {
13027
13151
  i0.ɵɵelement(0, "igo-layer-legend", 3);
13028
13152
  i0.ɵɵpipe(1, "async");
13029
13153
  } if (rf & 2) {
@@ -13038,6 +13162,7 @@ class CatalogBrowserLayerComponent {
13038
13162
  this.layerService = layerService;
13039
13163
  this.inRange$ = new BehaviorSubject(true);
13040
13164
  this.isPreview$ = new BehaviorSubject(false);
13165
+ this.isVisible$ = new BehaviorSubject(false);
13041
13166
  this.layerLegendShown$ = new BehaviorSubject(false);
13042
13167
  this.igoLayer$ = new BehaviorSubject(undefined);
13043
13168
  this.mouseInsideAdd = false;
@@ -13065,11 +13190,19 @@ class CatalogBrowserLayerComponent {
13065
13190
  return getEntityIcon(this.layer) || 'layers';
13066
13191
  }
13067
13192
  ngOnInit() {
13068
- this.isInResolutionsRange();
13069
13193
  this.isPreview$$ = this.isPreview$.subscribe(value => this.addedLayerIsPreview.emit(value));
13194
+ this.layers$$ = this.map.layers$.subscribe(() => {
13195
+ this.isVisible();
13196
+ });
13197
+ this.resolution$$ = this.map.viewController.resolution$.subscribe((resolution) => {
13198
+ this.isInResolutionsRange(resolution);
13199
+ this.isVisible();
13200
+ });
13070
13201
  }
13071
13202
  ngOnDestroy() {
13072
13203
  this.isPreview$$.unsubscribe();
13204
+ this.resolution$$.unsubscribe();
13205
+ this.layers$$.unsubscribe();
13073
13206
  }
13074
13207
  computeTitleTooltip() {
13075
13208
  const layerOptions = this.layer.options;
@@ -13175,19 +13308,40 @@ class CatalogBrowserLayerComponent {
13175
13308
  haveGroup() {
13176
13309
  return !(!this.layer.address || this.layer.address.split('.').length === 1);
13177
13310
  }
13178
- isInResolutionsRange() {
13179
- const minResolution = this.layer.options.minResolution || 0;
13180
- const maxResolution = this.layer.options.maxResolution || Infinity;
13181
- this.inRange$.next(this.resolution >= minResolution && this.resolution <= maxResolution);
13182
- return this.inRange$.value;
13311
+ isInResolutionsRange(resolution) {
13312
+ const minResolution = (!this.layer.options.minResolution || Number.isNaN(this.layer.options.minResolution))
13313
+ ? 0 : this.layer.options.minResolution;
13314
+ const maxResolution = (!this.layer.options.maxResolution || Number.isNaN(this.layer.options.maxResolution))
13315
+ ? Infinity : this.layer.options.maxResolution;
13316
+ this.inRange$.next(resolution >= minResolution && resolution <= maxResolution);
13317
+ }
13318
+ isVisible() {
13319
+ if (this.layer?.id) {
13320
+ const oLayer = this.map.getLayerById(this.layer?.id);
13321
+ oLayer ? this.isVisible$.next(oLayer.visible) : this.isVisible$.next(false);
13322
+ }
13323
+ }
13324
+ getBadgeIcon() {
13325
+ if (this.inRange$.getValue()) {
13326
+ return this.isVisible$.getValue() ? '' : 'eye-off';
13327
+ }
13328
+ else {
13329
+ return 'eye-off';
13330
+ }
13183
13331
  }
13184
13332
  computeTooltip() {
13185
13333
  if (this.added) {
13186
- return this.isPreview$.value
13187
- ? 'igo.geo.catalog.layer.addToMap'
13188
- : this.inRange$.value
13334
+ if (this.isPreview$.value) {
13335
+ return 'igo.geo.catalog.layer.addToMap';
13336
+ }
13337
+ else if (this.inRange$.value) {
13338
+ return this.isVisible$.value
13189
13339
  ? 'igo.geo.catalog.layer.removeFromMap'
13190
- : 'igo.geo.catalog.layer.removeFromMapOutRange';
13340
+ : 'igo.geo.catalog.layer.removeFromMapNotVisible';
13341
+ }
13342
+ else {
13343
+ return 'igo.geo.catalog.layer.removeFromMapOutRange';
13344
+ }
13191
13345
  }
13192
13346
  else {
13193
13347
  return this.inRange$.value
@@ -13197,7 +13351,7 @@ class CatalogBrowserLayerComponent {
13197
13351
  }
13198
13352
  }
13199
13353
  CatalogBrowserLayerComponent.ɵfac = function CatalogBrowserLayerComponent_Factory(t) { return new (t || CatalogBrowserLayerComponent)(i0.ɵɵdirectiveInject(LayerService)); };
13200
- CatalogBrowserLayerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CatalogBrowserLayerComponent, selectors: [["igo-catalog-browser-layer"]], inputs: { resolution: "resolution", catalogAllowLegend: "catalogAllowLegend", layer: "layer", added: "added" }, outputs: { addedChange: "addedChange", addedLayerIsPreview: "addedLayerIsPreview" }, decls: 16, vars: 21, consts: [["mat-list-avatar", "", "svgIcon", "blank", 4, "ngIf"], ["mat-line", "", "matTooltipShowDelay", "500", 3, "ngClass", "matTooltip", "click"], ["disabled", "true", "mat-icon-button", "", 4, "ngIf"], [3, "layer"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "color", "mouseenter", "mouseleave", "click"], ["matBadge", "icon", "igoMatBadgeIcon", "eye-off", "igoMatBadgeInverseColor", "true", "matBadgeDisabled", "true", "matBadgeSize", "small", "matBadgePosition", "after", 3, "matBadgeHidden", "svgIcon"], [1, "igo-cataloglayer-legend-container"], ["legend", ""], [3, "layer", 4, "ngIf"], ["mat-list-avatar", "", "svgIcon", "blank"], ["disabled", "true", "mat-icon-button", ""], ["class", "igo-cataloglayer-external-icon", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", "svgIcon", "earth-arrow-right", 3, "matTooltip", "click", 4, "ngIf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", "svgIcon", "earth-arrow-right", 1, "igo-cataloglayer-external-icon", 3, "matTooltip", "click"]], template: function CatalogBrowserLayerComponent_Template(rf, ctx) { if (rf & 1) {
13354
+ CatalogBrowserLayerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CatalogBrowserLayerComponent, selectors: [["igo-catalog-browser-layer"]], inputs: { resolution: "resolution", catalogAllowLegend: "catalogAllowLegend", layer: "layer", map: "map", added: "added" }, outputs: { addedChange: "addedChange", addedLayerIsPreview: "addedLayerIsPreview" }, decls: 22, vars: 35, consts: [["mat-list-avatar", "", "svgIcon", "blank", 4, "ngIf"], ["mat-line", "", "matTooltipShowDelay", "500", 3, "ngClass", "matTooltip", "click"], ["disabled", "true", "mat-icon-button", "", 4, "ngIf"], [3, "layer"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "color", "mouseenter", "mouseleave", "click"], ["matBadge", "icon", "igoMatBadgeColor", "rgba(0,0,0,0.87)", "igoMatBadgeBackgroundColor", "none", "igoMatBadgeInverseColor", "true", "matBadgeSize", "small", "matBadgePosition", "after", 3, "igoMatBadgeIcon", "matBadgeHidden", "matBadgeDisabled", "svgIcon"], [1, "igo-cataloglayer-legend-container"], ["legend", ""], [3, "layer", 4, "ngIf"], ["mat-list-avatar", "", "svgIcon", "blank"], ["disabled", "true", "mat-icon-button", ""], ["class", "igo-cataloglayer-external-icon", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", "svgIcon", "earth-arrow-right", 3, "matTooltip", "click", 4, "ngIf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", "svgIcon", "earth-arrow-right", 1, "igo-cataloglayer-external-icon", 3, "matTooltip", "click"]], template: function CatalogBrowserLayerComponent_Template(rf, ctx) { if (rf & 1) {
13201
13355
  i0.ɵɵelementStart(0, "mat-list-item");
13202
13356
  i0.ɵɵtemplate(1, CatalogBrowserLayerComponent_mat_icon_1_Template, 1, 0, "mat-icon", 0);
13203
13357
  i0.ɵɵelementStart(2, "h4", 1);
@@ -13212,11 +13366,17 @@ CatalogBrowserLayerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type
13212
13366
  i0.ɵɵpipe(8, "async");
13213
13367
  i0.ɵɵelement(9, "mat-icon", 5);
13214
13368
  i0.ɵɵpipe(10, "async");
13215
- i0.ɵɵelementEnd()();
13216
- i0.ɵɵelementStart(11, "div", 6, 7);
13217
- i0.ɵɵtemplate(13, CatalogBrowserLayerComponent_igo_layer_legend_13_Template, 2, 3, "igo-layer-legend", 8);
13369
+ i0.ɵɵpipe(11, "async");
13370
+ i0.ɵɵpipe(12, "async");
13371
+ i0.ɵɵpipe(13, "async");
13218
13372
  i0.ɵɵpipe(14, "async");
13219
13373
  i0.ɵɵpipe(15, "async");
13374
+ i0.ɵɵpipe(16, "async");
13375
+ i0.ɵɵelementEnd()();
13376
+ i0.ɵɵelementStart(17, "div", 6, 7);
13377
+ i0.ɵɵtemplate(19, CatalogBrowserLayerComponent_igo_layer_legend_19_Template, 2, 3, "igo-layer-legend", 8);
13378
+ i0.ɵɵpipe(20, "async");
13379
+ i0.ɵɵpipe(21, "async");
13220
13380
  i0.ɵɵelementEnd();
13221
13381
  } if (rf & 2) {
13222
13382
  i0.ɵɵadvance(1);
@@ -13230,21 +13390,23 @@ CatalogBrowserLayerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type
13230
13390
  i0.ɵɵadvance(1);
13231
13391
  i0.ɵɵproperty("layer", ctx.layer);
13232
13392
  i0.ɵɵadvance(1);
13233
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(7, 11, ctx.computeTooltip()))("color", i0.ɵɵpipeBind1(8, 13, ctx.isPreview$) ? "" : ctx.added ? "warn" : "");
13393
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(7, 13, ctx.computeTooltip()))("color", i0.ɵɵpipeBind1(8, 15, ctx.isPreview$) ? "" : ctx.added ? "warn" : "");
13234
13394
  i0.ɵɵadvance(3);
13235
- i0.ɵɵproperty("matBadgeHidden", ctx.isInResolutionsRange())("svgIcon", i0.ɵɵpipeBind1(10, 15, ctx.isPreview$) ? "plus" : ctx.added ? "delete" : "plus");
13236
- i0.ɵɵadvance(4);
13237
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(14, 17, ctx.layerLegendShown$) && i0.ɵɵpipeBind1(15, 19, ctx.igoLayer$) && ctx.catalogAllowLegend);
13238
- } }, dependencies: [i1$1.NgClass, i1$1.NgIf, i7$1.MatBadge, i3.MatButton, i2.MatIcon, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i4.MatTooltip, i5$1.IgoBadgeIconDirective, MetadataButtonComponent, LayerLegendComponent, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".igo-cataloglayer-title[_ngcontent-%COMP%]{cursor:pointer}.igo-cataloglayer-legend-container[_ngcontent-%COMP%]{padding-left:18px;width:calc(100% - 18px);margin-left:40px}.igo-cataloglayer-external-icon[_ngcontent-%COMP%]{cursor:help}"], changeDetection: 0 });
13395
+ i0.ɵɵproperty("igoMatBadgeIcon", ctx.getBadgeIcon())("matBadgeHidden", i0.ɵɵpipeBind1(10, 17, ctx.inRange$) && i0.ɵɵpipeBind1(11, 19, ctx.isVisible$) === true || i0.ɵɵpipeBind1(12, 21, ctx.inRange$) && !ctx.added || i0.ɵɵpipeBind1(13, 23, ctx.inRange$) && i0.ɵɵpipeBind1(14, 25, ctx.isPreview$))("matBadgeDisabled", i0.ɵɵpipeBind1(15, 27, ctx.inRange$) === false)("svgIcon", i0.ɵɵpipeBind1(16, 29, ctx.isPreview$) ? "plus" : ctx.added ? "delete" : "plus");
13396
+ i0.ɵɵadvance(10);
13397
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(20, 31, ctx.layerLegendShown$) && i0.ɵɵpipeBind1(21, 33, ctx.igoLayer$) && ctx.catalogAllowLegend);
13398
+ } }, dependencies: [i1.NgClass, i1.NgIf, i7$1.MatBadge, i3$1.MatButton, i2.MatIcon, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i4.MatTooltip, i5$1.IgoBadgeIconDirective, MetadataButtonComponent, LayerLegendComponent, i1.AsyncPipe, i7.TranslatePipe], styles: [".igo-cataloglayer-title[_ngcontent-%COMP%]{cursor:pointer}.igo-cataloglayer-legend-container[_ngcontent-%COMP%]{padding-left:18px;width:calc(100% - 18px);margin-left:40px}.igo-cataloglayer-external-icon[_ngcontent-%COMP%]{cursor:help}"], changeDetection: 0 });
13239
13399
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CatalogBrowserLayerComponent, [{
13240
13400
  type: Component,
13241
- args: [{ selector: 'igo-catalog-browser-layer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item>\n <mat-icon *ngIf=\"haveGroup()\" mat-list-avatar svgIcon=\"blank\"></mat-icon>\n <h4 mat-line matTooltipShowDelay=\"500\" [ngClass]=\"(catalogAllowLegend)?'igo-cataloglayer-title':''\" (click)=\"askForLegend($event)\" [matTooltip]=\"computeTitleTooltip()\">{{title}}</h4>\n\n <button *ngIf=\"layer.externalProvider\"\n disabled=\"true\"\n mat-icon-button>\n <mat-icon\n class=\"igo-cataloglayer-external-icon\"\n *ngIf=\"layer.externalProvider\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.externalProvider.layer' | translate\"\n color=\"primary\"\n (click)=\"$event.stopPropagation()\"\n svgIcon=\"earth-arrow-right\">\n </mat-icon>\n </button>\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\n\n <button\n (mouseenter)=\"onMouseEvent($event)\" (mouseleave)=\"onMouseEvent($event)\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"computeTooltip() | translate\"\n [color]=\"(isPreview$ | async) ? '' : added ? 'warn' : ''\"\n (click)=\"onToggleClick($event)\">\n <mat-icon\n matBadge=\"icon\"\n igoMatBadgeIcon=\"eye-off\"\n igoMatBadgeInverseColor=\"true\"\n [matBadgeHidden]=\"isInResolutionsRange()\"\n matBadgeDisabled=\"true\"\n matBadgeSize=\"small\"\n matBadgePosition=\"after\"\n [svgIcon]=\"(isPreview$ | async) ? 'plus' : added ? 'delete' : 'plus'\">\n </mat-icon>\n </button>\n\n</mat-list-item>\n\n<div #legend class=\"igo-cataloglayer-legend-container\">\n <igo-layer-legend\n *ngIf=\"(layerLegendShown$ | async) && (igoLayer$ | async) && catalogAllowLegend\"\n [layer]=\"igoLayer$ | async\">\n </igo-layer-legend>\n</div>\n", styles: [".igo-cataloglayer-title{cursor:pointer}.igo-cataloglayer-legend-container{padding-left:18px;width:calc(100% - 18px);margin-left:40px}.igo-cataloglayer-external-icon{cursor:help}\n"] }]
13401
+ args: [{ selector: 'igo-catalog-browser-layer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item>\n <mat-icon *ngIf=\"haveGroup()\" mat-list-avatar svgIcon=\"blank\"></mat-icon>\n <h4 mat-line matTooltipShowDelay=\"500\" [ngClass]=\"(catalogAllowLegend)?'igo-cataloglayer-title':''\" (click)=\"askForLegend($event)\" [matTooltip]=\"computeTitleTooltip()\">{{title}}</h4>\n\n <button *ngIf=\"layer.externalProvider\"\n disabled=\"true\"\n mat-icon-button>\n <mat-icon\n class=\"igo-cataloglayer-external-icon\"\n *ngIf=\"layer.externalProvider\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.externalProvider.layer' | translate\"\n color=\"primary\"\n (click)=\"$event.stopPropagation()\"\n svgIcon=\"earth-arrow-right\">\n </mat-icon>\n </button>\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\n\n <button\n (mouseenter)=\"onMouseEvent($event)\" (mouseleave)=\"onMouseEvent($event)\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"computeTooltip() | translate\"\n [color]=\"(isPreview$ | async) ? '' : added ? 'warn' : ''\"\n (click)=\"onToggleClick($event)\">\n <mat-icon\n matBadge=\"icon\"\n [igoMatBadgeIcon]=\"getBadgeIcon()\"\n igoMatBadgeColor=\"rgba(0,0,0,0.87)\"\n igoMatBadgeBackgroundColor=\"none\"\n igoMatBadgeInverseColor=\"true\"\n [matBadgeHidden]=\"((inRange$ | async) && (isVisible$ | async) === true) || ((inRange$ | async) && !added) || ((inRange$ | async) && (isPreview$ | async))\"\n [matBadgeDisabled]=\"(inRange$ | async) === false\"\n matBadgeSize=\"small\"\n matBadgePosition=\"after\"\n [svgIcon]=\"(isPreview$ | async) ? 'plus' : added ? 'delete' : 'plus'\">\n </mat-icon>\n </button>\n\n</mat-list-item>\n\n<div #legend class=\"igo-cataloglayer-legend-container\">\n <igo-layer-legend\n *ngIf=\"(layerLegendShown$ | async) && (igoLayer$ | async) && catalogAllowLegend\"\n [layer]=\"igoLayer$ | async\">\n </igo-layer-legend>\n</div>\n", styles: [".igo-cataloglayer-title{cursor:pointer}.igo-cataloglayer-legend-container{padding-left:18px;width:calc(100% - 18px);margin-left:40px}.igo-cataloglayer-external-icon{cursor:help}\n"] }]
13242
13402
  }], function () { return [{ type: LayerService }]; }, { resolution: [{
13243
13403
  type: Input
13244
13404
  }], catalogAllowLegend: [{
13245
13405
  type: Input
13246
13406
  }], layer: [{
13247
13407
  type: Input
13408
+ }], map: [{
13409
+ type: Input
13248
13410
  }], added: [{
13249
13411
  type: Input
13250
13412
  }], addedChange: [{
@@ -13311,11 +13473,11 @@ function CatalogBrowserGroupComponent_ng_template_12_ng_container_1_Template(rf,
13311
13473
  const item_r12 = i0.ɵɵnextContext().$implicit;
13312
13474
  const ctx_r14 = i0.ɵɵnextContext();
13313
13475
  i0.ɵɵadvance(1);
13314
- i0.ɵɵproperty("layer", item_r12)("resolution", ctx_r14.resolution)("catalogAllowLegend", ctx_r14.catalogAllowLegend)("added", ctx_r14.state.get(item_r12).added);
13476
+ i0.ɵɵproperty("layer", item_r12)("resolution", ctx_r14.resolution)("map", ctx_r14.map)("catalogAllowLegend", ctx_r14.catalogAllowLegend)("added", ctx_r14.state.get(item_r12).added);
13315
13477
  } }
13316
13478
  function CatalogBrowserGroupComponent_ng_template_12_Template(rf, ctx) { if (rf & 1) {
13317
13479
  i0.ɵɵtemplate(0, CatalogBrowserGroupComponent_ng_template_12_ng_container_0_Template, 1, 0, "ng-container", 14);
13318
- i0.ɵɵtemplate(1, CatalogBrowserGroupComponent_ng_template_12_ng_container_1_Template, 2, 4, "ng-container", 14);
13480
+ i0.ɵɵtemplate(1, CatalogBrowserGroupComponent_ng_template_12_ng_container_1_Template, 2, 5, "ng-container", 14);
13319
13481
  } if (rf & 2) {
13320
13482
  const item_r12 = ctx.$implicit;
13321
13483
  const ctx_r5 = i0.ɵɵnextContext();
@@ -13481,7 +13643,7 @@ class CatalogBrowserGroupComponent {
13481
13643
  }
13482
13644
  }
13483
13645
  CatalogBrowserGroupComponent.ɵfac = function CatalogBrowserGroupComponent_Factory(t) { return new (t || CatalogBrowserGroupComponent)(); };
13484
- CatalogBrowserGroupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CatalogBrowserGroupComponent, selectors: [["igo-catalog-browser-group"]], inputs: { catalog: "catalog", group: "group", collapsed: "collapsed", resolution: "resolution", catalogAllowLegend: "catalogAllowLegend", toggleCollapsed: "toggleCollapsed", state: "state" }, outputs: { addedChange: "addedChange", layerAddedChange: "layerAddedChange" }, decls: 14, vars: 14, consts: [["mat-list-avatar", "", "svgIcon", "chevron-up", "igoCollapse", "", 1, "igo-chevron", 3, "target", "collapsed", "toggle"], ["id", "catalog-group-title", "mat-line", "", "matTooltipShowDelay", "500", 1, "igo-catalog-group-title", 3, "matTooltip", "click"], ["disabled", "true", "mat-icon-button", "", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["notadded", ""], ["items", ""], ["ngFor", "", 3, "ngForOf"], ["disabled", "true", "mat-icon-button", ""], ["class", "igo-cataloggroup-external-icon", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", "svgIcon", "earth-arrow-right", 3, "matTooltip", "click", 4, "ngIf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", "svgIcon", "earth-arrow-right", 1, "igo-cataloggroup-external-icon", 3, "matTooltip", "click"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "warn", 3, "matTooltip", "disabled", "click"], ["svgIcon", "delete"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "disabled", "click"], ["svgIcon", "plus"], [4, "ngIf"], ["igoListItem", "", 3, "layer", "resolution", "catalogAllowLegend", "added", "addedLayerIsPreview", "addedChange"]], template: function CatalogBrowserGroupComponent_Template(rf, ctx) { if (rf & 1) {
13646
+ CatalogBrowserGroupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CatalogBrowserGroupComponent, selectors: [["igo-catalog-browser-group"]], inputs: { catalog: "catalog", group: "group", map: "map", collapsed: "collapsed", resolution: "resolution", catalogAllowLegend: "catalogAllowLegend", toggleCollapsed: "toggleCollapsed", state: "state" }, outputs: { addedChange: "addedChange", layerAddedChange: "layerAddedChange" }, decls: 14, vars: 14, consts: [["mat-list-avatar", "", "svgIcon", "chevron-up", "igoCollapse", "", 1, "igo-chevron", 3, "target", "collapsed", "toggle"], ["id", "catalog-group-title", "mat-line", "", "matTooltipShowDelay", "500", 1, "igo-catalog-group-title", 3, "matTooltip", "click"], ["disabled", "true", "mat-icon-button", "", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["notadded", ""], ["items", ""], ["ngFor", "", 3, "ngForOf"], ["disabled", "true", "mat-icon-button", ""], ["class", "igo-cataloggroup-external-icon", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", "svgIcon", "earth-arrow-right", 3, "matTooltip", "click", 4, "ngIf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", "svgIcon", "earth-arrow-right", 1, "igo-cataloggroup-external-icon", 3, "matTooltip", "click"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "warn", 3, "matTooltip", "disabled", "click"], ["svgIcon", "delete"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "disabled", "click"], ["svgIcon", "plus"], [4, "ngIf"], ["igoListItem", "", 3, "layer", "resolution", "map", "catalogAllowLegend", "added", "addedLayerIsPreview", "addedChange"]], template: function CatalogBrowserGroupComponent_Template(rf, ctx) { if (rf & 1) {
13485
13647
  i0.ɵɵelementStart(0, "mat-list-item")(1, "mat-icon", 0);
13486
13648
  i0.ɵɵlistener("toggle", function CatalogBrowserGroupComponent_Template_mat_icon_toggle_1_listener($event) { return ctx.onToggleCollapsed($event); });
13487
13649
  i0.ɵɵelementEnd();
@@ -13514,14 +13676,16 @@ CatalogBrowserGroupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type
13514
13676
  i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(6, 8, ctx.added$) && i0.ɵɵpipeBind1(7, 10, ctx.preview$) === false)("ngIfElse", _r2);
13515
13677
  i0.ɵɵadvance(7);
13516
13678
  i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(13, 12, ctx.store.view.all$()));
13517
- } }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i3.MatButton, i2.MatIcon, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i4.MatTooltip, i5$1.ListItemDirective, i5$1.CollapseDirective, CatalogBrowserLayerComponent, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".igo-catalog-group-title[_ngcontent-%COMP%]{cursor:pointer;opacity:.9}#catalog-group-title[_ngcontent-%COMP%]{font-weight:700}.igo-cataloggroup-external-icon[_ngcontent-%COMP%]{cursor:help}"], changeDetection: 0 });
13679
+ } }, dependencies: [i1.NgForOf, i1.NgIf, i3$1.MatButton, i2.MatIcon, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i4.MatTooltip, i5$1.ListItemDirective, i5$1.CollapseDirective, CatalogBrowserLayerComponent, i1.AsyncPipe, i7.TranslatePipe], styles: [".igo-catalog-group-title[_ngcontent-%COMP%]{cursor:pointer;opacity:.9}#catalog-group-title[_ngcontent-%COMP%]{font-weight:700}.igo-cataloggroup-external-icon[_ngcontent-%COMP%]{cursor:help}"], changeDetection: 0 });
13518
13680
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CatalogBrowserGroupComponent, [{
13519
13681
  type: Component,
13520
- args: [{ selector: 'igo-catalog-browser-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item>\n <mat-icon\n mat-list-avatar\n svgIcon=\"chevron-up\"\n igoCollapse\n class=\"igo-chevron\"\n [target]=\"items\"\n [collapsed]=\"collapsed\"\n (toggle)=\"onToggleCollapsed($event)\">\n </mat-icon>\n\n <h4 class=\"igo-catalog-group-title\" id=\"catalog-group-title\" mat-line matTooltipShowDelay=\"500\" [matTooltip]=\"title\" (click)=\"onTitleClick()\">{{title}}</h4>\n\n <button *ngIf=\"group.externalProvider\"\n disabled=\"true\"\n mat-icon-button>\n <mat-icon\n class=\"igo-cataloggroup-external-icon\"\n *ngIf=\"group.externalProvider\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.externalProvider.group' | translate\"\n color=\"primary\"\n (click)=\"$event.stopPropagation()\"\n svgIcon=\"earth-arrow-right\">\n </mat-icon>\n </button>\n\n <ng-container *ngIf=\"(added$ | async) && (preview$ | async) === false; else notadded\">\n <button\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.group.removeFromMap' | translate\"\n color=\"warn\"\n [disabled]=\"disabled$ | async\"\n (click)=\"onToggleClick()\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n </ng-container>\n\n <ng-template #notadded>\n <button\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.group.addToMap' | translate\"\n [disabled]=\"disabled$ | async\"\n (click)=\"onToggleClick()\">\n <mat-icon svgIcon=\"plus\"></mat-icon>\n </button>\n </ng-template>\n</mat-list-item>\n\n<div #items>\n <ng-template ngFor let-item [ngForOf]=\"store.view.all$() | async\">\n <ng-container *ngIf=\"isGroup(item)\">\n <!-- todo: add display ans manage CatalogItemGroup -->\n </ng-container>\n <ng-container *ngIf=\"isLayer(item)\">\n <igo-catalog-browser-layer\n igoListItem\n [layer]=\"item\"\n [resolution]=\"resolution\"\n [catalogAllowLegend]=\"catalogAllowLegend\"\n [added]=\"state.get(item).added\"\n (addedLayerIsPreview)=\"onLayerPreview($event)\"\n (addedChange)=\"onLayerAddedChange($event)\">\n </igo-catalog-browser-layer>\n </ng-container>\n </ng-template>\n</div>\n", styles: [".igo-catalog-group-title{cursor:pointer;opacity:.9}#catalog-group-title{font-weight:700}.igo-cataloggroup-external-icon{cursor:help}\n"] }]
13682
+ args: [{ selector: 'igo-catalog-browser-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item>\n <mat-icon\n mat-list-avatar\n svgIcon=\"chevron-up\"\n igoCollapse\n class=\"igo-chevron\"\n [target]=\"items\"\n [collapsed]=\"collapsed\"\n (toggle)=\"onToggleCollapsed($event)\">\n </mat-icon>\n\n <h4 class=\"igo-catalog-group-title\" id=\"catalog-group-title\" mat-line matTooltipShowDelay=\"500\" [matTooltip]=\"title\" (click)=\"onTitleClick()\">{{title}}</h4>\n\n <button *ngIf=\"group.externalProvider\"\n disabled=\"true\"\n mat-icon-button>\n <mat-icon\n class=\"igo-cataloggroup-external-icon\"\n *ngIf=\"group.externalProvider\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.externalProvider.group' | translate\"\n color=\"primary\"\n (click)=\"$event.stopPropagation()\"\n svgIcon=\"earth-arrow-right\">\n </mat-icon>\n </button>\n\n <ng-container *ngIf=\"(added$ | async) && (preview$ | async) === false; else notadded\">\n <button\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.group.removeFromMap' | translate\"\n color=\"warn\"\n [disabled]=\"disabled$ | async\"\n (click)=\"onToggleClick()\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n </ng-container>\n\n <ng-template #notadded>\n <button\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.group.addToMap' | translate\"\n [disabled]=\"disabled$ | async\"\n (click)=\"onToggleClick()\">\n <mat-icon svgIcon=\"plus\"></mat-icon>\n </button>\n </ng-template>\n</mat-list-item>\n\n<div #items>\n <ng-template ngFor let-item [ngForOf]=\"store.view.all$() | async\">\n <ng-container *ngIf=\"isGroup(item)\">\n <!-- todo: add display ans manage CatalogItemGroup -->\n </ng-container>\n <ng-container *ngIf=\"isLayer(item)\">\n <igo-catalog-browser-layer\n igoListItem\n [layer]=\"item\"\n [resolution]=\"resolution\"\n [map]=\"map\"\n [catalogAllowLegend]=\"catalogAllowLegend\"\n [added]=\"state.get(item).added\"\n (addedLayerIsPreview)=\"onLayerPreview($event)\"\n (addedChange)=\"onLayerAddedChange($event)\">\n </igo-catalog-browser-layer>\n </ng-container>\n </ng-template>\n</div>\n", styles: [".igo-catalog-group-title{cursor:pointer;opacity:.9}#catalog-group-title{font-weight:700}.igo-cataloggroup-external-icon{cursor:help}\n"] }]
13521
13683
  }], null, { catalog: [{
13522
13684
  type: Input
13523
13685
  }], group: [{
13524
13686
  type: Input
13687
+ }], map: [{
13688
+ type: Input
13525
13689
  }], collapsed: [{
13526
13690
  type: Input
13527
13691
  }], resolution: [{
@@ -13567,7 +13731,7 @@ function LayerItemComponent_mat_checkbox_1_Template(rf, ctx) { if (rf & 1) {
13567
13731
  const ctx_r0 = i0.ɵɵnextContext();
13568
13732
  i0.ɵɵproperty("checked", ctx_r0.layerCheck);
13569
13733
  } }
13570
- const _c0$g = function (a0) { return { disabled: a0 }; };
13734
+ const _c0$h = function (a0) { return { disabled: a0 }; };
13571
13735
  function LayerItemComponent_button_4_Template(rf, ctx) { if (rf & 1) {
13572
13736
  const _r9 = i0.ɵɵgetCurrentView();
13573
13737
  i0.ɵɵelementStart(0, "button", 10);
@@ -13582,7 +13746,7 @@ function LayerItemComponent_button_4_Template(rf, ctx) { if (rf & 1) {
13582
13746
  const ctx_r1 = i0.ɵɵnextContext();
13583
13747
  i0.ɵɵproperty("color", ctx_r1.layer.visible ? "primary" : "default")("matTooltip", i0.ɵɵpipeBind1(1, 5, ctx_r1.eyeTooltip));
13584
13748
  i0.ɵɵadvance(2);
13585
- i0.ɵɵproperty("matBadgeHidden", i0.ɵɵpipeBind1(3, 7, ctx_r1.queryBadgeHidden$))("ngClass", i0.ɵɵpureFunction1(13, _c0$g, i0.ɵɵpipeBind1(4, 9, ctx_r1.inResolutionRange$) === false))("svgIcon", i0.ɵɵpipeBind1(5, 11, ctx_r1.layer.visible$) ? "eye" : "eye-off");
13749
+ i0.ɵɵproperty("matBadgeHidden", i0.ɵɵpipeBind1(3, 7, ctx_r1.queryBadgeHidden$))("ngClass", i0.ɵɵpureFunction1(13, _c0$h, i0.ɵɵpipeBind1(4, 9, ctx_r1.inResolutionRange$) === false))("svgIcon", i0.ɵɵpipeBind1(5, 11, ctx_r1.layer.visible$) ? "eye" : "eye-off");
13586
13750
  } }
13587
13751
  function LayerItemComponent_button_5_Template(rf, ctx) { if (rf & 1) {
13588
13752
  const _r11 = i0.ɵɵgetCurrentView();
@@ -13598,7 +13762,7 @@ function LayerItemComponent_button_5_Template(rf, ctx) { if (rf & 1) {
13598
13762
  const ctx_r2 = i0.ɵɵnextContext();
13599
13763
  i0.ɵɵproperty("color", ctx_r2.layer.visible ? "primary" : "default")("matTooltip", ctx_r2.layer.visible ? i0.ɵɵpipeBind1(1, 5, "igo.geo.layer.hideLayer") : i0.ɵɵpipeBind1(2, 7, "igo.geo.layer.showLayer"));
13600
13764
  i0.ɵɵadvance(3);
13601
- i0.ɵɵproperty("matBadgeHidden", i0.ɵɵpipeBind1(4, 9, ctx_r2.queryBadgeHidden$))("ngClass", i0.ɵɵpureFunction1(13, _c0$g, i0.ɵɵpipeBind1(5, 11, ctx_r2.inResolutionRange$) === false))("svgIcon", ctx_r2.layer.visible ? "eye" : "eye-off");
13765
+ i0.ɵɵproperty("matBadgeHidden", i0.ɵɵpipeBind1(4, 9, ctx_r2.queryBadgeHidden$))("ngClass", i0.ɵɵpureFunction1(13, _c0$h, i0.ɵɵpipeBind1(5, 11, ctx_r2.inResolutionRange$) === false))("svgIcon", ctx_r2.layer.visible ? "eye" : "eye-off");
13602
13766
  } }
13603
13767
  function LayerItemComponent_button_6_Template(rf, ctx) { if (rf & 1) {
13604
13768
  const _r13 = i0.ɵɵgetCurrentView();
@@ -13871,7 +14035,7 @@ var LayerListDisplacement;
13871
14035
  LayerListDisplacement["Lower"] = "lower";
13872
14036
  })(LayerListDisplacement || (LayerListDisplacement = {}));
13873
14037
 
13874
- const _c0$f = ["igoLayerItemToolbar"];
14038
+ const _c0$g = ["igoLayerItemToolbar"];
13875
14039
  function LayerListComponent_igo_layer_list_tool_1_Template(rf, ctx) { if (rf & 1) {
13876
14040
  const _r7 = i0.ɵɵgetCurrentView();
13877
14041
  i0.ɵɵelementStart(0, "igo-layer-list-tool", 6);
@@ -14804,7 +14968,7 @@ class LayerListComponent {
14804
14968
  }
14805
14969
  LayerListComponent.ɵfac = function LayerListComponent_Factory(t) { return new (t || LayerListComponent)(i0.ɵɵdirectiveInject(i0.ElementRef)); };
14806
14970
  LayerListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LayerListComponent, selectors: [["igo-layer-list"]], contentQueries: function LayerListComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
14807
- i0.ɵɵcontentQuery(dirIndex, _c0$f, 5);
14971
+ i0.ɵɵcontentQuery(dirIndex, _c0$g, 5);
14808
14972
  } if (rf & 2) {
14809
14973
  let _t;
14810
14974
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templateLayerToolbar = _t.first);
@@ -15001,7 +15165,7 @@ LayerListToolComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Laye
15001
15165
  i0.ɵɵproperty("matTooltip", ctx.selectionMode ? i0.ɵɵpipeBind1(17, 26, "igo.geo.layer.deactivateSelectionMode") : i0.ɵɵpipeBind1(18, 28, "igo.geo.layer.activateSelectionMode"));
15002
15166
  i0.ɵɵadvance(4);
15003
15167
  i0.ɵɵproperty("svgIcon", ctx.selectionMode ? "checkbox-multiple-marked-outline" : "checkbox-multiple-blank-outline");
15004
- } }, dependencies: [i13.MatFormField, i13.MatSuffix, i14.MatInput, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i1$1.NgIf, i2$2.NgModel, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5.MatListItem, i7$1.MatBadge, i5$1.IgoBadgeIconDirective, i7.TranslatePipe], styles: ["mat-form-field.inputFilter[_ngcontent-%COMP%]{width:calc(100% - 100px);max-width:200px}.selection-mode[_ngcontent-%COMP%]{margin-left:5px}"], changeDetection: 0 });
15168
+ } }, dependencies: [i13.MatFormField, i13.MatSuffix, i14.MatInput, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i1.NgIf, i2$2.NgModel, i2.MatIcon, i3$1.MatButton, i4.MatTooltip, i5.MatListItem, i7$1.MatBadge, i5$1.IgoBadgeIconDirective, i7.TranslatePipe], styles: ["mat-form-field.inputFilter[_ngcontent-%COMP%]{width:calc(100% - 100px);max-width:200px}.selection-mode[_ngcontent-%COMP%]{margin-left:5px}"], changeDetection: 0 });
15005
15169
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayerListToolComponent, [{
15006
15170
  type: Component,
15007
15171
  args: [{ selector: 'igo-layer-list-tool', changeDetection: ChangeDetectionStrategy.OnPush, template: " <mat-list-item>\n <mat-form-field class=\"inputFilter\" [floatLabel]=\"floatLabel\">\n <input\n matInput\n [placeholder]=\"'igo.geo.layer.filterPlaceholder' | translate\"\n [matTooltip]=\"'igo.geo.layer.subsetLayersListKeyword' | translate\"\n matTooltipShowDelay=\"500\"\n type=\"text\" [(ngModel)]=\"term\">\n <button\n mat-button\n *ngIf=\"term\"\n matSuffix\n mat-icon-button\n aria-label=\"Clear\"\n color=\"warn\"\n (click)=\"clearTerm()\">\n <mat-icon svgIcon=\"close\"></mat-icon>\n </button>\n </mat-form-field>\n\n <div [matTooltip]=\"sortAlpha ?\n ('igo.geo.layer.sortMapOrder' | translate) :\n ('igo.geo.layer.sortAlphabetically' | translate)\" matTooltipShowDelay=\"500\">\n <button class=\"sort-alpha\" [color]=\"sortAlpha ? 'warn' : 'primary'\" mat-icon-button (click)=\"toggleSortAlpha()\">\n <mat-icon [svgIcon]=\"sortAlpha ? 'sort-ascending' : 'sort-alphabetical-ascending'\"></mat-icon>\n </button>\n </div>\n\n <div [matTooltip]=\"onlyVisible ?\n ('igo.geo.layer.resetLayersList' | translate) :\n ('igo.geo.layer.subsetLayersListOnlyVisible' | translate)\" matTooltipShowDelay=\"500\">\n <button class=\"only-visible\" mat-icon-button [disabled]=\"layersAreAllVisible && !onlyVisible\"\n [color]=\"onlyVisible ? 'warn' : 'primary'\" (click)=\"toggleOnlyVisible()\">\n <mat-icon\n matBadge=\"icon\"\n igoMatBadgeIcon=\"eye\"\n igoMatBadgeInverseColor=\"true\"\n igoMatBadgeInheritColor=\"true\"\n [svgIcon]=\"onlyVisible ? 'filter-remove' : 'filter'\">\n </mat-icon>\n </button>\n </div>\n\n <div [matTooltip]=\"selectionMode ?\n ('igo.geo.layer.deactivateSelectionMode' | translate) :\n ('igo.geo.layer.activateSelectionMode' | translate)\" matTooltipShowDelay=\"500\">\n <button class=\"selection-mode\" mat-icon-button\n color=\"primary\" (click)=\"toggleSelectionMode()\">\n <mat-icon [svgIcon]=\"selectionMode ? 'checkbox-multiple-marked-outline' : 'checkbox-multiple-blank-outline'\"></mat-icon>\n </button>\n </div>\n\n</mat-list-item>\n", styles: ["mat-form-field.inputFilter{width:calc(100% - 100px);max-width:200px}.selection-mode{margin-left:5px}\n"] }]
@@ -15348,7 +15512,7 @@ TrackFeatureButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
15348
15512
  i0.ɵɵtemplate(0, TrackFeatureButtonComponent_button_0_Template, 3, 4, "button", 0);
15349
15513
  } if (rf & 2) {
15350
15514
  i0.ɵɵproperty("ngIf", ctx.options.trackFeature);
15351
- } }, dependencies: [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i7.TranslatePipe], changeDetection: 0 });
15515
+ } }, dependencies: [i1.NgIf, i2.MatIcon, i3$1.MatButton, i4.MatTooltip, i7.TranslatePipe], changeDetection: 0 });
15352
15516
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TrackFeatureButtonComponent, [{
15353
15517
  type: Component,
15354
15518
  args: [{ selector: 'igo-track-feature-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button *ngIf=\"options.trackFeature\"\n mat-icon-button\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.trackFeature' | translate\"\n [color]=\"color\"\n (click)=\"toggleTrackFeature()\">\n <mat-icon svgIcon=\"crosshairs-gps\"></mat-icon>\n</button>\n" }]
@@ -16355,7 +16519,7 @@ function FeatureDetailsComponent_table_0_tr_2_td_4_Template(rf, ctx) { if (rf &
16355
16519
  const property_r3 = i0.ɵɵnextContext().$implicit;
16356
16520
  i0.ɵɵproperty("innerHTML", property_r3.value, i0.ɵɵsanitizeHtml);
16357
16521
  } }
16358
- const _c0$e = function () { return { "cursor": "pointer", "color": "blue" }; };
16522
+ const _c0$f = function () { return { "cursor": "pointer", "color": "blue" }; };
16359
16523
  function FeatureDetailsComponent_table_0_tr_2_td_5_Template(rf, ctx) { if (rf & 1) {
16360
16524
  const _r20 = i0.ɵɵgetCurrentView();
16361
16525
  i0.ɵɵelementStart(0, "td")(1, "u", 13);
@@ -16366,7 +16530,7 @@ function FeatureDetailsComponent_table_0_tr_2_td_5_Template(rf, ctx) { if (rf &
16366
16530
  const property_r3 = i0.ɵɵnextContext().$implicit;
16367
16531
  const ctx_r8 = i0.ɵɵnextContext(2);
16368
16532
  i0.ɵɵadvance(1);
16369
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(2, _c0$e));
16533
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(2, _c0$f));
16370
16534
  i0.ɵɵadvance(1);
16371
16535
  i0.ɵɵtextInterpolate(ctx_r8.getEmbeddedLinkText(property_r3.value));
16372
16536
  } }
@@ -16383,7 +16547,7 @@ function FeatureDetailsComponent_table_0_tr_2_td_6_Template(rf, ctx) { if (rf &
16383
16547
  i0.ɵɵelementEnd()();
16384
16548
  } if (rf & 2) {
16385
16549
  i0.ɵɵadvance(1);
16386
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(4, _c0$e));
16550
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(4, _c0$f));
16387
16551
  i0.ɵɵadvance(1);
16388
16552
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "igo.geo.targetHtmlUrl"));
16389
16553
  } }
@@ -16676,7 +16840,7 @@ class FeatureDetailsComponent {
16676
16840
  }
16677
16841
  }
16678
16842
  }
16679
- FeatureDetailsComponent.ɵfac = function FeatureDetailsComponent_Factory(t) { return new (t || FeatureDetailsComponent)(i0.ɵɵdirectiveInject(i1$2.HttpClient), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2$3.DomSanitizer), i0.ɵɵdirectiveInject(i2$1.NetworkService), i0.ɵɵdirectiveInject(i2$1.MessageService), i0.ɵɵdirectiveInject(i2$1.ConfigService)); };
16843
+ FeatureDetailsComponent.ɵfac = function FeatureDetailsComponent_Factory(t) { return new (t || FeatureDetailsComponent)(i0.ɵɵdirectiveInject(i1$1.HttpClient), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2$3.DomSanitizer), i0.ɵɵdirectiveInject(i2$1.NetworkService), i0.ɵɵdirectiveInject(i2$1.MessageService), i0.ɵɵdirectiveInject(i2$1.ConfigService)); };
16680
16844
  FeatureDetailsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FeatureDetailsComponent, selectors: [["igo-feature-details"]], inputs: { source: "source", map: "map", toolbox: "toolbox", feature: "feature" }, outputs: { routeEvent: "routeEvent", selectFeature: "selectFeature", htmlDisplayEvent: "htmlDisplayEvent" }, decls: 2, vars: 2, consts: [["class", "igo-striped mat-typography", 4, "ngIf"], [3, "srcdoc", "src", 4, "ngIf"], [1, "igo-striped", "mat-typography"], [4, "ngFor", "ngForOf"], [4, "ngIf"], ["id", "keyValue", 4, "ngIf"], [3, "innerHTML", 4, "ngIf"], ["mat-list-avatar", "", 3, "svgIcon"], ["target", "_blank", "rel", "noopener noreferrer", 3, "href"], ["mat-icon-button", "", 1, "copyClipboard", 3, "click"], ["svgIcon", "content-copy"], ["id", "keyValue"], [3, "innerHTML"], [3, "ngStyle", "click"], ["target", "_blank", "rel", "noopener noreferrer", 3, "href", "click"], ["igoImageError", "", "width", "225", "height", "auto", 3, "src"], [3, "srcdoc", "src"]], template: function FeatureDetailsComponent_Template(rf, ctx) { if (rf & 1) {
16681
16845
  i0.ɵɵtemplate(0, FeatureDetailsComponent_table_0_Template, 4, 3, "table", 0);
16682
16846
  i0.ɵɵtemplate(1, FeatureDetailsComponent_iframe_1_Template, 1, 2, "iframe", 1);
@@ -16684,11 +16848,11 @@ FeatureDetailsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Fea
16684
16848
  i0.ɵɵproperty("ngIf", ctx.ready && ctx.feature && ctx.isObject(ctx.feature.properties) && ctx.feature.properties.target !== "iframe");
16685
16849
  i0.ɵɵadvance(1);
16686
16850
  i0.ɵɵproperty("ngIf", ctx.isHtmlDisplay());
16687
- } }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i1$1.NgStyle, i2.MatIcon, i5$1.ImageErrorDirective, i1$1.AsyncPipe, i1$1.JsonPipe, i7.TranslatePipe, i5$1.KeyValuePipe, i5$1.SecureImagePipe], styles: ["table[_ngcontent-%COMP%]{width:100%}table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:5px}#keyValue[_ngcontent-%COMP%]{width:30%}table[_ngcontent-%COMP%] .routing{cursor:pointer}iframe[_ngcontent-%COMP%]{height:calc(100% - 4px);width:100%;border:0}.copyClipboard[_ngcontent-%COMP%]{border:none;background:transparent;cursor:pointer}"], changeDetection: 0 });
16851
+ } }, dependencies: [i1.NgForOf, i1.NgIf, i1.NgStyle, i2.MatIcon, i5$1.ImageErrorDirective, i1.AsyncPipe, i1.JsonPipe, i7.TranslatePipe, i5$1.KeyValuePipe, i5$1.SecureImagePipe], styles: ["table[_ngcontent-%COMP%]{width:100%}table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:5px}#keyValue[_ngcontent-%COMP%]{width:30%}table[_ngcontent-%COMP%] .routing{cursor:pointer}iframe[_ngcontent-%COMP%]{height:calc(100% - 4px);width:100%;border:0}.copyClipboard[_ngcontent-%COMP%]{border:none;background:transparent;cursor:pointer}"], changeDetection: 0 });
16688
16852
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FeatureDetailsComponent, [{
16689
16853
  type: Component,
16690
16854
  args: [{ selector: 'igo-feature-details', changeDetection: ChangeDetectionStrategy.OnPush, template: "<table class=\"igo-striped mat-typography\" *ngIf=\"ready && feature && isObject(feature.properties) && feature.properties.target !== 'iframe'\">\n <tbody>\n <tr *ngFor=\"let property of filterFeatureProperties(feature) | keyvalue\">\n\n <td *ngIf=\"feature.properties.target === '_blank' && property.key === 'url'\">\n <mat-icon mat-list-avatar svgIcon=\"{{icon}}\"></mat-icon>\n </td>\n\n <td *ngIf=\"feature.properties.target === '_blank' && property.key === 'url'\">\n <a href=\"{{property.value}}\" target='_blank' rel=\"noopener noreferrer\"> {{ 'igo.geo.targetHtmlUrl' | translate }} {{title}}</a>\n <button class=\"copyClipboard\" mat-icon-button (click)=\"copyTextToClipboard(property.value)\">\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\n </button>\n </td>\n\n <td id=\"keyValue\" *ngIf=\"feature.properties.target === undefined\">\n {{property.key}}\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && !isObject(property.value) && !isUrl(property.value) && !isEmbeddedLink(property.value)\" [innerHTML]=\"property.value\">\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && isEmbeddedLink(property.value)\">\n <u [ngStyle]=\"{'cursor': 'pointer', 'color': 'blue'}\" (click)=\"openSecureUrl(property.value)\">{{ getEmbeddedLinkText(property.value) }}</u>\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && !isObject(property.value) && (isDoc(property.value) || isUrl(property.value)) && !isImg(property.value)\">\n <u [ngStyle]=\"{'cursor': 'pointer', 'color': 'blue'}\" (click)=\"openSecureUrl(property.value)\">{{ 'igo.geo.targetHtmlUrl' | translate }}</u>\n <button class=\"copyClipboard\" mat-icon-button (click)=\"copyTextToClipboard(property.value)\">\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\n </button>\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && !isObject(property.value) && isUrl(property.value) && isImg(property.value)\">\n <a href=\"{{property.value}}\" target='_blank' (click)=\"openSecureUrl(property.value)\" rel=\"noopener noreferrer\">\n <img igoImageError src=\"{{(property.value | secureImage) |\u00A0async}}\" width=\"225\" height=\"auto\">\n </a>\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && isObject(property.value)\" [innerHTML]=\"property.value | json\">\n </td>\n\n </tr>\n </tbody>\n</table>\n\n<iframe *ngIf=\"isHtmlDisplay()\" [srcdoc]=\"htmlSanitizer(feature.properties)\" [src]=\"urlSanitizer(feature.properties.url)\"></iframe>\n", styles: ["table{width:100%}table td{padding:5px}#keyValue{width:30%}table ::ng-deep .routing{cursor:pointer}iframe{height:calc(100% - 4px);width:100%;border:0}.copyClipboard{border:none;background:transparent;cursor:pointer}\n"] }]
16691
- }], function () { return [{ type: i1$2.HttpClient }, { type: i0.ChangeDetectorRef }, { type: i2$3.DomSanitizer }, { type: i2$1.NetworkService }, { type: i2$1.MessageService }, { type: i2$1.ConfigService }]; }, { source: [{
16855
+ }], function () { return [{ type: i1$1.HttpClient }, { type: i0.ChangeDetectorRef }, { type: i2$3.DomSanitizer }, { type: i2$1.NetworkService }, { type: i2$1.MessageService }, { type: i2$1.ConfigService }]; }, { source: [{
16692
16856
  type: Input
16693
16857
  }], map: [{
16694
16858
  type: Input
@@ -16704,7 +16868,7 @@ FeatureDetailsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Fea
16704
16868
  type: Output
16705
16869
  }] }); })();
16706
16870
 
16707
- const _c0$d = ["igoForm"];
16871
+ const _c0$e = ["igoForm"];
16708
16872
  const _c1$a = ["*", [["", "formButtons", ""]]];
16709
16873
  const _c2$5 = ["*", "[formButtons]"];
16710
16874
  /**
@@ -16779,7 +16943,7 @@ class FeatureFormComponent {
16779
16943
  }
16780
16944
  FeatureFormComponent.ɵfac = function FeatureFormComponent_Factory(t) { return new (t || FeatureFormComponent)(); };
16781
16945
  FeatureFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FeatureFormComponent, selectors: [["igo-feature-form"]], viewQuery: function FeatureFormComponent_Query(rf, ctx) { if (rf & 1) {
16782
- i0.ɵɵviewQuery(_c0$d, 7);
16946
+ i0.ɵɵviewQuery(_c0$e, 7);
16783
16947
  } if (rf & 2) {
16784
16948
  let _t;
16785
16949
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.igoForm = _t.first);
@@ -16793,7 +16957,7 @@ FeatureFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Featur
16793
16957
  i0.ɵɵelementEnd();
16794
16958
  } if (rf & 2) {
16795
16959
  i0.ɵɵproperty("form", ctx.form)("formData", i0.ɵɵpipeBind1(2, 2, ctx.feature$));
16796
- } }, dependencies: [i5$1.FormComponent, i1$1.AsyncPipe], styles: ["[_nghost-%COMP%]{display:block}igo-form[_ngcontent-%COMP%]{height:100%}"], changeDetection: 0 });
16960
+ } }, dependencies: [i5$1.FormComponent, i1.AsyncPipe], styles: ["[_nghost-%COMP%]{display:block}igo-form[_ngcontent-%COMP%]{height:100%}"], changeDetection: 0 });
16797
16961
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FeatureFormComponent, [{
16798
16962
  type: Component,
16799
16963
  args: [{ selector: 'igo-feature-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n<igo-form\n #igoForm\n [form]=\"form\"\n [formData]=\"feature$ | async\"\n (submitForm)=\"onSubmit($event)\">\n\n <ng-content></ng-content>\n \n <ng-content select=\"[formButtons]\" formButtons></ng-content>\n \n</igo-form>\n", styles: [":host{display:block}igo-form{height:100%}\n"] }]
@@ -17766,7 +17930,7 @@ class DrawPopupComponent {
17766
17930
  return this.languageService.translate.instant('igo.geo.draw.labelType.' + option);
17767
17931
  }
17768
17932
  }
17769
- DrawPopupComponent.ɵfac = function DrawPopupComponent_Factory(t) { return new (t || DrawPopupComponent)(i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); };
17933
+ DrawPopupComponent.ɵfac = function DrawPopupComponent_Factory(t) { return new (t || DrawPopupComponent)(i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i3.MatDialogRef), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); };
17770
17934
  DrawPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawPopupComponent, selectors: [["igo-draw-popup-component"]], inputs: { confirmFlag: "confirmFlag", labelFlag: "labelFlag", coordinatesMeasureUnit: "coordinatesMeasureUnit", lengthMeasureUnit: "lengthMeasureUnit", areaMeasureUnit: "areaMeasureUnit" }, decls: 14, vars: 14, consts: [["mat-dialog-title", ""], [1, "geometry-type-toggle", "mat-typography"], [3, "value", "change"], [3, "value"], [4, "ngIf"], [1, "mat-typography"], ["class", "mat-typography", 4, "ngIf"], ["mat-dialog-actions", ""], ["mat-raised-button", "", 3, "click"], ["mat-raised-button", "", "color", "primary", 3, "click"], [3, "value", "disabled", "checked", "change", 4, "ngFor", "ngForOf"], [3, "value", "disabled", "checked", "change"], ["class", "mat-typography", 3, "value", "disabled", "checked", "change", 4, "ngFor", "ngForOf"], [1, "mat-typography", 3, "value", "disabled", "checked", "change"], [1, "readOnly-Input"], ["matInput", "", "placeholder", "(Latitude, Longitude)", "readonly", "", 3, "value"], ["input", ""], [1, "unit-field"], [3, "value", "selectionChange"], [3, "value", 4, "ngFor", "ngForOf"], ["matInput", "", "readonly", "", 3, "placeholder", "value"], [1, "input"], ["matInput", "", "cdkFocusInitial", "", 3, "placeholder", "value", "select", "input"]], template: function DrawPopupComponent_Template(rf, ctx) { if (rf & 1) {
17771
17935
  i0.ɵɵelementStart(0, "div")(1, "h2", 0);
17772
17936
  i0.ɵɵtext(2);
@@ -17801,11 +17965,11 @@ DrawPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawPopu
17801
17965
  i0.ɵɵproperty("ngIf", ctx.labelFlag !== ctx.labelType.Custom);
17802
17966
  i0.ɵɵadvance(1);
17803
17967
  i0.ɵɵproperty("ngIf", ctx.labelFlag === ctx.labelType.Custom);
17804
- } }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i3.MatButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i13.MatFormField, i14.MatInput, i15.MatSelect, i9.MatOption, i1.MatDialogTitle, i1.MatDialogActions, i17.MatRadioGroup, i17.MatRadioButton, i12.MatCheckbox, i7.TranslatePipe], styles: [".mat-radio-button[_ngcontent-%COMP%] ~ .mat-radio-button[_ngcontent-%COMP%]{margin-left:16px}.readOnly-Input[_ngcontent-%COMP%]{width:200px!important}.unit-field[_ngcontent-%COMP%]{width:50px;margin-left:10px;margin-top:10px}.mat-form-field[_ngcontent-%COMP%]{position:-webkit-sticky!important;position:sticky!important}.coordinatesInputView[_ngcontent-%COMP%]{top:5em!important} .mat-form-field-wrapper{margin-bottom:-1.25em;margin-top:.25em}.geometry-type-toggle[_ngcontent-%COMP%], .mat-dialog-actions[_ngcontent-%COMP%]{display:flex!important;justify-content:center}.input[_ngcontent-%COMP%]{width:auto!important}.mat-button-toggle-group[_ngcontent-%COMP%], .mat-button-toggle[_ngcontent-%COMP%]{width:100%}mat-checkbox[_ngcontent-%COMP%]{margin-right:10px}"] });
17968
+ } }, dependencies: [i1.NgForOf, i1.NgIf, i3$1.MatButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i13.MatFormField, i14.MatInput, i15.MatSelect, i9.MatOption, i3.MatDialogTitle, i3.MatDialogActions, i17.MatRadioGroup, i17.MatRadioButton, i12.MatCheckbox, i7.TranslatePipe], styles: [".mat-radio-button[_ngcontent-%COMP%] ~ .mat-radio-button[_ngcontent-%COMP%]{margin-left:16px}.readOnly-Input[_ngcontent-%COMP%]{width:200px!important}.unit-field[_ngcontent-%COMP%]{width:50px;margin-left:10px;margin-top:10px}.mat-form-field[_ngcontent-%COMP%]{position:-webkit-sticky!important;position:sticky!important}.coordinatesInputView[_ngcontent-%COMP%]{top:5em!important} .mat-form-field-wrapper{margin-bottom:-1.25em;margin-top:.25em}.geometry-type-toggle[_ngcontent-%COMP%], .mat-dialog-actions[_ngcontent-%COMP%]{display:flex!important;justify-content:center}.input[_ngcontent-%COMP%]{width:auto!important}.mat-button-toggle-group[_ngcontent-%COMP%], .mat-button-toggle[_ngcontent-%COMP%]{width:100%}mat-checkbox[_ngcontent-%COMP%]{margin-right:10px}"] });
17805
17969
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrawPopupComponent, [{
17806
17970
  type: Component,
17807
17971
  args: [{ selector: 'igo-draw-popup-component', template: "<div>\n <h2 mat-dialog-title>\n {{ 'igo.geo.draw.popupTitle' | translate }}\n </h2>\n</div>\n\n\n<div class=\"geometry-type-toggle mat-typography\">\n <mat-button-toggle-group\n (change)=\"onLabelTypeChange($event.value)\" [value]=\"customOrPredefined\">\n <mat-button-toggle [value]=\"labelType.Custom\" >\n {{ 'igo.geo.draw.labelType.custom' | translate }}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"labelType.Predefined\">\n {{ 'igo.geo.draw.labelType.predefined' | translate }}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n\n<div *ngIf=\"labelFlag !== labelType.Custom\">\n <div>\n <p class=\"mat-typography\">{{ 'igo.geo.draw.builtInInstructions' | translate }}</p>\n <mat-radio-group *ngIf=\"olGeometryType !== 'Polygon'\" class=\"mat-typography\">\n <mat-radio-button *ngFor=\"let option of arrayBuiltInType\" [value]=\"option.value\" [disabled]=\"optionAvailable(option.value)\" \n (change)=\"onLabelTypeChange($event.value)\" [checked]=\"option.checked\">\n {{getProperLengthLabel(option.value)}}\n </mat-radio-button>\n </mat-radio-group>\n <ng-container class=\"mat-typography\" *ngIf=\"olGeometryType === 'Polygon'\">\n <mat-checkbox\n *ngFor=\"let option of arrayBuiltInType\"\n class=\"mat-typography\"\n [value]=\"option.value\"\n [disabled]=\"optionAvailable(option.value)\"\n (change)=\"onLabelTypeChange($event.source.value, $event.checked)\"\n [checked]=\"option.checked\">\n {{getProperLengthLabel(option.value)}}\n </mat-checkbox>\n </ng-container>\n <div *ngIf=\"labelFlag === labelType.Coordinates\">\n <mat-form-field class=\"readOnly-Input\">\n <input\n #input\n matInput\n placeholder=\"(Latitude, Longitude)\"\n value=\"{{currentCoordinates}}\" readonly>\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select [value]=\"coordinatesMeasureUnit\" (selectionChange)=\"onChangeCoordinateUnit($event.value)\">\n <mat-option *ngFor=\"let unit of allCoordinatesUnits\" [value]=\"unit\">\n {{unit}}\n </mat-option>\n </mat-select> \n </mat-form-field>\n </div>\n <div *ngIf=\"labelFlag === labelType.Length || polygonCheck === 2\">\n <mat-form-field class=\"readOnly-Input\">\n <input\n #input\n matInput\n placeholder={{lengthLabelT}}\n value=\"{{currentLength}}\" readonly>\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select [value]=\"lengthMeasureUnit\" (selectionChange)=\"onChangeLengthUnit($event.value)\">\n <mat-option *ngFor=\"let unit of allLengthUnits\" [value]=\"unit\">\n {{getLengthUnitEnum(unit)}}\n </mat-option>\n </mat-select> \n </mat-form-field>\n </div>\n <div *ngIf=\"labelFlag === labelType.Area || polygonCheck === 2\">\n <mat-form-field class=\"readOnly-Input\">\n <input\n #input\n matInput\n placeholder=\"{{ 'igo.geo.draw.labelType.Area' | translate }}\"\n value=\"{{currentArea}}\" readonly>\n </mat-form-field>\n <mat-form-field class=\"unit-field\">\n <mat-select [value]=\"areaMeasureUnit\" (selectionChange)=\"onChangeAreaUnit($event.value)\">\n <mat-option *ngFor=\"let unit of allAreaUnits\" [value]=\"unit\">\n {{getAreaUnitEnum(unit)}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n\n\n <div mat-dialog-actions>\n <button mat-raised-button (click)=\"cancelDrawing()\" >\n {{'igo.geo.draw.cancel' | translate}}\n </button>\n <button \n mat-raised-button \n color=\"primary\" \n (click)=\"confirm()\"> \n {{noLabelButton()}} \n </button>\n </div>\n</div>\n\n<div *ngIf=\"labelFlag === labelType.Custom\">\n <div>\n <p class=\"mat-typography\">{{ 'igo.geo.draw.dialogInstruction' | translate }}</p>\n <mat-form-field class=\"input\">\n <input\n #input\n matInput\n (select)=\"true\"\n (input)=\"getLabelLength($event.target.value)\"\n placeholder=\"{{'igo.geo.draw.dialogTitle' | translate}}\"\n value=\"{{ currentLabel }}\"\n cdkFocusInitial/>\n </mat-form-field>\n </div>\n \n <div mat-dialog-actions>\n <button mat-raised-button (click)=\"cancelDrawing()\" >\n {{'igo.geo.draw.cancel' | translate}}\n </button>\n <button \n mat-raised-button \n color=\"primary\" \n (click)=\"confirm(input.value)\">\n {{noLabelButton()}}\n </button>\n </div>\n</div>\n", styles: [".mat-radio-button~.mat-radio-button{margin-left:16px}.readOnly-Input{width:200px!important}.unit-field{width:50px;margin-left:10px;margin-top:10px}.mat-form-field{position:-webkit-sticky!important;position:sticky!important}.coordinatesInputView{top:5em!important}::ng-deep .mat-form-field-wrapper{margin-bottom:-1.25em;margin-top:.25em}.geometry-type-toggle,.mat-dialog-actions{display:flex!important;justify-content:center}.input{width:auto!important}.mat-button-toggle-group,.mat-button-toggle{width:100%}mat-checkbox{margin-right:10px}\n"] }]
17808
- }], function () { return [{ type: i2$1.LanguageService }, { type: i1.MatDialogRef }, { type: undefined, decorators: [{
17972
+ }], function () { return [{ type: i2$1.LanguageService }, { type: i3.MatDialogRef }, { type: undefined, decorators: [{
17809
17973
  type: Inject,
17810
17974
  args: [MAT_DIALOG_DATA]
17811
17975
  }] }]; }, { confirmFlag: [{
@@ -17856,7 +18020,7 @@ DrawShorcutsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawS
17856
18020
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(15, 8, "igo.geo.draw.abort"));
17857
18021
  i0.ɵɵadvance(5);
17858
18022
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 10, "igo.geo.draw.move"));
17859
- } }, dependencies: [i3.MatButton, i2.MatIcon, i1.MatDialogClose, i1.MatDialogContent, i1.MatDialogActions, i7.TranslatePipe], styles: [".shortcut[_ngcontent-%COMP%]{display:flex;align-items:center}.shortcut-icon[_ngcontent-%COMP%]{margin-right:10px}.shortcuts-close[_ngcontent-%COMP%]{display:flex;justify-content:center}"] });
18023
+ } }, dependencies: [i3$1.MatButton, i2.MatIcon, i3.MatDialogClose, i3.MatDialogContent, i3.MatDialogActions, i7.TranslatePipe], styles: [".shortcut[_ngcontent-%COMP%]{display:flex;align-items:center}.shortcut-icon[_ngcontent-%COMP%]{margin-right:10px}.shortcuts-close[_ngcontent-%COMP%]{display:flex;justify-content:center}"] });
17860
18024
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrawShorcutsComponent, [{
17861
18025
  type: Component,
17862
18026
  args: [{ selector: 'igo-draw-shorcuts', template: "<mat-dialog-content>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\" svgIcon=\"keyboard-return\"></mat-icon>{{'igo.geo.draw.finish' | translate}}</span>\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\" svgIcon=\"backspace-outline\"></mat-icon>{{'igo.geo.draw.undo' | translate}}</span>\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\" svgIcon=\"keyboard-esc\"></mat-icon>{{'igo.geo.draw.abort' | translate}}</span>\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\" svgIcon=\"keyboard-space\"></mat-icon>{{'igo.geo.draw.move' | translate}}</span>\n </div>\n</mat-dialog-content>\n<mat-dialog-actions class=\"shortcuts-close\">\n <button mat-raised-button mat-dialog-close color=\"primary\">OK</button>\n</mat-dialog-actions>", styles: [".shortcut{display:flex;align-items:center}.shortcut-icon{margin-right:10px}.shortcuts-close{display:flex;justify-content:center}\n"] }]
@@ -17875,7 +18039,7 @@ class DrawLayerPopupComponent {
17875
18039
  this.dialogRef.close(labelString);
17876
18040
  }
17877
18041
  }
17878
- DrawLayerPopupComponent.ɵfac = function DrawLayerPopupComponent_Factory(t) { return new (t || DrawLayerPopupComponent)(i0.ɵɵdirectiveInject(i1.MatDialogRef)); };
18042
+ DrawLayerPopupComponent.ɵfac = function DrawLayerPopupComponent_Factory(t) { return new (t || DrawLayerPopupComponent)(i0.ɵɵdirectiveInject(i3.MatDialogRef)); };
17879
18043
  DrawLayerPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawLayerPopupComponent, selectors: [["igo-draw-popup-component"]], inputs: { confirmFlag: "confirmFlag" }, decls: 14, vars: 9, consts: [["mat-dialog-content", ""], [1, "mat-typography"], [1, "example-full-width"], ["matInput", "", 3, "placeholder"], ["input", ""], ["mat-dialog-actions", ""], ["mat-raised-button", "", 3, "click"], ["mat-raised-button", "", "color", "primary", 3, "click"]], template: function DrawLayerPopupComponent_Template(rf, ctx) { if (rf & 1) {
17880
18044
  const _r1 = i0.ɵɵgetCurrentView();
17881
18045
  i0.ɵɵelementStart(0, "div", 0)(1, "p", 1);
@@ -17902,15 +18066,15 @@ DrawLayerPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Dra
17902
18066
  i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(7, 5, "igo.geo.draw.layer.title"));
17903
18067
  i0.ɵɵadvance(5);
17904
18068
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(11, 7, "igo.geo.draw.cancel"), " ");
17905
- } }, dependencies: [i3.MatButton, i13.MatFormField, i14.MatInput, i1.MatDialogContent, i1.MatDialogActions, i7.TranslatePipe] });
18069
+ } }, dependencies: [i3$1.MatButton, i13.MatFormField, i14.MatInput, i3.MatDialogContent, i3.MatDialogActions, i7.TranslatePipe] });
17906
18070
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrawLayerPopupComponent, [{
17907
18071
  type: Component,
17908
18072
  args: [{ selector: 'igo-draw-popup-component', template: "<div mat-dialog-content>\n <p class=\"mat-typography\">\n {{ 'igo.geo.draw.layer.layerDialogInstruction' | translate }}\n </p>\n <mat-form-field class=\"example-full-width\">\n <input\n #input\n matInput\n placeholder=\"{{ 'igo.geo.draw.layer.title' | translate }}\"\n />\n </mat-form-field>\n</div>\n<div mat-dialog-actions>\n <button mat-raised-button (click)=\"cancelDrawing()\">\n {{ 'igo.geo.draw.cancel' | translate }}\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"confirm(input.value)\">\n OK\n </button>\n</div>\n" }]
17909
- }], function () { return [{ type: i1.MatDialogRef }]; }, { confirmFlag: [{
18073
+ }], function () { return [{ type: i3.MatDialogRef }]; }, { confirmFlag: [{
17910
18074
  type: Input
17911
18075
  }] }); })();
17912
18076
 
17913
- const _c0$c = ["selectedLayer"];
18077
+ const _c0$d = ["selectedLayer"];
17914
18078
  function DrawComponent_mat_slide_toggle_22_Template(rf, ctx) { if (rf & 1) {
17915
18079
  const _r10 = i0.ɵɵgetCurrentView();
17916
18080
  i0.ɵɵelementStart(0, "mat-slide-toggle", 5);
@@ -18985,9 +19149,9 @@ class DrawComponent {
18985
19149
  return Number(length / (2 * Math.PI));
18986
19150
  }
18987
19151
  }
18988
- DrawComponent.ɵfac = function DrawComponent_Factory(t) { return new (t || DrawComponent)(i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i2$2.UntypedFormBuilder), i0.ɵɵdirectiveInject(DrawStyleService), i0.ɵɵdirectiveInject(i1.MatDialog), i0.ɵɵdirectiveInject(DrawIconService)); };
19152
+ DrawComponent.ɵfac = function DrawComponent_Factory(t) { return new (t || DrawComponent)(i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i2$2.UntypedFormBuilder), i0.ɵɵdirectiveInject(DrawStyleService), i0.ɵɵdirectiveInject(i3.MatDialog), i0.ɵɵdirectiveInject(DrawIconService)); };
18989
19153
  DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent, selectors: [["igo-draw"]], viewQuery: function DrawComponent_Query(rf, ctx) { if (rf & 1) {
18990
- i0.ɵɵviewQuery(_c0$c, 5);
19154
+ i0.ɵɵviewQuery(_c0$d, 5);
18991
19155
  } if (rf & 2) {
18992
19156
  let _t;
18993
19157
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.select = _t.first);
@@ -19105,7 +19269,7 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
19105
19269
  i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(47, 45, "igo.geo.draw.shortcuts"));
19106
19270
  i0.ɵɵadvance(2);
19107
19271
  i0.ɵɵproperty("ngIf", ctx.selectedFeatures$.value.length);
19108
- } }, dependencies: [i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NumberValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.MinValidator, i2$2.NgForm, i2$2.FormControlDirective, i1$1.NgForOf, i1$1.NgIf, i3.MatButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i11.MatDivider, i13.MatFormField, i13.MatLabel, i2.MatIcon, i7$1.MatBadge, i4.MatTooltip, i14.MatInput, i15.MatSelect, i15.MatSelectTrigger, i9.MatOption, i23.MatSlideToggle, i5$1.EntityTableComponent, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".geometry-type-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.geometry-type-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%]{width:100%}.geometry-type-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] mat-button-toggle[_ngcontent-%COMP%]{width:25%}.draw-options[_ngcontent-%COMP%]{overflow-x:hidden}.draw-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.draw-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.icon-options[_ngcontent-%COMP%]{margin:5px 5px 0}.edition-drawing[_ngcontent-%COMP%]{padding:10px 0}img[_ngcontent-%COMP%]{width:100%;height:100%}.deleteBtn[_ngcontent-%COMP%]{margin-left:12px}.storeTable[_ngcontent-%COMP%]{height:auto!important}.layer-select[_ngcontent-%COMP%]{width:85%;padding:10px 10px 0%}.input-button-container[_ngcontent-%COMP%]{padding:10px}.input-button-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:25%}.input-button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{left:8px;bottom:10px}.radius[_ngcontent-%COMP%]{display:flex;flex-flow:column nowrap;width:110%}.unit-field[_ngcontent-%COMP%]{width:110px;margin-left:30px}.radius-unit[_ngcontent-%COMP%]{display:flex;width:100%;margin-left:2px;padding:5px} igo-entity-table td:last-child{text-align:right!important} igo-entity-table td:last-child button{margin:0%!important}"], data: { animation: [
19272
+ } }, dependencies: [i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NumberValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.MinValidator, i2$2.NgForm, i2$2.FormControlDirective, i1.NgForOf, i1.NgIf, i3$1.MatButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i11.MatDivider, i13.MatFormField, i13.MatLabel, i2.MatIcon, i7$1.MatBadge, i4.MatTooltip, i14.MatInput, i15.MatSelect, i15.MatSelectTrigger, i9.MatOption, i23.MatSlideToggle, i5$1.EntityTableComponent, i1.AsyncPipe, i7.TranslatePipe], styles: [".geometry-type-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.geometry-type-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%]{width:100%}.geometry-type-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] mat-button-toggle[_ngcontent-%COMP%]{width:25%}.draw-options[_ngcontent-%COMP%]{overflow-x:hidden}.draw-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.draw-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.icon-options[_ngcontent-%COMP%]{margin:5px 5px 0}.edition-drawing[_ngcontent-%COMP%]{padding:10px 0}img[_ngcontent-%COMP%]{width:100%;height:100%}.deleteBtn[_ngcontent-%COMP%]{margin-left:12px}.storeTable[_ngcontent-%COMP%]{height:auto!important}.layer-select[_ngcontent-%COMP%]{width:85%;padding:10px 10px 0%}.input-button-container[_ngcontent-%COMP%]{padding:10px}.input-button-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:25%}.input-button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{left:8px;bottom:10px}.radius[_ngcontent-%COMP%]{display:flex;flex-flow:column nowrap;width:110%}.unit-field[_ngcontent-%COMP%]{width:110px;margin-left:30px}.radius-unit[_ngcontent-%COMP%]{display:flex;width:100%;margin-left:2px;padding:5px} igo-entity-table td:last-child{text-align:right!important} igo-entity-table td:last-child button{margin:0%!important}"], data: { animation: [
19109
19273
  trigger('openClose', [
19110
19274
  state('open', style({
19111
19275
  opacity: 1
@@ -19131,7 +19295,7 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
19131
19295
  transition('closed => open', [animate('800ms ease')])
19132
19296
  ])
19133
19297
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\n <div class=\"geometry-type-toggle mat-typography\">\n <mat-button-toggle-group\n (change)=\"onGeometryTypeChange($event.value)\" [value]=\"geometryType.Point\">\n <mat-button-toggle [value]=\"geometryType.Point\">\n {{'igo.geo.draw.' + geometryType.Point | translate}}\n </mat-button-toggle>\n\n <mat-button-toggle [value]=\"geometryType.LineString\">\n {{'igo.geo.draw.' + geometryType.LineString | translate}}\n </mat-button-toggle>\n\n <mat-button-toggle [value]=\"geometryType.Polygon\">\n {{'igo.geo.draw.' + geometryType.Polygon | translate}}\n </mat-button-toggle>\n\n <mat-button-toggle [value]=\"geometryType.Circle\">\n {{'igo.geo.draw.' + geometryType.Circle | translate}}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n\n <div class=\"draw-options mat-typography\">\n <mat-slide-toggle\n [disabled]=\"drawControlIsDisabled\"\n [checked]=\"drawControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDrawControl($event.checked)\">\n {{'igo.geo.spatialFilter.drawControl' | translate}}\n </mat-slide-toggle>\n\n <mat-slide-toggle\n [checked]=\"labelsAreShown\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleLabels()\">\n {{ 'igo.geo.draw.toggleMapTooltips' | translate }}\n </mat-slide-toggle>\n\n <mat-slide-toggle\n *ngIf=\"!isPoint()\"\n [checked]=\"freehandMode\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleFreehandMode($event)\">\n {{ 'igo.geo.draw.freehandMode' | translate }}\n </mat-slide-toggle>\n\n <div class=\"radius-unit\" *ngIf=\"isCircle()\">\n <form class=\"radius-form\">\n <mat-form-field class=\"radius\">\n <input\n matInput type=\"number\"\n min=\"0\"\n placeholder=\"{{ 'igo.geo.spatialFilter.radius' | translate }}\"\n [formControl]=\"radiusFormControl\"\n [readonly]=\"this.freehandMode\">\n </mat-form-field>\n </form>\n\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"measureUnit\"\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\n <mat-option\n *ngFor=\"let measureUnit of measureUnits\"\n [value]=\"measureUnit\">\n {{('igo.geo.measure.' + measureUnit) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n\n <mat-divider></mat-divider>\n\n <div>\n <mat-form-field appearance=\"outline\" class=\"layer-select\">\n <mat-label>{{'igo.geo.draw.layer.title' | translate}}</mat-label>\n <mat-select #selectedLayer (selectionChange)=\"onLayerChange(selectedLayer.value)\" [value]=\"updateActiveLayer()\">\n <mat-option *ngFor=\"let layer of allLayers\" [value]=\"layer\">\n {{ layer.title }}\n </mat-option>\n <mat-option id=\"createNewLayer\" >\n {{'igo.geo.draw.layer.createNewLayer' | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <button\n *ngIf=\"activeDrawingLayer\"\n mat-icon-button\n [color]=\"activeDrawingLayer.visible ? 'primary' : 'default'\"\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"activeDrawingLayer.visible ?\n ('igo.geo.layer.hideLayer' | translate) :\n ('igo.geo.layer.showLayer' | translate)\"\n (click)=\"activeDrawingLayer.visible = !activeDrawingLayer.visible\">\n <mat-icon\n [svgIcon]=\"activeDrawingLayer.visible ? 'eye' : 'eye-off'\">\n </mat-icon>\n </button>\n </div>\n <mat-divider></mat-divider>\n <div>\n <button\n *ngIf=\"activeStore.count$.getValue() > 0\"\n class=\"deleteBtn\"\n mat-icon-button\n color=\"warn\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.draw.delete' | translate\"\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\n (click)=\"deleteDrawings()\"\n >\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n\n <div>\n <igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"activeStore\"\n [template]=\"tableTemplate\">\n </igo-entity-table>\n </div>\n </div>\n\n <div class=\"icon-options\">\n <mat-form-field *ngIf=\"icons.length >= 1\">\n <mat-label>{{ 'igo.geo.draw.icon' | translate }}</mat-label>\n <mat-select>\n <mat-select-trigger>\n <div *ngIf=\"icon\" class=\"box\">\n <img src=\"{{ icon }}\">\n </div>\n </mat-select-trigger>\n <mat-option value=\"\" (click)=\"onIconChange()\">{{ 'igo.geo.draw.noIcon' | translate }}</mat-option>\n <mat-option\n *ngFor=\"let icon_html of icons\"\n [value]=\"icon_html\"\n (click)=\"onIconChange(icon_html)\">\n <div class=\"box\">\n <img src=\"{{ icon_html }}\">\n </div>\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <button\n mat-icon-button\n color=\"accent\"\n disableRipple=\"true\"\n (click)=\"openShorcutsDialog()\"\n >\n <mat-icon\n class=\"shortcuts-icon\"\n svgIcon=\"keyboard-outline\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.draw.shortcuts' | translate\"\n >\n </mat-icon>\n </button>\n\n <button\n *ngIf=\"selectedFeatures$.value.length\"\n mat-raised-button\n color=\"primary\"\n (click)=\"openStyleModalDialog()\"\n [matTooltip]=\"'igo.geo.layer.style.styleModalTooltip' | translate\">\n {{'igo.geo.layer.style.styleModal' | translate}}\n <mat-icon\n class=\"style-icon\"\n svgIcon=\"palette\"\n [matBadge]=\"selectedFeatures$.value.length\"\n matBadgeColor=\"warn\"\n matBadgeSize=\"medium\">\n </mat-icon>\n </button>\n</div>\n", styles: [".geometry-type-toggle{padding:10px;text-align:center}.geometry-type-toggle mat-button-toggle-group{width:100%}.geometry-type-toggle mat-button-toggle-group mat-button-toggle{width:25%}.draw-options{overflow-x:hidden}.draw-options mat-slide-toggle{width:100%;margin:10px}.draw-options mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.icon-options{margin:5px 5px 0}.edition-drawing{padding:10px 0}img{width:100%;height:100%}.deleteBtn{margin-left:12px}.storeTable{height:auto!important}.layer-select{width:85%;padding:10px 10px 0%}.input-button-container{padding:10px}.input-button-container mat-form-field{width:25%}.input-button-container button{left:8px;bottom:10px}.radius{display:flex;flex-flow:column nowrap;width:110%}.unit-field{width:110px;margin-left:30px}.radius-unit{display:flex;width:100%;margin-left:2px;padding:5px}::ng-deep igo-entity-table td:last-child{text-align:right!important}::ng-deep igo-entity-table td:last-child button{margin:0%!important}\n"] }]
19134
- }], function () { return [{ type: i2$1.LanguageService }, { type: i2$2.UntypedFormBuilder }, { type: DrawStyleService }, { type: i1.MatDialog }, { type: DrawIconService }]; }, { map: [{
19298
+ }], function () { return [{ type: i2$1.LanguageService }, { type: i2$2.UntypedFormBuilder }, { type: DrawStyleService }, { type: i3.MatDialog }, { type: DrawIconService }]; }, { map: [{
19135
19299
  type: Input
19136
19300
  }], stores: [{
19137
19301
  type: Input
@@ -19319,7 +19483,7 @@ class StyleModalComponent {
19319
19483
  this.dialogRef.close(this.styleModalData);
19320
19484
  }
19321
19485
  }
19322
- StyleModalComponent.ɵfac = function StyleModalComponent_Factory(t) { return new (t || StyleModalComponent)(i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(i2$2.UntypedFormBuilder), i0.ɵɵdirectiveInject(DrawStyleService), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); };
19486
+ StyleModalComponent.ɵfac = function StyleModalComponent_Factory(t) { return new (t || StyleModalComponent)(i0.ɵɵdirectiveInject(i3.MatDialogRef), i0.ɵɵdirectiveInject(i2$2.UntypedFormBuilder), i0.ɵɵdirectiveInject(DrawStyleService), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); };
19323
19487
  StyleModalComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: StyleModalComponent, selectors: [["igo-style-modal-component"]], inputs: { confirmFlag: "confirmFlag" }, decls: 54, vars: 46, consts: [["mat-dialog-content", ""], ["mat-dialog-title", "", 1, "mat-typography"], [1, "edition-drawing", "mat-typography", 3, "hidden"], [1, "igo-form", 3, "formGroup"], ["class", "fill-color-picker mat-typography", 4, "ngIf"], [1, "stroke-color-picker", "mat-typography"], ["svgIcon", "square-outline", 1, "stroke-palette-icon"], ["appearance", "outline", "floatLabel", "always", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "stroke-field", 3, "matTooltip"], ["formControlName", "stroke", "matInput", "", "type", "text", 3, "readonly", "colorPicker", "cpWidth", "cpPosition", "cpPositionOffset", "cpOutputFormat", "cpCancelButton", "cpCancelButtonText", "cpOKButton", "colorPickerChange"], ["strokeColorInput", ""], [1, "igo-input-container"], ["appearance", "outline", 1, "igo-form-input-box"], ["matInput", "", "type", "number", "placeholder", "10", "min", "10", "onkeydown", "return event.keyCode !== 69", 3, "value", "input"], ["testFontSize", ""], ["matSuffix", ""], [3, "value", "selectionChange"], ["testFontStyle", ""], [3, "value", 4, "ngFor", "ngForOf"], ["matInput", "", "type", "number", "onkeydown", "return event.keyCode !== 69", 3, "value", "input"], ["offsetXInput", ""], ["offsetYInput", ""], ["mat-dialog-actions", ""], ["mat-raised-button", "", 3, "click"], ["mat-raised-button", "", "color", "primary", 3, "click"], [1, "fill-color-picker", "mat-typography"], ["svgIcon", "square", 1, "stroke-palette-icon"], ["appearance", "outline", "floatLabel", "always", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "fill-field", 3, "matTooltip"], ["formControlName", "fill", "matInput", "", "type", "text", 3, "readonly", "colorPicker", "cpWidth", "cpOutputFormat", "cpPosition", "cpPositionOffset", "cpCancelButton", "cpCancelButtonText", "cpOKButton", "colorPickerChange"], ["fillColorInput", ""], [3, "value"]], template: function StyleModalComponent_Template(rf, ctx) { if (rf & 1) {
19324
19488
  i0.ɵɵelementStart(0, "div", 0)(1, "h2", 1);
19325
19489
  i0.ɵɵtext(2);
@@ -19420,11 +19584,11 @@ StyleModalComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: StyleMo
19420
19584
  i0.ɵɵproperty("value", ctx.getFeatureOffsetY());
19421
19585
  i0.ɵɵadvance(4);
19422
19586
  i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(51, 44, "igo.geo.draw.cancel"), " ");
19423
- } }, dependencies: [i13.MatFormField, i13.MatLabel, i13.MatSuffix, i14.MatInput, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.FormGroupDirective, i2$2.FormControlName, i1$1.NgForOf, i1$1.NgIf, i2.MatIcon, i3.MatButton, i15.MatSelect, i9.MatOption, i4.MatTooltip, i12$1.ColorPickerDirective, i7.TranslatePipe], styles: ["h2[_ngcontent-%COMP%]{font-weight:700;font-size:large}.igo-form[_ngcontent-%COMP%]{padding:10px}.fill-field[_ngcontent-%COMP%], .stroke-field[_ngcontent-%COMP%]{width:130px}.fill-color-picker[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:7px}.fill-color-picker[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{left:8px}.stroke-color-picker[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:7px}.stroke-color-picker[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{left:35px}.box[_ngcontent-%COMP%]{width:25px;height:25px}.edition-drawing[_ngcontent-%COMP%]{padding:10px 0}.igo-input-container[_ngcontent-%COMP%] .mat-form-field[_ngcontent-%COMP%] + .mat-form-field[_ngcontent-%COMP%]{margin-left:8px}.igo-form-input-box[_ngcontent-%COMP%]{width:150px}button[_ngcontent-%COMP%]{margin-right:5px}"] });
19587
+ } }, dependencies: [i13.MatFormField, i13.MatLabel, i13.MatSuffix, i14.MatInput, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.FormGroupDirective, i2$2.FormControlName, i1.NgForOf, i1.NgIf, i2.MatIcon, i3$1.MatButton, i15.MatSelect, i9.MatOption, i4.MatTooltip, i12$1.ColorPickerDirective, i7.TranslatePipe], styles: ["h2[_ngcontent-%COMP%]{font-weight:700;font-size:large}.igo-form[_ngcontent-%COMP%]{padding:10px}.fill-field[_ngcontent-%COMP%], .stroke-field[_ngcontent-%COMP%]{width:130px}.fill-color-picker[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:7px}.fill-color-picker[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{left:8px}.stroke-color-picker[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:7px}.stroke-color-picker[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{left:35px}.box[_ngcontent-%COMP%]{width:25px;height:25px}.edition-drawing[_ngcontent-%COMP%]{padding:10px 0}.igo-input-container[_ngcontent-%COMP%] .mat-form-field[_ngcontent-%COMP%] + .mat-form-field[_ngcontent-%COMP%]{margin-left:8px}.igo-form-input-box[_ngcontent-%COMP%]{width:150px}button[_ngcontent-%COMP%]{margin-right:5px}"] });
19424
19588
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StyleModalComponent, [{
19425
19589
  type: Component,
19426
19590
  args: [{ selector: 'igo-style-modal-component', template: "<div mat-dialog-content>\n <h2 mat-dialog-title class=\"mat-typography\">{{ 'igo.geo.layer.style.styleModal' | translate }}</h2>\n <div\n class=\"edition-drawing mat-typography\"\n [hidden]=\"data.features.length === 0\">\n <form\n class=\"igo-form\"\n [formGroup]=\"form\">\n <div class=\"fill-color-picker mat-typography\" *ngIf=\"linestringOnly !== true\">\n <span>\n <mat-icon class=\"stroke-palette-icon\" svgIcon=\"square\"></mat-icon>\n {{ 'igo.geo.draw.fill' | translate }}\n </span>\n\n <mat-form-field\n class=\"fill-field\"\n appearance=\"outline\"\n floatLabel=\"always\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.draw.colorPicker' | translate\">\n <mat-label>{{ getFeatureFillColor() }}</mat-label>\n <input\n #fillColorInput\n formControlName=\"fill\"\n matInput\n type=\"text\"\n [style.background]=\"getFeatureFillColor()\"\n [readonly]=\"true\"\n [colorPicker]=\"getFeatureFillColor()\"\n [cpWidth]=\"'200px'\"\n [cpOutputFormat]=\"'rgba'\"\n [cpPosition]=\"'bottom'\"\n [cpPositionOffset]=\"'-75%'\"\n [cpCancelButton]=\"true\"\n [cpCancelButtonText]=\"'igo.geo.draw.cancel' | translate\"\n [cpOKButton]=\"true\"\n (colorPickerChange)=\"styleModalData.fillColor = $event\">\n </mat-form-field>\n </div>\n\n <div class=\"stroke-color-picker mat-typography\">\n <span>\n <mat-icon\n class=\"stroke-palette-icon\"\n svgIcon=\"square-outline\">\n </mat-icon>\n {{'igo.geo.draw.stroke' | translate}}\n </span>\n\n <mat-form-field\n class=\"stroke-field\"\n appearance=\"outline\"\n floatLabel=\"always\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.draw.colorPicker' | translate\">\n <mat-label>{{ getFeatureStrokeColor() }}</mat-label>\n <input\n #strokeColorInput\n formControlName=\"stroke\"\n matInput\n type=\"text\"\n [style.background]=\"getFeatureStrokeColor()\"\n [readonly]=\"true\"\n [colorPicker]=\"getFeatureStrokeColor()\"\n [cpWidth]=\"'200px'\"\n [cpPosition]=\"'bottom'\"\n [cpPositionOffset]=\"'-75%'\"\n [cpOutputFormat]=\"'rgba'\"\n [cpCancelButton]=\"true\"\n [cpCancelButtonText]=\"'igo.geo.draw.cancel' | translate\"\n [cpOKButton]=\"true\"\n (colorPickerChange)=\"styleModalData.strokeColor = $event\">\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field appearance=\"outline\" class=\"igo-form-input-box\">\n <mat-label>{{ 'igo.geo.draw.fontSize' | translate }}</mat-label>\n <input\n matInput\n #testFontSize\n type=\"number\"\n placeholder=\"10\"\n min=\"10\"\n onkeydown=\"return event.keyCode !== 69\"\n [value]=\"getFeatureFontSize()\"\n (input)=\"styleModalData.fontSize = $event.target.value\">\n <span matSuffix>px</span>\n </mat-form-field>\n <mat-form-field appearance=\"outline\" class=\"igo-form-input-box\">\n <mat-label>{{ 'igo.geo.draw.fontStyle' | translate }}</mat-label>\n <mat-select\n #testFontStyle\n [value]=\"getFeatureFontStyle()\"\n (selectionChange)=\"styleModalData.fontStyle = $event.value\">\n <mat-option\n *ngFor=\"let fontSelect of allFontStyles\"\n [value]=\"fontSelect\">\n {{ fontSelect }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field appearance=\"outline\" class=\"igo-form-input-box\">\n <mat-label>{{ 'igo.geo.draw.offsetX' | translate }}</mat-label>\n <input\n matInput\n #offsetXInput\n type=\"number\"\n onkeydown=\"return event.keyCode !== 69\"\n [value]=\"getFeatureOffsetX()\"\n (input)=\"styleModalData.offsetX = $event.target.value\">\n </mat-form-field>\n <mat-form-field appearance=\"outline\" class=\"igo-form-input-box\">\n <mat-label>{{ 'igo.geo.draw.offsetY' | translate }}</mat-label>\n <input\n matInput\n #offsetYInput\n type=\"number\"\n onkeydown=\"return event.keyCode !== 69\"\n [value]=\"getFeatureOffsetY()\"\n (input)=\"styleModalData.offsetY= $event.target.value\">\n </mat-form-field>\n </div>\n </form>\n </div>\n</div>\n<div mat-dialog-actions>\n <button \n mat-raised-button \n (click)=\"cancelDrawing()\">{{'igo.geo.draw.cancel' | translate}}\n </button>\n <button \n mat-raised-button \n color=\"primary\" \n (click)=\"confirm()\">OK\n </button>\n</div>\n", styles: ["h2{font-weight:700;font-size:large}.igo-form{padding:10px}.fill-field,.stroke-field{width:130px}.fill-color-picker mat-icon{position:relative;top:7px}.fill-color-picker mat-form-field{left:8px}.stroke-color-picker mat-icon{position:relative;top:7px}.stroke-color-picker mat-form-field{left:35px}.box{width:25px;height:25px}.edition-drawing{padding:10px 0}.igo-input-container .mat-form-field+.mat-form-field{margin-left:8px}.igo-form-input-box{width:150px}button{margin-right:5px}\n"] }]
19427
- }], function () { return [{ type: i1.MatDialogRef }, { type: i2$2.UntypedFormBuilder }, { type: DrawStyleService }, { type: undefined, decorators: [{
19591
+ }], function () { return [{ type: i3.MatDialogRef }, { type: i2$2.UntypedFormBuilder }, { type: DrawStyleService }, { type: undefined, decorators: [{
19428
19592
  type: Inject,
19429
19593
  args: [MAT_DIALOG_DATA]
19430
19594
  }] }]; }, { confirmFlag: [{
@@ -19562,11 +19726,11 @@ IgoLayerModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [MatInputM
19562
19726
  LayerLegendListBindingDirective,
19563
19727
  TrackFeatureButtonComponent,
19564
19728
  StyleModalComponent] }); })();
19565
- i0.ɵɵsetComponentScope(LayerItemComponent, [i1$1.NgClass, i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5.MatListItem, i9.MatLine, i5.MatListIconCssMatStyler, i7$1.MatBadge, i12.MatCheckbox, LayerLegendComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
19729
+ i0.ɵɵsetComponentScope(LayerItemComponent, [i1.NgClass, i1.NgIf, i2.MatIcon, i3$1.MatButton, i4.MatTooltip, i5.MatListItem, i9.MatLine, i5.MatListIconCssMatStyler, i7$1.MatBadge, i12.MatCheckbox, LayerLegendComponent], [i1.AsyncPipe, i7.TranslatePipe]);
19566
19730
  i0.ɵɵsetComponentScope(LayerLegendItemComponent, [i4.MatTooltip, i5.MatListItem, i9.MatLine, LayerLegendComponent], []);
19567
- i0.ɵɵsetComponentScope(LayerListComponent, [i2$2.NgControlStatus, i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i1$1.NgTemplateOutlet, i2$2.NgModel, i11.MatDivider, i7$2.MatMenu, i7$2.MatMenuTrigger, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5.MatList, i5.MatListItem, i13$1.MatSlider, i7$1.MatBadge, i12.MatCheckbox, i5$1.ListItemDirective, i5$1.ListComponent, i5$1.PanelComponent, LayerItemComponent,
19568
- LayerListToolComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
19569
- i0.ɵɵsetComponentScope(LayerLegendListComponent, [i1$1.NgForOf, i1$1.NgIf, i11.MatDivider, i23.MatSlideToggle, i4.MatTooltip, i5$1.ListItemDirective, i5$1.ListComponent, LayerLegendItemComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
19731
+ i0.ɵɵsetComponentScope(LayerListComponent, [i2$2.NgControlStatus, i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i2$2.NgModel, i11.MatDivider, i7$2.MatMenu, i7$2.MatMenuTrigger, i2.MatIcon, i3$1.MatButton, i4.MatTooltip, i5.MatList, i5.MatListItem, i13$1.MatSlider, i7$1.MatBadge, i12.MatCheckbox, i5$1.ListItemDirective, i5$1.ListComponent, i5$1.PanelComponent, LayerItemComponent,
19732
+ LayerListToolComponent], [i1.AsyncPipe, i7.TranslatePipe]);
19733
+ i0.ɵɵsetComponentScope(LayerLegendListComponent, [i1.NgForOf, i1.NgIf, i11.MatDivider, i23.MatSlideToggle, i4.MatTooltip, i5$1.ListItemDirective, i5$1.ListComponent, LayerLegendItemComponent], [i1.AsyncPipe, i7.TranslatePipe]);
19570
19734
 
19571
19735
  /**
19572
19736
  * @ignore
@@ -19628,8 +19792,8 @@ IgoCatalogBrowserModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [
19628
19792
  IgoCollapsibleModule,
19629
19793
  IgoMetadataModule,
19630
19794
  IgoLayerModule], exports: [CatalogBrowserComponent] }); })();
19631
- i0.ɵɵsetComponentScope(CatalogBrowserComponent, [i1$1.NgForOf, i1$1.NgIf, i5$1.ListItemDirective, i5$1.ListComponent, CatalogBrowserGroupComponent,
19632
- CatalogBrowserLayerComponent], [i1$1.AsyncPipe]);
19795
+ i0.ɵɵsetComponentScope(CatalogBrowserComponent, [i1.NgForOf, i1.NgIf, i5$1.ListItemDirective, i5$1.ListComponent, CatalogBrowserGroupComponent,
19796
+ CatalogBrowserLayerComponent], [i1.AsyncPipe]);
19633
19797
 
19634
19798
  function AddCatalogDialogComponent_mat_option_11_Template(rf, ctx) { if (rf & 1) {
19635
19799
  i0.ɵɵelementStart(0, "mat-option", 17);
@@ -19663,7 +19827,7 @@ function AddCatalogDialogComponent_mat_option_23_Template(rf, ctx) { if (rf & 1)
19663
19827
  i0.ɵɵadvance(2);
19664
19828
  i0.ɵɵtextInterpolate(type_r9);
19665
19829
  } }
19666
- const _c0$b = function (a0, a1) { return { value: a0, email: a1 }; };
19830
+ const _c0$c = function (a0, a1) { return { value: a0, email: a1 }; };
19667
19831
  function AddCatalogDialogComponent_span_24_Template(rf, ctx) { if (rf & 1) {
19668
19832
  i0.ɵɵelementStart(0, "span")(1, "p", 20);
19669
19833
  i0.ɵɵtext(2);
@@ -19671,7 +19835,7 @@ function AddCatalogDialogComponent_span_24_Template(rf, ctx) { if (rf & 1) {
19671
19835
  } if (rf & 2) {
19672
19836
  const ctx_r5 = i0.ɵɵnextContext();
19673
19837
  i0.ɵɵadvance(2);
19674
- i0.ɵɵtextInterpolate(ctx_r5.languageService.translate.instant("igo.geo.catalog.externalProvider.unavailableWithEmail", i0.ɵɵpureFunction2(1, _c0$b, ctx_r5.addedCatalog.url, ctx_r5.emailAddress)));
19838
+ i0.ɵɵtextInterpolate(ctx_r5.languageService.translate.instant("igo.geo.catalog.externalProvider.unavailableWithEmail", i0.ɵɵpureFunction2(1, _c0$c, ctx_r5.addedCatalog.url, ctx_r5.emailAddress)));
19675
19839
  } }
19676
19840
  const _c1$9 = function (a0) { return { value: a0 }; };
19677
19841
  function AddCatalogDialogComponent_span_25_Template(rf, ctx) { if (rf & 1) {
@@ -19746,7 +19910,7 @@ class AddCatalogDialogComponent {
19746
19910
  this.dialogRef.close();
19747
19911
  }
19748
19912
  }
19749
- AddCatalogDialogComponent.ɵfac = function AddCatalogDialogComponent_Factory(t) { return new (t || AddCatalogDialogComponent)(i0.ɵɵdirectiveInject(i2$2.UntypedFormBuilder), i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i2$1.ConfigService), i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA, 8)); };
19913
+ AddCatalogDialogComponent.ɵfac = function AddCatalogDialogComponent_Factory(t) { return new (t || AddCatalogDialogComponent)(i0.ɵɵdirectiveInject(i2$2.UntypedFormBuilder), i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i2$1.ConfigService), i0.ɵɵdirectiveInject(i3.MatDialogRef), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA, 8)); };
19750
19914
  AddCatalogDialogComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AddCatalogDialogComponent, selectors: [["igo-add-catalog-dialog"]], decls: 34, vars: 25, consts: [["mat-dialog-title", "", 1, "mat-typography"], ["mat-dialog-content", "", 1, "mat-typography"], [1, "igo-form", 3, "formGroup"], [1, "igo-input-container"], ["type", "text", "formControlName", "title", "matInput", "", 3, "placeholder", "matAutocomplete"], [3, "optionSelected"], ["auto2", "matAutocomplete"], ["matTooltipShowDelay", "500", 3, "matTooltip", "value", 4, "ngFor", "ngForOf"], ["type", "text", "formControlName", "url", "placeholder", "URL", "matInput", "", 3, "matAutocomplete"], ["auto", "matAutocomplete"], ["formControlName", "type", "placeholder", "Type"], [3, "value", "click", 4, "ngFor", "ngForOf"], [4, "ngIf"], ["mat-dialog-actions", "", 2, "justify-content", "center"], [1, "igo-form-button-group", "add-catalog-button-top-padding"], ["mat-raised-button", "", "type", "button", 3, "click"], ["id", "addCatalogBtnDialog", "mat-raised-button", "", "type", "button", "color", "primary", 3, "disabled", "click"], ["matTooltipShowDelay", "500", 3, "matTooltip", "value"], [3, "value", "click"], ["mat-line", ""], [1, "error"]], template: function AddCatalogDialogComponent_Template(rf, ctx) { if (rf & 1) {
19751
19915
  i0.ɵɵelementStart(0, "h1", 0);
19752
19916
  i0.ɵɵtext(1);
@@ -19811,11 +19975,11 @@ AddCatalogDialogComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: A
19811
19975
  i0.ɵɵproperty("disabled", !ctx.form.valid);
19812
19976
  i0.ɵɵadvance(1);
19813
19977
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(33, 23, "igo.geo.catalog.library.add"), " ");
19814
- } }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i9.MatLine, i4.MatTooltip, i3.MatButton, i13.MatFormField, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.FormGroupDirective, i2$2.FormControlName, i14.MatInput, i15.MatSelect, i9.MatOption, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i1.MatDialogTitle, i1.MatDialogContent, i1.MatDialogActions, i1$1.AsyncPipe, i7.TranslatePipe], styles: ["mat-form-field[_ngcontent-%COMP%]{width:100%}.add-catalog-button-top-padding[_ngcontent-%COMP%]{padding-top:25px}.igo-form[_ngcontent-%COMP%]{padding:10px 5px 5px}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center}button[_ngcontent-%COMP%]{cursor:pointer}button#addCatalogBtnDialog[disabled=true][_ngcontent-%COMP%]{cursor:default;background-color:#0000001f;color:#00000042}.error[_ngcontent-%COMP%]{color:red}"] });
19978
+ } }, dependencies: [i1.NgForOf, i1.NgIf, i9.MatLine, i4.MatTooltip, i3$1.MatButton, i13.MatFormField, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.FormGroupDirective, i2$2.FormControlName, i14.MatInput, i15.MatSelect, i9.MatOption, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i3.MatDialogTitle, i3.MatDialogContent, i3.MatDialogActions, i1.AsyncPipe, i7.TranslatePipe], styles: ["mat-form-field[_ngcontent-%COMP%]{width:100%}.add-catalog-button-top-padding[_ngcontent-%COMP%]{padding-top:25px}.igo-form[_ngcontent-%COMP%]{padding:10px 5px 5px}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center}button[_ngcontent-%COMP%]{cursor:pointer}button#addCatalogBtnDialog[disabled=true][_ngcontent-%COMP%]{cursor:default;background-color:#0000001f;color:#00000042}.error[_ngcontent-%COMP%]{color:red}"] });
19815
19979
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AddCatalogDialogComponent, [{
19816
19980
  type: Component,
19817
19981
  args: [{ selector: 'igo-add-catalog-dialog', template: "<h1 mat-dialog-title class=\"mat-typography\">{{'igo.geo.catalog.library.addTitle' | translate}}</h1>\n<div mat-dialog-content class=\"mat-typography\">\n <form class=\"igo-form\" [formGroup]=\"form\">\n <div class=\"igo-input-container\">\n <mat-form-field>\n <input type=\"text\" formControlName=\"title\" placeholder=\"{{'igo.geo.printForm.title' | translate}}\" matInput [matAutocomplete]=\"auto2\">\n <mat-autocomplete #auto2=\"matAutocomplete\" (optionSelected)='changeUrlOrTitle($event.option.value)'>\n <mat-option *ngFor=\"let predefinedCatalog of (predefinedCatalogsList$ | async)\" matTooltipShowDelay=\"500\"\n [matTooltip]=\"predefinedCatalog.title\" [value]=\"predefinedCatalog\">\n {{predefinedCatalog.title}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <input type=\"text\" formControlName=\"url\" placeholder=\"URL\" matInput [matAutocomplete]=\"auto\">\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)='changeUrlOrTitle($event.option.value)'>\n <mat-option *ngFor=\"let predefinedCatalog of (predefinedCatalogsList$ | async)\" matTooltipShowDelay=\"500\"\n [matTooltip]=\"predefinedCatalog.url\" [value]=\"predefinedCatalog\">\n {{predefinedCatalog.url}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-select\n formControlName=\"type\"\n placeholder=\"Type\">\n <mat-option\n *ngFor=\"let type of typeCapabilities\"\n [value]=\"type\"\n (click)=\"$event.stopPropagation()\">\n <p mat-line>{{type}}</p>\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </form>\n <span *ngIf=\"error && addedCatalog && emailAddress\">\n <p class=\"error\">{{languageService.translate.instant('igo.geo.catalog.externalProvider.unavailableWithEmail', { value: addedCatalog.url, email: emailAddress })}}</p>\n </span>\n <span *ngIf=\"error && addedCatalog && !emailAddress\">\n <p class=\"error\">{{languageService.translate.instant('igo.geo.catalog.unavailable', { value: addedCatalog.url })}}</p>\n </span>\n</div>\n<div mat-dialog-actions style=\"justify-content: center\">\n <div class=\"igo-form-button-group add-catalog-button-top-padding\">\n <button\n mat-raised-button\n type=\"button\"\n (click)=\"cancel()\">\n {{'igo.geo.catalog.library.cancel' | translate}}\n </button>\n <button\n id=\"addCatalogBtnDialog\"\n mat-raised-button\n type=\"button\"\n color=\"primary\"\n [disabled]=\"!form.valid\"\n (click)=\"addCatalog(form.value)\">\n {{'igo.geo.catalog.library.add' | translate}}\n </button>\n </div>\n</div>", styles: ["mat-form-field{width:100%}.add-catalog-button-top-padding{padding-top:25px}.igo-form{padding:10px 5px 5px}.igo-form-button-group{text-align:center}button{cursor:pointer}button#addCatalogBtnDialog[disabled=true]{cursor:default;background-color:#0000001f;color:#00000042}.error{color:red}\n"] }]
19818
- }], function () { return [{ type: i2$2.UntypedFormBuilder }, { type: i2$1.LanguageService }, { type: i2$1.ConfigService }, { type: i1.MatDialogRef }, { type: undefined, decorators: [{
19982
+ }], function () { return [{ type: i2$2.UntypedFormBuilder }, { type: i2$1.LanguageService }, { type: i2$1.ConfigService }, { type: i3.MatDialogRef }, { type: undefined, decorators: [{
19819
19983
  type: Optional
19820
19984
  }, {
19821
19985
  type: Inject,
@@ -20000,7 +20164,7 @@ class CatalogLibaryComponent {
20000
20164
  });
20001
20165
  }
20002
20166
  }
20003
- CatalogLibaryComponent.ɵfac = function CatalogLibaryComponent_Factory(t) { return new (t || CatalogLibaryComponent)(i0.ɵɵdirectiveInject(CapabilitiesService), i0.ɵɵdirectiveInject(i2$1.MessageService), i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i2$1.StorageService), i0.ɵɵdirectiveInject(i1.MatDialog)); };
20167
+ CatalogLibaryComponent.ɵfac = function CatalogLibaryComponent_Factory(t) { return new (t || CatalogLibaryComponent)(i0.ɵɵdirectiveInject(CapabilitiesService), i0.ɵɵdirectiveInject(i2$1.MessageService), i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i2$1.StorageService), i0.ɵɵdirectiveInject(i3.MatDialog)); };
20004
20168
  CatalogLibaryComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CatalogLibaryComponent, selectors: [["igo-catalog-library"]], inputs: { store: "store", map: "map", addCatalogAllowed: "addCatalogAllowed", predefinedCatalogs: "predefinedCatalogs" }, outputs: { catalogSelectChange: "catalogSelectChange" }, decls: 4, vars: 5, consts: [[3, "navigation"], ["ngFor", "", 3, "ngForOf"], ["class", "btnAddCatalog", 4, "ngIf"], ["igoListItem", "", "color", "accent", 3, "map", "catalog", "catalogRemove", "select"], [1, "btnAddCatalog"], ["mat-raised-button", "", "matTooltipPosition", "above", "color", "primary", 3, "matTooltip", "click"], ["svgIcon", "earth-plus"]], template: function CatalogLibaryComponent_Template(rf, ctx) { if (rf & 1) {
20005
20169
  i0.ɵɵelementStart(0, "igo-list", 0);
20006
20170
  i0.ɵɵtemplate(1, CatalogLibaryComponent_ng_template_1_Template, 1, 2, "ng-template", 1);
@@ -20017,7 +20181,7 @@ CatalogLibaryComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Cata
20017
20181
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CatalogLibaryComponent, [{
20018
20182
  type: Component,
20019
20183
  args: [{ selector: 'igo-catalog-library', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-list [navigation]=\"false\">\n <ng-template ngFor let-catalog [ngForOf]=\"getCatalogs() | async\">\n <igo-catalog-library-item\n igoListItem\n color=\"accent\"\n [map]=\"map\"\n [catalog]=\"catalog\"\n (catalogRemove)=\"onCatalogRemove(catalog)\"\n (select)=\"onCatalogSelect(catalog)\">\n </igo-catalog-library-item>\n </ng-template>\n</igo-list>\n\n<div *ngIf=\"addCatalogAllowed\" class=btnAddCatalog>\n <button\n mat-raised-button\n [matTooltip]=\"'igo.geo.catalog.library.addBtn' | translate\"\n matTooltipPosition=\"above\"\n color=\"primary\"\n (click)=\"addCatalogDialog()\">\n {{'igo.geo.catalog.library.addBtn' | translate}}\n <mat-icon svgIcon=\"earth-plus\"></mat-icon>\n </button>\n</div>\n", styles: ["igo-list{height:auto}.btnAddCatalog{justify-content:center;display:flex;margin:30px 0}\n"] }]
20020
- }], function () { return [{ type: CapabilitiesService }, { type: i2$1.MessageService }, { type: i2$1.LanguageService }, { type: i2$1.StorageService }, { type: i1.MatDialog }]; }, { store: [{
20184
+ }], function () { return [{ type: CapabilitiesService }, { type: i2$1.MessageService }, { type: i2$1.LanguageService }, { type: i2$1.StorageService }, { type: i3.MatDialog }]; }, { store: [{
20021
20185
  type: Input
20022
20186
  }], map: [{
20023
20187
  type: Input
@@ -20086,7 +20250,7 @@ CatalogLibaryItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
20086
20250
  i0.ɵɵproperty("ngIf", ctx.catalog.removable);
20087
20251
  i0.ɵɵadvance(1);
20088
20252
  i0.ɵɵproperty("ngIf", !ctx.catalog.removable);
20089
- } }, dependencies: [i1$1.NgIf, i2.MatIcon, i5.MatListItem, i9.MatLine, i4.MatTooltip, i3.MatButton, i7.TranslatePipe], styles: [".igo-blank[_ngcontent-%COMP%]{cursor:pointer}.igo-external-provider[_ngcontent-%COMP%]{cursor:help}"], changeDetection: 0 });
20253
+ } }, dependencies: [i1.NgIf, i2.MatIcon, i5.MatListItem, i9.MatLine, i4.MatTooltip, i3$1.MatButton, i7.TranslatePipe], styles: [".igo-blank[_ngcontent-%COMP%]{cursor:pointer}.igo-external-provider[_ngcontent-%COMP%]{cursor:help}"], changeDetection: 0 });
20090
20254
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CatalogLibaryItemComponent, [{
20091
20255
  type: Component,
20092
20256
  args: [{ selector: 'igo-catalog-library-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item>\n <h4 mat-line>\n {{title}}\n </h4>\n <mat-icon\n class=\"igo-external-provider\"\n *ngIf=\"catalog.externalProvider\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.externalProvider.catalog' | translate\"\n color=\"primary\"\n (click)=\"$event.stopPropagation()\"\n svgIcon=\"earth-arrow-right\">\n </mat-icon>\n\n <button\n *ngIf=\"catalog.removable\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.library.remove' | translate\"\n color=\"warn\"\n (click)=\"removeCatalogFromLibrary($event)\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n</button>\n\n<button\n class=\"igo-blank\"\n *ngIf=\"!catalog.removable\"\n disabled=\"true\"\n mat-icon-button>\n <mat-icon svgIcon=\"blank\"></mat-icon>\n</button>\n</mat-list-item>\n", styles: [".igo-blank{cursor:pointer}.igo-external-provider{cursor:help}\n"] }]
@@ -20166,7 +20330,7 @@ IgoCatalogLibraryModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [
20166
20330
  MatAutocompleteModule,
20167
20331
  MatDialogModule], exports: [CatalogLibaryComponent,
20168
20332
  AddCatalogDialogComponent] }); })();
20169
- i0.ɵɵsetComponentScope(CatalogLibaryComponent, [i1$1.NgForOf, i1$1.NgIf, i2.MatIcon, i4.MatTooltip, i5$1.ListItemDirective, i5$1.ListComponent, i3.MatButton, CatalogLibaryItemComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
20333
+ i0.ɵɵsetComponentScope(CatalogLibaryComponent, [i1.NgForOf, i1.NgIf, i2.MatIcon, i4.MatTooltip, i5$1.ListItemDirective, i5$1.ListComponent, i3$1.MatButton, CatalogLibaryItemComponent], [i1.AsyncPipe, i7.TranslatePipe]);
20170
20334
 
20171
20335
  class IgoCatalogModule {
20172
20336
  }
@@ -20706,14 +20870,14 @@ class SpatialFilterService {
20706
20870
  }
20707
20871
  }
20708
20872
  }
20709
- SpatialFilterService.ɵfac = function SpatialFilterService_Factory(t) { return new (t || SpatialFilterService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.ConfigService)); };
20873
+ SpatialFilterService.ɵfac = function SpatialFilterService_Factory(t) { return new (t || SpatialFilterService)(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.ConfigService)); };
20710
20874
  SpatialFilterService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: SpatialFilterService, factory: SpatialFilterService.ɵfac, providedIn: 'root' });
20711
20875
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SpatialFilterService, [{
20712
20876
  type: Injectable,
20713
20877
  args: [{
20714
20878
  providedIn: 'root'
20715
20879
  }]
20716
- }], function () { return [{ type: i1$2.HttpClient }, { type: i2$1.LanguageService }, { type: i2$1.ConfigService }]; }, null); })();
20880
+ }], function () { return [{ type: i1$1.HttpClient }, { type: i2$1.LanguageService }, { type: i2$1.ConfigService }]; }, null); })();
20717
20881
 
20718
20882
  class DownloadService {
20719
20883
  constructor(messageService, languageService) {
@@ -20817,7 +20981,7 @@ DownloadButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Dow
20817
20981
  i0.ɵɵtemplate(0, DownloadButtonComponent_button_0_Template, 3, 4, "button", 0);
20818
20982
  } if (rf & 2) {
20819
20983
  i0.ɵɵproperty("ngIf", ctx.options && ctx.options.download && (ctx.options.download["dynamicUrl"] || ctx.options.download["url"]));
20820
- } }, dependencies: [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i7.TranslatePipe], changeDetection: 0 });
20984
+ } }, dependencies: [i1.NgIf, i2.MatIcon, i3$1.MatButton, i4.MatTooltip, i7.TranslatePipe], changeDetection: 0 });
20821
20985
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DownloadButtonComponent, [{
20822
20986
  type: Component,
20823
20987
  args: [{ selector: 'igo-download-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngIf=\"options && options.download && (options.download['dynamicUrl'] || options.download['url']) \"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.download.action' | translate\"\n [color]=\"color\"\n (click)=\"openDownload(layer)\">\n <mat-icon svgIcon=\"download\"></mat-icon>\n</button>\n" }]
@@ -21945,7 +22109,7 @@ class MeasurerDialogComponent {
21945
22109
  this.dialogRef.close();
21946
22110
  }
21947
22111
  }
21948
- MeasurerDialogComponent.ɵfac = function MeasurerDialogComponent_Factory(t) { return new (t || MeasurerDialogComponent)(i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); };
22112
+ MeasurerDialogComponent.ɵfac = function MeasurerDialogComponent_Factory(t) { return new (t || MeasurerDialogComponent)(i0.ɵɵdirectiveInject(i3.MatDialogRef), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); };
21949
22113
  MeasurerDialogComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MeasurerDialogComponent, selectors: [["igo-measurer-dialog"]], decls: 5, vars: 5, consts: [["mat-dialog-title", ""], ["class", "mat-typography", 4, "ngIf"], [1, "mat-typography"], ["colspan", "2"]], template: function MeasurerDialogComponent_Template(rf, ctx) { if (rf & 1) {
21950
22114
  i0.ɵɵelementStart(0, "h3", 0);
21951
22115
  i0.ɵɵtext(1);
@@ -21964,12 +22128,12 @@ MeasurerDialogComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Mea
21964
22128
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MeasurerDialogComponent, [{
21965
22129
  type: Component,
21966
22130
  args: [{ selector: 'igo-measurer-dialog', template: "<h3 mat-dialog-title>{{'igo.geo.measure.dialog.title' | translate}}</h3>\n\n<table *ngIf=\"data.length > 0\"\n class=\"mat-typography\">\n <thead>\n <tr>\n <th colspan=\"2\">{{'igo.geo.measure.dialog.length.title' | translate}}</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>{{data.length | measureFormat: measureLengthUnit.Meters}}</td>\n <td>{{'igo.geo.measure.dialog.lengthInMeters' | translate}}</td>\n </tr>\n <tr>\n <td>{{data.length | measureFormat: measureLengthUnit.Kilometers}}</td>\n <td>{{'igo.geo.measure.dialog.lengthInKilometers' | translate}}</td>\n </tr>\n <tr>\n <td>{{data.length | measureFormat: measureLengthUnit.Miles}}</td>\n <td>{{'igo.geo.measure.dialog.lengthInMiles' | translate}}</td>\n </tr>\n <tr>\n <td>{{data.length | measureFormat: measureLengthUnit.Feet}}</td>\n <td>{{'igo.geo.measure.dialog.lengthInFeet' | translate}}</td>\n </tr>\n </tbody>\n</table>\n\n<table *ngIf=\"data.area > 0\"\n class=\"mat-typography\">\n <thead>\n <tr>\n <th colspan=\"2\">{{'igo.geo.measure.dialog.area.title' | translate}}</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>{{data.area | measureFormat: measureAreaUnit.SquareMeters}}</td>\n <td>{{'igo.geo.measure.dialog.areaInSquareMeters' | translate}}</td>\n </tr>\n <tr>\n <td>{{data.area | measureFormat:measureAreaUnit.SquareKilometers}}</td>\n <td>{{'igo.geo.measure.dialog.areaInSquareKilometers' | translate}}</td>\n </tr>\n <tr>\n <td>{{data.area | measureFormat: measureAreaUnit.SquareMiles}}</td>\n <td>{{'igo.geo.measure.dialog.areaInSquareMiles' | translate}}</td>\n </tr>\n <tr>\n <td>{{data.area | measureFormat: measureAreaUnit.Acres}}</td>\n <td>{{'igo.geo.measure.dialog.areaInAcres' | translate}}</td>\n </tr>\n <tr>\n <td>{{data.area | measureFormat: measureAreaUnit.Hectares}}</td>\n <td>{{'igo.geo.measure.dialog.areaInHectares' | translate}}</td>\n </tr>\n <tr>\n <td>{{'igo.geo.measure.dialog.perimeterInMeters' | translate}}</td>\n <td>{{data.perimeter | measureFormat: measureLengthUnit.Meters}}</td>\n </tr>\n </tbody>\n</table>\n", styles: [":host{font-family:Roboto,Helvetica Neue,sans-serif}h3{text-align:center;margin:0}table{width:100%;padding:10px}table tbody tr td:last-child{padding-left:10px}\n"] }]
21967
- }], function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
22131
+ }], function () { return [{ type: i3.MatDialogRef }, { type: undefined, decorators: [{
21968
22132
  type: Inject,
21969
22133
  args: [MAT_DIALOG_DATA]
21970
22134
  }] }]; }, null); })();
21971
22135
 
21972
- const _c0$a = ["table"];
22136
+ const _c0$b = ["table"];
21973
22137
  function MeasurerComponent_mat_divider_13_Template(rf, ctx) { if (rf & 1) {
21974
22138
  i0.ɵɵelement(0, "mat-divider");
21975
22139
  } }
@@ -22879,9 +23043,9 @@ class MeasurerComponent {
22879
23043
  return true;
22880
23044
  }
22881
23045
  }
22882
- MeasurerComponent.ɵfac = function MeasurerComponent_Factory(t) { return new (t || MeasurerComponent)(i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i1.MatDialog), i0.ɵɵdirectiveInject(i2$1.StorageService)); };
23046
+ MeasurerComponent.ɵfac = function MeasurerComponent_Factory(t) { return new (t || MeasurerComponent)(i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i3.MatDialog), i0.ɵɵdirectiveInject(i2$1.StorageService)); };
22883
23047
  MeasurerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MeasurerComponent, selectors: [["igo-measurer"]], viewQuery: function MeasurerComponent_Query(rf, ctx) { if (rf & 1) {
22884
- i0.ɵɵviewQuery(_c0$a, 7);
23048
+ i0.ɵɵviewQuery(_c0$b, 7);
22885
23049
  } if (rf & 2) {
22886
23050
  let _t;
22887
23051
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.table = _t.first);
@@ -22979,7 +23143,7 @@ MeasurerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MeasurerC
22979
23143
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MeasurerComponent, [{
22980
23144
  type: Component,
22981
23145
  args: [{ selector: 'igo-measurer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\n <div class=\"measure-type-toggle mat-typography\">\n <mat-button-toggle-group\n [value]=\"activeMeasureType\"\n (change)=\"onMeasureTypeChange($event.value)\">\n <mat-button-toggle [value]=\"measureType.Length\">\n {{('igo.geo.measure.' + measureType.Length) | translate}}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"measureType.Area\">\n {{('igo.geo.measure.' + measureType.Area) | translate}}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n\n <div class=\"measure-options mat-typography\">\n <mat-slide-toggle\n [disabled]=\"drawControlIsDisabled\"\n [checked]=\"drawControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDrawControl($event.checked)\">\n {{'igo.geo.measure.toggleActive' | translate}}\n </mat-slide-toggle>\n\n <mat-divider *ngIf=\"(hasLine$ | async)\"></mat-divider>\n\n <mat-slide-toggle *ngIf=\"(hasLine$ | async)\"\n [checked]=\"displayLines\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDisplayLines($event.checked)\">\n {{'igo.geo.measure.toggleDisplayLines' | translate}}\n </mat-slide-toggle>\n\n <mat-divider *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"></mat-divider>\n\n <mat-slide-toggle *ngIf=\"(hasArea$ | async)\"\n [checked]=\"displayDistance\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDisplayDistance($event.checked)\">\n {{'igo.geo.measure.toggleDisplayDistance' | translate}}\n </mat-slide-toggle>\n\n <mat-slide-toggle *ngIf=\"(hasArea$ | async)\"\n [checked]=\"displayAreas\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDisplayAreas($event.checked)\">\n {{'igo.geo.measure.toggleDisplayAreas' | translate}}\n </mat-slide-toggle>\n\n <mat-divider *ngIf=\"(hasArea$ | async)\"></mat-divider>\n\n <mat-slide-toggle\n [checked]=\"measureUnitsAuto\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleMeasureUnitsAuto($event.checked)\">\n {{'igo.geo.measure.toggleAutoUnits' | translate}}\n </mat-slide-toggle>\n </div>\n\n <ng-container *ngIf=\"measure$ | async as measure\">\n <igo-measurer-item *ngIf=\"activeMeasureType === measureType.Length || activeMeasureType === measureType.Area\"\n [measureType]=\"measureType.Length\"\n [measureUnit]=\"measureLengthUnit.Meters\"\n [measure]=\"measure.length\"\n [auto]=\"measureUnitsAuto\"\n [placeholder]=\"(activeMeasureType === measureType.Area ? 'igo.geo.measure.perimeter' : 'igo.geo.measure.length') | translate\"\n (measureUnitChange)=\"onLengthUnitChange($event)\">\n </igo-measurer-item>\n\n <igo-measurer-item *ngIf=\"activeMeasureType === measureType.Area\"\n [measureType]=\"measureType.Area\"\n [measureUnit]=\"measureAreaUnit.SquareMeters\"\n [measure]=\"measure.area\"\n [auto]=\"measureUnitsAuto\"\n [placeholder]=\"'igo.geo.measure.area' | translate\"\n (measureUnitChange)=\"onAreaUnitChange($event)\">\n </igo-measurer-item>\n </ng-container>\n\n <mat-divider *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"></mat-divider>\n\n <div class=\"measure-store-buttons\">\n <button *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"\n mat-icon-button\n [matTooltip]=\"'igo.geo.measure.actionbar.calculate.tooltip' | translate\"\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\n color=\"accent\"\n (click)=\"onCalculateClick()\">\n <mat-icon svgIcon=\"calculator\"></mat-icon>\n </button>\n\n <button *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"\n mat-icon-button\n [matTooltip]=\"'igo.geo.measure.actionbar.delete.tooltip' | translate\"\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\n color=\"warn\"\n (click)=\"onDeleteClick()\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n\n <!--button\n mat-icon-button\n [matTooltip]=\"'igo.geo.measure.actionbar.modify.tooltip' | translate\"\n [disabled]=\"(selectedFeatures$ | async).length !== 1\"\n (click)=\"onModifyClick()\">\n <mat-icon svgIcon=\"edit\"></mat-icon>\n </button-->\n </div>\n\n <igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"store\"\n [template]=\"tableTemplate\">\n </igo-entity-table>\n</div>\n", styles: [".measure-type-toggle{padding:10px;text-align:center}.measure-type-toggle mat-button-toggle-group{width:100%}.measure-type-toggle mat-button-toggle-group mat-button-toggle{width:50%}.measure-options{overflow-x:hidden}.measure-options mat-slide-toggle{width:100%;margin:10px}.measure-options mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.measure-store-buttons{margin-left:-2px}.measure-store-buttons button:first-of-type{margin-left:14px}.table-compact ::ng-deep .mat-header-cell.mat-column-selectionCheckbox{width:52px}\n"] }]
22982
- }], function () { return [{ type: i2$1.LanguageService }, { type: i1.MatDialog }, { type: i2$1.StorageService }]; }, { map: [{
23146
+ }], function () { return [{ type: i2$1.LanguageService }, { type: i3.MatDialog }, { type: i2$1.StorageService }]; }, { map: [{
22983
23147
  type: Input
22984
23148
  }], store: [{
22985
23149
  type: Input
@@ -23675,7 +23839,7 @@ GeometryFormFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
23675
23839
  i0.ɵɵproperty("ngIf", ctx.geometryTypeField);
23676
23840
  i0.ɵɵadvance(1);
23677
23841
  i0.ɵɵproperty("ngIf", ctx.drawGuideField);
23678
- } }, dependencies: [i1$1.NgIf, i2$2.DefaultValueAccessor, i2$2.NumberValueAccessor, i2$2.NgControlStatus, i2$2.NgModel, i2$2.FormControlDirective, i2.MatIcon, i13.MatFormField, i13.MatPrefix, i13.MatSuffix, i14.MatInput, i18.MatButtonToggleGroup, i18.MatButtonToggle, GeometryFormFieldInputComponent, i1$1.AsyncPipe, i7.TranslatePipe], styles: ["[_nghost-%COMP%]{display:block;width:100%}.geometry-type-toggle[_ngcontent-%COMP%], .draw-guide-field[_ngcontent-%COMP%]{width:100%}.geometry-type-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.draw-guide-field[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin:0 10px}.draw-guide-units[_ngcontent-%COMP%]{padding:10px}"], changeDetection: 0 });
23842
+ } }, dependencies: [i1.NgIf, i2$2.DefaultValueAccessor, i2$2.NumberValueAccessor, i2$2.NgControlStatus, i2$2.NgModel, i2$2.FormControlDirective, i2.MatIcon, i13.MatFormField, i13.MatPrefix, i13.MatSuffix, i14.MatInput, i18.MatButtonToggleGroup, i18.MatButtonToggle, GeometryFormFieldInputComponent, i1.AsyncPipe, i7.TranslatePipe], styles: ["[_nghost-%COMP%]{display:block;width:100%}.geometry-type-toggle[_ngcontent-%COMP%], .draw-guide-field[_ngcontent-%COMP%]{width:100%}.geometry-type-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.draw-guide-field[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin:0 10px}.draw-guide-units[_ngcontent-%COMP%]{padding:10px}"], changeDetection: 0 });
23679
23843
  GeometryFormFieldComponent = __decorate([
23680
23844
  IgoFormFieldComponent('geometry')
23681
23845
  ], GeometryFormFieldComponent);
@@ -24556,7 +24720,7 @@ TimeFilterFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Tim
24556
24720
  i0.ɵɵproperty("ngIf", !ctx.isRange && ctx.style === "slider" && ctx.type === "year");
24557
24721
  i0.ɵɵadvance(1);
24558
24722
  i0.ɵɵproperty("ngIf", ctx.style === "slider" && ctx.type !== "year");
24559
- } }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgModel, i9.MatOption, i2.MatIcon, i3.MatButton, i13$1.MatSlider, i23.MatSlideToggle, i13.MatFormField, i13.MatSuffix, i14.MatInput, i15.MatSelect, i4.MatTooltip, i12$2.MatDatetimepickerComponent, i12$2.MatDatetimepickerToggleComponent, i12$2.MatDatetimepickerInputDirective, i7.TranslatePipe], styles: [".igo-layer-filters-container[_ngcontent-%COMP%]{padding-left:5px}mat-slider[_ngcontent-%COMP%] div.mat-slider-thumb-label{width:32px;height:32px;margin:0 auto}mat-slider[_ngcontent-%COMP%] span.mat-slider-thumb-label-text{font-size:10px}#time-slider[_ngcontent-%COMP%]{width:70%;margin:0 auto}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){#time-slider[_ngcontent-%COMP%]{width:60%;margin:0 auto}}.date-below[_ngcontent-%COMP%]{margin:0}mat-form-field[_ngcontent-%COMP%]{text-align:center}mat-datetimepicker-toggle[_ngcontent-%COMP%] .mat-icon{padding-bottom:30px}.igo-layer-actions-container[_ngcontent-%COMP%] > .mat-slide-toggle[_ngcontent-%COMP%]{vertical-align:middle}.time-filter-mat-datetimepicker-toggle[_ngcontent-%COMP%] .mat-icon{width:auto}"] });
24723
+ } }, dependencies: [i1.NgForOf, i1.NgIf, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgModel, i9.MatOption, i2.MatIcon, i3$1.MatButton, i13$1.MatSlider, i23.MatSlideToggle, i13.MatFormField, i13.MatSuffix, i14.MatInput, i15.MatSelect, i4.MatTooltip, i12$2.MatDatetimepickerComponent, i12$2.MatDatetimepickerToggleComponent, i12$2.MatDatetimepickerInputDirective, i7.TranslatePipe], styles: [".igo-layer-filters-container[_ngcontent-%COMP%]{padding-left:5px}mat-slider[_ngcontent-%COMP%] div.mat-slider-thumb-label{width:32px;height:32px;margin:0 auto}mat-slider[_ngcontent-%COMP%] span.mat-slider-thumb-label-text{font-size:10px}#time-slider[_ngcontent-%COMP%]{width:70%;margin:0 auto}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){#time-slider[_ngcontent-%COMP%]{width:60%;margin:0 auto}}.date-below[_ngcontent-%COMP%]{margin:0}mat-form-field[_ngcontent-%COMP%]{text-align:center}mat-datetimepicker-toggle[_ngcontent-%COMP%] .mat-icon{padding-bottom:30px}.igo-layer-actions-container[_ngcontent-%COMP%] > .mat-slide-toggle[_ngcontent-%COMP%]{vertical-align:middle}.time-filter-mat-datetimepicker-toggle[_ngcontent-%COMP%] .mat-icon{width:auto}"] });
24560
24724
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TimeFilterFormComponent, [{
24561
24725
  type: Component,
24562
24726
  args: [{ selector: 'igo-time-filter-form', template: "<div *ngIf=\"style === 'calendar' && type !=='year'\">\n <div *ngIf=\"!isRange\" class=\"igo-col igo-col-100 igo-col-100-m\">\n <mat-form-field>\n <mat-datetimepicker-toggle class=\"time-filter-mat-datetimepicker-toggle\" [for]=\"datetimePicker\" matSuffix></mat-datetimepicker-toggle>\n <mat-datetimepicker #datetimePicker type=\"{{type}}\" openOnFocus=\"true\" timeInterval=\"5\"></mat-datetimepicker>\n <input matInput autocomplete=\"false\"\n placeholder=\"{{'igo.geo.timeFilter.date' | translate}}\"\n [matDatetimepicker]=\"datetimePicker\"\n [(ngModel)]=\"date\"\n [min]=\"min\"\n [max]=\"max\"\n readonly=\"readonly\"\n (dateChange)=\"handleDateChange($event)\">\n </mat-form-field>\n\n </div>\n\n <div *ngIf=\"isRange\">\n <div class=\"igo-col igo-col-100\">\n <mat-form-field>\n <mat-datetimepicker-toggle class=\"time-filter-mat-datetimepicker-toggle\" [for]=\"minDatetimePicker\" matSuffix></mat-datetimepicker-toggle>\n <mat-datetimepicker #minDatetimePicker type=\"{{type}}\" openOnFocus=\"true\" timeInterval=\"5\"></mat-datetimepicker>\n <input matInput autocomplete=\"false\"\n placeholder=\"{{'igo.geo.timeFilter.startDate' | translate}}\"\n [matDatetimepicker]=\"minDatetimePicker\"\n [(ngModel)]=\"startDate\"\n [min]=\"min\"\n [max]=\"getRangeMaxDate()\"\n readonly=\"readonly\"\n (input)=\"startDate\"\n (dateChange)=\"handleDateChange($event)\">\n </mat-form-field>\n </div>\n\n <div class=\"igo-col igo-col-100\">\n <mat-form-field>\n <mat-datetimepicker-toggle class=\"time-filter-mat-datetimepicker-toggle\" [for]=\"maxDatetimePicker\" matSuffix></mat-datetimepicker-toggle>\n <mat-datetimepicker #maxDatetimePicker type=\"{{type}}\" openOnFocus=\"true\" timeInterval=\"5\"></mat-datetimepicker>\n <input matInput autocomplete=\"false\"\n placeholder=\"{{'igo.geo.timeFilter.endDate' | translate}}\"\n [matDatetimepicker]=\"maxDatetimePicker\"\n [(ngModel)]=\"endDate\"\n [min]=\"getRangeMinDate()\"\n [max]=\"max\"\n readonly=\"readonly\"\n (dateChange)=\"handleDateChange($event)\">\n </mat-form-field>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"style === 'calendar' && type ==='year'\">\n\n <div *ngIf=\"!isRange\" class=\"igo-col igo-col-100 igo-col-100-m\">\n <mat-form-field>\n <mat-select placeholder=\"{{'igo.geo.timeFilter.date' | translate}}\" [(ngModel)]=\"year\" (selectionChange)=\"handleYearChange($event)\">\n <mat-option [value]=\"year\" *ngFor=\"let year of listYears\">{{year}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div *ngIf=\"isRange\">\n <div class=\"igo-col igo-col-100\">\n <mat-form-field>\n <mat-select placeholder=\"{{'igo.geo.timeFilter.startDate' | translate}}\" [(ngModel)]=\"startYear\" (selectionChange)=\"handleYearChange($event)\">\n <mat-option [value]=\"startYear\" *ngFor=\"let startYear of startListYears\">{{startYear}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-col igo-col-100\">\n <mat-form-field>\n <mat-select placeholder=\"{{'igo.geo.timeFilter.endDate' | translate}}\" [(ngModel)]=\"endYear\" (selectionChange)=\"handleYearChange($event)\">\n <mat-option [value]=\"endYear\" *ngFor=\"let endYear of endListYears\">{{endYear}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n\n</div>\n\n\n <br>\n <div *ngIf=\"!isRange && style === 'slider' && type === 'year'\" class=\"igo-col igo-col-100 igo-col-100-m mat-typography\">\n <span>{{startYear}}</span>\n <mat-slider\n id=\"time-slider\"\n tickInterval=\"auto\"\n step=\"{{step}}\"\n [min]=\"startYear\"\n [max]=\"endYear\"\n [value]=\"handleSliderValue()\"\n [color]=\"color\"\n thumbLabel\n (input)=\"handleSliderYearChange($event)\"\n (change)=\"handleSliderYearChange($event)\"\n [disabled]= \"!options.enabled || !layer.visible\">\n </mat-slider>\n <span>{{endYear}}</span>\n <p *ngIf= \"options.enabled\" class=\"date-below\">{{year}}</p>\n <div #actions class=\"igo-layer-actions-container\">\n <mat-slide-toggle (change)=\"toggleFilterState()\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.filter.toggleFilterState' | translate\" [color]=\"color\" [checked]=\"options.enabled\"\n [disabled]=\"!layer.visible\">\n </mat-slide-toggle>\n <button [disabled]= \"!options.enabled || !layer.visible\" mat-icon-button color=\"primary\" (click)=\"playYear($event)\">\n <mat-icon svgIcon=\"{{playIcon}}\"></mat-icon>\n </button>\n <button [disabled]=\"!options.enabled || !layer.visible\" mat-icon-button color=\"primary\" (click)=\"resetFilter($event)\">\n <mat-icon svgIcon=\"{{resetIcon}}\"></mat-icon>\n </button>\n </div>\n </div>\n\n<div *ngIf=\"style === 'slider' && type !== 'year'\" class=\"igo-col igo-col-100 igo-col-100-m\">\n <mat-slider\n id=\"time-slider\"\n tickInterval=\"auto\"\n step=\"{{step}}\"\n [min]=\"dateToNumber(min)\"\n [max]=\"dateToNumber(max)\"\n [value]=\"handleSliderValue()\"\n thumbLabel\n (input)=\"handleSliderDateChange($event)\"\n (selectionChange)=\"handleSliderDateChange($event)\">\n </mat-slider>\n <p class=\"date-below\">{{handleSliderTooltip()}}</p>\n <button mat-icon-button color=\"primary\" (click)=\"playFilter($event)\">\n <mat-icon svgIcon=\"{{playIcon}}\"></mat-icon>\n </button>\n</div>\n", styles: [".igo-layer-filters-container{padding-left:5px}mat-slider ::ng-deep div.mat-slider-thumb-label{width:32px;height:32px;margin:0 auto}mat-slider ::ng-deep span.mat-slider-thumb-label-text{font-size:10px}#time-slider{width:70%;margin:0 auto}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){#time-slider{width:60%;margin:0 auto}}.date-below{margin:0}mat-form-field{text-align:center}mat-datetimepicker-toggle ::ng-deep .mat-icon{padding-bottom:30px}.igo-layer-actions-container>.mat-slide-toggle{vertical-align:middle}.time-filter-mat-datetimepicker-toggle ::ng-deep .mat-icon{width:auto}\n"] }]
@@ -24575,7 +24739,7 @@ TimeFilterFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Tim
24575
24739
  args: [MatSlider]
24576
24740
  }] }); })();
24577
24741
 
24578
- const _c0$9 = function (a0) { return { disabled: a0 }; };
24742
+ const _c0$a = function (a0) { return { disabled: a0 }; };
24579
24743
  function TimeFilterItemComponent_mat_list_item_0_button_4_Template(rf, ctx) { if (rf & 1) {
24580
24744
  const _r6 = i0.ɵɵgetCurrentView();
24581
24745
  i0.ɵɵelementStart(0, "button", 10);
@@ -24589,7 +24753,7 @@ function TimeFilterItemComponent_mat_list_item_0_button_4_Template(rf, ctx) { if
24589
24753
  const ctx_r4 = i0.ɵɵnextContext(2);
24590
24754
  i0.ɵɵproperty("color", ctx_r4.layer.visible ? "primary" : "default")("matTooltip", ctx_r4.layer.visible ? i0.ɵɵpipeBind1(1, 4, "igo.geo.layer.hideLayer") : i0.ɵɵpipeBind1(2, 6, "igo.geo.layer.showLayer"));
24591
24755
  i0.ɵɵadvance(3);
24592
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c0$9, i0.ɵɵpipeBind1(4, 8, ctx_r4.inResolutionRange$) === false))("svgIcon", ctx_r4.layer.visible ? "eye" : "eye-off");
24756
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c0$a, i0.ɵɵpipeBind1(4, 8, ctx_r4.inResolutionRange$) === false))("svgIcon", ctx_r4.layer.visible ? "eye" : "eye-off");
24593
24757
  } }
24594
24758
  const _c1$8 = function (a0) { return { "cursor": a0 }; };
24595
24759
  function TimeFilterItemComponent_mat_list_item_0_Template(rf, ctx) { if (rf & 1) {
@@ -25271,7 +25435,7 @@ function OgcFilterFormComponent_igo_ogc_filter_time_41_Template(rf, ctx) { if (r
25271
25435
  const ctx_r8 = i0.ɵɵnextContext();
25272
25436
  i0.ɵɵproperty("datasource", ctx_r8.datasource)("currentFilter", ctx_r8.currentFilter);
25273
25437
  } }
25274
- const _c0$8 = function (a0, a1) { return { "logical": a0, "logicalHidden": a1 }; };
25438
+ const _c0$9 = function (a0, a1) { return { "logical": a0, "logicalHidden": a1 }; };
25275
25439
  const _c1$7 = function (a0, a1) { return { "operator": a0, "dualInput": a1 }; };
25276
25440
  const _c2$4 = function () { return ["expression", "pattern"]; };
25277
25441
  const _c3$1 = function () { return ["lowerBoundary", "begin"]; };
@@ -25577,7 +25741,7 @@ OgcFilterFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OgcF
25577
25741
  } if (rf & 2) {
25578
25742
  i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 27, "igo.geo.filter.toggleFilterState"))("checked", ctx.currentFilter.active);
25579
25743
  i0.ɵɵadvance(2);
25580
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(67, _c0$8, ctx.activeFilters.indexOf(ctx.currentFilter) !== 0 && ctx.currentFilter.active === true, ctx.activeFilters.indexOf(ctx.currentFilter) === 0 || ctx.currentFilter.active !== true));
25744
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(67, _c0$9, ctx.activeFilters.indexOf(ctx.currentFilter) !== 0 && ctx.currentFilter.active === true, ctx.activeFilters.indexOf(ctx.currentFilter) === 0 || ctx.currentFilter.active !== true));
25581
25745
  i0.ɵɵadvance(1);
25582
25746
  i0.ɵɵproperty("disabled", !ctx.currentFilter.active)("value", ctx.currentFilter.parentLogical)("matTooltip", ctx.currentFilter.parentLogical ? i0.ɵɵpipeBind1(4, 29, "igo.geo.operators.tooltip." + ctx.currentFilter.parentLogical) : "");
25583
25747
  i0.ɵɵadvance(2);
@@ -25695,7 +25859,7 @@ function OgcFilterableItemComponent_mat_icon_2_Template(rf, ctx) { if (rf & 1) {
25695
25859
  const _r4 = i0.ɵɵreference(7);
25696
25860
  i0.ɵɵproperty("target", _r4)("collapsed", ctx_r0.filtersCollapsed);
25697
25861
  } }
25698
- const _c0$7 = function (a0) { return { "cursor": a0 }; };
25862
+ const _c0$8 = function (a0) { return { "cursor": a0 }; };
25699
25863
  function OgcFilterableItemComponent_h4_3_Template(rf, ctx) { if (rf & 1) {
25700
25864
  const _r10 = i0.ɵɵgetCurrentView();
25701
25865
  i0.ɵɵelementStart(0, "h4", 10);
@@ -25704,7 +25868,7 @@ function OgcFilterableItemComponent_h4_3_Template(rf, ctx) { if (rf & 1) {
25704
25868
  i0.ɵɵelementEnd();
25705
25869
  } if (rf & 2) {
25706
25870
  const ctx_r1 = i0.ɵɵnextContext();
25707
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(3, _c0$7, ctx_r1.filtersCollapsed ? "default" : "pointer"))("matTooltip", ctx_r1.layer.title);
25871
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(3, _c0$8, ctx_r1.filtersCollapsed ? "default" : "pointer"))("matTooltip", ctx_r1.layer.title);
25708
25872
  i0.ɵɵadvance(1);
25709
25873
  i0.ɵɵtextInterpolate(ctx_r1.layer.title);
25710
25874
  } }
@@ -26262,7 +26426,7 @@ OGCFilterTimeService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: OGC
26262
26426
  type: Injectable
26263
26427
  }], function () { return []; }, null); })();
26264
26428
 
26265
- const _c0$6 = ["selection"];
26429
+ const _c0$7 = ["selection"];
26266
26430
  function OgcFilterSelectionComponent_div_1_div_1_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
26267
26431
  i0.ɵɵelementStart(0, "mat-option", 13);
26268
26432
  i0.ɵɵtext(1);
@@ -27514,7 +27678,7 @@ class OgcFilterSelectionComponent {
27514
27678
  }
27515
27679
  OgcFilterSelectionComponent.ɵfac = function OgcFilterSelectionComponent_Factory(t) { return new (t || OgcFilterSelectionComponent)(i0.ɵɵdirectiveInject(OGCFilterService), i0.ɵɵdirectiveInject(i2$2.UntypedFormBuilder), i0.ɵɵdirectiveInject(i5$1.DOMService), i0.ɵɵdirectiveInject(i2$1.ConfigService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
27516
27680
  OgcFilterSelectionComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OgcFilterSelectionComponent, selectors: [["igo-ogc-filter-selection"]], viewQuery: function OgcFilterSelectionComponent_Query(rf, ctx) { if (rf & 1) {
27517
- i0.ɵɵviewQuery(_c0$6, 5);
27681
+ i0.ɵɵviewQuery(_c0$7, 5);
27518
27682
  } if (rf & 2) {
27519
27683
  let _t;
27520
27684
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sel = _t.first);
@@ -27862,7 +28026,7 @@ SpatialFilterListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
27862
28026
  i0.ɵɵproperty("value", ctx.measureUnit);
27863
28027
  i0.ɵɵadvance(1);
27864
28028
  i0.ɵɵproperty("ngForOf", ctx.measureUnits);
27865
- } }, dependencies: [i1$1.NgForOf, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NumberValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.NgForm, i2$2.FormControlDirective, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i9.MatOption, i13.MatFormField, i14.MatInput, i15.MatSelect, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".buffer-div[_ngcontent-%COMP%]{display:flex;width:100%;margin-left:2px;padding:5px}.zone-list[_ngcontent-%COMP%]{padding:5px;width:95%;margin-left:2px}.buffer[_ngcontent-%COMP%]{display:flex;flex-flow:column nowrap;width:110%}.unit-field[_ngcontent-%COMP%]{width:110px;margin-left:30px}"], changeDetection: 0 });
28029
+ } }, dependencies: [i1.NgForOf, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NumberValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.NgForm, i2$2.FormControlDirective, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i9.MatOption, i13.MatFormField, i14.MatInput, i15.MatSelect, i1.AsyncPipe, i7.TranslatePipe], styles: [".buffer-div[_ngcontent-%COMP%]{display:flex;width:100%;margin-left:2px;padding:5px}.zone-list[_ngcontent-%COMP%]{padding:5px;width:95%;margin-left:2px}.buffer[_ngcontent-%COMP%]{display:flex;flex-flow:column nowrap;width:110%}.unit-field[_ngcontent-%COMP%]{width:110px;margin-left:30px}"], changeDetection: 0 });
27866
28030
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SpatialFilterListComponent, [{
27867
28031
  type: Component,
27868
28032
  args: [{ selector: 'igo-spatial-filter-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form class=\"form-list\">\n <mat-form-field class=\"zone-list\">\n <input #input type=\"text\" placeholder=\"{{'igo.geo.spatialFilter.listLabel' |\u00A0translate}}\" matInput\n [formControl]=\"formControl\" [matAutocomplete]=\"auto\">\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onZoneChange($event.option.value)\"\n [displayWith]=\"displayFn\">\n <mat-option *ngFor=\"let entities of this.store.view.all$() | async\" [value]=\"entities\">\n {{entities.properties.nom}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n<form>\n\n<div class=\"buffer-div\">\n <form class=\"buffer-form\">\n <mat-form-field class=\"buffer\">\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.buffer' | translate}}\" [formControl]=\"bufferFormControl\"\n [value]=\"0\" [readonly]=\"!zone\">\n </mat-form-field>\n </form>\n\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"measureUnit\"\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\n {{('igo.geo.measure.' + measureUnit) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n", styles: [".buffer-div{display:flex;width:100%;margin-left:2px;padding:5px}.zone-list{padding:5px;width:95%;margin-left:2px}.buffer{display:flex;flex-flow:column nowrap;width:110%}.unit-field{width:110px;margin-left:30px}\n"] }]
@@ -28954,7 +29118,7 @@ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
28954
29118
  type: Output
28955
29119
  }] }); })();
28956
29120
 
28957
- const _c0$5 = ["endDatepickerTime"];
29121
+ const _c0$6 = ["endDatepickerTime"];
28958
29122
  const _c1$4 = ["beginDatepickerTime"];
28959
29123
  const _c2$2 = ["beginTime"];
28960
29124
  const _c3 = ["endTime"];
@@ -29799,7 +29963,7 @@ class OgcFilterTimeComponent {
29799
29963
  }
29800
29964
  OgcFilterTimeComponent.ɵfac = function OgcFilterTimeComponent_Factory(t) { return new (t || OgcFilterTimeComponent)(i0.ɵɵdirectiveInject(OGCFilterTimeService)); };
29801
29965
  OgcFilterTimeComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OgcFilterTimeComponent, selectors: [["igo-ogc-filter-time"]], viewQuery: function OgcFilterTimeComponent_Query(rf, ctx) { if (rf & 1) {
29802
- i0.ɵɵviewQuery(_c0$5, 5);
29966
+ i0.ɵɵviewQuery(_c0$6, 5);
29803
29967
  i0.ɵɵviewQuery(_c1$4, 5);
29804
29968
  i0.ɵɵviewQuery(_c2$2, 5);
29805
29969
  i0.ɵɵviewQuery(_c3, 5);
@@ -29995,7 +30159,7 @@ OgcFilterTimeSliderComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type
29995
30159
  i0.ɵɵproperty("svgIcon", ctx.playIcon);
29996
30160
  i0.ɵɵadvance(2);
29997
30161
  i0.ɵɵpropertyInterpolate("svgIcon", ctx.resetIcon);
29998
- } }, dependencies: [i2$2.NgControlStatus, i2$2.NgModel, i2.MatIcon, i3.MatButton, i13$1.MatSlider], styles: ["input{text-align:center!important;margin:auto 5px!important} .mat-slider-thumb{transform:scale(0)!important} .mat-slider-thumb-label{transform:rotate(45deg)!important;border-radius:50% 50% 0!important;background-color:#ffd740!important} .mat-slider-thumb-label-text{opacity:1!important;transform:rotate(135deg)!important} .mat-slider-horizontal .mat-slider-thumb-label{top:10px!important;transform:rotate(225deg)!important} .mat-slider-horizontal.cdk-focused .mat-slider-thumb-label{transform:rotate(225deg)!important}.datetime-container[_ngcontent-%COMP%], .slider-container[_ngcontent-%COMP%]{text-align:center}.datetime-input[_ngcontent-%COMP%]{display:inline-block;margin:5px 25px}.date-input[_ngcontent-%COMP%]{width:120px;margin-right:25px}.time-input[_ngcontent-%COMP%]{display:inherit;margin-right:25px}.hour-input[_ngcontent-%COMP%], .minute-input[_ngcontent-%COMP%]{width:40px}.minute-input[_ngcontent-%COMP%]{margin-left:10px}"] });
30162
+ } }, dependencies: [i2$2.NgControlStatus, i2$2.NgModel, i2.MatIcon, i3$1.MatButton, i13$1.MatSlider], styles: ["input{text-align:center!important;margin:auto 5px!important} .mat-slider-thumb{transform:scale(0)!important} .mat-slider-thumb-label{transform:rotate(45deg)!important;border-radius:50% 50% 0!important;background-color:#ffd740!important} .mat-slider-thumb-label-text{opacity:1!important;transform:rotate(135deg)!important} .mat-slider-horizontal .mat-slider-thumb-label{top:10px!important;transform:rotate(225deg)!important} .mat-slider-horizontal.cdk-focused .mat-slider-thumb-label{transform:rotate(225deg)!important}.datetime-container[_ngcontent-%COMP%], .slider-container[_ngcontent-%COMP%]{text-align:center}.datetime-input[_ngcontent-%COMP%]{display:inline-block;margin:5px 25px}.date-input[_ngcontent-%COMP%]{width:120px;margin-right:25px}.time-input[_ngcontent-%COMP%]{display:inherit;margin-right:25px}.hour-input[_ngcontent-%COMP%], .minute-input[_ngcontent-%COMP%]{width:40px}.minute-input[_ngcontent-%COMP%]{margin-left:10px}"] });
29999
30163
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OgcFilterTimeSliderComponent, [{
30000
30164
  type: Component,
30001
30165
  args: [{ selector: 'igo-ogc-filter-time-slider', template: "<div class=\"slider-container\">\n <mat-slider\n id=\"time-slider\"\n [step]=\"1\"\n [min]=\"1\"\n [max]=\"calculatedStep\"\n [(ngModel)]=\"sliderValue\"\n [displayWith]=\"sliderDisplayWith\"\n (input)=\"handleSliderInput($event)\"\n thumbLabel\n >\n </mat-slider>\n <button mat-icon-button color=\"primary\" (click)=\"playFilter($event)\">\n <mat-icon [svgIcon]=\"playIcon\"></mat-icon>\n </button>\n <button mat-icon-button color=\"primary\" (click)=\"resetFilter($event)\">\n <mat-icon svgIcon=\"{{resetIcon}}\"></mat-icon>\n </button>\n \n</div>", styles: ["::ng-deep input{text-align:center!important;margin:auto 5px!important}::ng-deep .mat-slider-thumb{transform:scale(0)!important}::ng-deep .mat-slider-thumb-label{transform:rotate(45deg)!important;border-radius:50% 50% 0!important;background-color:#ffd740!important}::ng-deep .mat-slider-thumb-label-text{opacity:1!important;transform:rotate(135deg)!important}::ng-deep .mat-slider-horizontal .mat-slider-thumb-label{top:10px!important;transform:rotate(225deg)!important}::ng-deep .mat-slider-horizontal.cdk-focused .mat-slider-thumb-label{transform:rotate(225deg)!important}.datetime-container,.slider-container{text-align:center}.datetime-input{display:inline-block;margin:5px 25px}.date-input{width:120px;margin-right:25px}.time-input{display:inherit;margin-right:25px}.hour-input,.minute-input{width:40px}.minute-input{margin-left:10px}\n"] }]
@@ -30213,19 +30377,19 @@ IgoFilterModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [TimeFi
30213
30377
  SpatialFilterItemComponent,
30214
30378
  OgcFilterTimeComponent,
30215
30379
  OgcFilterTimeSliderComponent] }); })();
30216
- i0.ɵɵsetComponentScope(TimeFilterButtonComponent, [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5$1.ListItemDirective, i7$1.MatBadge, TimeFilterItemComponent], [i7.TranslatePipe]);
30217
- i0.ɵɵsetComponentScope(TimeFilterItemComponent, [i1$1.NgClass, i1$1.NgIf, i1$1.NgStyle, i2.MatIcon, i3.MatButton, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i4.MatTooltip, LayerLegendComponent, i5$1.CollapseDirective, TimeFilterFormComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
30218
- i0.ɵɵsetComponentScope(TimeFilterListComponent, [i1$1.NgForOf, i5$1.ListItemDirective, i5$1.ListComponent, TimeFilterItemComponent], [FilterableDataSourcePipe]);
30219
- i0.ɵɵsetComponentScope(OgcFilterFormComponent, [i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i9.MatOption, i2.MatIcon, i3.MatButton, i12.MatCheckbox, i13.MatFormField, i13.MatSuffix, i14.MatInput, i15.MatSelect, i4.MatTooltip, OgcFilterTimeComponent], [i1$1.AsyncPipe, i7.TranslatePipe, i5$1.KeyValuePipe]);
30220
- i0.ɵɵsetComponentScope(OgcFilterButtonComponent, [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5$1.ListItemDirective, i7$1.MatBadge, OgcFilterableItemComponent], [i7.TranslatePipe]);
30221
- i0.ɵɵsetComponentScope(OgcFilterSelectionComponent, [i1$1.NgForOf, i1$1.NgIf, i1$1.NgStyle, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.NgModel, i2$2.FormGroupDirective, i2$2.FormControlName, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i9.MatOption, i2.MatIcon, i17.MatRadioGroup, i17.MatRadioButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i12.MatCheckbox, i13.MatFormField, i14.MatInput, i15.MatSelect, i11.MatDivider, i4.MatTooltip, OgcFilterTimeComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
30222
- i0.ɵɵsetComponentScope(OgcFilterableFormComponent, [i1$1.NgForOf, i1$1.NgIf, i5$1.ListItemDirective, OgcFilterFormComponent,
30380
+ i0.ɵɵsetComponentScope(TimeFilterButtonComponent, [i1.NgIf, i2.MatIcon, i3$1.MatButton, i4.MatTooltip, i5$1.ListItemDirective, i7$1.MatBadge, TimeFilterItemComponent], [i7.TranslatePipe]);
30381
+ i0.ɵɵsetComponentScope(TimeFilterItemComponent, [i1.NgClass, i1.NgIf, i1.NgStyle, i2.MatIcon, i3$1.MatButton, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i4.MatTooltip, LayerLegendComponent, i5$1.CollapseDirective, TimeFilterFormComponent], [i1.AsyncPipe, i7.TranslatePipe]);
30382
+ i0.ɵɵsetComponentScope(TimeFilterListComponent, [i1.NgForOf, i5$1.ListItemDirective, i5$1.ListComponent, TimeFilterItemComponent], [FilterableDataSourcePipe]);
30383
+ i0.ɵɵsetComponentScope(OgcFilterFormComponent, [i1.NgClass, i1.NgForOf, i1.NgIf, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i9.MatOption, i2.MatIcon, i3$1.MatButton, i12.MatCheckbox, i13.MatFormField, i13.MatSuffix, i14.MatInput, i15.MatSelect, i4.MatTooltip, OgcFilterTimeComponent], [i1.AsyncPipe, i7.TranslatePipe, i5$1.KeyValuePipe]);
30384
+ i0.ɵɵsetComponentScope(OgcFilterButtonComponent, [i1.NgIf, i2.MatIcon, i3$1.MatButton, i4.MatTooltip, i5$1.ListItemDirective, i7$1.MatBadge, OgcFilterableItemComponent], [i7.TranslatePipe]);
30385
+ i0.ɵɵsetComponentScope(OgcFilterSelectionComponent, [i1.NgForOf, i1.NgIf, i1.NgStyle, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.NgModel, i2$2.FormGroupDirective, i2$2.FormControlName, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i9.MatOption, i2.MatIcon, i17.MatRadioGroup, i17.MatRadioButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i12.MatCheckbox, i13.MatFormField, i14.MatInput, i15.MatSelect, i11.MatDivider, i4.MatTooltip, OgcFilterTimeComponent], [i1.AsyncPipe, i7.TranslatePipe]);
30386
+ i0.ɵɵsetComponentScope(OgcFilterableFormComponent, [i1.NgForOf, i1.NgIf, i5$1.ListItemDirective, OgcFilterFormComponent,
30223
30387
  OgcFilterSelectionComponent], []);
30224
- i0.ɵɵsetComponentScope(OgcFilterableItemComponent, [i1$1.NgClass, i1$1.NgIf, i1$1.NgStyle, i2$2.NgControlStatus, i2$2.NgModel, i2.MatIcon, i3.MatButton, i12.MatCheckbox, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i11.MatDivider, i4.MatTooltip, LayerLegendComponent, i5$1.CollapseDirective, OgcFilterableFormComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
30225
- i0.ɵɵsetComponentScope(OgcFilterableListComponent, [i1$1.NgForOf, i1$1.NgIf, i5$1.ListItemDirective, i5$1.ListComponent, OgcFilterableItemComponent], [i7.TranslatePipe, FilterableDataSourcePipe]);
30226
- i0.ɵɵsetComponentScope(SpatialFilterTypeComponent, [i1$1.NgForOf, i9.MatOption, i2.MatIcon, i20.MatTabGroup, i20.MatTab, i18.MatButtonToggleGroup, i18.MatButtonToggle, i13.MatFormField, i13.MatLabel, i15.MatSelect, i4.MatTooltip, SpatialFilterListComponent], [i7.TranslatePipe]);
30227
- i0.ɵɵsetComponentScope(SpatialFilterItemComponent, [i1$1.NgForOf, i1$1.NgIf, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NumberValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.NgForm, i2$2.FormControlDirective, i9.MatOption, i2.MatIcon, i3.MatButton, i17.MatRadioGroup, i17.MatRadioButton, i21.MatTable, i21.MatHeaderCellDef, i21.MatHeaderRowDef, i21.MatColumnDef, i21.MatRowDef, i21.MatHeaderCell, i21.MatHeaderRow, i21.MatRow, i22.MatNestedTreeNode, i22.MatTreeNodeDef, i22.MatTreeNodeToggle, i22.MatTree, i22.MatTreeNode, i22.MatTreeNodeOutlet, i12.MatCheckbox, i23.MatSlideToggle, i13.MatFormField, i13.MatLabel, i14.MatInput, i15.MatSelect, i4.MatTooltip, i5$1.EntityTableComponent, GeometryFormFieldInputComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
30228
- i0.ɵɵsetComponentScope(OgcFilterTimeComponent, [i1$1.NgForOf, i1$1.NgIf, i2$2.NgControlStatus, i2$2.NgModel, i2$2.FormControlDirective, i9.MatOption, i2.MatIcon, i3.MatButton, i23.MatSlideToggle, i13.MatFormField, i13.MatLabel, i13.MatSuffix, i14.MatInput, i15.MatSelect, i4.MatTooltip, i25.MatDatepicker, i25.MatDatepickerInput, i25.MatDatepickerToggle, OgcFilterTimeSliderComponent], [i7.TranslatePipe]);
30388
+ i0.ɵɵsetComponentScope(OgcFilterableItemComponent, [i1.NgClass, i1.NgIf, i1.NgStyle, i2$2.NgControlStatus, i2$2.NgModel, i2.MatIcon, i3$1.MatButton, i12.MatCheckbox, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i11.MatDivider, i4.MatTooltip, LayerLegendComponent, i5$1.CollapseDirective, OgcFilterableFormComponent], [i1.AsyncPipe, i7.TranslatePipe]);
30389
+ i0.ɵɵsetComponentScope(OgcFilterableListComponent, [i1.NgForOf, i1.NgIf, i5$1.ListItemDirective, i5$1.ListComponent, OgcFilterableItemComponent], [i7.TranslatePipe, FilterableDataSourcePipe]);
30390
+ i0.ɵɵsetComponentScope(SpatialFilterTypeComponent, [i1.NgForOf, i9.MatOption, i2.MatIcon, i20.MatTabGroup, i20.MatTab, i18.MatButtonToggleGroup, i18.MatButtonToggle, i13.MatFormField, i13.MatLabel, i15.MatSelect, i4.MatTooltip, SpatialFilterListComponent], [i7.TranslatePipe]);
30391
+ i0.ɵɵsetComponentScope(SpatialFilterItemComponent, [i1.NgForOf, i1.NgIf, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NumberValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.NgForm, i2$2.FormControlDirective, i9.MatOption, i2.MatIcon, i3$1.MatButton, i17.MatRadioGroup, i17.MatRadioButton, i21.MatTable, i21.MatHeaderCellDef, i21.MatHeaderRowDef, i21.MatColumnDef, i21.MatRowDef, i21.MatHeaderCell, i21.MatHeaderRow, i21.MatRow, i22.MatNestedTreeNode, i22.MatTreeNodeDef, i22.MatTreeNodeToggle, i22.MatTree, i22.MatTreeNode, i22.MatTreeNodeOutlet, i12.MatCheckbox, i23.MatSlideToggle, i13.MatFormField, i13.MatLabel, i14.MatInput, i15.MatSelect, i4.MatTooltip, i5$1.EntityTableComponent, GeometryFormFieldInputComponent], [i1.AsyncPipe, i7.TranslatePipe]);
30392
+ i0.ɵɵsetComponentScope(OgcFilterTimeComponent, [i1.NgForOf, i1.NgIf, i2$2.NgControlStatus, i2$2.NgModel, i2$2.FormControlDirective, i9.MatOption, i2.MatIcon, i3$1.MatButton, i23.MatSlideToggle, i13.MatFormField, i13.MatLabel, i13.MatSuffix, i14.MatInput, i15.MatSelect, i4.MatTooltip, i25.MatDatepicker, i25.MatDatepickerInput, i25.MatDatepickerToggle, OgcFilterTimeSliderComponent], [i7.TranslatePipe]);
30229
30393
 
30230
30394
  function ExportButtonComponent_button_0_Template(rf, ctx) { if (rf & 1) {
30231
30395
  i0.ɵɵelementStart(0, "button", 1);
@@ -30273,7 +30437,7 @@ ExportButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Expor
30273
30437
  i0.ɵɵtemplate(0, ExportButtonComponent_button_0_Template, 3, 4, "button", 0);
30274
30438
  } if (rf & 2) {
30275
30439
  i0.ɵɵproperty("ngIf", ctx.layerIsExportable());
30276
- } }, dependencies: [i2.MatIcon, i4.MatTooltip, i1$1.NgIf, i3.MatButton, i7.TranslatePipe], changeDetection: 0 });
30440
+ } }, dependencies: [i2.MatIcon, i4.MatTooltip, i1.NgIf, i3$1.MatButton, i7.TranslatePipe], changeDetection: 0 });
30277
30441
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ExportButtonComponent, [{
30278
30442
  type: Component,
30279
30443
  args: [{ selector: 'igo-export-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngIf=\"layerIsExportable()\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.download.action' | translate\"\n [color]=\"color\">\n <!-- (click)=\"openDownload(layer)\"> -->\n <mat-icon svgIcon=\"file-export\"></mat-icon>\n</button>\n\n" }]
@@ -30367,14 +30531,14 @@ class ExportService {
30367
30531
  const exportOlFeatures = this.generateFeature(olFeatures, format);
30368
30532
  return this.exportAsync(exportOlFeatures, format, title, encoding, projectionIn, projectionOut);
30369
30533
  }
30370
- generateFeature(olFeatures, format) {
30534
+ generateFeature(olFeatures, format, excludePrefix = '_') {
30371
30535
  if (format === ExportFormat.GPX && this.aggregateInComment) {
30372
30536
  return this.generateAggregatedFeature(olFeatures);
30373
30537
  }
30374
30538
  return olFeatures.map((olFeature) => {
30375
30539
  const keys = olFeature
30376
30540
  .getKeys()
30377
- .filter((key) => !key.startsWith('_'));
30541
+ .filter((key) => !key.startsWith(excludePrefix));
30378
30542
  const properties = keys.reduce((acc, key) => {
30379
30543
  acc[key] = olFeature.get(key);
30380
30544
  return acc;
@@ -31001,14 +31165,14 @@ ImportService.allowedZipMimeTypes = [
31001
31165
  'application/x-zip'
31002
31166
  ];
31003
31167
  ImportService.allowedExtensions = ['geojson', 'kml', 'gpx', 'json', 'gml', 'zip'];
31004
- ImportService.ɵfac = function ImportService_Factory(t) { return new (t || ImportService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i2$1.ConfigService)); };
31168
+ ImportService.ɵfac = function ImportService_Factory(t) { return new (t || ImportService)(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(i2$1.ConfigService)); };
31005
31169
  ImportService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ImportService, factory: ImportService.ɵfac, providedIn: 'root' });
31006
31170
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ImportService, [{
31007
31171
  type: Injectable,
31008
31172
  args: [{
31009
31173
  providedIn: 'root'
31010
31174
  }]
31011
- }], function () { return [{ type: i1$2.HttpClient }, { type: i2$1.ConfigService }]; }, null); })();
31175
+ }], function () { return [{ type: i1$1.HttpClient }, { type: i2$1.ConfigService }]; }, null); })();
31012
31176
 
31013
31177
  class StyleListService {
31014
31178
  constructor(injector) {
@@ -31133,7 +31297,7 @@ function ImportExportComponent_form_8_Template(rf, ctx) { if (rf & 1) {
31133
31297
  i0.ɵɵadvance(2);
31134
31298
  i0.ɵɵstyleProp("display", "none");
31135
31299
  } }
31136
- const _c0$4 = function (a0) { return { size: a0 }; };
31300
+ const _c0$5 = function (a0) { return { size: a0 }; };
31137
31301
  function ImportExportComponent_section_9_div_1_Template(rf, ctx) { if (rf & 1) {
31138
31302
  i0.ɵɵelementStart(0, "div")(1, "h4");
31139
31303
  i0.ɵɵtext(2);
@@ -31156,7 +31320,7 @@ function ImportExportComponent_section_9_div_1_Template(rf, ctx) { if (rf & 1) {
31156
31320
  i0.ɵɵadvance(2);
31157
31321
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.importExportForm.importClarifications"));
31158
31322
  i0.ɵɵadvance(4);
31159
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(7, 6, "igo.geo.importExportForm.importSizeMax", i0.ɵɵpureFunction1(13, _c0$4, ctx_r17.fileSizeMb)));
31323
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(7, 6, "igo.geo.importExportForm.importSizeMax", i0.ɵɵpureFunction1(13, _c0$5, ctx_r17.fileSizeMb)));
31160
31324
  i0.ɵɵadvance(3);
31161
31325
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(10, 9, "igo.geo.importExportForm.importFormatAuthorized"));
31162
31326
  i0.ɵɵadvance(3);
@@ -32220,7 +32384,7 @@ ImportExportComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Impor
32220
32384
  i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(11, 13, ctx.exportableLayers$).length === 0 && ctx.selectedMode === "export");
32221
32385
  i0.ɵɵadvance(2);
32222
32386
  i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(13, 15, ctx.exportableLayers$).length > 0 && ctx.selectedMode === "export");
32223
- } }, dependencies: [i4.MatTooltip, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.FormGroupDirective, i2$2.FormControlName, i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i3.MatButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i13.MatFormField, i13.MatLabel, i15.MatSelect, i15.MatSelectTrigger, i9.MatOption, i14.MatInput, i23.MatSlideToggle, i5$1.SpinnerComponent, i5$1.CustomHtmlComponent, i1$1.AsyncPipe, i7.TranslatePipe, i5$1.KeyValuePipe], styles: ["mat-option.igo-export-layer-mat-option[_ngcontent-%COMP%]{height:5em;line-height:1em}.import-export-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.import-export-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%]{width:100%}.import-export-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] mat-button-toggle[_ngcontent-%COMP%]{width:50%}h4[_ngcontent-%COMP%]{padding:0 5px}.igo-form[_ngcontent-%COMP%]{padding:15px 5px}.igo-input-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center;padding-top:10px}igo-spinner[_ngcontent-%COMP%]{position:absolute;padding-left:10px}.export-options[_ngcontent-%COMP%], .export-combine-layers[_ngcontent-%COMP%], .export-separator[_ngcontent-%COMP%]{overflow-x:hidden}.export-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%], .export-combine-layers[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%], .export-separator[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.export-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content, .export-combine-layers[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content, .export-separator[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.export-select-trigger[_ngcontent-%COMP%]{opacity:.75;font-size:.75em}"] });
32387
+ } }, dependencies: [i4.MatTooltip, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.FormGroupDirective, i2$2.FormControlName, i1.NgClass, i1.NgForOf, i1.NgIf, i3$1.MatButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i13.MatFormField, i13.MatLabel, i15.MatSelect, i15.MatSelectTrigger, i9.MatOption, i14.MatInput, i23.MatSlideToggle, i5$1.SpinnerComponent, i5$1.CustomHtmlComponent, i1.AsyncPipe, i7.TranslatePipe, i5$1.KeyValuePipe], styles: ["mat-option.igo-export-layer-mat-option[_ngcontent-%COMP%]{height:5em;line-height:1em}.import-export-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.import-export-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%]{width:100%}.import-export-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] mat-button-toggle[_ngcontent-%COMP%]{width:50%}h4[_ngcontent-%COMP%]{padding:0 5px}.igo-form[_ngcontent-%COMP%]{padding:15px 5px}.igo-input-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center;padding-top:10px}igo-spinner[_ngcontent-%COMP%]{position:absolute;padding-left:10px}.export-options[_ngcontent-%COMP%], .export-combine-layers[_ngcontent-%COMP%], .export-separator[_ngcontent-%COMP%]{overflow-x:hidden}.export-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%], .export-combine-layers[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%], .export-separator[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.export-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content, .export-combine-layers[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content, .export-separator[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.export-select-trigger[_ngcontent-%COMP%]{opacity:.75;font-size:.75em}"] });
32224
32388
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ImportExportComponent, [{
32225
32389
  type: Component,
32226
32390
  args: [{ selector: 'igo-import-export', template: "<div class=\"import-export-toggle mat-typography\">\n <mat-button-toggle-group\n [value]=\"selectedMode\"\n (change)=\"onImportExportChange($event)\">\n <mat-button-toggle [value]=\"'import'\">\n {{'igo.geo.importExportForm.importTabTitle' | translate}}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"'export'\">\n {{'igo.geo.importExportForm.exportTabTitle' | translate}}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n\n<form class=\"igo-form\" [formGroup]=\"importForm\" *ngIf=\"selectedMode === 'import'\">\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{'igo.geo.importExportForm.importProjPlaceholder' | translate}}</mat-label>\n <mat-select\n [(value)]=\"inputProj\">\n <mat-option\n *ngFor=\"let projection of (projections$ | async)\"\n [value]=\"projection\"\n (click)=\"$event.stopPropagation()\">\n <p mat-line *ngIf=\"projection.translateKey\">{{('igo.geo.importExportForm.projections.' + projection.translateKey) | translate: projection}}</p>\n <p mat-line *ngIf=\"!projection.translateKey\">{{projection.alias}}</p>\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"importForm.invalid ? ('igo.geo.importExportForm.projections.choose' | translate) : ('igo.geo.importExportForm.importButton' | translate)\"\n class=\"igo-form-button-group\">\n <button\n [disabled]=\"importForm.invalid || (loading$ | async)\"\n mat-raised-button\n type=\"button\"\n (click)=\"fileInput.click()\">\n {{'igo.geo.importExportForm.importButton' | translate}}\n </button>\n <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\n <input\n hidden\n #fileInput\n type=\"file\"\n [style.display]=\"'none'\"\n (click)=\"fileInput.value = null\"\n (change)=\"importFiles($event.target.files)\">\n </div>\n</form>\n<section class=\"mat-typography\" *ngIf=\"selectedMode === 'import'\">\n <div *ngIf=\"importHtmlClarifications === ''\">\n <h4>{{'igo.geo.importExportForm.importClarifications' | translate}}</h4>\n <ul>\n <li>{{'igo.geo.importExportForm.importSizeMax' | translate: {size: fileSizeMb} }}</li>\n <li>{{'igo.geo.importExportForm.importFormatAuthorized' | translate}}</li>\n <li>{{'igo.geo.importExportForm.importShpZip' | translate}}</li>\n </ul>\n </div>\n <igo-custom-html *ngIf=\"importHtmlClarifications !== ''\" class=\"mat-typography\"\n [html]=\"importHtmlClarifications\">\n </igo-custom-html>\n</section>\n\n<section class=\"mat-typography\" *ngIf=\"(exportableLayers$ | async).length === 0 && selectedMode === 'export'\">\n <h4>{{'igo.geo.importExportForm.exportNoLayersExportable' | translate}}</h4>\n</section>\n\n<form class=\"igo-form\" [formGroup]=\"form\" *ngIf=\"(exportableLayers$ | async).length > 0 && selectedMode === 'export'\">\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{'igo.geo.importExportForm.exportLayerPlaceholder' | translate}}</mat-label>\n <mat-select\n [(value)]=\"layers\" multiple>\n <mat-select-trigger>\n {{layers.length ? getLayerTitleById(layers[0]) : ''}}\n <span *ngIf=\"layers.length > 1\" class=\"export-select-trigger\">\n (+{{layers.length - 1}} {{(layers?.length === 2 ? 'igo.geo.importExportForm.other' : 'igo.geo.importExportForm.others') | translate }})\n </span>\n </mat-select-trigger>\n <mat-option\n *ngFor=\"let layer of (exportableLayers$ | async)\"\n [ngClass]=\"{'igo-export-layer-mat-option': layerHasSelectedFeatures(layer)}\"\n [value]=\"layer.id\"\n (click)=\"$event.stopPropagation()\">\n <p mat-line>{{layer.title}}</p>\n <p mat-line>\n <mat-slide-toggle *ngIf=\"layerHasSelectedFeatures(layer)\"\n [labelPosition]=\"'after'\"\n (click)=\"onlySelectedClick($event,layer.id)\"\n (checked)=\"inLayersIdToExportSelectionOnly(layer)\"\n (change)=\"onlySelected($event,layer.id)\">\n <small>{{'igo.geo.importExportForm.exportSelectedFeature' | translate}}</small>\n </mat-slide-toggle>\n </p>\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{'igo.geo.importExportForm.exportFormatPlaceholder' | translate}}</mat-label>\n <mat-select\n formControlName=\"format\">\n <ng-container *ngIf=\"(formats$ | async).length !== 0\">\n <mat-option *ngFor=\"let format of (formats$ | async) | keyvalue\" [value]=\"format.key\">\n {{'igo.geo.export.format.' + format.value | translate}}\n </mat-option>\n </ng-container>\n <mat-option *ngIf=\"(formats$ | async).length === 0\" disabled=\"true\">\n {{'igo.geo.export.noFormat.title' | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" *ngIf=\"forceNaming && form.value.format !== 'URL'\">\n <mat-form-field>\n <input matInput formControlName=\"name\" placeholder=\"{{'igo.geo.importExportForm.exportFileNamePlaceholder' | translate}}\">\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" *ngIf=\"form.value.format === 'CSVcomma' || form.value.format === 'CSVsemicolon'\">\n <mat-form-field>\n <mat-label>{{'igo.geo.importExportForm.encodingPlaceholder' | translate}}</mat-label>\n <mat-select\n formControlName=\"encoding\">\n <ng-container *ngIf=\"(encodings$ | async).length !== 0\">\n <mat-option *ngFor=\"let encoding of (encodings$ | async) | keyvalue\" [value]=\"encoding.key\">\n {{'igo.geo.export.encoding.' + encoding.value | translate}}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"export-combine-layers mat-typography\" *ngIf=\"layers.length > 1 && (form.value.format === 'CSVcomma' || form.value.format === 'CSVsemicolon')\">\n <mat-slide-toggle\n formControlName=\"combineLayers\"\n [labelPosition]=\"'before'\">\n {{'igo.geo.importExportForm.exportCombineResults' | translate}}\n </mat-slide-toggle>\n </div>\n\n <div class=\"export-separator mat-typography\" *ngIf=\"layers.length > 1 && (form.value.format === 'CSVcomma' || form.value.format === 'CSVsemicolon') && form.value.combineLayers\">\n <mat-slide-toggle\n formControlName=\"separator\"\n [labelPosition]=\"'before'\">\n {{'igo.geo.importExportForm.exportSeparator' | translate}}\n </mat-slide-toggle>\n </div>\n\n <div class=\"export-options mat-typography\" *ngIf=\"form.value.format !== 'URL'\">\n <mat-slide-toggle\n formControlName=\"featureInMapExtent\"\n [labelPosition]=\"'before'\">\n {{'igo.geo.importExportForm.exportFeatureInExtent' | translate}}\n </mat-slide-toggle>\n </div>\n\n <div class=\"igo-form-button-group\">\n <button\n mat-raised-button\n type=\"button\"\n [disabled]=\"!form.valid || (loading$ | async)\"\n (click)=\"handleExportFormSubmit(form.value)\">\n {{form.value.format !== 'URL' ? ('igo.geo.importExportForm.exportButton' | translate): (form.value.layers.length > 1 ? ('igo.geo.importExportForm.exportButtonLinks' | translate): ('igo.geo.importExportForm.exportButtonLink' | translate))}}\n </button>\n <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\n </div>\n\n <igo-custom-html *ngIf=\"exportHtmlClarifications !== ''\" class=\"mat-typography\"\n [html]=\"exportHtmlClarifications\">\n </igo-custom-html>\n\n</form>\n", styles: ["mat-option.igo-export-layer-mat-option{height:5em;line-height:1em}.import-export-toggle{padding:10px;text-align:center}.import-export-toggle mat-button-toggle-group{width:100%}.import-export-toggle mat-button-toggle-group mat-button-toggle{width:50%}h4{padding:0 5px}.igo-form{padding:15px 5px}.igo-input-container mat-form-field{width:100%}.igo-form-button-group{text-align:center;padding-top:10px}igo-spinner{position:absolute;padding-left:10px}.export-options,.export-combine-layers,.export-separator{overflow-x:hidden}.export-options mat-slide-toggle,.export-combine-layers mat-slide-toggle,.export-separator mat-slide-toggle{width:100%;margin:10px}.export-options mat-slide-toggle ::ng-deep .mat-slide-toggle-content,.export-combine-layers mat-slide-toggle ::ng-deep .mat-slide-toggle-content,.export-separator mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.export-select-trigger{opacity:.75;font-size:.75em}\n"] }]
@@ -32575,8 +32739,8 @@ IgoMapModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModul
32575
32739
  SwipeControlComponent,
32576
32740
  MapCenterComponent,
32577
32741
  MenuButtonComponent] }); })();
32578
- i0.ɵɵsetComponentScope(BaseLayersSwitcherComponent, [i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, MiniBaseMapComponent], [i7.TranslatePipe]);
32579
- i0.ɵɵsetComponentScope(MiniBaseMapComponent, [i1$1.NgIf, MapBrowserComponent], []);
32742
+ i0.ɵɵsetComponentScope(BaseLayersSwitcherComponent, [i1.NgClass, i1.NgForOf, i1.NgIf, i2.MatIcon, i3$1.MatButton, i4.MatTooltip, MiniBaseMapComponent], [i7.TranslatePipe]);
32743
+ i0.ɵɵsetComponentScope(MiniBaseMapComponent, [i1.NgIf, MapBrowserComponent], []);
32580
32744
 
32581
32745
  function MeasurerItemComponent_mat_option_8_Template(rf, ctx) { if (rf & 1) {
32582
32746
  i0.ɵɵelementStart(0, "mat-option", 5);
@@ -32688,7 +32852,7 @@ MeasurerItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Measu
32688
32852
  i0.ɵɵproperty("value", ctx.measureUnit)("disabled", ctx.auto);
32689
32853
  i0.ɵɵadvance(1);
32690
32854
  i0.ɵɵproperty("ngForOf", ctx.measureUnits);
32691
- } }, dependencies: [i1$1.NgForOf, i13.MatFormField, i13.MatLabel, i14.MatInput, i15.MatSelect, i9.MatOption, i1$1.AsyncPipe, i7.TranslatePipe, MeasureFormatPipe], styles: ["[_nghost-%COMP%]{display:flex;width:100%;padding:5px 10px}.measure-field[_ngcontent-%COMP%]{pointer-events:none;display:flex;flex-flow:column nowrap;width:100%}.unit-field[_ngcontent-%COMP%]{width:50px;margin-left:10px;margin-top:10px}"], changeDetection: 0 });
32855
+ } }, dependencies: [i1.NgForOf, i13.MatFormField, i13.MatLabel, i14.MatInput, i15.MatSelect, i9.MatOption, i1.AsyncPipe, i7.TranslatePipe, MeasureFormatPipe], styles: ["[_nghost-%COMP%]{display:flex;width:100%;padding:5px 10px}.measure-field[_ngcontent-%COMP%]{pointer-events:none;display:flex;flex-flow:column nowrap;width:100%}.unit-field[_ngcontent-%COMP%]{width:50px;margin-left:10px;margin-top:10px}"], changeDetection: 0 });
32692
32856
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MeasurerItemComponent, [{
32693
32857
  type: Component,
32694
32858
  args: [{ selector: 'igo-measurer-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field\n class=\"measure-field\"\n appearance=\"outline\"\n floatLabel=\"always\">\n <mat-label>{{placeholder}}</mat-label>\n <input\n matInput\n [readonly]=\"true\"\n [value]=\"((measure$ | async) || 0) | measureFormat: measureUnit\">\n</mat-form-field>\n<mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"measureUnit\"\n [disabled]=\"auto\"\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\n {{('igo.geo.measure.' + measureUnit) | translate}}\n </mat-option>\n </mat-select>\n</mat-form-field>\n", styles: [":host{display:flex;width:100%;padding:5px 10px}.measure-field{pointer-events:none;display:flex;flex-flow:column nowrap;width:100%}.unit-field{width:50px;margin-left:10px;margin-top:10px}\n"] }]
@@ -32770,8 +32934,8 @@ IgoMeasurerModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [Common
32770
32934
  IgoLanguageModule,
32771
32935
  IgoEntityTableModule], exports: [MeasureFormatPipe,
32772
32936
  MeasurerComponent] }); })();
32773
- i0.ɵɵsetComponentScope(MeasurerComponent, [i1$1.NgIf, i3.MatButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i2.MatIcon, i4.MatTooltip, i23.MatSlideToggle, i11.MatDivider, i5$1.EntityTableComponent, MeasurerItemComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
32774
- i0.ɵɵsetComponentScope(MeasurerDialogComponent, [i1$1.NgIf], [i7.TranslatePipe, MeasureFormatPipe]);
32937
+ i0.ɵɵsetComponentScope(MeasurerComponent, [i1.NgIf, i3$1.MatButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i2.MatIcon, i4.MatTooltip, i23.MatSlideToggle, i11.MatDivider, i5$1.EntityTableComponent, MeasurerItemComponent], [i1.AsyncPipe, i7.TranslatePipe]);
32938
+ i0.ɵɵsetComponentScope(MeasurerDialogComponent, [i1.NgIf], [i7.TranslatePipe, MeasureFormatPipe]);
32775
32939
 
32776
32940
  class IgoMeasureModule {
32777
32941
  }
@@ -33435,12 +33599,12 @@ class PrintService {
33435
33599
  * @param doZipFile - Indicate if we do a zip with the file
33436
33600
  * @return Image file of the map with extension format given as parameter
33437
33601
  */
33438
- downloadMapImage(map, resolution, format = 'png', projection = false, scale = false, legend = false, title = '', subtitle = '', comment = '', doZipFile = true) {
33602
+ downloadMapImage(map, resolution, format = 'png', projection = false, scale = false, title = '', subtitle = '', comment = '', doZipFile = true, legendPosition) {
33439
33603
  const status$ = new Subject();
33440
33604
  // const resolution = map.ol.getView().getResolution();
33441
33605
  this.activityId = this.activityService.register();
33442
33606
  const translate = this.languageService.translate;
33443
- map.ol.once('rendercomplete', (event) => {
33607
+ map.ol.once('rendercomplete', async (event) => {
33444
33608
  format = format.toLowerCase();
33445
33609
  const oldCanvas = event.target
33446
33610
  .getViewport()
@@ -33449,8 +33613,6 @@ class PrintService {
33449
33613
  const newContext = newCanvas.getContext('2d');
33450
33614
  // Postion in height to set the canvas in new canvas
33451
33615
  let positionHCanvas = 0;
33452
- // Position in width to set the Proj/Scale in new canvas
33453
- let positionWProjScale = 10;
33454
33616
  // Get height/width of map canvas
33455
33617
  const width = oldCanvas.width;
33456
33618
  let height = oldCanvas.height;
@@ -33472,11 +33634,19 @@ class PrintService {
33472
33634
  // Set the new canvas with the new calculated size
33473
33635
  newCanvas.width = width;
33474
33636
  newCanvas.height = height;
33475
- // Patch Jpeg default black background to white
33476
- if (format === 'jpeg') {
33477
- newContext.fillStyle = '#ffffff';
33478
- newContext.fillRect(0, 0, width, height);
33479
- newContext.fillStyle = '#000000';
33637
+ if (['bmp', 'gif', 'jpeg', 'png', 'tiff'].indexOf(format) > -1) {
33638
+ // Patch Jpeg default black background to white
33639
+ if (format === 'jpeg') {
33640
+ newContext.fillStyle = '#ffffff';
33641
+ newContext.fillRect(0, 0, width, height);
33642
+ newContext.fillStyle = '#000000';
33643
+ }
33644
+ else if (title !== '' || subtitle !== '' || comment !== '' ||
33645
+ projection !== false || scale !== false) {
33646
+ newContext.fillStyle = '#ffffff';
33647
+ newContext.fillRect(0, 0, width, height);
33648
+ newContext.fillStyle = '#000000';
33649
+ }
33480
33650
  }
33481
33651
  // If a title need to be added to canvas
33482
33652
  if (title !== '') {
@@ -33497,19 +33667,20 @@ class PrintService {
33497
33667
  }
33498
33668
  // Set font for next section
33499
33669
  newContext.font = '20px Calibri';
33500
- // If projection need to be added to canvas
33501
- if (projection !== false) {
33502
- const projText = translate.instant('igo.geo.printForm.projection');
33503
- newContext.textAlign = 'start';
33504
- newContext.fillText(projText + ': ' + map.projection, positionWProjScale, positionHProjScale);
33505
- positionWProjScale += 200; // Width position change for scale position
33506
- }
33507
- // If scale need to be added to canvas
33508
- if (scale !== false) {
33509
- const scaleText = translate.instant('igo.geo.printForm.scale');
33510
- const mapScale = map.viewController.getScale(resolution);
33511
- newContext.textAlign = 'start';
33512
- newContext.fillText(scaleText + ': ~ 1 / ' + formatScale(mapScale), positionWProjScale, positionHProjScale);
33670
+ // If projection or/end scale need to be added to canvas
33671
+ if ((projection !== false) || (scale !== false)) {
33672
+ let projectionScaleText = '';
33673
+ if (projection !== false) {
33674
+ const projText = translate.instant('igo.geo.printForm.projection');
33675
+ projectionScaleText = projText + ': ' + map.projection + ' ';
33676
+ }
33677
+ if (scale !== false) {
33678
+ const scaleText = translate.instant('igo.geo.printForm.scale');
33679
+ const mapScale = map.viewController.getScale(resolution);
33680
+ projectionScaleText += scaleText + ': ~ 1 / ' + formatScale(mapScale);
33681
+ }
33682
+ newContext.textAlign = 'center';
33683
+ newContext.fillText(projectionScaleText, width / 2, positionHProjScale, width * 0.9);
33513
33684
  }
33514
33685
  // If a comment need to be added to canvas
33515
33686
  if (comment !== '') {
@@ -33547,6 +33718,12 @@ class PrintService {
33547
33718
  }
33548
33719
  // Add map to new canvas
33549
33720
  newContext.drawImage(oldCanvas, 0, positionHCanvas);
33721
+ // Check the legendPosition
33722
+ if (legendPosition !== 'none') {
33723
+ if (['topleft', 'topright', 'bottomleft', 'bottomright'].indexOf(legendPosition) > -1) {
33724
+ await this.addLegendToImage(newCanvas, map, resolution, legendPosition, format);
33725
+ }
33726
+ }
33550
33727
  let status = SubjectStatus.Done;
33551
33728
  let fileNameWithExt = 'map.' + format;
33552
33729
  if (format.toLowerCase() === 'tiff') {
@@ -33590,6 +33767,66 @@ class PrintService {
33590
33767
  map.ol.renderSync();
33591
33768
  return status$;
33592
33769
  }
33770
+ /**
33771
+ * Create and Add Legend to the map canvas
33772
+ * @param canvas Canvas of the map
33773
+ * @param map Map of the app
33774
+ * @param resolution Resolution of map
33775
+ * @param legendPosition Legend position
33776
+ * @param format Image format
33777
+ */
33778
+ async addLegendToImage(canvas, map, resolution, legendPosition, format) {
33779
+ const fileNameWithExt = 'map.' + format;
33780
+ const context = canvas.getContext('2d');
33781
+ // Get html code for the legend
33782
+ const html = await this.getLayersLegendHtml(map, canvas.width, resolution).toPromise();
33783
+ // If no legend, save the map directly
33784
+ if (html === '') {
33785
+ await this.saveCanvasImageAsFile(canvas, fileNameWithExt, format);
33786
+ return true;
33787
+ }
33788
+ // Create div to contain html code for legend
33789
+ const div = window.document.createElement('div');
33790
+ div.style.position = 'absolute';
33791
+ div.style.top = '0';
33792
+ // Add html code to convert in the new window
33793
+ window.document.body.appendChild(div);
33794
+ div.innerHTML = html;
33795
+ await this.timeout(1);
33796
+ const canvasLegend = await html2canvas(div, { useCORS: true }).catch((e) => {
33797
+ console.log(e);
33798
+ });
33799
+ if (canvasLegend) {
33800
+ const canvasHeight = canvas.height;
33801
+ const canvasWidth = canvas.width;
33802
+ const legendHeight = canvasLegend.height;
33803
+ const legendWidth = canvasLegend.width;
33804
+ // Move the legend to the correct position on the page
33805
+ const offset = canvasHeight * 0.01;
33806
+ let legendX;
33807
+ let legendY;
33808
+ if (legendPosition === 'bottomright') {
33809
+ legendX = canvasWidth - legendWidth - offset;
33810
+ legendY = canvasHeight - legendHeight - offset;
33811
+ }
33812
+ else if (legendPosition === 'topright') {
33813
+ legendX = canvasWidth - legendWidth - offset;
33814
+ legendY = offset;
33815
+ }
33816
+ else if (legendPosition === 'bottomleft') {
33817
+ legendX = offset;
33818
+ legendY = canvasHeight - legendHeight - offset;
33819
+ }
33820
+ else if (legendPosition === 'topleft') {
33821
+ legendX = offset;
33822
+ legendY = offset;
33823
+ }
33824
+ context.drawImage(canvasLegend, legendX, legendY, legendWidth, legendHeight);
33825
+ context.strokeRect(legendX, legendY, legendWidth, legendHeight);
33826
+ div.parentNode.removeChild(div); // remove temp div (IE style)
33827
+ return true;
33828
+ }
33829
+ }
33593
33830
  renderMap(map, size, extent) {
33594
33831
  map.ol.updateSize();
33595
33832
  map.ol.renderSync();
@@ -33764,14 +34001,14 @@ class PrintService {
33764
34001
  return n * k;
33765
34002
  }
33766
34003
  }
33767
- PrintService.ɵfac = function PrintService_Factory(t) { return new (t || PrintService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i2$1.MessageService), i0.ɵɵinject(i2$1.ActivityService), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.ConfigService)); };
34004
+ PrintService.ɵfac = function PrintService_Factory(t) { return new (t || PrintService)(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(i2$1.MessageService), i0.ɵɵinject(i2$1.ActivityService), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.ConfigService)); };
33768
34005
  PrintService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PrintService, factory: PrintService.ɵfac, providedIn: 'root' });
33769
34006
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrintService, [{
33770
34007
  type: Injectable,
33771
34008
  args: [{
33772
34009
  providedIn: 'root'
33773
34010
  }]
33774
- }], function () { return [{ type: i1$2.HttpClient }, { type: i2$1.MessageService }, { type: i2$1.ActivityService }, { type: i2$1.LanguageService }, { type: i2$1.ConfigService }]; }, null); })();
34011
+ }], function () { return [{ type: i1$1.HttpClient }, { type: i2$1.MessageService }, { type: i2$1.ActivityService }, { type: i2$1.LanguageService }, { type: i2$1.ConfigService }]; }, null); })();
33775
34012
 
33776
34013
  const PrintOutputFormat = strEnum(['Pdf', 'Image']);
33777
34014
  const PrintPaperFormat = strEnum([
@@ -33802,26 +34039,49 @@ const PrintLegendPosition = strEnum([
33802
34039
  'newpage'
33803
34040
  ]);
33804
34041
 
33805
- function PrintFormComponent_mat_option_28_Template(rf, ctx) { if (rf & 1) {
33806
- i0.ɵɵelementStart(0, "mat-option", 19);
34042
+ function PrintFormComponent_mat_option_28_ng_container_1_Template(rf, ctx) { if (rf & 1) {
34043
+ i0.ɵɵelementContainerStart(0);
33807
34044
  i0.ɵɵtext(1);
33808
34045
  i0.ɵɵpipe(2, "translate");
34046
+ i0.ɵɵelementContainerEnd();
34047
+ } if (rf & 2) {
34048
+ const legendPosition_r6 = i0.ɵɵnextContext().$implicit;
34049
+ i0.ɵɵadvance(1);
34050
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "igo.geo.printForm.legendPositions." + legendPosition_r6.value), " ");
34051
+ } }
34052
+ function PrintFormComponent_mat_option_28_ng_container_2_Template(rf, ctx) { if (rf & 1) {
34053
+ i0.ɵɵelementContainerStart(0);
34054
+ i0.ɵɵtext(1);
34055
+ i0.ɵɵpipe(2, "translate");
34056
+ i0.ɵɵelementContainerEnd();
34057
+ } if (rf & 2) {
34058
+ const ctx_r8 = i0.ɵɵnextContext(2);
34059
+ i0.ɵɵadvance(1);
34060
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, ctx_r8.outputFormat === "Pdf" ? "igo.geo.printForm.legendPositions.newpage" : "igo.geo.printForm.legendPositions.newimage"), " ");
34061
+ } }
34062
+ const _c0$4 = function () { return ["newpage", "newimage"]; };
34063
+ function PrintFormComponent_mat_option_28_Template(rf, ctx) { if (rf & 1) {
34064
+ i0.ɵɵelementStart(0, "mat-option", 19);
34065
+ i0.ɵɵtemplate(1, PrintFormComponent_mat_option_28_ng_container_1_Template, 3, 3, "ng-container", 20);
34066
+ i0.ɵɵtemplate(2, PrintFormComponent_mat_option_28_ng_container_2_Template, 3, 3, "ng-container", 20);
33809
34067
  i0.ɵɵelementEnd();
33810
34068
  } if (rf & 2) {
33811
34069
  const legendPosition_r6 = ctx.$implicit;
33812
34070
  i0.ɵɵproperty("value", legendPosition_r6.key);
33813
34071
  i0.ɵɵadvance(1);
33814
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.printForm.legendPositions." + legendPosition_r6.value), " ");
34072
+ i0.ɵɵproperty("ngIf", !i0.ɵɵpureFunction0(3, _c0$4).includes(legendPosition_r6.value));
34073
+ i0.ɵɵadvance(1);
34074
+ i0.ɵɵproperty("ngIf", i0.ɵɵpureFunction0(4, _c0$4).includes(legendPosition_r6.value));
33815
34075
  } }
33816
34076
  function PrintFormComponent_mat_option_34_Template(rf, ctx) { if (rf & 1) {
33817
34077
  i0.ɵɵelementStart(0, "mat-option", 19);
33818
34078
  i0.ɵɵtext(1);
33819
34079
  i0.ɵɵelementEnd();
33820
34080
  } if (rf & 2) {
33821
- const outputFormat_r7 = ctx.$implicit;
33822
- i0.ɵɵproperty("value", outputFormat_r7.key);
34081
+ const outputFormat_r10 = ctx.$implicit;
34082
+ i0.ɵɵproperty("value", outputFormat_r10.key);
33823
34083
  i0.ɵɵadvance(1);
33824
- i0.ɵɵtextInterpolate1(" ", outputFormat_r7.value, " ");
34084
+ i0.ɵɵtextInterpolate1(" ", outputFormat_r10.value, " ");
33825
34085
  } }
33826
34086
  function PrintFormComponent_mat_option_40_Template(rf, ctx) { if (rf & 1) {
33827
34087
  i0.ɵɵelementStart(0, "mat-option", 19);
@@ -33829,30 +34089,30 @@ function PrintFormComponent_mat_option_40_Template(rf, ctx) { if (rf & 1) {
33829
34089
  i0.ɵɵpipe(2, "translate");
33830
34090
  i0.ɵɵelementEnd();
33831
34091
  } if (rf & 2) {
33832
- const paperFormat_r8 = ctx.$implicit;
33833
- i0.ɵɵproperty("value", paperFormat_r8.key);
34092
+ const paperFormat_r11 = ctx.$implicit;
34093
+ i0.ɵɵproperty("value", paperFormat_r11.key);
33834
34094
  i0.ɵɵadvance(1);
33835
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.printForm.paperFormats." + paperFormat_r8.value), " ");
34095
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.printForm.paperFormats." + paperFormat_r11.value), " ");
33836
34096
  } }
33837
34097
  function PrintFormComponent_mat_option_46_Template(rf, ctx) { if (rf & 1) {
33838
34098
  i0.ɵɵelementStart(0, "mat-option", 19);
33839
34099
  i0.ɵɵtext(1);
33840
34100
  i0.ɵɵelementEnd();
33841
34101
  } if (rf & 2) {
33842
- const imageFormat_r9 = ctx.$implicit;
33843
- i0.ɵɵproperty("value", imageFormat_r9.key);
34102
+ const imageFormat_r12 = ctx.$implicit;
34103
+ i0.ɵɵproperty("value", imageFormat_r12.key);
33844
34104
  i0.ɵɵadvance(1);
33845
- i0.ɵɵtextInterpolate1(" ", imageFormat_r9.value, " ");
34105
+ i0.ɵɵtextInterpolate1(" ", imageFormat_r12.value, " ");
33846
34106
  } }
33847
34107
  function PrintFormComponent_mat_option_52_Template(rf, ctx) { if (rf & 1) {
33848
34108
  i0.ɵɵelementStart(0, "mat-option", 19);
33849
34109
  i0.ɵɵtext(1);
33850
34110
  i0.ɵɵelementEnd();
33851
34111
  } if (rf & 2) {
33852
- const resolution_r10 = ctx.$implicit;
33853
- i0.ɵɵproperty("value", resolution_r10.key);
34112
+ const resolution_r13 = ctx.$implicit;
34113
+ i0.ɵɵproperty("value", resolution_r13.key);
33854
34114
  i0.ɵɵadvance(1);
33855
- i0.ɵɵtextInterpolate1(" ", resolution_r10.value + " PPI", " ");
34115
+ i0.ɵɵtextInterpolate1(" ", resolution_r13.value + " PPI", " ");
33856
34116
  } }
33857
34117
  function PrintFormComponent_mat_option_58_Template(rf, ctx) { if (rf & 1) {
33858
34118
  i0.ɵɵelementStart(0, "mat-option", 19);
@@ -33860,10 +34120,10 @@ function PrintFormComponent_mat_option_58_Template(rf, ctx) { if (rf & 1) {
33860
34120
  i0.ɵɵpipe(2, "translate");
33861
34121
  i0.ɵɵelementEnd();
33862
34122
  } if (rf & 2) {
33863
- const orientation_r11 = ctx.$implicit;
33864
- i0.ɵɵproperty("value", orientation_r11.key);
34123
+ const orientation_r14 = ctx.$implicit;
34124
+ i0.ɵɵproperty("value", orientation_r14.key);
33865
34125
  i0.ɵɵadvance(1);
33866
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.printForm." + orientation_r11.value), " ");
34126
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.printForm." + orientation_r14.value), " ");
33867
34127
  } }
33868
34128
  class PrintFormComponent {
33869
34129
  constructor(formBuilder) {
@@ -34040,7 +34300,7 @@ class PrintFormComponent {
34040
34300
  }
34041
34301
  }
34042
34302
  PrintFormComponent.ɵfac = function PrintFormComponent_Factory(t) { return new (t || PrintFormComponent)(i0.ɵɵdirectiveInject(i2$2.UntypedFormBuilder)); };
34043
- PrintFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrintFormComponent, selectors: [["igo-print-form"]], inputs: { disabled$: "disabled$", imageFormat: "imageFormat", outputFormat: "outputFormat", paperFormat: "paperFormat", orientation: "orientation", resolution: "resolution", legendPosition: "legendPosition", title: "title", subtitle: "subtitle", comment: "comment", showProjection: "showProjection", showScale: "showScale", showLegend: "showLegend", doZipFile: "doZipFile" }, outputs: { submit: "submit" }, decls: 65, vars: 72, consts: [[1, "igo-form", 3, "formGroup"], [1, "igo-input-container"], ["matInput", "", "formControlName", "title", 3, "placeholder"], ["matInput", "", "formControlName", "subtitle", 3, "placeholder"], ["matInput", "", "formControlName", "comment", 3, "placeholder"], [1, "print-slide-toggle-container", "mat-typography"], ["formControlName", "showProjection", 1, "print-option", 3, "labelPosition"], ["formControlName", "showScale", 1, "print-option", 3, "labelPosition"], ["formControlName", "doZipFile", 1, "print-option", 3, "labelPosition"], ["formControlName", "legendPosition", 3, "placeholder"], [3, "value", 4, "ngFor", "ngForOf"], ["formControlName", "outputFormat", 3, "placeholder", "selectionChange"], ["formControlName", "paperFormat", 3, "placeholder"], ["formControlName", "imageFormat", 3, "placeholder"], [1, "igo-input-container", 2, "display", "none"], ["formControlName", "resolution", 3, "placeholder"], ["formControlName", "orientation", 3, "placeholder"], [1, "igo-form-button-group", "print-button-top-padding"], ["mat-raised-button", "", "type", "button", 3, "disabled", "click"], [3, "value"]], template: function PrintFormComponent_Template(rf, ctx) { if (rf & 1) {
34303
+ PrintFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrintFormComponent, selectors: [["igo-print-form"]], inputs: { disabled$: "disabled$", imageFormat: "imageFormat", outputFormat: "outputFormat", paperFormat: "paperFormat", orientation: "orientation", resolution: "resolution", legendPosition: "legendPosition", title: "title", subtitle: "subtitle", comment: "comment", showProjection: "showProjection", showScale: "showScale", showLegend: "showLegend", doZipFile: "doZipFile" }, outputs: { submit: "submit" }, decls: 65, vars: 72, consts: [[1, "igo-form", 3, "formGroup"], [1, "igo-input-container"], ["matInput", "", "formControlName", "title", 3, "placeholder"], ["matInput", "", "formControlName", "subtitle", 3, "placeholder"], ["matInput", "", "formControlName", "comment", 3, "placeholder"], [1, "print-slide-toggle-container", "mat-typography"], ["formControlName", "showProjection", 1, "print-option", 3, "labelPosition"], ["formControlName", "showScale", 1, "print-option", 3, "labelPosition"], ["formControlName", "doZipFile", 1, "print-option", 3, "labelPosition"], ["formControlName", "legendPosition", 3, "placeholder"], [3, "value", 4, "ngFor", "ngForOf"], ["formControlName", "outputFormat", 3, "placeholder", "selectionChange"], ["formControlName", "paperFormat", 3, "placeholder"], ["formControlName", "imageFormat", 3, "placeholder"], [1, "igo-input-container", 2, "display", "none"], ["formControlName", "resolution", 3, "placeholder"], ["formControlName", "orientation", 3, "placeholder"], [1, "igo-form-button-group", "print-button-top-padding"], ["mat-raised-button", "", "type", "button", 3, "disabled", "click"], [3, "value"], [4, "ngIf"]], template: function PrintFormComponent_Template(rf, ctx) { if (rf & 1) {
34044
34304
  i0.ɵɵelementStart(0, "form", 0)(1, "div", 1)(2, "mat-form-field");
34045
34305
  i0.ɵɵelement(3, "input", 2);
34046
34306
  i0.ɵɵpipe(4, "translate");
@@ -34067,7 +34327,7 @@ PrintFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrintFor
34067
34327
  i0.ɵɵelementEnd()()();
34068
34328
  i0.ɵɵelementStart(24, "div", 1)(25, "mat-form-field")(26, "mat-select", 9);
34069
34329
  i0.ɵɵpipe(27, "translate");
34070
- i0.ɵɵtemplate(28, PrintFormComponent_mat_option_28_Template, 3, 4, "mat-option", 10);
34330
+ i0.ɵɵtemplate(28, PrintFormComponent_mat_option_28_Template, 3, 5, "mat-option", 10);
34071
34331
  i0.ɵɵpipe(29, "keyvalue");
34072
34332
  i0.ɵɵelementEnd()()();
34073
34333
  i0.ɵɵelementStart(30, "div", 1)(31, "mat-form-field")(32, "mat-select", 11);
@@ -34157,10 +34417,10 @@ PrintFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrintFor
34157
34417
  i0.ɵɵproperty("disabled", !ctx.form.valid || i0.ɵɵpipeBind1(62, 68, ctx.disabled$));
34158
34418
  i0.ɵɵadvance(2);
34159
34419
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(64, 70, "igo.geo.printForm.saveBtn"), " ");
34160
- } }, dependencies: [i1$1.NgForOf, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.FormGroupDirective, i2$2.FormControlName, i3.MatButton, i13.MatFormField, i15.MatSelect, i9.MatOption, i14.MatInput, i23.MatSlideToggle, i1$1.AsyncPipe, i7.TranslatePipe, i5$1.KeyValuePipe], styles: ["mat-form-field[_ngcontent-%COMP%]{width:100%}.print-slide-toggle-container[_ngcontent-%COMP%]{overflow-x:hidden}.print-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.print-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.print-option[_ngcontent-%COMP%]{display:block;margin-right:10px;margin-bottom:15px}.print-button-top-padding[_ngcontent-%COMP%]{padding-top:25px}.igo-form[_ngcontent-%COMP%]{padding:10px 5px 5px}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center}"] });
34420
+ } }, dependencies: [i1.NgForOf, i1.NgIf, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.FormGroupDirective, i2$2.FormControlName, i3$1.MatButton, i13.MatFormField, i15.MatSelect, i9.MatOption, i14.MatInput, i23.MatSlideToggle, i1.AsyncPipe, i7.TranslatePipe, i5$1.KeyValuePipe], styles: ["mat-form-field[_ngcontent-%COMP%]{width:100%}.print-slide-toggle-container[_ngcontent-%COMP%]{overflow-x:hidden}.print-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.print-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.print-option[_ngcontent-%COMP%]{display:block;margin-right:10px;margin-bottom:15px}.print-button-top-padding[_ngcontent-%COMP%]{padding-top:25px}.igo-form[_ngcontent-%COMP%]{padding:10px 5px 5px}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center}"] });
34161
34421
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrintFormComponent, [{
34162
34422
  type: Component,
34163
- args: [{ selector: 'igo-print-form', template: "<form class=\"igo-form\" [formGroup]=\"form\">\n <div class=\"igo-input-container\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"title\"\n placeholder=\"{{'igo.geo.printForm.title' | translate}}\">\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"subtitle\"\n placeholder=\"{{'igo.geo.printForm.subtitle' | translate}}\">\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"comment\"\n placeholder=\"{{'igo.geo.printForm.comment' | translate}}\">\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <div class=\"print-slide-toggle-container mat-typography\">\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"showProjection\"\n [labelPosition]=\"'before'\">\n {{'igo.geo.printForm.showProjection' | translate}}\n </mat-slide-toggle>\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"showScale\"\n [labelPosition]=\"'before'\">\n {{'igo.geo.printForm.showScale' | translate}}\n </mat-slide-toggle>\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"doZipFile\"\n [labelPosition]=\"'before'\"\n [style.display]=\"isPrintService ? 'none' : ''\">\n {{'igo.geo.printForm.doZipFile' | translate}}\n </mat-slide-toggle>\n </div>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-select\n formControlName=\"legendPosition\"\n placeholder=\"{{'igo.geo.printForm.legendPosition' | translate}}\">\n <mat-option *ngFor=\"let legendPosition of legendPositions | keyvalue \" [value]=\"legendPosition.key\">\n {{'igo.geo.printForm.legendPositions.' + legendPosition.value | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-select (selectionChange)=\"toggleImageSaveProp()\"\n formControlName=\"outputFormat\"\n placeholder=\"{{'igo.geo.printForm.outputFormat' | translate}}\">\n <mat-option *ngFor=\"let outputFormat of outputFormats | keyvalue \" [value]=\"outputFormat.key\">\n {{outputFormat.value}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" [style.display]=\"isPrintService ? 'block' : 'none'\">\n <mat-form-field>\n <mat-select\n formControlName=\"paperFormat\"\n placeholder=\"{{'igo.geo.printForm.paperFormat' | translate}}\">\n <mat-option *ngFor=\"let paperFormat of paperFormats | keyvalue \" [value]=\"paperFormat.key\">\n {{('igo.geo.printForm.paperFormats.' + paperFormat.value) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" [style.display]=\"isPrintService ? 'none' : 'block'\">\n <mat-form-field>\n <mat-select\n formControlName=\"imageFormat\"\n placeholder=\"{{'igo.geo.printForm.imageFormat' | translate}}\">\n <mat-option *ngFor=\"let imageFormat of imageFormats | keyvalue \" [value]=\"imageFormat.key\">\n {{imageFormat.value}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" style=\"display: none;\">\n <mat-form-field>\n <mat-select\n formControlName=\"resolution\"\n placeholder=\"{{'igo.geo.printForm.resolution' | translate}}\">\n <mat-option *ngFor=\"let resolution of resolutions | keyvalue \" [value]=\"resolution.key\">\n {{resolution.value + ' PPI'}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" [style.display]=\"isPrintService ? 'block' : 'none'\">\n <mat-form-field>\n <mat-select\n formControlName=\"orientation\"\n placeholder=\"{{'igo.geo.printForm.orientation' | translate}}\">\n <mat-option *ngFor=\"let orientation of orientations | keyvalue \" [value]=\"orientation.key\">\n {{('igo.geo.printForm.' + orientation.value) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-form-button-group print-button-top-padding\">\n <button\n mat-raised-button\n type=\"button\"\n [disabled]=\"!form.valid || (disabled$ | async)\"\n (click)=\"handleFormSubmit(form.value, form.valid)\">\n {{'igo.geo.printForm.saveBtn' | translate}}\n </button>\n </div>\n\n</form>\n", styles: ["mat-form-field{width:100%}.print-slide-toggle-container{overflow-x:hidden}.print-slide-toggle-container mat-slide-toggle{width:100%;margin:10px}.print-slide-toggle-container mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.print-option{display:block;margin-right:10px;margin-bottom:15px}.print-button-top-padding{padding-top:25px}.igo-form{padding:10px 5px 5px}.igo-form-button-group{text-align:center}\n"] }]
34423
+ args: [{ selector: 'igo-print-form', template: "<form class=\"igo-form\" [formGroup]=\"form\">\n <div class=\"igo-input-container\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"title\"\n placeholder=\"{{'igo.geo.printForm.title' | translate}}\">\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"subtitle\"\n placeholder=\"{{'igo.geo.printForm.subtitle' | translate}}\">\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"comment\"\n placeholder=\"{{'igo.geo.printForm.comment' | translate}}\">\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <div class=\"print-slide-toggle-container mat-typography\">\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"showProjection\"\n [labelPosition]=\"'before'\">\n {{'igo.geo.printForm.showProjection' | translate}}\n </mat-slide-toggle>\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"showScale\"\n [labelPosition]=\"'before'\">\n {{'igo.geo.printForm.showScale' | translate}}\n </mat-slide-toggle>\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"doZipFile\"\n [labelPosition]=\"'before'\"\n [style.display]=\"isPrintService ? 'none' : ''\">\n {{'igo.geo.printForm.doZipFile' | translate}}\n </mat-slide-toggle>\n </div>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-select\n formControlName=\"legendPosition\"\n placeholder=\"{{'igo.geo.printForm.legendPosition' | translate}}\">\n <mat-option *ngFor=\"let legendPosition of legendPositions | keyvalue \" [value]=\"legendPosition.key\">\n <ng-container *ngIf=\"!['newpage', 'newimage'].includes(legendPosition.value)\">\n {{'igo.geo.printForm.legendPositions.' + legendPosition.value | translate}}\n </ng-container>\n\n <ng-container *ngIf=\"['newpage', 'newimage'].includes(legendPosition.value)\">\n {{ ((outputFormat === 'Pdf') ? 'igo.geo.printForm.legendPositions.newpage' : \n 'igo.geo.printForm.legendPositions.newimage') | translate}}\n </ng-container>\n </mat-option>\n\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-select (selectionChange)=\"toggleImageSaveProp()\"\n formControlName=\"outputFormat\"\n placeholder=\"{{'igo.geo.printForm.outputFormat' | translate}}\">\n <mat-option *ngFor=\"let outputFormat of outputFormats | keyvalue \" [value]=\"outputFormat.key\">\n {{outputFormat.value}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" [style.display]=\"isPrintService ? 'block' : 'none'\">\n <mat-form-field>\n <mat-select\n formControlName=\"paperFormat\"\n placeholder=\"{{'igo.geo.printForm.paperFormat' | translate}}\">\n <mat-option *ngFor=\"let paperFormat of paperFormats | keyvalue \" [value]=\"paperFormat.key\">\n {{('igo.geo.printForm.paperFormats.' + paperFormat.value) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" [style.display]=\"isPrintService ? 'none' : 'block'\">\n <mat-form-field>\n <mat-select\n formControlName=\"imageFormat\"\n placeholder=\"{{'igo.geo.printForm.imageFormat' | translate}}\">\n <mat-option *ngFor=\"let imageFormat of imageFormats | keyvalue \" [value]=\"imageFormat.key\">\n {{imageFormat.value}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" style=\"display: none;\">\n <mat-form-field>\n <mat-select\n formControlName=\"resolution\"\n placeholder=\"{{'igo.geo.printForm.resolution' | translate}}\">\n <mat-option *ngFor=\"let resolution of resolutions | keyvalue \" [value]=\"resolution.key\">\n {{resolution.value + ' PPI'}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" [style.display]=\"isPrintService ? 'block' : 'none'\">\n <mat-form-field>\n <mat-select\n formControlName=\"orientation\"\n placeholder=\"{{'igo.geo.printForm.orientation' | translate}}\">\n <mat-option *ngFor=\"let orientation of orientations | keyvalue \" [value]=\"orientation.key\">\n {{('igo.geo.printForm.' + orientation.value) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-form-button-group print-button-top-padding\">\n <button\n mat-raised-button\n type=\"button\"\n [disabled]=\"!form.valid || (disabled$ | async)\"\n (click)=\"handleFormSubmit(form.value, form.valid)\">\n {{'igo.geo.printForm.saveBtn' | translate}}\n </button>\n </div>\n\n</form>\n", styles: ["mat-form-field{width:100%}.print-slide-toggle-container{overflow-x:hidden}.print-slide-toggle-container mat-slide-toggle{width:100%;margin:10px}.print-slide-toggle-container mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.print-option{display:block;margin-right:10px;margin-bottom:15px}.print-button-top-padding{padding-top:25px}.igo-form{padding:10px 5px 5px}.igo-form-button-group{text-align:center}\n"] }]
34164
34424
  }], function () { return [{ type: i2$2.UntypedFormBuilder }]; }, { disabled$: [{
34165
34425
  type: Input
34166
34426
  }], imageFormat: [{
@@ -34261,25 +34521,28 @@ class PrintComponent {
34261
34521
  this.printService.defineNbFileToProcess(nbFileToProcess);
34262
34522
  const resolution = +data.resolution;
34263
34523
  let nbRequests = data.showLegend ? 2 : 1;
34524
+ if (data.legendPosition === 'newpage') {
34525
+ nbRequests++;
34526
+ }
34264
34527
  this.printService
34265
- .downloadMapImage(this.map, resolution, data.imageFormat, data.showProjection, data.showScale, data.showLegend, data.title, data.subtitle, data.comment, data.doZipFile)
34528
+ .downloadMapImage(this.map, resolution, data.imageFormat, data.showProjection, data.showScale, data.title, data.subtitle, data.comment, data.doZipFile, data.legendPosition)
34266
34529
  .pipe(take(1))
34267
34530
  .subscribe(() => {
34268
34531
  nbRequests--;
34269
- if (!nbRequests) {
34270
- this.disabled$.next(false);
34532
+ if (data.legendPosition === 'newpage') {
34533
+ this.printService.getLayersLegendImage(this.map, data.imageFormat, data.doZipFile, resolution).then(() => {
34534
+ nbRequests--;
34535
+ if (!nbRequests) {
34536
+ this.disabled$.next(false);
34537
+ }
34538
+ });
34271
34539
  }
34272
- });
34273
- if (data.showLegend) {
34274
- this.printService
34275
- .getLayersLegendImage(this.map, data.imageFormat, data.doZipFile, +resolution)
34276
- .then(() => {
34277
- nbRequests--;
34540
+ else {
34278
34541
  if (!nbRequests) {
34279
34542
  this.disabled$.next(false);
34280
34543
  }
34281
- });
34282
- }
34544
+ }
34545
+ });
34283
34546
  }
34284
34547
  }
34285
34548
  }
@@ -35192,7 +35455,7 @@ DirectionsInputsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: D
35192
35455
  } if (rf & 2) {
35193
35456
  i0.ɵɵadvance(1);
35194
35457
  i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, ctx.stopsStore.view.all$()));
35195
- } }, dependencies: [i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i3$1.CdkDropList, i3$1.CdkDrag, i3$1.CdkDragHandle, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgModel, i2.MatIcon, i3.MatButton, i13.MatFormField, i13.MatSuffix, i14.MatInput, i9.MatOption, i9.MatOptgroup, i4.MatTooltip, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".igo-input-container[_ngcontent-%COMP%]{width:100%}.igo-input-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}.igo-input-container.reduce[_ngcontent-%COMP%]{width:70%}.igo-input-container.reduce[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}.stops-list[_ngcontent-%COMP%]{max-width:100%;min-height:60px;display:block;background:white;border-radius:4px;overflow:hidden;padding:20px 10px}.swipe-vertical[_ngcontent-%COMP%]{cursor:move}.stop-box[_ngcontent-%COMP%]{height:60px;padding:20px 10px;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;background:white}.cdk-drag-preview[_ngcontent-%COMP%]{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder[_ngcontent-%COMP%]{opacity:0}.cdk-drag-animating[_ngcontent-%COMP%]{transition:transform .25s cubic-bezier(0,0,.2,1)}.stops-list.cdk-drop-list-dragging[_ngcontent-%COMP%] .stop-box[_ngcontent-%COMP%]:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}"] });
35458
+ } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i3$2.CdkDropList, i3$2.CdkDrag, i3$2.CdkDragHandle, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgModel, i2.MatIcon, i3$1.MatButton, i13.MatFormField, i13.MatSuffix, i14.MatInput, i9.MatOption, i9.MatOptgroup, i4.MatTooltip, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i1.AsyncPipe, i7.TranslatePipe], styles: [".igo-input-container[_ngcontent-%COMP%]{width:100%}.igo-input-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}.igo-input-container.reduce[_ngcontent-%COMP%]{width:70%}.igo-input-container.reduce[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}.stops-list[_ngcontent-%COMP%]{max-width:100%;min-height:60px;display:block;background:white;border-radius:4px;overflow:hidden;padding:20px 10px}.swipe-vertical[_ngcontent-%COMP%]{cursor:move}.stop-box[_ngcontent-%COMP%]{height:60px;padding:20px 10px;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;background:white}.cdk-drag-preview[_ngcontent-%COMP%]{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder[_ngcontent-%COMP%]{opacity:0}.cdk-drag-animating[_ngcontent-%COMP%]{transition:transform .25s cubic-bezier(0,0,.2,1)}.stops-list.cdk-drop-list-dragging[_ngcontent-%COMP%] .stop-box[_ngcontent-%COMP%]:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}"] });
35196
35459
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DirectionsInputsComponent, [{
35197
35460
  type: Component,
35198
35461
  args: [{ selector: 'igo-directions-inputs', template: "<div cdkDropList class=\"stops-list\" (cdkDropListDropped)=\"drop($event)\">\n <div touchleave \n (touchenter)=\"onStopEnter(stop)\"\n (touchleave)=\"onStopLeave()\"\n (mouseover)=\"onStopEnter(stop)\"\n (mouseleave)=\"onStopLeave()\"\n (cdkDragStarted)=\"stopIsDragged=true\"\n (cdkDragEnded)=\"stopIsDragged=false\"\n cdkDragLockAxis=\"y\" class=\"stop-box mat-typography\" *ngFor=\"let stop of stopsStore.view.all$() | async; let i = index;\" cdkDrag>\n <div [ngClass]=\"getNgClass(stop)\">\n <mat-form-field>\n <input id=\"{{stop.id}}\" type=\"text\"\n [placeholder]=\"getPlaceholder(stop)\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"stop.text\"\n aria-label=\"Number\"\n matInput\n (focus)=\"onInputFocus(stop)\"\n [(ngModel)]=\"stop.text\"\n (keyup)=\"setStopText($event,stop)\"\n (keydown.enter)=\"$event.preventDefault()\"\n [matAutocomplete]=\"auto\">\n <button \n mat-button \n *ngIf=\"(stop.text || stop.coordinates) && stopWithHover && stop.id===stopWithHover.id\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.directionsForm.clearStop' | translate\"\n matSuffix mat-icon-button color=\"warn\" aria-label=\"Clear\" (click)=\"clearStop(stop)\">\n <mat-icon svgIcon=\"close\"></mat-icon>\n </button>\n \n <mat-autocomplete [displayWith]=\"getOptionText\" #auto=\"matAutocomplete\" (optionSelected)=\"chooseProposal($event,stop)\">\n <mat-optgroup *ngFor=\"let source of stop.searchProposals\" [label]=\"source.source.title\" [disabled]=\"source.source.enabled === false\">\n <mat-option *ngFor=\"let result of source.results\" [value]=\"result\" \n matTooltipShowDelay=\"500\" [matTooltip]=\"result.meta ? result.meta.title : ''\">\n {{ result.meta ? result.meta.title : '' }}\n </mat-option>\n </mat-optgroup>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n\n\n\n\n <div class=\"igo-form-button-group\" *ngIf=\"!stopIsDragged && stopWithHover && stop.id === stopWithHover.id\">\n <button class=\"swipe-vertical\" cdkDragHandle mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.directionsForm.moveStop' | translate\" color=\"primary\">\n <mat-icon svgIcon=\"gesture-swipe-vertical\"></mat-icon>\n </button>\n\n <button *ngIf=\"(stopsStore.count$ | async)> 2\" mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.directionsForm.removeStop' | translate\" color=\"warn\" (click)=\"removeStop(stop)\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n <button *ngIf=\"(stopsStore.count$ | async)<= 2\" disabled=\"true\" mat-icon-button tooltip-position=\"below\"\n matTooltipShowDelay=\"500\" [matTooltip]=\"'igo.geo.directionsForm.removeStop' | translate\" color=\"warn\">\n <mat-icon svgIcon=\"blank\"></mat-icon>\n </button>\n </div>\n </div>\n</div>", styles: [".igo-input-container{width:100%}.igo-input-container mat-form-field{width:100%}.igo-input-container.reduce{width:70%}.igo-input-container.reduce mat-form-field{width:100%}.stops-list{max-width:100%;min-height:60px;display:block;background:white;border-radius:4px;overflow:hidden;padding:20px 10px}.swipe-vertical{cursor:move}.stop-box{height:60px;padding:20px 10px;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;background:white}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.stops-list.cdk-drop-list-dragging .stop-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
@@ -35383,9 +35646,10 @@ class SearchSourceService {
35383
35646
  * and the results they yielded.
35384
35647
  */
35385
35648
  class SearchService {
35386
- constructor(searchSourceService, mapService) {
35649
+ constructor(searchSourceService, mapService, storageService) {
35387
35650
  this.searchSourceService = searchSourceService;
35388
35651
  this.mapService = mapService;
35652
+ this.storageService = storageService;
35389
35653
  }
35390
35654
  /**
35391
35655
  * Perform a research by text
@@ -35437,7 +35701,8 @@ class SearchService {
35437
35701
  const sources = this.searchSourceService
35438
35702
  .getEnabledSources()
35439
35703
  .filter(reverseSourceFonction);
35440
- return this.reverseSearchSources(sources, lonLat, options || {});
35704
+ const reverseSearchCoordsFormat = this.storageService.get('reverseSearchCoordsFormatEnabled') || false;
35705
+ return this.reverseSearchSources(sources, lonLat, options || {}, reverseSearchCoordsFormat);
35441
35706
  }
35442
35707
  /**
35443
35708
  * Create a text research out of all given search sources
@@ -35460,10 +35725,10 @@ class SearchService {
35460
35725
  * @param lonLat Any lon/lat coordinates
35461
35726
  * @returns Observable of Researches
35462
35727
  */
35463
- reverseSearchSources(sources, lonLat, options) {
35728
+ reverseSearchSources(sources, lonLat, options, reverseSearchCoordsFormat) {
35464
35729
  return sources.map((source) => {
35465
35730
  return {
35466
- request: source.reverseSearch(lonLat, options),
35731
+ request: source.reverseSearch(lonLat, options, reverseSearchCoordsFormat),
35467
35732
  reverse: true,
35468
35733
  source
35469
35734
  };
@@ -35478,14 +35743,14 @@ class SearchService {
35478
35743
  return typeof term === 'string' && term !== '';
35479
35744
  }
35480
35745
  }
35481
- SearchService.ɵfac = function SearchService_Factory(t) { return new (t || SearchService)(i0.ɵɵinject(SearchSourceService), i0.ɵɵinject(MapService)); };
35746
+ SearchService.ɵfac = function SearchService_Factory(t) { return new (t || SearchService)(i0.ɵɵinject(SearchSourceService), i0.ɵɵinject(MapService), i0.ɵɵinject(i2$1.StorageService)); };
35482
35747
  SearchService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: SearchService, factory: SearchService.ɵfac, providedIn: 'root' });
35483
35748
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchService, [{
35484
35749
  type: Injectable,
35485
35750
  args: [{
35486
35751
  providedIn: 'root'
35487
35752
  }]
35488
- }], function () { return [{ type: SearchSourceService }, { type: MapService }]; }, null); })();
35753
+ }], function () { return [{ type: SearchSourceService }, { type: MapService }, { type: i2$1.StorageService }]; }, null); })();
35489
35754
 
35490
35755
  function DirectionsButtonsComponent_button_4_Template(rf, ctx) { if (rf & 1) {
35491
35756
  const _r5 = i0.ɵɵgetCurrentView();
@@ -35683,7 +35948,7 @@ DirectionsButtonsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
35683
35948
  i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(10, 13, ctx.routesFeatureStore.count$) >= 1);
35684
35949
  i0.ɵɵadvance(2);
35685
35950
  i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(12, 15, ctx.routesFeatureStore.count$) >= 1);
35686
- } }, dependencies: [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i1$1.AsyncPipe, i7.TranslatePipe] });
35951
+ } }, dependencies: [i1.NgIf, i2.MatIcon, i3$1.MatButton, i4.MatTooltip, i1.AsyncPipe, i7.TranslatePipe] });
35687
35952
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DirectionsButtonsComponent, [{
35688
35953
  type: Component,
35689
35954
  args: [{ selector: 'igo-directions-buttons', template: "<div class=\"igo-form-button-group\">\n <button mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.directionsForm.addStop' | translate\" color=\"primary\" (click)=\"addStop()\">\n <mat-icon svgIcon=\"map-marker-plus\"></mat-icon>\n </button>\n <button mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n *ngIf=\"(routesFeatureStore.count$ | async)>=1 || (stopsStore.count$ | async)>=1\"\n [matTooltip]=\"'igo.geo.directionsForm.resetDirectionsBtn' | translate\" color=\"warn\" (click)=\"resetStops()\">\n <mat-icon svgIcon=\"file-restore\"></mat-icon>\n </button>\n <button mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n *ngIf=\"(routesFeatureStore.count$ | async)>=1\" (click)=\"zoomRoute()\"\n [matTooltip]=\"'igo.geo.directionsForm.zoomRoute' | translate\" color=\"primary\">\n <mat-icon svgIcon=\"magnify-plus-outline\"></mat-icon>\n </button>\n <button mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n *ngIf=\"(routesFeatureStore.count$ | async)>=1\" (click)=\"copyDirectionsToClipboard()\"\n [matTooltip]=\"'igo.geo.directionsForm.copy' | translate\" color=\"primary\">\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\n </button>\n <button mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n *ngIf=\"(routesFeatureStore.count$ | async)>=1\" (click)=\"copyLinkToClipboard()\" \n [matTooltip]=\"'igo.geo.directionsForm.link' | translate\" color=\"primary\">\n <mat-icon svgIcon=\"link\"></mat-icon>\n </button>\n</div>" }]
@@ -35866,7 +36131,7 @@ DirectionsResultsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
35866
36131
  i0.ɵɵtemplate(0, DirectionsResultsComponent_div_0_Template, 10, 6, "div", 0);
35867
36132
  } if (rf & 2) {
35868
36133
  i0.ɵɵproperty("ngIf", ctx.directions && ctx.activeDirection);
35869
- } }, dependencies: [i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i2$2.NgControlStatus, i2$2.NgModel, i2.MatIcon, i5.MatList, i5.MatListItem, i9.MatLine, i5.MatListIconCssMatStyler, i5.MatListSubheaderCssMatStyler, i11.MatDivider, i13.MatFormField, i9.MatOption, i15.MatSelect, i7.TranslatePipe], styles: [".igo-input-container[_ngcontent-%COMP%]{width:100%;padding:20px 10px}.igo-input-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:70%}.igo-route-title[_ngcontent-%COMP%]{font-weight:700}.igo-steps[_ngcontent-%COMP%]{cursor:pointer}.mat-line[_ngcontent-%COMP%]{word-wrap:break-word!important;white-space:pre-wrap!important}.mat-line.right[_ngcontent-%COMP%]{text-align:right}.rotate-90[_ngcontent-%COMP%]{transform:rotate(90deg)}.rotate-45[_ngcontent-%COMP%]{transform:rotate(45deg)}.rotate-270[_ngcontent-%COMP%]{transform:rotate(270deg)}.rotate-250[_ngcontent-%COMP%]{transform:rotate(250deg)}.rotate-290[_ngcontent-%COMP%]{transform:rotate(290deg)}.icon-flipped[_ngcontent-%COMP%]{transform:scaleY(-1)}"] });
36134
+ } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i2$2.NgControlStatus, i2$2.NgModel, i2.MatIcon, i5.MatList, i5.MatListItem, i9.MatLine, i5.MatListIconCssMatStyler, i5.MatListSubheaderCssMatStyler, i11.MatDivider, i13.MatFormField, i9.MatOption, i15.MatSelect, i7.TranslatePipe], styles: [".igo-input-container[_ngcontent-%COMP%]{width:100%;padding:20px 10px}.igo-input-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:70%}.igo-route-title[_ngcontent-%COMP%]{font-weight:700}.igo-steps[_ngcontent-%COMP%]{cursor:pointer}.mat-line[_ngcontent-%COMP%]{word-wrap:break-word!important;white-space:pre-wrap!important}.mat-line.right[_ngcontent-%COMP%]{text-align:right}.rotate-90[_ngcontent-%COMP%]{transform:rotate(90deg)}.rotate-45[_ngcontent-%COMP%]{transform:rotate(45deg)}.rotate-270[_ngcontent-%COMP%]{transform:rotate(270deg)}.rotate-250[_ngcontent-%COMP%]{transform:rotate(250deg)}.rotate-290[_ngcontent-%COMP%]{transform:rotate(290deg)}.icon-flipped[_ngcontent-%COMP%]{transform:scaleY(-1)}"] });
35870
36135
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DirectionsResultsComponent, [{
35871
36136
  type: Component,
35872
36137
  args: [{ selector: 'igo-directions-results', template: "<div class=\"igo-input-container\" *ngIf=\"directions && activeDirection\">\n <mat-form-field *ngIf=\"directions && directions.length > 1\">\n <mat-select placeholder=\"{{'igo.geo.directionsForm.drivingOptions' | translate}}\"\n (selectionChange)=\"changeRoute()\" [(ngModel)]=\"activeDirection\">\n <mat-option *ngFor=\"let direction of directions; let cnt = index;\" [value]=\"direction\">\n Option {{cnt + 1}} : {{formatDistance(direction.distance)}}\n ({{formatDuration(direction.duration)}})\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-divider *ngIf=\"directions && directions.length === 0\"></mat-divider>\n\n <mat-list (mouseleave)=\"onStepsListBlur()\">\n <h2 mat-header class=\"igo-route-title mat-typography\">{{activeDirection.title}}</h2>\n <h2 mat-subheader>{{formatDistance(activeDirection.distance)}}, {{formatDuration(activeDirection.duration)}}</h2>\n <mat-list-item class=\"igo-steps\" \n (mouseenter)=\"showSegment(step)\" \n (click)=\"showSegment(step,true)\" \n *ngFor=\"let step of activeDirection.steps; let cnt = index;\" igoListItem>\n <mat-icon [ngClass]=\"formatStep(step,cnt).cssClass\" mat-list-icon svgIcon=\"{{formatStep(step,cnt).image}}\">\n </mat-icon>\n\n <h4 mat-line>{{cnt +1}}. {{formatStep(step,cnt).instruction}}</h4>\n <h4 mat-line class=\"right\">{{formatDistance(step.distance)}}</h4>\n </mat-list-item>\n\n <mat-divider></mat-divider>\n\n </mat-list>\n\n</div>", styles: [".igo-input-container{width:100%;padding:20px 10px}.igo-input-container mat-form-field{width:70%}.igo-route-title{font-weight:700}.igo-steps{cursor:pointer}.mat-line{word-wrap:break-word!important;white-space:pre-wrap!important}.mat-line.right{text-align:right}.rotate-90{transform:rotate(90deg)}.rotate-45{transform:rotate(45deg)}.rotate-270{transform:rotate(270deg)}.rotate-250{transform:rotate(250deg)}.rotate-290{transform:rotate(290deg)}.icon-flipped{transform:scaleY(-1)}\n"] }]
@@ -36306,9 +36571,6 @@ class IChercheSearchSource extends SearchSource {
36306
36571
  this.formatter = formatter;
36307
36572
  this.title$ = new BehaviorSubject('');
36308
36573
  this.hashtagsLieuxToKeep = [];
36309
- this.languageService.translate
36310
- .get(this.options.title)
36311
- .subscribe((title) => this.title$.next(title));
36312
36574
  const authService = injector.get(AuthService);
36313
36575
  if (this.settings.length) {
36314
36576
  if (!authService) {
@@ -36320,6 +36582,9 @@ class IChercheSearchSource extends SearchSource {
36320
36582
  });
36321
36583
  }
36322
36584
  }
36585
+ this.languageService.language$.subscribe(() => {
36586
+ this.title$.next(this.languageService.translate.instant(this.options.title));
36587
+ });
36323
36588
  }
36324
36589
  get title() {
36325
36590
  return this.title$.getValue();
@@ -36762,7 +37027,7 @@ class IChercheSearchSource extends SearchSource {
36762
37027
  IChercheSearchSource.id = 'icherche';
36763
37028
  IChercheSearchSource.type = FEATURE;
36764
37029
  IChercheSearchSource.propertiesBlacklist = [];
36765
- IChercheSearchSource.ɵfac = function IChercheSearchSource_Factory(t) { return new (t || IChercheSearchSource)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.StorageService), i0.ɵɵinject('options'), i0.ɵɵinject(IChercheSearchResultFormatter), i0.ɵɵinject(i0.Injector)); };
37030
+ IChercheSearchSource.ɵfac = function IChercheSearchSource_Factory(t) { return new (t || IChercheSearchSource)(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.StorageService), i0.ɵɵinject('options'), i0.ɵɵinject(IChercheSearchResultFormatter), i0.ɵɵinject(i0.Injector)); };
36766
37031
  IChercheSearchSource.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: IChercheSearchSource, factory: IChercheSearchSource.ɵfac });
36767
37032
  __decorate([
36768
37033
  Cacheable({
@@ -36771,7 +37036,7 @@ __decorate([
36771
37036
  ], IChercheSearchSource.prototype, "search", null);
36772
37037
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IChercheSearchSource, [{
36773
37038
  type: Injectable
36774
- }], function () { return [{ type: i1$2.HttpClient }, { type: i2$1.LanguageService }, { type: i2$1.StorageService }, { type: undefined, decorators: [{
37039
+ }], function () { return [{ type: i1$1.HttpClient }, { type: i2$1.LanguageService }, { type: i2$1.StorageService }, { type: undefined, decorators: [{
36775
37040
  type: Inject,
36776
37041
  args: ['options']
36777
37042
  }] }, { type: IChercheSearchResultFormatter, decorators: [{
@@ -36787,9 +37052,9 @@ class IChercheReverseSearchSource extends SearchSource {
36787
37052
  this.http = http;
36788
37053
  this.languageService = languageService;
36789
37054
  this.title$ = new BehaviorSubject('');
36790
- this.languageService.translate
36791
- .get(this.options.title)
36792
- .subscribe((title) => this.title$.next(title));
37055
+ this.languageService.language$.subscribe(() => {
37056
+ this.title$.next(this.languageService.translate.instant(this.options.title));
37057
+ });
36793
37058
  const authService = injector.get(AuthService);
36794
37059
  if (this.settings.length) {
36795
37060
  if (!authService) {
@@ -37003,7 +37268,7 @@ class IChercheReverseSearchSource extends SearchSource {
37003
37268
  IChercheReverseSearchSource.id = 'icherchereverse';
37004
37269
  IChercheReverseSearchSource.type = FEATURE;
37005
37270
  IChercheReverseSearchSource.propertiesBlacklist = [];
37006
- IChercheReverseSearchSource.ɵfac = function IChercheReverseSearchSource_Factory(t) { return new (t || IChercheReverseSearchSource)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.StorageService), i0.ɵɵinject('options'), i0.ɵɵinject(i0.Injector)); };
37271
+ IChercheReverseSearchSource.ɵfac = function IChercheReverseSearchSource_Factory(t) { return new (t || IChercheReverseSearchSource)(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.StorageService), i0.ɵɵinject('options'), i0.ɵɵinject(i0.Injector)); };
37007
37272
  IChercheReverseSearchSource.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: IChercheReverseSearchSource, factory: IChercheReverseSearchSource.ɵfac });
37008
37273
  __decorate([
37009
37274
  Cacheable({
@@ -37012,7 +37277,7 @@ __decorate([
37012
37277
  ], IChercheReverseSearchSource.prototype, "reverseSearch", null);
37013
37278
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IChercheReverseSearchSource, [{
37014
37279
  type: Injectable
37015
- }], function () { return [{ type: i1$2.HttpClient }, { type: i2$1.LanguageService }, { type: i2$1.StorageService }, { type: undefined, decorators: [{
37280
+ }], function () { return [{ type: i1$1.HttpClient }, { type: i2$1.LanguageService }, { type: i2$1.StorageService }, { type: undefined, decorators: [{
37016
37281
  type: Inject,
37017
37282
  args: ['options']
37018
37283
  }] }, { type: i0.Injector }]; }, { reverseSearch: [] }); })();
@@ -37100,9 +37365,9 @@ class CoordinatesReverseSearchSource extends SearchSource {
37100
37365
  this.languageService = languageService;
37101
37366
  this.title$ = new BehaviorSubject('');
37102
37367
  this.projections = projections;
37103
- this.languageService.translate
37104
- .get(this.options.title)
37105
- .subscribe(title => this.title$.next(title));
37368
+ this.languageService.language$.subscribe(() => {
37369
+ this.title$.next(this.languageService.translate.instant(this.options.title));
37370
+ });
37106
37371
  }
37107
37372
  get title() {
37108
37373
  return this.title$.getValue();
@@ -37126,15 +37391,17 @@ class CoordinatesReverseSearchSource extends SearchSource {
37126
37391
  * @param options options of ReverseSearchOptions (distance, conf, zoom, params)
37127
37392
  * @returns Observable of <SearchResult<Feature>[]
37128
37393
  */
37129
- reverseSearch(lonLat, options) {
37130
- return of([this.dataToResult(lonLat, options)]);
37394
+ reverseSearch(lonLat, options, reverseSearchCoordsFormatEnabled) {
37395
+ return of([this.dataToResult(lonLat, options, reverseSearchCoordsFormatEnabled)]);
37131
37396
  }
37132
- dataToResult(data, options) {
37397
+ dataToResult(data, options, reverseSearchCoordsFormatEnabled) {
37133
37398
  const dataDMS = convertDDToDMS(data);
37134
37399
  const convertedCoord = lonLatConversion(data, this.projections);
37135
37400
  const coords = convertedCoord.reduce((obj, item) => (obj[item.alias] = item.igo2CoordFormat, obj), {});
37136
- const roundedCoordString = roundCoordTo(data, 6).join(', ');
37137
- const roundedCoordStringDMS = dataDMS.join(', ');
37401
+ const roundedCoordString = (!reverseSearchCoordsFormatEnabled) ?
37402
+ roundCoordTo(data, 6).join(', ') : roundCoordTo(data, 6).reverse().join(', ');
37403
+ const roundedCoordStringDMS = (!reverseSearchCoordsFormatEnabled) ?
37404
+ dataDMS.join(', ') : dataDMS.reverse().join(', ');
37138
37405
  let geometry = {
37139
37406
  type: 'Point',
37140
37407
  coordinates: [data[0], data[1]]
@@ -37158,9 +37425,13 @@ class CoordinatesReverseSearchSource extends SearchSource {
37158
37425
  subtitleHtml += subtitleHtml === '' ? '<br>' : '<small> - </small>';
37159
37426
  subtitleHtml += '<small>Confiance: ' + options.conf + '%</small>';
37160
37427
  }
37161
- const coordKey = this.languageService.translate.instant('igo.geo.search.coordinates.coord');
37428
+ const coordKey = (!reverseSearchCoordsFormatEnabled) ?
37429
+ this.languageService.translate.instant('igo.geo.search.coordinates.coord') :
37430
+ this.languageService.translate.instant('igo.geo.search.coordinates.reversedCoord');
37162
37431
  properties[coordKey] = roundedCoordString;
37163
- const coordKeyDMS = this.languageService.translate.instant('igo.geo.search.coordinates.coordDMS');
37432
+ const coordKeyDMS = (!reverseSearchCoordsFormatEnabled) ?
37433
+ this.languageService.translate.instant('igo.geo.search.coordinates.coordDMS') :
37434
+ this.languageService.translate.instant('igo.geo.search.coordinates.reversedCoordDMS');
37164
37435
  properties[coordKeyDMS] = roundedCoordStringDMS;
37165
37436
  return {
37166
37437
  source: this,
@@ -37294,9 +37565,9 @@ class ILayerSearchSource extends SearchSource {
37294
37565
  this.languageService = languageService;
37295
37566
  this.formatter = formatter;
37296
37567
  this.title$ = new BehaviorSubject('');
37297
- this.languageService.translate
37298
- .get(this.options.title)
37299
- .subscribe(title => this.title$.next(title));
37568
+ this.languageService.language$.subscribe(() => {
37569
+ this.title$.next(this.languageService.translate.instant(this.options.title));
37570
+ });
37300
37571
  }
37301
37572
  get title() {
37302
37573
  return this.title$.getValue();
@@ -37534,7 +37805,7 @@ class ILayerSearchSource extends SearchSource {
37534
37805
  }
37535
37806
  ILayerSearchSource.id = 'ilayer';
37536
37807
  ILayerSearchSource.type = LAYER;
37537
- ILayerSearchSource.ɵfac = function ILayerSearchSource_Factory(t) { return new (t || ILayerSearchSource)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.StorageService), i0.ɵɵinject('options'), i0.ɵɵinject(ILayerSearchResultFormatter)); };
37808
+ ILayerSearchSource.ɵfac = function ILayerSearchSource_Factory(t) { return new (t || ILayerSearchSource)(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.StorageService), i0.ɵɵinject('options'), i0.ɵɵinject(ILayerSearchResultFormatter)); };
37538
37809
  ILayerSearchSource.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ILayerSearchSource, factory: ILayerSearchSource.ɵfac });
37539
37810
  __decorate([
37540
37811
  Cacheable({
@@ -37543,7 +37814,7 @@ __decorate([
37543
37814
  ], ILayerSearchSource.prototype, "search", null);
37544
37815
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ILayerSearchSource, [{
37545
37816
  type: Injectable
37546
- }], function () { return [{ type: i1$2.HttpClient }, { type: i2$1.LanguageService }, { type: i2$1.StorageService }, { type: undefined, decorators: [{
37817
+ }], function () { return [{ type: i1$1.HttpClient }, { type: i2$1.LanguageService }, { type: i2$1.StorageService }, { type: undefined, decorators: [{
37547
37818
  type: Inject,
37548
37819
  args: ['options']
37549
37820
  }] }, { type: ILayerSearchResultFormatter, decorators: [{
@@ -37687,7 +37958,7 @@ SearchSelectorComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Sea
37687
37958
  i0.ɵɵproperty("value", i0.ɵɵpipeBind1(7, 6, ctx.searchType$));
37688
37959
  i0.ɵɵadvance(2);
37689
37960
  i0.ɵɵproperty("ngForOf", ctx.searchTypes);
37690
- } }, dependencies: [i1$1.NgForOf, i4.MatTooltip, i2.MatIcon, i3.MatButton, i7$2.MatMenu, i7$2.MatMenuTrigger, i17.MatRadioGroup, i17.MatRadioButton, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".igo-search-selector-button[_ngcontent-%COMP%] div.mat-button-ripple-round{border-radius:0}.igo-search-selector-radio-group[_ngcontent-%COMP%]{display:inline-flex;flex-direction:column}.igo-search-selector-radio-group[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%]{margin:5px}"], changeDetection: 0 });
37961
+ } }, dependencies: [i1.NgForOf, i4.MatTooltip, i2.MatIcon, i3$1.MatButton, i7$2.MatMenu, i7$2.MatMenuTrigger, i17.MatRadioGroup, i17.MatRadioButton, i1.AsyncPipe, i7.TranslatePipe], styles: [".igo-search-selector-button[_ngcontent-%COMP%] div.mat-button-ripple-round{border-radius:0}.igo-search-selector-radio-group[_ngcontent-%COMP%]{display:inline-flex;flex-direction:column}.igo-search-selector-radio-group[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%]{margin:5px}"], changeDetection: 0 });
37691
37962
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchSelectorComponent, [{
37692
37963
  type: Component,
37693
37964
  args: [{ selector: 'igo-search-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"igo-search-selector\">\n <button\n mat-icon-button\n class=\"igo-search-selector-button\"\n color=\"primary\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.search.menu.tooltip' | translate\"\n [matMenuTriggerFor]=\"searchSelectorMenu\">\n <mat-icon svgIcon=\"menu-down\"></mat-icon>\n </button>\n\n <mat-menu\n #searchSelectorMenu=\"matMenu\"\n class=\"no-border-radius\"\n xPosition=\"before\"\n yPosition=\"above\">\n <mat-radio-group\n class=\"igo-search-selector-radio-group\"\n [value]=\"searchType$ | async\"\n (change)=\"onSearchTypeChange($event.value)\">\n <mat-radio-button *ngFor=\"let searchType of searchTypes\" [value]=\"searchType\">\n {{getSearchTypeTitle(searchType) | translate}}\n </mat-radio-button>\n </mat-radio-group>\n </mat-menu>\n\n</div>\n", styles: [".igo-search-selector-button ::ng-deep div.mat-button-ripple-round{border-radius:0}.igo-search-selector-radio-group{display:inline-flex;flex-direction:column}.igo-search-selector-radio-group mat-radio-button{margin:5px}\n"] }]
@@ -37907,17 +38178,28 @@ function SearchSettingsComponent_span_8_Template(rf, ctx) { if (rf & 1) {
37907
38178
  i0.ɵɵpipe(8, "translate");
37908
38179
  i0.ɵɵtext(9);
37909
38180
  i0.ɵɵpipe(10, "translate");
38181
+ i0.ɵɵelementEnd();
38182
+ i0.ɵɵelementStart(11, "mat-slide-toggle", 26);
38183
+ i0.ɵɵlistener("change", function SearchSettingsComponent_span_8_Template_mat_slide_toggle_change_11_listener($event) { i0.ɵɵrestoreView(_r44); const ctx_r48 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r48.reverseSearchCoordsFormat($event)); })("click", function SearchSettingsComponent_span_8_Template_mat_slide_toggle_click_11_listener($event) { return $event.stopPropagation(); });
38184
+ i0.ɵɵpipe(12, "translate");
38185
+ i0.ɵɵpipe(13, "translate");
38186
+ i0.ɵɵtext(14);
38187
+ i0.ɵɵpipe(15, "translate");
37910
38188
  i0.ɵɵelementEnd()()();
37911
38189
  } if (rf & 2) {
37912
38190
  const ctx_r3 = i0.ɵɵnextContext();
37913
38191
  i0.ɵɵadvance(3);
37914
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(4, 8, "igo.geo.search.pointerSearchSummary.tooltip"))("checked", ctx_r3.pointerSummaryEnabled)("labelPosition", "after");
38192
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(4, 12, "igo.geo.search.pointerSearchSummary.tooltip"))("checked", ctx_r3.pointerSummaryEnabled)("labelPosition", "after");
38193
+ i0.ɵɵadvance(2);
38194
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 14, "igo.geo.search.pointerSearchSummary.title"), " ");
37915
38195
  i0.ɵɵadvance(2);
37916
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 10, "igo.geo.search.pointerSearchSummary.title"), " ");
38196
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(8, 16, "igo.geo.search.searchResultsGeometry.tooltip"))("checked", ctx_r3.searchResultsGeometryEnabled)("labelPosition", "after");
37917
38197
  i0.ɵɵadvance(2);
37918
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(8, 12, "igo.geo.search.searchResultsGeometry.tooltip"))("checked", ctx_r3.searchResultsGeometryEnabled)("labelPosition", "after");
38198
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(10, 18, "igo.geo.search.searchResultsGeometry.title"), " ");
37919
38199
  i0.ɵɵadvance(2);
37920
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(10, 14, "igo.geo.search.searchResultsGeometry.title"), " ");
38200
+ i0.ɵɵproperty("matTooltip", ctx_r3.reverseSearchCoordsFormatEnabled ? i0.ɵɵpipeBind1(12, 20, "igo.geo.search.reverseCoordFormat.tooltipLatLon") : i0.ɵɵpipeBind1(13, 22, "igo.geo.search.reverseCoordFormat.tooltipLonLat"))("checked", ctx_r3.reverseSearchCoordsFormatEnabled)("labelPosition", "after");
38201
+ i0.ɵɵadvance(3);
38202
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(15, 24, "igo.geo.search.reverseCoordFormat.title"), " ");
37921
38203
  } }
37922
38204
  /**
37923
38205
  * This component allows a user to select a search type yo enable. In it's
@@ -37939,6 +38221,7 @@ class SearchSettingsComponent {
37939
38221
  this.displayBlock = 'block';
37940
38222
  this.pointerSummaryEnabled = false;
37941
38223
  this.searchResultsGeometryEnabled = false;
38224
+ this.reverseSearchCoordsFormatEnabled = false;
37942
38225
  /**
37943
38226
  * Event emitted when the enabled search source changes
37944
38227
  */
@@ -37951,6 +38234,10 @@ class SearchSettingsComponent {
37951
38234
  * Event emitted when the show geometry summary is changed
37952
38235
  */
37953
38236
  this.searchResultsGeometryStatus = new EventEmitter();
38237
+ /**
38238
+ * Event emitted when the coords format is changed
38239
+ */
38240
+ this.reverseSearchCoordsFormatStatus = new EventEmitter();
37954
38241
  }
37955
38242
  get isTouchScreen() {
37956
38243
  return this.mediaService.isTouchScreen();
@@ -38103,11 +38390,15 @@ class SearchSettingsComponent {
38103
38390
  this.searchResultsGeometryEnabled = event.checked;
38104
38391
  this.searchResultsGeometryStatus.emit(this.searchResultsGeometryEnabled);
38105
38392
  }
38393
+ reverseSearchCoordsFormat(event) {
38394
+ this.reverseSearchCoordsFormatEnabled = event.checked;
38395
+ this.reverseSearchCoordsFormatStatus.emit(this.reverseSearchCoordsFormatEnabled);
38396
+ }
38106
38397
  }
38107
38398
  SearchSettingsComponent.ɵfac = function SearchSettingsComponent_Factory(t) { return new (t || SearchSettingsComponent)(i0.ɵɵdirectiveInject(SearchSourceService), i0.ɵɵdirectiveInject(i2$1.MediaService), i0.ɵɵdirectiveInject(i2$1.StorageService)); };
38108
38399
  SearchSettingsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchSettingsComponent, selectors: [["igo-search-settings"]], hostBindings: function SearchSettingsComponent_HostBindings(rf, ctx) { if (rf & 1) {
38109
38400
  i0.ɵɵlistener("keydown", function SearchSettingsComponent_keydown_HostBindingHandler($event) { return ctx.handleKeyboardEvent($event); }, false, i0.ɵɵresolveDocument);
38110
- } }, inputs: { pointerSummaryEnabled: "pointerSummaryEnabled", searchResultsGeometryEnabled: "searchResultsGeometryEnabled" }, outputs: { searchSourceChange: "searchSourceChange", pointerSummaryStatus: "pointerSummaryStatus", searchResultsGeometryStatus: "searchResultsGeometryStatus" }, decls: 9, vars: 7, consts: [[1, "igo-search-settings"], ["mat-icon-button", "", "color", "primary", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "igo-search-settings-button", 3, "matTooltip", "matMenuTriggerFor"], ["svgIcon", "chevron-down"], [1, "no-border-radius"], ["searchSettingsMenu", "matMenu"], ["class", "checkAllButton", 4, "ngIf"], [4, "ngFor", "ngForOf"], [4, "ngIf"], [1, "checkAllButton"], ["mat-raised-button", "", 3, "click"], [1, "igo-search-settings-search-source"], [1, "igo-search-settings-checkbox", 3, "checked", "value", "click", "change"], ["mat-menu-item", "", 3, "matMenuTriggerFor", 4, "ngIf"], ["mat-menu-item", "", 4, "ngIf"], ["sub_menu", "matMenu"], ["mat-menu-item", "", 3, "matMenuTriggerFor"], ["mat-menu-item", ""], ["yPosition", "above", 3, "ngSwitch"], ["test_sub_menu", "matMenu"], [4, "ngSwitchCase"], [1, "igo-search-settings-radio-group", 3, "value"], ["class", "mat-typography", 3, "value", "matTooltip", "checked", "click", "change", 4, "ngFor", "ngForOf"], [1, "mat-typography", 3, "value", "matTooltip", "checked", "click", "change"], ["class", "mat-menu-item", 3, "display", "checked", "value", "matTooltip", "click", "change", 4, "ngFor", "ngForOf"], [1, "mat-menu-item", 3, "checked", "value", "matTooltip", "click", "change"], [1, "pointer-summary-slide-toggle-container", "mat-typography"], ["tooltip-position", "below", "matTooltipShowDelay", "500", 1, "pointer-summary-option", 3, "matTooltip", "checked", "labelPosition", "change", "click"]], template: function SearchSettingsComponent_Template(rf, ctx) { if (rf & 1) {
38401
+ } }, inputs: { pointerSummaryEnabled: "pointerSummaryEnabled", searchResultsGeometryEnabled: "searchResultsGeometryEnabled", reverseSearchCoordsFormatEnabled: "reverseSearchCoordsFormatEnabled" }, outputs: { searchSourceChange: "searchSourceChange", pointerSummaryStatus: "pointerSummaryStatus", searchResultsGeometryStatus: "searchResultsGeometryStatus", reverseSearchCoordsFormatStatus: "reverseSearchCoordsFormatStatus" }, decls: 9, vars: 7, consts: [[1, "igo-search-settings"], ["mat-icon-button", "", "color", "primary", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "igo-search-settings-button", 3, "matTooltip", "matMenuTriggerFor"], ["svgIcon", "chevron-down"], [1, "no-border-radius"], ["searchSettingsMenu", "matMenu"], ["class", "checkAllButton", 4, "ngIf"], [4, "ngFor", "ngForOf"], [4, "ngIf"], [1, "checkAllButton"], ["mat-raised-button", "", 3, "click"], [1, "igo-search-settings-search-source"], [1, "igo-search-settings-checkbox", 3, "checked", "value", "click", "change"], ["mat-menu-item", "", 3, "matMenuTriggerFor", 4, "ngIf"], ["mat-menu-item", "", 4, "ngIf"], ["sub_menu", "matMenu"], ["mat-menu-item", "", 3, "matMenuTriggerFor"], ["mat-menu-item", ""], ["yPosition", "above", 3, "ngSwitch"], ["test_sub_menu", "matMenu"], [4, "ngSwitchCase"], [1, "igo-search-settings-radio-group", 3, "value"], ["class", "mat-typography", 3, "value", "matTooltip", "checked", "click", "change", 4, "ngFor", "ngForOf"], [1, "mat-typography", 3, "value", "matTooltip", "checked", "click", "change"], ["class", "mat-menu-item", 3, "display", "checked", "value", "matTooltip", "click", "change", 4, "ngFor", "ngForOf"], [1, "mat-menu-item", 3, "checked", "value", "matTooltip", "click", "change"], [1, "pointer-summary-slide-toggle-container", "mat-typography"], ["tooltip-position", "below", "matTooltipShowDelay", "500", 1, "search-option", 3, "matTooltip", "checked", "labelPosition", "change", "click"]], template: function SearchSettingsComponent_Template(rf, ctx) { if (rf & 1) {
38111
38402
  i0.ɵɵelementStart(0, "div", 0)(1, "button", 1);
38112
38403
  i0.ɵɵpipe(2, "translate");
38113
38404
  i0.ɵɵelement(3, "mat-icon", 2);
@@ -38115,7 +38406,7 @@ SearchSettingsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Sea
38115
38406
  i0.ɵɵelementStart(4, "mat-menu", 3, 4);
38116
38407
  i0.ɵɵtemplate(6, SearchSettingsComponent_div_6_Template, 5, 5, "div", 5);
38117
38408
  i0.ɵɵtemplate(7, SearchSettingsComponent_ng_container_7_Template, 8, 5, "ng-container", 6);
38118
- i0.ɵɵtemplate(8, SearchSettingsComponent_span_8_Template, 11, 16, "span", 7);
38409
+ i0.ɵɵtemplate(8, SearchSettingsComponent_span_8_Template, 16, 26, "span", 7);
38119
38410
  i0.ɵɵelementEnd()();
38120
38411
  } if (rf & 2) {
38121
38412
  const _r0 = i0.ɵɵreference(5);
@@ -38127,20 +38418,24 @@ SearchSettingsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Sea
38127
38418
  i0.ɵɵproperty("ngForOf", ctx.getSearchSources());
38128
38419
  i0.ɵɵadvance(1);
38129
38420
  i0.ɵɵproperty("ngIf", ctx.hasPointerReverseSearchSource && !ctx.isTouchScreen);
38130
- } }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i1$1.NgSwitch, i1$1.NgSwitchCase, i4.MatTooltip, i2.MatIcon, i3.MatButton, i7$2.MatMenu, i7$2.MatMenuItem, i7$2.MatMenuTrigger, i17.MatRadioGroup, i17.MatRadioButton, i12.MatCheckbox, i11.MatDivider, i23.MatSlideToggle, i7.TranslatePipe], styles: [".checkAllButton[_ngcontent-%COMP%]{text-align:center;padding:0 5px}.igo-search-settings-button[_ngcontent-%COMP%] div.mat-button-ripple-round{border-radius:0}.igo-search-settings-radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column}.igo-search-settings-radio-group[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%]{margin:5px}.igo-search-settings-checkbox[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%]{display:flex}.igo-search-settings-search-source[_ngcontent-%COMP%]{display:flex;width:100%}.igo-search-settings-search-source[_ngcontent-%COMP%] mat-checkbox[_ngcontent-%COMP%]{display:flex;margin-left:5px;margin-right:5px}.pointer-summary-option[_ngcontent-%COMP%]{display:block;margin-right:10px;margin-bottom:15px}.pointer-summary-slide-toggle-container[_ngcontent-%COMP%]{overflow-x:hidden}.pointer-summary-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{margin:10px}"], changeDetection: 0 });
38421
+ } }, dependencies: [i1.NgForOf, i1.NgIf, i1.NgSwitch, i1.NgSwitchCase, i4.MatTooltip, i2.MatIcon, i3$1.MatButton, i7$2.MatMenu, i7$2.MatMenuItem, i7$2.MatMenuTrigger, i17.MatRadioGroup, i17.MatRadioButton, i12.MatCheckbox, i11.MatDivider, i23.MatSlideToggle, i7.TranslatePipe], styles: [".checkAllButton[_ngcontent-%COMP%]{text-align:center;padding:0 5px}.igo-search-settings-button[_ngcontent-%COMP%] div.mat-button-ripple-round{border-radius:0}.igo-search-settings-radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column}.igo-search-settings-radio-group[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%]{margin:5px}.igo-search-settings-checkbox[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%]{display:flex}.igo-search-settings-search-source[_ngcontent-%COMP%]{display:flex;width:100%}.igo-search-settings-search-source[_ngcontent-%COMP%] mat-checkbox[_ngcontent-%COMP%]{display:flex;margin-left:5px;margin-right:5px}.search-option[_ngcontent-%COMP%]{display:block;margin-right:10px;margin-bottom:15px}.pointer-summary-slide-toggle-container[_ngcontent-%COMP%]{overflow-x:hidden}.pointer-summary-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{margin:10px}"], changeDetection: 0 });
38131
38422
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchSettingsComponent, [{
38132
38423
  type: Component,
38133
- args: [{ selector: 'igo-search-settings', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"igo-search-settings\">\n\n <button\n mat-icon-button\n class=\"igo-search-settings-button\"\n color=\"primary\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.search.menu.tooltip' | translate\"\n [matMenuTriggerFor]=\"searchSettingsMenu\">\n <mat-icon svgIcon=\"chevron-down\"></mat-icon>\n </button>\n <mat-menu\n #searchSettingsMenu=\"matMenu\"\n class=\"no-border-radius\">\n <div class=\"checkAllButton\" *ngIf=\"getSearchSources().length>4\">\n <button mat-raised-button\n (click)=\"checkUncheckAllSources($event)\">{{!searchSourcesAllEnabled ? ('igo.geo.search.searchSources.unselectAll' | translate): ('igo.geo.search.searchSources.selectAll' | translate)}}</button>\n </div>\n <ng-container *ngFor=\"let source of getSearchSources()\">\n <span class=\"igo-search-settings-search-source\">\n <mat-checkbox\n class=\"igo-search-settings-checkbox\"\n [checked]=\"source.enabled\"\n [value]=\"source\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onCheckSearchSource($event, source)\">\n </mat-checkbox>\n <button *ngIf=\"source.settings.length\u00A0>\u00A00\"\n [matMenuTriggerFor]=\"sub_menu\"\n mat-menu-item>{{source.title}}\n </button>\n <button\n mat-menu-item\n *ngIf=\"source.settings.length\u00A0===\u00A00\">\n {{source.title}}\n </button>\n </span>\n <mat-menu #sub_menu=\"matMenu\">\n <ng-container *ngFor=\"let setting of source.settings\">\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"test_sub_menu\">\n {{'igo.geo.search.searchSources.settings.'+ setting.title | translate}}\n </button>\n <mat-menu #test_sub_menu=\"matMenu\"\n [ngSwitch]=\"setting.type\"\n yPosition=\"above\">\n <span *ngSwitchCase=\"'radiobutton'\">\n <mat-radio-group\n class=\"igo-search-settings-radio-group\"\n [value]=\"setting\">\n <mat-radio-button *ngFor=\"let settingValue of setting.values\"\n class=\"mat-typography\"\n [value]=\"settingValue\"\n [matTooltip]=\"getAvailableHashtagsValues(settingValue)\"\n [checked]=\"settingValue.enabled\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"settingsValueCheckedRadioButton($event, source, setting, settingValue)\">\n {{settingValue.title | translate}}\n </mat-radio-button>\n </mat-radio-group>\n </span>\n <span *ngSwitchCase=\"'checkbox'\">\n <div class=\"checkAllButton\" *ngIf=\"setting.values.length\u00A0>\u00A03\">\n <button mat-raised-button\n (click)=\"checkUncheckAll($event, source, setting)\">{{setting.allEnabled || setting.allEnabled === undefined ? ('igo.geo.search.searchSources.settings.unselectAll' | translate): ('igo.geo.search.searchSources.settings.selectAll' | translate)}}</button>\n </div>\n <mat-checkbox *ngFor=\"let settingValue of getAvailableValues(setting)\"\n class=\"mat-menu-item\"\n [style.display]=\"displayBlock\"\n [checked]=\"settingValue.enabled\"\n [value]=\"setting\"\n [matTooltip]=\"getAvailableHashtagsValues(settingValue)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"settingsValueCheckedCheckbox($event, source, setting, settingValue)\">\n {{settingValue.title | translate}}\n </mat-checkbox>\n </span>\n </mat-menu>\n </ng-container>\n </mat-menu>\n </ng-container>\n <span *ngIf=\"hasPointerReverseSearchSource && !isTouchScreen\">\n <mat-divider></mat-divider>\n <span class=\"pointer-summary-slide-toggle-container mat-typography\">\n <mat-slide-toggle class=\"pointer-summary-option\" (change)=\"changePointerReverseSearch($event)\" tooltip-position=\"below\"\n matTooltipShowDelay=\"500\" [matTooltip]=\"'igo.geo.search.pointerSearchSummary.tooltip' | translate\"\n (click)=\"$event.stopPropagation()\" [checked]=\"pointerSummaryEnabled\" [labelPosition]=\"'after'\">\n {{'igo.geo.search.pointerSearchSummary.title' | translate}}\n </mat-slide-toggle>\n <mat-slide-toggle class=\"pointer-summary-option\" (change)=\"changeSearchResultsGeometry($event)\" tooltip-position=\"below\"\n matTooltipShowDelay=\"500\" [matTooltip]=\"'igo.geo.search.searchResultsGeometry.tooltip' | translate\"\n (click)=\"$event.stopPropagation()\" [checked]=\"searchResultsGeometryEnabled\" [labelPosition]=\"'after'\">\n {{'igo.geo.search.searchResultsGeometry.title' | translate}}\n </mat-slide-toggle>\n </span>\n </span>\n </mat-menu>\n</div>\n", styles: [".checkAllButton{text-align:center;padding:0 5px}.igo-search-settings-button ::ng-deep div.mat-button-ripple-round{border-radius:0}.igo-search-settings-radio-group{display:flex;flex-direction:column}.igo-search-settings-radio-group mat-radio-button{margin:5px}.igo-search-settings-checkbox mat-radio-button{display:flex}.igo-search-settings-search-source{display:flex;width:100%}.igo-search-settings-search-source mat-checkbox{display:flex;margin-left:5px;margin-right:5px}.pointer-summary-option{display:block;margin-right:10px;margin-bottom:15px}.pointer-summary-slide-toggle-container{overflow-x:hidden}.pointer-summary-slide-toggle-container mat-slide-toggle{margin:10px}\n"] }]
38424
+ args: [{ selector: 'igo-search-settings', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"igo-search-settings\">\n\n <button\n mat-icon-button\n class=\"igo-search-settings-button\"\n color=\"primary\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.search.menu.tooltip' | translate\"\n [matMenuTriggerFor]=\"searchSettingsMenu\">\n <mat-icon svgIcon=\"chevron-down\"></mat-icon>\n </button>\n <mat-menu\n #searchSettingsMenu=\"matMenu\"\n class=\"no-border-radius\">\n <div class=\"checkAllButton\" *ngIf=\"getSearchSources().length>4\">\n <button mat-raised-button\n (click)=\"checkUncheckAllSources($event)\">{{!searchSourcesAllEnabled ? ('igo.geo.search.searchSources.unselectAll' | translate): ('igo.geo.search.searchSources.selectAll' | translate)}}</button>\n </div>\n <ng-container *ngFor=\"let source of getSearchSources()\">\n <span class=\"igo-search-settings-search-source\">\n <mat-checkbox\n class=\"igo-search-settings-checkbox\"\n [checked]=\"source.enabled\"\n [value]=\"source\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onCheckSearchSource($event, source)\">\n </mat-checkbox>\n <button *ngIf=\"source.settings.length\u00A0>\u00A00\"\n [matMenuTriggerFor]=\"sub_menu\"\n mat-menu-item>{{source.title}}\n </button>\n <button\n mat-menu-item\n *ngIf=\"source.settings.length\u00A0===\u00A00\">\n {{source.title}}\n </button>\n </span>\n <mat-menu #sub_menu=\"matMenu\">\n <ng-container *ngFor=\"let setting of source.settings\">\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"test_sub_menu\">\n {{'igo.geo.search.searchSources.settings.'+ setting.title | translate}}\n </button>\n <mat-menu #test_sub_menu=\"matMenu\"\n [ngSwitch]=\"setting.type\"\n yPosition=\"above\">\n <span *ngSwitchCase=\"'radiobutton'\">\n <mat-radio-group\n class=\"igo-search-settings-radio-group\"\n [value]=\"setting\">\n <mat-radio-button *ngFor=\"let settingValue of setting.values\"\n class=\"mat-typography\"\n [value]=\"settingValue\"\n [matTooltip]=\"getAvailableHashtagsValues(settingValue)\"\n [checked]=\"settingValue.enabled\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"settingsValueCheckedRadioButton($event, source, setting, settingValue)\">\n {{settingValue.title | translate}}\n </mat-radio-button>\n </mat-radio-group>\n </span>\n <span *ngSwitchCase=\"'checkbox'\">\n <div class=\"checkAllButton\" *ngIf=\"setting.values.length\u00A0>\u00A03\">\n <button mat-raised-button\n (click)=\"checkUncheckAll($event, source, setting)\">{{setting.allEnabled || setting.allEnabled === undefined ? ('igo.geo.search.searchSources.settings.unselectAll' | translate): ('igo.geo.search.searchSources.settings.selectAll' | translate)}}</button>\n </div>\n <mat-checkbox *ngFor=\"let settingValue of getAvailableValues(setting)\"\n class=\"mat-menu-item\"\n [style.display]=\"displayBlock\"\n [checked]=\"settingValue.enabled\"\n [value]=\"setting\"\n [matTooltip]=\"getAvailableHashtagsValues(settingValue)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"settingsValueCheckedCheckbox($event, source, setting, settingValue)\">\n {{settingValue.title | translate}}\n </mat-checkbox>\n </span>\n </mat-menu>\n </ng-container>\n </mat-menu>\n </ng-container>\n <span *ngIf=\"hasPointerReverseSearchSource && !isTouchScreen\">\n <mat-divider></mat-divider>\n <span class=\"pointer-summary-slide-toggle-container mat-typography\">\n <mat-slide-toggle class=\"search-option\" (change)=\"changePointerReverseSearch($event)\" tooltip-position=\"below\"\n matTooltipShowDelay=\"500\" [matTooltip]=\"'igo.geo.search.pointerSearchSummary.tooltip' | translate\"\n (click)=\"$event.stopPropagation()\" [checked]=\"pointerSummaryEnabled\" [labelPosition]=\"'after'\">\n {{'igo.geo.search.pointerSearchSummary.title' | translate}}\n </mat-slide-toggle>\n <mat-slide-toggle class=\"search-option\" (change)=\"changeSearchResultsGeometry($event)\" tooltip-position=\"below\"\n matTooltipShowDelay=\"500\" [matTooltip]=\"'igo.geo.search.searchResultsGeometry.tooltip' | translate\"\n (click)=\"$event.stopPropagation()\" [checked]=\"searchResultsGeometryEnabled\" [labelPosition]=\"'after'\">\n {{'igo.geo.search.searchResultsGeometry.title' | translate}}\n </mat-slide-toggle>\n <mat-slide-toggle class=\"search-option\" (change)=\"reverseSearchCoordsFormat($event)\" tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"reverseSearchCoordsFormatEnabled ? ('igo.geo.search.reverseCoordFormat.tooltipLatLon' | translate)\n : ('igo.geo.search.reverseCoordFormat.tooltipLonLat' | translate)\"\n (click)=\"$event.stopPropagation()\" [checked]=\"reverseSearchCoordsFormatEnabled\" [labelPosition]=\"'after'\">\n {{'igo.geo.search.reverseCoordFormat.title' | translate}}\n </mat-slide-toggle>\n </span>\n </span>\n </mat-menu>\n</div>\n", styles: [".checkAllButton{text-align:center;padding:0 5px}.igo-search-settings-button ::ng-deep div.mat-button-ripple-round{border-radius:0}.igo-search-settings-radio-group{display:flex;flex-direction:column}.igo-search-settings-radio-group mat-radio-button{margin:5px}.igo-search-settings-checkbox mat-radio-button{display:flex}.igo-search-settings-search-source{display:flex;width:100%}.igo-search-settings-search-source mat-checkbox{display:flex;margin-left:5px;margin-right:5px}.search-option{display:block;margin-right:10px;margin-bottom:15px}.pointer-summary-slide-toggle-container{overflow-x:hidden}.pointer-summary-slide-toggle-container mat-slide-toggle{margin:10px}\n"] }]
38134
38425
  }], function () { return [{ type: SearchSourceService }, { type: i2$1.MediaService }, { type: i2$1.StorageService }]; }, { pointerSummaryEnabled: [{
38135
38426
  type: Input
38136
38427
  }], searchResultsGeometryEnabled: [{
38137
38428
  type: Input
38429
+ }], reverseSearchCoordsFormatEnabled: [{
38430
+ type: Input
38138
38431
  }], searchSourceChange: [{
38139
38432
  type: Output
38140
38433
  }], pointerSummaryStatus: [{
38141
38434
  type: Output
38142
38435
  }], searchResultsGeometryStatus: [{
38143
38436
  type: Output
38437
+ }], reverseSearchCoordsFormatStatus: [{
38438
+ type: Output
38144
38439
  }], handleKeyboardEvent: [{
38145
38440
  type: HostListener,
38146
38441
  args: ['document:keydown', ['$event']]
@@ -38235,11 +38530,11 @@ function SearchBarComponent_igo_search_selector_14_Template(rf, ctx) { if (rf &
38235
38530
  function SearchBarComponent_igo_search_settings_15_Template(rf, ctx) { if (rf & 1) {
38236
38531
  const _r11 = i0.ɵɵgetCurrentView();
38237
38532
  i0.ɵɵelementStart(0, "igo-search-settings", 15);
38238
- i0.ɵɵlistener("pointerSummaryStatus", function SearchBarComponent_igo_search_settings_15_Template_igo_search_settings_pointerSummaryStatus_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.pointerSummaryStatus.emit($event)); })("searchResultsGeometryStatus", function SearchBarComponent_igo_search_settings_15_Template_igo_search_settings_searchResultsGeometryStatus_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.searchResultsGeometryStatus.emit($event)); })("searchSourceChange", function SearchBarComponent_igo_search_settings_15_Template_igo_search_settings_searchSourceChange_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r13 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r13.onSearchSettingsChange()); });
38533
+ i0.ɵɵlistener("pointerSummaryStatus", function SearchBarComponent_igo_search_settings_15_Template_igo_search_settings_pointerSummaryStatus_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.pointerSummaryStatus.emit($event)); })("searchResultsGeometryStatus", function SearchBarComponent_igo_search_settings_15_Template_igo_search_settings_searchResultsGeometryStatus_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.searchResultsGeometryStatus.emit($event)); })("reverseSearchCoordsFormatStatus", function SearchBarComponent_igo_search_settings_15_Template_igo_search_settings_reverseSearchCoordsFormatStatus_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r13 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r13.reverseSearchCoordsFormatStatus.emit($event)); })("searchSourceChange", function SearchBarComponent_igo_search_settings_15_Template_igo_search_settings_searchSourceChange_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r14 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r14.onSearchSettingsChange()); });
38239
38534
  i0.ɵɵelementEnd();
38240
38535
  } if (rf & 2) {
38241
38536
  const ctx_r5 = i0.ɵɵnextContext();
38242
- i0.ɵɵproperty("pointerSummaryEnabled", ctx_r5.pointerSummaryEnabled)("searchResultsGeometryEnabled", ctx_r5.searchResultsGeometryEnabled);
38537
+ i0.ɵɵproperty("pointerSummaryEnabled", ctx_r5.pointerSummaryEnabled)("searchResultsGeometryEnabled", ctx_r5.searchResultsGeometryEnabled)("reverseSearchCoordsFormatEnabled", ctx_r5.reverseSearchCoordsFormatEnabled);
38243
38538
  } }
38244
38539
  const _c1$2 = function (a0) { return { empty: a0 }; };
38245
38540
  const _c2$1 = function (a0) { return { "hasSearchIcon": a0 }; };
@@ -38276,10 +38571,15 @@ class SearchBarComponent {
38276
38571
  * Event emitted when the show geometry setting is changed
38277
38572
  */
38278
38573
  this.searchResultsGeometryStatus = new EventEmitter();
38574
+ /**
38575
+ * Event emitted when the coords format setting is changed
38576
+ */
38577
+ this.reverseSearchCoordsFormatStatus = new EventEmitter();
38279
38578
  this.term$ = new BehaviorSubject('');
38280
38579
  this.disabled$ = new BehaviorSubject(false);
38281
38580
  this.pointerSummaryEnabled = false;
38282
38581
  this.searchResultsGeometryEnabled = false;
38582
+ this._reverseSearchCoordsFormatEnabled = false;
38283
38583
  /**
38284
38584
  * Whether a float label should be displayed
38285
38585
  */
@@ -38358,6 +38658,16 @@ class SearchBarComponent {
38358
38658
  get disabled() {
38359
38659
  return this.disabled$.value;
38360
38660
  }
38661
+ /**
38662
+ * When reverse coordinates status change
38663
+ */
38664
+ get reverseSearchCoordsFormatEnabled() {
38665
+ return this._reverseSearchCoordsFormatEnabled;
38666
+ }
38667
+ set reverseSearchCoordsFormatEnabled(value) {
38668
+ this._reverseSearchCoordsFormatEnabled = value;
38669
+ this.setTerm(this.term, true);
38670
+ }
38361
38671
  /**
38362
38672
  * Whether the search bar is empty
38363
38673
  * @internal
@@ -38441,12 +38751,12 @@ class SearchBarComponent {
38441
38751
  * Send the term into the stream only if this component is not disabled
38442
38752
  * @param term Search term
38443
38753
  */
38444
- setTerm(term) {
38754
+ setTerm(term, reverseCoordEvent) {
38445
38755
  if (this.disabled) {
38446
38756
  return;
38447
38757
  }
38448
38758
  term = term || '';
38449
- if (term !== this.term) {
38759
+ if (term !== this.term && !reverseCoordEvent) {
38450
38760
  this.term$.next(term);
38451
38761
  }
38452
38762
  const slug = term.replace(/(#[^\s]*)/g, '').trim();
@@ -38575,7 +38885,7 @@ SearchBarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchBa
38575
38885
  } if (rf & 2) {
38576
38886
  let _t;
38577
38887
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.input = _t.first);
38578
- } }, inputs: { searchTypes: "searchTypes", searchType: "searchType", term: "term", disabled: "disabled", pointerSummaryEnabled: "pointerSummaryEnabled", searchResultsGeometryEnabled: "searchResultsGeometryEnabled", floatLabel: "floatLabel", appearance: "appearance", placeholder: "placeholder", label: "label", color: "color", termSplitter: "termSplitter", debounce: "debounce", minLength: "minLength", searchSelector: "searchSelector", searchSettings: "searchSettings", forceNA: "forceNA", store: "store" }, outputs: { pointerSummaryStatus: "pointerSummaryStatus", searchResultsGeometryStatus: "searchResultsGeometryStatus", searchTermChange: "searchTermChange", search: "search", searchTypeChange: "searchTypeChange", clearFeature: "clearFeature", searchSettingsChange: "searchSettingsChange" }, decls: 16, vars: 28, consts: [[1, "igo-search-bar-container", 3, "ngClass"], [3, "floatLabel", "appearance"], [4, "ngIf"], ["matInput", "", "autocomplete", "off", 3, "ngClass", "disabled", "placeholder", "value", "keyup", "touchend"], ["input", ""], [1, "search-bar-buttons"], ["mat-icon-button", "", 3, "color", "matTooltip", "click", 4, "ngIf"], ["mat-icon-button", "", 3, "color", 4, "ngIf"], [3, "searchTypes", "searchType", "searchTypeChange", 4, "ngIf"], [3, "pointerSummaryEnabled", "searchResultsGeometryEnabled", "pointerSummaryStatus", "searchResultsGeometryStatus", "searchSourceChange", 4, "ngIf"], ["mat-icon-button", "", 3, "color", "matTooltip", "click"], ["svgIcon", "close"], ["mat-icon-button", "", 3, "color"], ["svgIcon", "magnify"], [3, "searchTypes", "searchType", "searchTypeChange"], [3, "pointerSummaryEnabled", "searchResultsGeometryEnabled", "pointerSummaryStatus", "searchResultsGeometryStatus", "searchSourceChange"]], template: function SearchBarComponent_Template(rf, ctx) { if (rf & 1) {
38888
+ } }, inputs: { searchTypes: "searchTypes", searchType: "searchType", term: "term", disabled: "disabled", pointerSummaryEnabled: "pointerSummaryEnabled", searchResultsGeometryEnabled: "searchResultsGeometryEnabled", reverseSearchCoordsFormatEnabled: "reverseSearchCoordsFormatEnabled", floatLabel: "floatLabel", appearance: "appearance", placeholder: "placeholder", label: "label", color: "color", termSplitter: "termSplitter", debounce: "debounce", minLength: "minLength", searchSelector: "searchSelector", searchSettings: "searchSettings", forceNA: "forceNA", store: "store" }, outputs: { pointerSummaryStatus: "pointerSummaryStatus", searchResultsGeometryStatus: "searchResultsGeometryStatus", reverseSearchCoordsFormatStatus: "reverseSearchCoordsFormatStatus", searchTermChange: "searchTermChange", search: "search", searchTypeChange: "searchTypeChange", clearFeature: "clearFeature", searchSettingsChange: "searchSettingsChange" }, decls: 16, vars: 28, consts: [[1, "igo-search-bar-container", 3, "ngClass"], [3, "floatLabel", "appearance"], [4, "ngIf"], ["matInput", "", "autocomplete", "off", 3, "ngClass", "disabled", "placeholder", "value", "keyup", "touchend"], ["input", ""], [1, "search-bar-buttons"], ["mat-icon-button", "", 3, "color", "matTooltip", "click", 4, "ngIf"], ["mat-icon-button", "", 3, "color", 4, "ngIf"], [3, "searchTypes", "searchType", "searchTypeChange", 4, "ngIf"], [3, "pointerSummaryEnabled", "searchResultsGeometryEnabled", "reverseSearchCoordsFormatEnabled", "pointerSummaryStatus", "searchResultsGeometryStatus", "reverseSearchCoordsFormatStatus", "searchSourceChange", 4, "ngIf"], ["mat-icon-button", "", 3, "color", "matTooltip", "click"], ["svgIcon", "close"], ["mat-icon-button", "", 3, "color"], ["svgIcon", "magnify"], [3, "searchTypes", "searchType", "searchTypeChange"], [3, "pointerSummaryEnabled", "searchResultsGeometryEnabled", "reverseSearchCoordsFormatEnabled", "pointerSummaryStatus", "searchResultsGeometryStatus", "reverseSearchCoordsFormatStatus", "searchSourceChange"]], template: function SearchBarComponent_Template(rf, ctx) { if (rf & 1) {
38579
38889
  i0.ɵɵelementStart(0, "div", 0);
38580
38890
  i0.ɵɵpipe(1, "async");
38581
38891
  i0.ɵɵelementStart(2, "mat-form-field", 1);
@@ -38592,7 +38902,7 @@ SearchBarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchBa
38592
38902
  i0.ɵɵpipe(12, "async");
38593
38903
  i0.ɵɵtemplate(13, SearchBarComponent_button_13_Template, 2, 1, "button", 7);
38594
38904
  i0.ɵɵtemplate(14, SearchBarComponent_igo_search_selector_14_Template, 2, 4, "igo-search-selector", 8);
38595
- i0.ɵɵtemplate(15, SearchBarComponent_igo_search_settings_15_Template, 1, 2, "igo-search-settings", 9);
38905
+ i0.ɵɵtemplate(15, SearchBarComponent_igo_search_settings_15_Template, 1, 3, "igo-search-settings", 9);
38596
38906
  i0.ɵɵelementEnd()();
38597
38907
  } if (rf & 2) {
38598
38908
  i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(24, _c1$2, i0.ɵɵpipeBind1(1, 12, ctx.empty$)));
@@ -38610,10 +38920,10 @@ SearchBarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchBa
38610
38920
  i0.ɵɵproperty("ngIf", ctx.searchSelector);
38611
38921
  i0.ɵɵadvance(1);
38612
38922
  i0.ɵɵproperty("ngIf", ctx.searchSettings);
38613
- } }, dependencies: [i1$1.NgClass, i1$1.NgIf, i4.MatTooltip, i2.MatIcon, i3.MatButton, i13.MatFormField, i13.MatLabel, i14.MatInput, SearchSelectorComponent, SearchSettingsComponent, i1$1.AsyncPipe, i7.TranslatePipe], styles: ["[_nghost-%COMP%] .mat-form-field{padding:0 5px}[_nghost-%COMP%] .mat-form-field-wrapper{margin-bottom:-1.5em}[_nghost-%COMP%] span.mat-form-field-label-wrapper{top:-20px}[_nghost-%COMP%] div.mat-form-field-infix{left:5px;right:5px;padding:0 0 12px!important}[_nghost-%COMP%] div.mat-form-field-underline{display:none}.igo-search-bar-container[_ngcontent-%COMP%]{position:relative;width:100%;display:inline-flex;overflow:hidden}.igo-search-bar-container[_ngcontent-%COMP%] > mat-form-field[_ngcontent-%COMP%]{width:calc(100% - 80px)}.igo-search-bar-container.empty[_ngcontent-%COMP%] > mat-form-field[_ngcontent-%COMP%]{width:calc(100% - 40px)}.search-bar-buttons[_ngcontent-%COMP%]{position:relative;right:0px;display:inline-flex;top:0}.search-bar-buttons[_ngcontent-%COMP%] > button[_ngcontent-%COMP%]:nth-child(2):before{content:\"\";left:0px;top:5px;border-right:1px solid #ddd;height:28px}igo-search-selector[_ngcontent-%COMP%]{background-color:#fff;top:0;border-radius:0}igo-search-settings[_ngcontent-%COMP%]{background-color:#fff;top:0;border-radius:0}"], changeDetection: 0 });
38923
+ } }, dependencies: [i1.NgClass, i1.NgIf, i4.MatTooltip, i2.MatIcon, i3$1.MatButton, i13.MatFormField, i13.MatLabel, i14.MatInput, SearchSelectorComponent, SearchSettingsComponent, i1.AsyncPipe, i7.TranslatePipe], styles: ["[_nghost-%COMP%] .mat-form-field{padding:0 5px}[_nghost-%COMP%] .mat-form-field-wrapper{margin-bottom:-1.5em}[_nghost-%COMP%] span.mat-form-field-label-wrapper{top:-20px}[_nghost-%COMP%] div.mat-form-field-infix{left:5px;right:5px;padding:0 0 12px!important}[_nghost-%COMP%] div.mat-form-field-underline{display:none}.igo-search-bar-container[_ngcontent-%COMP%]{position:relative;width:100%;display:inline-flex;overflow:hidden}.igo-search-bar-container[_ngcontent-%COMP%] > mat-form-field[_ngcontent-%COMP%]{width:calc(100% - 80px)}.igo-search-bar-container.empty[_ngcontent-%COMP%] > mat-form-field[_ngcontent-%COMP%]{width:calc(100% - 40px)}.search-bar-buttons[_ngcontent-%COMP%]{position:relative;right:0px;display:inline-flex;top:0}.search-bar-buttons[_ngcontent-%COMP%] > button[_ngcontent-%COMP%]:nth-child(2):before{content:\"\";left:0px;top:5px;border-right:1px solid #ddd;height:28px}igo-search-selector[_ngcontent-%COMP%]{background-color:#fff;top:0;border-radius:0}igo-search-settings[_ngcontent-%COMP%]{background-color:#fff;top:0;border-radius:0}"], changeDetection: 0 });
38614
38924
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchBarComponent, [{
38615
38925
  type: Component,
38616
- args: [{ selector: 'igo-search-bar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"igo-search-bar-container\" [ngClass]=\"{empty: empty$ | async}\">\n <mat-form-field [floatLabel]=\"floatLabel\" [appearance]=\"appearance\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input\n #input\n matInput\n autocomplete=\"off\"\n [ngClass]=\"{'hasSearchIcon': showSearchButton}\"\n [disabled]=\"disabled$ | async\"\n [placeholder]=\"placeholder ? placeholder : (placeholder$ | async) ? (placeholder$.value | translate) : undefined\"\n [value]=\"term$ | async\"\n (keyup)=\"onKeyup($event)\"\n (touchend)=\"onKeyup($event)\">\n </mat-form-field>\n\n <div class=\"search-bar-buttons\">\n <button *ngIf=\"(empty$ | async)===false\"\n mat-icon-button\n [color]=\"color\"\n (click)=\"onClearButtonClick()\"\n [matTooltip]=\"'igo.geo.search.clearSearch' | translate\">\n <mat-icon svgIcon=\"close\"></mat-icon>\n </button>\n \n <button *ngIf=\"showSearchButton\"\n mat-icon-button\n [color]=\"color\">\n <mat-icon svgIcon=\"magnify\"></mat-icon>\n </button>\n\n <igo-search-selector\n *ngIf=\"searchSelector\"\n [searchTypes]=\"searchTypes\"\n [searchType]=\"searchType$ | async\"\n (searchTypeChange)=\"onSearchTypeChange($event)\">\n </igo-search-selector>\n\n <igo-search-settings\n *ngIf=\"searchSettings\"\n [pointerSummaryEnabled]=\"pointerSummaryEnabled\"\n (pointerSummaryStatus)=\"pointerSummaryStatus.emit($event)\"\n [searchResultsGeometryEnabled]=\"searchResultsGeometryEnabled\"\n (searchResultsGeometryStatus)=\"searchResultsGeometryStatus.emit($event)\"\n (searchSourceChange)=\"onSearchSettingsChange()\">\n </igo-search-settings>\n </div>\n</div>\n", styles: [":host ::ng-deep .mat-form-field{padding:0 5px}:host ::ng-deep .mat-form-field-wrapper{margin-bottom:-1.5em}:host ::ng-deep span.mat-form-field-label-wrapper{top:-20px}:host ::ng-deep div.mat-form-field-infix{left:5px;right:5px;padding:0 0 12px!important}:host ::ng-deep div.mat-form-field-underline{display:none}.igo-search-bar-container{position:relative;width:100%;display:inline-flex;overflow:hidden}.igo-search-bar-container>mat-form-field{width:calc(100% - 80px)}.igo-search-bar-container.empty>mat-form-field{width:calc(100% - 40px)}.search-bar-buttons{position:relative;right:0px;display:inline-flex;top:0}.search-bar-buttons>button:nth-child(2):before{content:\"\";left:0px;top:5px;border-right:1px solid #ddd;height:28px}igo-search-selector{background-color:#fff;top:0;border-radius:0}igo-search-settings{background-color:#fff;top:0;border-radius:0}\n"] }]
38926
+ args: [{ selector: 'igo-search-bar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"igo-search-bar-container\" [ngClass]=\"{empty: empty$ | async}\">\n <mat-form-field [floatLabel]=\"floatLabel\" [appearance]=\"appearance\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input\n #input\n matInput\n autocomplete=\"off\"\n [ngClass]=\"{'hasSearchIcon': showSearchButton}\"\n [disabled]=\"disabled$ | async\"\n [placeholder]=\"placeholder ? placeholder : (placeholder$ | async) ? (placeholder$.value | translate) : undefined\"\n [value]=\"term$ | async\"\n (keyup)=\"onKeyup($event)\"\n (touchend)=\"onKeyup($event)\">\n </mat-form-field>\n\n <div class=\"search-bar-buttons\">\n <button *ngIf=\"(empty$ | async)===false\"\n mat-icon-button\n [color]=\"color\"\n (click)=\"onClearButtonClick()\"\n [matTooltip]=\"'igo.geo.search.clearSearch' | translate\">\n <mat-icon svgIcon=\"close\"></mat-icon>\n </button>\n \n <button *ngIf=\"showSearchButton\"\n mat-icon-button\n [color]=\"color\">\n <mat-icon svgIcon=\"magnify\"></mat-icon>\n </button>\n\n <igo-search-selector\n *ngIf=\"searchSelector\"\n [searchTypes]=\"searchTypes\"\n [searchType]=\"searchType$ | async\"\n (searchTypeChange)=\"onSearchTypeChange($event)\">\n </igo-search-selector>\n\n <igo-search-settings\n *ngIf=\"searchSettings\"\n [pointerSummaryEnabled]=\"pointerSummaryEnabled\"\n (pointerSummaryStatus)=\"pointerSummaryStatus.emit($event)\"\n [searchResultsGeometryEnabled]=\"searchResultsGeometryEnabled\"\n (searchResultsGeometryStatus)=\"searchResultsGeometryStatus.emit($event)\"\n [reverseSearchCoordsFormatEnabled]=\"reverseSearchCoordsFormatEnabled\"\n (reverseSearchCoordsFormatStatus)=\"reverseSearchCoordsFormatStatus.emit($event)\"\n (searchSourceChange)=\"onSearchSettingsChange()\">\n </igo-search-settings>\n </div>\n</div>\n", styles: [":host ::ng-deep .mat-form-field{padding:0 5px}:host ::ng-deep .mat-form-field-wrapper{margin-bottom:-1.5em}:host ::ng-deep span.mat-form-field-label-wrapper{top:-20px}:host ::ng-deep div.mat-form-field-infix{left:5px;right:5px;padding:0 0 12px!important}:host ::ng-deep div.mat-form-field-underline{display:none}.igo-search-bar-container{position:relative;width:100%;display:inline-flex;overflow:hidden}.igo-search-bar-container>mat-form-field{width:calc(100% - 80px)}.igo-search-bar-container.empty>mat-form-field{width:calc(100% - 40px)}.search-bar-buttons{position:relative;right:0px;display:inline-flex;top:0}.search-bar-buttons>button:nth-child(2):before{content:\"\";left:0px;top:5px;border-right:1px solid #ddd;height:28px}igo-search-selector{background-color:#fff;top:0;border-radius:0}igo-search-settings{background-color:#fff;top:0;border-radius:0}\n"] }]
38617
38927
  }], function () { return [{ type: i2$1.ConfigService }, { type: SearchService }, { type: SearchSourceService }]; }, { searchTypes: [{
38618
38928
  type: Input
38619
38929
  }], searchType: [{
@@ -38622,6 +38932,8 @@ SearchBarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchBa
38622
38932
  type: Output
38623
38933
  }], searchResultsGeometryStatus: [{
38624
38934
  type: Output
38935
+ }], reverseSearchCoordsFormatStatus: [{
38936
+ type: Output
38625
38937
  }], term: [{
38626
38938
  type: Input
38627
38939
  }], disabled: [{
@@ -38630,6 +38942,8 @@ SearchBarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchBa
38630
38942
  type: Input
38631
38943
  }], searchResultsGeometryEnabled: [{
38632
38944
  type: Input
38945
+ }], reverseSearchCoordsFormatEnabled: [{
38946
+ type: Input
38633
38947
  }], floatLabel: [{
38634
38948
  type: Input
38635
38949
  }], appearance: [{
@@ -38855,11 +39169,11 @@ SearchResultsItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
38855
39169
  i0.ɵɵproperty("ngIf", !ctx.titleHtml);
38856
39170
  i0.ɵɵadvance(1);
38857
39171
  i0.ɵɵproperty("ngIf", ctx.withZoomButton);
38858
- } }, dependencies: [i1$1.NgIf, i4.MatTooltip, i2.MatIcon, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i3.MatButton, i5$1.StopPropagationDirective], styles: ["[_nghost-%COMP%] small{color:#8c8c8c} .search-result-tooltip{white-space:pre-line}"], changeDetection: 0 });
39172
+ } }, dependencies: [i1.NgIf, i4.MatTooltip, i2.MatIcon, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i3$1.MatButton, i5$1.StopPropagationDirective], styles: ["[_nghost-%COMP%] small{color:#8c8c8c} .search-result-tooltip{white-space:pre-line}"], changeDetection: 0 });
38859
39173
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchResultsItemComponent, [{
38860
39174
  type: Component,
38861
39175
  args: [{ selector: 'igo-search-results-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item>\n <mat-icon *ngIf=\"icon\" mat-list-avatar svgIcon=\"{{showIcons ? icon : 'blank'}}\"></mat-icon>\n\n <h4 matLine *ngIf=\"titleHtml\" [innerHtml]=\"titleHtml\" matTooltipShowDelay=\"500\" [matTooltip]=\"tooltipHtml\" matTooltipClass=\"search-result-tooltip\"></h4>\n <h4 matLine *ngIf=\"!titleHtml\" matTooltipShowDelay=\"500\" [matTooltip]=\"title\">{{title}}</h4>\n\n <button *ngIf=\"withZoomButton\"\n igoStopPropagation\n mat-icon-button\n (click)=\"onZoomHandler()\">\n <mat-icon svgIcon=\"magnify\"></mat-icon>\n </button>\n\n <ng-content\n select=[igoSearchItemToolbar]>\n </ng-content>\n\n</mat-list-item>\n", styles: [":host ::ng-deep small{color:#8c8c8c}::ng-deep .search-result-tooltip{white-space:pre-line}\n"] }]
38862
- }], function () { return []; }, { result: [{
39176
+ }], null, { result: [{
38863
39177
  type: Input
38864
39178
  }], map: [{
38865
39179
  type: Input
@@ -39163,7 +39477,7 @@ SearchResultsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Sear
39163
39477
  i0.ɵɵproperty("navigation", true);
39164
39478
  i0.ɵɵadvance(1);
39165
39479
  i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(3, 2, ctx.results$));
39166
- } }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i1$1.NgTemplateOutlet, i5$1.CollapsibleComponent, i5$1.ListItemDirective, i5$1.ListComponent, SearchResultsItemComponent, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".moreResults[_ngcontent-%COMP%]{cursor:pointer;color:#00f;float:right;margin-right:10px;margin-top:5px}igo-list[_ngcontent-%COMP%] mat-list{height:100%}"], changeDetection: 0 });
39480
+ } }, dependencies: [i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i5$1.CollapsibleComponent, i5$1.ListItemDirective, i5$1.ListComponent, SearchResultsItemComponent, i1.AsyncPipe, i7.TranslatePipe], styles: [".moreResults[_ngcontent-%COMP%]{cursor:pointer;color:#00f;float:right;margin-right:10px;margin-top:5px}igo-list[_ngcontent-%COMP%] mat-list{height:100%}"], changeDetection: 0 });
39167
39481
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchResultsComponent, [{
39168
39482
  type: Component,
39169
39483
  args: [{ selector: 'igo-search-results', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-list [navigation]=\"true\">\n <ng-template\n #groupTemplate\n ngFor let-group\n [ngForOf]=\"results$ | async\">\n\n <igo-collapsible [class]=\"group.source.getId()\"\n *ngIf=\"mode === searchResultMode.Grouped; else flatTemplate\"\n [title]=\"computeGroupTitle(group)\"\n [collapsed]=\"collapsed[group.source.title]\"\n (toggle)=\"collapsed[group.source.title] = $event\">\n <ng-container *ngTemplateOutlet=\"storeItemTemplate; context: {results: group.results}\"></ng-container>\n </igo-collapsible>\n\n <ng-template #flatTemplate>\n <ng-container *ngTemplateOutlet=\"storeItemTemplate; context: {results: group.results}\"></ng-container>\n </ng-template>\n\n <ng-template #storeItemTemplate let-results=\"results\">\n <ng-template ngFor let-result [ngForOf]=\"results\">\n <igo-search-results-item\n igoListItem\n color=\"accent\"\n [map]=\"map\"\n [result]=\"result\"\n [showIcons]=\"showIcons\"\n [withZoomButton]=\"withZoomButton\"\n [focused]=\"store.state.get(result).focused\"\n [selected]=\"store.state.get(result).selected\"\n (focus)=\"resultFocus.emit(result)\"\n (unfocus)=\"resultUnfocus.emit(result)\"\n (select)=\"onResultSelect(result)\"\n (mouseenter)=\"resultFocus.emit(result)\"\n (mouseleave)=\"resultUnfocus.emit(result)\">\n\n <ng-container igoSearchItemToolbar\n [ngTemplateOutlet]=\"templateSearchToolbar\"\n [ngTemplateOutletContext]=\"{result: result}\">\n </ng-container>\n\n </igo-search-results-item>\n </ng-template>\n <span class=\"moreResults mat-typography\" *ngIf=\"isMoreResults(group)\" (click)=\"displayMoreResults(group)\">\n <u>{{ 'igo.geo.search.displayMoreResults' | translate }}</u>\n </span>\n </ng-template>\n\n </ng-template>\n\n</igo-list>\n", styles: [".moreResults{cursor:pointer;color:#00f;float:right;margin-right:10px;margin-top:5px}igo-list ::ng-deep mat-list{height:100%}\n"] }]
@@ -39200,32 +39514,157 @@ SearchResultsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Sear
39200
39514
  args: ['igoSearchItemToolbar', /* TODO: add static flag */ {}]
39201
39515
  }] }); })();
39202
39516
 
39517
+ function SaveFeatureDialogComponent_mat_option_13_Template(rf, ctx) { if (rf & 1) {
39518
+ i0.ɵɵelementStart(0, "mat-option", 14)(1, "p", 15);
39519
+ i0.ɵɵtext(2);
39520
+ i0.ɵɵelementEnd()();
39521
+ } if (rf & 2) {
39522
+ const layer_r2 = ctx.$implicit;
39523
+ i0.ɵɵproperty("value", layer_r2);
39524
+ i0.ɵɵadvance(2);
39525
+ i0.ɵɵtextInterpolate(layer_r2.title);
39526
+ } }
39527
+ class SaveFeatureDialogComponent {
39528
+ constructor(formBuilder, languageService, dialogRef, data) {
39529
+ this.formBuilder = formBuilder;
39530
+ this.languageService = languageService;
39531
+ this.dialogRef = dialogRef;
39532
+ this.data = data;
39533
+ this.layers = [];
39534
+ this.form = this.formBuilder.group({
39535
+ layerName: ['', [Validators.required]],
39536
+ });
39537
+ }
39538
+ ngOnInit() {
39539
+ this.feature = this.data.feature;
39540
+ this.layers = this.data.layers;
39541
+ this.filteredLayers = this.form.controls['layerName'].valueChanges.pipe(startWith(''), map(val => this.filter(val)));
39542
+ }
39543
+ filter(val) {
39544
+ if (typeof val !== 'string') {
39545
+ return;
39546
+ }
39547
+ return this.layers.map(l => l).filter(layer => layer?.title?.toLowerCase().includes(val.toLowerCase()));
39548
+ }
39549
+ displayFn(layer) {
39550
+ return layer && layer.title ? layer.title : '';
39551
+ }
39552
+ save() {
39553
+ const data = { layer: this.form.value.layerName, feature: this.feature };
39554
+ this.dialogRef.close(data);
39555
+ }
39556
+ cancel() {
39557
+ this.dialogRef.close();
39558
+ }
39559
+ }
39560
+ SaveFeatureDialogComponent.ɵfac = function SaveFeatureDialogComponent_Factory(t) { return new (t || SaveFeatureDialogComponent)(i0.ɵɵdirectiveInject(i2$2.UntypedFormBuilder), i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i3.MatDialogRef), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA, 8)); };
39561
+ SaveFeatureDialogComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SaveFeatureDialogComponent, selectors: [["igo-save-feature-dialog"]], decls: 23, vars: 21, consts: [["mat-dialog-title", "", 1, "mat-typography"], ["mat-dialog-content", "", 1, "mat-typography"], [1, "igo-form", 3, "formGroup"], [3, "navigation", "selection"], ["igoListItem", "", "color", "accent", "showIcons", "true", 3, "result"], [1, "igo-input-container"], ["type", "text", "matInput", "", "formControlName", "layerName", 3, "placeholder", "matAutocomplete"], [3, "displayWith"], ["auto", "matAutocomplete"], [3, "value", 4, "ngFor", "ngForOf"], ["mat-dialog-actions", "", 2, "justify-content", "center"], [1, "igo-form-button-group", "create-layer-button-top-padding"], ["mat-raised-button", "", "type", "button", 3, "click"], ["id", "createLayerBtnDialog", "mat-raised-button", "", "type", "button", "color", "primary", 3, "click"], [3, "value"], ["mat-line", ""]], template: function SaveFeatureDialogComponent_Template(rf, ctx) { if (rf & 1) {
39562
+ i0.ɵɵelementStart(0, "h1", 0);
39563
+ i0.ɵɵtext(1);
39564
+ i0.ɵɵpipe(2, "translate");
39565
+ i0.ɵɵelementEnd();
39566
+ i0.ɵɵelementStart(3, "div", 1)(4, "form", 2)(5, "igo-list", 3);
39567
+ i0.ɵɵelement(6, "igo-search-results-item", 4);
39568
+ i0.ɵɵelementEnd();
39569
+ i0.ɵɵelementStart(7, "div", 5)(8, "mat-form-field");
39570
+ i0.ɵɵelement(9, "input", 6);
39571
+ i0.ɵɵpipe(10, "translate");
39572
+ i0.ɵɵelementStart(11, "mat-autocomplete", 7, 8);
39573
+ i0.ɵɵtemplate(13, SaveFeatureDialogComponent_mat_option_13_Template, 3, 2, "mat-option", 9);
39574
+ i0.ɵɵpipe(14, "async");
39575
+ i0.ɵɵelementEnd()()()()();
39576
+ i0.ɵɵelementStart(15, "div", 10)(16, "div", 11)(17, "button", 12);
39577
+ i0.ɵɵlistener("click", function SaveFeatureDialogComponent_Template_button_click_17_listener() { return ctx.cancel(); });
39578
+ i0.ɵɵtext(18);
39579
+ i0.ɵɵpipe(19, "translate");
39580
+ i0.ɵɵelementEnd();
39581
+ i0.ɵɵelementStart(20, "button", 13);
39582
+ i0.ɵɵlistener("click", function SaveFeatureDialogComponent_Template_button_click_20_listener() { return ctx.save(); });
39583
+ i0.ɵɵtext(21);
39584
+ i0.ɵɵpipe(22, "translate");
39585
+ i0.ɵɵelementEnd()()();
39586
+ } if (rf & 2) {
39587
+ const _r0 = i0.ɵɵreference(12);
39588
+ i0.ɵɵadvance(1);
39589
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 11, "igo.geo.layer.saveFeatureInLayer"));
39590
+ i0.ɵɵadvance(3);
39591
+ i0.ɵɵproperty("formGroup", ctx.form);
39592
+ i0.ɵɵadvance(1);
39593
+ i0.ɵɵproperty("navigation", false)("selection", false);
39594
+ i0.ɵɵadvance(1);
39595
+ i0.ɵɵproperty("result", ctx.feature);
39596
+ i0.ɵɵadvance(3);
39597
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(10, 13, "igo.geo.layer.chooseOrSet"));
39598
+ i0.ɵɵproperty("matAutocomplete", _r0);
39599
+ i0.ɵɵadvance(2);
39600
+ i0.ɵɵproperty("displayWith", ctx.displayFn);
39601
+ i0.ɵɵadvance(2);
39602
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(14, 15, ctx.filteredLayers));
39603
+ i0.ɵɵadvance(5);
39604
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(19, 17, "igo.geo.layer.cancelBtn"), " ");
39605
+ i0.ɵɵadvance(3);
39606
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(22, 19, "igo.geo.layer.saveBtn"), " ");
39607
+ } }, dependencies: [i1.NgForOf, i9.MatLine, i3$1.MatButton, i3.MatDialogTitle, i3.MatDialogContent, i3.MatDialogActions, i5$1.ListItemDirective, i5$1.ListComponent, i13.MatFormField, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.FormGroupDirective, i2$2.FormControlName, i14.MatInput, i9.MatOption, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, SearchResultsItemComponent, i1.AsyncPipe, i7.TranslatePipe], styles: ["mat-form-field[_ngcontent-%COMP%]{width:100%}.create-layer-button-top-padding[_ngcontent-%COMP%]{padding-top:25px}.igo-form[_ngcontent-%COMP%]{padding:10px 5px 5px}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center}button[_ngcontent-%COMP%]{cursor:pointer}button#createLayerBtnDialog[disabled=true][_ngcontent-%COMP%]{cursor:default;background-color:#0000001f;color:#00000042}.error[_ngcontent-%COMP%]{color:red}"] });
39608
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SaveFeatureDialogComponent, [{
39609
+ type: Component,
39610
+ args: [{ selector: 'igo-save-feature-dialog', template: "<h1 mat-dialog-title class=\"mat-typography\">{{'igo.geo.layer.saveFeatureInLayer' | translate}}</h1>\n\n<div mat-dialog-content class=\"mat-typography\">\n <form class=\"igo-form\" [formGroup]=\"form\">\n <igo-list [navigation]=\"false\" [selection]=\"false\">\n <igo-search-results-item\n igoListItem\n color=\"accent\"\n [result]=\"feature\"\n showIcons=\"true\">\n </igo-search-results-item>\n </igo-list>\n \n <div class=\"igo-input-container\">\n <mat-form-field>\n <input type=\"text\"\n placeholder=\"{{'igo.geo.layer.chooseOrSet' | translate}}\"\n matInput\n [matAutocomplete]=\"auto\"\n formControlName=\"layerName\">\n <mat-autocomplete [displayWith]=\"displayFn\" #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let layer of filteredLayers | async\" [value]=\"layer\">\n <p mat-line>{{layer.title}}</p>\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n </form>\n</div>\n\n<div mat-dialog-actions style=\"justify-content: center\">\n <div class=\"igo-form-button-group create-layer-button-top-padding\">\n <button\n mat-raised-button\n type=\"button\"\n (click)=\"cancel()\">\n {{'igo.geo.layer.cancelBtn' | translate}}\n </button>\n <button\n id=\"createLayerBtnDialog\"\n mat-raised-button\n type=\"button\"\n color=\"primary\"\n (click)=\"save()\">\n {{'igo.geo.layer.saveBtn' | translate}}\n </button>\n </div>\n</div>", styles: ["mat-form-field{width:100%}.create-layer-button-top-padding{padding-top:25px}.igo-form{padding:10px 5px 5px}.igo-form-button-group{text-align:center}button{cursor:pointer}button#createLayerBtnDialog[disabled=true]{cursor:default;background-color:#0000001f;color:#00000042}.error{color:red}\n"] }]
39611
+ }], function () { return [{ type: i2$2.UntypedFormBuilder }, { type: i2$1.LanguageService }, { type: i3.MatDialogRef }, { type: undefined, decorators: [{
39612
+ type: Optional
39613
+ }, {
39614
+ type: Inject,
39615
+ args: [MAT_DIALOG_DATA]
39616
+ }] }]; }, null); })();
39617
+
39203
39618
  function SearchResultAddButtonComponent_button_0_Template(rf, ctx) { if (rf & 1) {
39204
- const _r2 = i0.ɵɵgetCurrentView();
39205
- i0.ɵɵelementStart(0, "button", 1);
39206
- i0.ɵɵlistener("mouseenter", function SearchResultAddButtonComponent_button_0_Template_button_mouseenter_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onMouseEvent($event)); })("mouseleave", function SearchResultAddButtonComponent_button_0_Template_button_mouseleave_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.onMouseEvent($event)); })("click", function SearchResultAddButtonComponent_button_0_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.onToggleClick($event)); });
39619
+ const _r3 = i0.ɵɵgetCurrentView();
39620
+ i0.ɵɵelementStart(0, "button", 2);
39621
+ i0.ɵɵlistener("mouseenter", function SearchResultAddButtonComponent_button_0_Template_button_mouseenter_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onMouseEvent($event)); })("mouseleave", function SearchResultAddButtonComponent_button_0_Template_button_mouseleave_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.onMouseEvent($event)); })("click", function SearchResultAddButtonComponent_button_0_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.onToggleClick($event)); });
39207
39622
  i0.ɵɵpipe(1, "translate");
39208
39623
  i0.ɵɵpipe(2, "async");
39209
- i0.ɵɵpipe(3, "async");
39210
- i0.ɵɵelement(4, "mat-icon", 2);
39624
+ i0.ɵɵelement(3, "mat-icon", 3);
39625
+ i0.ɵɵpipe(4, "async");
39211
39626
  i0.ɵɵpipe(5, "async");
39212
39627
  i0.ɵɵpipe(6, "async");
39628
+ i0.ɵɵpipe(7, "async");
39629
+ i0.ɵɵpipe(8, "async");
39630
+ i0.ɵɵpipe(9, "async");
39631
+ i0.ɵɵpipe(10, "async");
39213
39632
  i0.ɵɵelementEnd();
39214
39633
  } if (rf & 2) {
39215
39634
  const ctx_r0 = i0.ɵɵnextContext();
39216
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 4, i0.ɵɵpipeBind1(2, 6, ctx_r0.tooltip$)))("color", i0.ɵɵpipeBind1(3, 8, ctx_r0.isPreview$) ? "" : ctx_r0.added ? "warn" : "");
39217
- i0.ɵɵadvance(4);
39218
- i0.ɵɵproperty("matBadgeHidden", i0.ɵɵpipeBind1(5, 10, ctx_r0.inRange$))("svgIcon", i0.ɵɵpipeBind1(6, 12, ctx_r0.isPreview$) ? "plus" : ctx_r0.added ? "delete" : "plus");
39635
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 6, ctx_r0.computeTooltip()))("color", i0.ɵɵpipeBind1(2, 8, ctx_r0.isPreview$) ? "" : ctx_r0.added ? "warn" : "");
39636
+ i0.ɵɵadvance(3);
39637
+ i0.ɵɵproperty("igoMatBadgeIcon", ctx_r0.getBadgeIcon())("matBadgeHidden", i0.ɵɵpipeBind1(4, 10, ctx_r0.inRange$) && i0.ɵɵpipeBind1(5, 12, ctx_r0.isVisible$) === true || i0.ɵɵpipeBind1(6, 14, ctx_r0.inRange$) && !ctx_r0.added || i0.ɵɵpipeBind1(7, 16, ctx_r0.inRange$) && i0.ɵɵpipeBind1(8, 18, ctx_r0.isPreview$))("matBadgeDisabled", i0.ɵɵpipeBind1(9, 20, ctx_r0.inRange$) === false)("svgIcon", i0.ɵɵpipeBind1(10, 22, ctx_r0.isPreview$) ? "plus" : ctx_r0.added ? "delete" : "plus");
39638
+ } }
39639
+ function SearchResultAddButtonComponent_button_1_Template(rf, ctx) { if (rf & 1) {
39640
+ const _r7 = i0.ɵɵgetCurrentView();
39641
+ i0.ɵɵelementStart(0, "button", 4);
39642
+ i0.ɵɵlistener("click", function SearchResultAddButtonComponent_button_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r6 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r6.addFeatureToLayer()); });
39643
+ i0.ɵɵpipe(1, "translate");
39644
+ i0.ɵɵpipe(2, "async");
39645
+ i0.ɵɵelement(3, "mat-icon", 5);
39646
+ i0.ɵɵpipe(4, "async");
39647
+ i0.ɵɵelementEnd();
39648
+ } if (rf & 2) {
39649
+ const ctx_r1 = i0.ɵɵnextContext();
39650
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 2, i0.ɵɵpipeBind1(2, 4, ctx_r1.addFeatureToLayerTooltip$)));
39651
+ i0.ɵɵadvance(3);
39652
+ i0.ɵɵproperty("matBadgeHidden", i0.ɵɵpipeBind1(4, 6, ctx_r1.inRange$));
39219
39653
  } }
39220
39654
  class SearchResultAddButtonComponent {
39221
- constructor(layerService) {
39655
+ constructor(layerService, dialog, dataSourceService) {
39222
39656
  this.layerService = layerService;
39657
+ this.dialog = dialog;
39658
+ this.dataSourceService = dataSourceService;
39223
39659
  this.tooltip$ = new BehaviorSubject('igo.geo.catalog.layer.addToMap');
39660
+ this.addFeatureToLayerTooltip$ = new BehaviorSubject('igo.geo.search.addToLayer');
39224
39661
  this.inRange$ = new BehaviorSubject(true);
39662
+ this.isVisible$ = new BehaviorSubject(false);
39225
39663
  this.isPreview$ = new BehaviorSubject(false);
39226
39664
  this.layersSubcriptions = [];
39227
39665
  this.mouseInsideAdd = false;
39228
39666
  this._color = 'primary';
39667
+ this.stores = [];
39229
39668
  }
39230
39669
  get color() {
39231
39670
  return this._color;
@@ -39233,6 +39672,9 @@ class SearchResultAddButtonComponent {
39233
39672
  set color(value) {
39234
39673
  this._color = value;
39235
39674
  }
39675
+ get allLayers() {
39676
+ return this.map.layers.filter((layer) => layer.id.includes('igo-search-layer'));
39677
+ }
39236
39678
  /**
39237
39679
  * @internal
39238
39680
  */
@@ -39241,13 +39683,17 @@ class SearchResultAddButtonComponent {
39241
39683
  this.added =
39242
39684
  this.map.layers.findIndex(lay => lay.id === this.layer.data.sourceOptions.id) !== -1;
39243
39685
  }
39686
+ this.layers$$ = this.map.layers$.subscribe(() => {
39687
+ this.isVisible();
39688
+ });
39244
39689
  this.resolution$$ = this.map.viewController.resolution$.subscribe(value => {
39245
39690
  this.isInResolutionsRange(value);
39246
- this.tooltip$.next(this.computeTooltip());
39691
+ this.isVisible();
39247
39692
  });
39248
39693
  }
39249
39694
  ngOnDestroy() {
39250
39695
  this.resolution$$.unsubscribe();
39696
+ this.layers$$.unsubscribe();
39251
39697
  }
39252
39698
  /**
39253
39699
  * On mouse event, mouseenter /mouseleave
@@ -39349,11 +39795,33 @@ class SearchResultAddButtonComponent {
39349
39795
  const maxResolution = this.layer.data.maxResolution || Infinity;
39350
39796
  this.inRange$.next(resolution >= minResolution && resolution <= maxResolution);
39351
39797
  }
39798
+ isVisible() {
39799
+ if (this.layer?.data?.sourceOptions?.id) {
39800
+ const oLayer = this.map.getLayerById(this.layer.data.sourceOptions.id);
39801
+ oLayer ? this.isVisible$.next(oLayer.visible) : this.isVisible$.next(false);
39802
+ }
39803
+ }
39804
+ getBadgeIcon() {
39805
+ if (this.inRange$.value) {
39806
+ return this.isVisible$.value ? '' : 'eye-off';
39807
+ }
39808
+ else {
39809
+ return 'eye-off';
39810
+ }
39811
+ }
39352
39812
  computeTooltip() {
39353
39813
  if (this.added) {
39354
- return this.inRange$.value
39355
- ? 'igo.geo.catalog.layer.removeFromMap'
39356
- : 'igo.geo.catalog.layer.removeFromMapOutRange';
39814
+ if (this.isPreview$.value) {
39815
+ return 'igo.geo.catalog.layer.addToMap';
39816
+ }
39817
+ else if (this.inRange$.value) {
39818
+ return this.isVisible$.value
39819
+ ? 'igo.geo.catalog.layer.removeFromMap'
39820
+ : 'igo.geo.catalog.layer.removeFromMapNotVisible';
39821
+ }
39822
+ else {
39823
+ return 'igo.geo.catalog.layer.removeFromMapOutRange';
39824
+ }
39357
39825
  }
39358
39826
  else {
39359
39827
  return this.inRange$.value
@@ -39361,17 +39829,133 @@ class SearchResultAddButtonComponent {
39361
39829
  : 'igo.geo.catalog.layer.addToMapOutRange';
39362
39830
  }
39363
39831
  }
39832
+ addFeatureToLayer() {
39833
+ if (this.layer.meta.dataType !== 'Feature') {
39834
+ return;
39835
+ }
39836
+ const selectedFeature = this.layer;
39837
+ const dialogRef = this.dialog.open(SaveFeatureDialogComponent, {
39838
+ width: '700px',
39839
+ data: {
39840
+ feature: selectedFeature,
39841
+ layers: this.allLayers
39842
+ }
39843
+ });
39844
+ dialogRef.afterClosed().subscribe((data) => {
39845
+ if (data) {
39846
+ if (this.stores.length > 0) {
39847
+ this.stores.map((store) => {
39848
+ store.state.updateAll({ selected: false });
39849
+ (store?.layer).visible = false;
39850
+ return store;
39851
+ });
39852
+ }
39853
+ // check if is new layer
39854
+ if (typeof data.layer === 'string') {
39855
+ this.createLayer(data.layer, data.feature);
39856
+ }
39857
+ else {
39858
+ const activeStore = this.stores.find(store => store.layer.id === data.layer.id);
39859
+ activeStore.layer.visible = true;
39860
+ activeStore.layer.opacity = 1;
39861
+ this.addFeature(data.feature, activeStore);
39862
+ }
39863
+ }
39864
+ });
39865
+ }
39866
+ createLayer(layerTitle, selectedFeature) {
39867
+ const activeStore = new FeatureStore([], {
39868
+ map: this.map
39869
+ });
39870
+ // set layer id
39871
+ let layerCounterID = 0;
39872
+ for (const layer of this.allLayers) {
39873
+ let numberId = Number(layer.id.replace('igo-search-layer', ''));
39874
+ layerCounterID = Math.max(numberId, layerCounterID);
39875
+ }
39876
+ this.dataSourceService
39877
+ .createAsyncDataSource({
39878
+ type: 'vector',
39879
+ queryable: true
39880
+ })
39881
+ .pipe(take$1(1))
39882
+ .subscribe((dataSource) => {
39883
+ let searchLayer = new VectorLayer({
39884
+ isIgoInternalLayer: true,
39885
+ id: 'igo-search-layer' + ++layerCounterID,
39886
+ title: layerTitle,
39887
+ source: dataSource,
39888
+ style: createOverlayDefaultStyle({
39889
+ text: '',
39890
+ strokeWidth: 1,
39891
+ fillColor: 'rgba(255,255,255,0.4)',
39892
+ strokeColor: 'rgba(143,7,7,1)'
39893
+ }),
39894
+ showInLayerList: true,
39895
+ exportable: true,
39896
+ workspace: {
39897
+ enabled: true
39898
+ }
39899
+ });
39900
+ tryBindStoreLayer(activeStore, searchLayer);
39901
+ tryAddLoadingStrategy(activeStore, new FeatureStoreLoadingStrategy({
39902
+ motion: FeatureMotion.None
39903
+ }));
39904
+ tryAddSelectionStrategy(activeStore, new FeatureStoreSelectionStrategy({
39905
+ map: this.map,
39906
+ motion: FeatureMotion.None,
39907
+ many: true
39908
+ }));
39909
+ activeStore.layer.visible = true;
39910
+ activeStore.source.ol.on('removefeature', (event) => {
39911
+ const olGeometry = event.feature.getGeometry();
39912
+ this.clearLabelsOfOlGeometry(olGeometry);
39913
+ });
39914
+ this.addFeature(selectedFeature, activeStore);
39915
+ this.stores.push(activeStore);
39916
+ });
39917
+ }
39918
+ addFeature(feature, activeStore) {
39919
+ const newFeature = {
39920
+ type: feature.data.type,
39921
+ geometry: {
39922
+ coordinates: feature.data.geometry.coordinates,
39923
+ type: feature.data.geometry.type
39924
+ },
39925
+ projection: feature.data.projection,
39926
+ properties: feature.data.properties,
39927
+ meta: {
39928
+ id: feature.meta.id
39929
+ }
39930
+ };
39931
+ delete newFeature.properties.Route;
39932
+ activeStore.update(newFeature);
39933
+ activeStore.setLayerExtent();
39934
+ activeStore.layer.ol.getSource().refresh();
39935
+ }
39936
+ clearLabelsOfOlGeometry(olGeometry) {
39937
+ getTooltipsOfOlGeometry(olGeometry).forEach((olTooltip) => {
39938
+ if (olTooltip && olTooltip.getMap()) {
39939
+ this.map.ol.removeOverlay(olTooltip);
39940
+ }
39941
+ });
39942
+ }
39364
39943
  }
39365
- SearchResultAddButtonComponent.ɵfac = function SearchResultAddButtonComponent_Factory(t) { return new (t || SearchResultAddButtonComponent)(i0.ɵɵdirectiveInject(LayerService)); };
39366
- SearchResultAddButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchResultAddButtonComponent, selectors: [["igo-search-add-button"]], inputs: { layer: "layer", added: "added", map: "map", color: "color" }, decls: 1, vars: 1, consts: [["igoStopPropagation", "", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "color", "mouseenter", "mouseleave", "click", 4, "ngIf"], ["igoStopPropagation", "", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "color", "mouseenter", "mouseleave", "click"], ["matBadge", "icon", "igoMatBadgeIcon", "eye-off", "igoMatBadgeInverseColor", "true", "matBadgeDisabled", "true", "matBadgeSize", "small", "matBadgePosition", "after", 3, "matBadgeHidden", "svgIcon"]], template: function SearchResultAddButtonComponent_Template(rf, ctx) { if (rf & 1) {
39367
- i0.ɵɵtemplate(0, SearchResultAddButtonComponent_button_0_Template, 7, 14, "button", 0);
39944
+ SearchResultAddButtonComponent.ɵfac = function SearchResultAddButtonComponent_Factory(t) { return new (t || SearchResultAddButtonComponent)(i0.ɵɵdirectiveInject(LayerService), i0.ɵɵdirectiveInject(i3.MatDialog), i0.ɵɵdirectiveInject(DataSourceService)); };
39945
+ SearchResultAddButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchResultAddButtonComponent, selectors: [["igo-search-add-button"]], inputs: { layer: "layer", store: "store", added: "added", map: "map", color: "color", stores: "stores" }, decls: 2, vars: 2, consts: [["igoStopPropagation", "", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "color", "mouseenter", "mouseleave", "click", 4, "ngIf"], ["igoStopPropagation", "", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], ["igoStopPropagation", "", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "color", "mouseenter", "mouseleave", "click"], ["matBadge", "icon", "igoMatBadgeColor", "rgba(0,0,0,0.87)", "igoMatBadgeBackgroundColor", "none", "igoMatBadgeInverseColor", "true", "matBadgeSize", "small", "matBadgePosition", "after", 3, "igoMatBadgeIcon", "matBadgeHidden", "matBadgeDisabled", "svgIcon"], ["igoStopPropagation", "", "mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "click"], ["matBadge", "icon", "igoMatBadgeIcon", "eye-off", "igoMatBadgeInverseColor", "true", "matBadgeDisabled", "true", "matBadgeSize", "small", "matBadgePosition", "after", "svgIcon", "file-plus-outline", 3, "matBadgeHidden"]], template: function SearchResultAddButtonComponent_Template(rf, ctx) { if (rf & 1) {
39946
+ i0.ɵɵtemplate(0, SearchResultAddButtonComponent_button_0_Template, 11, 24, "button", 0);
39947
+ i0.ɵɵtemplate(1, SearchResultAddButtonComponent_button_1_Template, 5, 8, "button", 1);
39368
39948
  } if (rf & 2) {
39369
39949
  i0.ɵɵproperty("ngIf", ctx.layer.meta.dataType === "Layer");
39370
- } }, dependencies: [i1$1.NgIf, i7$1.MatBadge, i4.MatTooltip, i2.MatIcon, i3.MatButton, i5$1.StopPropagationDirective, i5$1.IgoBadgeIconDirective, i1$1.AsyncPipe, i7.TranslatePipe], changeDetection: 0 });
39950
+ i0.ɵɵadvance(1);
39951
+ i0.ɵɵproperty("ngIf", ctx.layer.meta.dataType === "Feature");
39952
+ } }, dependencies: [i1.NgIf, i7$1.MatBadge, i4.MatTooltip, i2.MatIcon, i3$1.MatButton, i5$1.StopPropagationDirective, i5$1.IgoBadgeIconDirective, i1.AsyncPipe, i7.TranslatePipe], changeDetection: 0 });
39371
39953
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchResultAddButtonComponent, [{
39372
39954
  type: Component,
39373
- args: [{ selector: 'igo-search-add-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\nigoStopPropagation\n(mouseenter)=\"onMouseEvent($event)\" (mouseleave)=\"onMouseEvent($event)\"\n*ngIf=\"layer.meta.dataType === 'Layer'\"\nmat-icon-button\ntooltip-position=\"below\"\nmatTooltipShowDelay=\"500\"\n[matTooltip]=\"(tooltip$ | async) | translate\"\n[color]=\"(isPreview$ | async) ? '' : added ? 'warn' : ''\"\n(click)=\"onToggleClick($event)\">\n<mat-icon\n matBadge=\"icon\"\n igoMatBadgeIcon=\"eye-off\"\n igoMatBadgeInverseColor=\"true\"\n [matBadgeHidden]=\"(inRange$ | async)\"\n matBadgeDisabled=\"true\"\n matBadgeSize=\"small\"\n matBadgePosition=\"after\"\n [svgIcon]=\"(isPreview$ | async) ? 'plus' : added ? 'delete' : 'plus'\">\n</mat-icon>\n</button>\n" }]
39374
- }], function () { return [{ type: LayerService }]; }, { layer: [{
39955
+ args: [{ selector: 'igo-search-add-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\nigoStopPropagation\n(mouseenter)=\"onMouseEvent($event)\" (mouseleave)=\"onMouseEvent($event)\"\n*ngIf=\"layer.meta.dataType === 'Layer'\"\nmat-icon-button\ntooltip-position=\"below\"\nmatTooltipShowDelay=\"500\"\n[matTooltip]=\"computeTooltip() | translate\"\n[color]=\"(isPreview$ | async) ? '' : added ? 'warn' : ''\"\n(click)=\"onToggleClick($event)\">\n<mat-icon\n matBadge=\"icon\"\n [igoMatBadgeIcon]=\"getBadgeIcon()\"\n igoMatBadgeColor=\"rgba(0,0,0,0.87)\"\n igoMatBadgeBackgroundColor=\"none\"\n igoMatBadgeInverseColor=\"true\"\n [matBadgeHidden]=\"((inRange$ | async) && (isVisible$ | async) === true) || ((inRange$ | async) && !added) || ((inRange$ | async) && (isPreview$ | async))\"\n [matBadgeDisabled]=\"(inRange$ | async) === false\"\n matBadgeSize=\"small\"\n matBadgePosition=\"after\"\n [svgIcon]=\"(isPreview$ | async) ? 'plus' : added ? 'delete' : 'plus'\">\n</mat-icon>\n</button>\n\n<button\nigoStopPropagation\n*ngIf=\"layer.meta.dataType === 'Feature'\"\nmat-icon-button\ntooltip-position=\"below\"\nmatTooltipShowDelay=\"500\"\n[matTooltip]=\"(addFeatureToLayerTooltip$ | async) | translate\"\n(click)=\"addFeatureToLayer()\">\n<mat-icon\n matBadge=\"icon\"\n igoMatBadgeIcon=\"eye-off\"\n igoMatBadgeInverseColor=\"true\"\n [matBadgeHidden]=\"(inRange$ | async)\"\n matBadgeDisabled=\"true\"\n matBadgeSize=\"small\"\n matBadgePosition=\"after\"\n svgIcon=\"file-plus-outline\">\n</mat-icon>\n</button>\n" }]
39956
+ }], function () { return [{ type: LayerService }, { type: i3.MatDialog }, { type: DataSourceService }]; }, { layer: [{
39957
+ type: Input
39958
+ }], store: [{
39375
39959
  type: Input
39376
39960
  }], added: [{
39377
39961
  type: Input
@@ -39379,6 +39963,8 @@ SearchResultAddButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ ty
39379
39963
  type: Input
39380
39964
  }], color: [{
39381
39965
  type: Input
39966
+ }], stores: [{
39967
+ type: Input
39382
39968
  }] }); })();
39383
39969
 
39384
39970
  /**
@@ -39394,12 +39980,18 @@ IgoSearchResultsModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [C
39394
39980
  MatIconModule,
39395
39981
  MatListModule,
39396
39982
  MatButtonModule,
39983
+ MatDialogModule,
39397
39984
  IgoCollapsibleModule,
39398
39985
  IgoListModule,
39399
39986
  IgoStopPropagationModule,
39400
39987
  IgoLanguageModule,
39401
39988
  IgoMatBadgeIconModule,
39402
- IgoMetadataModule] });
39989
+ IgoMetadataModule,
39990
+ MatFormFieldModule,
39991
+ ReactiveFormsModule,
39992
+ MatInputModule,
39993
+ MatSelectModule,
39994
+ MatAutocompleteModule] });
39403
39995
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IgoSearchResultsModule, [{
39404
39996
  type: NgModule,
39405
39997
  args: [{
@@ -39410,12 +40002,18 @@ IgoSearchResultsModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [C
39410
40002
  MatIconModule,
39411
40003
  MatListModule,
39412
40004
  MatButtonModule,
40005
+ MatDialogModule,
39413
40006
  IgoCollapsibleModule,
39414
40007
  IgoListModule,
39415
40008
  IgoStopPropagationModule,
39416
40009
  IgoLanguageModule,
39417
40010
  IgoMatBadgeIconModule,
39418
40011
  IgoMetadataModule,
40012
+ MatFormFieldModule,
40013
+ ReactiveFormsModule,
40014
+ MatInputModule,
40015
+ MatSelectModule,
40016
+ MatAutocompleteModule,
39419
40017
  ],
39420
40018
  exports: [
39421
40019
  SearchResultsComponent,
@@ -39424,24 +40022,32 @@ IgoSearchResultsModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [C
39424
40022
  declarations: [
39425
40023
  SearchResultsComponent,
39426
40024
  SearchResultsItemComponent,
39427
- SearchResultAddButtonComponent
40025
+ SearchResultAddButtonComponent,
40026
+ SaveFeatureDialogComponent
39428
40027
  ]
39429
40028
  }]
39430
40029
  }], null, null); })();
39431
40030
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(IgoSearchResultsModule, { declarations: [SearchResultsComponent,
39432
40031
  SearchResultsItemComponent,
39433
- SearchResultAddButtonComponent], imports: [CommonModule,
40032
+ SearchResultAddButtonComponent,
40033
+ SaveFeatureDialogComponent], imports: [CommonModule,
39434
40034
  MatBadgeModule,
39435
40035
  MatTooltipModule,
39436
40036
  MatIconModule,
39437
40037
  MatListModule,
39438
40038
  MatButtonModule,
40039
+ MatDialogModule,
39439
40040
  IgoCollapsibleModule,
39440
40041
  IgoListModule,
39441
40042
  IgoStopPropagationModule,
39442
40043
  IgoLanguageModule,
39443
40044
  IgoMatBadgeIconModule,
39444
- IgoMetadataModule], exports: [SearchResultsComponent,
40045
+ IgoMetadataModule,
40046
+ MatFormFieldModule,
40047
+ ReactiveFormsModule,
40048
+ MatInputModule,
40049
+ MatSelectModule,
40050
+ MatAutocompleteModule], exports: [SearchResultsComponent,
39445
40051
  SearchResultAddButtonComponent] }); })();
39446
40052
 
39447
40053
  /**
@@ -39888,7 +40494,7 @@ ToastComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ToastCompone
39888
40494
  i0.ɵɵproperty("ngIf", ctx.feature.geometry);
39889
40495
  i0.ɵɵadvance(1);
39890
40496
  i0.ɵɵproperty("feature", ctx.feature);
39891
- } }, dependencies: [i1$1.NgIf, i2.MatIcon, i3.MatButton, i5$1.PanelComponent, i5$1.FlexibleComponent, FeatureDetailsComponent], styles: ["[_nghost-%COMP%]{position:absolute;bottom:0px;width:100%;max-height:calc(100% - 50px);background-color:#fff}igo-feature-details[_ngcontent-%COMP%] table{width:100%}"] });
40497
+ } }, dependencies: [i1.NgIf, i2.MatIcon, i3$1.MatButton, i5$1.PanelComponent, i5$1.FlexibleComponent, FeatureDetailsComponent], styles: ["[_nghost-%COMP%]{position:absolute;bottom:0px;width:100%;max-height:calc(100% - 50px);background-color:#fff}igo-feature-details[_ngcontent-%COMP%] table{width:100%}"] });
39892
40498
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ToastComponent, [{
39893
40499
  type: Component,
39894
40500
  args: [{ selector: 'igo-toast', template: "<igo-flexible #flex\n collapsedMobile=\"51px\"\n expandedMobile=\"300px\"\n [state]=\"state\"\n (swipeup)=\"swipe($event.type)\"\n (swipedown)=\"swipe($event.type)\">\n\n <igo-panel [title]=\"title\">\n <button\n mat-icon-button\n panelLeftButton\n (click)=\"toggle()\">\n <mat-icon [svgIcon]=\"['collapsed', 'initial'].indexOf(flex.state) >= 0 ? 'arrow_upward' : 'arrow_downward'\"></mat-icon>\n </button>\n\n <button mat-icon-button panelRightButton class=\"igo-icon-button\" (click)=\"zoomToFeatureExtent()\" *ngIf=\"feature.geometry\">\n <mat-icon svgIcon=\"zoom-in\"></mat-icon>\n </button>\n\n <igo-feature-details [feature]=\"feature\"></igo-feature-details>\n </igo-panel>\n\n</igo-flexible>\n", styles: [":host{position:absolute;bottom:0px;width:100%;max-height:calc(100% - 50px);background-color:#fff}igo-feature-details ::ng-deep table{width:100%}\n"] }]
@@ -40458,7 +41064,7 @@ class ConfirmationPopupComponent {
40458
41064
  this.dialogRef.close(this.data.cancel);
40459
41065
  }
40460
41066
  }
40461
- ConfirmationPopupComponent.ɵfac = function ConfirmationPopupComponent_Factory(t) { return new (t || ConfirmationPopupComponent)(i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); };
41067
+ ConfirmationPopupComponent.ɵfac = function ConfirmationPopupComponent_Factory(t) { return new (t || ConfirmationPopupComponent)(i0.ɵɵdirectiveInject(i3.MatDialogRef), i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); };
40462
41068
  ConfirmationPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ConfirmationPopupComponent, selectors: [["igo-confirmation-popup-component"]], decls: 8, vars: 2, consts: [["mat-dialog-content", ""], [1, "mat-typography"], ["mat-dialog-actions", ""], ["mat-raised-button", "", "color", "primary", 3, "click"], ["mat-raised-button", "", 3, "click"]], template: function ConfirmationPopupComponent_Template(rf, ctx) { if (rf & 1) {
40463
41069
  i0.ɵɵelementStart(0, "div", 0)(1, "p", 1);
40464
41070
  i0.ɵɵtext(2);
@@ -40476,11 +41082,11 @@ ConfirmationPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
40476
41082
  i0.ɵɵtextInterpolate(ctx.data.type === "add" ? ctx.languageService.translate.instant("igo.geo.workspace.addConfirmation") : ctx.languageService.translate.instant("igo.geo.workspace.deleteConfirmation"));
40477
41083
  i0.ɵɵadvance(5);
40478
41084
  i0.ɵɵtextInterpolate1("", ctx.languageService.translate.instant("igo.geo.workspace.cancel"), " ");
40479
- } }, dependencies: [i3.MatButton, i1.MatDialogContent, i1.MatDialogActions], styles: ["div.mat-dialog-actions[_ngcontent-%COMP%]{justify-content:center}"] });
41085
+ } }, dependencies: [i3$1.MatButton, i3.MatDialogContent, i3.MatDialogActions], styles: ["div.mat-dialog-actions[_ngcontent-%COMP%]{justify-content:center}"] });
40480
41086
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConfirmationPopupComponent, [{
40481
41087
  type: Component,
40482
41088
  args: [{ selector: 'igo-confirmation-popup-component', template: "<div mat-dialog-content>\n <p class=\"mat-typography\">{{data.type === 'add' ?\n languageService.translate.instant('igo.geo.workspace.addConfirmation') :\n languageService.translate.instant('igo.geo.workspace.deleteConfirmation')}}</p>\n</div>\n<div mat-dialog-actions>\n <button\n mat-raised-button\n color=\"primary\"\n (click)=\"confirmedAction()\">Ok\n </button>\n <button\n mat-raised-button\n (click)=\"cancelAction()\">{{languageService.translate.instant('igo.geo.workspace.cancel')}}\n </button>\n</div>", styles: ["div.mat-dialog-actions{justify-content:center}\n"] }]
40483
- }], function () { return [{ type: i1.MatDialogRef }, { type: i2$1.LanguageService }, { type: undefined, decorators: [{
41089
+ }], function () { return [{ type: i3.MatDialogRef }, { type: i2$1.LanguageService }, { type: undefined, decorators: [{
40484
41090
  type: Inject,
40485
41091
  args: [MAT_DIALOG_DATA]
40486
41092
  }] }]; }, null); })();
@@ -41369,14 +41975,14 @@ class EditionWorkspaceService {
41369
41975
  });
41370
41976
  }
41371
41977
  }
41372
- EditionWorkspaceService.ɵfac = function EditionWorkspaceService_Factory(t) { return new (t || EditionWorkspaceService)(i0.ɵɵinject(LayerService), i0.ɵɵinject(i2$1.StorageService), i0.ɵɵinject(i2$1.ConfigService), i0.ɵɵinject(i2$1.MessageService), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i1.MatDialog), i0.ɵɵinject(StyleService), i0.ɵɵinject(i6.AuthInterceptor)); };
41978
+ EditionWorkspaceService.ɵfac = function EditionWorkspaceService_Factory(t) { return new (t || EditionWorkspaceService)(i0.ɵɵinject(LayerService), i0.ɵɵinject(i2$1.StorageService), i0.ɵɵinject(i2$1.ConfigService), i0.ɵɵinject(i2$1.MessageService), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(i3.MatDialog), i0.ɵɵinject(StyleService), i0.ɵɵinject(i6.AuthInterceptor)); };
41373
41979
  EditionWorkspaceService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: EditionWorkspaceService, factory: EditionWorkspaceService.ɵfac, providedIn: 'root' });
41374
41980
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EditionWorkspaceService, [{
41375
41981
  type: Injectable,
41376
41982
  args: [{
41377
41983
  providedIn: 'root'
41378
41984
  }]
41379
- }], function () { return [{ type: LayerService }, { type: i2$1.StorageService }, { type: i2$1.ConfigService }, { type: i2$1.MessageService }, { type: i2$1.LanguageService }, { type: i1$2.HttpClient }, { type: i1.MatDialog }, { type: StyleService }, { type: i6.AuthInterceptor }]; }, null); })();
41985
+ }], function () { return [{ type: LayerService }, { type: i2$1.StorageService }, { type: i2$1.ConfigService }, { type: i2$1.MessageService }, { type: i2$1.LanguageService }, { type: i1$1.HttpClient }, { type: i3.MatDialog }, { type: StyleService }, { type: i6.AuthInterceptor }]; }, null); })();
41380
41986
  function getColumnKeyWithoutPropertiesTag(column) {
41381
41987
  if (column.includes('properties.')) {
41382
41988
  return column.split('.')[1];
@@ -42116,7 +42722,7 @@ class OsrmDirectionsSource extends DirectionsSource {
42116
42722
  }
42117
42723
  }
42118
42724
  OsrmDirectionsSource._name = 'OSRM Québec';
42119
- OsrmDirectionsSource.ɵfac = function OsrmDirectionsSource_Factory(t) { return new (t || OsrmDirectionsSource)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i2$1.ConfigService)); };
42725
+ OsrmDirectionsSource.ɵfac = function OsrmDirectionsSource_Factory(t) { return new (t || OsrmDirectionsSource)(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(i2$1.ConfigService)); };
42120
42726
  OsrmDirectionsSource.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: OsrmDirectionsSource, factory: OsrmDirectionsSource.ɵfac });
42121
42727
  __decorate([
42122
42728
  Cacheable({
@@ -42125,7 +42731,7 @@ __decorate([
42125
42731
  ], OsrmDirectionsSource.prototype, "route", null);
42126
42732
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OsrmDirectionsSource, [{
42127
42733
  type: Injectable
42128
- }], function () { return [{ type: i1$2.HttpClient }, { type: i2$1.ConfigService }]; }, { route: [] }); })();
42734
+ }], function () { return [{ type: i1$1.HttpClient }, { type: i2$1.ConfigService }]; }, { route: [] }); })();
42129
42735
 
42130
42736
  function osrmDirectionsSourcesFactory(http, config) {
42131
42737
  return new OsrmDirectionsSource(http, config);
@@ -42366,7 +42972,7 @@ class NominatimSearchSource extends SearchSource {
42366
42972
  }
42367
42973
  NominatimSearchSource.id = 'nominatim';
42368
42974
  NominatimSearchSource.type = FEATURE;
42369
- NominatimSearchSource.ɵfac = function NominatimSearchSource_Factory(t) { return new (t || NominatimSearchSource)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject('options'), i0.ɵɵinject(i2$1.StorageService)); };
42975
+ NominatimSearchSource.ɵfac = function NominatimSearchSource_Factory(t) { return new (t || NominatimSearchSource)(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject('options'), i0.ɵɵinject(i2$1.StorageService)); };
42370
42976
  NominatimSearchSource.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: NominatimSearchSource, factory: NominatimSearchSource.ɵfac });
42371
42977
  __decorate([
42372
42978
  Cacheable({
@@ -42375,7 +42981,7 @@ __decorate([
42375
42981
  ], NominatimSearchSource.prototype, "search", null);
42376
42982
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NominatimSearchSource, [{
42377
42983
  type: Injectable
42378
- }], function () { return [{ type: i1$2.HttpClient }, { type: undefined, decorators: [{
42984
+ }], function () { return [{ type: i1$1.HttpClient }, { type: undefined, decorators: [{
42379
42985
  type: Inject,
42380
42986
  args: ['options']
42381
42987
  }] }, { type: i2$1.StorageService }]; }, { search: [] }); })();
@@ -42641,7 +43247,7 @@ StoredQueriesSearchSource.propertiesBlacklist = [
42641
43247
  'coord_x',
42642
43248
  'coord_y'
42643
43249
  ];
42644
- StoredQueriesSearchSource.ɵfac = function StoredQueriesSearchSource_Factory(t) { return new (t || StoredQueriesSearchSource)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.StorageService), i0.ɵɵinject('options')); };
43250
+ StoredQueriesSearchSource.ɵfac = function StoredQueriesSearchSource_Factory(t) { return new (t || StoredQueriesSearchSource)(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.StorageService), i0.ɵɵinject('options')); };
42645
43251
  StoredQueriesSearchSource.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: StoredQueriesSearchSource, factory: StoredQueriesSearchSource.ɵfac });
42646
43252
  __decorate([
42647
43253
  Cacheable({
@@ -42650,7 +43256,7 @@ __decorate([
42650
43256
  ], StoredQueriesSearchSource.prototype, "search", null);
42651
43257
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StoredQueriesSearchSource, [{
42652
43258
  type: Injectable
42653
- }], function () { return [{ type: i1$2.HttpClient }, { type: i2$1.LanguageService }, { type: i2$1.StorageService }, { type: undefined, decorators: [{
43259
+ }], function () { return [{ type: i1$1.HttpClient }, { type: i2$1.LanguageService }, { type: i2$1.StorageService }, { type: undefined, decorators: [{
42654
43260
  type: Inject,
42655
43261
  args: ['options']
42656
43262
  }] }]; }, { search: [] }); })();
@@ -42797,7 +43403,7 @@ class StoredQueriesReverseSearchSource extends SearchSource {
42797
43403
  StoredQueriesReverseSearchSource.id = 'storedqueriesreverse';
42798
43404
  StoredQueriesReverseSearchSource.type = FEATURE;
42799
43405
  StoredQueriesReverseSearchSource.propertiesBlacklist = [];
42800
- StoredQueriesReverseSearchSource.ɵfac = function StoredQueriesReverseSearchSource_Factory(t) { return new (t || StoredQueriesReverseSearchSource)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.StorageService), i0.ɵɵinject('options')); };
43406
+ StoredQueriesReverseSearchSource.ɵfac = function StoredQueriesReverseSearchSource_Factory(t) { return new (t || StoredQueriesReverseSearchSource)(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.StorageService), i0.ɵɵinject('options')); };
42801
43407
  StoredQueriesReverseSearchSource.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: StoredQueriesReverseSearchSource, factory: StoredQueriesReverseSearchSource.ɵfac });
42802
43408
  __decorate([
42803
43409
  Cacheable({
@@ -42806,7 +43412,7 @@ __decorate([
42806
43412
  ], StoredQueriesReverseSearchSource.prototype, "reverseSearch", null);
42807
43413
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StoredQueriesReverseSearchSource, [{
42808
43414
  type: Injectable
42809
- }], function () { return [{ type: i1$2.HttpClient }, { type: i2$1.LanguageService }, { type: i2$1.StorageService }, { type: undefined, decorators: [{
43415
+ }], function () { return [{ type: i1$1.HttpClient }, { type: i2$1.LanguageService }, { type: i2$1.StorageService }, { type: undefined, decorators: [{
42810
43416
  type: Inject,
42811
43417
  args: ['options']
42812
43418
  }] }]; }, { reverseSearch: [] }); })();
@@ -42962,14 +43568,14 @@ class ConfigFileToGeoDBService {
42962
43568
  return typeof value === 'string' && regex.test(value.toLowerCase());
42963
43569
  }
42964
43570
  }
42965
- ConfigFileToGeoDBService.ɵfac = function ConfigFileToGeoDBService_Factory(t) { return new (t || ConfigFileToGeoDBService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(GeoDBService), i0.ɵɵinject(i2$1.MessageService)); };
43571
+ ConfigFileToGeoDBService.ɵfac = function ConfigFileToGeoDBService_Factory(t) { return new (t || ConfigFileToGeoDBService)(i0.ɵɵinject(i1$1.HttpClient), i0.ɵɵinject(GeoDBService), i0.ɵɵinject(i2$1.MessageService)); };
42966
43572
  ConfigFileToGeoDBService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ConfigFileToGeoDBService, factory: ConfigFileToGeoDBService.ɵfac, providedIn: 'root' });
42967
43573
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConfigFileToGeoDBService, [{
42968
43574
  type: Injectable,
42969
43575
  args: [{
42970
43576
  providedIn: 'root'
42971
43577
  }]
42972
- }], function () { return [{ type: i1$2.HttpClient }, { type: GeoDBService }, { type: i2$1.MessageService }]; }, null); })();
43578
+ }], function () { return [{ type: i1$1.HttpClient }, { type: GeoDBService }, { type: i2$1.MessageService }]; }, null); })();
42973
43579
 
42974
43580
  /*
42975
43581
  * Public API Surface of geo